Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
VISUALISATION SYSTEM AND METHODS
Document Type and Number:
WIPO Patent Application WO/2021/064411
Kind Code:
A1
Abstract:
There is provided a method of assessing the activity of a plurality of entities within a dataset comprising: receiving data relating to the dataset; identifying a plurality of entities within the dataset; determining an equation of motion for each of the plurality of entities within the dataset; generating a representation for each of the plurality of entities based on the corresponding equation of motion; and outputting the plurality of representations to a display, thereby representing the activity of the plurality of entities.

Inventors:
VINCENT PETER EDWARD (GB)
WITHERDEN FREDDIE DAVID (GB)
Application Number:
PCT/GB2020/052418
Publication Date:
April 08, 2021
Filing Date:
October 02, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
QUADRATURE SOLUTIONS LLP (GB)
International Classes:
G06F16/904; G06F30/20; G06Q50/00
Foreign References:
US20190005156A12019-01-03
Other References:
VANDE MOERE A: "Time-Varying Data Visualization Using Information Flocking Boids", INFORMATION VISUALIZATION, 2004. INFOVIS 2004. IEEE SYMPOSIUM ON AUSTIN, TX, USA 10-12 OCT. 2004, PISCATAWAY, NJ, USA,IEEE, 10 October 2004 (2004-10-10), pages 97 - 104, XP010769566, ISBN: 978-0-7803-8779-9, DOI: 10.1109/INFVIS.2004.65
VANDE MOERE A ET AL: "Visualizing abstract information using motion properties of data-driven infoticles", PROCEEDINGS OF SPIE, vol. 5295, 4 June 2004 (2004-06-04), 1000 20th St. Bellingham WA 98225-6705 USA, pages 33 - 44, XP055762394, ISSN: 0277-786X, ISBN: 978-1-5106-3927-0, DOI: 10.1117/12.539238
Attorney, Agent or Firm:
COZENS, Paul (GB)
Download PDF:
Claims:
Claims

1. A method of assessing the activity of a plurality of entities within a dataset comprising: receiving data relating to the dataset; identifying a plurality of entities within the dataset; determining an equation of motion for each of the plurality of entities within the dataset; generating a representation for each of the plurality of entities based on the corresponding equation of motion; and outputting the plurality of representations to a display, thereby representing the activity of the plurality of entities.

2. The method of Claim 1 , wherein the equations of motion are dependent on properties of the corresponding entities and/or properties of other entities and/or the other representations.

3. The method of Claim 1 or Claim 2, wherein each equation of motion is a function of time and/or a property of the corresponding entity, and preferably the property is an activity property of the corresponding entity.

4. The method of any one of the preceding claims, wherein the equation of motion for at least one of the entities is dependent on a location of one or more other entities.

5. The method of any one of the preceding claims, wherein the equation of motion for at least one entity is dependent on the equation of motion for at least one other entity, preferably wherein the equation of motion for each entity is dependent on an equation of motion for at least one other entity. 6. The method of any one of the preceding claims, wherein each equation of motion is a discretised equation of motion, and more preferably each equation of motion is discretised using a numerical method, and even more preferably the numerical method is an Euler method, and yet even more preferably the numerical method is a Forwards Euler method. 7. The method of any one of the preceding claims, wherein the step of generating a representation for each of the plurality of entities based on the corresponding equation of motion comprises: determining a location for each of the plurality of entities based on the corresponding equation of motion; and generating a representation for each of the plurality of entities based on the determined location.

8. The method of any one of the preceding claims, wherein the entities are divided into a plurality of subsets, and preferably an entity belongs to a subset based on any one or more of the following: a type of the entity, a user selection, a hierarchy of the entity, an/the activity property of the entity, total number of the type of entity identified within the dataset, total number of representations generated corresponding to the type of entity, an importance of the entity, and/or resources available at a computing device running the method.

9. The method of Claim 8, wherein the equation of motion for an entity in a subset is based on an n- body interaction and/or a second order differential equation of motion, and preferably the n-body interaction is an interaction between at least all other entities belonging to the same subset, and preferably an entity belongs to the subset if it is of the account type and/or post type.

10. The method of Claim 8 or Claim 9, wherein the equation of motion for an entity in a subset is dependent on a location of the other entities in the subset, and preferably the entities in the subset move away from the location of other entities in the subset, and preferably the entities in the subset are repelled from other entities in the subset, and preferably an entity belongs to the subset if it is of the account type, and more preferably the magnitude of the repulsion is based on one or more of: the difference between the locations of the entities, a popularity of the entities, and/or an activity property of the entities.

11 . The method of any one of Claims 8 to 10, wherein the equation of motion for an entity in a subset that is related to a specific entity in a further subset is dependent on a location of the specific entity, and preferably wherein the entity moves towards the location of the specific entity, and preferably an entity belongs to the subset if it is of the post type and an entity belongs to the further subset if it is of the account type.

12. The method of any one of Claims 8 to 11 , wherein the equation of motion for an entity in a subset that is related to a specific entity in a further subset is dependent on the location of the specific entity, and preferably the entity orbits about the specific entity, and preferably the motion is such that the representation corresponding to the entity in the subset does not occlude the representation corresponding to the specific entity, and preferably an entity belongs to the subset if it is of the post type and an entity belong to the further subset if it is of the account type. 13. The method of any one of Claims 8 to 12, wherein the equation of motion for an entity in a subset is dependent on a centre point of a representation space, and preferably the equation of motion is dependent on an attraction to the centre point of the representation space, and more preferably the amount of attraction is based on an activity property of the entity, and preferably an entity belongs to the subset if it is of the account type.

14. The method of any one of the preceding claims, wherein two or more of the equations of motion are the same.

15. The method of any one of the preceding claims, wherein different equations of motion are used depending on a type of the entity, and preferably such that the different entity types are identifiable by at least their motion.

16. The method of any one of the preceding claims further comprising destroying an entity and/or a representation.

17. The method of Claim 16, wherein destroying a representation and/or an entity is based on any one or more of the following: the type of the representation and/or entity, the age of the representation and/or entity, the number of times the representation and/or entity is referenced, the location of the entity, the time at which the entity was last active, the number of entities of the same type as that of the entity, one or more properties of other entities, user selection, and/or the resources available at a computing device running the method.

18. The method of any one of the preceding claims, further comprising receiving an equilibrium mode, wherein the equation of motion for an entity is dependent on the received equilibrium mode.

19. The method of Claim 18, wherein the equilibrium mode is any one or more of the following: a default mode, a side mode, a clockface mode, a map mode, or a sentiment mode, and more preferably the equilibrium mode partially defines a/the representation space. 20. The method of Claim 19, wherein, depending on the equilibrium mode, the equation of motion for the entity is dependent on any one or more of the following properties of the entity: an/the activity property, a/the geographical location related to the entity, a/the sentiment factor of received data that is related to the entity, and/or a/the side property of the entity. 21. The method of Claim 20, wherein depending on the value of the one or more properties of the entity, the entity moves towards a point, a side, and/or a plane in the representation space.

22. The method of Claim 19 to 21 , wherein, if the received equilibrium mode is the default mode, then the higher an/the activity property of an entity, the more the equation of motion for the entity is dependent on movement towards a centre point in the representation space.

23. The method of any one of Claims 19 to 22, wherein if the received equilibrium mode is the side mode then the higher an/the activity property of an entity, the more the equation of motion for the entity is dependent on movement towards a centre point in the representation space, and further the equation of motion for the entity is dependent on a side property of the entity, preferably such that the movement of the entity is dependent on a particular side or plane in the representation space.

24. The method of any one of Claims 19 to 23, wherein if the received equilibrium mode is the clockface mode then the higher an/the activity of an entity, the more the equation of motion for the entity is dependent on movement towards a centre point in the representation space, and further the equation of motion forthe entity motion is dependent on a geographical location related to the entity, and preferably a longitude related to the entity. 25. The method of any one of Claims 19 to 24, wherein if the received equilibrium mode is the map mode then an equation of motion for an entity is dependent on a geographical location related to the entity, and preferably a longitude and latitude related to the entity.

26. The method of any one of Claims 19 to 25, wherein if the received equilibrium mode is the sentiment mode then an equation of motion for an entity comprises a first component in a first plane that is dependent on an/the activity of the entity and a second component in a second plane that is dependent on a/the sentiment factor of received data that is related to the entity.

27. The method of any one of Claims 19 to 26, wherein if the received equilibrium mode comprises a cluster sub-mode then an equation of motion for entity is dependent on the entity’s interactions with other entities such that entities that are closely related are clustered together.

28. The method of any one of the preceding claims comprising updating a next location of an entity, wherein updating a next location comprises: determining a current location of the entity; and determining a next location of the entity based on the corresponding equation of motion and the current location of the entity.

29. The method of Claim 28, wherein updating a next location of an entity is repeatedly carried out, and preferably is carried out for all entities, and preferably repeated periodically, and preferably repeated when further data of the dataset is received.

30. The method of any one of the preceding claims, wherein a location of an entity relates to a location of the corresponding representation on the display.

31 . The method of any one of the preceding claims, wherein the representations are coloured based on a user preference.

32. The method of any one of the preceding claims, wherein the entities are social media entities, and the received data is social media data.

33. The method of any preceding claim, being a computer-implemented method.

34. A computer program product for assessing the activity of a plurality of entities within a dataset comprising instructions which, when executed by a computer program, cause a computer processor to: receive data relating to the dataset; identify a plurality of entities within the dataset; determine an equation of motion for each of the plurality of entities within the dataset; generate a representation for each of the plurality of entities based on the corresponding equation of motion; and output the plurality of representations to a display, thereby representing the activity of the plurality of entities. 35. A computing device for assessing the activity of a plurality of entities within a dataset comprising a controller configured to: receive data relating to the dataset; identify a plurality of entities within the dataset; determine an equation of motion for each of the plurality of entities within the dataset; generate a representation for each of the plurality of entities based on the corresponding equation of motion; and output the plurality of representations to a display, thereby representing the activity of the plurality of entities. 36. The computing device of Claim 35, wherein the computing device further comprises a display configured to receive and display the plurality of representations; wherein the location of an entity relates to a location of the corresponding representation on the display.

37. A system for assessing the activity of entities comprising: a server and a computing device of Claim 35 or Claim 36.

38. The system of Claim 37, wherein the server is configured to transmit data relating to the dataset to the computing device. 39. A method of image processing, comprising: receiving data relating to the dataset; identifying a plurality of entities within the dataset; determining an equation of motion for each of the plurality of entities within the dataset; generating an image comprising a representation of each of the plurality of entities, each representation being based on the corresponding equation of motion; and enabling a user to interact with at least one of the representations.

40. The method of claim 39, wherein the step of enabling a user to interact with at least one of the representations comprises receiving a user input, the user input preferably comprising a user selection of at least one representation.

41 . The method of claim 39 or 40, further comprising modifying the image based on the equations of motion for each of the entities, preferably wherein modifying the image comprises altering the location in the image of at least one of the representations.

Description:
VISUALISATION SYSTEM AND METHODS

Field of the Invention

The present disclosure relates to processing and visualising data. The disclosure is particularly, but not exclusively, applicable to a method and system for visually representing data that does not possess motion related attributes with motion such that useful insights into real-time events and/or trends can be gleaned at-a-glance, whilst using limited computational resources.

Background to the Disclosure

Large datasets that contain large amounts of information are difficult to conceptualise and in particular visualise. Observers of large datasets are therefore required to “zoom in” on smaller subsets of the dataset at any one time. This can lead to the observer either not understanding or appreciating the broader dataset and/or trends within the dataset or to them simply missing events that are occurring in different sections within the dataset not currently being inspected. This is particularly relevant for real-time or live datasets that are constantly being updated or changing.

The visual output of other available dataset conceptualisation applications is often static, rigid and/or not intuitive, and not particularly user customisable. Many such applications present information via bar charts and the like.

The present disclosure seeks to overcome the problems outlined above.

Summary of the Disclosure

Aspects of the disclosure are set out in the accompanying claims. According to an aspect of the invention, there is provided a method of assessing the activity of entities within a dataset comprising: receiving data in the dataset; and generating, from the received data, representations associated with the entities, wherein the activity is represented by motion.

Optionally, the activity is represented by motion of the representations.

Optionally, the representations move based on properties of the associated entities and/or properties of other entities and/or the other representations.

Optionally, a motion of a representation is a function of time and/or a property of the entity, and preferably the property is an activity property of the entity.

Optionally, a motion of a representation is based on a property of one or more of the other representations, and preferably the property is a location. Optionally, a motion of a representation is based on an equation of motion, and preferably the equation of motion is a discretised equation of motion, and more preferably the equation of motion is discretised using a numerical method, and even more preferably the numerical method is an Euler method, and yet even more preferably the numerical method is a Forwards Euler method.

Optionally, the representations and associated entities are divided into a plurality of subsets, and preferably a representation and/or the associated entity belong(s) to a subset based on any one or more of the following: a type of the representation, a type of the entity associated with the representation, a user selection, a hierarchy of the entity, an/the activity property of the entity associated with the representation, total number of the type of representations generated, an importance of the entity associated with the representation, and/or resources available at a client device running the method. Optionally, a motion of a representation in a subset is based on an n-body interaction and/or a second order differential equation of motion, and preferably the n-body interaction is an interaction between at least all other representations belonging to the same subset, and preferably a representation belongs to the subset if it is of the account type and/or post type.

Optionally, a motion of a representation in a subset is based on a location of the other representations in the subset, and preferably the motion of the representations of the subset is defined by a movement away from the location of the other representations in the subset, and preferably the motion of the representations of the subset is defined by a repulsion from the other representations in the subset, and preferably a representation belongs to the subset if it is of the account type, and more preferably the magnitude of the repulsion is based on one or more of: the distance between the representations, a popularity of the entities associated with the representations, and/or an activity property of the entities.

Optionally, a motion of a representation in a subset that is related to a specific representation in a further subset is based on a location of the specific representation, and preferably wherein the motion is towards the location of the specific representation, and preferably a representation belongs to the subset if it is of the post type and a representation belong to the further subset if it is of the account type. Optionally, a motion of a representation in a subset that is related to a specific representation in a further subset is based on the location of the specific representation, and preferably wherein the motion is orbiting about the specific representation, and preferably the motion is such that the representation in a subset does not occlude the specific representation, and preferably a representation belongs to the subset if it is of the post type and a representation belong to the further subset if it is of the account type. Optionally, a motion of a representation in a subset is based on a centre point of a representation space, and preferably the motion is based on an attraction to the centre point of the representation space, and more preferably the amount of attraction is based on an activity property of the entity associated with the representation, and preferably a representation belongs to the subset if it is of the account type.

Optionally, different motion is used depending on a type of the representation, and preferably such that the different representation types are identifiable by at least their motion.

Optionally, the method further comprises destroying an entity and/or a representation.

Optionally, destroying a representation and/or an entity is based on any one or more of the following: the type of the representation and/or entity, the age of the representation and/or entity, the number of times the representation and/or entity is referenced, the location of the representation, the time at which the entity was last active, the number of entities of the same type as that of the entity, one or more properties of other entities, user selection, and/or the resources available at a client device running the method.

Optionally, the method further comprises receiving an equilibrium mode, wherein a motion of a representation is based on the received equilibrium mode, and preferably the equilibrium mode is any one or more of the following: a default mode, a side mode, a clockface mode, a map mode, or a sentiment mode, and more preferably the equilibrium mode partially define a/the representation space which the representations are located within.

Optionally, depending on the equilibrium mode, the motion of the representation is based on any one or more of the following properties of the representation and/or entity associated with the representation: an/the activity property, a/the geographical location related to the entity, a/the sentiment factor of received data that is related to the entity, and/or a/the side property of the entity.

