{ "info": { "author": "Gergana V. Velikova and Benjamin Schuster-Boeckler", "author_email": "gergana_velikova@yahoo.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Bio-Informatics" ], "description": "\n\n_`asTair` is a toolchain to process DNA modification sequencing data. `asTair` was designed primarily for handling [TET-Assisted Pyridine Borane (TAPS) sequencing](https://www.nature.com/articles/s41587-019-0041-2) output, but also contains functions that are useful for Bisulfite Sequencing (BS) data._\n\n![Build status](https://img.shields.io/bitbucket/pipelines/bsblabludwig/astair.svg \"Build Status\")\n\n# Basic usage\n## 0. Installation \n\nInstallation through `pip` is the easiest way to get `asTair`, and it works in python2 and 3:\n\n```bash\npip install astair\n```\n\nYou should now be able to call `astair`:\n\n```bash\nastair --help\n```\n```text\nUsage: astair [OPTIONS] COMMAND [ARGS]...\n\n asTair (tools for processing cytosine modification sequencing data)\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n align Align raw reads in fastq format to a reference genome.\n call Call modified cytosines from a bam or cram file.\n filter Look for sequencing reads with more than N CpH modifications.\n find Output positions of Cs from fasta file per context.\n mbias Generate modification per read length information (Mbias).\n phred Calculate per base (A, C, T, G) Phred scores for each strand.\n simulate Simulate TAPS/BS conversion on top of an existing bam/cram file.\n\n __________________________________About__________________________________\n asTair was written by Gergana V. Velikova and Benjamin Schuster-Boeckler.\n This code is made available under the GNU General Public License, see\n LICENSE.txt for more details.\n Version: 3.x.x\n```\n\nIn general, you can use `--help` on all `astair` sub-commands to get detailed instructions on the available options.\n\n(If for some reason `pip` is not an option, [check our FAQ](https://bitbucket.org/bsblabludwig/astair/wiki/FAQ#markdown-header-installing-astair-without-pip) for further ways to install `asTair`.)\n\nAll of the examples in the main part of the current tutorial are based on the assumption that the input sequencing data are __TAPS__ pair-end sequencing reads, however, asTair analyses can be run in single-end mode (`--se`). Also, asTair enables you to run analyses on __WGBS__ data, which requires a running installation of [`bwa-meth`](https://github.com/brentp/bwa-meth) for the alignment step. For more information on WGBS analyses you may check the section [Analysis of WGBS data (or other unmodified cytosine to thymine conversion methods)](#markdown-header-analysis-of-wgbs-data-or-other-unmodified-cytosine-to-thymine-conversion-methods).\n\n## 1. Align reads\n\nWe will assume that you have generated paired-end sequencing data, which is stored in two fastq files. For this brief tutorial, we assume the files are called `lambda.phage_test_sample_R1.fq.gz` and `lambda.phage_test_sample_R2.fq.gz`. If you want to follow this tutorial, you can download the files here:\n\n```bash\n# Or use curl -O if wget is not available\nwget https://zenodo.org/record/2582855/files/lambda.phage_test_sample_1.fq.gz\nwget https://zenodo.org/record/2582855/files/lambda.phage_test_sample_2.fq.gz\n```\n\nThe raw reads need to be aligned. asTair contains a command to help with this. It assumes that [`bwa`](https://github.com/lh3/bwa) and [`samtools`](http://www.htslib.org/) are available on your system. (If you prefer to use a different aligner, [skip to step 2](#markdown-header-2-call-methylation).)\n\nYou will also need an indexed reference genome to align to, which can be given as a gzip compressed file. For this example we are using the lambda phage genome, which you can download with\n\n```bash\nwget https://zenodo.org/record/2582855/files/lambda_phage.fa\nwget https://zenodo.org/record/2582855/files/lambda_phage.fa.fai\n```\n\nNow, you are ready to align:\n```bash\nmkdir -p output_dir\nastair align -f lambda_phage.fa -1 lambda.phage_test_sample_1.fq.gz -2 lambda.phage_test_sample_2.fq.gz -d output_dir\n```\n\n## 2. Call methylation\n\nOnce your fastq files are aligned and sorted (done automatically by `astair align`), you can run `astair call` to create a list of putative modified positions:\n\n```bash\nastair call -i output_dir/lambda.phage_test_sample_mCtoT.cram -f lambda_phage.fa --context CpG --minimum_base_quality 13 -d output_dir/\n```\n\n## 3. Interpret results\nAfter calling methylation, you will find two additional files in `output_dir`:\n\n1. `lambda.phage_test_sample_mCtoT_mCtoT_CpG.stats`\n2. `lambda.phage_test_sample_mCtoT_mCtoT_CpG.mods`\n\nThe `.stats` file contains global statistics on the modification rate in different sequence contexts. You can use this to get an idea of the overall level of modification in your sample. Here you will find information about how many cytosine positions of certain context are in the reference, how many of them were covered, and how many reads were modified/unmodified at the covered positions on the relevant strand assuming directionality. In our example here, we used a 1:1 mixture of in-vitro modified and unmodified lambda phage, so the results show a methylation rate of approximately 50% :\n\n\n| CONTEXT | SPECIFIC_CONTEXT | MEAN_MODIFICATION_RATE_PERCENT | TOTAL_POSITIONS | COVERED_POSITIONS | MODIFIED | UNMODIFIED |\n| ------- | ---------------- | ------------------------------ | --------------- | ----------------- | ----------------- | ----------------- |\n| CpG | * | **48.225** | 6225 | 6225 | 356153 | 382377 |\n| * | CGA | 44.647 | 1210 | 1210 | 64160 | 79545 |\n| * | CGC | 48.595 | 1730 | 1730 | 97842 | 103499 |\n| * | CGG | 48.936 | 1847 | 1847 | 108283 | 112991 |\n| * | CGT | 49.862 | 1438 | 1438 | 85868 | 86342 |\n\nThe `.mods` file contains per-position information on your sample:\n\n| CHROM | START | END | MOD_LEVEL | MOD | UNMOD | REF | ALT | SPECIFIC_CONTEXT | CONTEXT | SNV | TOTAL_DEPTH |\n| ----- | ----- | ----- | --------- | ------ | ------- | ----- | ---- | --------| ------- | ----------------- | ----------- |\n| lambda |3 | 4 | 1.0 | 23 | 0 | C | T | CGG | CpG | No | 57 |\n| lambda |4 | 5 | 0.0 | 0 | 34 | G | A | CGC | CpG | No | 71 |\n| lambda |6 | 7 | 1.0 | 38 | 0 | C | T | CGA | CpG | No | 104 |\n| lambda |7 | 8 | 1.0 | 58 | 0 | G | A | CGC | CpG | No | 127 |\n| lambda | 12 | 13 | 1.0 | 88 | 0 | C | T | CGC | CpG | No | 240 |\n| lambda |13 | 14 | 0.0 | 0 | 139 | G | A | CGA | CpG | No | 250 |\n\nThe header should be mostly self-explanatory. `MOD` and `UNMOD` refer to the number of reads covering that base that showed evidence of modification/no modification, and were of the right orientation to be meaningful for modification calling. The total coverage, including reads that were oriented in a way that no modification information can be extracted, is shown in `TOTAL_DEPTH`. `SNV` gives a heuristic indication whether the position is indeed a modified base, or a genetic C to T variant in the genome of the sample.\n\n# Other useful information\n\n## Recommendations for data pre-processing\n\n1. Do quality control of the sequencing reads and do quality trimming before mapping and dispose of very short reads, using [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/), [trimgalore](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/) or similar tools.\n2. In most cases, it will be best to remove PCR duplicates before running the modification caller, unless your reads are non-randomly fragmented (e.g. enzymatically digested).\n3. Check the fragment (insert) size distribution and decide on an overlap removal method for paired-end reads. The simplest option is the default removal of overlaps handled by `astair call`, which will randomly select one of two overlapping reads. This behaviour can be disabled by the `-sc` option, in case you are using a more sophisticated overlap-clipping tool.\n4. For speed and convenience we recommend using the `--per_chromosome` option, if possible, in order to run multiple processes in parallel. This also reduces the memory requirement when asTair is run on a desktop machine.\n\n## Analysis of WGBS data (or other unmodified cytosine to thymine conversion methods)\n\nThe analysis pipeline for bisulfite sequencing data does follows the same steps as TAPS data analysis, but requires different options. We again start from fastq files. To avoid Bismark-style double-alignments, we prefer to use `bwa meth`, which can be used directly through `astair align` when you choose the `--method CtoT` option.\n\n```bash\nmkdir -p output_dir\nastair align -f lambda_phage.fa -1 lambda.phage_test_sample_BS_1.fastq.gz -2 lambda.phage_test_sample_BS_2.fastq.gz --method CtoT -d output_dir/\n```\n\nYou can now use `astair call` with `--method CtoT` for the modifcation calling:\n```bash\nastair call -i output_dir/lambda.phage_test_sample_BS_CtoT.cram -f lambda_phage.fa --method CtoT --context CpG --minimum_base_quality 13 -d output_dir/\n```\n# Further information\n\n- [More information on other asTair tools](https://bitbucket.org/bsblabludwig/astair/wiki/Home)\n- [asTair FAQ](https://bitbucket.org/bsblabludwig/astair/wiki/FAQ) \n\n# License\n\nThis software is made available under the terms of the [GNU General Public License v3](http://www.gnu.org/licenses/gpl-3.0.html).\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/bsblabludwig/astair/", "keywords": "TAPS taps cytosine caller methylation modification WGBS RRBS bisulfite epigenetics", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "asTair", "package_url": "https://pypi.org/project/asTair/", "platform": "", "project_url": "https://pypi.org/project/asTair/", "project_urls": { "Homepage": "https://bitbucket.org/bsblabludwig/astair/" }, "release_url": "https://pypi.org/project/asTair/3.2.6/", "requires_dist": [ "Click (<8,>=7)", "pysam (>=0.15.0)", "pyahocorasick (<2,>=1)", "numpy (<2,>=1)", "matplotlib ; extra == 'plot'" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "summary": "A tool for the analysis of bisulfite-free and base-resolution sequencing data generated with TET Assisted Pyridine borane Sequencing (TAPS), or other modified cytosine to thymine conversion methods (mCtoT). It also has some features for bisulfite sequencing data (unmodified cytosine to thymine conversion methods, CtoT).", "version": "3.2.6" }, "last_serial": 5895468, "releases": { "3.0.2": [ { "comment_text": "", "digests": { "md5": "94807f4b0ef7f8f5ee1ecfa1fd2fbd9c", "sha256": "09667b573237c0800ae5ce8d100992563bb89ce7695e850c9666414abc982c76" }, "downloads": -1, "filename": "asTair-3.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "94807f4b0ef7f8f5ee1ecfa1fd2fbd9c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 45115, "upload_time": "2019-03-11T14:42:54", "url": "https://files.pythonhosted.org/packages/e4/ca/4e22abdb99cd42c609d7b6516a76bfede5f2d64437f7eb412f5f7927f2b3/asTair-3.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6199fcf67b59489223c149c1a17eacf1", "sha256": "16b8262e7bb8d9f88fa9eeef52f08abed7352a1840dc581d751fdadc87805fde" }, "downloads": -1, "filename": "asTair-3.0.2.tar.gz", "has_sig": false, "md5_digest": "6199fcf67b59489223c149c1a17eacf1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 26273, "upload_time": "2019-03-11T14:42:56", "url": "https://files.pythonhosted.org/packages/46/55/c6daaa116389c96b3a1f65d9677effa3e9df51d69ad3f9ebd09f8004b981/asTair-3.0.2.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "f8b22aa7efe118826d369448a7f3071e", "sha256": "fe6933ce8159516614a2cd9105302a1037d9c3ee768459e0e2be41b2f48da549" }, "downloads": -1, "filename": "asTair-3.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f8b22aa7efe118826d369448a7f3071e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 46973, "upload_time": "2019-04-04T09:45:36", "url": "https://files.pythonhosted.org/packages/51/15/b2475ce5ac959593439abd66c1109051fcf65223a45c4a591e1e729fd4a7/asTair-3.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73af03634af4b4e3f6dcc95bf4f1d160", "sha256": "98e1d78a9fd61bcf4d24b4ee55ac93f6cffee187f2cdb2fe972b84649d36794c" }, "downloads": -1, "filename": "asTair-3.1.0.tar.gz", "has_sig": false, "md5_digest": "73af03634af4b4e3f6dcc95bf4f1d160", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 28129, "upload_time": "2019-04-04T09:45:37", "url": "https://files.pythonhosted.org/packages/37/f2/3f4e786e2397e4b38af503e78d0425343d8fa144ded24fec08768146f114/asTair-3.1.0.tar.gz" } ], "3.2.1": [ { "comment_text": "", "digests": { "md5": "a69db6d4e65e89543b5b451aae25505f", "sha256": "52ade9f7d27757d0e826a4a41a755214e32237b2e96058607dacef92d33376f6" }, "downloads": -1, "filename": "asTair-3.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a69db6d4e65e89543b5b451aae25505f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 54450, "upload_time": "2019-05-14T13:28:52", "url": "https://files.pythonhosted.org/packages/58/6b/2ea9101e7a20cf2ced4dc43eb0bf4311f8ba82808bd9a35d9635a13cc161/asTair-3.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1351ea1081842a817993bd35214ef780", "sha256": "952c06106a44f3b455570e8a0c8fce7b5b0b2919ec633b12c640943aa346bb86" }, "downloads": -1, "filename": "asTair-3.2.1.tar.gz", "has_sig": false, "md5_digest": "1351ea1081842a817993bd35214ef780", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 33983, "upload_time": "2019-05-14T13:28:54", "url": "https://files.pythonhosted.org/packages/50/42/4418a616c54fca3ee47f928941450d5856d1ee07a46e99a5f521ab852d34/asTair-3.2.1.tar.gz" } ], "3.2.4": [ { "comment_text": "", "digests": { "md5": "b24ab545aefa570d0dc838fecd6d3d04", "sha256": "220d58386f00edeb9a7c2c05ac51752951a5336d69598658173f7a382a718523" }, "downloads": -1, "filename": "asTair-3.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b24ab545aefa570d0dc838fecd6d3d04", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 54415, "upload_time": "2019-05-28T10:50:50", "url": "https://files.pythonhosted.org/packages/2c/4f/f03555154bd7a7d8fca5c2d8fad8ae4df6fbcc5d5b3c53cdb48af9e04fac/asTair-3.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4ba34ac9997f91cc693d7dfea43a5d6", "sha256": "329b6e27c70bc56c9c553f0a4acbd0707f59cdc72d906c94d883238413f334c6" }, "downloads": -1, "filename": "asTair-3.2.4.tar.gz", "has_sig": false, "md5_digest": "c4ba34ac9997f91cc693d7dfea43a5d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 38109, "upload_time": "2019-05-28T10:50:52", "url": "https://files.pythonhosted.org/packages/09/a0/f4c482e580ef77a046baf9a21f31fe12f3978e3d2c454827875235447e7c/asTair-3.2.4.tar.gz" } ], "3.2.5": [ { "comment_text": "", "digests": { "md5": "c125a5e8d90d329731eb5c9373b3f3b5", "sha256": "1a9cc98606bcd9e4fe15354d5b8aa5278776da2a3523987ce330526eb2cb57c5" }, "downloads": -1, "filename": "asTair-3.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c125a5e8d90d329731eb5c9373b3f3b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 54460, "upload_time": "2019-07-24T10:33:46", "url": "https://files.pythonhosted.org/packages/e6/ca/f12cfde83b8025bc046413a454bfbe44a9c1c6f6ef521b564f9e44f41640/asTair-3.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b509b9f35da675dbab900e561c68582", "sha256": "479bf4d3d0bc7fdb7d7b1f86e7bd8c320b8cbd80d73e88d20185e9dd2db5a7bb" }, "downloads": -1, "filename": "asTair-3.2.5.tar.gz", "has_sig": false, "md5_digest": "6b509b9f35da675dbab900e561c68582", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 34048, "upload_time": "2019-07-24T10:33:48", "url": "https://files.pythonhosted.org/packages/c8/17/b454c6f83319a1b768322264f819f16d6e496d412ee6fd295a791146b252/asTair-3.2.5.tar.gz" } ], "3.2.6": [ { "comment_text": "", "digests": { "md5": "96e01953df00f6bc70e284660807b98c", "sha256": "689ecd7116ecda01c3c18eeb0f765377946fade46330e1bb55963e3e3b478b92" }, "downloads": -1, "filename": "asTair-3.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96e01953df00f6bc70e284660807b98c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 55468, "upload_time": "2019-09-27T10:59:47", "url": "https://files.pythonhosted.org/packages/5c/36/72d62509261c0a7e5f74ad7cca12d663466d72b12bdfccbd651edeab22e1/asTair-3.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e44913eb8641c398824868175769a34", "sha256": "72b112e58dd06d24a2b39c54f41b2995f0a47cfa6780b1f47dedf7ebe15f198d" }, "downloads": -1, "filename": "asTair-3.2.6.tar.gz", "has_sig": false, "md5_digest": "4e44913eb8641c398824868175769a34", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 34265, "upload_time": "2019-09-27T10:59:48", "url": "https://files.pythonhosted.org/packages/a5/13/698f86dbdca55f593c8424d172ede930a8cccefb81470104542a73752cdd/asTair-3.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "96e01953df00f6bc70e284660807b98c", "sha256": "689ecd7116ecda01c3c18eeb0f765377946fade46330e1bb55963e3e3b478b92" }, "downloads": -1, "filename": "asTair-3.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "96e01953df00f6bc70e284660807b98c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 55468, "upload_time": "2019-09-27T10:59:47", "url": "https://files.pythonhosted.org/packages/5c/36/72d62509261c0a7e5f74ad7cca12d663466d72b12bdfccbd651edeab22e1/asTair-3.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e44913eb8641c398824868175769a34", "sha256": "72b112e58dd06d24a2b39c54f41b2995f0a47cfa6780b1f47dedf7ebe15f198d" }, "downloads": -1, "filename": "asTair-3.2.6.tar.gz", "has_sig": false, "md5_digest": "4e44913eb8641c398824868175769a34", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, < 4", "size": 34265, "upload_time": "2019-09-27T10:59:48", "url": "https://files.pythonhosted.org/packages/a5/13/698f86dbdca55f593c8424d172ede930a8cccefb81470104542a73752cdd/asTair-3.2.6.tar.gz" } ] }