Timeline

GSoC developers forum
danielb
Gephi Core Developer
Posts:3
Joined:06 Apr 2011 01:05
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable
Re: Timeline

Post by danielb » 15 Apr 2011 12:26

Hello all,

Following my proposition draft on the timeline I would like to share with you more in detail my proposal concening the timeline and your suggestions/feedback on it. 

Going from a top-down approch, a key feature in real life applications of dynamic graphs is time granularity, ie, the "resolution" of the time interval we see and work with. As Cezary pointed out, in a long time frame (with potentially large scale in time phenomena) there may be time intervals with interesting phenomena which are observable only in a small scale time frame. Incorporating this feature in the timeline component is challenging, and I share Mathieu's concern with the zoomable time frame in the sense it is risky to get stuck with a cumbersome or impractical interface. Another potential downside is loosing the relative notion of size between the zoomed interval and the whole interval.

An alternative solution to overcome these issues keeping the granularity and simplicity would be to combine a 'detailed timeline' component (roughly like the current timeline) with a 'global' one, in the form of a complete interval scroll bar. One idea for the layout is to add a scroll in the bottom of the current time line and two small icons in one of the corners of the timeline (with the signs '+' and '-', for example) to control the granularity, ie, the time resolution.

Consider the following example: an user has day-by-day data for an year. At first the detailed timeline will correspond to the whole year and the scroll bar slide's width is the maximum (the same as the scroll bar's total width). Suppose the user wants to inspect the data on a weekly basis. He can just press the increasing granularity button '+' until he gets to the desired resolution. The detailed timeline will then correspond to interval of an week and the 'global' scroll bar slide's width will be resized: it will be proportional to the scroll bar's total width to the same amount a week is proportional to an year. Now suppose the user wants to analyse activity in week 17. It is enough to scroll the slide to the corresponding position, so that the detailed timeline corresponds to week 17 interval. If the user is done and wants to get back to a global picture or proceed to a more detailed analysis she can just reduce the time granularity with the corresponding controls '+' and '-' in the the same straight forward way.

Another interesting feature, related to video exporting, would be the possibility to introduce time markers in the timeline, to highlight important events. Among the many examples that could illustrate the benefits of this, consider the case in which the user is studing the evolution of the bird flu epidemic. She might be interested to keep track of the dates when the epidemic infected 100 persons, 1000 persons and so on or the date when the desease reached another city, country, etc. If a video is generated with this data, these markers migth be represented by written labels in the screen for example.

As for the time units involved, I am aligned with what has been discussed in general and think that it would be nice to have 'friendly' data units when its appropriate -- including the tooltip. However, I agree with Seb in that generally time does not come in date format. In this sense, Mathieu's suggestion of having a percentage in the tooltop (in parenthesis after the time for instance) would be a great extra.

The text is getting long, so I'll halt por the moment. If you have any questions, please do not hesitate ;)

dB

admin
Gephi Community Manager
Posts:964
Joined:09 Dec 2009 14:41
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by admin » 15 Apr 2011 15:16

Hi,

The system you describe is really close to what video editor softwares provide - and it is efficient. Have a look at Kdenlive for instance, which is a great open source software I used to do the editing of the official Gephi videos. A little slider on the bottom allows to change the "zoom level". In the last version, they also added the buttons '+' and '-' at each side.

Screenshot:
Image

Marker:
Image

Yestin
Gephi Plugin Developer
Posts:34
Joined:22 Mar 2010 10:45
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by Yestin » 16 Apr 2011 06:06

Hi,
The problem @Cezary pointed out about "consern one day of a 100 years data" really puzzled me. But to be honest, I thought combining detailed timeline and global timeline was not a good solution initially. Because I think user will be confused if they have two different timeline pointers in one timeline panel, or even in two different timeline panels of one screen. So I suggested exported data of each day if user want to analysis such data. Now @danielb inspired me on the problem :D . Just using the new architecture I pointed out of the timeline module, we can add a new "graduation panel" with a slider/brick, this panel contains a detail graduation, the main timeline panel have a large graduation. The sliders of the two panels are in different location at one time. For example, we have a dataset of 100 year, and the graduation of the main panel is year, the graduation of the "graduation panel" is month of one year. In one time, the data is the 3rd year and the 4th month, the slider of the main panel points the 3rd year(3/100years), and the slider of the "graduation panel" points the 4th month(4/12month), the "graduation panel" only have 12 graduations of unit month. Though confusion of two graduation also exists, but I think it's a good solution without zooming in/out the timeline panel. Comparing to using "+" and "-", this solution reduce the length of mouse moving and pointing, and keep the focus of a user on the timeline once he/she selected the unit of "graduation panel" at first. Of course, I suggest combing such feature with "unit selection".

