nf-core / tools

Python package with helper tools for the nf-core community.
https://nf-co.re
MIT License
225 stars 186 forks source link

Bioschemas Workflow Profile #685

Open ewels opened 4 years ago

ewels commented 4 years ago

We are close to releasing our new pipeline schema which describe input parameters. Through chatting to people at BOSC 🍐 I've become aware of a project called Bioschemas which works with schema.org to publish official standardised ways to describe things.

They are currently developing a new schema standard which is specifically for computational workflows: https://bioschemas.org/profiles/Workflow/

Aspects of this schema seem to share a lot of overlap with the schema structure that we're working with already. It could be interesting to see if we can migrate our schema structure to the Bioschemas structure to adhere to this new community standard. This would help the visibility of the nf-core pipelines across the web and in other projects (eg. WorkflowHub).

This will be conditional on it being relatively fast and painless to implement and it still providing all of the functionality that we need (eg. custom fields, grouping of input parameters and so on).

maxulysse commented 4 years ago

Love the idea

ewels commented 4 years ago

Having looked into this more, I think that we are best off keeping our JSON Schema. But we should be able to build a Bioschema fairly easy. Where exactly this should go or where it would be used is less clear.

ewels commented 4 years ago

For examples, can look at the HTML source of any workflow on https://workflowhub.eu.

For example: https://workflowhub.eu/workflows/38

```json { "@context": "http://schema.org", "@type": "Workflow", "@id": "https://workflowhub.eu/workflows/38", "description": "Alignment, assembly RNASEQ reads and annotation of generated transcripts.", "name": "Unicycler assembly and annotation", "url": "https://workflowhub.eu/workflows/38", "keywords": "Unicycler, Annotation, Alignment, RNASEQ, Assembly, covid-19", "license": "https://opensource.org/licenses/Apache-2.0", "producer": [ { "@type": [ "Project", "Organization" ], "@id": "https://workflowhub.eu/projects/3", "name": "GalaxyProject SARS-CoV-2" } ], "dateCreated": "2020-06-18 23:07:23 UTC", "dateModified": "2020-07-01 09:00:05 UTC", "encodingFormat": "application/zip", "sdPublisher": [ { "@type": "Person", "@id": "https://workflowhub.eu/people/26", "name": "Ambarish Kumar" } ], "version": 1, "image": "https://workflowhub.eu/workflows/38/diagram?version=1", "programmingLanguage": "Galaxy", "inputs": [ { "@type": "PropertyValueSpecification", "name": "mask_data_file" }, { "@type": "PropertyValueSpecification", "name": "bed_file" }, { "@type": "PropertyValueSpecification", "name": "lr_align" }, { "@type": "PropertyValueSpecification", "name": "long" }, { "@type": "PropertyValueSpecification", "name": "rotation" }, { "@type": "PropertyValueSpecification", "name": "input" }, { "@type": "PropertyValueSpecification", "name": "mask_data_file" } ], "outputs": [ { "@type": "PropertyValueSpecification", "name": "proteome" }, { "@type": "PropertyValueSpecification", "name": "list_paired" }, { "@type": "PropertyValueSpecification", "name": "output_collection" }, { "@type": "PropertyValueSpecification", "name": "output_collection_other" }, { "@type": "PropertyValueSpecification", "name": "log" }, { "@type": "PropertyValueSpecification", "name": "outfile" }, { "@type": "PropertyValueSpecification", "name": "outfile" }, { "@type": "PropertyValueSpecification", "name": "output_paired_coll" }, { "@type": "PropertyValueSpecification", "name": "report_html" }, { "@type": "PropertyValueSpecification", "name": "report_json" }, { "@type": "PropertyValueSpecification", "name": "bam_output" }, { "@type": "PropertyValueSpecification", "name": "stats" }, { "@type": "PropertyValueSpecification", "name": "html_report" }, { "@type": "PropertyValueSpecification", "name": "output1" }, { "@type": "PropertyValueSpecification", "name": "forward" }, { "@type": "PropertyValueSpecification", "name": "reverse" }, { "@type": "PropertyValueSpecification", "name": "outFile" }, { "@type": "PropertyValueSpecification", "name": "forward" }, { "@type": "PropertyValueSpecification", "name": "reverse" }, { "@type": "PropertyValueSpecification", "name": "assembly_graph" }, { "@type": "PropertyValueSpecification", "name": "assembly" }, { "@type": "PropertyValueSpecification", "name": "outfile" }, { "@type": "PropertyValueSpecification", "name": "genecluster_tabular" }, { "@type": "PropertyValueSpecification", "name": "genbank" }, { "@type": "PropertyValueSpecification", "name": "embl" }, { "@type": "PropertyValueSpecification", "name": "archive" }, { "@type": "PropertyValueSpecification", "name": "html" }, { "@type": "PropertyValueSpecification", "name": "transdecoder_pep" }, { "@type": "PropertyValueSpecification", "name": "transdecoder_cds" }, { "@type": "PropertyValueSpecification", "name": "transdecoder_bed" }, { "@type": "PropertyValueSpecification", "name": "transdecoder_gff3" }, { "@type": "PropertyValueSpecification", "name": "genes_output" }, { "@type": "PropertyValueSpecification", "name": "output" }, { "@type": "PropertyValueSpecification", "name": "tblout" }, { "@type": "PropertyValueSpecification", "name": "domtblout" }, { "@type": "PropertyValueSpecification", "name": "outfile" }, { "@type": "PropertyValueSpecification", "name": "output1" }, { "@type": "PropertyValueSpecification", "name": "output1" }, { "@type": "PropertyValueSpecification", "name": "output1" } ] } ```
ewels commented 4 years ago

