├── .gitignore ├── LICENSE ├── README.md ├── cluster.ipynb ├── download.ipynb ├── filter.ipynb ├── img └── antiref_iterative-clustering.jpg └── scripts ├── download_heavy.txt └── download_light.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Bryan Briney 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7474336.svg)](https://doi.org/10.5281/zenodo.7474336) 2 | [![Made withJupyter](https://img.shields.io/badge/Made%20with-Jupyter-orange?logo=Jupyter)](https://jupyter.org/try) 3 | ![GitHub](https://img.shields.io/github/license/briney/antiref) 4 | 5 | 6 | # AntiRef: reference clusters of human antibody sequences 7 | 8 | [AntiRef](https://zenodo.org/record/7474336) (**Anti**body **Ref**erence Clusters), which was inspired by [UniRef](https://academic.oup.com/bioinformatics/article/23/10/1282/197795), provides clustered datasets of filtered human antibody sequences. The Jupyter notebooks in this repository contain all code necessary to recreate AntiRef entirely from scratch: 9 | 10 | * **[download](download.ipynb)**: downloads raw data from the Observed Antibody Space (OAS) repository. Note that the combined total of these datasets is quite large -- nearly 4TB after decompression. 11 | * **[filter](filter.ipynb)**: filters the raw sequences to ensure only productive, full-length sequences are used to compile AntiRef. 12 | * **[cluster](cluster.ipynb)**: performs a nested clustering procedure using several identity thresholds. This process is similar to that used by UniRef, although the thresholds were optimized for antibody sequence data rather than general protein seqeunces. 13 | 14 | ### What is *nested clustering*? 15 | AntiRef is a series of antibody sequence datasets, each clustered at an identity threshold of decreasing stringency. Rather than clustering the filtered input dataset using each threshold in parallel, we perform the clustering sequentially using the output from the previous round as input for the subsequent clustering iteration: 16 | 17 | ![iterative clustering schematic](https://github.com/briney/antiref/blob/main/img/antiref_iterative-clustering.jpg) 18 | 19 | This has two primary benefits. First and most importantly, it ensures that cluster and sequence names are conserved across all AntiRef datasets. Each cluster is named after its representative sequence (as determined by `mmseqs`), and by using the output of one clustering round as input for the next, we can ensure that the representative sequence will be present in all previous clustering outputs. For example, if we separately clustered the input dataset at 99% and 98% identity, there is the possibility that some cluster representatives in the 98% dataset are not present in the 99% dataset because these sequences were not selected as representatives for their respective 99% cluster. 20 | 21 | ### Why AntiRef? 22 | Biases in the human antibody repertoire result in publicly available antibody sequence datasets containing many duplicate or highly similar sequences. These redundant sequences are a barrier to rapid similarity searches and reduce the efficiency with which these datasets can be used to train statistical or machine learning models of human antibodies. Identity-based clustering provides a solution, however, the extremely large size of available antibody repertoire datasets make such clustering operations computationally intensive and potentially out of reach for many scientists and researchers who would benefit from such data. 23 | 24 | Starting from a dataset of ~335M unique, full-length, productive human antibody sequences from the Observed Antibody Space repository, several AntiRef cluster sets were generated. Due to the modular nature of recombined antibody genes, the clustering thresholds used by UniRef (100, 90 and 50 percent identity) to cluster general protein sequences are suboptimal for antibody clustering. AntiRef provides reference antibody sequence datasets clustered at a range of relevant identity thresholds: 100, 99, 98, 96, 94, 92 and 90 percent. AntiRef90, which uses the lowest clustering threshold of any AntiRef dataset, is roughly one-third the size of the filtered input dataset and less than half the size of the non-redundant AntiRef100. 25 | 26 | ### Where can I download AntiRef datasets? 27 | AntiRef datasets are available on Zenodo and can be downloaded at the following links: 28 | 29 | * [AntiRef100](https://doi.org/10.5281/zenodo.7474657): representative sequences resulting from clustering all filtered AntiRef input sequences at 100% identity. 30 | * [AntiRef99](https://doi.org/10.5281/zenodo.7475961): representative sequences resulting from clustering AntiRef100 at 99% identity. 31 | * [AntiRef98](https://doi.org/10.5281/zenodo.7476040): representative sequences resulting from clustering AntiRef99 at 98% identity. 32 | * [AntiRef96](https://doi.org/10.5281/zenodo.7487182): representative sequences resulting from clustering AntiRef98 at 96% identity. 33 | * [AntiRef94](https://doi.org/10.5281/zenodo.7487199): representative sequences resulting from clustering AntiRef96 at 94% identity. 34 | * [AntiRef92](https://doi.org/10.5281/zenodo.7487264): representative sequences resulting from clustering AntiRef94 at 92% identity. 35 | * [AntiRef90](https://doi.org/10.5281/zenodo.7487298): representative sequences resulting from clustering AntiRef92 at 90% identity. 36 | 37 | ### How should I cite AntiRef? 38 | Antiref has been published in [*Bioinformatics Advances*](https://doi.org/10.1093/bioadv/vbad109) and can be cited as: 39 | ``` 40 | Briney B. (2023). AntiRef: reference clusters of human antibody sequences. 41 | Bioinformatics Advances. https://doi.org/10.1093/bioadv/vbad109. 42 | ``` 43 | 44 | Zenodo provides a unique DOI for each version of deposited dataset. The DOI of the current version of AntiRef (`v2022.12.14`) is `10.5281/zenodo.7474336`, so an appropriate citation would be: 45 | 46 | ``` 47 | Briney, Bryan. (2022). AntiRef: reference clusters of human antibody sequences (v2022.12.14). 48 | [Data set]. Zenodo. https://doi.org/10.5281/zenodo.7474336 49 | ``` 50 | 51 | -------------------------------------------------------------------------------- /cluster.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "attachments": {}, 5 | "cell_type": "markdown", 6 | "id": "b9bce4ad", 7 | "metadata": {}, 8 | "source": [ 9 | "## AntiRef: identity clustering" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": null, 15 | "id": "bae42275-eb34-4c8e-84c3-2e67dd618089", 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "# install dependencies\n", 20 | "%pip install pandas tqdm abutils" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": null, 26 | "id": "b60dfecf", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "from collections import Counter\n", 31 | "import os\n", 32 | "import subprocess as sp\n", 33 | "import sys\n", 34 | "from typing import Iterable, Optional\n", 35 | "\n", 36 | "from tqdm.notebook import tqdm\n", 37 | "\n", 38 | "import pandas as pd\n", 39 | "\n", 40 | "import abutils" 41 | ] 42 | }, 43 | { 44 | "attachments": {}, 45 | "cell_type": "markdown", 46 | "id": "10ea347b", 47 | "metadata": {}, 48 | "source": [ 49 | "#### build the initial MMSeqs2 database\n", 50 | "\n", 51 | "`mmseqs linclust` requires an MMSeqs2 database as input (not a FASTA file), so we first need to create a database of the filtered input sequences" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": null, 57 | "id": "b501988f", 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "def make_mmseqs_db(\n", 62 | " fasta_path: str,\n", 63 | " db_path: str,\n", 64 | " debug: bool = False,\n", 65 | ") -> Optional[Iterable[str]]:\n", 66 | " '''\n", 67 | " Builds an MMSeqs2 database from a FASTA-formatted input file.\n", 68 | "\n", 69 | " Parameters\n", 70 | " ----------\n", 71 | " fasta_path : str\n", 72 | " Path to a FASTA-formatted input file. Required.\n", 73 | "\n", 74 | " db_path : str\n", 75 | " Path for the MMSeqs2 database. If it does not exist, it will be created. \n", 76 | " Required.\n", 77 | "\n", 78 | " debug : bool, default=False\n", 79 | " If ``True``, the ``stdout`` and ``stderr`` from running ``mmseqs`` will be\n", 80 | " returned. If ``False``, nothing is returned. Default is ``False``.\n", 81 | " '''\n", 82 | " fasta_path = os.path.abspath(fasta_path)\n", 83 | " db_path = os.path.abspath(db_path)\n", 84 | " if not os.path.isdir(os.path.dirname(db_path)):\n", 85 | " abutils.io.makedir(os.path.dirname(db_path))\n", 86 | " createdb = f\"mmseqs createdb {fasta_path} {db_path}\"\n", 87 | " p = sp.Popen(createdb, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 88 | " stdout, stderr = p.communicate()\n", 89 | " if debug:\n", 90 | " return stdout, stderr" 91 | ] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": null, 96 | "id": "447c0503", 97 | "metadata": {}, 98 | "outputs": [], 99 | "source": [ 100 | "init_fasta = './data/filtered/fasta/all.fasta'\n", 101 | "init_db = './data/antiref/seqdb/init'\n", 102 | "\n", 103 | "make_mmseqs_db(\n", 104 | " fasta_path=init_fasta,\n", 105 | " db_path=init_db,\n", 106 | ")" 107 | ] 108 | }, 109 | { 110 | "attachments": {}, 111 | "cell_type": "markdown", 112 | "id": "2f3d4ea3", 113 | "metadata": {}, 114 | "source": [ 115 | "### cluster AntiRef datasets\n", 116 | "\n", 117 | "\n" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": null, 123 | "id": "90d21181", 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [ 127 | "def linclust(\n", 128 | " threshold: int,\n", 129 | " parent_db: str,\n", 130 | " temp_dir: str = '/tmp',\n", 131 | " debug: bool = False,\n", 132 | ") -> Optional[Iterable[str]]:\n", 133 | " '''\n", 134 | " \n", 135 | " '''\n", 136 | " # set up file and DB paths\n", 137 | " temp_dir = os.path.abspath(temp_dir)\n", 138 | " parent_db = os.path.abspath(parent_db)\n", 139 | " cluster_db = f\"./data/antiref/clusterdb/antiref{threshold}\"\n", 140 | " seq_db = f\"./data/antiref/seqdb/antiref{threshold}\"\n", 141 | " seq_tsv = f\"./data/antiref/tsv/antiref{threshold}.tsv\"\n", 142 | " cluster_sizes = f\"./data/antiref/tsv/antiref{threshold}_cluster-sizes.csv\"\n", 143 | " seq_fasta = f\"./data/antiref/fasta/antiref{threshold}.fasta\"\n", 144 | " for path in [cluster_db, seq_db, seq_tsv, seq_fasta]:\n", 145 | " d = os.path.dirname(path)\n", 146 | " if not os.path.isdir(d):\n", 147 | " abutils.io.make_dir(d)\n", 148 | " # do the clustering\n", 149 | " cmd = f\"mmseqs linclust {parent_db} {cluster_db} {temp_dir} \"\n", 150 | " cmd += \"--cov-mode 0 \"\n", 151 | " cmd += \"-c 1.0 \"\n", 152 | " cmd += f\"--min-seq-id {threshold/100:0.2f} \"\n", 153 | " cmd += f\"&& mmseqs createsubdb {cluster_db} {parent_db} {seq_db} \"\n", 154 | " cmd += f\"&& mmseqs convert2fasta {seq_db} {seq_fasta} \"\n", 155 | " cmd += f\"&& mmseqs createtsv {parent_db} {parent_db} {cluster_db} {seq_tsv} \"\n", 156 | " cmd += f\"&& cut -f 1 {seq_tsv} | sort | uniq -c > {cluster_sizes} \"\n", 157 | " if debug:\n", 158 | " print('')\n", 159 | " print(cmd)\n", 160 | " print('')\n", 161 | " p = sp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 162 | " stdout, stderr = p.communicate()\n", 163 | " if debug:\n", 164 | " return stdout, stderr" 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": null, 170 | "id": "db3a5e7b", 171 | "metadata": {}, 172 | "outputs": [], 173 | "source": [ 174 | "thresholds = [100, 99, 98, 96, 94, 92, 90]\n", 175 | "parent_lookup = {\n", 176 | " 100: \"./data/antiref/seqdb/init\",\n", 177 | " 99: \"./data/antiref/seqdb/antiref100\",\n", 178 | " 98: \"./data/antiref/seqdb/antiref99\",\n", 179 | " 96: \"./data/antiref/seqdb/antiref98\",\n", 180 | " 94: \"./data/antiref/seqdb/antiref96\",\n", 181 | " 92: \"./data/antiref/seqdb/antiref94\",\n", 182 | " 90: \"./data/antiref/seqdb/antiref92\",\n", 183 | "}" 184 | ] 185 | }, 186 | { 187 | "cell_type": "code", 188 | "execution_count": null, 189 | "id": "5ed69526", 190 | "metadata": {}, 191 | "outputs": [], 192 | "source": [ 193 | "for threshold in thresholds:\n", 194 | " parent_db = parent_lookup[threshold]\n", 195 | " print(f'clustering at {threshold/100:0.2f} identity using linclust...')\n", 196 | " print(f' - parent: {parent_db}')\n", 197 | " sys.stdout.flush()\n", 198 | " linclust(\n", 199 | " threshold=threshold,\n", 200 | " parent_db=parent_db,\n", 201 | " )" 202 | ] 203 | }, 204 | { 205 | "attachments": {}, 206 | "cell_type": "markdown", 207 | "id": "ef48b068", 208 | "metadata": {}, 209 | "source": [ 210 | "### cluster manifest\n", 211 | "\n", 212 | "The cluster manifest is a CSV file of the format:\n", 213 | "\n", 214 | "| antiref100 | antiref99 | antiref98 | antiref96 | antiref04 | antiref92 | antiref90 |\n", 215 | "| --- | --- | --- | --- | --- | --- | --- |\n", 216 | "| id_01 | id_01 | id_01 | id_01 | id_01 | id_01 | id_03 |\n", 217 | "| id_02 | id_01 | id_01 | id_01 | id_01 | id_01 | id_03 |\n", 218 | "| id_03 | id_03 | id_03 | id_03 | id_03 | id_03 | id_03 |\n", 219 | "| id_04 | id_04 | id_04 | id_04 | id_04 | id_04 | id_04 |\n", 220 | "| id_05 | id_05 | id_05 | id_05 | id_05 | id_05 | id_05 |\n", 221 | "\n", 222 | "To interpret the cluster manifest, it's important to remember that we perform nested clustering, and that cluster names are taken from the representative sequence in the cluster (as determined by `mmseqs`). Walking through this mock data, we observe several things:\n", 223 | "\n", 224 | "1. The sequences `id_01` and `id_02` are at least 99% similar but not identical, as they are separate in AntiRef100 but merge in AntiRef99\n", 225 | "2. `id_01` becomes the representative sequence in the AntiRef99 cluster containing `id_01` and `id_02` \n", 226 | "3. The sequence `id_03` is 90-92% similar to `id_01` and `id_02` and becomes the representative of the resulting AntiRef90 cluster\n", 227 | "4. The sequences `id_04` and `id_05` are less than 90% similar to each other and to `id_01`, `id_02`, and `id_03`.\n", 228 | "\n", 229 | "The manifest can also be used to infer the relative diversity of any AntiRef cluster. If we filter AntiRef90 cluster `id_03`, we can quickly determine that two of the three sequences are nearly identical. Extrapolating this, an AntiRef90 cluster containing 100 sequences of which 99 clustered together in AntiRef99 is much less diverse than the same size AntiRef90 cluster for which none of the sequences clustered together in of the higher identity AntiRef clusters.\n", 230 | "\n", 231 | "To create the cluster manifest, we first need to iterate through all of the AntiRef datasets and parse the cluster assignments. The result is a single nested dictionary with results for all AntiRef datasets:" 232 | ] 233 | }, 234 | { 235 | "cell_type": "code", 236 | "execution_count": null, 237 | "id": "8a002d12", 238 | "metadata": {}, 239 | "outputs": [], 240 | "source": [ 241 | "cluster_dicts = {}\n", 242 | "pbar = tqdm(thresholds)\n", 243 | "\n", 244 | "for threshold in pbar:\n", 245 | " d = {}\n", 246 | " pbar.set_description(f\"AntiRef{threshold}\")\n", 247 | " with open(f\"./data/antiref/tsv/antiref{threshold}.tsv\") as f:\n", 248 | " for line in f:\n", 249 | " if l := line.strip().split():\n", 250 | " d[l[1]] = l[0]\n", 251 | " cluster_dicts[threshold] = d" 252 | ] 253 | }, 254 | { 255 | "attachments": {}, 256 | "cell_type": "markdown", 257 | "id": "f438da13", 258 | "metadata": {}, 259 | "source": [ 260 | "We can then and write the results as a CSV-formatted file:" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": null, 266 | "id": "06a080c0", 267 | "metadata": {}, 268 | "outputs": [], 269 | "source": [ 270 | "manifest_csv = './data/antiref/antiref_cluster-manifest.csv'\n", 271 | "if not os.path.isdir(os.path.dirname(manifest_csv)):\n", 272 | " abutils.io.make_dir(os.path.dirname(manifest_csv))\n", 273 | "\n", 274 | "with open(manifest_csv, 'w') as f:\n", 275 | " header = [f'antiref{c}' for c in thresholds]\n", 276 | " f.write(','.join(header) + '\\n')\n", 277 | " all_names = list(cluster_dicts[99].keys())\n", 278 | " for c100 in tqdm(all_names):\n", 279 | " c99 = cluster_dicts[99][c100]\n", 280 | " c98 = cluster_dicts[98][c99]\n", 281 | " c96 = cluster_dicts[96][c98]\n", 282 | " c94 = cluster_dicts[94][c96]\n", 283 | " c92 = cluster_dicts[92][c94]\n", 284 | " c90 = cluster_dicts[90][c92]\n", 285 | " f.write(','.join([c100, c99, c98, c96, c94, c92, c90]) + '\\n')" 286 | ] 287 | }, 288 | { 289 | "attachments": {}, 290 | "cell_type": "markdown", 291 | "id": "787b565a", 292 | "metadata": {}, 293 | "source": [ 294 | "### clustering efficiency\n", 295 | "\n", 296 | "Finally, we'll quantify dataset compression for each AntiRef dataset. The result is a CSV-formatted file of the format:\n", 297 | "\n", 298 | "| clustering_identity | clusters | efficiency |\n", 299 | "| --- | --- | --- |\n", 300 | "| 100 | 100,000,000 | 1.00 |\n", 301 | "| 99 | 90,000,000 | 0.90 |\n", 302 | "| 98 | 88,000,000 | 0.88 |\n", 303 | "\n", 304 | "The efficiency is computed relative to AntiRef100, which contains all of the unique sequences from the filtered input data." 305 | ] 306 | }, 307 | { 308 | "cell_type": "code", 309 | "execution_count": null, 310 | "id": "80d44763", 311 | "metadata": {}, 312 | "outputs": [], 313 | "source": [ 314 | "eff_path = './data/antiref/clustering_efficiencies.csv'\n", 315 | "if not os.path.isdir(os.path.dirname(eff_path)):\n", 316 | " abutils.io.make_dir(os.path.dirname(eff_path))\n", 317 | "\n", 318 | "eff_data = []\n", 319 | "antiref100_count = None\n", 320 | "\n", 321 | "pbar = tqdm(thresholds)\n", 322 | "for threshold in pbar:\n", 323 | " pbar.set_description(f\"AntiRef{threshold}\")\n", 324 | " size_path = os.path.abspath(f\"./data/antiref/tsv/antiref{threshold}_cluster-sizes.csv\")\n", 325 | "\n", 326 | " # find the dataset size by counting the number lines in the cluster_sizes CSV file\n", 327 | " wc = f\"wc -l {size_path}\"\n", 328 | " p = sp.Popen(wc, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 329 | " stdout, _ = p.communicate()\n", 330 | " count = int(stdout.decode('utf-8').split()[0])\n", 331 | "\n", 332 | " # set AntiRef100 count for dataset size normalization\n", 333 | " if threshold == 100:\n", 334 | " antiref100_count = count\n", 335 | " \n", 336 | " eff_data.append({'clustering_identity': threshold,\n", 337 | " 'clusters': count,\n", 338 | " 'efficiency': count / antiref100_count})\n", 339 | "\n", 340 | "# save efficiency data\n", 341 | "eff_df = pd.DataFrame(eff_data)\n", 342 | "eff_df.to_csv(eff_path, index=False)" 343 | ] 344 | }, 345 | { 346 | "cell_type": "code", 347 | "execution_count": null, 348 | "id": "574cec97", 349 | "metadata": {}, 350 | "outputs": [], 351 | "source": [] 352 | } 353 | ], 354 | "metadata": { 355 | "kernelspec": { 356 | "display_name": "Python 3", 357 | "language": "python", 358 | "name": "python3" 359 | }, 360 | "language_info": { 361 | "codemirror_mode": { 362 | "name": "ipython", 363 | "version": 3 364 | }, 365 | "file_extension": ".py", 366 | "mimetype": "text/x-python", 367 | "name": "python", 368 | "nbconvert_exporter": "python", 369 | "pygments_lexer": "ipython3", 370 | "version": "3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]" 371 | }, 372 | "vscode": { 373 | "interpreter": { 374 | "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" 375 | } 376 | } 377 | }, 378 | "nbformat": 4, 379 | "nbformat_minor": 5 380 | } 381 | -------------------------------------------------------------------------------- /download.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "attachments": {}, 5 | "cell_type": "markdown", 6 | "id": "56f5595f-c01b-48b3-94de-fbebae941993", 7 | "metadata": {}, 8 | "source": [ 9 | "# AntiRef: data download\n", 10 | "\n", 11 | "The download scripts used in the current version of AntiRef (`v2022.12.14`) were retrieved from the [Observed Antibody Space](http://opig.stats.ox.ac.uk/webapps/oas/) on 12/14/22 and can be found in the `scripts/` directory. The scripts contain a single `wget` command per line, which downloads a single dataset from OAS.\n", 12 | "\n", 13 | "\n", 14 | "### download scripts\n", 15 | "dataset filtering criteria (used to build the download script):\n", 16 | "\n", 17 | "| field | value |\n", 18 | "| --- | --- |\n", 19 | "| Chain | `'Heavy'` or `'Light'` |\n", 20 | "| Disease | `'None'` |\n", 21 | "| BSource | `'PBMC'` |\n", 22 | "| Species | `'Human'` |\n", 23 | "| Vaccine | `'None'` |\n", 24 | "\n", 25 | "\n", 26 | "All other fields were left as default (`'*'`), which performs no additional filtering\n", 27 | "\n", 28 | "__NOTE:__ *the `'PBMC'` filter excludes all of the sequences in the [Briney et al., 2019](https://www.nature.com/articles/s41586-019-0879-y) paper, which have a bsource of `'LeukoPak'` in the OAS database (and is the only set of samples with that particular bsource). That's not a problem for this data download, however, since we're going to filter only full-length VDJ regions. The Briney et al., 2019 paper used BIOMED-2 primers, so all of those sequences are FR1 truncated and would have been excluded post-download.*\n", 29 | "\n", 30 | "### results\n", 31 | "\n", 32 | "The `'Heavy'` chain search yielded:\n", 33 | "* **631,028,215** sequences (unique within the individual dataset)\n", 34 | "* datasets from **31** different studies \n", 35 | "* a total of **2,931** datasets \n", 36 | "\n", 37 | "The `'Light'` chain search yielded:\n", 38 | "* **272,491,529** sequences (unique within the individual dataset)\n", 39 | "* datasets from **13** different studies \n", 40 | "* a total of **437** datasets" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": null, 46 | "id": "d2d8c450", 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "# install dependencies\n", 51 | "%pip install tqdm abutils" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": null, 57 | "id": "8007806d", 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "import os\n", 62 | "import sys\n", 63 | "import subprocess as sp \n", 64 | "from typing import Optional\n", 65 | "\n", 66 | "from tqdm.notebook import tqdm\n", 67 | "\n", 68 | "import abutils" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 35, 74 | "id": "fe875dd9-d3be-430f-bfcb-8571a4214a4c", 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [ 78 | "def oas_downloader(\n", 79 | " oas_sh_file: str, \n", 80 | " raw_download_dir: str, \n", 81 | " decompressed_dir: Optional[str] = None, \n", 82 | " decompress: Optional[bool] = True\n", 83 | "):\n", 84 | " '''\n", 85 | " Downloads annotated antibody sequence data from the `Observed Antibody Space`_ repository.\n", 86 | " \n", 87 | " Parameters\n", 88 | " ----------\n", 89 | " oas_sh_file : str\n", 90 | " Path to a OAS-generated data download script. Must be a text file with a single \n", 91 | " ``wget`` command per line.\n", 92 | " \n", 93 | " raw_download_dir : str\n", 94 | " Path to a directory into which compressed (`'.gz'`) data files will be \n", 95 | " downloaded. If the directory does not exist, it will be created.\n", 96 | " \n", 97 | " decompressed_dir : str, default=None\n", 98 | " Path to a directory into which data files will be decompressed. If `decompress` is\n", 99 | " ``True`` and `decompressed_dir` is not provided, files will be downloaded into \n", 100 | " a subdirectory of `raw_download_dir`. Default is ``None``.\n", 101 | " \n", 102 | " decompress : bool, default=True\n", 103 | " If ``True``, CSV files will be decompressed after downloading. Default is ``True``.\n", 104 | " \n", 105 | " .. _Observed Antibody Space:\n", 106 | " http://opig.stats.ox.ac.uk/webapps/oas/\n", 107 | " '''\n", 108 | " # directory setup\n", 109 | " raw_download_dir = os.path.abspath(raw_download_dir)\n", 110 | " if not os.path.isdir(raw_download_dir):\n", 111 | " abutils.io.make_dir(raw_download_dir)\n", 112 | " if decompress:\n", 113 | " if decompressed_dir is None:\n", 114 | " decompressed_dir = os.path.join(raw_download_dir, 'decompressed')\n", 115 | " decompressed_dir = os.path.abspath(decompressed_dir)\n", 116 | " if not os.path.isdir(decompressed_dir):\n", 117 | " abutils.io.make_dir(decompressed_dir)\n", 118 | " # do the download\n", 119 | " with open(oas_sh_file) as oas_file:\n", 120 | " lines = [l for line in oas_file.readlines() if (l := line.strip())]\n", 121 | " pbar = tqdm(lines)\n", 122 | " for line in pbar:\n", 123 | " if sline := line.strip():\n", 124 | " _, url = sline.split()\n", 125 | " compressed_fname = os.path.basename(url)\n", 126 | " compressed_file = os.path.join(raw_download_dir, compressed_fname)\n", 127 | " pbar.set_description(f\"{compressed_fname} - downloading\")\n", 128 | " wget_cmd = f\"wget -O {compressed_file} {url}\"\n", 129 | " p = sp.Popen(wget_cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 130 | " stdout, stderr = p.communicate()\n", 131 | " # decompress if desired\n", 132 | " if decompress:\n", 133 | " pbar.set_description(f\"{compressed_fname} - decompressing\")\n", 134 | " decompressed_fname = compressed_fname.rstrip('.gz')\n", 135 | " decompressed_file = os.path.join(decompressed_dir, decompressed_fname)\n", 136 | " gunzip_cmd = f\"gunzip -kc {compressed_file} > {decompressed_file}\"\n", 137 | " p = sp.Popen(gunzip_cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 138 | " stdout, stderr = p.communicate()" 139 | ] 140 | }, 141 | { 142 | "attachments": {}, 143 | "cell_type": "markdown", 144 | "id": "75fe11b3-18cf-4a60-852c-aa8b283349fb", 145 | "metadata": {}, 146 | "source": [ 147 | "### heavy chains\n", 148 | "\n", 149 | "The download process takes quite a while (at least a few hours, potentially much longer depending on your internet connection) and produces a large amount of data: \n", 150 | "\n", 151 | "* compressed: **296GB**\n", 152 | "* decompressed: **2.7TB**\n", 153 | "\n", 154 | "Make sure the current directory has sufficient storage, or modify the `raw_download_dir` and `decompressed_dir` arguments to point to a location with sufficient storage." 155 | ] 156 | }, 157 | { 158 | "cell_type": "code", 159 | "execution_count": 39, 160 | "id": "da18b385-c0d7-4bff-bd7a-8a0bf6a5c2aa", 161 | "metadata": {}, 162 | "outputs": [], 163 | "source": [ 164 | "oas_downloader(\n", 165 | " oas_sh_file='./download_heavy.txt', \n", 166 | " raw_download_dir='./data/raw/gz/heavy', \n", 167 | " decompressed_dir='./data/raw/csv/heavy', \n", 168 | " decompress=True,\n", 169 | " )" 170 | ] 171 | }, 172 | { 173 | "attachments": {}, 174 | "cell_type": "markdown", 175 | "id": "42451746-0d8a-4f5c-9709-b913fa842f6c", 176 | "metadata": {}, 177 | "source": [ 178 | "### light chains\n", 179 | "\n", 180 | "The download process takes quite a while and produces a large amount of data: \n", 181 | "\n", 182 | "* compressed: **96GB**\n", 183 | "* decompressed: **1.1TB**\n", 184 | "\n", 185 | "Make sure the current directory has sufficient storage, or modify the `raw_download_dir` and `decompressed_dir` arguments to point to a location with sufficient storage." 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": null, 191 | "id": "af2ad292-7c15-4614-a151-f01adf379755", 192 | "metadata": {}, 193 | "outputs": [], 194 | "source": [ 195 | "oas_downloader(\n", 196 | " oas_sh_file='./download_light.txt', \n", 197 | " raw_download_dir='./data/raw/gz/light', \n", 198 | " decompressed_dir='./data/raw/csv/light', \n", 199 | " decompress=True,\n", 200 | " )" 201 | ] 202 | }, 203 | { 204 | "cell_type": "code", 205 | "execution_count": null, 206 | "id": "d9a75a5a", 207 | "metadata": {}, 208 | "outputs": [], 209 | "source": [] 210 | } 211 | ], 212 | "metadata": { 213 | "kernelspec": { 214 | "display_name": "Python 3", 215 | "language": "python", 216 | "name": "python3" 217 | }, 218 | "language_info": { 219 | "codemirror_mode": { 220 | "name": "ipython", 221 | "version": 3 222 | }, 223 | "file_extension": ".py", 224 | "mimetype": "text/x-python", 225 | "name": "python", 226 | "nbconvert_exporter": "python", 227 | "pygments_lexer": "ipython3", 228 | "version": "3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]" 229 | }, 230 | "vscode": { 231 | "interpreter": { 232 | "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" 233 | } 234 | } 235 | }, 236 | "nbformat": 4, 237 | "nbformat_minor": 5 238 | } 239 | -------------------------------------------------------------------------------- /filter.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "attachments": {}, 5 | "cell_type": "markdown", 6 | "id": "a2a820fa-3310-468c-b7d0-839141a7879a", 7 | "metadata": {}, 8 | "source": [ 9 | "# AntiRef: sequence filtering\n", 10 | "\n", 11 | "Sequences from the [Observed Antibody Space](http://opig.stats.ox.ac.uk/webapps/oas/) repository are filtered to retain only sequences that are:\n", 12 | "\n", 13 | "| criteria | filter |\n", 14 | "| :- | :- |\n", 15 | "| productive | `'productive' == 'T'` |\n", 16 | "| full length | `'complete_vdj' == 'T'` |\n", 17 | "| no frameshift V-gene indels | `'v_frameshift' == 'F'` |\n", 18 | "| in-frame | `'vj_in_frame' == 'T'` | \n", 19 | "| no stop codons | `'stop_codon' == 'F'` |\n", 20 | "| no ambiguous amino acids | `'X' not in 'sequence_aa'` |\n", 21 | "| not missing a conserved Cysteine | `'Missing Conserved Cysteine' not in 'ANARCI_status'` |\n", 22 | "\n", 23 | "\n", 24 | "Also during the filtering process, a random ID is created for each sequence (stored in the `'sequence_id'` field) and the full AA sequence is added to the annotation (stored in the `'sequence_aa'` field). \n", 25 | "\n", 26 | "Filtered data is saved in both CSV (containing all annotations) and FASTA formats. Optionally, but occuring by default using the code below, a CSV file containing metadata for each processed file will created. This metadata file contains all metadata included in the downloaded OAS file as well as information on the number of sequences passing our filtering process. \n", 27 | "\n", 28 | "Filtering retains a total of:\n", 29 | "\n", 30 | "* **260,373,862** heavy chains\n", 31 | "* **190,684,852** light chains\n", 32 | "* **451,058,704** total antibody sequences\n", 33 | "\n" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": null, 39 | "id": "11d51556", 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "# install dependencies\n", 44 | "%pip install pandas tqdm biopython abutils" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": null, 50 | "id": "5b6b037f", 51 | "metadata": {}, 52 | "outputs": [], 53 | "source": [ 54 | "import warnings\n", 55 | "warnings.simplefilter('ignore')\n", 56 | "\n", 57 | "from collections import Counter\n", 58 | "import json\n", 59 | "import os\n", 60 | "import subprocess as sp\n", 61 | "from typing import Optional\n", 62 | "import uuid\n", 63 | "\n", 64 | "import pandas as pd\n", 65 | "\n", 66 | "from tqdm.notebook import tqdm\n", 67 | "\n", 68 | "from Bio import SeqIO\n", 69 | "\n", 70 | "import abutils" 71 | ] 72 | }, 73 | { 74 | "cell_type": "code", 75 | "execution_count": 3, 76 | "id": "68a90cd5-6388-4f6b-ad39-c10d093085bf", 77 | "metadata": {}, 78 | "outputs": [], 79 | "source": [ 80 | "def oas_filter(\n", 81 | " input_dir: str, \n", 82 | " csv_dir: str, \n", 83 | " fasta_dir: str, \n", 84 | " limit: Optional[int] = None,\n", 85 | " skip: int = 0,\n", 86 | " metadata_file: Optional[str] = None\n", 87 | ") -> pd.DataFrame:\n", 88 | " '''\n", 89 | " Filters sequence data downloaded from the `Observed Antibody Space`_ \n", 90 | " repository to retain only full-length, productive sequences.\n", 91 | " \n", 92 | " Parameters\n", 93 | " ----------\n", 94 | " input_dir : str\n", 95 | " Path to a directory containing one or more CSV-formatted input files. Files must either\n", 96 | " be downloaded from OAS or use the same schema.\n", 97 | " \n", 98 | " [csv|fasta]_dir : str\n", 99 | " Path to a directory into which filtered CSV or FASTA files will be written. If the directory\n", 100 | " does not exist, it will be created.\n", 101 | " \n", 102 | " limit : int, default=``None``\n", 103 | " Limit the number of files to be processed. Must be an integer or coercable to an integer.\n", 104 | " Default is `None`, which does not limit the number of files processed.\n", 105 | " \n", 106 | " skip : int, default=0\n", 107 | " Skips the first `skip` files in `input_dir`. Must be an integer or coercable to an integer.\n", 108 | " Files are processed in alphabetical order. Default is `0`, which does not skip any lines.\n", 109 | " \n", 110 | " metadata_file : str, default=``None``\n", 111 | " Path to a file into which the metadata (in CSV format) will be written. If not provided,\n", 112 | " metadata is not written. In both cases, metadata is also returned as a ``DataFrame``.\n", 113 | " \n", 114 | " Returns\n", 115 | " -------\n", 116 | " metadata : ``pd.DataFrame``\n", 117 | " A ``DataFrame`` containing the metadata from all processed files. Metadata is parsed\n", 118 | " from the first line of the OAS CSV file.\n", 119 | " \n", 120 | " \n", 121 | " .. _Observed Antibody Space:\n", 122 | " http://opig.stats.ox.ac.uk/webapps/oas/\n", 123 | " '''\n", 124 | " # configure input/output directories\n", 125 | " csv_dir = os.path.abspath(csv_dir)\n", 126 | " fasta_dir = os.path.abspath(fasta_dir)\n", 127 | " if not os.path.isdir(csv_dir):\n", 128 | " abutils.io.make_dir(csv_dir)\n", 129 | " if not os.path.isdir(fasta_dir):\n", 130 | " abutils.io.make_dir(fasta_dir)\n", 131 | " input_dir = os.path.abspath(input_dir)\n", 132 | " input_files = abutils.io.list_files(input_dir, extension='csv')\n", 133 | " if limit is not None:\n", 134 | " limit = int(limit)\n", 135 | " skip = int(skip)\n", 136 | " input_files = input_files[skip:skip + limit]\n", 137 | " \n", 138 | " metadata = []\n", 139 | " aa_cols = ['fwr1_aa', 'cdr1_aa', 'fwr2_aa', 'cdr2_aa', 'fwr3_aa', 'cdr3_aa', 'fwr4_aa']\n", 140 | " leading_cols = ['sequence_id', 'sequence', 'sequence_aa']\n", 141 | " \n", 142 | " pbar = tqdm(input_files)\n", 143 | " for ifile in pbar:\n", 144 | " fname = '.'.join(os.path.basename(ifile).split('.')[:-1])\n", 145 | " pbar.set_description(f\"{fname} - reading CSV\")\n", 146 | " with open(ifile, 'r') as f:\n", 147 | " # read metadata from the first line, rest of the file is CSV data\n", 148 | " meta = json.loads(next(f).strip().replace('\"\"', '\"')[1:-1])\n", 149 | " df = pd.read_csv(f)\n", 150 | " pbar.set_description(f\"{fname} - filtering\")\n", 151 | " # add sequence_id and sequence_aa fields\n", 152 | " df['sequence_id'] = [uuid.uuid4() for _ in range(df.shape[0])]\n", 153 | " df['sequence_aa'] = df[aa_cols].apply(lambda row: ''.join(row.values.astype(str)), \n", 154 | " axis=1)\n", 155 | " # filter the data for productive, full-length sequences \n", 156 | " filtered = df[(df['complete_vdj'] == 'T') \n", 157 | " & (df['stop_codon'] == 'F')\n", 158 | " & (df['vj_in_frame'] == 'T')\n", 159 | " & (df['v_frameshift'] == 'F')\n", 160 | " & (df['productive'] == 'T')\n", 161 | " & ~(df['sequence_aa'].str.contains('X')\n", 162 | " & ~(df['ANARCI_status'].str.contains('Missing Conserved Cysteine')))\n", 163 | " ]\n", 164 | " meta['Filtered sequences'] = filtered.shape[0]\n", 165 | " if filtered.shape[0] > 0:\n", 166 | " meta['Unique filtered sequences'] = len(filtered['sequence_aa'].unique())\n", 167 | " # write filtered CSV \n", 168 | " trailing_cols = [c for c in filtered.columns.values if c not in leading_cols]\n", 169 | " filtered = filtered[leading_cols + trailing_cols]\n", 170 | " filtered.to_csv(os.path.join(csv_dir, fname + '.csv'), index=False)\n", 171 | " # write filtered FASTA\n", 172 | " ids = filtered['sequence_id']\n", 173 | " seqs = filtered['sequence_aa']\n", 174 | " fastas = [f\">{i}\\n{s}\" for i, s in zip(ids, seqs)]\n", 175 | " with open(os.path.join(fasta_dir, fname + '.fasta'), 'w') as f:\n", 176 | " f.write('\\n'.join(fastas))\n", 177 | " else:\n", 178 | " meta['Unique filtered sequences'] = 0\n", 179 | " metadata.append(meta)\n", 180 | " meta_df = pd.DataFrame(metadata)\n", 181 | " if metadata_file is not None:\n", 182 | " meta_df.to_csv(metadata_file)\n", 183 | " return meta_df\n" 184 | ] 185 | }, 186 | { 187 | "attachments": {}, 188 | "cell_type": "markdown", 189 | "id": "73f9d0a6-ac4e-4aa0-b106-775c58b9b5dd", 190 | "metadata": {}, 191 | "source": [ 192 | "### heavy chains\n", 193 | "\n", 194 | "First, we filter all of the downloaded heavy chain sequences:" 195 | ] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "execution_count": 10, 200 | "id": "f48692a6-0321-4146-b574-8e2c2d910669", 201 | "metadata": {}, 202 | "outputs": [], 203 | "source": [ 204 | "heavy_metadata = oas_filter(\n", 205 | " input_dir='./data/raw/csv/heavy/', \n", 206 | " csv_dir='./data/filtered/csv/heavy/',\n", 207 | " fasta_dir='./data/filtered/fasta/heavy/'\n", 208 | " metadata_file='./data/filtered/metadata_heavy.csv'\n", 209 | " )" 210 | ] 211 | }, 212 | { 213 | "attachments": {}, 214 | "cell_type": "markdown", 215 | "id": "debd2d10", 216 | "metadata": {}, 217 | "source": [ 218 | "And create a single FASTA file containing all filtered heavy chain sequences:" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": null, 224 | "id": "c4d9a154", 225 | "metadata": {}, 226 | "outputs": [], 227 | "source": [ 228 | "pooled_heavy_file = './data/filtered/fasta/heavy.fasta'\n", 229 | "\n", 230 | "pool_cmd = f\"cat ./data/filtered/fasta/heavy/*.fasta > {pooled_heavy_file}\"\n", 231 | "p = sp.Popen(pool_cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 232 | "stdout, stderr = p.communicate()" 233 | ] 234 | }, 235 | { 236 | "attachments": {}, 237 | "cell_type": "markdown", 238 | "id": "0465a7b0-e432-4a68-95d3-0a02d6ecec67", 239 | "metadata": {}, 240 | "source": [ 241 | "### light chains\n", 242 | "\n", 243 | "Next, we filter all of the light chain sequences:" 244 | ] 245 | }, 246 | { 247 | "cell_type": "code", 248 | "execution_count": null, 249 | "id": "5a99ec2f-e9e8-4c61-a2b0-5d4dec05c0fc", 250 | "metadata": {}, 251 | "outputs": [], 252 | "source": [ 253 | "light_metadata = oas_filter(\n", 254 | " input_dir='./data/raw/csv/light/', \n", 255 | " csv_dir='./data/filtered/csv/light/',\n", 256 | " fasta_dir='./data/filtered/fasta/light/'\n", 257 | " metadata_file='./data/filtered/metadata_light.csv'\n", 258 | " )" 259 | ] 260 | }, 261 | { 262 | "attachments": {}, 263 | "cell_type": "markdown", 264 | "id": "51c95457-f723-4d48-9bda-3b465fc73c39", 265 | "metadata": {}, 266 | "source": [ 267 | "And create a single FASTA file containing all filtered light chain sequences:" 268 | ] 269 | }, 270 | { 271 | "cell_type": "code", 272 | "execution_count": null, 273 | "id": "a6e01027-542b-46f5-93a5-4d32ff351677", 274 | "metadata": {}, 275 | "outputs": [], 276 | "source": [ 277 | "pooled_light_file = './data/filtered/fasta/light.fasta'\n", 278 | "\n", 279 | "pool_cmd = f\"cat ./data/filtered/fasta/light/*.fasta > {pooled_light_file}\"\n", 280 | "p = sp.Popen(pool_cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 281 | "stdout, stderr = p.communicate()" 282 | ] 283 | }, 284 | { 285 | "attachments": {}, 286 | "cell_type": "markdown", 287 | "id": "ee4ebcdb-1c3b-4fa4-91a3-a3fb9a529b64", 288 | "metadata": {}, 289 | "source": [ 290 | "### combine all sequences into a single FASTA file" 291 | ] 292 | }, 293 | { 294 | "cell_type": "code", 295 | "execution_count": null, 296 | "id": "5a47deac", 297 | "metadata": {}, 298 | "outputs": [], 299 | "source": [ 300 | "pooled_fasta_file = './data/filtered/fasta/all.fasta'\n", 301 | "\n", 302 | "pool_cmd = f\"cat ./data/filtered/fasta/heavy.fasta ./data/filtered/fasta/light.fasta > {pooled_fasta_file}\"\n", 303 | "p = sp.Popen(pool_cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE)\n", 304 | "stdout, stderr = p.communicate()" 305 | ] 306 | }, 307 | { 308 | "cell_type": "code", 309 | "execution_count": null, 310 | "id": "8253cce7", 311 | "metadata": {}, 312 | "outputs": [], 313 | "source": [] 314 | } 315 | ], 316 | "metadata": { 317 | "kernelspec": { 318 | "display_name": "Python 3", 319 | "language": "python", 320 | "name": "python3" 321 | }, 322 | "language_info": { 323 | "codemirror_mode": { 324 | "name": "ipython", 325 | "version": 3 326 | }, 327 | "file_extension": ".py", 328 | "mimetype": "text/x-python", 329 | "name": "python", 330 | "nbconvert_exporter": "python", 331 | "pygments_lexer": "ipython3", 332 | "version": "3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]" 333 | }, 334 | "vscode": { 335 | "interpreter": { 336 | "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" 337 | } 338 | } 339 | }, 340 | "nbformat": 4, 341 | "nbformat_minor": 5 342 | } 343 | -------------------------------------------------------------------------------- /img/antiref_iterative-clustering.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brineylab/antiref/aa4776056808cf8b628089b62cd1e350dae546e3/img/antiref_iterative-clustering.jpg -------------------------------------------------------------------------------- /scripts/download_light.txt: -------------------------------------------------------------------------------- 1 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Johnson_2018/csv/SRR6266467_Light_Bulk.csv.gz 2 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Johnson_2018/csv/SRR6266468_Light_Bulk.csv.gz 3 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Johnson_2018/csv/SRR6266472_Light_Bulk.csv.gz 4 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Johnson_2018/csv/SRR6266471_Light_Bulk.csv.gz 5 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6206378_1_Light_Bulk.csv.gz 6 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6207017_1_Light_Bulk.csv.gz 7 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6206374_1_Light_Bulk.csv.gz 8 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6207003_1_Light_Bulk.csv.gz 9 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6207018_1_Light_Bulk.csv.gz 10 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6206377_1_Light_Bulk.csv.gz 11 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6206385_1_Light_Bulk.csv.gz 12 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6206371_1_Light_Bulk.csv.gz 13 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6206382_1_Light_Bulk.csv.gz 14 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6207002_1_Light_Bulk.csv.gz 15 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6207015_1_Light_Bulk.csv.gz 16 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Setliff_2018/csv/SRR6207013_1_Light_Bulk.csv.gz 17 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_1/csv/ERR3004230_1_Light_Bulk.csv.gz 18 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_1/csv/ERR3004229_1_Light_Bulk.csv.gz 19 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_1/csv/ERR3004232_1_Light_Bulk.csv.gz 20 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_1/csv/ERR3004231_1_Light_Bulk.csv.gz 21 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365319_1_Light_Bulk.csv.gz 22 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365275_1_Light_Bulk.csv.gz 23 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365419_1_Light_Bulk.csv.gz 24 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365444_1_Light_Bulk.csv.gz 25 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365253_1_Light_Bulk.csv.gz 26 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365420_3_Light_Bulk.csv.gz 27 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365420_1_Light_Bulk.csv.gz 28 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365339_1_Light_Bulk.csv.gz 29 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365432_2_Light_Bulk.csv.gz 30 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365362_1_Light_Bulk.csv.gz 31 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365360_1_Light_Bulk.csv.gz 32 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365361_1_Light_Bulk.csv.gz 33 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365323_1_Light_Bulk.csv.gz 34 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365307_1_Light_Bulk.csv.gz 35 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365289_1_Light_Bulk.csv.gz 36 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365313_1_Light_Bulk.csv.gz 37 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365263_1_Light_Bulk.csv.gz 38 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365357_1_Light_Bulk.csv.gz 39 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365348_1_Light_Bulk.csv.gz 40 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365297_1_Light_Bulk.csv.gz 41 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365485_1_Light_Bulk.csv.gz 42 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8489723_1_Light_Bulk.csv.gz 43 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365263_3_Light_Bulk.csv.gz 44 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365363_1_Light_Bulk.csv.gz 45 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365314_2_Light_Bulk.csv.gz 46 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365380_1_Light_Bulk.csv.gz 47 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365464_2_Light_Bulk.csv.gz 48 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365456_1_Light_Bulk.csv.gz 49 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365272_1_Light_Bulk.csv.gz 50 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365375_1_Light_Bulk.csv.gz 51 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365455_2_Light_Bulk.csv.gz 52 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365263_4_Light_Bulk.csv.gz 53 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365265_1_Light_Bulk.csv.gz 54 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365466_1_Light_Bulk.csv.gz 55 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365303_1_Light_Bulk.csv.gz 56 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365478_1_Light_Bulk.csv.gz 57 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365457_1_Light_Bulk.csv.gz 58 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365306_1_Light_Bulk.csv.gz 59 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365469_3_Light_Bulk.csv.gz 60 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365352_1_Light_Bulk.csv.gz 61 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365295_2_Light_Bulk.csv.gz 62 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365417_1_Light_Bulk.csv.gz 63 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365352_2_Light_Bulk.csv.gz 64 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365467_4_Light_Bulk.csv.gz 65 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365329_1_Light_Bulk.csv.gz 66 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365260_1_Light_Bulk.csv.gz 67 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365248_1_Light_Bulk.csv.gz 68 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365313_2_Light_Bulk.csv.gz 69 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365251_1_Light_Bulk.csv.gz 70 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365427_2_Light_Bulk.csv.gz 71 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365365_1_Light_Bulk.csv.gz 72 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365332_1_Light_Bulk.csv.gz 73 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365285_1_Light_Bulk.csv.gz 74 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365383_2_Light_Bulk.csv.gz 75 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365340_1_Light_Bulk.csv.gz 76 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365337_1_Light_Bulk.csv.gz 77 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365381_1_Light_Bulk.csv.gz 78 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365315_1_Light_Bulk.csv.gz 79 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365481_2_Light_Bulk.csv.gz 80 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365252_1_Light_Bulk.csv.gz 81 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365473_1_Light_Bulk.csv.gz 82 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365309_1_Light_Bulk.csv.gz 83 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365335_2_Light_Bulk.csv.gz 84 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365467_2_Light_Bulk.csv.gz 85 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365478_2_Light_Bulk.csv.gz 86 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365269_2_Light_Bulk.csv.gz 87 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365372_1_Light_Bulk.csv.gz 88 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365418_3_Light_Bulk.csv.gz 89 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365458_1_Light_Bulk.csv.gz 90 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365479_2_Light_Bulk.csv.gz 91 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365474_1_Light_Bulk.csv.gz 92 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365258_1_Light_Bulk.csv.gz 93 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365481_1_Light_Bulk.csv.gz 94 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365484_4_Light_Bulk.csv.gz 95 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365486_1_Light_Bulk.csv.gz 96 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365327_1_Light_Bulk.csv.gz 97 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365428_1_Light_Bulk.csv.gz 98 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365485_2_Light_Bulk.csv.gz 99 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365449_2_Light_Bulk.csv.gz 100 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365426_1_Light_Bulk.csv.gz 101 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365259_3_Light_Bulk.csv.gz 102 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365259_1_Light_Bulk.csv.gz 103 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365476_1_Light_Bulk.csv.gz 104 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365425_1_Light_Bulk.csv.gz 105 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365450_1_Light_Bulk.csv.gz 106 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365465_2_Light_Bulk.csv.gz 107 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365391_2_Light_Bulk.csv.gz 108 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365294_1_Light_Bulk.csv.gz 109 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365441_1_Light_Bulk.csv.gz 110 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365380_2_Light_Bulk.csv.gz 111 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365351_1_Light_Bulk.csv.gz 112 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365423_1_Light_Bulk.csv.gz 113 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365383_1_Light_Bulk.csv.gz 114 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365346_1_Light_Bulk.csv.gz 115 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365342_1_Light_Bulk.csv.gz 116 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365328_1_Light_Bulk.csv.gz 117 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365482_1_Light_Bulk.csv.gz 118 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365394_1_Light_Bulk.csv.gz 119 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365345_3_Light_Bulk.csv.gz 120 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365257_1_Light_Bulk.csv.gz 121 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365285_2_Light_Bulk.csv.gz 122 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365274_1_Light_Bulk.csv.gz 123 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365483_2_Light_Bulk.csv.gz 124 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365472_1_Light_Bulk.csv.gz 125 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365366_1_Light_Bulk.csv.gz 126 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365266_1_Light_Bulk.csv.gz 127 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365261_2_Light_Bulk.csv.gz 128 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365447_2_Light_Bulk.csv.gz 129 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365467_3_Light_Bulk.csv.gz 130 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365338_1_Light_Bulk.csv.gz 131 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365247_1_Light_Bulk.csv.gz 132 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365350_1_Light_Bulk.csv.gz 133 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365391_1_Light_Bulk.csv.gz 134 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365268_1_Light_Bulk.csv.gz 135 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365426_2_Light_Bulk.csv.gz 136 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365280_1_Light_Bulk.csv.gz 137 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365292_1_Light_Bulk.csv.gz 138 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365278_1_Light_Bulk.csv.gz 139 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365449_3_Light_Bulk.csv.gz 140 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365420_2_Light_Bulk.csv.gz 141 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365314_1_Light_Bulk.csv.gz 142 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365424_3_Light_Bulk.csv.gz 143 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365390_1_Light_Bulk.csv.gz 144 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365369_1_Light_Bulk.csv.gz 145 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365341_1_Light_Bulk.csv.gz 146 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365488_1_Light_Bulk.csv.gz 147 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8489724_1_Light_Bulk.csv.gz 148 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365288_1_Light_Bulk.csv.gz 149 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365379_1_Light_Bulk.csv.gz 150 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365337_2_Light_Bulk.csv.gz 151 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365393_1_Light_Bulk.csv.gz 152 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365350_2_Light_Bulk.csv.gz 153 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365326_1_Light_Bulk.csv.gz 154 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365246_1_Light_Bulk.csv.gz 155 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365354_1_Light_Bulk.csv.gz 156 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365392_1_Light_Bulk.csv.gz 157 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365464_1_Light_Bulk.csv.gz 158 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365264_1_Light_Bulk.csv.gz 159 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365291_1_Light_Bulk.csv.gz 160 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365396_1_Light_Bulk.csv.gz 161 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365311_1_Light_Bulk.csv.gz 162 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365482_3_Light_Bulk.csv.gz 163 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365290_1_Light_Bulk.csv.gz 164 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365363_2_Light_Bulk.csv.gz 165 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365338_2_Light_Bulk.csv.gz 166 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365400_1_Light_Bulk.csv.gz 167 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365413_1_Light_Bulk.csv.gz 168 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365281_1_Light_Bulk.csv.gz 169 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365424_1_Light_Bulk.csv.gz 170 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365468_1_Light_Bulk.csv.gz 171 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365399_1_Light_Bulk.csv.gz 172 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365302_1_Light_Bulk.csv.gz 173 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365447_3_Light_Bulk.csv.gz 174 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365345_1_Light_Bulk.csv.gz 175 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365469_4_Light_Bulk.csv.gz 176 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365336_1_Light_Bulk.csv.gz 177 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365483_1_Light_Bulk.csv.gz 178 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365324_1_Light_Bulk.csv.gz 179 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365254_1_Light_Bulk.csv.gz 180 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365458_2_Light_Bulk.csv.gz 181 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365482_4_Light_Bulk.csv.gz 182 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365467_1_Light_Bulk.csv.gz 183 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365414_1_Light_Bulk.csv.gz 184 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365344_1_Light_Bulk.csv.gz 185 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365422_1_Light_Bulk.csv.gz 186 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365361_2_Light_Bulk.csv.gz 187 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365321_1_Light_Bulk.csv.gz 188 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365399_2_Light_Bulk.csv.gz 189 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365463_1_Light_Bulk.csv.gz 190 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365484_2_Light_Bulk.csv.gz 191 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365330_1_Light_Bulk.csv.gz 192 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365367_1_Light_Bulk.csv.gz 193 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365293_1_Light_Bulk.csv.gz 194 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365413_2_Light_Bulk.csv.gz 195 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365378_1_Light_Bulk.csv.gz 196 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365349_1_Light_Bulk.csv.gz 197 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365416_1_Light_Bulk.csv.gz 198 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365333_1_Light_Bulk.csv.gz 199 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365465_1_Light_Bulk.csv.gz 200 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365356_1_Light_Bulk.csv.gz 201 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365389_2_Light_Bulk.csv.gz 202 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365263_2_Light_Bulk.csv.gz 203 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365431_1_Light_Bulk.csv.gz 204 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365446_1_Light_Bulk.csv.gz 205 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365437_1_Light_Bulk.csv.gz 206 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365427_1_Light_Bulk.csv.gz 207 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365429_1_Light_Bulk.csv.gz 208 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8489722_1_Light_Bulk.csv.gz 209 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365282_1_Light_Bulk.csv.gz 210 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365439_1_Light_Bulk.csv.gz 211 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365385_1_Light_Bulk.csv.gz 212 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365295_1_Light_Bulk.csv.gz 213 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365388_2_Light_Bulk.csv.gz 214 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365308_1_Light_Bulk.csv.gz 215 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365261_3_Light_Bulk.csv.gz 216 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365322_1_Light_Bulk.csv.gz 217 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365269_1_Light_Bulk.csv.gz 218 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365480_1_Light_Bulk.csv.gz 219 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365473_2_Light_Bulk.csv.gz 220 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365471_1_Light_Bulk.csv.gz 221 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365455_1_Light_Bulk.csv.gz 222 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365301_1_Light_Bulk.csv.gz 223 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365440_1_Light_Bulk.csv.gz 224 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365315_2_Light_Bulk.csv.gz 225 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365287_1_Light_Bulk.csv.gz 226 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365347_2_Light_Bulk.csv.gz 227 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365402_1_Light_Bulk.csv.gz 228 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365316_2_Light_Bulk.csv.gz 229 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365287_2_Light_Bulk.csv.gz 230 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365452_1_Light_Bulk.csv.gz 231 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365373_1_Light_Bulk.csv.gz 232 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365432_1_Light_Bulk.csv.gz 233 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365485_3_Light_Bulk.csv.gz 234 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365340_2_Light_Bulk.csv.gz 235 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365487_1_Light_Bulk.csv.gz 236 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365343_1_Light_Bulk.csv.gz 237 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365377_1_Light_Bulk.csv.gz 238 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365273_1_Light_Bulk.csv.gz 239 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365343_2_Light_Bulk.csv.gz 240 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365325_1_Light_Bulk.csv.gz 241 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365453_1_Light_Bulk.csv.gz 242 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365451_1_Light_Bulk.csv.gz 243 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365477_1_Light_Bulk.csv.gz 244 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365261_1_Light_Bulk.csv.gz 245 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365376_1_Light_Bulk.csv.gz 246 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365335_1_Light_Bulk.csv.gz 247 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365412_1_Light_Bulk.csv.gz 248 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365346_2_Light_Bulk.csv.gz 249 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365489_1_Light_Bulk.csv.gz 250 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365386_2_Light_Bulk.csv.gz 251 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365447_1_Light_Bulk.csv.gz 252 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365374_2_Light_Bulk.csv.gz 253 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365267_1_Light_Bulk.csv.gz 254 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365276_1_Light_Bulk.csv.gz 255 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365422_2_Light_Bulk.csv.gz 256 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365418_1_Light_Bulk.csv.gz 257 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365471_3_Light_Bulk.csv.gz 258 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365364_1_Light_Bulk.csv.gz 259 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365334_1_Light_Bulk.csv.gz 260 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365401_1_Light_Bulk.csv.gz 261 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365317_1_Light_Bulk.csv.gz 262 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365300_1_Light_Bulk.csv.gz 263 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365398_1_Light_Bulk.csv.gz 264 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365449_1_Light_Bulk.csv.gz 265 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365294_2_Light_Bulk.csv.gz 266 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365448_1_Light_Bulk.csv.gz 267 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365284_1_Light_Bulk.csv.gz 268 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365460_1_Light_Bulk.csv.gz 269 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365271_2_Light_Bulk.csv.gz 270 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365384_1_Light_Bulk.csv.gz 271 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365454_1_Light_Bulk.csv.gz 272 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365305_1_Light_Bulk.csv.gz 273 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365433_1_Light_Bulk.csv.gz 274 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365421_1_Light_Bulk.csv.gz 275 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365476_2_Light_Bulk.csv.gz 276 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365459_1_Light_Bulk.csv.gz 277 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365298_1_Light_Bulk.csv.gz 278 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365345_2_Light_Bulk.csv.gz 279 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365387_1_Light_Bulk.csv.gz 280 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365482_2_Light_Bulk.csv.gz 281 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365355_1_Light_Bulk.csv.gz 282 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365368_1_Light_Bulk.csv.gz 283 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365425_2_Light_Bulk.csv.gz 284 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365418_2_Light_Bulk.csv.gz 285 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365296_1_Light_Bulk.csv.gz 286 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365316_1_Light_Bulk.csv.gz 287 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365388_1_Light_Bulk.csv.gz 288 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365389_1_Light_Bulk.csv.gz 289 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365484_3_Light_Bulk.csv.gz 290 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365479_1_Light_Bulk.csv.gz 291 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365424_2_Light_Bulk.csv.gz 292 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365318_1_Light_Bulk.csv.gz 293 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365312_1_Light_Bulk.csv.gz 294 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365469_1_Light_Bulk.csv.gz 295 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365490_1_Light_Bulk.csv.gz 296 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365249_1_Light_Bulk.csv.gz 297 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365397_1_Light_Bulk.csv.gz 298 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365250_1_Light_Bulk.csv.gz 299 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365430_1_Light_Bulk.csv.gz 300 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365359_1_Light_Bulk.csv.gz 301 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365277_1_Light_Bulk.csv.gz 302 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365299_1_Light_Bulk.csv.gz 303 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365331_1_Light_Bulk.csv.gz 304 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365392_2_Light_Bulk.csv.gz 305 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365374_1_Light_Bulk.csv.gz 306 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365279_1_Light_Bulk.csv.gz 307 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365304_1_Light_Bulk.csv.gz 308 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365320_1_Light_Bulk.csv.gz 309 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365262_1_Light_Bulk.csv.gz 310 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365349_2_Light_Bulk.csv.gz 311 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365371_1_Light_Bulk.csv.gz 312 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365395_1_Light_Bulk.csv.gz 313 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365466_2_Light_Bulk.csv.gz 314 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365271_1_Light_Bulk.csv.gz 315 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365386_1_Light_Bulk.csv.gz 316 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365370_1_Light_Bulk.csv.gz 317 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365390_2_Light_Bulk.csv.gz 318 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365470_1_Light_Bulk.csv.gz 319 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365310_1_Light_Bulk.csv.gz 320 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365283_1_Light_Bulk.csv.gz 321 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365445_1_Light_Bulk.csv.gz 322 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365475_1_Light_Bulk.csv.gz 323 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365358_1_Light_Bulk.csv.gz 324 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365270_1_Light_Bulk.csv.gz 325 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365353_1_Light_Bulk.csv.gz 326 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365438_1_Light_Bulk.csv.gz 327 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365484_1_Light_Bulk.csv.gz 328 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365462_1_Light_Bulk.csv.gz 329 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365336_2_Light_Bulk.csv.gz 330 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365397_2_Light_Bulk.csv.gz 331 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365355_2_Light_Bulk.csv.gz 332 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365471_2_Light_Bulk.csv.gz 333 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365469_2_Light_Bulk.csv.gz 334 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365415_1_Light_Bulk.csv.gz 335 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365347_1_Light_Bulk.csv.gz 336 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365461_1_Light_Bulk.csv.gz 337 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365442_1_Light_Bulk.csv.gz 338 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365433_2_Light_Bulk.csv.gz 339 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365382_1_Light_Bulk.csv.gz 340 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Soto_2019/csv/SRR8365296_2_Light_Bulk.csv.gz 341 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153725_Light_Bulk.csv.gz 342 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153723_Light_Bulk.csv.gz 343 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153716_Light_Bulk.csv.gz 344 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153717_Light_Bulk.csv.gz 345 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153718_Light_Bulk.csv.gz 346 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153721_Light_Bulk.csv.gz 347 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153720_Light_Bulk.csv.gz 348 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153722_Light_Bulk.csv.gz 349 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153715_Light_Bulk.csv.gz 350 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153724_Light_Bulk.csv.gz 351 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153719_Light_Bulk.csv.gz 352 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernat_2019_2/csv/ERR3153714_Light_Bulk.csv.gz 353 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026043_1_Light_Bulk.csv.gz 354 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026046_1_Light_Bulk.csv.gz 355 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026007_1_Light_Bulk.csv.gz 356 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026016_1_Light_Bulk.csv.gz 357 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026018_1_Light_Bulk.csv.gz 358 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026011_1_Light_Bulk.csv.gz 359 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026014_1_Light_Bulk.csv.gz 360 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026041_1_Light_Bulk.csv.gz 361 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026010_1_Light_Bulk.csv.gz 362 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026020_1_Light_Bulk.csv.gz 363 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026021_1_Light_Bulk.csv.gz 364 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026030_1_Light_Bulk.csv.gz 365 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026019_1_Light_Bulk.csv.gz 366 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026017_1_Light_Bulk.csv.gz 367 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026045_1_Light_Bulk.csv.gz 368 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026008_1_Light_Bulk.csv.gz 369 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026015_1_Light_Bulk.csv.gz 370 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026013_1_Light_Bulk.csv.gz 371 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026042_1_Light_Bulk.csv.gz 372 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026009_1_Light_Bulk.csv.gz 373 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026044_1_Light_Bulk.csv.gz 374 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Vander_Heiden_2017/csv/SRR4026012_1_Light_Bulk.csv.gz 375 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471269_1_Light_Bulk.csv.gz 376 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471275_1_Light_Bulk.csv.gz 377 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471262_1_Light_Bulk.csv.gz 378 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471257_1_Light_Bulk.csv.gz 379 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471264_1_Light_Bulk.csv.gz 380 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471270_1_Light_Bulk.csv.gz 381 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471259_1_Light_Bulk.csv.gz 382 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471266_1_Light_Bulk.csv.gz 383 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471282_1_Light_Bulk.csv.gz 384 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471286_1_Light_Bulk.csv.gz 385 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471265_1_Light_Bulk.csv.gz 386 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471254_1_Light_Bulk.csv.gz 387 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471279_1_Light_Bulk.csv.gz 388 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471281_1_Light_Bulk.csv.gz 389 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471256_1_Light_Bulk.csv.gz 390 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471268_1_Light_Bulk.csv.gz 391 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471273_1_Light_Bulk.csv.gz 392 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471267_1_Light_Bulk.csv.gz 393 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471276_1_Light_Bulk.csv.gz 394 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471255_1_Light_Bulk.csv.gz 395 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471278_1_Light_Bulk.csv.gz 396 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471283_1_Light_Bulk.csv.gz 397 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471277_1_Light_Bulk.csv.gz 398 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471280_1_Light_Bulk.csv.gz 399 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Sheng_2017/csv/SRR5471258_1_Light_Bulk.csv.gz 400 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Bernardes_2020/csv/SRR13082953_1_Light_Bulk.csv.gz 401 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Simonich_2020/csv/SRR8321516_1_Light_Bulk.csv.gz 402 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Simonich_2020/csv/SRR8321517_1_Light_Bulk.csv.gz 403 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Simonich_2020/csv/SRR8321515_1_Light_Bulk.csv.gz 404 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Simonich_2020/csv/SRR8321514_1_Light_Bulk.csv.gz 405 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Corcoran_2016/csv/ERR1760498_1_Light_Bulk.csv.gz 406 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Eccles_2020/csv/SRR10358525_1_Light_Bulk.csv.gz 407 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Eccles_2020/csv/SRR10358523_1_Light_Bulk.csv.gz 408 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Eccles_2020/csv/SRR10358524_1_Light_Bulk.csv.gz 409 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Schanz_2014/csv/schanz_2014_05_1_Light_Bulk.csv.gz 410 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Schanz_2014/csv/schanz_2014_06_1_Light_Bulk.csv.gz 411 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Schanz_2014/csv/schanz_2014_04_1_Light_Bulk.csv.gz 412 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Schanz_2014/csv/schanz_2014_07_1_Light_Bulk.csv.gz 413 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811770_1_Light_Bulk.csv.gz 414 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811772_1_Light_Bulk.csv.gz 415 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811783_1_Light_Bulk.csv.gz 416 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811773_1_Light_Bulk.csv.gz 417 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811760_1_Light_Bulk.csv.gz 418 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811777_1_Light_Bulk.csv.gz 419 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811771_1_Light_Bulk.csv.gz 420 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811759_1_Light_Bulk.csv.gz 421 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811789_1_Light_Bulk.csv.gz 422 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811758_1_Light_Bulk.csv.gz 423 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811787_1_Light_Bulk.csv.gz 424 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811784_1_Light_Bulk.csv.gz 425 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811752_1_Light_Bulk.csv.gz 426 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811790_1_Light_Bulk.csv.gz 427 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811785_1_Light_Bulk.csv.gz 428 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811776_1_Light_Bulk.csv.gz 429 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811763_1_Light_Bulk.csv.gz 430 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811757_1_Light_Bulk.csv.gz 431 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811775_1_Light_Bulk.csv.gz 432 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811786_1_Light_Bulk.csv.gz 433 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811764_1_Light_Bulk.csv.gz 434 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811791_1_Light_Bulk.csv.gz 435 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811761_1_Light_Bulk.csv.gz 436 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR5811781_1_Light_Bulk.csv.gz 437 | wget http://opig.stats.ox.ac.uk/webapps/ngsdb/unpaired/Waltari_2018/csv/SRR6387556_1_Light_Bulk.csv.gz --------------------------------------------------------------------------------