Main Page/VisualizationiAnnEvents

From Protein Prediction 2 Winter Semester 2014
Revision as of 20:10, 26 December 2014 by Ppwikiuser (talk | contribs) (Week 3(5.12.2014 - 11.12.2014))

iAnn is an open source community-driven platform for dissemination of life science announcements, such as courses, conferences and workshops.Announcements are curated into a centralised registry through an editor. The information from the registry is exposed to the users through web services. And on top of the web services a javascript application is build to visualize the content using different views (list, maps and calendar).

IAnn workflow.png

Project progress
Week number Completed tasks Status
Week 1
  • Collecting ideas for possible visualization components that can be incorporated in iAnn viewer.
  • Understanding the working of iAnn viewer.
  • Underwent a tutorial on D3 javascript.
  • Vreatinga GitHub Repository.
Week 2
  • Finalizing the ideas.
  • Developing the word cloud based on Host, Keyword, Provider and Country.
  • Integrating the word cloud with iAnn Viewer.
  • Initial Project setup for 3D Globe.
Week 3
  • Enhancing the word cloud.
  • Bringing 3D Globe into a working condition.
  • Initial project setup for Partition Layout .
Week 4
  • Word Cloud Completion.
  • Adding tooltip and list of events to each country.
  • Incorporating 2 options : Ortho(3D) and Equirectangular(2D) for better user interface.
Week 5
  • Adding Markers for 3D Globe.
  • Stabilizing the 3D to 2D transition.
  • Completion of 3D Globe.
Week 6

Git Repository

1. GUI mockups

User experience

  • Currently the user interface looks like this



How we are going to improve it ?

By incorporating the following visualizations

  • 3D Globe for Maps
  • Word Cloud for filtering.
  • Bilevel/Zoomable Partition Layout for Events.

3D Globe for maps

  • Can able to Rotate the map.
  • Able to view information of each events, here we plan to implement this module using the technique Orthographic to Equirectangular.
  • Along with the event information corresponding url will also be embedded.
3dglobe.PNG Orthographic to Equirectangular.gif
3D Globe Orthographic_to_Equirectangular


  • User can filter the events based on country and date.
  • Interconnected lines between the countries which are likely to have events happening on same date.

BiLevel/Zoomable Partition Layout for Events

  • Navigation through events, with an emphasis on usability.
Vis1.png Vis2.png
Zoomable Partition BiLevel Partition
  • Each inner circle is representing root category, i.e. country, which expands on click and displays details, i.e. events in a selected country.

Word Cloud for Keywords

  • Visualization of the most used keywords in iAnn search.
  • Based on popularity, the size of each word varies.

2. Application design

Expected technical difficulties

  • Implementing Orthographic to Equirectangular on each marker points(countries).
  • Interconnecting lines between the countries when the events from different countries likely to happen on same date, because we need latitude and longitude points to map.

Fancy libraries you plan to use

  • D3.js
  • Ajaxsolr

3. Data Format


  • Input is likely to be in json format with events,location and date, etc.
  • With the above information it’s difficult to map the exact location in map, we need the latitude and longitude points to overcome it.

4. Roadmap

  • Finalize our proposed ideas.
  • Refactor the existing code of widget to make sure that object oriented approach is followed, so that it’s easy to combine with javascript events.
  • Developing all the required and accepted visualization components.
  • Finally Integrating into widget and upload to BioJs

Week 1(21.11.2014 - 27.11.2014)

"Mentors are happy with our proposed ideas"

After the discussion with our mentors we were able to finalize our task.

Below you can find the list of tasks based on the priority

  • Refactoring the code
  • Refactoring the Solr scheme
  • Solr Migration from 2.1.0 to 2.10
  • Word Cloud
  • 3D Globe
  • Bilevel Partition (if time permits)
  • Configurating Tomcat server instead of Jetty, due to security concerns (if time permits)
  • Preparing endpoints for our visualisation widgets (if time permits)


  • Understanding the working of Ajax Solr.
  • Integrating the new components with the existing widget.
  • Proposing changes for the new general Solr schema.
  • Migrating from version 2.1.0 to 2.10.


  • Setup of repositories, working directories and shared documents
  • Go through some basic tutorials of Ajax Solr.
  • We were successfully able to design a word cloud using D3 for one of the filter options "Host", but need to work on size and onclick events.
  • Apache Solr installed and running in a private virtual machine.
  • Analysed requirements and old schema + started writing proposal for a new one.

