From 9400ed3f22ef58ddb8395cb760eb735044f49a88 Mon Sep 17 00:00:00 2001 From: ypriverol Date: Sun, 25 Aug 2024 12:26:26 +0000 Subject: [PATCH] deploy: 4d9af25cd36c5bbfa3b61b15e0a3ae5ae03dcfe6 --- .nojekyll | 0 CNAME | 1 + README.adoc | 554 +++++++++++++ additional.rst | 86 +++ conf.py | 48 ++ documentation.rst | 54 ++ images/contact.png | Bin 0 -> 9781 bytes images/sample-metadata.png | Bin 0 -> 126820 bytes images/sdrf-nutshell.png | Bin 0 -> 56574 bytes index.html | 1496 ++++++++++++++++++++++++++++++++++++ index.rst | 32 + introduction.rst | 40 + requirements.txt | 4 + sdrf.rst | 334 ++++++++ templates.rst | 184 +++++ tools.rst | 45 ++ 16 files changed, 2878 insertions(+) create mode 100644 .nojekyll create mode 100644 CNAME create mode 100644 README.adoc create mode 100644 additional.rst create mode 100644 conf.py create mode 100644 documentation.rst create mode 100644 images/contact.png create mode 100644 images/sample-metadata.png create mode 100644 images/sdrf-nutshell.png create mode 100644 index.html create mode 100644 index.rst create mode 100644 introduction.rst create mode 100644 requirements.txt create mode 100644 sdrf.rst create mode 100644 templates.rst create mode 100644 tools.rst diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..3a54774c8 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +proteomics-sample-metadata.bigbio.io diff --git a/README.adoc b/README.adoc new file mode 100644 index 000000000..09cf6f459 --- /dev/null +++ b/README.adoc @@ -0,0 +1,554 @@ += Sample and Data Relationship Format for Proteomics (SDRF-Proteomics) +:sectnums: +:toc: left +:doctype: book +//only works on some backends, not HTML +:showcomments: +//use style like Section 1 when referencing within the document. +:xrefstyle: short +:figure-caption: Figure +:pdf-page-size: A4 + +//GitHub specific settings +ifdef::env-github[] +:tip-caption: :bulb: +:note-caption: :information_source: +:important-caption: :heavy_exclamation_mark: +:caution-caption: :fire: +:warning-caption: :warning: +endif::[] + +== Status of this document + +This document provides information to the proteomics community about a proposed standard for sample metadata annotations in public repositories called Sample and Data Relationship File (SDRF)-Proteomics format. Distribution is unlimited. + +Version Draft—this is a draft of version 1.0 + +== Abstract + +The Human Proteome Organisation (HUPO) Proteomics Standards Initiative (PSI) defines community standards for data representation in proteomics to facilitate data comparison, exchange, and verification. This document presents a specification for a sample metadata annotation of proteomics experiments. + +Further detailed information, including any updates to this document, implementations, and examples is available at https://github.com/bigbio/proteomics-metadata-standard. The official PSI web page for the document is the following: http://psidev.info/sdrf. + +== Introduction + +Many resources have emerged that provide raw or integrated proteomics data in the public domain. If these are valuable individually, their integration through re-analysis represents a huge asset for the community [1]. Unfortunately, proteomics experimental design and sample related information are often missing in public repositories or stored in very diverse ways and formats. For example, the CPTAC consortium (https://cptac-data-portal.georgetown.edu/) provides for every dataset a set of excel files with the information on each sample (e.g. https://cptac-data-portal.georgetown.edu/study-summary/S048) including tumor size, origin, but also how every sample is related to a specific raw file (e.g. instrument configuration parameters). As a resource routinely re-analysing public datasets, ProteomicsDB, captures for each sample in the database a minimum number of properties to describe the sample and the related experimental protocol such as tissue, digestion method and instrument (e.g. https://www.proteomicsdb.org/#projects/4267/6228). Such heterogeneity often prevents data interpretation, reproducibility, and integration of data from different resources. This is why we propose a homogenous standard for proteomics metadata annotation. For every proteomics dataset we propose to capture at least three levels of metadata: (i) dataset description, (ii) the sample and data files related information; and (iii) the technical/proteomics specific information in standard data file formats (e.g. the PSI formats mzIdentML, mzML, or mzTab, among others). + +The general description includes minimum information to describe the study overall: title, description, date of publication, type of experiment (e.g. http://proteomecentral.proteomexchange.org/cgi/GetDataset?ID=PXD016060.0-1&outputMode=XML). The standard data files contain mostly the technical metadata associated with the dataset including search engine settings, scores, workflows, configuration files, but do not include information about the sample metadata and/or the experimental design. Currently, all ProteomeXchange partners mandate this information for each dataset. However, the information regarding the sample and its relation to the data files (**Figure 1**) is mostly missing [1]. + +These three levels of metadata are combined in the well-established data formats ISA-TAB [2] (https://www.isacommons.org/) or MAGE-TAB [3], which are used in other omics fields such as metabolomics and transcriptomics. In both data formats, a tab-delimited file is used to annotate the sample metadata and link it to the corresponding data file(s) (sample and data relationship file format—SDRF). Both data formats encode the properties and sample attributes as columns, and each row represents a sample in the study. However, more important that the file-format itself, general guidelines about what information should be encoded to enable reproducibility of the proteomics results are needed. The lack of guidelines to annotate information such as disease stage, cell line code, or organism part, or the analytical information about labelling channels (e.g. TMT, SILAC) makes the data representation incomplete. The consequence is that it is not possible to understand the original experiment, and/or perform a re-analysis of the dataset having all the necessary information for reproducibility purposes. If the information about the fractions, labelling channels, or enrichment methods is not annotated, the reuse and reproduction of the original results will be challenging, if possible, at all. + +image::https://github.com/bigbio/proteomics-metadata-standard/raw/master/sdrf-proteomics/images/sample-metadata.png[] + +**Figure 1**: SDRF-Proteomics file format stores the information of the sample and its relation to the data files in the dataset. The file format includes not only information about the sample but also about how the data was acquired and processed. + +=== Requirements + +The SDRF-Proteomics format describes the sample characteristics and the relationships between samples and data files included in a dataset. The information in SDRF files is organised so that it follows the natural flow of a proteomics experiment. The main requirements to be fulfilled for SDRF-Proteomics format are: + +- The SDRF file is a tab-delimited format where each ROW corresponds to a relationship between a Sample and a Data file (and MS signal corresponding to labelling in the context of multiplexed experiments). +- Each column MUST correspond to an attribute/property of the Sample or the Data file. +- Each value in each cell MUST be the property for a given Sample or Data file. +- The file MUST begin with columns describing the samples of origin and continue with the data files generated from their MS analyses. +- Support for handling unknown values/characteristics. + +=== Issues to be addressed + +The main issues to be addressed by the SDRF are: + +- It MUST be able to represent the sample metadata and the data files generated by the instruments or the analyses. +- It MUST be able to represent the experimental design including the way samples and data have been collected. + +== Notational Conventions + +The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMEND/RECOMMENDED”, “MAY”, “COULD BE”, and “OPTIONAL” are to be interpreted as described in RFC 2119 (2). + +== Documentation + +The official website for SDRF-Proteomics project is https://github.com/bigbio/proteomics-metadata-standard. New use cases, changes to the specification and examples can be added by using Pull requests or issues in GitHub (see introduction to GitHub - https://lab.github.com/githubtraining/introduction-to-github). + +A set of examples and annotated projects from ProteomeXchange can be found here: https://github.com/bigbio/proteomics-metadata-standard/tree/master/annotated-projects + +Multiple tools have been implemented to validate SDRF-Proteomics files for users familiar with Python and Java: + +- sdrf-pipelines (Python - https://github.com/bigbio/sdrf-pipelines): This tool allows to validate an SDRF-Proteomics file. In addition, it allows converting SDRF to other popular pipelines and software configure files such as MaxQuant or OpenMS. + +- jsdrf (Java - https://github.com/bigbio/jsdrf ): These Java library and tool allow validating SDRF-Proteomics files. It also includes a generic data model that can be used by Java applications. + +== Relationship to other specifications + +SDRF-Proteomics is fully compatible with the SDRF file format part of https://www.ebi.ac.uk/arrayexpress/help/magetab_spec.html[MAGE-TAB]. MAGE-TAB is the file format used to store metadata and sample information for transcriptomics experiments. When the proteomeXchange project file is converted to idf file (project description in MAGE-TAB) and is combined with the SDRF-Proteomics a valid MAGE-TAB is obtained. + +SDRF-Proteomics sample information can be embedded into mzTab metadata files. The sample metadata in mzTab contains properties as the columns in the SDRF-Proteomics and values as Sample cell values. + +The SDRF-Proteomics aims to capture the sample metadata and its relationship with the data files (e.g. raw files from mass spectrometers). The SDRF-Proteomics do not aim to capture the downstream analysis part of the experimental design such as what samples should be compared, how they can be combined or parameters for the downstream analysis (FDR or p-values thresholds). The HUPO-PSI community will work in the future to include this information in other file formats such as mzTab or a new type of file format. + +[[ontologies-supported]] +== Ontologies/Controlled Vocabularies Supported + +The list of ontologies/controlled vocabularies (CV) supported are: + +- PSI Mass Spectrometry CV (PSI-MS) +- Experimental Factor Ontology (EFO). +- Unimod protein modification database for mass spectrometry +- PSI-MOD CV (PSI-MOD) +- Cell line ontology +- Drosophila anatomy ontology +- Cell ontology +- Plant ontology +- Uber-anatomy ontology +- Zebrafish anatomy and development ontology +- Zebrafish developmental stages ontology +- Plant Environment Ontology +- FlyBase Developmental Ontology +- Rat Strain Ontology +- Chemical Entities of Biological Interest Ontology +- NCBI organismal classification +- PATO - the Phenotype and Trait Ontology +- PRIDE Controlled Vocabulary (CV) + +[[sdrf-file-format]] +== SDRF-Proteomics file format + +The SDRF-Proteomics file format describes the sample characteristics and the relationships between samples and data files. The file format is a tab-delimited one where each ROW corresponds to a relationship between a Sample and a Data file (and MS signal corresponding to labelling in the context of multiplexed experiments), each column corresponds to an attribute/property of the Sample, and the value in each cell is the specific value of the property for a given Sample (**Figure 2**). + +[#img-sunset] +image::https://github.com/bigbio/proteomics-metadata-standard/raw/master/sdrf-proteomics/images/sdrf-nutshell.png[] + +**Figure 2**: SDRF-Proteomics in a nutshell. The file format is a tab-delimited one where columns are properties of the sample, the data file or the variables under study. The rows are the samples of origin and the cells are the values for one property in a specific sample. + +=== SDRF-Proteomics format rules + +There are general scenarios/use cases that are addressed by the following rules: + +- **Unknown values**: In some cases, the column is mandatory in the format, but for some samples the corresponding value is unknown. In those cases, users SHOULD use ‘not available’. +- **Not Applicable values**: In some cases, the column is mandatory, but for some samples the corresponding value is not applicable. In those cases, users SHOULD use ‘not applicable’. +- **Case sensitivity**: By specification the SDRF is case-insensitive, but we RECOMMEND using lowercase characters throughout all the text (Column names and values). +- **Spaces**: By specification the SDRF is case-sensitive to spaces (sourcename != source name). +- **Column order**: The SDRF MUST start with the source name column (accession/name of the sample of origin), then all the sample characteristics; followed by the assay name corresponding to the MS run. Finally, after the assay name all the comments (properties of the data file generated). +- **Extension**: The extension of the SDRF should be .tsv or .txt. + + +[[sdrf-file-standarization]] +=== SDRF-Proteomics values + +The value for each property (e.g. characteristics, comment) corresponding to each sample can be represented in multiple ways. + +- Free Text (Human readable): In the free text representation, the value is provided as text without Ontology support (e.g. colon or providing accession numbers). This is only RECOMMENDED when the text inserted in the table is the exact name of an ontology/CV term in EFO. If the term is not in EFO, other ontologies can be used. + +|=== +| source name | characteristics[organism] + +| sample 1 |homo sapiens +| sample 2 |homo sapiens +|=== + +- Ontology url (Computer readable): Users can provide the corresponding URI (Uniform Resource Identifier) of the ontology/CV term as a value. This is recommended for enriched files where the user does not want to use intermediate tools to map from free text to ontology/CV terms. + +|=== +| source name | characteristics[organism] + +| Sample 1 |http://purl.obolibrary.org/obo/NCBITaxon_9606 +| Sample 2 |http://purl.obolibrary.org/obo/NCBITaxon_9606 +|=== + +- Key=value representation (Human and Computer readable): The current representation aims to provide a mechanism to represent the complete information of the ontology/CV term including Accession, Name and other additional properties. In the key=value pair representation the Value of the property is represented as an Object with multiple properties, where the key is one of the properties of the object and the value is the corresponding value for the particular key. An example of key value pairs is post-translational modification <> + + NT=Glu->pyro-Glu; MT=fixed; PP=Anywhere;AC=Unimod:27; TA=E + +== SDRF-Proteomics: Samples metadata + +The Sample metadata has different Categories/Headings to organize all the attributes/ column headers of a given sample. Each Sample contains a _source name_ (accession) and a set of _characteristics_. Any proteomics sample MUST contain the following characteristics: + +- *source name*: Unique sample name (it can be present multiple times if the same sample is used several times in the same dataset) +- *characteristics[organism]*: The organism of the Sample of origin. +- *characteristics[disease]*: The disease under study in the Sample. +- *characteristics[organism part]*: The part of organism's anatomy or substance arising from an organism from which the biomaterial was derived, (e.g. liver) +- *characteristics[cell type]*: A cell type is a distinct morphological or functional form of cell. Examples are epithelial, glial etc. + +Example: + +|=== +| source name | characteristics[organism] | characteristics[organism part] | characteristics[disease] | characteristics[cell type] + +|sample_treat | homo sapiens | liver | liver cancer | not available +|sample_control | homo sapiens | liver | liver cancer | not available +|=== + +NOTE: Additional characteristics can be added depending on the type of the experiment and sample. The https://github.com/bigbio/proteomics-metadata-standard/tree/master/templates[SDRF-Proteomics templates] defines a set of templates and checklists of properties that should be provided depending on the proteomics experiment. + +Some important notes: + +- Each characteristic name in the column header SHOULD be a CV term from the EFO ontology. For example, the header _characteristics[organism]_ corresponds to the ontology term Organism. + +- Multiple values (columns) for the same characteristics term are allowed in SDRF-Proteomics. However, it is RECOMMENDED not to use the same column in the same file. If you have multiple phenotypes, you can specify what it refers to or use another more specific term, e.g., "immunophenotype". + +[[from-sample-data]] +== SDRF-Proteomics: Data files metadata + +The connection between the Samples to the Data files is done by using a series of properties and attributes (comments - for backward compatibility with SDRF in transcriptomics comment MUST be used). All the properties referring to the MS run (file) itself are annotated with the category **comment**. The use of comment is mainly aimed at differentiating sample properties from the data properties. It matches a given sample to the corresponding file(s). The word comment is used for backwards-compatibility with gene expression experiments (RNA-Seq and Microarrays experiments). + +The order of the columns is important, _assay name_ SHOULD always be located before the comments. It is RECOMMENDED to put the last column as _comment[data file]_. The following properties MUST be provided for each data file (ms run) file: + +- **assay name**: For SDRF back-compatibility, MSRun cannot be used. Instead, _assay name_ is used. Examples of assay names are: “run 1”, “run_fraction_1_2”. +- **comment[fraction identifier]**: The fraction identifier allows recording the number of a given fraction. The fraction identifier corresponds to this ontology term. It MUST start from 1, and if the experiment is not fractionated, 1 MUST be used for each MSRun (assay). +- **comment[label]**: label describes the label applied to each Sample (if any). In the case of multiplex experiments such as TMT, SILAC, and/or ITRAQ the corresponding label SHOULD be added. For Label-free experiments the label-free sample term MUST be used <>. +- **comment[data file]**: The data file provides the name of the raw file generated by the instrument. The data files can be instrument raw files but also converted peak lists such as mzML, MGF or result files like mzIdentML. +- **comment[instrument]**: Instrument model used to capture the sample <>. + +Example: + +|=== +| | assay name | comment[label] | comment[fraction identifier] | comment[instrument]| comment[data file] +|sample 1| run 1 | label free sample | 1 | NT=LTQ Orbitrap XL | 000261_C05_P0001563_A00_B00K_R1.RAW +|sample 1| run 2 | label free sample | 2 | NT=LTQ Orbitrap XL | 000261_C05_P0001563_A00_B00K_R2.RAW +|=== + +TIP: All the possible _label_ values can be seen in the in the PRIDE CV under the https://www.ebi.ac.uk/ols/ontologies/pride/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FPRIDE_0000514&viewMode=All&siblings=false[Label] node. + +[[label-data]] +=== Label annotations + +In order to annotate quantitative datasets, the SDRF file format uses tags for each channel associated with the sample in _comment[label]_. The label values are organized under the following ontology term Label. Some of the most popular labels are: + +- For label-free experiments the value SHOULD be: label free sample +- For TMT experiments, the SDRF uses the PRIDE ontology terms under sample label. Here are some examples of TMT channels: + + TMT126, TMT127, TMT127C, TMT127N, TMT128 , TMT128C, TMT128N, TMT129, TMT129C, TMT129N, TMT130, TMT130C, TMT130N, TMT131 + +In order to achieve a clear relationship between the label and the sample characteristics, each channel of each sample (in multiplex experiments) SHOULD be defined in a separate row: one row per channel used (annotated with the corresponding _comment[label]_ per file. + +Examples: + +• https://github.com/bigbio/proteomics-metadata-standard/blob/c69665600d5e0ddaf6099b4660cc70764ef6cddf/annotated-projects/PXD000612/sdrf.tsv[Label free] +• https://github.com/bigbio/proteomics-metadata-standard/blob/c69665600d5e0ddaf6099b4660cc70764ef6cddf/annotated-projects/PXD011799/sdrf.tsv[TMT] +• https://github.com/bigbio/proteomics-metadata-standard/blob/a141d6bc225e3df8d35e36f0035307f0c7fadf1d/annotated-projects/PXD017710/sdrf-silac.tsv[SILAC] + +[[instrument]] +==== Type and Model of Mass Spectrometer + +The model of the mass spectrometer SHOULD be specified as _comment[instrument]_. Possible values are listed under https://www.ebi.ac.uk/ols/ontologies/ms/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMS_1000031&viewMode=All&siblings=false[instrument model term]. + +Additionally, it is strongly RECOMMENDED to include comment[MS2 analyzer type]. This is important, e.g. for Orbitrap models where MS2 scans can be acquired either in the Orbitrap or in the ion trap. Setting this value allows to differentiate high-resolution MS/MS data. Possible values of _comment[MS2 analyzer type]_ are mass analyzer types. + +=== Additional Data files technical properties + +It is RECOMMENDED to encode some of the technical parameters of the MS experiment as comments, including the following parameters: + +- Protein Modifications +- Precursor and Fragment ion mass tolerances +- Digestion Enzymes + + +[[ptms]] +==== Protein Modifications + +Sample modifications, (including both chemical modifications and post-translational modifications, PTMs) are originated from multiple sources: artifactual modifications, isotope labeling, adducts that are encoded as PTMs (e.g. sodium) or the most biologically relevant PTMs. + +It is RECOMMENDED to provide the modifications expected in the sample including the amino acid affected, whether it is Variable or Fixed (also Custom and Annotated modifications are supported) and included other properties such as mass shift/delta mass and the position (e.g. anywhere in the sequence). + +The RECOMMENDED name of the column for sample modification parameters is: comment[modification parameters]. + +The modification parameters are the name of the ontology term MS:1001055. + +For each modification, different properties are captured using a key=value pair structure including name, position, etc. All the possible (optional) features available for modification parameters are: + + +|=== +|Property |Key |Example | Mandatory(:white_check_mark:)/Optional(:zero:) |comment + +|Name of the Modification| NT | NT=Acetylation | :white_check_mark: | * Name of the Term in this particular case Modification, for custom modifications can be a name defined by the user. +|Modification Accession | AC |AC=UNIMOD:1 | :zero: | Accession in an external database UNIMOD or PSI-MOD supported. +|Chemical Formula | CF | CF=H(2)C(2)O | :zero: | This is the chemical formula of the added or removed atoms. For the formula composition please follow the guidelines from http://www.unimod.org/names.html[UNIMOD] +|Modification Type | MT | MT=Fixed | :zero: | This specifies which modification group the modification should be included with. Choose from the following options: [Fixed, Variable, Annotated]. _Annotated_ is used to search for all the occurrences of the modification into an annotated protein database file like UNIPROT XML or PEFF. +|Position of the modification in the Polypeptide | PP | PP=Any N-term | :zero: | Choose from the following options: [Anywhere, Protein N-term, Protein C-term, Any N-term, Any C-term]. Default is *Anywhere*. +|Target Amino acid | TA | TA=S,T,Y | :white_check_mark: | The target amino acid letter. If the modification targets multiple sites, it can be separated by `,`. +|Monoisotopic Mass | MM | MM=42.010565 | :zero: | The exact atomic mass shift produced by the modification. Please use at least 5 decimal places of accuracy. This should only be used if the chemical formula of the modification is not known. If the chemical formula is specified, the monoisotopic mass will be overwritten by the calculated monoisotopic mass. +|Target Site | TS | TS=N[^P][ST] | :zero: | For some software, it is important to capture complex rules for modification sites as regular expressions. These use cases should be specified as regular expressions. +|=== + +We RECOMMEND for indicating the modification name, to use the UNIMOD interim name or the PSI-MOD name. For custom modifications, we RECOMMEND using an intuitive name. If the PTM is unknown (custom), the Chemical Formula or Monoisotopic Mass MUST be annotated. + +An example of an SDRF-Proteomics file with sample modifications annotated, where each modification needs an extra column: + +|=== +| |comment[modification parameters] | comment[modification parameters] + +|sample 1| NT=Glu->pyro-Glu; MT=fixed; PP=Anywhere;AC=Unimod:27; TA=E | NT=Oxidation; MT=Variable; TA=M +|=== + +[[cleavage-agents]] +==== Cleavage agents + +The REQUIRED _comment [cleavage agent details]_ property is used to capture the enzyme information. Similar to protein modification, a key=value pair representation is used to encode the following properties for each enzyme: + +|=== +|Property |Key |Example | Mandatory(:white_check_mark:)/Optional(:zero:) | comment +|Name of the Enzyme | NT | NT=Trypsin | :white_check_mark: | * Name of the Term in this particular case Name of the Enzyme. +|Enzyme Accession | AC |AC=MS:1001251 | :zero: | Accession in an external PSI-MS Ontology definition under the following category https://www.ebi.ac.uk/ols/ontologies/ms/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMS_1001045[Cleavage agent name]. +|Cleavage site regular expression | CS | CS=(?<=[KR])(?!P) | :zero: | The cleavage site defined as a regular expression. +|=== + +An example of an SDRF-Proteomics with annotated endopeptidase: + +|=== +| source name |...|comment[cleavage agent details] + +|sample 1| ....|NT=Trypsin;AC=MS:1001251 +|=== + +NOTE: If no endopeptidase is used, for example, in the case of Top-down/intact protein experiments, the value SHOULD be ‘not applicable’. + +==== Precursor and Fragment mass tolerances + +For proteomics experiments, it is important to encode different mass tolerances (for precursor and fragment ions). + +|=== +| |comment[fragment mass tolerance] | comment[precursor mass tolerance] + +|sample 1| 0.6 Da | 20 ppm +|=== + +Units for the mass tolerances (either Da or ppm) MUST be provided. + +== SDRF-Proteomics study variables + +The variable/property under study SHOULD be highlighted using the factor value category. For example, the _factor value[tissue]_ is used when the user wants to compare expression across different tissues. You can add Multiple variables under study by providing multiple factor values. + +|=== +|factor value | :zero: | 0..* | “factor value” columns SHOULD indicate which experimental factor/variable is used as the hypothesis to perform the data analysis. The “factor value” columns SHOULD occur after all characteristics and the attributes of the samples. | factor value[phenotype] +|=== + +[[conventions]] +== SDRF-Proteomics conventions + +Conventions define how to encode some particular information in the file format in specific use cases. Conventions define a set of new columns that are needed to represent a particular use case or experiment type (e.g. phosphorylation dataset). In addition, conventions define how some specific free-text columns (value that is not defined as ontology terms) should be written. Conventions are compiled from the proteomics community using https://github.com/bigbio/proteomics-metadata-standard/issues or pull-request and will be added to updated versions of this specification document in the future. + +In the convention section <>, the columns are described and defined, while in the section use cases and templates <> the columns needed to describe a use case are specified. + +=== How to encode age + +One of the characteristics of a patient sample can be the age of an individual. It is RECOMMENDED to provide the age in the following format: {X}Y{X}M{X}D. Some valid examples are: + +- 40Y (forty years) +- 40Y5M (forty years and 5 months) +- 40Y5M2D (forty years, 5 months, and 2 days) + +When needed, weeks can also be used: 8W (eight weeks) + +Age interval: + +Sometimes the sample does not have an exact age but a range of age. To annotate an age range the following standard is RECOMMENDED: + + 40Y-85Y + +This means that the subject (sample) is between 40 and 85 years old. Other temporal information can be encoded similarly. + +[[phos-pho]] +=== Phosphoproteomics and other post-translational modifications enriched studies + +In PTM-enriched experiments, the _characteristics[enrichment process]_ SHOULD be provided. The different values already included in EFO are: + +- enrichment of phosphorylated Protein +- enrichment of glycosylated Protein + +This characteristic can be used as a _factor value[enrichment process]_ to differentiate the expression between proteins in the phospho-enriched sample compared with the control. + +[[pooled-samples]] +=== Pooled samples + +When multiple samples are pooled into one, the general approach is to annotate them separately, abiding by the general rule: one row stands for one sample-to-file relationship. In this case, multiple rows are created for the corresponding data file, much like in <>. + +One possible exception is made for the case when one channel e.g., in a TMT/iTRAQ multiplexed experiment is used for a sample pooled from all other channels, typically for normalization purposes. In this case, it is not necessary to repeat all sample annotations. Instead, a special characteristic can be used: + +|=== +|source name |characteristics[pooled sample] | assay name | comment[label] | comment[data file] + +| sample 1 | not pooled | run 1 | TMT131 | file01.raw +| sample 2 | not pooled | run 1 | TMT131C | file01.raw +| sample 10 | SN=sample 1,sample 2, ... sample 9| run 1 | TMT128 | file01.raw +|=== + +`SN` stands for source names and lists `source name` fields of samples that are annotated in the same file and *used in the same experiment and same MS run*. + +Another possible value for _characteristics[pooled sample]_ is a string `pooled` for cases when it is known that a sample is pooled but the individual samples cannot be annotated. + +=== Derived samples (such as patient-derived xenografts) + +In cancer research, patient-derived xenografts (PDX) are commonly used. In those, the patient’s tumor is transplanted into another organism, usually a mouse. In these cases, the metadata, such as age and sex, MUST refer to the original patient and not the mouse. + +PDX samples SHOULD be annotated by using the column name _characteristics[xenograft]_. The value should then describe the growth condition, such as ‘pancreatic cancer cells grown in nude mice’. + +For experiments where both the PDX and the original tumor are measured, the PDX entry SHOULD reference the respective tumor sample’s source name in the _characteristics[source name]_ column. Non-PDX samples SHOULD contain the “not applicable” value in the _characteristics[xenograft]_ and the characteristics[source name] column. Both tumor and PDX samples SHOULD reference the patient using the characteristics[individual] column. This column SHOULD contain some sort of patient identifier. + +=== Spiked-in samples + +There are multiple scenarios when a sample is spiked with additional analytes. Peptides, proteins, or mixtures can be added to the sample as controlled amounts to provide a standard or ground truth for quantification, or for retention time alignment, etc. + +To include information about the spiked compounds, use _characteristics[spiked compound]_. The information is provided in key-value pairs. Here are the keys and values that SHOULD be provided: + +|=== +|Key | Meaning | Examples | Peptide | Protein | Mixture | Other + +|SP | Species | Escherichia coli K-12 | :zero: | :zero: | :zero: | :zero: +|CT | Compound type | protein, peptide, mixture, other | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: +|QY | Quantity (molar or mass) | 10 mg, 20 nmol | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: +|PS | Peptide sequence | PEPTIDESEQ |:white_check_mark: | | | +|AC | Uniprot Accession | A9WZ33 | | :white_check_mark: | | +|CN | Compound name | `iRT mixture`, `substance name` | | :zero: | :zero: | :zero: +|CV | Compound vendor | `in-house` or vendor name | :zero: | :zero: | :white_check_mark: | :zero: +|CS | Compound specification URI | `http://vendor.web.site/specs/coomercial-kit.xlsx` | :zero: | :zero: | :zero: | :zero: +|CF | Compound formula | `C2H2O` | | | | :zero: +|=== + +In addition to specifying the component and its quantity, the injected mass of the main sample SHOULD be specified as _characteristics[mass]_. + +An example of SDRF-Proteomics for a sample spiked with a peptide would be: + +|=== +|characteristics[mass] | characteristics[spiked compound] +|1 ug | CT=peptide;PS=PEPTIDESEQ;QY=10 fmol +|=== + +For multiple spiked components, the column _characteristics[spiked compound]_ may be repeated. + +If the spiked component is another biological sample (e.g. __E. coli__ lysate spiked into human sample), then the spiked component MUST be annotated in its own row. Both components of the sample SHOULD have `characteristics[mass]` specified. Inclusion of _characteristics[spiked compound]_ is optional in this case; if provided, it SHOULD be the string `spiked` for the spiked sample. + +=== Synthetic peptide libraries + +It is common to use synthetic peptide libraries for proteomics, and MS use cases include: + +• Benchmark of analytical and bioinformatics methods and algorithms. +• Improvement of peptide identification/quantification using spectral libraries. + +When describing synthetic peptide libraries, most of the sample metadata can be declared as “not applicable”. However, some authors can annotate the organism for example because they know the library has been designed from specific peptide species, see example Synthetic Peptide experiment (https://github.com/bigbio/proteomics-metadata-standard/blob/master/annotated-projects/PXD000759/sdrf.tsv). + +It is important to annotate that the sample is a synthetic peptide library, this can be done by adding the characteristics[synthetic peptide]. The possible values are “synthetic” or “not synthetic”. + +=== Normal and healthy samples + +Samples from healthy patients or individuals normally appear in manuscripts and annotations as healthy or normal. We RECOMMEND using the word “normal” mapped to term PATO_0000461 that is in EFO: normal PATO term. Example: + +|=== +| source name | characteristics[organism] | characteristics[organism part] | characteristics[phenotype] | characteristics[compound] | factor value[phenotype] + +|sample_treat | homo sapiens | Whole Organism | necrotic tissue | drug A | necrotic tissue +|sample_control | homo sapiens | Whole Organism | normal | none | normal +|=== + +=== Encoding sample technical and biological replicates + +Different measurements of the same biological sample are often categorized as (i) Technical or (ii) Biological replicates, based on whether they are (i) matched on all variables, e.g. same sample and same protocol; or (ii) different samples matched on explanatory variable(s), e.g. different patients receiving a placebo, in a placebo vs. drug trial. Technical and biological replicates have different levels of independence, which must be taken into account during data interpretation. + +For a given experiment, there are different levels to which samples can be matched - e.g., same sample, sample protocol, covariates - the definition of technical replicate can therefore vary based on the number of variables included. In addition, an experiment might be used in multiple models with different explanatory variable(s), and biological replicates in one model would not be replicates in another. Therefore, Technical vs. Biological considerations, while sometimes relevant to analytical and statistical interpretation, fall beyond the scope of the SDRF-Proteomics format. However, data providers are encouraged to provide any identifier - e.g. Biological_replicate_1, Technical_replicate_2 - that would help link the samples to their analytical and statistical analysis as comments. A good starting point for the SDRF-Proteomics specification is the following: + +**technical replicate**: It is defined as repeated measurements of the same sample that represent independent measures of the random noise associated with protocols or equipment [4]. + +In MS-based proteomics, a technical replicate can be, for example, doing the full sample preparation from extraction to MS multiple times to control variability in the instrument and sample preparation. Another valid example would be to replicate only one part of the analytical method, for example, run the sample twice on the LC-MS/MS. technical replicates indicate if measurements are scientifically robust or noisy, and how large the measured effect must be to stand out above that noise. + +In the following example, only if the technical replicate column is provided, one can distinguish quantitative values of the same fraction but different technical replicates. + +|=== +| source name | assay name | comment[label] | comment[fraction identifier] | comment[technical replicate] | comment[data file] +| Sample 1 | run 1 | label free sample | 1 | 1 | 000261_C05_P0001563_A00_B00K_F1_TR1.RAW +| Sample 1 | run 2 | label free sample | 2 | 1 | 000261_C05_P0001563_A00_B00K_F2_TR1.RAW +| Sample 1 | run 3 | label free sample | 1 | 2 | 000261_C05_P0001563_A00_B00K_F1_TR2.RAW +| Sample 1 | run 4 | label free sample | 2 | 2 | 000261_C05_P0001563_A00_B00K_F2_TR2.RAW +|=== + +The _comment[technical replicate]_ column is MANDATORY. Please fill it with 1 if technical replicates are not performed in a study. + +**Biological replicate**: parallel measurements of biologically distinct samples that capture biological variation, which may itself be a subject of study or a source of noise. Biological replicates address if and how widely the results of an experiment can be generalized. For example, repeating a particular assay with independently generated samples, individuals or samples derived from various cell types, tissue types, or organisms, to see if similar results can be observed. Context is critical, and appropriate biological replicates will indicate whether an experimental effect is sustainable under a different set of biological variables or an anomaly itself. + +In SDRF-Proteomics, biological replicates can be annotated using _characteristics[biological replicate]_ and it is MANDATORY. Please fill it with 1 if biological replicates are not performed in a study. + +Some examples with explicit annotation of the biological replicates can be found here: + +- https://github.com/bigbio/proteomics-metadata-standard/blob/c3a56b076ef381280dfcb0140d2520126ace53ff/annotated-projects/PXD006401/sdrf.tsv + +[[sample-prep]] +=== Sample preparation properties + +In order to encode sample preparation details, we strongly RECOMMEND specifying the following parameters. + +- **comment [depletion]**: The removal of specific components of a complex mixture of proteins or peptides based on some specific property of those components. The values of the columns will be `no depletion` or `depletion`. In the case of depletion `depleted fraction` of `bound fraction` can be specified. + +- **comment [reduction reagent]**: The chemical reagent that is used to break disulfide bonds in proteins. The values of the column are under the term https://www.ebi.ac.uk/ols/ontologies/pride/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FPRIDE_0000607&viewMode=All&siblings=false[reduction reagent]. For example, DTT. + +- **comment [alkylation reagent]**: The alkylation reagent that is used to covalently modify cysteine SH-groups after reduction, preventing them from forming unwanted novel disulfide bonds. The values of the column are under the term https://www.ebi.ac.uk/ols/ontologies/pride/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FPRIDE_0000598&viewMode=All&siblings=false[alkylation reagent]. For example, IAA. + +- **comment [fractionation method]**: The fraction method used to separate the sample. The values of this term can be read under PRIDE ontology term https://www.ebi.ac.uk/ols/ontologies/pride/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FPRIDE_0000550[Fractionation method]. For example, Off-gel electrophoresis. + +[[fragment-proper]] +=== MS/MS properties + +- **comment[collision energy]**: Collision energy can be added as non-normalized (10000 eV) or normalized (1000 NCE) value. + +- **comment[dissociation method]**: This property will provide information about the fragmentation method, like HCD, CID. The values of the column are under the term https://www.ebi.ac.uk/ols/ontologies/ms/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMS_1000044&viewMode=All&siblings=false[dissociation method]. + +[[raw-file-uri]] +=== RAW file URI + +We RECOMMEND including the public URI of the file if available. For example, for ProteomeXchange datasets, the URI from the FTP can be provided: + +|=== +| |... |comment[file uri] + +|sample 1| ... |https://ftp.pride.ebi.ac.uk/pride/data/archive/2017/09/PXD005946/000261_C05_P0001563_A00_B00K_R1.RAW +|=== + +[[multiple-projects]] +=== Multiple projects into one annotation file + +Curators can decide to annotate multiple ProteomeXchange datasets into one large SDRF-Proteomics file for reanalysis purposes. If that is the case, it is RECOMMENDED to use the comment[proteomexchange accession number] to differentiate between different datasets. + +[[use-cases]] +== SDRF-Proteomics use-cases representation (templates) + +Please visit the following document to read about SDRF-Proteomics use cases, templates, and https://github.com/bigbio/proteomics-metadata-standard/blob/master/templates/README.adoc[checklists]. + +[[example-annotated-datasets]] +== Examples of annotated datasets + +|=== +|Dataset Type | ProteomeXchange / Pubmed Accession | SDRF URL +|Label-free | PXD008934 | https://github.com/bigbio/proteomics-metadata-standard/tree/master/annotated-projects/PXD008934 +|TMT | PXD017710 | https://github.com/bigbio/proteomics-metadata-standard/tree/master/annotated-projects/PXD017710 + +|=== + +== Ongoing use case discussions + +We have created a file in GitHub https://github.com/bigbio/proteomics-metadata-standard/blob/master/sdrf-proteomics/use-cases-under-development.adoc[Ongoing use case discussions] where we aggregate all the ongoing discussions about the format. + +== Intellectual Property Statement + +The PSI takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Copies of claims of rights made available for publication and any assurances of licenses to be made available or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the PSI Chair. + +The PSI invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this recommendation. Please address the information to the PSI Chair (see contacts information at PSI website). + +== Copyright Notice + +Copyright (C) Proteomics Standards Initiative (2020). All Rights Reserved. + +This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without the restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the PSI or other organizations, except as needed for the purpose of developing Proteomics Recommendations in which case the procedures for copyrights defined in the PSI Document process must be followed, or as required to translate it into languages other than English. + +The limited permissions granted above are perpetual and will not be revoked by the PSI or its successors or assigns. + +This document and the information contained herein is provided on an "AS IS" basis and THE PROTEOMICS STANDARDS INITIATIVE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE." + +== How to cite + +Please cite this document as: + +Dai C, Füllgrabe A, Pfeuffer J, Solovyeva EM, Deng J, Moreno P, Kamatchinathan S, Kundu DJ, George N, Fexova S, Grüning B, Föll MC, Griss J, Vaudel M, Audain E, Locard-Paulet M, Turewicz M, Eisenacher M, Uszkoreit J, Van Den Bossche T, Schwämmle V, Webel H, Schulze S, Bouyssié D, Jayaram S, Duggineni VK, Samaras P, Wilhelm M, Choi M, Wang M, Kohlbacher O, Brazma A, Papatheodorou I, Bandeira N, Deutsch EW, Vizcaíno JA, Bai M, Sachsenberg T, Levitsky LI, Perez-Riverol Y. A proteomics sample metadata representation for multiomics integration and big data analysis. Nat Commun. 2021 Oct 6;12(1):5854. doi: 10.1038/s41467-021-26111-3. PMID: 34615866; PMCID: PMC8494749. [Manuscript - https://www.nature.com/articles/s41467-021-26111-3] + + +== References + + +- [1] Y. Perez-Riverol, S. European Bioinformatics Community for Mass, Toward a Sample Metadata Standard in Public Proteomics Repositories, J Proteome Res 19(10) (2020) 3906-3909. +- [2] A. Gonzalez-Beltran, E. Maguire, S.A. Sansone, P. Rocca-Serra, linkedISA: semantic representation of ISA-Tab experimental metadata, BMC Bioinformatics 15 Suppl 14 (2014) S4. +- [3] T.F. Rayner, P. Rocca-Serra, P.T. Spellman, H.C. Causton, A. Farne, E. Holloway, R.A. Irizarry, J. Liu, D.S. Maier, M. Miller, K. Petersen, J. Quackenbush, G. Sherlock, C.J. Stoeckert, Jr., J. White, P.L. Whetzel, F. Wymore, H. Parkinson, U. Sarkans, C.A. Ball, A. Brazma, A simple spreadsheet-based, MIAME-supportive format for microarray data: MAGE-TAB, BMC Bioinformatics 7 (2006) 489. +- [4] P. Blainey, M. Krzywinski, N. Altman, Points of significance: replication, Nat Methods 11(9) (2014) 879-80. + diff --git a/additional.rst b/additional.rst new file mode 100644 index 000000000..a8caf58a9 --- /dev/null +++ b/additional.rst @@ -0,0 +1,86 @@ +Additional conventions +######################## + +Specific use cases and conventions +************************************* + +Conventions define how to encode some particular information in the file format by supporting specific use cases. Conventions define a set of new columns that are needed to represent a particular use case or experiment type (e.g., phosphorylation-enriched dataset). In addition, conventions define how some specific free-text columns (values that are not defined as ontology terms) should be written. + +Conventions are documented and compiled from at https://github.com/bigbio/proteomics-sample-metadata/issues or by performing a pull-request. New conventions will be added to updated versions of this specification document in the future. It is planned that, unlike in other PSI formats, more regular updates will need to be done to be able to explain how new use cases for the format can be accommodated. + +How to encode age and other elapsed times +========================================== + +One of the characteristics of a sample can be the age of an individual. It is RECOMMENDED to provide the age in the following format: {X}Y{X}M{X}D. Some valid examples are: + +- 40Y (forty years) +- 40Y5M (forty years and 5 months) +- 40Y5M2D (forty years, 5 months, and 2 days) + +When needed, weeks can also be used: 8W (eight weeks) + +Age interval: + +Sometimes the sample does not have an exact age but contains a range of ages. To annotate an age range the following convention is RECOMMENDED: + +40Y-85Y + +This means that the subject (sample) is between 40 and 85 years old. +Other temporal information can be encoded similarly. + +Phosphoproteomics and other post-translational modifications enriched studies +============================================================================= + +In PTM-enriched experiments, the characteristics[enrichment process] SHOULD be provided. The different values already included in EFO are: + +- enrichment of phosphorylated proteins +- enrichment of glycosylated proteins + +This characteristic can be used as a factor value[enrichment process] to differentiate the expression between proteins in the phospho-enriched sample when compared with the control. + +Synthetic peptide libraries +=========================== + +It is common to use synthetic peptide libraries for multiple use cases including: + +- Benchmark of analytical and bioinformatics methods and algorithms. +- Improvement of peptide identification/quantification using spectral libraries. + +When describing synthetic peptide libraries most of the sample metadata can be declared as “not applicable”. However, some authors can also annotate the organism, for example, because they know that the library has been designed from specific peptide species, see example the following experiment containing synthetic peptides (`Example PXD000759 `_). + +In these cases, it is important to annotate that the sample is composed of a synthetic peptide library. This can be done by adding the **characteristics[synthetic peptide]**. The possible values are “synthetic”, “not synthetic” or “mixed”. + +Normal and healthy samples +========================== + +Samples from healthy patients or individuals normally appear in manuscripts and are often annotated as healthy or normal. We RECOMMEND using the word “normal” mapped to the CV term PATO_0000461, which is also included in EFO: `normal PATO term `_. + +Example: + +.. list-table:: Minimum data metadata for any proteomics dataset + :widths: 14 14 14 14 14 14 + :header-rows: 1 + + * - source name + - characteristics[organism] + - characteristics[organism part] + - characteristics[phenotype] + - characteristics[compound] + - factor value[phenotype] + * - sample_treat + - homo sapiens + - liver + - necrotic tissue + - drug A + - necrotic tissue + * - sample_control + - homo sapiens + - liver + - normal + - none + - normal + +Multiple projects into one annotation file +========================================== + +It may be needed to annotate multiple ProteomeXchange datasets into one large SDRF-Proteomics file e.g., reanalysis purposes. If that is the case, it is RECOMMENDED to use the column name comment[proteomexchange accession number] to differentiate between different datasets. diff --git a/conf.py b/conf.py new file mode 100644 index 000000000..dfae8ea10 --- /dev/null +++ b/conf.py @@ -0,0 +1,48 @@ +# Configuration file for the Sphinx documentation builder. +# +# For a full list of options see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +import os +import sys + +# -- Project information ----------------------------------------------------- + +project = 'proteomics sample metadata' +author = 'Yasset Perez-Riverol' +release = '1.1' + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. +# These can be extensions coming with Sphinx or custom ones. +extensions = [ + 'sphinx_asciidoc', # AsciiDoc support +] + +# The master toctree document. +master_doc = 'index' + +# The suffix(es) of source filenames. +source_suffix = { + '.rst': 'restructuredtext', + '.adoc': 'asciidoc', # Include .adoc files +} + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The theme to use for HTML and HTML Help pages. +html_theme = 'sphinx_rtd_theme' + +# -- Options for sphinx-asciidoc -------------------------------------------- + +# Additional arguments to pass to asciidoctor +asciidoc_args = ['-a', 'toc=left', '-a', 'sectnums'] + +# -- Path setup -------------------------------------------------------------- +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# sys.path.insert(0, os.path.abspath('.')) diff --git a/documentation.rst b/documentation.rst new file mode 100644 index 000000000..ed427512e --- /dev/null +++ b/documentation.rst @@ -0,0 +1,54 @@ +Additional information +========================= + +Ontologies/Controlled Vocabularies Supported +--------------------------------------------- + +The list of ontologies/controlled vocabularies (CV) supported are: + +- PSI Mass Spectrometry CV (`PSI-MS `_) +- Experimental Factor Ontology (`EFO `_). +- Unimod protein modification database for mass spectrometry (`UNIMOD `_) +- PSI-MOD CV (`PSI-MOD `_) +- Cell line ontology (`CLO `_) +- Drosophila anatomy ontology (`FBBT `_) +- Cell ontology (`CL `_) +- Plant ontology (`PO `_) +- Uber-anatomy ontology (`UBERON `_) +- Zebrafish anatomy and development ontology (`ZFA `_) +- Zebrafish developmental stages ontology (`ZFS `_) +- Plant Environment Ontology (`PEO `_) +- FlyBase Developmental Ontology (`FBdv `_) +- Rat Strain Ontology (`RSO `_) +- Chemical Entities of Biological Interest Ontology (`CHEBI `_) +- NCBI organismal classification (`NCBITaxon `_) +- PATO - the Phenotype and Trait Ontology (`PATO `_) +- PRIDE Controlled Vocabulary (`PRIDE `_) + +Relations with other formats +----------------------------------------------- + +SDRF-Proteomics is fully compatible with the SDRF file format part of `MAGE-TAB `_. The MAGE-TAB is the file format to store the metadata and sample information on transcriptomics experiments. +MAGE-TAB (MicroArray Gene Expression Tabular) is a standard format for storing and exchanging microarray and other high-throughput genomics data. It consists of two spreadsheets for each experiment: the Investigation Description Format (IDF) file and the Sample and Data Relationship Format (SDRF) file. + +The IDF file contains general information about the experiment, such as the project title, description, and funding sources, as well as details about the experimental design, such as the type of technology used, the organism studied, and the experimental conditions. +The SDRF file contains detailed information about the samples and the data generated from them, including sample annotations, data file locations, and data processing parameters. It also defines the relationships between samples, such as replicates or time-course experiments. Together, the IDF and SDRF files provide a complete description of the experiment and the data generated from it, allowing researchers to share and compare their data with others in a standardized and interoperable format. + +SDRF-Proteomics sample information can be embedded into mzTab metadata files. The mzTab (Mass Spectrometry Tabular) format is a standard format for reporting the results of proteomics and metabolomics experiments. It can be used to store information such as protein identification, peptide sequences, and quantitation results. +The mzTab format allows for the embedding of sample metadata into the file, which includes information about the samples and the experimental conditions. This metadata can be derived from the Sample and Data Relationship Format (SDRF) file in a proteomics experiment. +In the mzTab format, sample metadata is stored in a separate section called the "metadata section," which contains a list of key-value pairs that describe the samples. The keys in the metadata section correspond to the column names in the SDRF file, and the values correspond to the values in the Sample cells. +By embedding sample metadata into the mzTab file, researchers can ensure that all relevant information about the experiment is stored in a single file, making it easier to share and compare data with others. + + +Documentation +----------------------------- + +The official website for SDRF-Proteomics project is https://github.com/bigbio/proteomics-sample-metadata. New use cases, changes to the specification and examples can be added by using Pull requests or issues in GitHub (see introduction to `GitHub `_). + +A set of examples and annotated projects from ProteomeXchange can be `found here `_ + +Multiple tools have been implemented to validate SDRF-Proteomics files: + +- `sdrf-pipelines `_ (Python): This tool allows a user to validate an SDRF-Proteomics file. In addition, it allows a user to convert SDRF to other popular pipelines and software configuration files such as: MaxQuant or OpenMS. + +- `jsdrf `_ (Java): This Java library and tool allows a user to validate SDRF-Proteomics files. It also includes a generic data model that can be used by Java applications. diff --git a/images/contact.png b/images/contact.png new file mode 100644 index 0000000000000000000000000000000000000000..d1659e998b696b4a092ad75345278dd51e6ce6a7 GIT binary patch literal 9781 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 FWW9^w9aSzSMNaw29eac80qj7e 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