Optionally, depending on the value of the one or more properties of the representation and/or entity associated with the representation, the motion of the representation is towards a point, a side, and/or a plane in the representation space. Optionally, if the received equilibrium mode is the default mode then the higher an/the activity property of an entity, the more a motion of a representation associated with that entity is based on movement towards a centre point in the representation space.

Optionally, if the received equilibrium mode is the side mode then the higher an/the activity property of an entity, the more a motion of a representation associated with that entity is based on movement towards a centre point in the representation space and further the motion of the representation is based on a side property of the entity such that the movement is based on a particular side or plane in the representation space.

Optionally, if the received equilibrium mode is the clockface mode then the higher an/the activity of an entity, the more the motion of the representation is based on movement towards a centre point in the representation space and further the motion of the representation is based on the geographical location of its associated entity, and preferably the longitude property of the associated entity.

Optionally, if the received equilibrium mode is the map mode then a motion of a representation is based on the geographical location of its associated entity, and preferably the geographical location are the longitude property and the latitude property of each entity. Optionally, if the received equilibrium mode is the sentiment mode then a motion of the representation in a first plane is based the an/the activity of the associated entity and the motion of the representation in a second plane is based on a/the sentiment factor of received data that is related to the entity associated with the representation.

Optionally, if the received equilibrium mode comprises a cluster sub-mode then a motion of a representation is based is associated entitles interactions with other representations such that entities that are closely related will have associated representations that are clustered together.

Optionally, the method comprises updating a next location of a representation, wherein updating a next location comprises: determining a current location of the representation; and determining a next location of the representation based on a motion of the representation and the current location of the representation.

Optionally, updating a next location of a representation is repeatedly carried out, and preferably is carried out for all representations, and preferably repeated periodically, and preferably repeated when further data of the dataset is received.

Optionally, the method further comprises displaying the representations on a display. Optionally, the method produces an output.

Optionally, the method presents the output. Preferably, the method presents the output on or to a display.

Optionally, the method further comprises producing an output.

Optionally, the method further comprises presenting the output. Optionally, the method further comprises presenting the output on or to a display.

Optionally, the representations are coloured based on a user preference.

Optionally, the method further comprises: receiving further data of the dataset; and updating motion based on the further data.

Optionally, the entities are social media entities, and the received data is social media data. Optionally, the entities and associated representations can be any one or more of the following types: account, post, reply, and untracked account.

Optionally, the method further comprises classifying the received data into items and the entities are based on the items, and preferably the items are any one or more of the following: Tweet, Reply, Retweet, and/or Mention. Optionally, the method further comprises receiving an input from a user (a user input). Optionally, the motion of one or more of the entities is based on the user input.

Optionally, the user input is a selection of a subset of one or more entities and/or representations in the dataset. Optionally, only the activity of the user selected entities is represented.

Optionally, via the user input, the user may modify: one or more properties of one or more entities and/or representations; and/or the equations of motion. Accordingly, the user may customise the visualisation according to their psychological or physiological preference. For example, younger users may modify the equations of motion such that the entities’ (and thus representations’) motion is faster and the visualisation shows new trends and/or patterns closer to real-time; whereas older users (who may not be able to follow faster moving representations) may modify the equations of motion such that the entities’ (and thus representations’) motion is slower, thus prioritising ease of understanding over latency.

Optionally, the motion of an entity changes direction (overtime).

Optionally, the activity of an entity is a measure of how active the entity is.

Optionally, the activity of an entity: decays with time; is based on the interactions between the entity and one or more other entities in the dataset; and/or is based on the exchange of (optionally social media) information (or communication) related to the entity.

Optionally, the number of entities in the dataset and/or the number of generated representations is between 100 and 1000000, preferably between 1000 and 1000000, more preferably between 10000 and 1000000.

Optionally, the entities and/or representations are in constant motion. Optionally, an entity moves towards a centre point of a representation space with increasing activity of the entity. This may allow efficient comparison of the activity of entities in the dataset.

Optionally, the aforesaid method is a computer-implemented method.

According to an aspect of the invention, there is provided a computer program product for assessing the activity of entities within a dataset comprising instructions which, when executed by a computer program, cause a computer processor to carry out any method as herein described.

According to an aspect of the invention, there is provided a computing device for assessing the activity of entities within a dataset comprising a controller configured to carry out any method herein described.

Optionally, the computing device further comprises a display configured to display the representations associated with the entities; wherein the location of the representations associated with the entities relates to a location of the representation on the display.

According to an aspect of the invention, there is provided a system for assessing the activity of entities within a dataset comprising, a server and a computing device according to any device herein described. Optionally, the server is configured to receive data and provide the data to the computing device.

Optionally, the system further comprises a display configured to display the representations; preferably wherein the display is configured to receive data from the computing device.

Optionally, the motion comprises a damping velocity and/or force component.

Optionally, the method further comprises identifying a popular phrase or tag present within the data. Preferably the popular phrase or tag is displayed in the representation space.

Optionally, the orbital motion of the representation incorporates appropriate forcing and/or damping terms such that the representations exhibit orbit-like trajectories despite any discretisation of their equations of motion.

According to an aspect of the invention, there is provided a system assessing the activity of entities within a dataset comprising: a visualisation module configured to undertake any method herein described; a graphical user interface (GUI) module configured to receive user configuration data; and a viewer module configured to: receive data related to the representations from the visualisation module; receive data related to the user configuration data from the GUI; and generate visualisation data based on: the received data related to the representations, and received data related to the user configuration data. Optionally, the representations are glyphs.

Optionally, the data related to the glyphs comprises data related any one or more of the following: glyph location, glyph velocity, glyph colour and/or glyph diameter.

Optionally, the user configuration data comprises data related to a modification of the equation of motion. Optionally, the modification of the equation of motion comprises modifications to constants used in the equations of motion.

Optionally, the user configuration data comprises data related to a user click on a representation associated with a first entity.

Optionally, the viewer module is further configured to receive data related to the first entity from the visualisation module.

Optionally, the data related to the first entity comprises one or more of the following: data related to the properties of the first entity including data related to the clicked representation, data related to the first entity.

Optionally, the user configuration data comprises data related to a user selection of one or more entities and/or representations and/or who are to have an increased brightness and/or opacity value with reference to unselected entities and/or representations.

Optionally, the viewer module is further configured to receive data related to a/the popular phrase and/or tag from the visualisation module. Preferably, the viewer module is configured to display the popular phrase or tag. Preferably, the phrase or tag is displayed such that it do not occlude the representations. Preferably, in a side mode, the tags are placed in an extreme of the plane perpendicular to the sides of the side mode. Optionally, a plurality of phrases and/or tags are received. Advantageously, this allows the user to see not only which entitles are active and related (and/or other insights), but also the phrases and/or tags the entities are using amongst each other in a way such that it does not interfere with any insights from the motion. In a further aspect, the present invention provides any, some or all of the features: the motion is based on motion that is familiar to the end-user; the motion is based on real world physics; the motion is based on equation(s) of motion; the equation(s) of motion is/are based on approximation(s) of Newton’s Laws of Physics; the equation(s) of motion are based on bespoke customisations; the combination of the equations of motion and bespoke customisations provide insight at a glance; the movement of representations provide insight is into the activity and/or relevance and/or influence of an entity associated with the representation; the equations of motion can be based on physical laws but can also include bespoke customisations, such that the combination provides insight at a glance; the location of the representations relate to the activity of the representations; the representations will continue to evolve and/or move even without further data; the motion is orbiting about a point and/or about another representation; • the motion is towards a home location, preferably if the entity moving is more active;

• the amount of activity affects the amount of motion, preferably, the more active the more motion;

• the amount of activity of an entity affects the amount of an representation associated with that entities moves;

• the representations are dynamic to real-time events, preferably the motion is modified by real-time events, preferably the motion is modified when receiving data of the real-world events;

• the motion offers snapshots of current activity associated with entities;

• the motion shows interactions between the entities;

• using motion to describe non motion or physical based properties, and preferably using motion to describe the activity and/or relevance of an entity or entities;

• the motion is such that representations do not occlude each other or at least time the representations are occluded is minimised;

• there are at least two types of entities (and two types of associated representations) and the interactive motion between the two types of representations shows the interaction between the entities;

• hierarchies and/or subsets of different entities can be provided by a user;

• tags that entities belong to specific hierarchies and/or subsets can be provided by a user;

• an entity belongs to a particular subset based on its hierarchy relative to the other entities;

• accounts are chosen to be of more importance within the dataset

• the more important and/or higher up a hierarchy an entity is, the more likely is it to use complex motion, and preferably computationally intensive motion such as n-body interactions and/or second order differential equations; and

• the more important and/or higher up the hierarchy an entity is, the less the representation will overlap and occlude others in the same hierarchy, thereby allowing improved analysis of the more important entities while still being able to view other representations.

According to an aspect of the invention, there is provided a method of assessing the activity of entities on a server comprising: receiving data related to the entities; and generating, from the received data, representations associated with the entities, wherein the activity is represented by motion of the representations.

Optionally, a motion of a representation is based on a property of one or more of the other representations.

Optionally, the received data comprises data related to interactions between the entities on the server.

According to an aspect of the invention, there is provided a method of assessing the activity of a plurality of entities within a dataset comprising: receiving data relating to the dataset; identifying a plurality of entities within the dataset; determining an equation of motion for each of the plurality of entities within the dataset; generating a representation for each of the plurality of entities based on the corresponding equation of motion; and outputting the plurality of representations to a display, thereby representing the activity of the plurality of entities.

The determination of an equation of motion for each entity may enable the user to view interactions between the entities. For example, the equations of motion may convey relationships between the entities (in particular, hierarchical relationships) - e.g. a representation associated with an electronic communication may move towards the representation associated with its source, or a representation associated with an implementation of a design may move towards the representation associated with the design. Further, the equations of motion may convey common characteristics of various entities - e.g. representations associated with entities which relate to the same electronic communication(s) may be attracted to one another, or similar designs may be attracted to one another.

Two or more (or all) entities may share the same corresponding equation of motion. Entities of the same type may share the same equation of motion. Alternatively, the equation of motion may be different for each entity.

Optionally, the step of identifying a plurality of entities within the dataset comprises identifying a plurality of entities within the dataset from the received data.

Optionally, a motion of a representation is based on an equation of motion for its corresponding entity.

Optionally, outputting the plurality of representations to a display comprises presenting motion of the plurality of representations to a user. Optionally, the equations of motion are dependent on properties of the corresponding entities and/or properties of other entities and/or the other representations.

Optionally, each equation of motion is a function of time and/or a property of the corresponding entity, and preferably the property is an activity property of the corresponding entity.

Optionally, the equation of motion for at least one entity is dependent on the equation of motion for at least one other entity. Optionally, the equation of motion for each entity is dependent on an equation of motion for at least one other entity

Optionally, the equation of motion for at least one of the entities is dependent on a location of one or more other entities. In other words, the equation of motion for each entity is dependent on a location of at least one other entity. The equation of motion for an entity (i.e. its motion) being dependent on a location of other entities may allow the motion of the representations to be more reactive to changes in the dataset and/or changing locations of other entities. The motion of the entity (and its representation) may thus reflect any such changes over time, which may not be possible had the motion of entities been independent of one another.

Optionally, at least one entity moves towards the location of at least one other entity. Optionally, once it reaches a predetermined distance of the location, the at least one entity oscillates around the location.

Optionally, at least one entity moves away from the location of at least one other entity. Optionally, the greater the activity of the at least one entity and/or the at least one other entity, the faster the at least one entity moves away from the at least one other entity. Optionally, at least one equation of motion comprises a damping component that slows down the corresponding at least one entity’s motion.

Optionally, the at least one entity and the at least one other entity are related.

Optionally, the equation of motion for each entity is dependent on an equation of motion for at least one other entity. Optionally, each equation of motion is a discretised equation of motion, and more preferably each equation of motion is discretised using a numerical method, and even more preferably the numerical method is an Euler method, and yet even more preferably the numerical method is a Forwards Euler method.

Optionally, the step of generating a representation for each of the plurality of entities based on the corresponding equation of motion comprises: determining a location for each of the plurality of entities based on the corresponding equation of motion; and generating a representation for each of the plurality of entities based on the determined location.

Optionally, the entities are divided into a plurality of subsets, and preferably an entity belongs to a subset based on any one or more of the following: a type of the entity, a user selection, a hierarchy of the entity, an/the activity property of the entity, total number of the type of entity identified within the dataset, total number of representations generated corresponding to the type of entity, an importance of the entity, and/or resources available at a computing device running the method.

Optionally, the computing device is a client device.

Optionally, the equation of motion for an entity in a subset is based on an n-body interaction and/or a second order differential equation of motion, and preferably the n-body interaction is an interaction between at least all other entities belonging to the same subset, and preferably an entity belongs to the subset if it is of the account type and/or post type.

Optionally, the equation of motion for an entity in a subset is dependent on a location of the other entities in the subset, and preferably the (equations of motion for the entities in the subset are such that) entities in the subset move away from the location of other entities in the subset (in other words, motion of the entities in the subset is defined by a movement away from the location of other entities in the subset), and preferably the entities in the subset are repelled from other entities in the subset, and preferably an entity belongs to the subset if it is of the account type, and more preferably the magnitude of the repulsion is based on one or more of: the difference between the locations of the entities, a popularity of the entities, and/or an activity property of the entities.

Optionally, the equation of motion for an entity in a subset that is related to a specific entity in a further subset is dependent on a location of the specific entity, and preferably wherein the entity moves towards the location of the specific entity, and preferably an entity belongs to the subset if it is of the post type and an entity belongs to the further subset if it is of the account type. Optionally, the equation of motion for an entity in a subset that is related to a specific entity in a further subset is dependent on the location of the specific entity, and preferably the entity orbits about the specific entity, and preferably the motion is such that the representation corresponding to the entity in the subset does not occlude the representation corresponding to the specific entity, and preferably an entity belongs to the subset if it is of the post type and an entity belong to the further subset if it is of the account type.

Optionally, the equation of motion for an entity in a subset is dependent on a centre point of a representation space, and preferably the equation of motion is dependent on an attraction to the centre point of the representation space, and more preferably the amount of attraction is based on an activity property of the entity, and preferably an entity belongs to the subset if it is of the account type. Optionally, different equations of motion are used depending on a type of the entity, and preferably such that the different entity types are identifiable by at least their motion.

Optionally, the method further comprises destroying an entity and/or a representation.

Optionally, destroying a representation and/or an entity is based on any one or more of the following: the type of the representation and/or entity, the age of the representation and/or entity, the number of times the representation and/or entity is referenced, the location of the entity, the time at which the entity was last active, the numberof entities of the same type as that of the entity, one or more properties of other entities, user selection, and/or the resources available at a computing device running the method.

Optionally, the method further comprises receiving an equilibrium mode, wherein the equation of motion for an entity is dependent on the received equilibrium mode, and preferably the equilibrium mode is any one or more of the following: a default mode, a side mode, a clockface mode, a map mode, or a sentiment mode, and more preferably the equilibrium mode partially defines a/the representation space (which the representations and/or entities are located within).

Optionally, depending on the equilibrium mode, the equation of motion for the entity is dependent on any one or more of the following properties of the entity: an/the activity property, a/the geographical location related to the entity, a/the sentiment factor of received data that is related to the entity, and/or a/the side property of the entity.

Optionally, depending on the value of the one or more properties of the entity, the entity moves towards a point, a side, and/or a plane in the representation space.

Optionally, if the received equilibrium mode is the default mode, then the higher an/the activity property of an entity, the more the equation of motion for the entity is dependent on movement towards a centre point in the representation space.

Optionally, if the received equilibrium mode is the side mode then the higher an/the activity property of an entity, the more the equation of motion for the entity is dependent on movement towards a centre point in the representation space, and further the equation of motion for the entity is dependent on a side property of the entity, preferably such that the movement of the entity is dependent on a particular side or plane in the representation space.

