Documentation and code of the information systems

GoogleCode for SINGER

Project pages to access the code, the wiki and the bug tracker. You can browse this site and if you wish to contribute, please send a request to get credentials at : 

GENESYS Handover 

by Mohammed Fawzy Nawar to Milko Skofic and Luca Matteis- 28/02 & 01/03 2011 - Notes taken by L. Matteis

Issues with installation

  1. Set the session.auto_start inside php.ini to 1
  2. Disable all notices and warning inside php.ini error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING
  3. Set correct mysql connection credentials inside dbConnect.php (project root)

Day 1 - Client Part

Genesys shows and stores this type of data:

  • Environment
  • Traits
  • Passport data
Request routine
JS event -> JavaScript Function -> Ajax -> Php script -> database server (or file)
All this will return HTML to the browser (via ajax) and it will replace different parts of the website (graphically).

Server state
keeps a session information that is gone on page refresh. not sure which session since PHP_SESSID is in the cookie and is not gone at page refresh. But it seems like it’s destroyed at each refresh of the index.php page. So it’s confirmed it’s using native php session.

All the scripts read this session which keeps the “query” information. So all the php scripts behave upon this query state to send back data.

Queries - array
The sql query gets generated based on the query string (site state).
The sql query needs also to generate the correct JOINS out of the query state. This is done through the same state.
So basically the SQL query state is generated from variables contained on the client.

Trait query
it will either append or replace to the query string (session state).

So when you select a Crop from the Crop sidebar list it will replace the session variable that holds the current crop information inside the query session array. The same happens for when doing anything else. The trait query specifically lets you add or replace things to this query session.

Database structure

Trait - parameter of a crop (height, shoe size)


There’s an all_ structure for all accessions and this is replicated for each crop. The all_ is where the data must go first. And handles only passport information. Then for each crop this data is duplicated with cropname_ and same tables as all_

Characterization and evaluation (DDC)

This is trait data (i think). So it’s implemented as a table of all these traits that have a link to the CROP they are linked. And to get this information JOINs become expensive.

So each crop has Trait categories and each category is linked to the crop. This is just simple visualization of something related to an object. Sort of like comments are connected to posts - why is it expensive?

Data validation for trait upload (Name of trait -> value of trait)
The value can be one of these:
  • Methods
  1. Id
  2. Title
  3. Unit
  4. Range (1m to 5 m)
  5. Options (yellow, white, green)
Upload interface:
  • Field name
  • Field upload types: Character, Integer, Float
  • Field size
Methods is just a variation for each trait.


Extra information for each trait.
Reference to accession
Meta id (link to experiment data)
Categories -> Traits -> Method

Treat query

Crop->Category->Trait. The filtering shows only the method for what there’s data. You can choose these options and it will set the session query string to set the state of the entire website.
Unless you're inside a crop you won't see any categories of traits. Uses iFrame to call QProcessor.php which executes some JavaScript to show stuff like alert('message'). Reads the current query and saves it.

Day 2 - Data Upload - DDC

Each genebank has its own credentials to the DDC tool so that they can upload their data. The tool is used to Upload new passport data, to edit passport data and to upload C&E data. Genesys admins also use it to keep data synched. The Authentication of the Institute happens through a simple user table inside the genesys database - the same one the website uses. All the transactions of this tool happen through the same database, so changes are live on the website when made through the tool.

The tool is written completely in Java and uses web services to speak to the database.

Download Crop
You can download crops from the site, but the DDC tool also offers the ability to download crops list by pages or even the totality of the data. When a user downloads the crop list it will get saved as an Excel (.csv) file to your system and you can also choose what to download - between Passport columns and C&E columns available for that specific crop you chose. When the user gets the .csv file they will be able to map the trait values thanks to a simple .txt file.

Upload Existing Passport data
A data-provider can simply edit accession they have uploaded by uploading the new set of data, that will overwrite the existing one on the server. The mapping is done through the client app, a simple drag and drop of column names to map things like ACC_num -> Accession Number, so that Genesys knows what columns we're talking about.

There's also a validation process in the upload the make sure you're uploading correct data - for example you can't change Genus or Species values for an accession, and the accession you're changing has to belong to your institute.

Upload C&E Data
People can upload new C&E data out of experiments for specific accessions. The upload is bounded by the traits in the system which is controlled by the administrator - however the user can Propose new traits if they don't exist in the system. Each upload contains Metadata of experiment.

Since the data provider can provide data that is mapped differently on the server, for example they have 'brownish' but the server expects 'brown', the DDC provides a mapping tool that lets users map their values with values on the server.

The data uploader can also Propose new options for a specific trait. The mapping of methods is saved on the client of the DDC tool, so it's connected to the data provider.

To get all C&E data of a specific method for a specific session you would select from 1024 where alis_id = ACCID+INSTCODE; - where 1024 is the method table.

To get specific information for an experiment, you would group by meta_id.

DDC Web Services
The genesys site has php services that the DDC tool uses to read/write data.
Elizabeth Arnaud,
Mar 2, 2011, 1:25 AM