Another example: https://workflowhub.eu/workflows/19 (for nf-core/viralrecon)

```json { "@context": "http://schema.org", "@type": "Workflow", "@id": "https://workflowhub.eu/workflows/19", "description": "\r\n

\n\"nf-core/viralrecon\"\n

\r\n

\"GitHub \"GitHub \"Nextflow\" \"install

\r\n

\"Docker\" \"DOI\"

\r\n

nfcore/viralrecon is a bioinformatics analysis pipeline used to perform assembly and intrahost/low-frequency variant calling for viral samples. The pipeline currently supports metagenomics and amplicon sequencing data derived from the Illumina sequencing platform.

\r\n

This pipeline is a re-implementation of the SARS_Cov2_consensus-nf and SARS_Cov2_assembly-nf pipelines initially developed by Sarai Varona and Sara Monzon from BU-ISCIII. Porting both of these pipelines to nf-core was an international collaboration between numerous contributors and developers, led by Harshil Patel from the The Bioinformatics & Biostatistics Group at The Francis Crick Institute, London. We appreciated the need to have a portable, reproducible and scalable pipeline for the analysis of COVID-19 sequencing samples and so the Avengers Assembled! Please come and join us and add yourself to the contributor list :)

\r\n

We have integrated a number of options in the pipeline to allow you to run specific aspects of the workflow if you so wish. For example, you can skip all of the assembly steps with the --skip_assembly parameter. See usage docs for all of the available options when running the pipeline.

\r\n

Please click here to see an example MultiQC report generated using the parameters defined in this configuration file to run the pipeline on samples which were prepared from the ncov-2019 ARTIC Network V1 amplicon set and sequenced on the Illumina MiSeq platform in 301bp paired-end format.

\r\n

The pipeline is built using Nextflow, a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It comes with docker containers making installation trivial and results highly reproducible. Furthermore, automated continuous integration tests to run the pipeline on a full-sized dataset are passing on AWS cloud.

\r\n

\nPipeline summary

\r\n
    \r\n
  1. Download samples via SRA, ENA or GEO ids (ENA FTP, parallel-fastq-dump; if required)
  2. \r\n
  3. Merge re-sequenced FastQ files (cat; if required)
  4. \r\n
  5. Read QC (FastQC)
  6. \r\n
  7. Adapter trimming (fastp)
  8. \r\n
  9. Variant calling
    \r\ni. Read alignment (Bowtie 2)
    \r\nii. Sort and index alignments (SAMtools)
    \r\niii. Primer sequence removal (iVar; amplicon data only)
    \r\niv. Duplicate read marking (picard; removal optional)
    \r\nv. Alignment-level QC (picard, SAMtools)
    \r\nvi. Choice of multiple variant calling and consensus sequence generation routes (VarScan 2, BCFTools, BEDTools || iVar variants and consensus || BCFTools, BEDTools)
    \r\n- Variant annotation (SnpEff, SnpSift)
    \r\n- Consensus assessment report (QUAST)
  10. \r\n
  11. \nDe novo assembly
    \r\ni. Primer trimming (Cutadapt; amplicon data only)
    \r\nii. Removal of host reads (Kraken 2)
    \r\niii. Choice of multiple assembly tools (SPAdes || metaSPAdes || Unicycler || minia)
    \r\n- Blast to reference genome (blastn)
    \r\n- Contiguate assembly (ABACAS)
    \r\n- Assembly report (PlasmidID)
    \r\n- Assembly assessment report (QUAST)
    \r\n- Call variants relative to reference (Minimap2, seqwish, vg, Bandage)
    \r\n- Variant annotation (SnpEff, SnpSift)
  12. \r\n
  13. Present QC and visualisation for raw read, alignment, assembly and variant calling results (MultiQC)
  14. \r\n
\r\n

\nQuick Start

\r\n

i. Install nextflow

\r\n

ii. Install either Docker or Singularity for full pipeline reproducibility (please only use Conda as a last resort; see docs)

\r\n

iii. Download the pipeline and test it on a minimal dataset with a single command

\r\n
nextflow run nf-core/viralrecon -profile test,<docker/singularity/conda/institute>\r\n
\r\n
\r\n

Please check nf-core/configs to see if a custom config file to run nf-core pipelines already exists for your Institute. If so, you can simply use -profile <institute> in your command. This will enable either docker or singularity and set the appropriate execution settings for your local compute environment.

\r\n
\r\n

iv. Start running your own analysis!

\r\n
nextflow run nf-core/viralrecon -profile <docker/singularity/conda/institute> --input samplesheet.csv --genome 'NC_045512.2' -profile docker\r\n
\r\n

See usage docs for all of the available options when running the pipeline.

\r\n

\nDocumentation

\r\n

The nf-core/viralrecon pipeline comes with documentation about the pipeline, found in the docs/ directory:

\r\n
    \r\n
  1. Installation
  2. \r\n
  3. Pipeline configuration\r\n\r\n
  4. \r\n
  5. Running the pipeline
  6. \r\n
  7. Output and how to interpret the results
  8. \r\n
  9. Troubleshooting
  10. \r\n
\r\n

\nCredits

\r\n

These scripts were originally written by Sarai Varona, Miguel Juliá and Sara Monzon from BU-ISCIII and co-ordinated by Isabel Cuesta for the Institute of Health Carlos III, Spain. Through collaboration with the nf-core community the pipeline has now been updated substantially to include additional processing steps, to standardise inputs/outputs and to improve pipeline reporting; implemented primarily by Harshil Patel from The Bioinformatics & Biostatistics Group at The Francis Crick Institute, London.

\r\n

Many thanks to others who have helped out and contributed along the way too, including (but not limited to):

\r\n\r\n\r\n\r\nName\r\nAffiliation\r\n\r\n\r\n\r\n\r\nAlexander Peltzer\r\nBoehringer Ingelheim, Germany\r\n\r\n\r\nAlison Meynert\r\nUniversity of Edinburgh, Scotland\r\n\r\n\r\nEdgar Garriga Nogales\r\nCentre for Genomic Regulation, Spain\r\n\r\n\r\nErik Garrison\r\nUCSC, USA\r\n\r\n\r\nGisela Gabernet\r\nQBiC, University of Tübingen, Germany\r\n\r\n\r\nJoao Curado\r\nFlomics Biotech, Spain\r\n\r\n\r\nJose Espinosa-Carrasco\r\nCentre for Genomic Regulation, Spain\r\n\r\n\r\nKatrin Sameith\r\nDRESDEN-concept Genome Center, Germany\r\n\r\n\r\nLluc Cabus\r\nFlomics Biotech, Spain\r\n\r\n\r\nMarta Pozuelo\r\nFlomics Biotech, Spain\r\n\r\n\r\nMaxime Garcia\r\nSciLifeLab, Sweden\r\n\r\n\r\nMichael Heuer\r\nUC Berkeley, USA\r\n\r\n\r\nPhil Ewels\r\nSciLifeLab, Sweden\r\n\r\n\r\nSimon Heumos\r\nQBiC, University of Tübingen, Germany\r\n\r\n\r\nStephen Kelly\r\nMemorial Sloan Kettering Cancer Center, USA\r\n\r\n\r\nThanh Le Viet\r\nQuadram Institute, UK\r\n\r\n\r\n\r\n
\r\n

Listed in alphabetical order

\r\n
\r\n

\nContributions and Support

\r\n

If you would like to contribute to this pipeline, please see the contributing guidelines.

\r\n

For further information or help, don’t hesitate to get in touch on Slack (you can join with this invite).

\r\n

\nCitation

\r\n

If you use nf-core/viralrecon for your analysis, please cite it using the following doi: 10.5281/zenodo.3872730

\r\n

An extensive list of references for the tools used by the pipeline can be found in the CITATIONS.md file.

\r\n

You can cite the nf-core publication as follows:

\r\n
\r\n

The nf-core framework for community-curated bioinformatics pipelines.

\r\n

Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.

\r\n

Nat Biotechnol. 2020 Feb 13. doi: 10.1038/s41587-020-0439-x.
\r\nReadCube: Full Access Link

\r\n
\r\n", "name": "nf-core/viralrecon", "url": "https://workflowhub.eu/workflows/19", "keywords": "covid-19", "license": "https://opensource.org/licenses/MIT", "creator": [ { "@type": "Person", "name": "Sarai Varona and Miguel Juliá and Sara Monzon and Alexander Peltzer and Alison Meynert and Edgar Garriga Nogales and Erik Garrison and Gisela Gabernet and Harshil Patel and Joao Curado and Jose Espinosa-Carrasco and Katrin Sameith and Marta Pozuelo and Maxime Garcia and Michael Heuer and Phil Ewels and Simon Heumos and Stephen Kelly and Thanh Le Viet and Isabel Cuesta" } ], "producer": [ { "@type": [ "Project", "Organization" ], "@id": "https://workflowhub.eu/projects/5", "name": "nf-core viralrecon" } ], "dateCreated": "2020-05-14 14:10:58 UTC", "dateModified": "2020-06-02 10:46:31 UTC", "encodingFormat": "application/zip", "sdPublisher": [ { "@type": "Person", "@id": "https://workflowhub.eu/people/11", "name": "Hervé Ménager" } ], "version": 1, "programmingLanguage": "Nextflow", "inputs": [ ], "outputs": [ ] } ```
ewels commented 3 years ago

I think that this would be a great file to generate automatically to give pipeline-level metadata of all things possible in a flat file.

Can hopefully generate a lot of it automatically from nextflow config results, plus stuff from the schema.

ewels commented 3 years ago

I'm not super clear of the overlap between Bioschemas + RO Crate (https://github.com/nf-core/tools/pull/703) so need to think about that when working on either 👍🏻