Optionally, if the received equilibrium mode is the clockface mode then the higher an/the activity of an entity, the more the equation of motion for the entity is dependent on movement towards a centre point in the representation space, and further the equation of motion for the entity motion is dependent on a geographical location related to the entity, and preferably a longitude related to the entity.

Optionally, if the received equilibrium mode is the map mode then an equation of motion for an entity is dependent on a geographical location related to the entity, and preferably a longitude and latitude related to the entity.

Optionally, if the received equilibrium mode is the sentiment mode then an equation of motion for an entity comprises a first component in a first plane that is dependent on an/the activity of the entity and a second component in a second plane that is dependent on a/the sentiment factor of received data that is related to the entity.

Optionally, if the received equilibrium mode comprises a cluster sub-mode then an equation of motion for entity is dependent on the entity’s interactions with other entities such that entities that are closely related are clustered together.

Optionally, the method comprises updating a next location of an entity, wherein updating a next location comprises: determining a current location of the entity; and determining a next location of the entity based on the corresponding equation of motion and the current location of the entity.

Optionally, updating a next location of an entity is repeatedly carried out, and preferably is carried out for all entities, and preferably repeated periodically, and preferably repeated when further data of the dataset is received.

Optionally, a location of an entity relates to a location of the corresponding representation on the display.

According to an aspect of the invention, there is provided a computer program product for assessing the activity of a plurality of entities within a dataset comprising instructions which, when executed by a computer program, cause a computer processor to: receive data relating to the dataset; identify a plurality of entities within the dataset; determine an equation of motion for each of the plurality of entities within the dataset; generate a representation for each of the plurality of entities based on the corresponding equation of motion; and output the plurality of representations to a display, thereby representing the activity of the plurality of entities. According to an aspect of the invention, there is provided a computing device for assessing the activity of a plurality of entities within a dataset comprising a controller configured to: receive data relating to the dataset; identify a plurality of entities within the dataset; determine an equation of motion for each of the plurality of entities within the dataset; generate a representation for each of the plurality of entities based on the corresponding equation of motion; and output the plurality of representations to a display, thereby representing the activity of the plurality of entities.

Optionally, the computing device further comprises a display configured to receive and display the plurality of representations; wherein the location of an entity relates to a location of the corresponding representation on the display. According to an aspect of the invention, there is provided a system for assessing the activity of entities comprising: a server and a computing device according to any device herein described.

Optionally, the server is configured to transmit data relating to the dataset to the computing device.

According to an aspect of the invention, there is provided a method of image processing, comprising: receiving data relating to the dataset; identifying a plurality of entities within the dataset; determining an equation of motion for each of the plurality of entities within the dataset; generating an image comprising a representation of each of the plurality of entities, each representation being based on the corresponding equation of motion; and enabling a user to interact with at least one of the representations.

Optionally, the step of enabling a user to interact with at least one of the representations comprises receiving a user input, the user input preferably comprising a user selection of at least one representation. Optionally, the method further comprises modifying the image based on the equations of motion for each of the entities, preferably wherein modifying the image comprises altering the location in the image of at least one of the representations.

According to an aspect of the invention, there is provided a method of assessing the activity of a plurality of entities within a dataset comprising: receiving data relating to the dataset; identifying a plurality of entities within the dataset; generating, from the received data, a representation for each of the plurality of entities; determining an equation of motion for each of the plurality of representations, wherein motion of a representation is based on its corresponding equation of motion, and wherein the equation of motion for each representation is based on a property of at least one other representation; and presenting motion of the plurality of representations to a user, thereby representing the activity of the plurality of entities. It can be appreciated that the methods can be implemented, at least in part, using computer program code. According to another aspect of the present disclosure, there is therefore provided computer software or computer program code adapted to carry out these methods described above when processed by a computer processing means. The computer software or computer program code can be carried by computer readable medium, and in particular a non-transitory computer readable medium, that is a medium on which computer code may be stored permanently or until it is overwritten. The medium may be a physical storage medium such as a Read Only Memory (ROM) chip. Alternatively, it may be a disk, such as a Digital Video Disk (DVD-ROM), or a non-volatile memory card, e.g. a flash drive or mini/micro Secure Digital (SD) card. It could also be a signal such as an electronic signal over wires, an optical signal or a radio signal such as over a mobile telecommunication network, a terrestrial broadcast network or via a satellite or the like. The disclosure also extends to a processor running the software or code, e.g. a computer configured to carry out the methods described above.

Furthermore, features implemented in hardware may be implemented in software, and vice versa. Any reference to software and hardware features herein should be construed accordingly.

Any apparatus or device feature as described herein may also be provided as a method feature, and vice versa. As used herein, means plus function features may be expressed alternatively in terms of their corresponding structure, such as a suitably programmed processor and associated memory.

It should also be appreciated that particular combinations of the various features described and defined in any aspects of the disclosure can be implemented and/or supplied and/or used independently.

The disclosure also provides a computer program and a computer program product comprising software code adapted, when executed on a data processing apparatus, to perform any of the methods described herein, including any or all of their component steps.

The disclosure also provides a computer program and a computer program product comprising software code which, when executed on a data processing apparatus, comprises any of the apparatus features described herein. The disclosure also provides a computer program and a computer program product having an operating system which supports a computer program for carrying out any of the methods described herein and/or for embodying any of the apparatus features described herein.

The disclosure also provides a computer readable medium having stored thereon the computer program as aforesaid. The disclosure also provides a signal carrying the computer program as aforesaid, and a method of transmitting such a signal.

The disclosure extends to methods and/or apparatus substantially as herein described with reference to the accompanying drawings.

Each of the aspects above may comprise any one or more features mentioned in respect of the other aspects above.

In this specification the word 'or' can be interpreted in the exclusive or inclusive sense unless stated otherwise.

Use of the words “apparatus”, “server”, "device", "processor", “database” and so on are intended to be general rather than specific. Whilst these features of the disclosure may be implemented using an individual component, such as a computer or a central processing unit (CPU), they can equally well be implemented using other suitable components or a combination of components. For example, they could be implemented using a hard-wired circuit or circuits, e.g. an integrated circuit, and using embedded software. They could also be made up of a number of separate computers such as a cloud service offering. Examples of cloud service offerings can include Platform as a Service (PaaS). It should be noted that the term "comprising" as used in this document means "consisting at least in part of. So, when interpreting statements in this document that include the term "comprising", features other than that or those prefaced by the term may also be present. Related terms such as "comprise" and "comprises" are to be interpreted in the same manner. As used herein, "(s)" following a noun means the plural and/or singular forms of the noun. The disclosure will now be described, by way of example, with reference to the accompanying drawings.

Brief Description of the Drawings

Figure 1 is a schematic diagram of a communication network according to an example of the disclosure.

Figure 2 is a schematic diagram of a client device operating in the communication network.

Figure 3 is a schematic diagram of a web server operating in the communication network.

Figure 4 is a schematic diagram of example software architecture of the system used for providing the visualisation to a user. Figure 5 is a flow diagram illustrating an example method of detecting social media items in data streamed from a social media network API.

Figure 6 is a schematic high-level diagram of how glyphs associated with social media entities interact. Figure 7 is a flow diagram illustrating an example method of creating a social media entity of type

User.

Figure 8 is an example Graphical User Interface (GUI).

Figures 9 to 12 are snapshots of example visualisations.

Figures 13A and 13B are snapshots of an example visualisation taken several seconds apart. Figures 14A and 14B are snapshots of an example visualisation taken several seconds apart.

Figures 15A and 15B are snapshots of an example visualisation taken several seconds apart.

Detailed Description of Preferred Examples

The present disclosure is described with reference to Twitter as a specific social media network example and the data and datasets relate to Twitter related entities. However, the disclosure could equally be applied to a numberof other social media networks, such as Facebook®, Instagram®, orSina® Weibo®.

Further, the present disclosure could equally be applied to a number of other datasets. A person skilled in the art will appreciate that the present disclosure provides insight and analysis of activity within a dataset based on movement or motion of representations of entities within the dataset. The movement and motion of the representations is indicative of a non-motion related property (such as activity/influence/importance/relevance) and/or relation of each entity.

The present disclosure works well with interrelated and/or hierarchical datasets such as social media networks where accounts can post, where the account is a “parent” of a post (or at the very least the account and the post are associated/related by their authorship). The relationship between this parent-child is shown by use of motion of the child towards and about the parent. The present disclosure also works well with data that gets updated and/or appended to continuously. An example herein is accounts posting further posts which are automatically added into the visualisation. The new posts are received and then an entity is generated along with a representation of the entity based on the newly received data. The creation of a new representation and entity is conducted in real time as the new data is received. A further example use of the present disclosure is as a tool for a user to, at a glance (without reviewing any numbers, alarms, statistics, and/or static graphs) determine how active a computer network is between servers, routers, computers and/or other network connected devices in real-time. Using the methods employed by the present disclosure, this may be achieved in a computationally efficient manner. Thus, the present disclosure may, in real-time, provide information (in particular in the form of visual indications) about the conditions prevailing in the computer network. Accordingly, it may for example assist in balancing the load (e.g. computing load or network bandwidth) between servers, routers, computers and/or other network connected devices in the computer network.

The different entity types as herein discussed generally for social media networks are “accounts”, “posts”, and “replies”. These are relational and/or hierarchical entities. In the computer network example, the different entity types are “server”, “router”, and “end device”. As herein described, the different movement of these types of entities could be used to show any of the following: how the entities are connected/related by the relative position of the representations, which entities are the most active (where a measure of activity is how much data is being transmitted/received) by how much and where the representations are moving, which entities are not active enough, which real-world regions geographically are not active by indication of the movement (or lack thereof) of the associated representations. This movement is all affected by real-time and real-world data being received by the system.

A further example application of the present disclosure may be the identification of security risks among the entities in the dataset. For example, if the dataset relates to social media (e.g. Twitter), the present disclosure may allow monitoring, detecting and/or identifying suspicious social media account behaviour - e.g. overactive Twitter bots; or legitimate accounts suddenly behaving unusually (e.g. being much more active than before or interacting with other suspicious accounts), which may e.g. signify that the account was hacked. Or, for example, if the dataset relates to a computer network the present disclosure may allow monitoring, detecting and/or identifying suspicious server behaviour - e.g. a server transmitting large amounts of data to a new recipient, which may e.g. signify that the server has been attacked and is compromised.

Hardware architecture

According to an example, a visualisation is provided to a user via a web application that runs in a web browser on the client (user) device. Further, the web application is client-based and part of the computer executable code is downloaded onto the client device. Accordingly, both the web server’s and the client device’s computing resources (such as processing power or memory) are used for providing the visualisation to a user. A person skilled in the art would appreciate that the visualisation may be provided to a user in a range of other ways, such as via a standalone application downloaded onto the user (client) device, without departure from the scope of the claims.

Referring to Figure 1 , according to an example, in a communication network 100 client devices 102i, 102 2 , 102N are configured communicate with a web server 104. In particular, the client devices 102i, 102 2 , 102N are configured to communicate with services (that are described with reference to Figure 4) that are running on the web server 104. In the present example, these services are received and requested via connections 108 established via the Internet 114. Also presented in the communication network 100 is a database server 106 which is configured to establish connections 110 to the web server 104 via the Internet 114. Alternatively, the database server 106 and the web server 104 are connected via a local connection, such as via a Local Area Network (LAN) connection. Further presented in the communication network 100 is a social media network server 116 which is configured to establish connections 118 to the web server 104 via the Internet 114.

In the present example, the client device 102, web server 104, social media network server 116, and database server 106, are arranged to communicate with the Internet 114 via wired Ethernet connections 108, 110, 118. The client device 102, web server 104, social media network server 116, and database server 106, are also configured to connect with the Internet 114 via access points (not shown). An Ethernet connection connects to an access point (e.g. in the form of a broadband modem or the like), and thence on to the Internet 114.

In the present example, there is no direct connection established between a client device 102 and a database server 106. Instead, separate connections are established between a web server 104 and a client device 102 (connections 108), and between a web server 104 and a database server 106 (connections 110). Optionally, the client devices are configured to access the database server 106 directly.

In the present example, the database server 106 is a relational database management system in the form of a client-server database engine. The database server 106 is shown here as connectable only via the Internet 114. Optionally, the database server 106 is hosted in the same internal network as the web server 104 or the same physical device as the web server 104. Alternatively, the database server 106 is not a client-server database engine but rather a software library such as SQLite and runs on the same system as the web server 104.

The database server 106 stores a range of information that may be requested by the web server 104. For example, the database server stores user information, including user credentials and/or permissions (e.g. permissions for which visualisation(s) a user is permitted to access).

Referring to Figure 2, a client device 102 is a computer device which comprises a Central Processing Unit (CPU) 202, memory 204, storage 206, removable storage 208, Internet communication module 210 and a user interface 212 coupled to one another by a bus 214. Preferably, the client device further comprises a Graphics Processing Unit (GPU) 222 that is used to render images, in order to free up CPU 202 processing power for other tasks.

The user interface 212 comprises a display 216 and an input/output device which in this example is a keyboard 218 and a mouse 220. In other examples, the input/output device comprises a touchscreen such as a Thin-Film-Transistor (TFT) Liquid Crystal Display (LCD) display or an Organic Light Emitting Diode (OLED) display, or other appropriate display. The user interface is arranged to provide indications to the user, under the control of the CPU 202, and to receive inputs from the user, and to convey these inputs to the CPU 202 via the communications bus 214.

The CPU 202 is a computer processor, e.g. a microprocessor. It is arranged to execute instructions in the form of computer executable code, including instructions stored in the memory 204, the storage 206 and/or removable storage 208. The instructions executed by the CPU 202 include instructions for coordinating operation of the other components of the client device 102, such as instructions for controlling the communication module 210 as well as other features of a client device 102 such as a user interface 212 and audio system (not shown). Browser application 250 may be installed on the client device 102. Browser application 250 has associated instructions that are also in the form of computer executable code, stored in the memory 204, the storage 206 and/or removable storage 208. Browser application 250 also has instructions for operating, receiving, and/or sending data via the communication module 210.

The browser application 250 is a software application that can be used for accessing information on the Internet 114. In the present example, the browser application 250 is Google® Chrome®. However, any other browser application would be a suitable alternative, such as Mozilla® Firefox®, Safari® or Internet Explorer®. The memory 204 stores instructions and other information for use by the CPU 202. The memory

204 is the main memory of the client device 102. It usually comprises both Random Access Memory (RAM) and Read Only Memory (ROM). The memory 204 is arranged to store the instructions processed by the CPU 202, in the form of computer executable code. Typically, only selected elements of the computer executable code are stored by the memory 204 at any one time, which selected elements define the instructions essential to the operations of the client device 102 being carried out at the particular time. In other words, the computer executable code is stored transiently in the memory 204 whilst some particular process is handled by the CPU 202.

The storage 206 provides mass storage for the client device 102. In different implementations, the storage 206 is an integral storage device in the form of a hard disk device, a flash memory or some other similar solid state memory device, or an array of such devices. The storage 206 stores computer executable code defining the instructions processed by the CPU 202. The storage 206 stores the computer executable code permanently or semi-permanently, e.g. until overwritten. That is, the computer executable code is stored in the storage 206 non-transiently. Typically, the computer executable code stored by the storage 206 relates to instructions fundamental to the operation of the CPU 202, Internet communication module 210, user interface 212 and other installed applications or software modules (such as the browser application 250).

The removable storage 208 provides auxiliary storage for the client device 102. In different implementations, the removable storage 208 is a storage medium for a removable storage device, such as an optical disk, for example a Digital Versatile Disk (DVD), a portable flash drive or some other similar portable solid state memory device, or an array of such devices. In other examples, the removable storage 208 is remote from the client device 102, and comprises a network storage device or a cloud-based storage device.

