diff options
-rw-r--r-- | doc/INSTALL.md | 6 | ||||
-rw-r--r-- | doc/blog/using-covid-19-pubseq-part3.html | 239 | ||||
-rw-r--r-- | doc/blog/using-covid-19-pubseq-part3.org | 22 |
3 files changed, 154 insertions, 113 deletions
diff --git a/doc/INSTALL.md b/doc/INSTALL.md index e31b7d7..df825c6 100644 --- a/doc/INSTALL.md +++ b/doc/INSTALL.md @@ -38,7 +38,11 @@ Note that python-pyshex is packaged in http://git.genenetwork.org/guix-bioinformatics/guix-bioinformatics so you'll need it to the GUIX_PACKAGE_PATH - see the README in that -repository. +repository. E.g. + +```sh +env GUIX_PACKAGE_PATH=~/iwrk/opensource/guix/guix-bioinformatics/ ~/opt/guix/bin/guix environment -C guix --ad-hoc git python python-flask python-pyyaml python-pycurl python-magic nss-certs python-pyshex python-pyyaml --network openssl python-pyshex python-pyshexc minimap2 python-schema-salad python-arvados-python-client --share=/export/tmp -- env TMPDIR=/export/tmp python3 bh20sequploader/main.py --help +``` ### Using the Web Uploader diff --git a/doc/blog/using-covid-19-pubseq-part3.html b/doc/blog/using-covid-19-pubseq-part3.html index e2eb996..788c1d2 100644 --- a/doc/blog/using-covid-19-pubseq-part3.html +++ b/doc/blog/using-covid-19-pubseq-part3.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> -<!-- 2020-08-25 Tue 06:13 --> +<!-- 2020-10-27 Tue 06:43 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>COVID-19 PubSeq Uploading Data (part 3)</title> @@ -40,7 +40,7 @@ } pre.src { position: relative; - overflow: visible; + overflow: auto; padding-top: 1.2em; } pre.src:before { @@ -195,50 +195,26 @@ </style> <link rel="Blog stylesheet" type="text/css" href="blog.css" /> <script type="text/javascript"> -/* -@licstart The following is the entire license notice for the -JavaScript code in this tag. - -Copyright (C) 2012-2020 Free Software Foundation, Inc. - -The JavaScript code in this tag is free software: you can -redistribute it and/or modify it under the terms of the GNU -General Public License (GNU GPL) as published by the Free Software -Foundation, either version 3 of the License, or (at your option) -any later version. The code is distributed WITHOUT ANY WARRANTY; -without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. - -As additional permission under GNU GPL version 3 section 7, you -may distribute non-source (e.g., minimized or compacted) forms of -that code without the copy of the GNU GPL normally required by -section 4, provided you include this license notice and a URL -through which recipients can access the Corresponding Source. - - -@licend The above is the entire license notice -for the JavaScript code in this tag. -*/ +// @license magnet:?xt=urn:btih:e95b018ef3580986a04669f1b5879592219e2a7a&dn=public-domain.txt Public Domain <!--/*--><![CDATA[/*><!--*/ - function CodeHighlightOn(elem, id) - { - var target = document.getElementById(id); - if(null != target) { - elem.cacheClassElem = elem.className; - elem.cacheClassTarget = target.className; - target.className = "code-highlighted"; - elem.className = "code-highlighted"; - } - } - function CodeHighlightOff(elem, id) - { - var target = document.getElementById(id); - if(elem.cacheClassElem) - elem.className = elem.cacheClassElem; - if(elem.cacheClassTarget) - target.className = elem.cacheClassTarget; - } -/*]]>*///--> + function CodeHighlightOn(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.classList.add("code-highlighted"); + target.classList.add("code-highlighted"); + } + } + function CodeHighlightOff(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.classList.remove("code-highlighted"); + target.classList.remove("code-highlighted"); + } + } + /*]]>*///--> +// @license-end </script> </head> <body> @@ -248,40 +224,41 @@ for the JavaScript code in this tag. <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> -<li><a href="#orga4ecb9a">1. Uploading Data</a></li> -<li><a href="#org177121d">2. Step 1: Upload sequence</a></li> -<li><a href="#org1dd275e">3. Step 2: Add metadata</a> +<li><a href="#orga9eabf3">1. Uploading Data</a></li> +<li><a href="#org643e745">2. Step 1: Upload sequence</a></li> +<li><a href="#org0874b9f">3. Step 2: Add metadata</a> <ul> -<li><a href="#org6755b2d">3.1. Obligatory fields</a> +<li><a href="#orgaaa44f2">3.1. Obligatory fields</a> <ul> -<li><a href="#org608d238">3.1.1. Sample ID (sample_id)</a></li> -<li><a href="#org6b7b41e">3.1.2. Collection date</a></li> -<li><a href="#org148b780">3.1.3. Collection location</a></li> -<li><a href="#orga94dbb3">3.1.4. Sequencing technology</a></li> -<li><a href="#orgaecddf9">3.1.5. Authors</a></li> +<li><a href="#orgf38cdbf">3.1.1. Sample ID (sample_id)</a></li> +<li><a href="#org34b5b06">3.1.2. Collection date</a></li> +<li><a href="#org221f1cf">3.1.3. Collection location</a></li> +<li><a href="#org75d1dad">3.1.4. Sequencing technology</a></li> +<li><a href="#org990e897">3.1.5. Authors</a></li> </ul> </li> -<li><a href="#org2a6be40">3.2. Optional fields</a> +<li><a href="#org959072e">3.2. Optional fields</a> <ul> -<li><a href="#org6b9f2bd">3.2.1. Host information</a></li> -<li><a href="#orgc10115a">3.2.2. Collecting institution</a></li> -<li><a href="#orgf762e8b">3.2.3. Specimen source</a></li> -<li><a href="#orgb3fb04f">3.2.4. Source database accession</a></li> -<li><a href="#orgb0b1ba0">3.2.5. Strain name</a></li> +<li><a href="#org561b754">3.2.1. Host information</a></li> +<li><a href="#org774a993">3.2.2. Collecting institution</a></li> +<li><a href="#orgcf096cf">3.2.3. Specimen source</a></li> +<li><a href="#orgeac0fd8">3.2.4. Source database accession</a></li> +<li><a href="#org3c0aebd">3.2.5. Strain name</a></li> </ul> </li> </ul> </li> -<li><a href="#org20f43c7">4. Step 3: Submit to COVID-19 PubSeq</a> +<li><a href="#org9f09957">4. Step 3: Submit to COVID-19 PubSeq</a> <ul> -<li><a href="#org05ba2e2">4.1. Trouble shooting</a></li> +<li><a href="#org25372da">4.1. Trouble shooting</a></li> </ul> </li> -<li><a href="#org7163dce">5. Step 4: Check output</a></li> -<li><a href="#org3309eaf">6. Bulk sequence uploader</a> +<li><a href="#org8d1b4ad">5. Step 4: Check output</a></li> +<li><a href="#orgd86b3dc">6. Bulk sequence uploader</a> <ul> -<li><a href="#org2b69ab6">6.1. Run the uploader (CLI)</a></li> -<li><a href="#org96e16e7">6.2. Example: uploading bulk GenBank sequences</a></li> +<li><a href="#orgc4aa7a1">6.1. Run the uploader (CLI)</a></li> +<li><a href="#org46687b5">6.2. Example: uploading bulk GenBank sequences</a></li> +<li><a href="#orgbc228bc">6.3. Example: preparing metadata</a></li> </ul> </li> </ul> @@ -290,8 +267,8 @@ for the JavaScript code in this tag. -<div id="outline-container-orga4ecb9a" class="outline-2"> -<h2 id="orga4ecb9a"><span class="section-number-2">1</span> Uploading Data</h2> +<div id="outline-container-orga9eabf3" class="outline-2"> +<h2 id="orga9eabf3"><span class="section-number-2">1</span> Uploading Data</h2> <div class="outline-text-2" id="text-1"> <p> The COVID-19 PubSeq allows you to upload your SARS-Cov-2 strains to a @@ -301,8 +278,8 @@ gets triggered on upload. Read the <a href="./about">ABOUT</a> page for more inf </div> </div> -<div id="outline-container-org177121d" class="outline-2"> -<h2 id="org177121d"><span class="section-number-2">2</span> Step 1: Upload sequence</h2> +<div id="outline-container-org643e745" class="outline-2"> +<h2 id="org643e745"><span class="section-number-2">2</span> Step 1: Upload sequence</h2> <div class="outline-text-2" id="text-2"> <p> To upload a sequence in the <a href="http://covid19.genenetwork.org/">web upload page</a> hit the browse button and @@ -330,8 +307,8 @@ an improved pangenome. </div> </div> -<div id="outline-container-org1dd275e" class="outline-2"> -<h2 id="org1dd275e"><span class="section-number-2">3</span> Step 2: Add metadata</h2> +<div id="outline-container-org0874b9f" class="outline-2"> +<h2 id="org0874b9f"><span class="section-number-2">3</span> Step 2: Add metadata</h2> <div class="outline-text-2" id="text-3"> <p> The <a href="./">web upload page</a> contains fields for adding metadata. Metadata is @@ -357,12 +334,12 @@ the web form. Here we add some extra information. </p> </div> -<div id="outline-container-org6755b2d" class="outline-3"> -<h3 id="org6755b2d"><span class="section-number-3">3.1</span> Obligatory fields</h3> +<div id="outline-container-orgaaa44f2" class="outline-3"> +<h3 id="orgaaa44f2"><span class="section-number-3">3.1</span> Obligatory fields</h3> <div class="outline-text-3" id="text-3-1"> </div> -<div id="outline-container-org608d238" class="outline-4"> -<h4 id="org608d238"><span class="section-number-4">3.1.1</span> Sample ID (sample_id)</h4> +<div id="outline-container-orgf38cdbf" class="outline-4"> +<h4 id="orgf38cdbf"><span class="section-number-4">3.1.1</span> Sample ID (sample_id)</h4> <div class="outline-text-4" id="text-3-1-1"> <p> This is a string field that defines a unique sample identifier by the @@ -380,8 +357,8 @@ Here we add the GenBank ID MT536190.1. </div> </div> -<div id="outline-container-org6b7b41e" class="outline-4"> -<h4 id="org6b7b41e"><span class="section-number-4">3.1.2</span> Collection date</h4> +<div id="outline-container-org34b5b06" class="outline-4"> +<h4 id="org34b5b06"><span class="section-number-4">3.1.2</span> Collection date</h4> <div class="outline-text-4" id="text-3-1-2"> <p> Estimated collection date. The GenBank page says April 6, 2020. @@ -389,8 +366,8 @@ Estimated collection date. The GenBank page says April 6, 2020. </div> </div> -<div id="outline-container-org148b780" class="outline-4"> -<h4 id="org148b780"><span class="section-number-4">3.1.3</span> Collection location</h4> +<div id="outline-container-org221f1cf" class="outline-4"> +<h4 id="org221f1cf"><span class="section-number-4">3.1.3</span> Collection location</h4> <div class="outline-text-4" id="text-3-1-3"> <p> A search on wikidata says Los Angeles is @@ -399,8 +376,8 @@ A search on wikidata says Los Angeles is </div> </div> -<div id="outline-container-orga94dbb3" class="outline-4"> -<h4 id="orga94dbb3"><span class="section-number-4">3.1.4</span> Sequencing technology</h4> +<div id="outline-container-org75d1dad" class="outline-4"> +<h4 id="org75d1dad"><span class="section-number-4">3.1.4</span> Sequencing technology</h4> <div class="outline-text-4" id="text-3-1-4"> <p> GenBank entry says Illumina, so we can fill that in @@ -408,8 +385,8 @@ GenBank entry says Illumina, so we can fill that in </div> </div> -<div id="outline-container-orgaecddf9" class="outline-4"> -<h4 id="orgaecddf9"><span class="section-number-4">3.1.5</span> Authors</h4> +<div id="outline-container-org990e897" class="outline-4"> +<h4 id="org990e897"><span class="section-number-4">3.1.5</span> Authors</h4> <div class="outline-text-4" id="text-3-1-5"> <p> GenBank entry says 'Lamers,S., Nolan,D.J., Rose,R., Cross,S., Moraga @@ -420,16 +397,16 @@ Freehan,A. and Garcia-Diaz,J.', so we can fill that in. </div> </div> -<div id="outline-container-org2a6be40" class="outline-3"> -<h3 id="org2a6be40"><span class="section-number-3">3.2</span> Optional fields</h3> +<div id="outline-container-org959072e" class="outline-3"> +<h3 id="org959072e"><span class="section-number-3">3.2</span> Optional fields</h3> <div class="outline-text-3" id="text-3-2"> <p> All other fields are optional. But let's see what we can add. </p> </div> -<div id="outline-container-org6b9f2bd" class="outline-4"> -<h4 id="org6b9f2bd"><span class="section-number-4">3.2.1</span> Host information</h4> +<div id="outline-container-org561b754" class="outline-4"> +<h4 id="org561b754"><span class="section-number-4">3.2.1</span> Host information</h4> <div class="outline-text-4" id="text-3-2-1"> <p> Sadly, not much is known about the host from GenBank. A little @@ -443,8 +420,8 @@ did to the person and what the person was like (say age group). </div> </div> -<div id="outline-container-orgc10115a" class="outline-4"> -<h4 id="orgc10115a"><span class="section-number-4">3.2.2</span> Collecting institution</h4> +<div id="outline-container-org774a993" class="outline-4"> +<h4 id="org774a993"><span class="section-number-4">3.2.2</span> Collecting institution</h4> <div class="outline-text-4" id="text-3-2-2"> <p> We can fill that in. @@ -452,8 +429,8 @@ We can fill that in. </div> </div> -<div id="outline-container-orgf762e8b" class="outline-4"> -<h4 id="orgf762e8b"><span class="section-number-4">3.2.3</span> Specimen source</h4> +<div id="outline-container-orgcf096cf" class="outline-4"> +<h4 id="orgcf096cf"><span class="section-number-4">3.2.3</span> Specimen source</h4> <div class="outline-text-4" id="text-3-2-3"> <p> We have that: nasopharyngeal swab @@ -461,8 +438,8 @@ We have that: nasopharyngeal swab </div> </div> -<div id="outline-container-orgb3fb04f" class="outline-4"> -<h4 id="orgb3fb04f"><span class="section-number-4">3.2.4</span> Source database accession</h4> +<div id="outline-container-orgeac0fd8" class="outline-4"> +<h4 id="orgeac0fd8"><span class="section-number-4">3.2.4</span> Source database accession</h4> <div class="outline-text-4" id="text-3-2-4"> <p> Genbank which is <a href="http://identifiers.org/insdc/MT536190.1#sequence">http://identifiers.org/insdc/MT536190.1#sequence</a>. @@ -471,8 +448,8 @@ Note we plug in our own identifier MT536190.1. </div> </div> -<div id="outline-container-orgb0b1ba0" class="outline-4"> -<h4 id="orgb0b1ba0"><span class="section-number-4">3.2.5</span> Strain name</h4> +<div id="outline-container-org3c0aebd" class="outline-4"> +<h4 id="org3c0aebd"><span class="section-number-4">3.2.5</span> Strain name</h4> <div class="outline-text-4" id="text-3-2-5"> <p> SARS-CoV-2/human/USA/LA-BIE-070/2020 @@ -482,8 +459,8 @@ SARS-CoV-2/human/USA/LA-BIE-070/2020 </div> </div> -<div id="outline-container-org20f43c7" class="outline-2"> -<h2 id="org20f43c7"><span class="section-number-2">4</span> Step 3: Submit to COVID-19 PubSeq</h2> +<div id="outline-container-org9f09957" class="outline-2"> +<h2 id="org9f09957"><span class="section-number-2">4</span> Step 3: Submit to COVID-19 PubSeq</h2> <div class="outline-text-2" id="text-4"> <p> Once you have the sequence and the metadata together, hit @@ -493,8 +470,8 @@ submitted and the workflows should kick in! </div> -<div id="outline-container-org05ba2e2" class="outline-3"> -<h3 id="org05ba2e2"><span class="section-number-3">4.1</span> Trouble shooting</h3> +<div id="outline-container-org25372da" class="outline-3"> +<h3 id="org25372da"><span class="section-number-3">4.1</span> Trouble shooting</h3> <div class="outline-text-3" id="text-4-1"> <p> We got an error saying: {"stem": "<a href="http://www.wikidata.org/entity/">http://www.wikidata.org/entity/</a>",… @@ -508,8 +485,8 @@ submit button. </div> </div> -<div id="outline-container-org7163dce" class="outline-2"> -<h2 id="org7163dce"><span class="section-number-2">5</span> Step 4: Check output</h2> +<div id="outline-container-org8d1b4ad" class="outline-2"> +<h2 id="org8d1b4ad"><span class="section-number-2">5</span> Step 4: Check output</h2> <div class="outline-text-2" id="text-5"> <p> The current pipeline takes 5.5 hours to complete! Once it completes @@ -520,8 +497,8 @@ in. </div> </div> -<div id="outline-container-org3309eaf" class="outline-2"> -<h2 id="org3309eaf"><span class="section-number-2">6</span> Bulk sequence uploader</h2> +<div id="outline-container-orgd86b3dc" class="outline-2"> +<h2 id="orgd86b3dc"><span class="section-number-2">6</span> Bulk sequence uploader</h2> <div class="outline-text-2" id="text-6"> <p> Above steps require a manual upload of one sequence with metadata. @@ -584,8 +561,8 @@ submitter: </div> </div> -<div id="outline-container-org2b69ab6" class="outline-3"> -<h3 id="org2b69ab6"><span class="section-number-3">6.1</span> Run the uploader (CLI)</h3> +<div id="outline-container-orgc4aa7a1" class="outline-3"> +<h3 id="orgc4aa7a1"><span class="section-number-3">6.1</span> Run the uploader (CLI)</h3> <div class="outline-text-3" id="text-6-1"> <p> Installing with pip you should be @@ -610,9 +587,28 @@ python3 bh20sequploader/main.py example/sequence.fasta example/maximum_metadata_ <p> after installing dependencies (also described in <a href="https://github.com/arvados/bh20-seq-resource/blob/master/doc/INSTALL.md">INSTALL</a> with the GNU -Guix package manager). +Guix package manager). The <code>--help</code> shows </p> +<div class="org-src-container"> +<pre class="src src-sh">Entering sequence uploader +usage: main.py [-h] [--validate] [--skip-qc] [--trusted] metadata sequence_p1 [sequence_p2] + +Upload SARS-CoV-19 sequences for analysis + +positional arguments: + metadata sequence metadata json + sequence_p1 sequence FASTA/FASTQ + sequence_p2 sequence FASTQ pair + +optional arguments: + -h, --help show this help message and exit + --validate Dry run, validate only + --skip-qc Skip local qc check + --trusted Trust local validation and add directly to validated project +</pre> +</div> + <p> The web interface using this exact same script so it should just work (TM). @@ -620,8 +616,9 @@ The web interface using this exact same script so it should just work </div> </div> -<div id="outline-container-org96e16e7" class="outline-3"> -<h3 id="org96e16e7"><span class="section-number-3">6.2</span> Example: uploading bulk GenBank sequences</h3> + +<div id="outline-container-org46687b5" class="outline-3"> +<h3 id="org46687b5"><span class="section-number-3">6.2</span> Example: uploading bulk GenBank sequences</h3> <div class="outline-text-3" id="text-6-2"> <p> We also use above script to bulk upload GenBank sequences with a <a href="https://github.com/arvados/bh20-seq-resource/blob/master/scripts/download_genbank_data/from_genbank_to_fasta_and_yaml.py">FASTA @@ -646,10 +643,32 @@ ls $<span style="color: #ffcc80;">dir_fasta_and_yaml</span>/*.yaml | <span style </div> </div> </div> + + +<div id="outline-container-orgbc228bc" class="outline-3"> +<h3 id="orgbc228bc"><span class="section-number-3">6.3</span> Example: preparing metadata</h3> +<div class="outline-text-3" id="text-6-3"> +<p> +Usually, metadata are available in tabular format, like spreadsheets. As an example, we provide a script +<a href="https://github.com/arvados/bh20-seq-resource/tree/master/scripts/esr_samples">esr_samples.py</a> to show you how to parse +your metadata in YAML files ready for the upload. To execute the script, go in the ~bh20-seq-resource/scripts/esr_samples +and execute +</p> + +<div class="org-src-container"> +<pre class="src src-sh">python3 esr_samples.py +</pre> +</div> + +<p> +You will find the YAML files in the `yaml` folder which will be created in the same directory. +</p> +</div> +</div> </div> </div> <div id="postamble" class="status"> -<hr><small>Created by <a href="http://thebird.nl/">Pjotr Prins</a> (pjotr.public768 at thebird 'dot' nl) using Emacs org-mode and a healthy dose of Lisp!<br />Modified 2020-08-25 Tue 06:13</small>. +<hr><small>Created by <a href="http://thebird.nl/">Pjotr Prins</a> (pjotr.public768 at thebird 'dot' nl) using Emacs org-mode and a healthy dose of Lisp!<br />Modified 2020-10-27 Tue 06:43</small>. </div> </body> </html> diff --git a/doc/blog/using-covid-19-pubseq-part3.org b/doc/blog/using-covid-19-pubseq-part3.org index abc260c..fb68251 100644 --- a/doc/blog/using-covid-19-pubseq-part3.org +++ b/doc/blog/using-covid-19-pubseq-part3.org @@ -228,7 +228,25 @@ command line : python3 bh20sequploader/main.py example/sequence.fasta example/maximum_metadata_example.yaml after installing dependencies (also described in [[https://github.com/arvados/bh20-seq-resource/blob/master/doc/INSTALL.md][INSTALL]] with the GNU -Guix package manager). +Guix package manager). The ~--help~ shows + +#+begin_src sh +Entering sequence uploader +usage: main.py [-h] [--validate] [--skip-qc] [--trusted] metadata sequence_p1 [sequence_p2] + +Upload SARS-CoV-19 sequences for analysis + +positional arguments: + metadata sequence metadata json + sequence_p1 sequence FASTA/FASTQ + sequence_p2 sequence FASTQ pair + +optional arguments: + -h, --help show this help message and exit + --validate Dry run, validate only + --skip-qc Skip local qc check + --trusted Trust local validation and add directly to validated project +#+end_src The web interface using this exact same script so it should just work (TM). @@ -265,4 +283,4 @@ and execute python3 esr_samples.py #+END_SRC -You will find the YAML files in the `yaml` folder which will be created in the same directory.
\ No newline at end of file +You will find the YAML files in the `yaml` folder which will be created in the same directory. |