Plans for Week 2

  • Implement the word cloud for rest of the filter options.
  • And also to include the onclick events.
  • Initial setup for 3D Globe
  • Deliver proposal (document) for changes in a Solr schema and discuss them with project sponsors.

Week 2(28.11.2014 - 4.12.2014)

Word Cloud

  • Implementation of Word Cloud for advanced filter options is done, waiting for the feedback.
    • Greater the size of word, the more popular it is.



GitHub Repository


3D Globe

  • Initial setup for 3D Globe is done.
 Note : Currently there is a problem in running with chrome due to queue library for asynchronous request, it is advised to view either in Mozilla firefox or safari
  • In addition filter based on country is also included.
    • List of all countries are available in dropdown for user selection.


3dglobe initial.JPG

  • Rotate function is also incorporated.
    • Based on the country selection, the globe rotates and points to a specific location.


3dglobe rotate.JPG

  • Transformation of 3D to 2D(Orthographic to Equirectangular) is also completed.
    • By clicking on specific country on the globe, the 3D to 2D transformation happens and the selection area remains highlighted.
    • The reverse process i.e 2D to 3D can be achieved by clicking again on the layout.


3dglobe trans.JPG

GitHub Repository

GitHub : iANN_3D_GLOBE

Proposal for Schema changes

Current version of iAnn website is delivering a service by using custom schema for data attributes naming. However, it is not standardized and does not have default field naming scheme. Therefore, a community agreed on default schema layout, named SASI. In this document we will point out differences and describe new schema fields. As current iAnn collection runs on Apache Solr 4.1 and the latest one with some major bug fixes is 4.10.2, we decided to migrate and update our service as well.

Accomplished tasks:

  • Understanding of existing scheme,
  • Proposing structure changes and
  • Highlighting differences

Old Scheme:

  <field name="id" type="string" indexed="true" stored="true" required="true" />
  <field name="title" type="text" indexed="true" stored="true"/>
  <field name="subtitle" type="text" indexed="true" stored="true"/>
  <field name="description" type="string" indexed="false" stored="true"/>
  <field name="provider" type="text_lowercase" indexed="true" stored="true"/>
  <field name="link" type="string" indexed="false" stored="true"/>
  <field name="start" type="tdate" indexed="true" stored="true"/>
  <field name="end" type="tdate" indexed="true" stored="true"/>
  <field name="venue" type="text_lowercase" indexed="true" stored="true"/> 
  <field name="city" type="text_lowercase" indexed="true" stored="true"/>
  <field name="county" type="string" indexed="fasle" stored="true"/>
  <field name="country" type="text_lowercase" indexed="true" stored="true"/>
  <field name="postcode" type="string" indexed="false" stored="true"/>
  <field name="attachment" type="string" indexed="false" stored="true" multiValued="true"/>
  <field name="image" type="string" indexed="false" stored="true" multiValued="true"/>
  <field name="keyword" type="text_lowercase" indexed="true" stored="true" multiValued="true"/>
  <field name="category" type="text_lowercase" indexed="true" stored="true" multiValued="true"/>
  <field name="field" type="text_lowercase" indexed="true" stored="true" multiValued="true"/> 
  <field name="submission_name" type="text_lowercase" indexed="true" stored="true" multiValued="true"/>
  <field name="submission_email" type="string" indexed="true" stored="true" multiValued="true"/>
  <field name="submission_date" type="tdate" indexed="true" stored="true" multiValued="true"/>
  <field name="submission_comment" type="text" indexed="false" stored="true" multiValued="true"/>
  <field name="submission_organization" type="text" indexed="true" stored="true" multiValued="true"/>
  <field name="latitude" type="double" indexed="true" stored="true"/>
  <field name="longitude" type="double" indexed="true" stored="true"/>
  <field name="sponsor" type="text_lowercase" indexed="true" stored="true"/>
  <field name="public" type="boolean" indexed="true" stored="true"/>
  <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
  <field name="_version_" type="long" indexed="true" stored="true"/>

