Changes between Initial Version and Version 1 of AddingDataTypes


Ignore:
Timestamp:
2010-10-01T23:38:13+02:00 (11 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AddingDataTypes

    v1 v1  
     1= Adding data types =
     2Adding of data types is done by
     3 * editing 'xgap_db.xml' to add the data type
     4 * editing 'xgap_ui.xml' to add it the XGAP user interface.
     5 * subsequently running the generator as described in [http://www.molgenis.org/wiki/MolgenisGeneratorBasics MolgenisGeneratorBasics].
     6 * and finally updating the database (
     7
     8WARNING: don't run the MolgenisUpdateDatabase if you want to keep data in the database! Instead copy/paste relevant SQL from the /generated/sql/create_tables.sql file!
     9
     10Below two examples are shown.
     11
     12== Example 1 ==
     13
     14We have sequencing data for bacterial artificial chromosome (BAC) clones. This is something measured on a bacteria, so it's a trait. Since the fragments have a genetical location, we would like to have this annotated as well.
     15
     16We add a new entity named "Clone" to xgap_db.xml with a proper description. We 'add' this to the possible traits by 'extending' the Trait datatype. Lastly, we reuse the notation of genetic location by adding 'Locus' information using 'implements'. As a result Clone will have all properties of Locus as well as Trait.
     17
     18{{{
     19#!xml
     20<entity name="Clone" extends="Trait" implements="Locus">
     21        <description>
     22        BAC clone fragment.
     23        </description>
     24</entity>
     25}}}
     26
     27Then add this new entity to the user interface by adding under the 'Trait' menu:
     28{{{
     29#!xml
     30<form name="Clones" entity="Clone"/>
     31}}}
     32
     33Finally we run the generator and update the database as described above, i.e., in /generated/sql/create_tables.sql copy the {{{create table Clone}}} and paste it into the mysql prompt.
     34== Example 2 ==
     35
     36We want to 'wrap' datamatrices as a QTL dataset where we annotate a specific matrix to contain 'genotypes' and another matrix to contain 'phenotypes'. These datasets do not need names.
     37
     38We add an entity named "QTLDataSet" to xgap_db.xml with a proper description. We do want the matrix to fit into the XGAP datastructure but do not need to name it, therefore we extend 'Describable' which gives the record a unique ID, but not 'Identifiable' which would add a 'name' field. Then we add two fields with are both crossreferences to 'Data' by "id", though the label will be "name".
     39
     40{{{
     41#!xml
     42<entity name="QTLDataSet" extends="Describable">
     43        <description>The starting point of QTL analysis.</description>
     44        <field name="Genotypes" nillable="true" type="xref" xref_entity="Data" xref_field="id" xref_label="name" />
     45        <field name="Phenotypes"  nillable="true" type="mref" xref_entity="Data" xref_field="id" xref_label="name" />
     46</entity>
     47}}}
     48
     49Then we add it to the user interface by adding to xgap_ui.xml at a proper location:
     50{{{
     51#!xml
     52<form name="QTLDataSet" entity="QTLDataSet"/>
     53}}}
     54
     55Finally we run the generator and update the database as described above, i.e., in /generated/sql/create_tables.sql copy the {{{create table QTLDataSet}}} and paste it into the mysql prompt.