Sudhw#k8&Kt*Dw|m+schJFZo1aK&Jf;di3P25 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 AO8@`> literal 0 HcmV?d00001 diff --git a/images/sdrf-nutshell.png b/images/sdrf-nutshell.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2a8fbea23558f96164ab2ccf3224e124830b74 GIT binary patch literal 56574 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 CqHvu6 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 000000000..cf837e689 --- /dev/null +++ b/index.html @@ -0,0 +1,1496 @@ + + + + + + + +Sample and Data Relationship Format for Proteomics (SDRF-Proteomics) + + + +

+
+
+

1. Status of this document

+
+
+

This document provides information to the proteomics community about a proposed standard for sample metadata annotations in public repositories called Sample and Data Relationship File (SDRF)-Proteomics format. Distribution is unlimited.

+
+
+

Version Draft—this is a draft of version 1.0

+
+
+
+
+

2. Abstract

+
+
+

The Human Proteome Organisation (HUPO) Proteomics Standards Initiative (PSI) defines community standards for data representation in proteomics to facilitate data comparison, exchange, and verification. This document presents a specification for a sample metadata annotation of proteomics experiments.

+
+
+

Further detailed information, including any updates to this document, implementations, and examples is available at https://github.com/bigbio/proteomics-metadata-standard. The official PSI web page for the document is the following: http://psidev.info/sdrf.