The Internet communications module 210 is configured to establish the connection(s) 108 with web server 104 shown in the communication network 100. The Internet communications module 210 typically comprises an Ethernet network adaptor coupling the bus 214 to an Ethernet socket. The Ethernet socket is coupled to a network.

As mentioned, the visualisation software is implemented as a computer program product, which is stored, at different stages, in the memory 204, storage device 206, and/or removable storage 208. The storage of the computer program product is non-transitory, except when instructions included in the computer program product are being executed by the CPU 202 or GPU 222, in which case the instructions are sometimes stored temporarily in the CPU 202, GPU 222, or memory 204. It should also be noted that the removable storage 208 is removable from the client device 102, such that the computer program product may be held separately from the client device 102 from time to time.

In the present example, the client device 102 is a personal computer such as a laptop computer or desktop running any other type of operating system such as MacOS®, Linux® or Windows®. In such an example, the Ethernet connection is effectively similar to the other wireless connection 108, in that it connects, albeit via a fixed line or wired connection rather than a wireless one, to an access point or router (not shown), e.g. in the form of a broadband modem or the like, and thence on to the Internet 104. In this or other examples, the client device 102 is connected to a large display (not shown) such that a provided visualisation can be simultaneously viewed by a plurality of users.

In an alternative example, the client device 102 is a smartphone. For example, the client device may be a smartphone whose operating system is an Apple® iPhone® OS (iOS), Android®, or Microsoft® Windows® 10 operating system. The operating system manages the basic functioning of the hardware of the client device 102 and operational interactions between the hardware components of the client device 102 and software module 250.

In an alternative example, the client device 102 is arranged to communicate with the Internet 114 via a cellular radio network link using an appropriate communication standard, such as Global System for Mobile Communications (GSM), Universal Mobile Telecommunications System (UMTS) or Long-Term Evolution (LTE), to provide data communication. Similarly to the Ethernet connection 108, 110, in cellular radio network link, the client device is configured to connect with the Internet 114 via an access point (not shown). The personal computing device 102 is arranged to communicate with the access point via another short-range wireless communication connection. This other short-range wireless communication connection can be any one of: a Wi-Fi® connection, a Bluetooth® connection, IR wireless connection, ZigBee® connection, or some other similar connection Referring to Figure 3, a web server 104 comprises a Central Processing Unit (CPU) 302, memory

304, storage 306, removable storage 308, Internet communication module 310 coupled to one another by a bus 314. Also shown are web service(s) 316 running on the web server 104. The web service(s) 316 would typically be implemented as one or more web services with different or overlapping functions as required for the operation of the web application that provides the visualisation to the user. Further, each of the one or more web services would typically establish a separate communication 108 with the client device 102 via the Internet 114.

The modules shown in Figure 3 with the same name as those described with reference to Figure 2 function in substantially the same way.

In the present example, the social media network server 116 is made up of a number of separate computers into a cloud offering. The server 116 runs web service(s) that make up a social media network server instance 424 which includes a social media network API 406, and which can be connected to via the Internet 114.

In an alternative example, the social media network server 116 is a single computer as described above with reference to Figure 3. Software architecture

Referring to Figure 4, example software architecture 400 of the system used for providing the visualisation to a user is shown. An instance of this system comprises a server instance 404 that runs on the web server 104, and a client instance 402 that runs on the client device 102. Concurrently, a social media network server instance 416 runs on the social media network server 116. The social media network server instance 416 includes a social media network API 406. The server instance 404 and the client instance 402 represent software module(s) configured to run on their respective devices as described herein.

The server instance 404 manages interaction with a social media network API 406. The server instance 404 comprises a server snapshot manager 408, a settings data file 410, and a server stream manager 412.

In the present example, the server snapshot manager 408 and the server stream manager 412 correspond to separate web services 316 on the web server 104. Alternatively, the functionality within both the server snapshot manager 408 and the server stream manager 412 is encapsulated within a single web service 316. The settings data file 410 comprises various configuration data, including data required for the operation of the server instance 404, such as unique identifiers (unique ids) of a set of social media accounts whose behaviour is to be visualised (this set of social media accounts will from hereon at times be referred as “tracked” social media accounts). Data in settings data file 410 is provided to the server stream manager 412 and the server snapshot manager 408 via connections 442 and 440 respectively. Upon launch of the server instance 404, the server stream manager 412 establishes connection(s) with endpoint(s) of the social media network API 406. Subsequently, data including social media data 472 related to the set of tracked social media accounts is streamed 434 in real-time from the social media network API 406 to the server stream manager 404 via said connection(s). The server stream manager 412 processes social media data 472 into stream data 474. Stream data 474 is related to social media communications that satisfy certain specific criteria as defined in the settings data file 410 and/or within the server stream manager 412. Methods of identifying social media communications that meet the specific criteria as well as possible example specific criteria are described in further detail in the sections below. Stream data 474 is related to social media communications related to one or more of the tracked social media accounts. For example, when the social media network is Twitter, the tracked social media accounts are Tracked Twitter Accounts, and stream data 474 is data related to tweets, retweets, replies, and/or any other forms of social media communication that are available on the Twitter API 406 and that are related to one or more of the Tracked Twitter Accounts (e.g. a tweet posted from a Tracked Twitter Account, or a retweet of a tweet posted from a Tracked Twitter Account, or a reply to a tweet posted from a Tracked Twitter Account). After processing social media data 472 into stream data 474, the server stream manager 412 makes stream data 474 available to a client stream manager 424 on the client instance 402 via connection(s) established between appropriate API endpoint(s) on the server stream manager 412 and the client stream manager 424. Upon request from the client stream manager 424, the stream data 474 is streamed 444 to the client stream manager. The streaming 444 is continuous - in other words, no further requests are required for future streaming of stream data 474, and the streaming 444 continues until the client stream manager requests for the streaming 444 to be terminated or the connection between he client stream manager 424 and the server stream manager 412 is terminated for any other reason.

Similarly to the server stream manager 412, the server snapshot manager 408 establishes a connection with endpoint(s) of the social media network API 406. Upon request 436 from the client snapshot manager 414 for snapshot data 478, the server snapshot manager 408 receives 432 the relevant (relevant to the particular request) data 476 from the social media network API endpoint(s) 406 and/or the settings data file 410, processes the data 476 into snapshot data 478 and returns 438 snapshot data 478 to the client snapshot manager 414. The snapshot data 478 is only provided to the client instance 402 (more specifically to the snapshot manager 414) upon request, and, unlike the stream data 474, it is not continuously provided to the client instance 402. The snapshot data 478 comprises data related to the tracked social media accounts, and/or any other data stored in the settings data file 410. For example, when the social media network is Twitter, tracked social media accounts are Tracked Twitter Accounts and the snapshot data 478 includes, for example, data related to the follower count of one or more of the Tracked Twitter Accounts. The client instance 402 processes data from the server instance 404 to generate and display a visualisation of social media activity related to the tracked social media accounts. The client instance 402 comprises the client snapshot manager 414, client stream manager 424, graphical user interface 418, visualisation module 420, and viewer module 422. Further details of the visualisation module 420 are provided in a separate section below. Upon launch of the client instance 402, the client snapshot manager requests 436 snapshot data

478 from the server snapshot manager 408. Once returned, this snapshot data 478 is processed by the client snapshot manager and provided 446 to the visualisation module 420. Next, the visualisation module 420 is initialised using this snapshot data 478. The visualisation module 420 drives 452 the visualisation in viewer module 422. The visualisation module 420 can also request 456 data from the client snapshot manager 414.

Once the visualisation module 420 is initialised or in parallel to the initialisation of the visualisation module 420, the client stream manager 424 connects, by issuing a request, to the stream 444 of stream data 474 provided by the server stream manager 412. The client stream manager 424 processes stream data 474 and provides 454 it to the visualisation module 420. The graphical user interface 418 allows the user of the client device 102 to control aspects of both the visualisation module 420 and the viewer module 422. The user interacts with the graphical user interface 418 via the input/output device of the client device 102. In this way, the user can set and/or update various visualisation parameters and display parameters. The user input to the graphical user interface 418 is provided 448 to the visualisation module 420 and/or provided 450 to the viewer module 422, depending on the specifics of the user input. For example, if the user updates a visualisation parameter (e.g. by modifying the numerical value of the visualisation parameter), the user input is provided 448 to the visualisation module 420, or, if the user zooms in on a portion of the displayed visualisation (e.g. by restricting the numerical values(s) of the visualisation’s displayed range(s) of coordinates), the user input is provided 450 to the viewer module 422.

The viewer module 422 displays the visualisation based on data provided 452 by the visualisation module 420 and (if provided) based on data provided 450 by the graphical user interface 418.

Although functionality related to the database server 106 is not described, it should be appreciated that the database server 106 could be used to perform one or more of the above described tasks. For example, the data stored in the settings data file 410 on the server instance 404 could instead be stored on the database server 106. This data could then be accessed by the web server 104 via connections 110 and used as described above.

Likewise, it should be appreciated that any of the functions described above could be performed on the client instance 402 or the server instance 404, and that the specific division of functions described above is purely an example. In an alternative example, the functions described above with reference to any one or more of the client snapshot manager 414, client stream manager 424 and visualisation module 420 are instead performed in the server instance 402.

In a yet further alternative example, the graphical user interface 418 further allows the user of the client device 102 to control aspects of the server snapshot manager 408 and/or of the server stream manager 412.

Detecting social media items in data streamed from social media network API

A social media item refers to any social media communication related to one or more of the tracked social media accounts. Examples of social media items when the social media network is Twitter are shown in Table 1 , and further examples of social media items when the social media network is Facebook® are shown in Table 10.

Referring to Figure 5, an example method of detecting social media items within social media data 472 by the server stream manager 412 is shown. Alternatively, the method of detecting social media items within social media data 472 is performed by the client stream manager 424 or in part on both the client stream manager 424 and the server stream manager 412. In this example, the server stream manager 412 first receives 502 social media data 472. The social media data 472 includes data 520 related to a social media item. Social media items are individual items of content from a social network(s). As described below with reference to Twitter, there are a number of different content items or actions a Twitter user can generate (as shown in Table 1). Other social media items will be different depending on the social media network. As a further example, Facebook ® has likes, posts, pokes, mentions, photo tags, and others. A person skilled in the art will appreciate that the social media data 472 matching to social media items can be modified for different social media networks.

Social media data 472 may also comprise social media items from more than one social media network. This way a more accurate picture of a given account or accounts may be visualised, especially if a user posts different content across different social media networks. The server stream manager 412 processes data 520 in order to determine whether the social media item is of a particular pre-defined type of social media items (as defined by specific criteria). In this example, the types of social media items are mutually exclusive (i.e. a social media item can (at most) be of a single type). Accordingly, the server stream manager sequentially determines 504, 506, 508, 512 whether data 520 matches the specific criteria of each pre-defined social media item type. If data 520 matches the criteria of a given social media item type, data is provided 510 to the client stream manager 424. The data provided to the client stream manager 424 includes some or all of data 520, and data related to the identified social media item type.

If data 520 does not match the criteria of a given social media item type but not all social media item types have been checked for, data 520 is evaluated against criteria of a next social media item type, and so on. For example, if data 520 does not match the criteria of the first social media item type (if the answerto determination 504 is “NO”), data 520 is evaluated 506 against criteria of the second social media item type, and so on.

If all social media item types have been checked for and data 520 does not match any of the criteria, data 520 is ignored 514 and method 500 terminates.

Example social media item types for when the social media network is Twitter are shown in Table 1 below. Regarding a social media item type of type 4, if two or more Tracked Twitter Accounts (e.g. two Accounts: A x and A y ) are mentioned in a single Tweet with Twitter ID L posted by account with Twitter ID K, such a Tweet is interpreted as two or more social media items of type 4 (e.g. Mention MENKLX and Mention MENKLY). Further examples include: a like, by account with Twitter ID K, of a tweet with Twitter ID J posted from Tracked Twitter Account with Twitter ID I; or a reply, by account with Twitter ID K, to tweet with Twitter ID J posted from Tracked Twitter Account with Twitter ID I.

Table 1 It should be appreciated that, as Figure 5 refers to a first, second, third, and N th type of social media items, the present disclosure extendsto methods fordetecting social media items of any numberof mutually exclusive types via modifications that would be obvious to a person skilled in the art.

In an alternative example, the types of social media item are not mutually exclusive and a social media item can match the criteria of more than one social media item type. In this alternative example, data 520 is evaluated against the criteria of all the relevant social media types, and data related to the matching social media item types is provided 510 to client stream manager 424. The criteria of various types may be checked in a number of ways, such as sequentially, in parallel or a combination of both, depending on the nature of data 520 and the relationships between the various types. For example, if some types are sub- types of other types, then it may be efficient to check the parent type first and only check the child type if the parent type criteria are met by data 520.

Visualisation module

The visualisation module 420 drives the visualisation in viewer module 422. The visualisation module 420 repeatedly triggers update events that advance visualisation time t by a time step St. St may be fixed orvariable overthe lifetime ofthe current server instance 404 and/or client instance 402. Forfurther details of what occurs upon an update event see the sections below. In addition to the visualisation time t, the visualisation module 420 keeps track of wall clock time t wc which is evaluated according to the precision of the data type used for t wc . In the present example, both the visualisation time t and wall clock time t wc are started at and store a value relative to the time at which the server instance 404 and/or client instance 402 is initiated. Alternatively, the wall clock time t wc stores the absolute date and time of the real-life time external to the visualisation.

Based on the data provided 446 by the client snapshot manager 414 and the data provided 454 by the client server manager 424, the visualisation module 420 generates the data required by the viewer module 422 to display the visualisation on the client device 102. In order to visualise the social media activity related to the tracked social media accounts, the visualisation module 420 creates, updates and optionally destroys a number (up to hundreds of thousands) of social media entities. Social media entities encompass: social media entities corresponding to the tracked social media accounts, and social media entities corresponding to the detected social media items. Example social media entities forwhen the social media network is Twitter are shown in Table 2 below. Each social media entity has an associated glyph (a visual representation). In this example, the glyphs are circular in cross-section. Alternatively, a number of other geometric shapes could be used for the glyphs cross-section such as: square, hexagon, ellipse, etc.

While visual representations in the form of glyphs are the representations herein described associated with the social media entities, a person skilled in the art will appreciate that other representations may also be possible including aural representations or tactile representations. Locations of the representations are within a representation space and depend on what type the representation is, for example, the location of a glyph (a visual representation) may be relative to a 2D display or visualisation space (or the location may be in 3D space but projected onto a 2D display or visualisation space). The location of an aural representation may be in 3D relative to a listener. The location of a tactile representation may be onto a 2D tactile map.

The glyphs are herein described as separate from the entities they are associated with. The glyphs can also be thought of merely the graphical aspects and/or graphical representations of the social media entities. Where a property is described as being part of the glyph or the social media entity, it may also be considered a property of the other. For example, where a type of a glyph is used, it may be considered the same as the type of the social media entity that glyph represents and vice versa.

The glyphs associated with social media entities exist within a visualisation space. The location of the glyphs are updated every update event in the visualisation module 420. In this example, the visualisation space is three-dimensional, the glyphs have three-dimensional shapes, and the description below is drafted accordingly (with only very occasional references to a two-dimensional visualisation space). Modifying the below described systems and methods to implement them within a two-dimensional space would be obvious to a person skilled in the art.

