|
Relational model definition XML input/output file | ![]() |
General organization of NMRb:
Information can be uploaded either by a web graphic interface (repository form) or by direct file transfer (XML information file and raw spectra). Spectra information is inserted in an XML file for the data verification step. Then, information is saved in the MySQL base. The raw spectra are saved directly on the hard disc in traditional Unix compression format file (.tgz). and spectra information is organized in a relational data-base (MySQL server). The reading of the base is done by a web graphic interface.
Figure 1

Relational model organisation:
Relational model organisation: NMRb data are distributed in 16 interrelated tables which names are "DataModel", "DataSet", "Spectra", "Molecule", "Authors", "Laboratory", "Sample", "MolInSample", "Reference" , "Spectrometer", "Probe", "Sequence", "Processing", "Axe", "Sampling", "GFTProcessing".
Each table is a set of rows and columns. All columns contain a given information type as described in Table 1. For example, "AuthorsEmail" is one column of the "Authors" table. Each row is a set of columns with only one value for each. Rows contain real values. For example, one row contains "john@laboratory.fr" in the "AuthorsEmail" columns of "Authors" table.
In order to handle data inside a relational table, an index is needed to identify each row stored into that table. It is the primary key of table (eg: AuthorsIndex). Another reason to create a primary key is the use of its value as a foreign key by other tables. For example, the foreign key "LaboratoryIndex" in the Authors table correspond to the same value (primary key) entry in Laboratory table. This relation permits to find easily the author's laboratory with only one SQL query.
All arrows in Table 1 and in Figure 2 define a foreign key corresponding to a primary key entry in an other table.
Some tables like MolInSample permit to associate Molecule entry with Spectra entry in order to have a variable number of connexion between Molecule and Spectra tables. (Sampling and GFTProcessing tables are not yet available. It is a prevision for future version.)
Figure 2

Table 1
|
Table DataModel |
Table DataSet |
Table Spectra |
TableMolecule |
|
DataModelIndex DataModelVersion |
DataSetIndex DepositionDate ConfidencialityLevel AccessLogin AccessPasswd DepositorEmail NumberOfSpectra StudyCitations StudyPDB_id StudyBMRB_id StudyType DataSetTitre DataModelIndex -> |
SpectraIndex SpectraDataFormat SpectraLocalFileAddress SpectraSoftware SpectraAxeNumber SpectraTemperature SpectraPressure DataSetIndex -> SampleIndex -> ReferenceIndex -> SpectrometerIndex -> ProbeIndex -> SequenceIndex -> ProcessingIndex -> |
MoleculeIndex MoleculeShortName MoleculeLongName MoleculeType MoleculeState MoleculeWeight MoleculeSwissprot_id MoleculeSource PrimarySequence OffsetSequence ExpOrganism ExpSource MoleculeDetails |
|
Table MolInSample |
Table Authors |
Table Laboratory |
Table Sample |
|
MolInSampleIndex MolInSampleConcMole MolInSampleConcMass MolecularIsotopeLabelling SpectraIndex -> MoleculeIndex ->
|
AuthorsIndex AuthorsFirstName AuthorsSurname AuthorsEmail LaboratoryIndex -> DataSetIndex -> |
LaboratoryIndex LaboratoryName LaboratoryAddress LaboratoryCountry |
SampleIndex SampleSolvant SamplePH SampleBufferType SampleBufferConcentration SampleSaltType SampleSaltConcentration SampleAddMol SampleDetails |
|
Table Reference |
Table Spectrometer |
Table Probe |
Table Sequence |
|
ReferenceIndex ReferenceMolecule ReferenceAbsoluteFrequency |
SpectrometerIndex SpectrometerManufacturer SpectrometerModel ProtonFrequency |
ProbeIndex ProbeManufacturer ProbeModel ProbeCryo |
SequenceIndex SpectraSequenceType SpectraMixingTimeDuration SpectraPulseSequenceFilter |
|
Table Processing |
Table Axe |
Table Sampling |
Table GFTProcessing |
|
ProcessingIndex AxesOrder F1Index -> F2Index -> F3Index -> F4Index ->
(Limited to 4D spectra) |
AxeIndex AxeName (F1, F2,...) SpectraNucleusAxe (1H, 13C,..) Stokage (real, complex,..) SpectralWidth CarrierFrequency SamplingType (regular, partial) PartialSamplingIndex -> ZeroTimePosition Modulation (Real, Complex, ...) PhaseModAxePointed NP_AxePointed Preprocessing ( LP, ...) PhaseCorrection_PH0 PhaseCorrection_PH1 LeftExtractZoneAfterProcess RightExtractZoneAfterProcess PostProcessing (Reverse, ...) |
SamplingIndex PartialSamplingTable
(For future version) |
GFTProcessinIndex
(For future version) |
XML file for input/output :
XML data file: XML is a simple and very flexible text format designed to describe data (Figure 3). XML tags are not predefined in XML but defined according to NMRb data. We use an XML scheme in order to have a fine description of the data according to MySQL database characteristics. It permits to preserve some features like variable type, enumeration choices values and mandatory or facultative information fields. XML file is used to deposit data and also to recover them.
Figure 3 - syntax of the XML file
|
<?xml version="1.0" ?> <!-- XML file for NMRb Deposition --> <NMRb_Deposit>
<Study_Info> <Data_Set> <NMRb_Id>NMRb_id</NMRb_Id> <Study_Type>Complex</Study_Type> ... General data-set information </Data_Set> <Molecule> <Molecule_Common_Name>ltp</Molecule_Common_Name> <Molecule_Weight>6979</Molecule_Weight> ... Molecular information </Molecule> <Ligand> ... as molecular information </Ligand> </Study_Info> <Authors_Zone> <Authors num="1"> <Authors_First_Name>John</Authors_First_Name> ... Authors information <Laboratory_Name>CBS</Laboratory_Name> ... Laboratory information </Authors> ... Several Authors entries are possible </Authors_Zone>
<Spectra_Zone> <Spectra> <Spectra_File_Name>cosy_1H_295K.tgz</Spectra_File_Name> <Spectra_Data_Format>Bruker</Spectra_Data_Format> <Spectra_Axe_Number>2D</Spectra_Axe_Number> ... Spectra information
<Axes_Zone> <Axes> <Axe>F1</Axe> <Axe_Nucleus>1H</Axe_Nucleus> ...Axes information </Axes> .. Several axes entries are possible </Axes_Zone>
</Spectra> .. Several Spectra entries are possible </Spectra_Zone>
</NMRb_Deposit> |