Something more about "+" and "-". What @Seb said about taking reference of movie editing software is a good idea. The architecture what I proposed is just inspired from it . I think Kdenlive is similiar to moviemaker in windows, it used "+" and "-" to both zoom the graduation and the size/length of the whole panel. But just as @Mathieu said, a zoomable interface will make the ui too complicated. For example, if we have a time serial "1 2 3.. 100" with no unit, we use "+"/"-" to zoom, we only zoom the length. The feedfack is different between "no unit" and "have unit". Besides, in my point of view, timeline module is firstly used for analysis, and then used for video generation. So the design should also trend the analysis process.

It seems that I paid more concern on the effieiency and speed of movie generation, and ignored the frame generated. I only got the idea of adding the time (ie, year number) on the frame of video just as gapminder at first. What @danielb said about "Highlight important events" is an interesting idea! It made the movie more meaningful and rich. @danielb, Can you tell me something detail about the configuration of such feature? For example, How can I configure the "important event"? Thank you very much.

Cheers. :-)

User avatar
mbastian
Gephi Architect
Posts:728
Joined:10 Dec 2009 10:11
Location:San Francisco, CA
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by mbastian » 17 Apr 2011 04:09

Are we converging on a consensus on this topic? I feel we need to agree on several points:

- What is the simplest way to provide a zoomable timeline? Basically, the aim is to be able to set min and max bound, and let the user define that easily.
- What is our approach for graduation and events display? Events are interval bounds.
- What library are we using for movie creation? How video are compressed? Is it cross platform?

Yestin
Gephi Plugin Developer
Posts:34
Joined:22 Mar 2010 10:45
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by Yestin » 17 Apr 2011 06:00

My solutions on the three issues are:

- What is the simplest way to provide a zoomable timeline? Basically, the aim is to be able to set min and max bound, and let the user define that easily.
A fix length of timeline panel to show the overview, and create new project using filter or a new plugin("graduation panel") to show part of the overview. If we only let user to set min and max bound, only a filter can be done.
In my point of view, the disadvantages of using mouse wheeling will confuse the user and developer. First because user will lost the overview during the zooming of the timeline panel. Second because the timeline module will be extendable, I'm afraid developer/user will get into trouble on how to deal with a scalable panel. Third, I'm not sure this is an advantange. It's the auto-change of the graduation while wheeling (just as most video editors do). GEXF supports all kinds of date (numeric, datatime), not the same as video editors(only hour,minutes, seconds).

- What is our approach for graduation and events display? Events are interval bounds.
In my mind, the "interval bounds" in your question is the same as what I said "unit". That is the smallest time interval we can see on the timeline. Am I right?
Using a intelligent algorithm at first to decide the initial graduation, then using "unit selection" to allow user to change the unit. For example, given dataset(2010.4, 2010.5,... 2011.3, 2011.4). The initial graduation is "year with month", then the timeline panel will show the 2010 and 2011 as a long graduation, and show the month as a short graduation. If user want to change the unit from month to day, or even 20 days, he/she can use the "unit selection" to change, and the ui change after that. In my mind, the painting of the ui will be done step by step, first the big unit, then the small, with different length.

- What library are we using for movie creation? How video are compressed? Is it cross platformed?
My solution is JMF, this is a pure java library for media processing, so it's OS independent. I'm taking more attention on it during this time. Initially, I want to create image to harddisk first, then create movie using JMF, I tested it and found its a workable solution, and can be compressed into kinds of formats. I'm looking for other solutions, with performance as the first priority .

User avatar
cezar_1
Gephi Core Developer
Posts:20
Joined:23 Mar 2010 02:30
Contact:

Re: Timeline

Post by cezar_1 » 17 Apr 2011 08:20

If we only let user to set min and max bound, only a filter can be done.
What do you exactly mean?

As for the "graduation panel" - as far as I understand the problem with analysing large datasets will still exist. If I'm not mistaken (tell me if so) this additional panel would have got a constant resolution as the main panel, so if we had got a really large dataset and would like to concern a very small part of it, this solution won't help.

To sum up: either we give up any kind of zoom and want to depend on filters or we provide a feature which lets us investigate small parts of large datasets (well, maybe I'm lazy but I really would like to see such a feature integrated with the timeline :P). The solution with two panels (one with constant resolution and the second with changeable one) is really nice for me...
In my mind, the "interval bounds" in your question is the same as what I said "unit". That is the smallest time interval we can see on the timeline. Am I right?
As far as I understand Mathieu would like to know how we draw bounds. In your case it would be a brick.

As for JMF - here's the list of formats that the Cross Platform Version supports: http://www.oracle.com/technetwork/java/ ... 38492.html (it's the same list which I pasted a few posts before) However there is poor information about compression.