Table 2 The visualisation module 420 updates locations and other properties of the glyphs and social media entities based on equations of motion. Optionally, some or all the equations of motion are based on real world physics. Optionally, the equations of motion have had bespoke changes to them as herein described. While the glyphs and social media entities do not have any real-world physical properties, various properties such as activity and relevance to one another are factors that are transformed into and modify the equations of motion. In this example, certain equations of motion are based on Newton’s Laws of Motion and are applied in order to update some of the properties of each entity. Alternatively, other equations of motion may be used such as laws relating to special relativity and/or quantum mechanics. Since users observe motion of objects based on Newton’s Laws of Motion in their daily lives, the behaviour of entities within the model is understandable and/or familiar for the user. Further, the user can gain useful insights at-a-glance into the underlying trends and/or events within the social media network that are represented via the visualisation.

The glyphs associated with the various social media entities interact in various ways. The glyphs associated with the various social media entities also move differently depending on what type of entity/glyph they are. For example, as described below, a glyph associated with an Account is moved away from others glyphs associated with the other Accounts. The motion away is via a repelling force. The motion of the glyphs associated with an Account is additionally subject to a range of additional forces that depend on an enabled equilibrium mode (described below) and optionally a sub-mode. A glyph associated with a Tweet is attracted towards the glyph associated with the Account that posted the Tweet (or is related to the specific Account in another way). A glyph associated with a Reply is repelled from the glyph associated with the Account that posted the Reply. A glyph associated with a User is attracted towards the glyphs associated with the Tweets that the User most recently retweeted and the Accounts the User most recently mentioned. The visualisation module 420 is designed to balance the trade-off between achieving desired visual effects to convey information related to a large number of social media entities (up to hundreds of thousands) in real-time, and computational cost so that the visualisations run smoothly on modest hardware of the client device 102 without significant time delay. Example high-level requirements for achieving desired visual effects are: a degree of interaction between the various entities, or entities being constrained to undergo repeated oscillatory motions in the vicinity of other entities (in simple terms, entities ‘orbiting’ other entities). In order to meet these and other requirements under a constraint on computational cost, certain software design choices are made for the visualisation module 420, for example:

• Computationally costly n-body interactions are implemented only for a subset of entities which are typically less numerous within a client instance 402, and more numerous entities only undergo restricted interactions. In the present example, n-body interactions are implemented only for

Account entities (of which there are typically fewer); Tweet entities are restricted to interact only with specific Account entities; User entities are restricted to interact only with specific Account or Tweet entities (depending on the User’s Live Parent - see sections below for further details); and Reply entities do not interact with other entities (although Reply entities’ initial Locations depend on Account entities’ Locations). Further, since every entity is either directly or indirectly related to an Account (e.g. a Tweet or a Reply are directly related to an Account, and a User may be directly related or indirectly related (via a Tweet) to an Account), the employment of n-body interactions for Accounts only is sufficient to achieve ‘pseudo-n-body’ interactions among all entities (and a desired visual effect) at drastically reduced computational cost than that if n-body interactions were implemented for all entities. • More complex second-order equations of motion (including both velocity and force/acceleration), which are more computationally costly, are implemented only for a subset of entities which are typically less numerous; whereas less-complex first-order equations of motion (including velocity but not force/acceleration) are employed for more numerous entities. In the present example, second-order equations of motion are implemented for Account and Tweet entities, and Accounts and Tweets have a Velocity property. Accordingly, for example, Tweets can ‘orbit’ Accounts. In the present example, first-order equations of motion are implemented for Reply and User entities, and Replies and Users do not have a Velocity property. Reply and User entities’ Locations are computed via prescribed velocities that are functions of displacement and visualisation time t (and possibly of further variables). Such first-order equations are less computationally costly to solve than the second-order equations used for Account and Tweet entities.

• The equations of motion are discretised in time using a first-order method. In the present example, the first-order method is the explicit Euler method. The explicit Euler method is chosen for its simplicity and low computational cost. The time step used for the discretisation, St, is chosen to be sufficiently small for a small local error (error per step) and a small global error (error at a given time), whilst St is not excessively small such that the computational cost does not become excessively large. This trade-off is particularly difficult to balance when a first-order method is used, as the local error is proportional to the square of the step size, and the global error is proportional to the step size. Accordingly, the visualisation module 420 (and in particularthe equations of motion described in the sections below) is designed such that a reasonable (not excessively small) St can be used, while still achieving desired visual effects despite errors associated with a simple explicit Euler method, and numerical stability is not (or is very unlikely to be) lost. Thus, the design of the visualisation module 420 (and in particular of the equations of motion described in the sections below) may improve the reliability of the client device 102 in that it reduces the tendency to lose numerical stability (which may be inherent to the way the client device 102 is programmed) due to the use of a simple numerical integration method, which in turn may be required to limit the computational costs.

• The visualisation module 420 (and in particular the equations of motion described in the sections below) are designed such that the desired visual effect of entities ‘orbiting’ other entities can be achieved, while discretising the corresponding equations of motion using a computationally cheap low-order accurate scheme. In more detail, if certain physical laws of motion that exhibit orbital trajectories are discretised with computationally cheap low-order accurate schemes, the solutions can exhibit non-physical behaviour. For example, discretising Newton’s laws of gravity with a Forwards Euler method leads to orbits that are erroneously amplified and eventually tend to an infinite radius, and discretising Newton’s laws of gravity with a Backwards Euler method leads to orbits that are erroneously damped and eventually tend to zero radius. Accordingly, the equations of motion in the visualisation module 420 are designed, via judicious choice of appropriate forcing and damping terms, to exhibit orbit-like trajectories, when required, even if the equations of motion are integrated using computationally cheap low-order accurate schemes.

• All entities other than Accounts can be destroyed while the client instance 402 is running when certain conditions are met (see further details in sections below). This ensures that the computational cost of running the visualisation does not become excessive, even if the amount of activity of the visualised social media entities is particularly large.

These techniques described above to compensate for computing resource constraints can be scaled up or down depending on a number of factors including any one or more ofthe following: the amount of computing resource available, the number of glyphs in the visualisation (if there are not many bodies, then more glyphs can have the computationally intensive equations of motion), and/or a user’s preference set via a the settings data file 410 and/or via the Graphical User Interface 418. The subset of entities/representations which move according to computationally costly motion may also or instead be based on the importance of the entity: if an entity is an important and/or an entity is directly related to an important entity, then computationally costly movement is used.

In the present example, the properties of a social media entity are divided into external properties (see e.g. Account external properties in Table 3) and internal (glyph) properties (see e.g. Account internal properties in Table 4). The external properties of a social media entity are used within the visualisation module 420 to run the visualisation but are not provided 452 to the viewer module 422. In contrast, the internal properties are both used within the visualisation module 420 and provided 452 to the viewer module 422.

Only the internal properties of the social media entities are required for the operation of the viewer module 422. Accordingly, an advantage of this division into internal and external entity properties is that the visualisation module 420 can easily provide 452 only the required data (related to the internal properties of visualised entities) to the viewer module 422. Thus, typically, only the necessary data is provided 452 to the viewer module 422 which as a result can run faster and with lesser memory usage. At times, the viewer module 422 is provided 452 with data related to the internal properties of the social media entities and/or other data related to the social media entities - e.g. when the user request such data via the GUI 418.

The external properties of an entity are independent of the internal properties of the entity and of properties of other entities (external and/or internal properties), but are (at least in part) dependent on detected social media items. In contrast, the internal properties of an entity depend (at least in part) on external properties of the entity and on properties of other entities (external and/or internal properties), but do not directly depend on detected social media items (instead internal properties of an entity depend on detected social media items indirectly via the external properties of the entity and properties of other entities).

The external properties of an entity are updated upon detection of a social media item of a relevant type and/or upon an update event. The internal properties of an entity are updated upon an update event. Each of the entities 1-4 shown in Table 2 are described in further detail in the sections below. The properties listed for each entity in the sections below do not represent an exhaustive list, and each entity has further properties (such as brightness and opacity) whose implementation would be obvious to a person skilled in the art.

A number of constants (such as L^, or MjJ) appear in the equations shown below. These constants are greater or equal to zero, and they are set via the settings data file 410 and/or via the Graphical User Interface 418.

In an alternative example, the equations of motion are discretised in time using other numerical methods such as the Backward Euler method, or an Exponential Rosenbrock method.

Social media entities interaction overview Figure 6 shows a schematic high-level overview 600 of how glyphs associated with social media entities shown in Table 2 interact. Further details are provided in sections below. In overview:

• A glyph 602 associated with an Account is repelled 610 from glyphs associated with all the other Accounts, and is subjected to equilibrium mode (and optionally equilibrium sub-mode) dependent forces 616. • A glyph 604 associated with a Tweet is attracted 612 towards the glyph associated with the Account that posted the Tweet.

• A glyph 606 associated with a Reply is moves away 614 from the glyph associated with the Account that posted the Reply. · A glyph 608 associated with a User is attracted (not shown in Figure 6) towards the glyphs associated with the Accounts that the User most recently mentioned in a tweet and/or attracted 618 towards glyphs associated with the Tweets that the User most recently retweeted.

Account Ai

Creation In the present example, an Account entity A\ (and a corresponding glyph) is created for each

Tracked Twitter Account when the visualisation module 420 is initialised using the snapshot data 478 provided 446 by the client snapshot manager 414.

In an alternative example, an Account entity is created for a Tracked Twitter Account only upon detection of a social media item of one of the pre-defined types (e.g. types 1-4 shown in Table 1) which is related to the Tracked Twitter Account. For example, an account entity Ax is created for a Tracked Twitter Account with Twitter ID X only once one of the following social media items is detected: Tweet TWEJX, Reply REPJX, Retweet RETKJX, or Mention MENKLX.

Properties

The external and internal properties of an Account entity A\ are shown in table 3 and table 4 respectively.

Table 3

The Activity property is a measure of how active the Account Ai is. This is often a good measure of the relevance of Account Ai to the end user on the client device 102. Further details of how Activity is computed are described in the sections below. Each of the Side, Latitude, and Longitude properties is optional and is only used in a subset of the available equilibrium modes. For some equilibrium modes, the Side, Latitude, and/or Longitude properties define the equilibrium location of an account glyph when it is inactive or less active (as defined by the value of its Activity property). Further details of the equilibrium modes are described in the sections below.

The Side property of an Account is used within the visualisation module 420 when the Side equilibrium mode is used. The value of the Side property determines which one of six planes that bound a cuboid centred on the origin the glyph associated with the Account is attracted to. In the present example, the Side takes one of six discrete values: S* , S*, S y , S y , , S (which can be envisaged as corresponding to

“Right”, “Left”, “Top“, “Bottom”, etc.).

The Latitude and Longitude properties of an Account are used within the visualisation module 420 when the Map equilibrium mode is used. The Longitude property of an Account is used within the visualisation module 420 when the Clockface equilibrium mode is used. The Latitude and Longitude properties of an Account store, in general terms, data related to a geographic location related to the Account.

The Number of Mentions W Al is a count of the number of times Account Ai has been mentioned in the current client instance 402 and/or in the current server instance 404. Further details of how Number of Mentions W Al is computed are described in the sections below. The data type of the Activity, Latitude, and Longitude properties is float, although a number of other numerical data types obvious to a person skilled in the art would be appropriate, such as decimal or double (following notation present in a number of programming languages, such as C#). In the present example, the data type of the Side property is string, although a number of other data types obvious to a person skilled in the art would be appropriate, such as an enum of the discrete allowed values. The data type of the Number of Mentions W Al property is int, although a number of other integral numeric data types obvious to a person skilled in the art would be appropriate, such as long, uint (unsigned int) or short.

Table 4

The Location L AI and Velocity are three-dimensional vectors. Location L AI corresponds to the location of the glyph associated with Account Ai in the visualisation space. Velocity V Al is used to update Location L AI (see further details below). Since the glyph associated with Account A\ has Velocity V^, second-order equations of motion can be used for updating Location L Ar The Diameter is a scalar, which determines the size of the glyph associated with Account A\ in the visualisation space. The exact definition of the Diameter depends on the shape of the cross-section of the glyph associated with Account Ai. In this example, the glyph cross-section is circular, and so defines the length of diameter of the circle. Corresponding definitions of for other glyph cross-section shapes would be obvious to a person skilled in the art. For example, if the glyph cross-section were square- shaped, the diameter could define the length of the diagonal of the square.

As described with reference to the Activity, Latitude, and Longitude properties of an Account Ai, a number of numerical data types could be used for the vector-components of the Location and Velocity properties, and the Diameter property. The Colour C Al determines the colour of the glyph associated with Account Ai. The data type of the Colour property is #hex, which corresponds to the commonly used Hex Code #RRGGBB colour encoding schema. A number of alternative ways to the store the colour of the glyph associated with Account A\ would be obvious to a person skilled in the art, such as via HTML/CSS colour names (i.e. a string such as “Nmegreen”).

Setting and updating of properties

External properties The Activity A AI is initially set to zero. Upon detection of a social media item related to Account Ai,

Activity A AI is increased. This increase depends on the type of social media item detected. Equations (1), (2), and (3) below correspond to the example formulae used for updating Activity A AI upon detection of a Tweet TWEJI, Reply REPJI, and Retweet RETKJI respectively. Similar formulae are used for updating Activity A AI upon detection of other social media items, such as a Mention MENKLI. Further, upon every update event (i.e. every 6t), the Activity A AI is reduced by dL^ (as shown in Equation (4) below). An advantage of this “decay” of the Activity A AI is that the Activity A AI value is a measure of recent activity, rather than historical activity. Notably, the allowed range of Activity A AI values is between zero and L^. Constants Aj, dL^, dL^, 8A a , 8A A are set via the settings data file 410 and/or via the Graphical User Interface 418. N ¾ is the number of followers of the Twitter Account with Twitter ID K, which is included in the data provided 454 to the visualisation module 420 by the client stream manager 424 and/or in the data provided 446 to the visualisation module 420 by the client snapshot manager 414. The Side, Latitude, and Longitude properties of an Account are set via the settings data file 410 and/or via the Graphical User Interface 418, and are not updated.

Internal properties

The Location L AI of Account A\ glyph is initially set to be a random location within the visualisation space, i.e. a random location subject to the constraint {-x + , -y + , -z + ] < L AI < {x + ,y + ,z + }, where x + ,y + ,z + are set via the settings data file 410 and/or via the Graphical User Interface 418.

The Account Ai glyph is initially stationary - i.e. the Velocity V Al is initially set to be a zero-valued vector {0, 0, 0}.

Upon every update event (i.e. every dί), the Location L AI and Velocity are updated via equations based on Newton’s laws of motion (see equations (6) and (7) below, where is the three dimensional force acting on Account glyph Ai). In equation (7), the mass of each glyph is presumed to be equal to unity, and is thus not shown. In the present example, the Velocity is computed first and the updated Velocity value is used to compute the Location L Ar Alternatively, the Location L AI is computed first using the previous Velocity value (the initial value or the value computed upon the previous update event).

L AI = L AI + StV A] (6) V A , = V A , + St F AI (7)

The Force acting on Account Ai glyph has a number of components: i. An equilibrium mode dependent component (M X/ ) that is elaborated on in the following section. ii. A damping component (Damp^) that reduces the current Account A\ glyph Velocity iii. A repulsion component (Rep^) that repels the Account A\ glyph from other Account glyphs. The magnitude of the repulsion component depends on the properties of Account glyph Ai and on properties of other Account glyphs. Specifically, the magnitude of the repulsion of Account A\ glyph from Account AL glyph depends on: a. The Distance r AlL between the glyph associated with the Account A\ and the glyph associated with the Account AL. The lesser this Distance r AlL , the stronger the repulsion. The repulsion component is non-zero only if Distance r AjL is below a computed threshold ( R Ai ). b. The Diameter D AI of the glyph associated with the Account Ai (and thus indirectly on the number of followers N A/ of Account Ai). The greater this D A the stronger the repulsion. c. The Activity A AI of account AI. The greater this A Ai , the stronger the repulsion.