New Scheme:

  <field name="id" type="text" indexed="true" stored="true" required="true" />
  <field name="title" type="text" indexed="true" stored="true"/>
  <field name="subtitle" type="text" indexed="true" stored="true"/>
  <field name="description" type="text" indexed="false" stored="true"/>
  <field name="prerequisites" type="text" indexed="false" stored="true"/>
  <field name="programme" type="programme" indexed="false" stored="true"/>
  <field name="comments" type="text" indexed="false" stored="true"/>
  <field name="fees" type="fees" indexed="false" stored="true" multiValued="true"/>
  <field name="discount" type="discount" indexed="false" stored="true"/>
  <field name="accreditation" type="text" indexed="false" stored="true"/>
  <field name="status" type="text" indexed="false" stored="true"/>
  <field name="eligibility" type="text" indexed="false" stored="true" multiValued="true"/>
  <field name="capacity" type="int" indexed="false" stored="true"/>
  <field name="contact" type="person" indexed="false" stored="true" multiValued="true"/>
  <field name="submitter" type="person" indexed="false" stored="true" multiValued="true"/>
  <field name="organizers" type="person" indexed="false" stored="true" multiValued="true"/>
  <field name="speakers" type="person" indexed="false" stored="true" multiValued="true"/>
  <field name="host_institution" type="organization" indexed="false" stored="true" multiValued="true"/>
  <field name="sponsor" type="organization" indexed="false" stored="true" multiValued="true"/>
  <field name="venue" type="text" indexed="false" stored="true"/>
  <field name="street_address" type="text" indexed="false" stored="true"/>
  <field name="city" type="text" indexed="false" stored="true"/>
  <field name="province" type="text" indexed="false" stored="true"/>
  <field name="country" type="text" indexed="false" stored="true"/>
  <field name="postcode" type="text" indexed="false" stored="true"/>
  <field name="post_office_box" type="text" indexed="false" stored="true"/>
  <field name="url" type="link" indexed="false" stored="true"/>
  <field name="attachment" type="link" indexed="false" stored="true" multiValued="true"/>
  <field name="social_media" type="link" indexed="false" stored="true" multiValued="true"/>
  <field name="starts" type="date" indexed="false" stored="true"/>
  <field name="ends" type="date" indexed="false" stored="true"/>
  <field name="time_zone" type="text" indexed="false" stored="true"/>
  <field name="last_update" type="date" indexed="false" stored="true" multiValued="true"/>
  <field name="deadlines" type="date" indexed="false" stored="true" multiValued="true"/>
  <field name="registration_opens_date" type="date" indexed="false" stored="true" multiValued="true"/>
  <field name="acceptance_notification_date" type="date" indexed="false" stored="true" multiValued="true"/>
  <field name="type" type="text" indexed="false" stored="true" multiValued="true"/>
  <field name="topic" type="text" indexed="false" stored="true" multiValued="true"/>
  <field name="public" type="boolean" indexed="false" stored="true"/>
  <field name="target_audience" type="text" indexed="false" stored="true" multiValued="true"/>
  <field name="spotlight" type="boolean" indexed="false" stored="true"/>
  <field name="latitude" type="double" indexed="true" stored="true"/>
  <field name="longitude" type="double" indexed="true" stored="true"/>
  <field name="_version_" type="long" indexed="true" stored="true"/>


While using newly proposed scheme iAnn will have a possibility to serve even more diverse data. This will serve as a basis for new services on top of Solr search engine. On top of that, migration to newer version of Solr will make it safer.

GitHub Repository

GitHub : iANN_Solr

Week 3(5.12.2014 - 11.12.2014)

Word Cloud

  • We have improved our word cloud look compared to our previous week.
  • Also we had an issue in bringing all the words in to cloud and now this is also solved.

3D Globe

  • We tried with adding markups in the Globe, but we had an issue while converting to 2D map, as you can imagine the markup positions varies for each country with respect to 3D and 2D view, that transition we can't able to achieve with the markup.
  • We even tried with adding colors for each country, but it doesn't looks good.

Partition Layout

  • We have developed the Tree map with respect to keywords.
  • Currently it's not interactive, we are working on it.
  • Once we are done with Tree map, we will also do the BiLevel Partition which is one of the visualization our mentors are very much interested.

Week 4(12.12.2014 - 18.12.2014)

Word Cloud

  • With the addition of links and hover functionality word cloud comes to an end.
  • When you move the cursor over the word cloud the words gets zoom out a bit to show the user that it is clickable.
  • Now in the word cloud, each word is incorporated with search functionality. For example : if United Kingdom is clicked the remaining three fields will display the words related to it.

3D Globe

Week 5(19.12.2014 - 25.12.2014)