+
+
+
+
+

3. Introduction

+
+
+

Many resources have emerged that provide raw or integrated proteomics data in the public domain. If these are valuable individually, their integration through re-analysis represents a huge asset for the community [1]. Unfortunately, proteomics experimental design and sample related information are often missing in public repositories or stored in very diverse ways and formats. For example, the CPTAC consortium (https://cptac-data-portal.georgetown.edu/) provides for every dataset a set of excel files with the information on each sample (e.g. https://cptac-data-portal.georgetown.edu/study-summary/S048) including tumor size, origin, but also how every sample is related to a specific raw file (e.g. instrument configuration parameters). As a resource routinely re-analysing public datasets, ProteomicsDB, captures for each sample in the database a minimum number of properties to describe the sample and the related experimental protocol such as tissue, digestion method and instrument (e.g. https://www.proteomicsdb.org/#projects/4267/6228). Such heterogeneity often prevents data interpretation, reproducibility, and integration of data from different resources. This is why we propose a homogenous standard for proteomics metadata annotation. For every proteomics dataset we propose to capture at least three levels of metadata: (i) dataset description, (ii) the sample and data files related information; and (iii) the technical/proteomics specific information in standard data file formats (e.g. the PSI formats mzIdentML, mzML, or mzTab, among others).

+
+
+

The general description includes minimum information to describe the study overall: title, description, date of publication, type of experiment (e.g. http://proteomecentral.proteomexchange.org/cgi/GetDataset?ID=PXD016060.0-1&outputMode=XML). The standard data files contain mostly the technical metadata associated with the dataset including search engine settings, scores, workflows, configuration files, but do not include information about the sample metadata and/or the experimental design. Currently, all ProteomeXchange partners mandate this information for each dataset. However, the information regarding the sample and its relation to the data files (Figure 1) is mostly missing [1].

+
+
+

These three levels of metadata are combined in the well-established data formats ISA-TAB [2] (https://www.isacommons.org/) or MAGE-TAB [3], which are used in other omics fields such as metabolomics and transcriptomics. In both data formats, a tab-delimited file is used to annotate the sample metadata and link it to the corresponding data file(s) (sample and data relationship file format—SDRF). Both data formats encode the properties and sample attributes as columns, and each row represents a sample in the study. However, more important that the file-format itself, general guidelines about what information should be encoded to enable reproducibility of the proteomics results are needed. The lack of guidelines to annotate information such as disease stage, cell line code, or organism part, or the analytical information about labelling channels (e.g. TMT, SILAC) makes the data representation incomplete. The consequence is that it is not possible to understand the original experiment, and/or perform a re-analysis of the dataset having all the necessary information for reproducibility purposes. If the information about the fractions, labelling channels, or enrichment methods is not annotated, the reuse and reproduction of the original results will be challenging, if possible, at all.

+
+
+
+sample metadata +
+
+
+

Figure 1: SDRF-Proteomics file format stores the information of the sample and its relation to the data files in the dataset. The file format includes not only information about the sample but also about how the data was acquired and processed.

+
+
+

3.1. Requirements

+
+

The SDRF-Proteomics format describes the sample characteristics and the relationships between samples and data files included in a dataset. The information in SDRF files is organised so that it follows the natural flow of a proteomics experiment. The main requirements to be fulfilled for SDRF-Proteomics format are:

+
+
+
    +
  • +

    The SDRF file is a tab-delimited format where each ROW corresponds to a relationship between a Sample and a Data file (and MS signal corresponding to labelling in the context of multiplexed experiments).

    +
  • +
  • +

    Each column MUST correspond to an attribute/property of the Sample or the Data file.

    +
  • +
  • +

    Each value in each cell MUST be the property for a given Sample or Data file.

    +
  • +
  • +

    The file MUST begin with columns describing the samples of origin and continue with the data files generated from their MS analyses.

    +
  • +
  • +

    Support for handling unknown values/characteristics.

    +
  • +
+
+
+
+

3.2. Issues to be addressed

+
+

The main issues to be addressed by the SDRF are:

+
+
+
    +
  • +

    It MUST be able to represent the sample metadata and the data files generated by the instruments or the analyses.

    +
  • +
  • +

    It MUST be able to represent the experimental design including the way samples and data have been collected.

    +
  • +
+
+
+
+
+
+

4. Notational Conventions

+
+
+

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMEND/RECOMMENDED”, “MAY”, “COULD BE”, and “OPTIONAL” are to be interpreted as described in RFC 2119 (2).

+
+
+
+
+

5. Documentation

+
+
+

The official website for SDRF-Proteomics project is https://github.com/bigbio/proteomics-metadata-standard. New use cases, changes to the specification and examples can be added by using Pull requests or issues in GitHub (see introduction to GitHub - https://lab.github.com/githubtraining/introduction-to-github).

+
+
+

A set of examples and annotated projects from ProteomeXchange can be found here: https://github.com/bigbio/proteomics-metadata-standard/tree/master/annotated-projects

+
+
+

Multiple tools have been implemented to validate SDRF-Proteomics files for users familiar with Python and Java:

+
+
+
    +
  • +

    sdrf-pipelines (Python - https://github.com/bigbio/sdrf-pipelines): This tool allows to validate an SDRF-Proteomics file. In addition, it allows converting SDRF to other popular pipelines and software configure files such as MaxQuant or OpenMS.

    +
  • +
  • +

    jsdrf (Java - https://github.com/bigbio/jsdrf ): These Java library and tool allow validating SDRF-Proteomics files. It also includes a generic data model that can be used by Java applications.

    +
  • +
+
+
+
+
+

6. Relationship to other specifications

+
+
+

SDRF-Proteomics is fully compatible with the SDRF file format part of MAGE-TAB. MAGE-TAB is the file format used to store metadata and sample information for transcriptomics experiments. When the proteomeXchange project file is converted to idf file (project description in MAGE-TAB) and is combined with the SDRF-Proteomics a valid MAGE-TAB is obtained.

+
+
+

SDRF-Proteomics sample information can be embedded into mzTab metadata files. The sample metadata in mzTab contains properties as the columns in the SDRF-Proteomics and values as Sample cell values.

+
+
+

The SDRF-Proteomics aims to capture the sample metadata and its relationship with the data files (e.g. raw files from mass spectrometers). The SDRF-Proteomics do not aim to capture the downstream analysis part of the experimental design such as what samples should be compared, how they can be combined or parameters for the downstream analysis (FDR or p-values thresholds). The HUPO-PSI community will work in the future to include this information in other file formats such as mzTab or a new type of file format.

+
+
+
+
+

7. Ontologies/Controlled Vocabularies Supported

+
+
+

The list of ontologies/controlled vocabularies (CV) supported are:

+
+
+
    +
  • +

    PSI Mass Spectrometry CV (PSI-MS)

    +
  • +
  • +

    Experimental Factor Ontology (EFO).

    +
  • +
  • +

    Unimod protein modification database for mass spectrometry

    +
  • +
  • +

    PSI-MOD CV (PSI-MOD)

    +
  • +
  • +

    Cell line ontology

    +
  • +
  • +

    Drosophila anatomy ontology

    +
  • +
  • +

    Cell ontology

    +
  • +
  • +

    Plant ontology

    +
  • +
  • +

    Uber-anatomy ontology

    +
  • +
  • +

    Zebrafish anatomy and development ontology

    +
  • +
  • +

    Zebrafish developmental stages ontology

    +
  • +
  • +

    Plant Environment Ontology

    +
  • +
  • +

    FlyBase Developmental Ontology

    +
  • +
  • +

    Rat Strain Ontology

    +
  • +
  • +

    Chemical Entities of Biological Interest Ontology

    +
  • +
  • +

    NCBI organismal classification

    +
  • +
  • +

    PATO - the Phenotype and Trait Ontology

    +
  • +
  • +

    PRIDE Controlled Vocabulary (CV)

    +
  • +
+
+
+
+
+

8. SDRF-Proteomics file format

+
+
+

The SDRF-Proteomics file format describes the sample characteristics and the relationships between samples and data files. The file format is a tab-delimited one where each ROW corresponds to a relationship between a Sample and a Data file (and MS signal corresponding to labelling in the context of multiplexed experiments), each column corresponds to an attribute/property of the Sample, and the value in each cell is the specific value of the property for a given Sample (Figure 2).

+
+
+
+sdrf nutshell +
+
+
+

Figure 2: SDRF-Proteomics in a nutshell. The file format is a tab-delimited one where columns are properties of the sample, the data file or the variables under study. The rows are the samples of origin and the cells are the values for one property in a specific sample.

+
+
+

8.1. SDRF-Proteomics format rules

+
+

There are general scenarios/use cases that are addressed by the following rules:

+
+
+
    +
  • +

    Unknown values: In some cases, the column is mandatory in the format, but for some samples the corresponding value is unknown. In those cases, users SHOULD use ‘not available’.

    +
  • +
  • +

    Not Applicable values: In some cases, the column is mandatory, but for some samples the corresponding value is not applicable. In those cases, users SHOULD use ‘not applicable’.

    +
  • +
  • +

    Case sensitivity: By specification the SDRF is case-insensitive, but we RECOMMEND using lowercase characters throughout all the text (Column names and values).

    +
  • +
  • +

    Spaces: By specification the SDRF is case-sensitive to spaces (sourcename != source name).

    +
  • +
  • +

    Column order: The SDRF MUST start with the source name column (accession/name of the sample of origin), then all the sample characteristics; followed by the assay name corresponding to the MS run. Finally, after the assay name all the comments (properties of the data file generated).

    +
  • +
  • +

    Extension: The extension of the SDRF should be .tsv or .txt.

    +
  • +
+
+
+
+

8.2. SDRF-Proteomics values

+
+

The value for each property, (e.g. characteristics, comment) corresponding to each sample can be represented in multiple ways.

+
+
+
    +
  • +

    Free Text (Human readable): In the free text representation, the value is provided as text without Ontology support (e.g. colon or providing accession numbers). This is only RECOMMENDED when the text inserted in the table is the exact name of an ontology/CV term in EFO. If the term is not in EFO, other ontologies can be used.

    +
  • +
+
+ ++++ + + + + + + + + + + + + + + + + +
source namecharacteristics[organism]

sample 1

homo sapiens

sample 2

homo sapiens

+
+
    +
  • +

    Ontology url (Computer readable): Users can provide the corresponding URI (Uniform Resource Identifier) of the ontology/CV term as a value. This is recommended for enriched files where the user does not want to use intermediate tools to map from free text to ontology/CV terms.

    +
  • +
+
+ ++++ + + + + + + + + + + + + + + + + +
source namecharacteristics[organism]

Sample 1

http://purl.obolibrary.org/obo/NCBITaxon_9606

Sample 2

http://purl.obolibrary.org/obo/NCBITaxon_9606

+
+
    +
  • +

    Key=value representation (Human and Computer readable): The current representation aims to provide a mechanism to represent the complete information of the ontology/CV term including Accession, Name and other additional properties. In the key=value pair representation, the Value of the property is represented as an Object with multiple properties, where the key is one of the properties of the object and the value is the corresponding value for the particular key. An example of key value pairs is post-translational modification Section 10.2.1

    +
    +
    +
    NT=Glu->pyro-Glu; MT=fixed; PP=Anywhere;AC=Unimod:27; TA=E
    +
    +
    +
  • +
+
+
+
+
+
+

9. SDRF-Proteomics: Samples metadata

+
+
+

The Sample metadata has different Categories/Headings to organize all the attributes/ column headers of a given sample. Each Sample contains a source name (accession) and a set of characteristics. Any proteomics sample MUST contain the following characteristics:

+
+
+
    +
  • +

    source name: Unique sample name (it can be present multiple times if the same sample is used several times in the same dataset)

    +
  • +
  • +

    characteristics[organism]: The organism of the Sample of origin.

    +
  • +
  • +

    characteristics[disease]: The disease under study in the Sample.

    +
  • +
  • +

    characteristics[organism part]: The part of organism’s anatomy or substance arising from an organism from which the biomaterial was derived, (e.g., liver)

    +
  • +
  • +

    characteristics[cell type]: A cell type is a distinct morphological or functional form of cell. Examples are epithelial, glial etc.

    +
  • +
+
+
+

Example:

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
source namecharacteristics[organism]characteristics[organism part]characteristics[disease]characteristics[cell type]

sample_treat

homo sapiens

liver

liver cancer

not available

sample_control

homo sapiens

liver

liver cancer

not available

+
+ + + + + +
+
Note
+
+Additional characteristics can be added depending on the type of the experiment and sample. The SDRF-Proteomics templates defines a set of templates and checklists of properties that should be provided depending on the proteomics experiment. +
+
+
+

Some important notes:

+
+
+
    +
  • +

    Each characteristic name in the column header SHOULD be a CV term from the EFO ontology. For example, the header characteristics[organism] corresponds to the ontology term Organism.

    +
  • +
  • +

    Multiple values (columns) for the same characteristics term are allowed in SDRF-Proteomics. However, it is RECOMMENDED not to use the same column in the same file. If you have multiple phenotypes, you can specify what it refers to or use another more specific term, e.g., "immunophenotype".

    +
  • +
+
+
+
+
+

10. SDRF-Proteomics: Data files metadata

+
+
+

The connection between the Samples to the Data files is done by using a series of properties and attributes (comments - for backward compatibility with SDRF in transcriptomics comment MUST be used). All the properties referring to the MS run (file) itself are annotated with the category comment. The use of comment is mainly aimed at differentiating sample properties from the data properties. It matches a given sample to the corresponding file(s). The word comment is used for backwards-compatibility with gene expression experiments (RNA-Seq and Microarrays experiments).

+
+
+

The order of the columns is important, assay name SHOULD always be located before the comments. It is RECOMMENDED to put the last column as comment[data file]. The following properties MUST be provided for each data file (ms run) file:

+
+
+
    +
  • +

    assay name: For SDRF back-compatibility, MSRun cannot be used. Instead, assay name is used. Examples of assay names are: “run 1”, “run_fraction_1_2”.

    +
  • +
  • +

    comment[fraction identifier]: The fraction identifier allows recording the number of a given fraction. The fraction identifier corresponds to this ontology term. It MUST start from 1, and if the experiment is not fractionated, 1 MUST be used for each MSRun (assay).

    +
  • +
  • +

    comment[label]: label describes the label applied to each Sample (if any). In the case of multiplex experiments such as TMT, SILAC, and/or ITRAQ the corresponding label SHOULD be added. For Label-free experiments the label-free sample term MUST be used Section 10.1.

    +
  • +
  • +

    comment[data file]: The data file provides the name of the raw file generated by the instrument. The data files can be instrument raw files but also converted peak lists such as mzML, MGF or result files like mzIdentML.

    +
  • +
  • +

    comment[instrument]: Instrument model used to capture the sample Section 10.1.1.

    +
  • +
+
+
+

Example:

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

assay name

comment[label]

comment[fraction identifier]

comment[instrument]

comment[data file]

sample 1

run 1

label free sample

1

NT=LTQ Orbitrap XL

000261_C05_P0001563_A00_B00K_R1.RAW

sample 1

run 2

label free sample

2

NT=LTQ Orbitrap XL

000261_C05_P0001563_A00_B00K_R2.RAW

+
+ + + + + +
+
Tip
+
+All the possible label values can be seen in the in the PRIDE CV under the Label node. +
+
+
+

10.1. Label annotations

+
+

In order to annotate quantitative datasets, the SDRF file format uses tags for each channel associated with the sample in comment[label]. The label values are organized under the following ontology term Label. Some of the most popular labels are:

+
+
+
    +
  • +

    For label-free experiments the value SHOULD be: label free sample

    +
  • +
  • +

    For TMT experiments, the SDRF uses the PRIDE ontology terms under sample label. Here are some examples of TMT channels:

    +
    +
    +
    TMT126, TMT127, TMT127C, TMT127N, TMT128 , TMT128C, TMT128N, TMT129, TMT129C, TMT129N, TMT130, TMT130C, TMT130N, TMT131
    +
    +
    +
  • +
+
+
+

In order to achieve a clear relationship between the label and the sample characteristics, each channel of each sample (in multiplex experiments) SHOULD be defined in a separate row: one row per channel used (annotated with the corresponding comment[label] per file.

+
+
+

Examples:

+
+
+ +
+
+

10.1.1. Type and Model of Mass Spectrometer

+
+

The model of the mass spectrometer SHOULD be specified as comment[instrument]. Possible values are listed under instrument model term.

+
+
+

Additionally, it is strongly RECOMMENDED to include comment[MS2 analyzer type]. This is important, e.g., for Orbitrap models where MS2 scans can be acquired either in the Orbitrap or in the ion trap. Setting this value allows differentiating high-resolution MS/MS data. Possible values of comment[MS2 analyzer type] are mass analyzer types.

+
+
+
+
+

10.2. Additional Data files technical properties

+
+

It is RECOMMENDED to encode some of the technical parameters of the MS experiment as comments, including the following parameters:

+
+
+
    +
  • +

    Protein Modifications

    +
  • +
  • +

    Precursor and Fragment ion mass tolerances

    +
  • +
  • +

    Digestion Enzymes

    +
  • +
+
+
+

10.2.1. Protein Modifications

+
+

Sample modifications, (including both chemical modifications and post-translational modifications, PTMs) are originated from multiple sources: artifactual modifications, isotope labeling, adducts that are encoded as PTMs (e.g. sodium) or the most biologically relevant PTMs.

+
+
+

It is RECOMMENDED to provide the modifications expected in the sample including the amino acid affected, whether it is Variable or Fixed (also Custom and Annotated modifications are supported) and included other properties such as mass shift/delta mass and the position (e.g. anywhere in the sequence).

+
+
+

The RECOMMENDED name of the column for sample modification parameters is: comment[modification parameters].

+
+
+

The modification parameters are the name of the ontology term MS:1001055.

+
+
+

For each modification, different properties are captured using a key=value pair structure including name, position, etc. All the possible (optional) features available for modification parameters are:

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyKeyExampleMandatory(:white_check_mark:)/Optional(:zero:)comment

Name of the Modification

NT

NT=Acetylation

:white_check_mark:

* Name of the Term in this particular case Modification, for custom modifications can be a name defined by the user.

Modification Accession

AC

AC=UNIMOD:1

:zero:

Accession in an external database UNIMOD or PSI-MOD supported.

Chemical Formula

CF

CF=H(2)C(2)O

:zero:

This is the chemical formula of the added or removed atoms. For the formula composition please follow the guidelines from UNIMOD

Modification Type

MT

MT=Fixed

:zero:

This specifies which modification group the modification should be included with. Choose from the following options: [Fixed, Variable, Annotated]. Annotated is used to search for all the occurrences of the modification into an annotated protein database file like UNIPROT XML or PEFF.

Position of the modification in the Polypeptide

PP

PP=Any N-term

:zero:

Choose from the following options: [Anywhere, Protein N-term, Protein C-term, Any N-term, Any C-term]. Default is Anywhere.

Target Amino acid

TA

TA=S,T,Y

:white_check_mark:

The target amino acid letter. If the modification targets multiple sites, it can be separated by ,.

Monoisotopic Mass

MM

MM=42.010565

:zero:

The exact atomic mass shift produced by the modification. Please use at least 5 decimal places of accuracy. This should only be used if the chemical formula of the modification is not known. If the chemical formula is specified, the monoisotopic mass will be overwritten by the calculated monoisotopic mass.

Target Site

TS

TS=N[^P][ST]

:zero:

For some software, it is important to capture complex rules for modification sites as regular expressions. These use cases should be specified as regular expressions.

+
+

We RECOMMEND for indicating the modification name, to use the UNIMOD interim name or the PSI-MOD name. For custom modifications, we RECOMMEND using an intuitive name. If the PTM is unknown (custom), the Chemical Formula or Monoisotopic Mass MUST be annotated.

+
+
+

An example of an SDRF-Proteomics file with sample modifications annotated, where each modification needs an extra column:

+
+ +++++ + + + + + + + + + + + + + + +
comment[modification parameters]comment[modification parameters]

sample 1

NT=Glu→pyro-Glu; MT=fixed; PP=Anywhere;AC=Unimod:27; TA=E

NT=Oxidation; MT=Variable; TA=M

+
+
+

10.2.2. Cleavage agents

+
+

The REQUIRED comment [cleavage agent details] property is used to capture the enzyme information. Similar to protein modification, a key=value pair representation is used to encode the following properties for each enzyme:

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Property

Key

Example

Mandatory(:white_check_mark:)/Optional(:zero:)

comment

Name of the Enzyme

NT

NT=Trypsin

:white_check_mark:

* Name of the Term in this particular case Name of the Enzyme.

Enzyme Accession

AC

AC=MS:1001251

:zero:

Accession in an external PSI-MS Ontology definition under the following category Cleavage agent name.

Cleavage site regular expression

CS

CS=(?⇐[KR])(?!P)

:zero:

The cleavage site defined as a regular expression.

+
+

An example of an SDRF-Proteomics with annotated endopeptidase:

+
+ +++++ + + + + + + + + + + + + + + +
source name…​comment[cleavage agent details]

sample 1

…​.

NT=Trypsin;AC=MS:1001251

+
+ + + + + +
+
Note
+
+If no endopeptidase is used, for example, in the case of Top-down/intact protein experiments, the value SHOULD be ‘not applicable’. +
+
+
+
+

10.2.3. Precursor and Fragment mass tolerances

+
+

For proteomics experiments, it is important to encode different mass tolerances (for precursor and fragment ions).

+
+ +++++ + + + + + + + + + + + + + + +
comment[fragment mass tolerance]comment[precursor mass tolerance]

sample 1

0.6 Da

20 ppm

+
+

Units for the mass tolerances (either Da or ppm) MUST be provided.

+
+
+
+
+
+
+

11. SDRF-Proteomics study variables

+
+
+

The variable/property under study SHOULD be highlighted using the factor value category. For example, the factor value[tissue] is used when the user wants to compare expression across different tissues. You can add Multiple variables under study by providing multiple factor values.

+
+ +++++++ + + + + + + + + + +

factor value

:zero:

0..*

“factor value” columns SHOULD indicate which experimental factor/variable is used as the hypothesis to perform the data analysis. The “factor value” columns SHOULD occur after all characteristics and the attributes of the samples.

factor value[phenotype]

+
+
+
+

12. SDRF-Proteomics conventions

+
+
+

Conventions define how to encode some particular information in the file format in specific use cases. Conventions define a set of new columns that are needed to represent a particular use case or experiment type (e.g. phosphorylation dataset). In addition, conventions define how some specific free-text columns (value that is not defined as ontology terms) should be written. Conventions are compiled from the proteomics community using https://github.com/bigbio/proteomics-metadata-standard/issues or pull-request and will be added to updated versions of this specification document in the future.

+
+
+

In the convention section Chapter 12, the columns are described and defined, while in the section use cases and templates Chapter 13 the columns needed to describe a use case are specified.

+
+
+

12.1. How to encode age

+
+

One of the characteristics of a patient sample can be the age of an individual. It is RECOMMENDED to provide the age in the following format: {X}Y{X}M{X}D. Some valid examples are:

+
+
+
    +
  • +

    40Y (forty years)

    +
  • +
  • +

    40Y5M (forty years and 5 months)

    +
  • +
  • +

    40Y5M2D (forty years, 5 months, and 2 days)

    +
  • +
+
+
+

When needed, weeks can also be used: 8W (eight weeks)

+
+
+

Age interval:

+
+
+

Sometimes the sample does not have an exact age but a range of age. To annotate an age range the following standard is RECOMMENDED:

+
+
+
+
40Y-85Y
+
+
+
+

This means that the subject (sample) is between 40 and 85 years old. Other temporal information can be encoded similarly.

+
+
+
+

12.2. Phosphoproteomics and other post-translational modifications enriched studies

+
+

In PTM-enriched experiments, the characteristics[enrichment process] SHOULD be provided. The different values already included in EFO are:

+
+
+
    +
  • +

    enrichment of phosphorylated Protein

    +
  • +
  • +

    enrichment of glycosylated Protein

    +
  • +
+
+
+

This characteristic can be used as a factor value[enrichment process] to differentiate the expression between proteins in the phospho-enriched sample compared with the control.

+
+
+
+

12.3. Pooled samples

+
+

When multiple samples are pooled into one, the general approach is to annotate them separately, abiding by the general rule: one row stands for one sample-to-file relationship. In this case, multiple rows are created for the corresponding data file, much like in Section 10.1.

+
+
+

One possible exception is made for the case when one channel e.g., in a TMT/iTRAQ multiplexed experiment is used for a sample pooled from all other channels, typically for normalization purposes. In this case, it is not necessary to repeat all sample annotations. Instead, a special characteristic can be used:

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source namecharacteristics[pooled sample]assay namecomment[label]comment[data file]

sample 1

not pooled

run 1

TMT131

file01.raw

sample 2

not pooled

run 1

TMT131C

file01.raw

sample 10

SN=sample 1,sample 2, …​ sample 9

run 1

TMT128

file01.raw

+
+

SN stands for source names and lists source name fields of samples that are annotated in the same file and used in the same experiment and same MS run.

+
+
+

Another possible value for characteristics[pooled sample] is a string pooled for cases when it is known that a sample is pooled but the individual samples cannot be annotated.

+
+
+
+

12.4. Derived samples (such as patient-derived xenografts)

+
+

In cancer research, patient-derived xenografts (PDX) are commonly used. In those, the patient’s tumor is transplanted into another organism, usually a mouse. In these cases, the metadata, such as age and sex, MUST refer to the original patient and not the mouse.

+
+
+

PDX samples SHOULD be annotated by using the column name characteristics[xenograft]. The value should then describe the growth condition, such as ‘pancreatic cancer cells grown in nude mice’.

+
+
+

For experiments where both the PDX and the original tumor are measured, the PDX entry SHOULD reference the respective tumor sample’s source name in the characteristics[source name] column. Non-PDX samples SHOULD contain the “not applicable” value in the characteristics[xenograft] and the characteristics[source name] column. Both tumor and PDX samples SHOULD reference the patient using the characteristics[individual] column. This column SHOULD contain some sort of patient identifier.

+
+
+
+

12.5. Spiked-in samples

+
+

There are multiple scenarios when a sample is spiked with additional analytes. Peptides, proteins, or mixtures can be added to the sample as controlled amounts to provide a standard or ground truth for quantification, or for retention time alignment, etc.

+
+
+

To include information about the spiked compounds, use characteristics[spiked compound]. The information is provided in key-value pairs. Here are the keys and values that SHOULD be provided:

+
+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyMeaningExamplesPeptideProteinMixtureOther

SP

Species

Escherichia coli K-12

:zero:

:zero:

:zero:

:zero:

CT

Compound type

protein, peptide, mixture, other

:white_check_mark:

:white_check_mark:

:white_check_mark:

:white_check_mark:

QY

Quantity (molar or mass)

10 mg, 20 nmol

:white_check_mark:

:white_check_mark:

:white_check_mark:

:white_check_mark:

PS

Peptide sequence

PEPTIDESEQ

:white_check_mark:

AC

Uniprot Accession

A9WZ33

:white_check_mark:

CN

Compound name

iRT mixture, substance name

:zero:

:zero:

:zero:

CV

Compound vendor

in-house or vendor name

:zero:

:zero:

:white_check_mark:

:zero:

CS

Compound specification URI

http://vendor.web.site/specs/coomercial-kit.xlsx

:zero:

:zero:

:zero:

:zero:

CF

Compound formula

C2H2O

:zero:

+
+

In addition to specifying the component and its quantity, the injected mass of the main sample SHOULD be specified as characteristics[mass].

+
+
+

An example of SDRF-Proteomics for a sample spiked with a peptide would be:

+
+ ++++ + + + + + + + + + + +

characteristics[mass]

characteristics[spiked compound]

1 ug

CT=peptide;PS=PEPTIDESEQ;QY=10 fmol

+
+

For multiple spiked components, the column characteristics[spiked compound] may be repeated.

+
+
+

If the spiked component is another biological sample (e.g. E. coli lysate spiked into human sample), then the spiked component MUST be annotated in its own row. Both components of the sample SHOULD have characteristics[mass] specified. Inclusion of characteristics[spiked compound] is optional in this case; if provided, it SHOULD be the string spiked for the spiked sample.

+
+
+
+

12.6. Synthetic peptide libraries

+
+

It is common to use synthetic peptide libraries for proteomics, and MS use cases include:

+
+
+
    +
  • +

    Benchmark of analytical and bioinformatics methods and algorithms.

    +
  • +
  • +

    Improvement of peptide identification/quantification using spectral libraries.

    +
  • +
+
+
+

When describing synthetic peptide libraries, most of the sample metadata can be declared as “not applicable”. However, some authors can annotate the organism for example because they know the library has been designed from specific peptide species, see example Synthetic Peptide experiment (https://github.com/bigbio/proteomics-metadata-standard/blob/master/annotated-projects/PXD000759/sdrf.tsv).

+
+
+

It is important to annotate that the sample is a synthetic peptide library, this can be done by adding the characteristics[synthetic peptide]. The possible values are “synthetic” or “not synthetic”.

+
+
+
+

12.7. Normal and healthy samples

+
+

Samples from healthy patients or individuals normally appear in manuscripts and annotations as healthy or normal. We RECOMMEND using the word “normal” mapped to term PATO_0000461 that is in EFO: normal PATO term. Example:

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source namecharacteristics[organism]characteristics[organism part]characteristics[phenotype]characteristics[compound]factor value[phenotype]

sample_treat

homo sapiens

Whole Organism

necrotic tissue

drug A

necrotic tissue

sample_control

homo sapiens

Whole Organism

normal

none

normal

+
+
+

12.8. Encoding sample technical and biological replicates

+
+

Different measurements of the same biological sample are often categorized as (i) Technical or (ii) Biological replicates, based on whether they are (i) matched on all variables, e.g. same sample and same protocol; or (ii) different samples matched on explanatory variable(s), e.g. different patients receiving a placebo, in a placebo vs. drug trial. Technical and biological replicates have different levels of independence, which must be taken into account during data interpretation.

+
+
+

For a given experiment, there are different levels to which samples can be matched - e.g., same sample, sample protocol, covariates - the definition of technical replicate can therefore vary based on the number of variables included. In addition, an experiment might be used in multiple models with different explanatory variable(s), and biological replicates in one model would not be replicates in another. Therefore, Technical vs. Biological considerations, while sometimes relevant to analytical and statistical interpretation, fall beyond the scope of the SDRF-Proteomics format. However, data providers are encouraged to provide any identifier - e.g. Biological_replicate_1, Technical_replicate_2 - that would help link the samples to their analytical and statistical analysis as comments. A good starting point for the SDRF-Proteomics specification is the following:

+
+
+

technical replicate: It is defined as repeated measurements of the same sample that represent independent measures of the random noise associated with protocols or equipment [4].

+
+
+

In MS-based proteomics, a technical replicate can be, for example, doing the full sample preparation from extraction to MS multiple times to control variability in the instrument and sample preparation. Another valid example would be to replicate only one part of the analytical method, for example, run the sample twice on the LC-MS/MS. technical replicates indicate if measurements are scientifically robust or noisy, and how large the measured effect must be to stand out above that noise.

+
+
+

In the following example, only if the technical replicate column is provided, one can distinguish quantitative values of the same fraction but different technical replicates.

+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source name

assay name

comment[label]

comment[fraction identifier]

comment[technical replicate]

comment[data file]

Sample 1

run 1

label free sample

1

1

000261_C05_P0001563_A00_B00K_F1_TR1.RAW

Sample 1

run 2

label free sample

2

1

000261_C05_P0001563_A00_B00K_F2_TR1.RAW

Sample 1

run 3

label free sample

1

2

000261_C05_P0001563_A00_B00K_F1_TR2.RAW

Sample 1

run 4

label free sample

2

2

000261_C05_P0001563_A00_B00K_F2_TR2.RAW

+
+

The comment[technical replicate] column is MANDATORY. Please fill it with 1 if technical replicates are not performed in a study.

+
+
+

Biological replicate: parallel measurements of biologically distinct samples that capture biological variation, which may itself be a subject of study or a source of noise. Biological replicates address if and how widely the results of an experiment can be generalized. For example, repeating a particular assay with independently generated samples, individuals or samples derived from various cell types, tissue types, or organisms, to see if similar results can be observed. Context is critical, and appropriate biological replicates will indicate whether an experimental effect is sustainable under a different set of biological variables or an anomaly itself.

+
+
+

In SDRF-Proteomics, biological replicates can be annotated using characteristics[biological replicate] and it is MANDATORY. Please fill it with 1 if biological replicates are not performed in a study.

+
+
+

Some examples with explicit annotation of the biological replicates can be found here:

+
+ +
+
+

12.9. Sample preparation properties

+
+

In order to encode sample preparation details, we strongly RECOMMEND specifying the following parameters.

+
+
+
    +
  • +

    comment [depletion]: The removal of specific components of a complex mixture of proteins or peptides based on some specific property of those components. The values of the columns will be no depletion or depletion. In the case of depletion depleted fraction of bound fraction can be specified.

    +
  • +
  • +

    comment [reduction reagent]: The chemical reagent that is used to break disulfide bonds in proteins. The values of the column are under the term reduction reagent. For example, DTT.

    +
  • +
  • +

    comment [alkylation reagent]: The alkylation reagent that is used to covalently modify cysteine SH-groups after reduction, preventing them from forming unwanted novel disulfide bonds. The values of the column are under the term alkylation reagent. For example, IAA.

    +
  • +
  • +

    comment [fractionation method]: The fraction method used to separate the sample. The values of this term can be read under PRIDE ontology term Fractionation method. For example, Off-gel electrophoresis.

    +
  • +
+
+
+
+

12.10. MS/MS properties

+
+
    +
  • +

    comment[collision energy]: Collision energy can be added as non-normalized (10000 eV) or normalized (1000 NCE) value.

    +
  • +
  • +

    comment[dissociation method]: This property will provide information about the fragmentation method, like HCD, CID. The values of the column are under the term dissociation method.

    +
  • +
+
+
+
+

12.11. RAW file URI

+
+

We RECOMMEND including the public URI of the file if available. For example, for ProteomeXchange datasets, the URI from the FTP can be provided:

+
+ +++++ + + + + + + + + + + + + + + +
…​comment[file uri]

sample 1

…​

https://ftp.pride.ebi.ac.uk/pride/data/archive/2017/09/PXD005946/000261_C05_P0001563_A00_B00K_R1.RAW

+
+
+

12.12. Multiple projects into one annotation file

+
+

Curators can decide to annotate multiple ProteomeXchange datasets into one large SDRF-Proteomics file for reanalysis purposes. If that is the case, it is RECOMMENDED to use the comment[proteomexchange accession number] to differentiate between different datasets.

+
+
+
+
+
+

13. SDRF-Proteomics use-cases representation (templates)

+
+
+

Please visit the following document to read about SDRF-Proteomics use cases, templates, and checklists.

+
+
+
+
+

14. Examples of annotated datasets

+
+ +++++ + + + + + + + + + + + + + + + + + +

Dataset Type

ProteomeXchange / Pubmed Accession

SDRF URL

Label-free

PXD008934

https://github.com/bigbio/proteomics-metadata-standard/tree/master/annotated-projects/PXD008934

TMT

PXD017710

https://github.com/bigbio/proteomics-metadata-standard/tree/master/annotated-projects/PXD017710

+
+
+
+

15. Ongoing use case discussions

+
+
+

We have created a file in GitHub Ongoing use case discussions where we aggregate all the ongoing discussions about the format.

+
+
+
+
+

16. Intellectual Property Statement

+
+
+

The PSI takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Copies of claims of rights made available for publication and any assurances of licenses to be made available or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the PSI Chair.

+
+
+

The PSI invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this recommendation. Please address the information to the PSI Chair (see contacts information at PSI website).

+
+
+
+
+ +
+
+

Copyright © Proteomics Standards Initiative (2020). All Rights Reserved.

+
+
+

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without the restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the PSI or other organizations, except as needed for the purpose of developing Proteomics Recommendations in which case the procedures for copyrights defined in the PSI Document process must be followed, or as required to translate it into languages other than English.

+
+
+

The limited permissions granted above are perpetual and will not be revoked by the PSI or its successors or assigns.

+
+
+

This document and the information contained herein is provided on an "AS IS" basis and THE PROTEOMICS STANDARDS INITIATIVE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."

+
+
+
+
+

18. How to cite

+
+
+

Please cite this document as:

+
+
+

Dai C, Füllgrabe A, Pfeuffer J, Solovyeva EM, Deng J, Moreno P, Kamatchinathan S, Kundu DJ, George N, Fexova S, Grüning B, Föll MC, Griss J, Vaudel M, Audain E, Locard-Paulet M, Turewicz M, Eisenacher M, Uszkoreit J, Van Den Bossche T, Schwämmle V, Webel H, Schulze S, Bouyssié D, Jayaram S, Duggineni VK, Samaras P, Wilhelm M, Choi M, Wang M, Kohlbacher O, Brazma A, Papatheodorou I, Bandeira N, Deutsch EW, Vizcaíno JA, Bai M, Sachsenberg T, Levitsky LI, Perez-Riverol Y. A proteomics sample metadata representation for multiomics integration and big data analysis. Nat Commun. 2021 Oct 6;12(1):5854. doi: 10.1038/s41467-021-26111-3. PMID: 34615866; PMCID: PMC8494749. [Manuscript - https://www.nature.com/articles/s41467-021-26111-3]

+
+
+
+
+

19. References

+
+
+
    +
  • +

    [1] Y. Perez-Riverol, S. European Bioinformatics Community for Mass, Toward a Sample Metadata Standard in Public Proteomics Repositories, J Proteome Res 19(10) (2020) 3906-3909.

    +
  • +
  • +

    [2] A. Gonzalez-Beltran, E. Maguire, S.A. Sansone, P. Rocca-Serra, linkedISA: semantic representation of ISA-Tab experimental metadata, BMC Bioinformatics 15 Suppl 14 (2014) S4.

    +
  • +
  • +

    [3] T.F. Rayner, P. Rocca-Serra, P.T. Spellman, H.C. Causton, A. Farne, E. Holloway, R.A. Irizarry, J. Liu, D.S. Maier, M. Miller, K. Petersen, J. Quackenbush, G. Sherlock, C.J. Stoeckert, Jr., J. White, P.L. Whetzel, F. Wymore, H. Parkinson, U. Sarkans, C.A. Ball, A. Brazma, A simple spreadsheet-based, MIAME-supportive format for microarray data: MAGE-TAB, BMC Bioinformatics 7 (2006) 489.

    +
  • +
  • +

    [4] P. Blainey, M. Krzywinski, N. Altman, Points of significance: replication, Nat Methods 11(9) (2014) 879-80.

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/index.rst b/index.rst new file mode 100644 index 000000000..85ba6b572 --- /dev/null +++ b/index.rst @@ -0,0 +1,32 @@ +SDRF-Proteomics +======================================================================= + +Contents +-------- + +.. toctree:: + :maxdepth: 1 + + introduction + sdrf + templates + additional + documentation + tools +| + +The following links should be followed to get support and help with the sdrf maintainers: + +|Report Issue| |Get help on GitHub Forum| + + +.. |Report Issue| image:: https://img.shields.io/github/issues/bigbio/proteomics-metadata-standard + :target: https://github.com/bigbio/proteomics-metadata-standard/issues + +.. |Get help on GitHub Forum| image:: https://img.shields.io/badge/Github-Discussions-green + :target: https://github.com/bigbio/proteomics-metadata-standard/discussions + + + + + diff --git a/introduction.rst b/introduction.rst new file mode 100644 index 000000000..b42b56b87 --- /dev/null +++ b/introduction.rst @@ -0,0 +1,40 @@ +Introduction +============================= + +Many resources have emerged that provide raw or integrated proteomics data in the public domain. Among them, ProteomeXchange consortium (including PRIDE Archive, MassIVE, JPOST or IProx) define a group of guidelines to ensure the quality of the data and the metadata associated with the datasets. + +Unfortunately, proteomics experimental design and sample related information are often missing in public repositories or stored in very diverse ways and formats. For example: + + - `CPTAC consortium `_ provides for every dataset a set of excel files with the information on each sample (e.g. `S048 `_) including tumor size, origin, but also how every sample is related to a specific raw file (e.g. instrument configuration parameters). + - ProteomicsDB, captures for each sample in the database a minimum number of properties to describe the sample and the related experimental protocol such as tissue, digestion method and instrument (e.g. `Project 4267 `_). + - ProteomeXchange submissions only required a minimum unstructured metadata such as species, instruments, post-translational modifications or disease. This metadata is captured at the project level making difficult to associate each specific metadata term with the samples in the study (Figure 1). + +.. note:: The lack of detailed and well-structure metadata at a sample level prevents data interpretation, reproducibility, and integration of data from different resources. + + +.. image:: images/sample-metadata.png + :width: 600 + :align: center + +**Figure 1**: SDRF-Proteomics file format stores the information of the sample and its relation to the data files in the dataset. The file format includes not only information about the sample but also about how the data was acquired and processed. + +.. Important:: + The following use cases can be defined for the format: + + - Capturing the experimental design of a proteomics experiment, particularly the relationship between the samples analyzed and the instrument files generated during data acquisition in the laboratory. + - Capturing sample metadata, including information on the source and any treatments applied that could affect data analysis. + - Providing comprehensive metadata for instrument files, so that users can have a general understanding of how the data was acquired. + +Specifications +--------------------- + +The SDRF-Proteomics format describes the sample characteristics and the relationships between samples and data files included in a dataset. The information in SDRF files is organised so that it follows the natural flow of a proteomics experiment. The main requirements to be fulfilled for the SDRF-Proteomics format are: + +- The SDRF file is a tab-delimited format where each ROW corresponds to a relationship between a Sample and a Data file. +- Each column MUST correspond to an attribute/property of the Sample or the Data file. +- Each value in each cell MUST be the property for a given Sample or Data file. +- The SDRF file must start with columns describing the properties of the sample (e.g. organism, disease, phenotype etc), followed by the properties of data files which was generated from the analysis of the experimental results (e.g. label, faction identifier, data file etc). +- Support for handling unknown values/characteristics. + +.. Caution:: + The SDRF-Proteomics aims to capture the sample metadata and its relationship with the data files (e.g., raw files from mass spectrometers). The SDRF-Proteomics does not aim to capture the downstream analysis part of the experimental design including details of which samples were compared to which other samples, how samples are combined into study variables or parameters for the downstream analysis such as FDR or p-values thresholds. diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..46caf8233 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +sphinx>=5.0 +sphinx-asciidoc +sphinx-rtd-theme +asciidoctor>=2.0 \ No newline at end of file diff --git a/sdrf.rst b/sdrf.rst new file mode 100644 index 000000000..6c17c4f55 --- /dev/null +++ b/sdrf.rst @@ -0,0 +1,334 @@ +SDRF-Proteomics Format +######################################## + +The SDRF-Proteomics file format describes the sample characteristics and the relationships between samples and data files. The file format is a tab-delimited one where each ROW corresponds to a relationship between a Sample and a Data file (and MS signal corresponding to labelling in the context of multiplexed experiments), each column corresponds to an attribute/property of the Sample and the value in each cell is the specific value of the property for a given Sample (**Figure 1**). + +.. image:: images/sdrf-nutshell.png + :width: 600 + :align: center + + +**Figure 2**: SDRF-Proteomics in a nutshell. The file format is a tab-delimited one where columns are properties of the sample, the data file or the variables under study. The rows are the samples of origin and the cells are the values for one property in a specific sample. + +Rules +****************************** + +There are general scenarios/use cases that are addressed by the following rules: + +- **Unknown values**: In some cases, the column is mandatory in the format but for some samples the corresponding value is unknown. In those cases, users SHOULD use :guilabel:`not available`. +- **Not Applicable values**: In some cases, the column is mandatory but for some samples the corresponding value is not applicable. In those cases, users SHOULD use :guilabel:`not applicable`. +- **Case sensitivity**: By specification the SDRF is case insensitive, but we RECOMMEND using lowercase characters throughout all the text (Column names and values). +- **Spaces**: By specification the SDRF is case sensitive to spaces (sourcename != source name). +- **Column order**: The SDRF MUST start with the source name column (accession/name of the sample of origin), then all the sample characteristics; followed by the assay name corresponding to the MS run. Finally, after the assay name all the comments (properties of the data file generated). +- **Extension**: The extension of the SDRF should be .tsv or .txt. + +Values +****************************** + +The value for each property (e.g. characteristics, comment) corresponding to each sample can be represented in multiple ways. + +- Free Text (Human readable): In the free text representation, the value is provided as text without Ontology support (e.g. colon or providing accession numbers). This is only RECOMMENDED when the text inserted in the table is the exact name of an ontology/CV term in EFO. If the term is not in EFO, other ontologies can be used. + +.. list-table:: SDRF values annotated in free text + :widths: 50 50 + :header-rows: 1 + + * - source name + - characteristics[organism] + * - sample 1 + - homo sapiens + * - sample 2 + - homo sapiens + +- Ontology url (Computer readable): Users can provide the corresponding URI (Uniform Resource Identifier) of the ontology/CV term as a value. This is recommended for enriched files where the user does not want to use intermediate tools to map from free text to ontology/CV terms. + +.. list-table:: SDRF with ontology terms + :widths: 50 50 + :header-rows: 1 + + * - source name + - characteristics[organism] + * - sample 1 + - http://purl.obolibrary.org/obo/NCBITaxon_9606 + * - sample 2 + - http://purl.obolibrary.org/obo/NCBITaxon_9606 + +- Key=value representation (Human and Computer readable): The current representation aims to provide a mechanism to represent the complete information of the ontology/CV term including Accession, Name and other additional properties. In the key=value pair representation the Value of the property is represented as an Object with multiple properties, where the key is one of the properties of the object and the value is the corresponding value for the particular key. An example of key value pairs is post-translational modification (see :ref:`ptms`) + +`NT=Glu->pyro-Glu; MT=fixed; PP=Anywhere;AC=Unimod:27; TA=E` + +Samples metadata +*********************************** + +The Sample metadata has different Categories/Headings to organize all the attributes/ column headers of a given sample. Each Sample contains a :guilabel:`source name` (accession) and a set of :guilabel:`characteristics`. Any proteomics sample MUST contain the following characteristics: + +- :guilabel:`source name`: Unique sample name (it can be present multiple times if the same sample is used several times in the same dataset). +- :guilabel:`characteristics[organism]`: The organism of the Sample of origin. +- :guilabel:`characteristics[disease]`: The disease under study in the Sample. +- :guilabel:`characteristics[organism part]`: The part of organism's anatomy or substance arising from an organism from which the biomaterial was derived (e.g. liver). +- :guilabel:`characteristics[cell type]`: A cell type is a distinct morphological or functional form of cell. Examples are epithelial, glial etc. + +Example: + +.. list-table:: Minimum sample metadata for any proteomics dataset + :widths: 20 20 20 20 20 + :header-rows: 1 + + * - source name + - characteristics[organism] + - characteristics[organism part] + - characteristics[disease] + - characteristics[cell type] + * - sample_treat + - homo sapiens + - liver + - liver cancer + - liver cancer cell + * - sample_control + - homo sapiens + - liver + - liver cancer + - liver + +.. note:: Additional characteristics can be added depending on the type of the experiment and sample. The `SDRF-Proteomics templates `_ defines a set of templates and checklists of properties that should be provided depending on the proteomics experiment. + +Some important notes: + +- Each characteristics name in the column header SHOULD be a CV term from the EFO ontology. For example, the header :guilabel:`characteristics[organism]` corresponds to the ontology term Organism. + +- Multiple values (columns) for the same characteristics term are allowed in SDRF-Proteomics. However, it is RECOMMENDED not to use the same column in the same file. If you have multiple phenotypes, you can specify what it refers to or use another more specific term, e.g. "immunophenotype". + +Data files metadata +************************************ + +The connection between the Samples to the Data files is done by using a series of properties and attributes. All the properties referring to the MS run (file) itself are annotated with the category/prefix :guilabel:`comment`. The use of comment is mainly aimed at differentiating sample properties from the data properties. It matches a given sample to the corresponding file(s). The word comment is used for backwards-compatibility with gene expression experiments (RNA-Seq and Microarrays experiments). + +The order of the columns is important, :guilabel:`assay name` MUST always be located before the comments. It is RECOMMENDED to put the last column as :guilabel:`comment[data file]`. The following properties MUST be provided for each data file (ms run) file: + +- :guilabel:`assay name`: assay name is an accession for each msrun. Because of back-compatibility with SDRF in transcriptomics we don't use the term ms run but the more generic term :guilabel:`assay name`. Examples of assay names are: “run 1”, “run_fraction_1_2”, it must be a unique accession for every msrun. +- :guilabel:`comment[fraction identifier]`: The fraction identifier allows to record the number of a given fraction. The fraction identifier corresponds to this ontology term. It MUST start from `1` and if the experiment is not fractionated, 1 MUST be used for each MSRun (assay). +- :guilabel:`comment[label]`: label describes the label applied to each Sample (if any). In case of multiplex experiments such as TMT, SILAC, and/or ITRAQ the corresponding label SHOULD be added. For Label-free experiments the label free sample term MUST be used :ref:`label-annotations`. +- :guilabel:`comment[data file]`: The data file provides the name of the raw file generated by the instrument. The data files can be instrument raw files but also converted peak lists such as mzML, MGF or result files like mzIdentML. +- :guilabel:`comment[instrument]`: Instrument model used to capture the sample :ref:`instrument-information`. + +Example: + +.. list-table:: Minimum data metadata for any proteomics dataset + :widths: 14 14 14 14 14 14 14 + :header-rows: 1 + + * - source name + - .... + - assay name + - comment[label] + - comment[fraction identifier] + - comment[instrument] + - comment[data file] + * - sample 1 + - .... + - run 1 + - label free sample + - 1 + - NT=LTQ Orbitrap XL + - 000261_C05_P0001563_A00_B00K_R1.RAW + * - sample 1 + - .... + - run 2 + - label free sample + - 2 + - NT=LTQ Orbitrap XL + - 000261_C05_P0001563_A00_B00K_R2.RAW + +.. note:: All the possible _label_ values can be seen in the in the PRIDE CV under `labels `_ node. + +.. _label-annotations: + +Label annotations +==================== + +In order to annotate quantitative datasets, the SDRF file format uses tags for each channel associated with the sample in :guilabel:`comment[label]`. The label values are organized under the following ontology term Label. Some of the most popular labels are: + +- For label-free experiments the value SHOULD be: label free sample or the corresponding key value pair term: `AC=MS:1002038;NT=label free sample` +- For TMT experiments the SDRF uses the PRIDE ontology terms under sample label. Here some examples of TMT channels: + + TMT126, TMT127, TMT127C, TMT127N, TMT128 , TMT128C, TMT128N, TMT129, TMT129C, TMT129N, TMT130, TMT130C, TMT130N, TMT131 + +In order to achieve a clear relationship between the label and the sample characteristics, each channel of each sample (in multiplex experiments) SHOULD be defined in a separate row: one row per channel used (annotated with the corresponding :guilabel:`comment[label]` per file. + +Examples: + +- `PXD000612 `_ +- `PXD011799 `_ + +.. _instrument-information: + +Instrument information +==================================== + +The model of the mass spectrometer SHOULD be specified as :guilabel:`comment[instrument]`. Possible values are listed in `PSI-MS `_ + +Additionally, it is strongly RECOMMENDED to include :guilabel:`comment[MS2 analyzer type]`. This is important e.g. for Orbitrap models where MS2 scans can be acquired either in the Orbitrap or in the ion trap. Setting this value allows to differentiate high-resolution MS/MS data. Possible values of :guilabel:`comment[MS2 analyzer type]` are mass analyzer types. + +Additional Data files technical properties +=========================================== + +It is RECOMMENDED to encode some of the technical parameters of the MS experiment as comments including the following parameters: + +- Protein Modifications +- Precursor and Fragment ion mass tolerances +- Digestion Enzymes + +.. _ptms: +Protein Modifications +--------------------------------- + +Sample modifications (including both chemical modifications and post translational modifications, PTMs) are originated from multiple sources: artifact modifications, isotope labeling, adducts that are encoded as PTMs (e.g. sodium) or the most biologically relevant PTMs. It is RECOMMENDED to provide the modifications expected in the sample including the amino acid affected, whether it is Variable or Fixed (also Custom and Annotated modifications are supported) and included other properties such as mass shift/delta mass and the position (e.g. anywhere in the sequence). The RECOMMENDED name of the column for sample modification parameters is: :guilabel:`comment[modification parameters]`. The modification parameters are the name of the ontology term MS:1001055. For each modification, different properties are captured using a key=value pair structure including name, position, etc. All the possible (optional) features available for modification parameters are: + +.. list-table:: Minimum data metadata for any proteomics dataset + :widths: 20 20 20 20 20 + :header-rows: 1 + + * - Property + - Key + - Example + - Required + - comment + * - Name of the Modification + - NT + - NT=Acetylation + - Yes + - Name of the Term in this particular case Modification, for custom modifications can be a name defined by the user. + * - Modification Accession + - AC + -AC=UNIMOD:1 + - Yes + - Accession in an external database UNIMOD or PSI-MOD supported. + * - Chemical Formula + - CF + - CF=H(2)C(2)O + - No + - This is the chemical formula of the added or removed atoms. For the formula composition please follow the `guidelines `_ + * - Modification Type + - MT + - MT=Fixed + - No + - This specifies which modification group the modification should be included with. Choose from the following options: [Fixed, Variable, Annotated]. Annotated is used to search for all the occurrences of the modification into an annotated protein database file like UNIPROT XML or PEFF. + * - Position of the modification in the Polypeptide + - PP + - PP=Any N-term + - No + - Choose from the following options: [Anywhere, Protein N-term, Protein C-term, Any N-term, Any C-term]. Default is **Anywhere**. + * - Target Amino acid + - TA + - TA=S,T,Y + - No + - The target amino acid letter. If the modification targets multiple sites, it can be separated by `,`. + * - Monoisotopic Mass + - MM + - MM=42.010565 + - No + - The exact atomic mass shift produced by the modification. Please use at least 5 decimal places of accuracy. This should only be used if the chemical formula of the modification is not known. If the chemical formula is specified, the monoisotopic mass will be overwritten by the calculated monoisotopic mass. + * - Target Site + - TS + - TS=N[^P][ST] + - No + - For some software, it is important to capture complex rules for modification sites as regular expressions. These use cases should be specified as regular expressions. + +.. note:: We RECOMMEND for indicating the modification name, to use the UNIMOD interim name or the PSI-MOD name. For custom modifications, we RECOMMEND using an intuitive name. If the PTM is unknown (custom), the Chemical Formula or Monoisotopic Mass MUST be annotated. + +An example of an SDRF-Proteomics file with sample modifications annotated, where each modification needs an extra column: + +.. list-table:: Example about how to annotated two modifications in SDRF-Proteomics + :widths: 25 25 25 25 + :header-rows: 1 + + * - source name + - ... + - comment[modification parameters] + - comment[modification parameters] + * - Sample 1 + - ... + - NT=Glu->pyro-Glu;MT=fixed;PP=Anywhere;AC=Unimod:27;TA=E + - NT=Oxidation;MT=Variable;TA=M + +Cleavage agents +-------------------------------------- + +The REQUIRED :guilabel:`comment[cleavage agent details]` property is used to capture the enzyme information. Similar to protein modification a key=value pair representation is used to encode the following properties for each enzyme: + +.. list-table:: Example about how to annotated two modifications in SDRF-Proteomics + :widths: 20 20 20 20 20 + :header-rows: 1 + + * - Property + - Key + - Example + - Required + - comment + * - Name of the Enzyme + - NT + - NT=Trypsin + - required + - Name of the Term in this particular case Name of the Enzyme. + * - Enzyme Accession + - AC + -AC=MS:1001251 + - required + - Accession in an external PSI-MS Ontology definition under the following category `cleavage agent name `_ + * - Cleavage site regular expression + - CS + - CS=(?<=[KR])(?!P) + - optional + - The cleavage site defined as a regular expression. + +An example of an SDRF-Proteomics with annotated endopeptidase: + +.. list-table:: Example about how to annotated enzymes in SDRF-Proteomics + :widths: 20 20 60 + :header-rows: 1 + + * - source name + - ... + - comment[cleavage agent details] + * - Sample 1 + - ... + - NT=Trypsin;AC=MS:1001251;CS=(?<=[KR])(?!P) + +.. warning:: If no endopeptidase is used, for example in the case of Top-down/intact protein experiments, the value SHOULD be ‘not applicable’. + +Precursor and Fragment mass tolerances +-------------------------------------- + +For proteomics experiments, it is important to encode different mass tolerances (for precursor and fragment ions). + +Example: + +.. list-table:: Example about how to annotated tolerances in SDRF-Proteomics + :widths: 20 20 30 30 + :header-rows: 1 + + * - source name + - ... + - comment[fragment mass tolerance] + - comment[precursor mass tolerance] + * - Sample 1 + - ... + - 0.6 Da + - 20 ppm + +.. note:: Units for the mass tolerances (either Da or ppm) MUST be provided. + +Factor values +========================= + +The variable/property under study MUST be highlighted using the :guilabel:`factor value` category. For example, the :guilabel:`factor value[disease]` is used when the main purpose of a given experiment is to compare protein expression across different diseases or different states of a given disease. Multiple variables under study can be included by adding multiple factor values columns. + +.. Important:: “factor value” columns SHOULD indicate which experimental factor/variable is used as the hypothesis to perform the data analysis. The “factor value” columns SHOULD occur after all characteristics and attributes of the samples. + + + + + + + + diff --git a/templates.rst b/templates.rst new file mode 100644 index 000000000..576db10cd --- /dev/null +++ b/templates.rst @@ -0,0 +1,184 @@ +SDRF-Proteomics Templates +######################################## + +The sample metadata **Templates** are a set of guidelines to annotate the different types of proteomics experiments (use cases) to ensure that Minimum Metadata and characteristics are provided to understand the dataset. These templates respond to the distribution and frequency of experiment types in public databases like PRIDE and ProteomeXchange. The Python/Java validators will check the columns checklists depending on the template. + +NOTE: It is planned that, unlike in other PSI formats, regular updates will need to be done to be able to explain how new use cases for the format can be accommodated. + +- **Default proteomics experiment**: Minimum information for any proteomics experiment - `Default template `_ +- **Human experiment**: All experiments that use `Human samples `_ +- **Vertebrates experiment**: Vertebrate experiment - `Vertebrate template `_ +- **Non-vertebrates experiment**: Non-vertebrate experiment - `Non-vertebrate template `_ +- **Plants experiment**: Plant experiment - `Plant template `_ +- **Cell lines experiment**: Experiments using cell-lines - `Cell lines template `_ + +.. note:: Each of the template is a tsv file with the minimum columns to describe the experiment. The community can create they are own templates for example for meta-proteomics experiments, imaging proteomics or top-down. If the community would like to add a new template, the following table should be modified and the corresponding tsv should be created in this folder. + +**Sample attributes**: Minimum sample attributes for primary cells from different species and cell lines + +.. list-table:: SDRF-Proteomics templates sample attributes + :widths: 14 14 14 14 14 14 14 + :header-rows: 1 + + * - + - Default + - Human + - Vertebrates + - Non-vertebrates + - Plants + - Cell lines + * - source name + - required + - required + - required + - required + - required + - required + * - characteristics[organism] + - required + - required + - required + - required + - required + - required + * - characteristics[strain/breed] + - + - + - + - required + - + - + * - characteristics[ecotype/cultivar] + - + - + - + - + - required + - + * - characteristics[ancestry category] + - + - required + - + - + - + - + * - characteristics[age] + - + - required + - required + - + - required + - + * - characteristics[developmental stage] + - + - required + - required + - + - required + - + * - characteristics[sex] + - + - required + - required + - + - required + - + * - characteristics[organism part] + - required + - required + - required + - required + - required + - required + * - characteristics[cell type] + - required + - required + - required + - required + - required + - required + * - technology type + - required + - required + - required + - required + - required + - required + * - characteristics[disease] + - required + - required + - required + - required + - required + - required + * - characteristics[individual] + - + - required + - + - + - + - + * - characteristics[biological replicate] + - required + - required + - required + - required + - required + - required + * - characteristics[cell line] + - + - + - + - + - + - required + * - + - + - + - + - + - + - + * - assay name + - required + - required + - required + - required + - required + - required + * - comment[data file] + - required + - required + - required + - required + - required + - required + * - comment[technical replicate] + - required + - required + - required + - required + - required + - required + * - comment[fraction identifier] + - required + - required + - required + - required + - required + - required + * - comment[label] + - required + - required + - required + - required + - required + - required + * - comment[instrument] + - required + - required + - required + - required + - required + - required + diff --git a/tools.rst b/tools.rst new file mode 100644 index 000000000..664edae9f --- /dev/null +++ b/tools.rst @@ -0,0 +1,45 @@ +Tools +########## + +srdf-pipelines +***************** + +The `SDRF pipelines `_ provide a set of tools to validate and convert SDRF-Proteomics files to different workflow configuration files such as MSstats,OpenMS and MaxQuant. + +Installation: + +.. code-block:: bash + + $> pip install sdrf-pipelines + + +Validate the SDRF: + +Then, you can use the tool by executing the following command: + +.. code-block:: bash + + $> parse_sdrf validate-sdrf --sdrf_file {here_the_path_to_sdrf_file} + +jsdrf +****************** + +The `jsdrf `_ is a Java library to validate SDRF file formats. The SDRF file format represent the sample to data information in proteomics experiments. + +Validation of sdrf files with proteomics rules. How to use it: + +.. code-block:: bash + + $> java -jar jdsrf-{X.X.X}.jar --sdrf query_file.tsv --template HUMAN + +Using the Java library with maven: + +.. code-block:: xml + + + uk.ac.ebi.pride.sdrf + jsdrf + {version} + + +