The effect of the damping component Damp^ is that an Account glyph experiences damping (deceleration) such that the glyph does not excessively accelerate and the glyph’s motion is sufficiently slow for users to be able to visually track an individual glyph over time. The effect of the repulsion component Rep^ is that Account glyphs that are nearby each other are repelled such that Account glyphs do not overlap and users can observe all glyphs simultaneously. Further, since the repulsion component Rep^ increases with increasing number of followers N A/ of Account Ai or increasing Activity A AI of account Ai, glyphs associated with more active (or more popular - as defined by N A/ ) Accounts experience stronger repulsion from other Account glyphs. Accordingly, glyphs associated with more active (or more popular - as defined by N A/ ) Accounts make more space for themselves and their related social media entity glyphs (e.g. User or Tweet glyphs - see further sections for more details) in the visualisation space, which allows them to be more easily seen by the user on the client device 102. The effect of the mode dependent component M L/ is described in further detail in sections below.

The formulae for computing the Force F A/ are shown in equations (8), (9), and (10) below. In the formulae below, n AlL is a unit vector pointing from the glyph associated with Account Ai to the glyph associated with the Account AL, and * 4 is the set of Twitter IDs of all Tracked Twitter Accounts. Constants R^, R2, R A ,g A , e A are set via the settings data file 410 and/or via the Graphical User Interface 418.

Ϊ A , = M A , + Damp^ + Rep^ (8)

1 0, otherwise

(9) R AI = min( . K ¾ + ¾ L Ai ) (10)

The diameter /)^ of Account Ai glyph is initially set to a value that depends on the popularity of the Account Ai. In the present example, this popularity is measured via the number of followers of Account Ai (N L/ ). The formula for setting diameter D AI is shown in equation (11) below. Notably, the diameter D AI has a minimum value of ¾. Constants ΐ> A , ΐ> A , ΐ> A are set via the settings data file 410 and/or via the Graphical User Interface 418.

The Colour C Al of an account glyph is initially set via the settings data file 410 and/or via the Graphical User Interface 418.

The Diameter D AI and the Colour C Al are not updated. Equilibrium modes

The equations governing M A/ depend on the enabled equilibrium mode. In the present example, a single equilibrium mode must is enabled for a visualisation, and no more than one equilibrium mode can be enabled a time. Equilibrium modes can modify the location of the glyphs. Equilibrium modes can further modify the equations of motion used forthe glyphs. In particular, when the glyph has an associated velocity, the velocity of the glyph is modified depending on the equilibrium mode. Different properties of the social media entity and its associated glyph are used to modify the velocity of the glyph. Some example equilibrium modes are:

