Para metadatos , usaría un esquema SQL similar al siguiente:
CREATE TABLE Project (ac TEXT, - proyecto / acceso al estudio PRIMARY KEY ( ac)); CREATE TABLE Sample (- muestra biológica / biopsia ac TEXT, PRIMARY KEY (ac)); CREATE TABLE AnalysisSample (prj_ac TEXT, - project acccession (Project.ac) symbol TEXT, - un nombre corto único en el proyecto sample_ac TEXT, - muestra de acceso (Sample.ac) PRIMARY KEY (prj_ac, símbolo)); CREATE TABLE Colección (- un archivo BAM ac TEXT, - colección / acceso al archivo de alineación prj_ac TEXT, - proyecto de acceso ( Project.ac) PRIMARY KEY (ac)); CREAR TABLA ReadGroup (cl_ac TEXT, - acceso de colección (Collection.ac) rg_id TEXT, - @ RG-ID sample_sym TEXT, - @ RG-SM; coincidencia AnalysisSample.symbol CLAVE PRIMARIA (cl_ac, rg_id)); CREAR TABLA VariantSet (- un archivo VCF ac TEXT, - Acceso al archivo VCF prj_ac TEXT, - Acceso al proyecto (Project.ac) CLAVE PRIMARIA (ac)); CREAR TABLA Va riantSample (vs_ac TEXT, - acceso al archivo VCF (VariantSet.ac) sample_sym TEXT, - símbolo de muestra en el archivo VCF; coincidente AnalysisSample.symbol PRIMARY KEY (vs_ac, sample_sym));
En el esquema, tiene tablas Proyecto
y Sample
biológicas, que son independientes entre sí en el alto nivel. Un AnalysisSample
describe una muestra utilizada en BAM o VCF y conecta Project
y Sample
biológico. Es importante destacar que cada AnalysisSample
tiene un símbolo único en un proyecto (consulte el índice principal). Este es el símbolo en una línea de grupo de lectura BAM o en una línea de muestra VCF. Una colección
es, en efecto, un archivo BAM / CRAM. En teoría, un archivo BAM puede contener más de una muestra (aunque es poco común en la práctica), que se aborda en una tabla ReadGroup
separada. Finalmente, un VariantSet
es un archivo VCF. VariantSample
le indica qué muestras se incluyen en cada archivo VCF.
Este es el esqueleto de un esquema completo. Puede agregar campos adicionales a las tablas apropiadas (por ejemplo, ruta de archivo y hg19 / hg38 / etc a Colección
, leer la longitud a ReadGroup
e ID de familia a Sample
). También necesita índices para una unión de tablas eficiente y quizás más tablas para estructuras complejas (por ejemplo, pedigrí).
Para los proyectos en los que he participado, este esquema debería funcionar la mayor parte del tiempo. Está inspirado en el esquema JSON de GA4GH, pero mi versión está en SQL, es más simple y también tiene una estructura ligeramente diferente que creo que es mejor.