Yestin
Gephi Plugin Developer
Posts:34
Joined:22 Mar 2010 10:45
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by Yestin » 17 Apr 2011 11:33

@Cezary Yes, the resolution/length of the "graduation panel" will not change (the same length as the main panel).
The "graduation panel" is similiar to what you said "changable panel" :-) . But the change is not the resolustion, but the scope of the time. For example, the main panel have the scope of (2001, 2002, ...,2011), and we select part of them (maybe only 2001 or even January of 2001), "graduation panel" only display such dataset.
If we had got a really large dataset and would like to concern a very small part of it, we can select the small part of the large dataset(a time segment),and put that on the "graduation panel". If users want to change the unit from year to day, they can use "unit selection" to complete it.

As for JMF, in my point of view, .AVI, .MOV, .MPG are all kinds of compressed video formats. Do I misunderstanding the meaning of compression(compressed video)?

admin
Gephi Community Manager
Posts:964
Joined:09 Dec 2009 14:41
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by admin » 18 Apr 2011 10:05

.AVI, .MOV, .MPG are video containers, but their compression rate vary a lot within each, depending on how the compression is done and its parameters. Did you ever created a DivX from a DVD? There are many options impacting on the CPU charge, processing speed and quality of the output.

Yestin
Gephi Plugin Developer
Posts:34
Joined:22 Mar 2010 10:45
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by Yestin » 18 Apr 2011 13:25

Hi,
It seems I used the wrong words. But just take a look at the formats JMF support here : http://www.oracle.com/technetwork/java/ ... 38492.html .
Maybe I should describe this way :-) : The quality of video is decided by several parameters, such as frame rate, audio compression, video compression (frame itself and among frames). JMF supports video formats such as .avi, .mov., .mpg. It supports several frame rate: 8, 11.025, 11.127, 16, 22.05, 22.254, 32, 44.1, and 48 KHz. It supports several compression format, such as Cinepak, MJPEG, H.263. Though the video format and compression format JMF supports is not sufficient. But I think we needn't develop a powerful video converter, and the compression format JMF provides seems enough. Another advantange of JMF is it's platform independant.

This is "Common Video formats" from JMF API Guide. Of course, just as I said, the quality is also decided by frame rate.
Attachments
format.PNG

danielb
Gephi Core Developer
Posts:3
Joined:06 Apr 2011 01:05
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Timeline

Post by danielb » 20 Apr 2011 17:20

Before I finish updating my proposal in the light of what has been said here, here goes my thoughts on some of the issues raised by Mathieu:

Change in scale/zooming.

The timeline in Kdenlive is exactly what I had in mind for the solution of the change in scale of the time line. I think we could adopt a similar design, consisting of a detailed timeline on top and an scroll bar on bottom (with the bar width corresponding to the relative size of the visible time interval in the detailed timeline to the size of the whole interval) and a component to change the "zooming" of the detailed timeline. I think this solution is easy enough to select time intervals, so I didn't plan to offer the user a precise input for the interval bounds (e.g., asking for a numerical max, min) when selecting the zoomed portion of the time interval, do you think it is absolutely necessary?

Image

In Kdenlive we have two magnifying glass icons (+ and -) and a slide to control zooming, which is quite comfortable IMO; the only disadvantage is the extra space the slide takes. They have incorporated the slide on the status bar, do you think we could do the same, perhaps?

Another important point: to define a precise time interval to be played, we could have two slides, one for each interval border, like our actual timeline. This could be coupled with an independent time needle, which would displace during the animation, in the same spirit of Kdenlive's.

Events.

When I first proposed to introduce highlighting for events, I was thinking mainly about punctual markers. More precisely I thought about pinpointing some special instants in the evolution of the network -- e.g., the instant where the number of edges was maximum. In terms of design I thought they could be represented by arrows or points in the detailed timeline. These markers could serve, in particular, to define an interval, but they might simply point to interesting snapshots in the evolution of the network.

Movie creation library.

I have no personal preference concerning the encoding library -- that is to use JMF or a front end to some other module. Cezary suggested to use JMF given that our video encoding needs are not enormous -- and besides it is also cross platform. I say why not? ;)

Cezary, were you thinking about exporting the snapshot frames first and compressing later, like Seb's example or streaming them to JMF somehow in order to compress on the fly? What do the others think about this?
Last edited by danielb on 21 Apr 2011 12:45, edited 1 time in total.

Post Reply
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable