2015-05-23 03:39:56 +03:00
|
|
|
*********************************************
|
|
|
|
The OBItools3 Data Management System (OBIDMS)
|
|
|
|
*********************************************
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
A complete DNA metabarcoding experiment relies on several kinds of data.
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
- The sequence data resulting from the sequencing of the PCR products,
|
2015-05-23 03:39:56 +03:00
|
|
|
- The description of the samples including all their metadata,
|
2015-05-28 16:33:45 +02:00
|
|
|
- One or several reference databases used for the taxonomic annotation,
|
|
|
|
- One or several taxonomy databases.
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
Up to now, each of these categories of data were stored in separate
|
|
|
|
files, and nothing made it mandatory to keep them together.
|
2015-05-18 17:57:10 +02:00
|
|
|
|
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
The `Data Management System` (DMS) of OBITools3 can be regarded as a basic
|
|
|
|
database system.
|
2015-05-18 17:57:10 +02:00
|
|
|
|
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
OBIDMS UML
|
|
|
|
==========
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-23 09:55:44 +03:00
|
|
|
.. image:: ./UML/OBIDMS_UML.png
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
:download:`html version of the OBIDMS UML file <UML/ObiDMS_UML.class.violet.html>`
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-07 16:10:03 +02:00
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
An OBIDMS directory contains :
|
|
|
|
* one `OBIDMS history file <#obidms-history-files>`_
|
|
|
|
* Two different kinds of directories :
|
|
|
|
* OBIDMS column directories
|
|
|
|
* OBIDMS column group directories containing OBIDMS column directories
|
|
|
|
|
|
|
|
|
|
|
|
OBIDMS column directories
|
|
|
|
=========================
|
|
|
|
|
|
|
|
OBIDMS column directories contain :
|
|
|
|
* all the different versions of one OBIDMS column, under the form of different files (`OBIDMS column files <#obidms-column-files>`_)
|
2015-06-17 16:45:04 +02:00
|
|
|
* one `OBIDMS version file <#obidms-version-files>`_
|
2015-05-28 16:33:45 +02:00
|
|
|
|
|
|
|
The directory name is the column attribute, or sub-attribute if the column directory is in a column group directory.
|
|
|
|
|
|
|
|
|
|
|
|
OBIDMS column group directories
|
|
|
|
===============================
|
|
|
|
|
|
|
|
OBIDMS column group directories contain OBIDMS column directories. They are used to store dictionary-like data, where
|
|
|
|
each key corresponds to an OBIDMS column.
|
|
|
|
|
|
|
|
The directory name is the dictionary attribute. Each key is considered a sub-attribute and is associated to its column.
|
2015-05-07 16:10:03 +02:00
|
|
|
|
|
|
|
|
2015-05-11 17:20:59 +02:00
|
|
|
OBIDMS column files
|
2015-05-07 16:10:03 +02:00
|
|
|
===================
|
2015-05-23 03:39:56 +03:00
|
|
|
|
2015-05-11 17:20:59 +02:00
|
|
|
Each OBIDMS column file contains :
|
2015-05-23 03:39:56 +03:00
|
|
|
* a header of a size equal to a multiple of PAGESIZE (PAGESIZE being equal to 4096 bytes
|
2015-05-07 16:10:03 +02:00
|
|
|
on most systems) containing metadata
|
2015-05-28 16:33:45 +02:00
|
|
|
* one column of data with the same `OBIType <types.html#obitypes>`_
|
2015-05-07 16:10:03 +02:00
|
|
|
|
|
|
|
|
|
|
|
Header
|
|
|
|
------
|
|
|
|
|
2015-05-11 17:20:59 +02:00
|
|
|
The header of an OBIDMS column contains :
|
2015-05-23 03:39:56 +03:00
|
|
|
|
2015-05-07 16:10:03 +02:00
|
|
|
* Endian byte order
|
2015-05-18 17:57:10 +02:00
|
|
|
* Header size (PAGESIZE multiple)
|
2015-05-28 16:33:45 +02:00
|
|
|
* Number of lines of data
|
|
|
|
* Number of lines of data used
|
|
|
|
* `OBIType <types.html#obitypes>`_ (type of the data)
|
|
|
|
* Date of creation of the file
|
|
|
|
* Version of the OBIDMS column
|
|
|
|
* The column name
|
2015-05-07 16:10:03 +02:00
|
|
|
* Eventual comments
|
|
|
|
|
|
|
|
|
|
|
|
Data
|
|
|
|
----
|
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
A column of data with the same `OBIType <types.html#obitypes>`_.
|
2015-05-07 16:10:03 +02:00
|
|
|
|
|
|
|
|
2015-05-18 17:57:10 +02:00
|
|
|
Mandatory columns
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
Some columns must exist in an OBIDMS directory :
|
2015-05-28 16:33:45 +02:00
|
|
|
* sequence identifiers column (type ``OBIStr_t``)
|
2015-05-18 17:57:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
File name
|
|
|
|
---------
|
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
Each file is named with the attribute associated to the data it contains, and the number of
|
2015-05-18 17:57:10 +02:00
|
|
|
its version, separated by an ``@``, and with the extension ``.odc``.
|
2015-05-07 16:10:03 +02:00
|
|
|
|
2015-05-18 17:57:10 +02:00
|
|
|
Example : ``count@3.odc``
|
|
|
|
|
|
|
|
|
|
|
|
Modifications
|
|
|
|
-------------
|
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
An OBIDMS column file can only be modified by the process that created it, and while its status is set to Open.
|
2015-05-18 17:57:10 +02:00
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
When a process wants to modify an OBIDMS column file that is closed, it must first clone it. Cloning creates a new version of the
|
|
|
|
file that belongs to the process, i.e., only that process can modify that file, as long as its status is set to Open. Once the process
|
|
|
|
has finished writing the new version of the column file, it sets the column file's status to Closed, and the file can never be modified
|
2015-05-18 17:57:10 +02:00
|
|
|
again.
|
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
That means that one column is stored in one file (if there is only one version)
|
|
|
|
or more (if there are several versions), and that there is one file per version.
|
2015-05-07 16:10:03 +02:00
|
|
|
|
2015-05-28 16:33:45 +02:00
|
|
|
All the versions of one column are stored in one directory.
|
|
|
|
|
2015-05-18 17:57:10 +02:00
|
|
|
|
|
|
|
Versioning
|
|
|
|
----------
|
|
|
|
|
2015-05-23 10:23:33 +03:00
|
|
|
The first version of a column file is numbered 0, and each new version increments that
|
2015-05-07 16:10:03 +02:00
|
|
|
number by 1.
|
|
|
|
|
2015-06-17 17:17:54 +02:00
|
|
|
The number of the latest version of an OBIDMS column is stored in the `OBIDMS version file <#obidms-version-files>`_ of its directory.
|
2015-05-12 16:41:12 +02:00
|
|
|
|
2015-05-07 16:10:03 +02:00
|
|
|
|
2015-06-17 16:45:04 +02:00
|
|
|
OBIDMS version files
|
2015-05-12 16:41:12 +02:00
|
|
|
====================
|
2015-05-23 03:39:56 +03:00
|
|
|
|
2015-06-17 16:45:04 +02:00
|
|
|
Each OBIDMS column is associated with an OBIDMS version file in its directory, that contains the number of the latest
|
2015-05-23 03:39:56 +03:00
|
|
|
version of the column.
|
2015-05-12 16:41:12 +02:00
|
|
|
|
|
|
|
File name
|
|
|
|
---------
|
|
|
|
|
2015-06-17 16:45:04 +02:00
|
|
|
OBIDMS version files are named with the attribute associated to the data contained in the column, and
|
|
|
|
have the extension ``.odv``.
|
2015-05-12 16:41:12 +02:00
|
|
|
|
2015-06-17 16:45:04 +02:00
|
|
|
Example : ``count.odv``
|
2015-05-12 16:41:12 +02:00
|
|
|
|
|
|
|
|
2015-05-11 17:20:59 +02:00
|
|
|
OBIDMS views
|
2015-05-07 16:10:03 +02:00
|
|
|
============
|
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
An OBIDMS view consists of a list of OBIDMS columns and lines. A view includes one version
|
|
|
|
of each mandatory column. Only one version of each column is included. All the columns of
|
2015-05-07 16:10:03 +02:00
|
|
|
one view contain the same number of lines in the same order.
|
2015-05-11 17:20:59 +02:00
|
|
|
|
|
|
|
|
2015-05-18 17:57:10 +02:00
|
|
|
OBIDMS history file
|
|
|
|
===================
|
|
|
|
|
2015-05-23 03:39:56 +03:00
|
|
|
An OBIDMS history file consists of an ordered list of views and commands, those commands leading
|
2015-05-18 17:57:10 +02:00
|
|
|
from one view to the next one.
|
|
|
|
|
2015-05-23 10:23:33 +03:00
|
|
|
This history can be represented in the form of a ?? showing all the
|
2015-05-18 17:57:10 +02:00
|
|
|
operations ever done in the OBIDMS directory and the views in between them :
|
|
|
|
|
|
|
|
.. image:: ./images/history.png
|
|
|
|
:width: 150 px
|
|
|
|
:align: center
|