• Default mode, in which glyphs associated with Accounts that have high Activity are attracted towards the origin (i.e. coordinates {0, 0, 0} of the visualisation space). Further, if a glyph associated with an Account Ai is located outside the pre-defined boundaries (as defined by {-x + , -y + , -z + ] < L AI < {x + ,y + ,z + }), the glyph is attracted back inside the boundaries. The above described features of M X/ for the Default mode are implemented via equations (12), (13), (14) shown below, which correspond to the x, y, and z components of the force respectively. Constants U A A are set via the settings data file 410 and/or via the Graphical User Interface 418. The notation used to denote the x (or y or z) component of the Location L AI is L XAI - corresponding notation is also used for x, y, z components of M X/ (e.g. M zL/ denotes the z-component of M L/ ). For each of equations (12), (13), (14), if neither of the two mutually-exclusive ‘if conditions’ are met, the corresponding component (i.e. component multiplied by M¾ is equal to zero.

• Side mode, in which glyphs associated with Accounts that have high Activity are attracted towards the origin (i.e. coordinates {0, 0, 0} of the visualisation three dimensional space). Further, a glyph associated with an Account Ai that has low (or zero-valued) Activity A AI is attracted to one of six planes that bound a cuboid centered on the origin, where the specific plane is determined by the value of Side S Al property of the Account Ai. In the present example, the above described features of M L/ for the Side mode are implemented via equations (15), (16), (17) shown below. Constants MJ, M a , Mji are set via the settings data file 410 and/or via the Graphical User Interface 418.

• Map mode, in which a glyph associated with an Account Ai is attracted to a point location in the x- y plane, where the point location is determined by the Latitude F Ai and Longitude & A; of the Account Ai. In the present example, the above described features of M L/ for the Map mode are implemented via equations (18), (19), (20) shown below. Constants Mjf, M A M A are set via the settings data file 410 and/or via the Graphical User Interface 418.

M zAl - 0, (20)

• Clockface mode, in which glyphs associated with Accounts that have high Activity are attracted towards the origin (i.e. coordinates {0, 0, 0} of the visualisation three dimensional space). Further, a glyph associated with an Account A\ that has low (or zero-valued) Activity A AI is attracted to a point location on the circumference of a circle in the x-y plane, where the circle is centered on the origin, and where the point location is determined by the Longitude & A; of the Account Ai. In the present example, the above described features of for the Clockface mode are implemented via equations (21), (22), (23) shown below. Constants U A A A are set via the settings data file 410 and/or via the Graphical User Interface 418.

• Sentiment mode, in which glyphs associated with Accounts that have high Activity are attracted towards a plane p A in the visualisation three-dimensional space, such as y = y + (or line if the visualisation space is two-dimensional). A glyph associated with an Account A\ that has low (or zero-valued) Activity A AI is attracted to a parallel plane p , such as y = -y + . Accordingly, the Activity A AI of Account A\ is represented via the glyphs distance from the above described planes.

Further, upon detection of a Mention MENKLI social media item, the content of tweet with Twitter ID L is processed and assigned a sentiment factor. In the present example, the sentiment factor is a numerical value. It may, for example, represent whether tweet with Twitter ID L relates to a positive or negative sentiment, on a scale from -1 to +1 (-1 representing negative sentiment, and +1 representing positive sentiment). The sentiment factor may also, for example, be a two- dimensional vector, and represent up to four sentiments such as: “love” {+1 , ...}, “hate” {-1 , ...}, “happy” {... , +1} and “sad” {... , -1}. In the present example, the sentiment factor is assigned an absolute value. In an alternative example, the sentiment factor is assigned a value that is relative to previously computed sentiment factors during the current client instance, during the current server instance, and/or for the present set of Tracked Twitter Accounts.

Depending on the sentiment factor of the tweet with Twitter ID L, the Account Ai glyph is attracted to one of one or more (up to four) “sentiment” planes perpendicular to plane p A . For example, if the sentiment factor of tweet with Twitter ID L is -0.83 (somewhat negative), the Account Ai glyph is attracted for a period of time towards plane x = -x + . Or for example, if the sentiment factor is {0.45, -0.71} (somewhat “love” and “sad”, the Account A\ glyph is attracted for a period of time towards planes x = x + , and z = -z + . Accordingly, the recent sentiment of Mentions MENKLI of Account Ai is represented via the A\ glyph’s distance from the above described “sentiment” planes. The above described features of M X/ for the Sentiment mode can be implemented via equations that are largely similar to equations (15)-(17) and that are obvious to a person skilled in the art.

Optionally, an equilibrium sub-mode, that affects the form of M X/ , is also enabled in addition to certain equilibrium modes. For example, a Cluster equilibrium sub-mode, governed by equation (24) below, can be enabled in addition to a Default equilibrium mode or in addition to a Side equilibrium mode. In the Cluster equilibrium sub-mode, glyphs associated with Accounts that engage with each other and/or are associated with each other are clustered together. The glyph associated with Account A\ is attracted to the glyph associated with Account AL via a force whose magnitude depends on the distance between the Accounts r AlL (the greater this distance, the greater the force), and on the extent to which the Accounts engage with each other and/or are associated with each other (as denoted by the Clustering Coefficient C AIL in equation (24) below). Thanks to the magnitude of the force increasing with increasing r AlL , initially distant Account glyphs cluster after only relatively few update events. C AlL is initially set to zero, and increases, for example, if Account A\ mentions Account AL, or if Account A\ retweets a Tweet posted from Account AL, or if Account Ai and Account AL are mentioned in the same Tweet, or if a Tweet from Account Ai and a Tweet from Account AL are retweeted by the same User. As described with reference to the Activity K Av Clustering Coefficient C Alh has a prescribed maximum value (that is set via the settings data file 410 and/or via the Graphical User Interface 418), and Clustering Coefficient C AlL “decays” with visualisation time t, such that the clusters represent recent inter-Account engagements and/or associations. Variables r AlL n AlL , and * 4 in equation (24) are defined above. The M X/ component following the “=” sign below is used to denote the equilibrium mode dependent force component resulting from the enabled equilibrium mode (excluding the sub-mode), whereas the M X/ component preceding the “=” sign below is used to denote the mode dependent force component resulting from both the enabled equilibrium mode and the enabled equilibrium sub-mode. Although the constants notation y[ A A M A M A used in equations (12)-(23) above somewhat overlaps (e.g. Mjf is present in equations for all four modes), this should not be taken to mean that the same numerical values of the constants are used across the different modes. In the present example, the numerical values of MJ, M A , Mjj, stored in the settings data file 410 may be different for each equilibrium mode. The Colour property and, when set, the Side, Latitude, and/or Longitude properties of an Account entity, can enable a user to instinctively identify group(s) the Account belongs to, based on the colour and the equilibrium location (as dictated by the equilibrium mode and optionally sub-mode) of the corresponding glyph. For example, if the Tracked Twitter Accounts are accounts of Members of Parliament (MPs) of United Kingdom and the Side equilibrium mode is used, party affiliation is presented via the Colour property of the Accounts (e.g. #FF0000 (red) for Labour MPs, or#2F00FF (blue) for Conservative MPs), and the ideology of the MPs is presented via the Side properties of the Accounts (e.g. (right) for right-wing MPs, orS* (left) for left-wing MPs). Or, for example, if the Tracked Twitter Accounts are accounts of media outlets’ international correspondents and the Map or Clockface equilibrium mode is used, media outlet affiliation is presented via the Colour property of the Accounts (e.g. #FFFFFF (white) for BBC correspondents, or #FF8D00 (orange) for Al Jazeera® correspondents), and the geographic location of the correspondents is presented via the Longitude and Latitude properties of the Accounts (for the Map mode) or the Longitude property of the Accounts (for the Clockface mode), where the Longitude and Latitude properties of an Account correspond to a geographical location of related to the Account (e.g. the geographic location where the correspondent is based). As a result of allowing a user to instinctively identify group(s) the Account belongs to, very little or no textual contextualisation is required, which frees up screen-space and makes the visualisation language independent (and thus accessible to a greater number of end users). Moreover, since the user can instinctively identify group(s) of Accounts, a greater number of Accounts can be displayed to the user at a time without making it difficult to identify a particular Account, as the user is able to initially locate a group of Accounts and subsequently “zoom-in” on the Account of interest.

As described in further detail below, when the Map mode is enabled, glyphs associated with Accounts with greater Activity values have a higher brightness than glyphs associated with Accounts with smaller Activity values, and vice versa.

Accordingly, every allowed equilibrium mode incorporates a visual indication of which Accounts are currently the most active, which often corresponds to the Accounts that are of the most relevance to the user of the client device 102. The visual indication for more active Accounts is for example: a central Location, increased brightness, and/or increased opacity. All these visual indications are intuitive and easily understandable to the user. Further, since the Activity value is updated upon detection of relevant social media items and “decays” with time, the visual indications are effectively updated in real-time. Hence, the user need not determine which Accounts may be the most relevant, and the user is presented with intuitive visual indication of the real-time most relevant Accounts. The most relevant Accounts are dynamically determined by the visualisation module 420 and their properties are appropriately updated to provide a visual indication to the user of the client device 102.

Destruction

Account entities and their associated glyphs are not destroyed while the client instance 402 is running. Account entities and their associated glyphs are destroyed, for example, when the connection between the client device 102 and the web server 104 is terminated.

Tweet T

Creation

In the present example, a Tweet entity T (and a corresponding glyph) is created when a social media item of type Tweet TWEJI (type 1) is detected and the related data is provided 510 to visualisation module 420.

Properties

The external and internal properties of a Tweet entity T are shown in table 5 and table 6 respectively.

Table 5

The Activity A T is a measure of how active the Tweet entity T is. Further details of how Activity A T is computed are described in the sections below. In the present example, the data type of Activity A T is float.

The Number of Retweets W r is a count of the number of times Tweet T has been retweeted in the current client instance 402 and/or in the current server instance 404. Further details of how Number of Retweets W r is computed are described in the sections below.

The Parent Account ID P r is the Twitter ID of the Tracked Twitter Account that posted Tweet T .

As described with reference to the Number of Mentions W Al of an Account Ai, the preferred data type of the Number of Retweets W r , and of the Parent Account ID P r properties is int, but a number of alternative data types would be suitable.

Table 6

Further details of the internal properties of a Tweet T are described above with reference to the corresponding Account properties. A Tweet T internal property with the same name as an Account A\ internal property has the same characteristics.

As described with reference to the corresponding Account properties, a number of alternative data types could be used for the Activity, Location, Velocity, Diameter, and Colour properties of a Tweet T . Setting and updating of properties External properties The Activity A T of a Tweet T is initially set to zero. Upon detection of a social media item related to Tweet T , Activity A T is increased. Equation (25) below corresponds to the formula used for updating Activity A T upon detection of a Retweet RETKJI social media item. Similarly to the Activity A AI of an Account Ai, the Activity A T of a Tweet T is reduced by 6A“ upon every update event (i.e. every 6t) as shown in Equation (26) below, and the Activity A T of a Tweet T has an allowed range of values between zero and A g . Constants A g , 6A“ , dA g are set via the settings data file 410 and/or via the Graphical User Interface 418. L T] = min(A , (25)

A Tj = piac( 0.0, (26)

The Number of Retweets W r of a Tweet T is initially set to zero. Upon detection of a Retweet RETKJI social media item, the Number of Retweets W r is incremented by 1 as shown in equation (27) below. W T = W T + 1 (27)

The Parent Account ID P r of a Tweet T is initially set to the Twitter ID of the Tracked Twitter Account from which the Tweet T was posted. For Tweet T created upon detection of a social media item of type Tweet TWEJ I (i.e. a Tweet with Twitter ID J from Tracked Twitter Account with Twitter ID I), the Parent Account ID P r is initially set to the Twitter ID / of the relevant Tracked Twitter Account (as shown in equation below).

P T j (28)

The Parent Account ID P r is not updated.

Internal properties The internal properties of a Tweet T are set and updated in an identical manner to the internal properties of an Account Ai described above, except where explained below, and the same property symbols are used to refer to equivalent properties.

The Diameter D r of a Tweet T glyph is set via the settings data file 410 and/or via the Graphical User Interface 418. A glyph associated with a Tweet T is attracted towards the glyph associated with the Account A PT that posted the Tweet. More specifically, a Tweet T glyph is attracted to a sphere (or ring in 2-D) of radius R Tj around the Location of Account A PT glyph. Further, the glyph associated with Tweet T is subjected to an acceleration term if it is within a distance of R P of the sphere of radius R Tj around Account A PT glyph, or within the sphere of radius R Tj around Account A P glyph, and the glyph associated with Tweet T is subjected to a deceleration (damping) term otherwise. An advantage of the Tweet T glyph experiencing acceleration when it is near Account A P is that allows Tweet T glyph to overshoot the Location of Account

A P upon its approach. Accordingly, the Tweet T glyph is in constant motion around the Location of Account A PT , and multiple Tweets with the same Parent Account can be easily discerned by the user on the client device. The radius R r increases with increasing Tweet Activity A T (up to a maximum value of R p ). Hence, glyphs associated with more active Tweets are in motion further from the Location of their Parent Account glyphs than glyphs associated with less active Tweets.

In more detail, the three dimensional force acting on the glyph associated with Tweet T (F r ), which is used to update the Velocity V r via an equation equivalent to equation (7), has two main components: i. A damping component (Damp T/ ) that reduces or increases the current Tweet glyph Velocity V Tj . The current Velocity V Tj is decreased when the Distance T TJPT between the glyph associated with Tweet T and the glyph associated with “parent” Account A PT is greater than a certain threshold (R r + flf), and the current Velocity V r is increased otherwise. This threshold distance increases with increasing Tweet Activity A T/ (up to a maximum threshold distance value of R p + R P ). Accordingly, the greater the Tweet Activity L G , the greater the threshold Distance T TJPT at which the current Tweet T glyph Velocity V Tj is reduced rather than increased. The magnitude of the acceleration/ deceleration is independent of the exact

Distance r T above or below the threshold distance, and the magnitude remains constant

1 within each respective scenario (above or below the threshold distance). ii. An attraction component (Att T/ ) that attracts or repels a Tweet T glyph to or from the glyph associated with “parent” Account A P . The glyph associated with Tweet T is attracted towards Account A P 1 glyph when the Distance r T between the glyph associated with Tweet T and J J Tj the glyph associated with “parent” Account A PT is greater than a certain threshold (R Tj ), and the glyph T is repelled from glyph A P when the Distance is lesser than that same threshold ( R Tj ). If the Distance T TJPT is equal to R Tj , the magnitude of the attraction/repulsion force component Att T/ is zero. The threshold distance for attraction/repulsion increases with increasing Tweet Activity A T/ (up to a maximum threshold distance value of R p ). Accordingly, the greater the Tweet Activity A Tj , the greater the threshold Distance r TjPT at which the T glyph is attracted to the A p glyph rather than repelled from it. The magnitude of the

T J attraction/repulsion increases linearly with increasing Distance r T above or below the

1 T J threshold distance R Tj .

The formulae for computing the Force ¥ Tj are shown in equations (32), (33), (34), and (35) below.

In the formulae below, n T is a unit vector pointing from the glyph associated with Tweet T to the glyph

1 T J associated with Account A P . Constants e p , e p g t are set via the settings data file 410 and/or via the Graphical User Interface 418.

F Tj = Damp /y + Att fiy (32)

Destruction

Tweet entities and their associated glyphs are, under certain conditions, destroyed while the client instance 402 is running. Specifically, if the number of Tweets with a given Parent Account ID exceeds a prescribed threshold, then the oldest of these Tweets and its associated glyph are destroyed. This prescribed threshold is set via the settings data file 410 and/or via the Graphical User Interface 418.

Further, Tweet entities and their associated glyphs are destroyed, for example, when the connection between the client device 102 and the web server 104 is terminated.

Reply Rj Creation

In the present example, a Reply entity R (and a corresponding glyph) is created when a social media item of type Reply REPJ I (type 2) is detected and the related data is provided 510 to visualisation module 420.

Properties

The external and internal properties of a Reply entity R are shown in table 7 and table 8 respectively. Table 7

The End Location E RJ is a three-dimensional vector that is used for updating the Location L RJ of the glyph associated with Reply R . Further details of how it is used for this purpose are described in the sections below.

Table 8

Further details of the internal properties of a Reply R are described above with reference to the corresponding Account properties. A Reply R internal property with the same name as an Account Ai internal property has the same characteristics.

As described with reference to the corresponding Account properties, a number of alternative data types could be used for the Location, Diameter, Colour, and End Location (for which the appropriate data types are the same as those for and Account Location) properties of a Reply R . Setting and updating of properties

External properties

In the present example, as described above with reference to the Location L AI of an Account glyph, the End Location E K/ of a Reply glyph is initially set to be a random location subject to the constraint {— x + , — y + , — z + } < E RJ < { x + ,y + ,z + }. The End Location E RJ is not updated.

In an alternative example, if the Map or Clockface equilibrium mode is used, and the Reply R is created upon detection of a Reply with Twitter ID J from Tracked Twitter Account with Twitter ID I to a tweet with Twitter ID M posted from account with Twitter ID N, the End Location E RJ is set to a geographic location related to account with Twitter ID N. Internal properties

The Location L RJ of a Reply glyph is initially set to the Location L AI of the Account glyph associated with the Twitter Account with Twitter ID I that posted the Reply REPJI, as shown in equation (36) below.

L RJ = L A , (36)

Upon every update event (i.e. every 6t), the Location L RJ is updated based on equation (37) shown below. The Reply R is attracted to its End Location E K/ . The magnitude of this attraction depends on a scalar whose value oscillates (with respect to visualisation time t) between values of 6t (L R + L R ) and 8t(L R - L r ). This oscillation is achieved via the sine function present in equation (37). In equation (37) below, constants L R , L R , L C R are set via the settings data file 410 and/or via the Graphical User Interface 418, and are subject to the constraint L R > L R .

Since, a Reply R typically has a relatively short lifetime between creation and destruction (see sections below for further details of conditions under which Replies are destroyed), the dynamics (implemented via equation (37)) are designed to attract attention of a user on client device 102. User attention is attracted, for example, via a fast departure of the glyph associated with Reply R from its initial Location (the Location of the parent Account Ai) followed by some degree of oscillations before the Reply R is destroyed.

The Colour C R , and Diameter D RJ of a Reply glyph are initially set via the settings data file 410 and/or via the Graphical User Interface 418. The Colour C R , and Diameter D RJ are not updated.

Destruction

Reply entities and their associated glyphs are, under certain conditions, destroyed while the client instance 402 is running. Specifically, if the glyph associated with a Reply R comes within a prescribed distance of the Reply End Location E R then the Reply and its associated glyph are destroyed. This prescribed distance is set via the settings data file 410 and/or via the Graphical User Interface 418.

Further, Reply entities and their associated glyphs are destroyed, for example, when the connection between the client device 102 and the web server 104 is terminated.

User UK Creation

Referring to Figure 7, an example method for 700 of creating a User social media entity U k (and a corresponding glyph) is shown.

A social media item related to Twitter Account with Twitter ID K is detected 702 (e.g. a social media item of type Retweet RETKJI (type 3) or of type Mention MENKLI (type 4)) and the related data is provided 510 to visualisation module 420. Then, a determination 704 is made whether a User U k exists (e.g. whether User U k has been created and has not been destroyed).

If the answer to determination 704 is “NO” - i.e. User U k does not exist, a User U k is created 706.

Subsequently, an entry is added 708 to Parent IDs P^ (an external property of User U k ). This step is described in further detail in sections below.

If the answer to determination 704 is “YES” - i.e. User U k does exist, step 706 is skipped, and an entry is added 708 to Parent IDs P^.

For example, if a User social media entity U k (and a corresponding glyph) exists and further Retweet social media items related to (un-tracked) Twitter Account with Twitter ID K are detected, such as RETKI2 or RETK3 4 (corresponding to a Retweet, by account with Twitter ID K, of tweet with Twitter ID 1 posted from Tracked Twitter Account with Twitter ID 2; or a Retweet, by account with Twitter ID K, of tweet with Twitter ID 3 posted from Tracked Twitter Account with Twitter ID 4), no additional User entities U k (and a corresponding glyphs) are created.

In an alternative example, distinct types of entities (with possibly different properties and rules for updating properties) are created for each social media item type. For example, distinct Usen and User å entities are created for Retweet RETKJI and Mention MENKLI social media items.

Properties

The external and internal properties of a User entity UK are shown in table 9 and table 10 respectively.

Table 9

The Home Location is a three-dimensional vector that is used for setting and updating of the Location L UR of the glyph associated with User UK. Further details of how it is used for this purpose are described in the sections below.

The Last Activity Time T UR stores the wall clock time t wc at which the latest (most recent) social media item related to User Uk was detected.

In the present example, social media items related to User UK are either of type Retweet RETKJI or of type MENKLI. In the present example, the data type of Last Activity Time T UR is time.

In an alternative example, the Last Activity Time stores the absolute time (including date and time) at which the latest (most recent) social media item related to User Uk took place on the social media network (in the present example, Twitter). The time at which the social media item took place (e.g. time at which Tweet was posted) is included in the data provided 510 to the visualisation module 420. The Random Number F UK is a random number that is used for updating the Location L UR of the glyph associated with User UK. Further details of how it is used forthis purpose are described in the sections below.

The Parent IDs P UR is a queue of maximum count/length of Pj, where Pj is set via the settings data file 410 and/or via the Graphical User Interface 418. Parent IDs P UR is used to store the social media network unique IDs (in the present example, Twitter IDs) of social media entities related to the detected 702 social media items. In the present example, when a Retweet RETKJI social media item is detected, P UR stores Tweet Twitter ID J; and when a Mention MENKLI social media item is detected, P UR stores Account Twitter ID I. New entries are added at the beginning of the queue P UR (at index 0) and the remaining entries (if any) are shifted right (their index is incremented by 1). If the number of entries in P UR reaches and a new entry is to be added, the oldest entry (i.e. the entry at index (Pj - 1)) is removed from the queue P Ur .

In the present example, metadata related to each Parent (i.e. each entry in Parent IDs) is stored on the client instance. This metadata includes data related to the entity type of each Parent.

In an alternative example, when a Retweet RETKJI social media item is detected, P UR stores Account Twitter ID I. In a yet further alternative example, P UR is an array, vector or any other suitable data structure that would be obvious to a person skilled in the art.

The Live Parent Index Q UR is used for updating the Location L UR of the glyph associated with User UK. It determines which Parent social media entity (e.g. Tweet or Account), the User is attracted to upon the next update event (N.B. this attraction only occurs if certain conditions are met). Further details of how it is used for this purpose are described in the sections below.

As described with reference to the Parent Account ID Tweet property, a number of alternative data types could be used for the Live Parent Index and the entries in Parent IDs properties of a User UK. In the present example, a single set of external properties is used for all types of detected 702 social media items. For example, T UK the time at which the latest (most recent) social media item of any type related to User U k was detected 702.

In an alternative example, separate sets of external properties are used for each type of detected 702 social media items. For example, a User UK stores separate T UR values for the most recent social media items of each social media item type (possibly as part of a vector T^).

Table 10

Further details of the internal properties of a User UK are described above with reference to the corresponding Account properties. A User UK internal property with the same name as an Account Ai internal property has the same characteristics.

As described with reference to the corresponding Account properties, a number of alternative data types could be used for the Location, Diameter, Colour, Random Number (for which the appropriate data types are the same as those for a component of an Account Location), and Home Location (for which the appropriate data types are the same as those for an Account Location) properties of a User UK.

Setting and updating of properties

External properties

In the present example, as described above with reference to the Location L AI of an Account glyph, the Home Location of a User glyph is initially (upon creation of User UK) set to be a random location subject to the constraint {-x + , -y + , -z + } < H B|f < {x + ,y + ,z + }.

The Home Location H B|f is not updated.

The Last Activity time T UK is set/updated to the wall clock time t wc upon detection of social media item related to Twitter Account with Twitter ID K, for both the very first detected social media item and any further detected social media items. The Random Number is initially set to be a random number subject to the constraint 0 < <

1.

The Random Number is not updated.

The Parent IDs P^ is set and updated according to the rules described above with reference to Parent IDs P^. When a social media item related to Twitter Account with Twitter ID K is detected, an entry is added at index 0 of P^ . For example, when a Retweet RETKJI social media item is detected, entry J is added at index 0 of P^ .

The Live Parent Index is initially set to zero. Subsequently, every Qg seconds, the Live Parent Index is incremented along the Parent IDs P„ K queue. Once the Live Parent Index reaches the end (maximum length) of P^, the index is reset to zero. The above described features are implemented via equation (43) shown below. Constant Qg represents the time interval between Live Parent Index updates, and it is set via the settings data file 410 and/or via the Graphical User Interface 418. Preferably, Qfi is subject to the constraint Qfi > St, yet more preferably Qg » St.

In an alternative example, Qg is not a constant, but is indirectly derived. For example, the visualisation module 420 may periodically evaluate a sinusoid ( e.g. sin (Q t)), and update the Live Parent Index only if the evaluation returns a positive value.

0, otherwise

(43)

Internal properties

The Location L UK of a User UK glyph is initially set to the User’s Home Location H B|f . Upon every update event, the Location L UK is updated as follows.

If the time since the Last Activity time T UK (i.e. t wc - T Uk ) is below a pre-defined threshold Tg - if a social media item related to Twitter Account with Twitter ID Kwas “recently” detected, the User UK glyph is attracted to the Location of the Live Parent. The Live Parent is defined as the glyph associated with the entry in Parent IDs P UK at index Q^. Further, a noise component (see e.g. component starting at a in equation (45)) is added to the Location L UK of a User UK glyph in order to achieve a pseudo-orbiting motion of the User UK glyph around the Location of the Live Parent. The noise component is scaled by a value that is related to the popularity of the Live Parent within the social media network. The noise component is optionally time-dependent, and it optionally depends on the Random Number G^.

If the time since the Last Activity Time T UR is greater or equal than Tg , the User UK glyph is attracted towards the Home Location H ¾ .

Tu is set via the settings data file 410 and/or via the Graphical User Interface 418.

For example, if the Live Parent of User UK is a Tweet, equations (45)-(46) are used to update the Location L ¾ . In this case, the above-described scalar applied to the noise component is the Number of

Retweets [Qv ] of the Live Parent Tweet. In equations (45)-(46) below, constants L¾, L¾, Lg, L¾, L e u , L{, are set via the settings data file 410 and/or via the Graphical User Interface 418, and / is a three-dimensional vector equal to {1,1,1}.

Or, for example, if the Live Parent of User UK is an Account, the same equations (45)-(46) can be used to update the Location of User UK, with the exceptions that: the User UK glyph is attracted to the Location of the Live Parent Account glyph (rather than the Live Parent Tweet glyph as described above), and the scalar applied to the noise component is the Number of Mentions k ] of the Live

Parent Account (rather than the Number of Retweets of the Live Parent Tweet). Alternatively, the noise component may be scaled by any other Live Parent property related to the Parent’s popularity, such as the Activity of the Live Parent Tweet/Account. In the present example, a visual indication is provided on display 216 of client device 102, via the viewer module 422, to denote the social media entity type of the Live Parent of User UK. For example, User glyphs for which the Live Parent is of type Tweet have a trail behind them, and User glyphs for which the Live Parent is of type Account do not.

When observed over a longer time period (spanning multiple time periods Q and multiple time steps St), the motion of a glyph associated with an ‘active’ User UK (a User for which the time since the Last Activity time T UR is below a pre-defined threshold for some or all of the update events in the longer time period of observation) is as follows. The User UK glyph circles between the Locations of its Pj most recent Parents (as stored within Parent IDs P^). If the User UK becomes ‘inactive’, the glyph associated with User UK drifts towards its Home Location H B(( . The Colour C Uk , and Diameter D UK of a Reply glyph are initially set via the settings data file 410 and/or via the Graphical User Interface 418.

The Colour C Uk , and Diameter D UK are not updated.

Destruction

In the present example, User entities and their associated glyphs are, under certain conditions, destroyed while the client instance 402 is running. Specifically, if the total number of Users exceeds a prescribed threshold, then the User UK with the oldest Last Activity Time T^ and its associated glyph are destroyed. The total number may refer to a total number per Parent entity, and/or a total number of Users in the current client instance; with one or more prescribed thresholds, which are set via the settings data file 410 and/or via the Graphical User Interface 418. Further, User entities and their associated glyphs are destroyed, for example, when the connection between the client device 102 and the web server 104 is terminated.

Preferably, if the number of Users with the same Parent Px exceeds a prescribed threshold (which is set via the settings data file 410 and/or via the Graphical User Interface 418), entry Px is removed from Parent IDs of the Users. The indexes of the entries in Parent IDs of each User with an index greater than that of the entry corresponding to Px are decremented (if any such entries exist). If no such entries exist, the Live Parent Index of each User is setto zero. Glyphs associated with Users forwhich social media entity Px was their Live Parent at the time when it was removed from their Parent IDs are no longer attracted to the glyph associated with the social media entity Px and are in turn attracted to the glyph associated with their new Live Parent or to their Home Location. Such glyphs appear to “shoot off’ from the Location of the glyph associated with social media entity Px, and so provide a visual indication to the user on the client device 102 that the number of Users with the Parent Px has exceeded a prescribed threshold. Glyphs associated with Users whose Last Activity Time is greater or equal than T^ and/or whose Parent IDs is empty are attracted to their Home Location. Optionally, the brightness of a glyph associated with User UK is reduced or set to zero if the glyph comes within a prescribed distance of its Home Location H B|( .

Graphical User Interface

In the present example, the user on the client device 102 can click a glyph to view the information related to the social media entity corresponding to the glyph. This information includes some or all of the external and/or internal properties of the social media entity, and/or additional metadata related to the social media entity (such as name of account for an Account social media entity, or time of posting of the tweet/reply for a Tweet/Reply social media entity) that may include hyperlinks to further information related to the social media entity. Optionally, this information is displayed in a text box that is fixed in Location relative to the glyph (i.e. it moves with the glyph). Optionally, the user may select, via the GUI 418, whether the text box is fixed in absolute Location (e.g. stationary in the bottom left corner of the screen) or fixed in Location relative to the clicked glyph.

In the present example, the Activity of an Account and/or Tweet can be (if such a selection is made via the GUI 418 and/or the settings data file 410) visually represented by brightness and/or opacity of the corresponding glyph (e.g. increasing brightness or increasing opacity with increasing Activity). This option is enabled by default if the Map equilibrium mode is used (as the Map mode is the only mode for which the force M L/ does not depend on the Activity A^of the Account). More specifically, when the Map mode is enabled, by default glyphs associated with more active Accounts have a higher brightness than glyphs associated with less active Accounts, and vice versa. In an alternative example, the Activity of an Account and/or Tweet can be (if such a selection is made via the GUI 418 and/or the settings data file 410) visually represented by a change in the Diameter and/or the Colour of the corresponding glyph (for example, Glyphs associated with more active Accounts have a greater diameter and/or darker colour than glyphs associated with less active Accounts.).

In the present example, the user can select (e.g. via the GUI 418) a single entity or a group of entities (in particular, an Account or Accounts) whose brightness and/or opacity is increased with reference to other (un-selected) Accounts. Accordingly, a user may more easily track the behaviour of a single entity or a group of entities.

The user can also request, via the GUI 418, for explicit labelling of the visualisation space with the meaning associated with one or more points, lines, planes, and/or any other regions of some significance in the visualisation space. For example, if the Map mode is enabled and the user requests labelling, the geographical coordinates are displayed (e.g. via longitudinal and latitudinal lines spaces at 10 degrees). Or, for example, if the Side mode is enabled and the user requests labelling, each of the one or more (up to six) cuboid planes is annotated with its meaning (if any is defined), such as “right-wing” or “left-wing”.

Optionally, entities are ranked by one or more of their properties, and metadata related to the top and/or bottom ranked entities is displayed on the display 206 of the client device 102. The user can select whether to display this metadata or not via the GUI 418. For example, Accounts are ranked by their Activity values, and a table of the top 5 Accounts with the greatest Activity value is displayed in the bottom right corner of the display 206.

Referring to Figure 8, an example GUI 418 is shown. Via the use of standard GUI features such as expand buttons 804, collapse buttons 802, input textboxes 806, or checkboxes 808, the user of the client device 102 can modify and/or access features of the visualisation as described above. For example, as shown in Figure 8, the user can modify the ‘Activity decay rate’ (i.e. dL^ in equation (4)) via input textbox 806, or enable/disable explicit labelling of the visualisation as described above via checkbox 808.

Further features ‘Trending’ hashtags

In the present example, the text of social media items related to the Accounts (or preferably, related to Accounts with Activity values greater than a prescribed threshold, where the threshold is set via the settings data file 410 and/or via the Graphical User Interface 418) is analysed to extract hashtags within the text. A ‘trendiness’ factor is then assigned to each extracted hashtag, and the hashtags with the greatest ‘trendiness’ factors are displayed on the client device 102 via the GUI 418. The ‘trendiness’ factor of a hashtag may, for example, be based on the Activity values of the Accounts associated with the social media items that contain the hashtag, and/or the number and/or sentiment of the replies, retweets and/or likes of the social media items that contain the hashtag. Other phrases or tags may also be used. The trendiness factor is indicative of a popularity of the phrase, tag, or hashtag within the data (or items).

Exemplary visualisations

Figures 9 to 15B show screenshots of visualisations displayed on display 216 of client device 102.

Glyphs in Figures 11 to 15B are labelled (e.g. ‘A’ for Account glyphs, ‘U’ for User glyphs, T for Tweet glyphs, and ‘R’ for Reply glyphs) so that the static Figures can be more easily interpreted, in particular when presented without colour. Such labels would typically not be included in the visualisations.

Figures 9 to 12 show snapshots of exemplary visualisations obtained using the systems and/or methods described above. The visualisations comprise thousands of glyphs and were run on modest hardware of a standard personal computer. Considering the ubiquity of social media network use and the fast rate of information spread in such networks, the visualisations provide insight into real-life events in real-time. Further, the data used for the visualisations is directly sourced from social media network API(s) and as such the visualisations have a very low latency and can often provide insights to the user faster than possible via traditional media outlets (such as the BBC website etc.).

Referring to Figures 9 and 10, visualisations for which the Side equilibrium mode is enabled are shown. The Tracked Twitter Accounts are Twitter accounts of UK Members of Parliament (MPs). The party affiliation of the MPs is presented via the Colour property of the Accounts (e.g. #FF0000 (red) for Labour MPs, or #2F00FF (blue) for Conservative MPs), and the ideology of the MPs is presented via the Side property of the Accounts (e.g. S+ (right) for right-wing MPs, orS (left) for left-wing MPs). Figure 9 was taken at 8:39pm UK time on the 10 th of September 2019, whereas Figure 10 was taken at 2:53pm UK time on the 13 th of September 2019.

In addition to the real-time insights that can be drawn from the visualisations as described above, visualisations at spaced apart times can be used to obtain insight into longer term trends. For example, Figure 10 shows a considerably greater amount of Account glyphs (represented by the largest glyphs) near the origin than shown in Figure 9, which suggests that Twitter activity among the Tracked Twitter Accounts was greater at the time Figure 10 was taken. Further, the trending hashtags are updated in real-time and differ between the two visualisations shown in Figure 9 and in Figure 10, which gives an indication to the user as to what the activity of the Tracked Twitter Accounts is related to.

Figure 9 further shows information 902 related to the entity corresponding to the glyph the user on the client device 102 has clicked. By example only, the entity is the Twitter account of MP Michael Gove. Moreover, Figure 9 shows button 904 which the user can click to open the GUI 418.

Referring to Figure 11 , a visualisation for which the Map equilibrium mode is enabled is shown. The Tracked Twitter Accounts are Twitter accounts of International Airlines. The geographic location of the Airlines’ headquarters is presented via the Longitude and Latitude properties of the Accounts, and the Airline identity is presented via the Colour property of the Accounts (e.g. #1317ed (dark blue) for British Airways ®). An example insight that can be obtained from Figure 11 is that Airlines with headquarters in Western Europe are particularly active on Twitter at the time when Figure 11 was captured. Accounts associated with such Airlines have a greater Activity value and as such their corresponding glyphs have an increased brightness. Conversely, Accounts associated with North American airlines are less active (which to some extent is due to the time difference between the two regions). Once again, the trending hashtags (e.g. #ThomasCook) give an indication as to the present-time important events/phenomena in the world of international airlines.

Referring to Figure 12, a visualisation for which the Clockface equilibrium mode is enabled is shown. The Tracked Twitter Accounts are Twitter accounts of CNN and BBC reporters. The geographic locations where the reporters are based are presented via the Longitude property of the Accounts (depending on the value of the Longitude property of an Accounts, its corresponding glyph is attracted to a particular point on the circumference of a circle centred on the origin), and the media outlet affiliation of the reporters is presented via the Colour property of the Accounts (e.g. #FF0000 (red) for CNN® reporters, or #FFFFFF (white) for BBC reporters). Similarly to the above described example visualisations, insights into important real-time events can be obtained from the snapshot of the visualisation shown in Figure 12.

Figure 12 further shows explicit labelling 1202 of the visualisation space with the meaning associated with certain points in the visualisation space. By example only, the points corresponding to longitudes of 0°, 90°W, 180°, 90°E are labelled. Accordingly, if the glyph associated with Account Ai lies on a line between the origin and a labelled point, the Account A\ typically has a similar Longitude & A; to that shown by the labelled point (this is of course not always the case as Account glyphs are subjected to a number of additional, not Clockface mode-dependent, forces).

Figures 9 to 12 show static snapshots of the visualisations, whereas the visualisations are in fact dynamic. Accordingly, in addition to the above described insights that can be obtained from such snapshots, the visualisations provide further insights when observed over a period of time as described throughout the description above.

Figures 13A to 15B show some of the motion of the glyphs associated with social media entities as observed over a period of time, as defined by the above-described equations of motion.

Referring to Figures 13A and 13B, the orbital motion of Tweet glyphs around their corresponding Account glyphs is shown. Figures 13A and 13B were taken at times four seconds apart, with Figure 13A preceding Figure 13B. Centrally-located Account glyphs 1302 (represented by glyphs with label ‘A’) are orbited by Tweet glyphs (represented by glyphs with label T). The Tweet glyphs are in constant motion in the vicinity of Accounts (e.g. primarily to the right of the Account glyphs 1302 in Figure 13A, and primarily to the left of the Account glyphs 1302 in Figure 13B), and so draw the attention of the user, and are easily discerned from other glyphs. Further, the equations of motion used for Tweet glyphs ensure that the glyphs’ orbits around the Account glyphs are neither erroneously amplified (which would lead to the orbits eventually tending to an infinite radius), nor erroneously damped (which would lead to the orbits eventually tending to a zero radius).

Referring to Figures 14A and 14B, certain aspects of the motion of Account glyphs and User glyphs are shown. Figures 14A and 14B were taken at times eleven seconds apart, with Figure 14A preceding Figure 14B. Comparing Figures 14A and 14B, a number of aspects of the motion of Account glyphs and User glyphs can be seen, for example:

• Account glyph 1402 is further from the origin in Figure 14B than in Figure 14A, which suggests that the Activity of the Account associated with glyph 1402 has decreased in the time between when the two Figures 14A and 14B were taken. · Account glyphs 1404 (represented by the larger glyphs in circled region 1404) are relatively near each other in Figure 14A. As a result, Account glyphs 1404 repel each other (due to the repulsion force component (Rep^) described above), and Account glyphs 1404 are more spaced apart in Figure 14B.

• User glyph 1406 has two entity entries in its Parent IDs queue, which correspond to one of the Account glyphs 1404, and a Tweet glyph 1408 (located within region 1408) corresponding to a Tweet posted from an Account that has a lower Activity value. Accordingly, Figures 14A and 14B show the motion of the Userglyph 1406 to and from the glyphs associated with entities in its Parent IDs queue. Referring to Figures 15A and 15B, certain aspects of the motion of Reply glyphs are shown. Figures

15A and 15B were taken at times twelve seconds apart, with Figure 15A preceding Figure 15B. Comparing Figures 15A and 15B, a Reply R glyph 1504, created as a result of detection of a Reply REPJI social media item, moves away from Account Ai glyph 1502 and towards its End Location E R 1506 (marked on Figures 15A and 15B for demonstration purposes only). Subsequently (not shown), once Reply R glyph 1504 comes within a prescribed distance of its End Location E R , the Reply R and its associated glyph are destroyed. Accordingly, the limited client device 102 resources can be dedicated to more recent social media data (e.g. a more recent Reply RK and its associated glyph).

Representing the activity of thousands of (social media) entities by motion (of their associated representations (glyphs)) may lower the cognitive burden on the user and/or allow the user to process information in the visualisation without cognitive overload. In particular, the above-described methods employed by the visualisation module 420 may allow the user to easily and quickly identify: the most important (e.g. the most active) entities and/or the entities of interest to the user, and/or relationships between entities. This is particularly important considering the potentially very large number of entities whose associated representations are shown in the visualisation, and the often fast-changing trends in activity of entities in the dataset (which is highly relevant to social media datasets). For example, when the Default, Side, or Clockface mode is used, the glyphs associated with Accounts that have high Activity are attracted towards the origin (typically the default centre of the screen). Thus, the user does not need to move his head (or eyes) around the display to identify the current subset of the most active entities (in this example, Accounts with the highest Activity), which are instead displayed at, or near, the centre of the screen. Similarly, a glyph 604 associated with a Tweet is attracted towards and orbits the glyph associated with the Account that posted the Tweet, thus enabling easy identification of the relationship between the Tweet and the Account.

Other social media networks

As mentioned above, the present disclosure could be applied to a number of social media networks other than Twitter, such as Facebook®, Instagram®, Sina® Weibo®, QZone®, Tumblr®, Pinterest®, Linkedln®, YouTube®, Reddit®, Taringa®, Reneren®, or Foursquare®. In fact, the present disclosure could be applied to any social media network in which content is publicly shared amongst users and whose API’s are accessible to third-parties.

Example social media items and social media entities for an example in which the social media network is Facebook® are shown in Table 10 and Table 11 respectively below. Further examples of social media items include: a Like, by account with Facebook ID K, of post with Facebook ID J posted from Tracked Facebook Account with Facebook ID I; or a Reply, by account with Facebook ID K, to Comment with Facebook ID J from Tracked Facebook Account with Facebook ID I. The visualisation module 420 as described above with reference to Twitter would only need to undergo minor modifications to accommodate the use of Facebook® or any other appropriate social media network. For example, rather than counting the Number of Retweets of a Tweet T , the Number of Shares of a Post P would be counted instead. This and other such modifications would be obvious to a person skilled in the art. Table 10

Table 11

Alternative Examples and Embodiments A person skilled in the art will appreciate that many different combinations of embodiments and examples described with reference to Figures 1 to 15B may be used alone unmodified or in combination with each other.

As discussed above, the disclosure relating to Twitter and social media networks generally are provided by way of example only. The techniques described herein apply to other datasets. For example, the techniques described herein may be applied to design data (e.g. wherein entities relate to car designs, or electrical circuit designs). For example, a plurality of designs may follow the equations of motion described above with reference to Accounts, and sets of test data from implementations of these designs (e.g. in simulation or via physical experiments) may follow the equations of motion described above with reference to Tweets. The Activity of the design-related entities may thus be based on design/implementation properties/performance rather than social media properties. For example, the Activity may increase each time a set of test data is within the range of desired performance parameters (e.g. stiffness or strength for a car design, or cut-off frequency or quality factor for electric circuit design), and decay as described above such that more recent test data is prioritised over older test data. Thus, better designs may be discerned by a user from worse designs based on their associated representations motion (e.g. in the Default Mode, potentially better designs may be nearer the origin). Further, related designs (e.g. with similar desired performance parameters, or other properties) may be identified by a user based on their associated representations motion (e.g. in the Cluster sub-mode, related designs may be attracted to one another) - accordingly, the user may e.g. identify promising designs which are clustered together with other well performing designs (e.g. designs with a high Activity). The described examples of the invention are only examples of how the invention may be implemented. Modifications, variations and changes to the described examples will occur to those having appropriate skills and knowledge. These modifications, variations and changes may be made without departure from the scope of the claims.