{ "info": { "author": "Hyeshik Chang", "author_email": "hyeshik@snu.ac.kr", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Healthcare Industry", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Bio-Informatics" ], "description": "# Poreplex\nSignal-level preprocessor for Oxford Nanopore direct RNA sequencing (DRS) data. \nPoreplex does many preprocessing steps required before the downstream analyses\nfor RNA Biology and yields the processed data in the ready-to-use forms.\n\n[![PyPI status](https://img.shields.io/pypi/v/poreplex.svg)](https://pypi.python.org/pypi/poreplex)\n[![Build Status](https://travis-ci.org/hyeshik/poreplex.svg?branch=master)](https://travis-ci.org/hyeshik/poreplex)\n[![GitHub license](https://img.shields.io/github/license/hyeshik/poreplex.svg)](https://github.com/hyeshik/poreplex/blob/master/LICENSE.md)\n[![Twitter Follow](https://img.shields.io/twitter/follow/hyeshik.svg?style=social&logo=twitter)](https://twitter.com/hyeshik)\n\n## Features\n* [Demultiplexing barcoded *direct RNA* sequencing libraries](#barcoding-direct-rna-sequencing-libraries)\n* Trimming 3\u2032 adapter sequences\n* [Filtering pseudo-fusion reads](#pseudo-fusion-filter)\n* [Basecalling with ONT *albacore*](#basecalling-with-the-ont-albacore) (even faster than *albacore* itself)\n* [Live basecalling and processing *during* the sequencing](#live-basecalling-and-processing)\n* [Real-time read alignments with *minimap2*](#real-time-sequence-alignments)\n* [Full-screen dashboard view for real-time reports](#real-time-reports)\n* [Various ready-to-use output formats](#output-formats)\n\n

\n\n\n\n

\n\n## Installation\n*Poreplex* requires Python 3.5+ and [pip](http://pypi.python.org/pypi/pip) to install.\nThis *pip* command installs *poreplex* with its essential dependencies. You may use the\nfollowing command.\n\n```bash\npip install poreplex\n```\n\nTo install it together with all optional dependencies (except *albacore*), use this\ncommand:\n\n```bash\npip install 'poreplex[full]'\n```\n\n### Additional (Optional) Dependency\nAs its inputs, *poreplex* requires the FAST5 files that were basecalled using\n[ONT *albacore*](https://community.nanoporetech.com/downloads) in advance.\nAlternatively, *poreplex* can also internally call *albacore* during the\nprocessing without a prior basecalling if the *albacore* package is\navailable from the environment.\n\n## Quick Start\nProduce FASTQ files without 3\u2032 adapter sequences from a bunch of FAST5 files.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter\n```\n\nFour direct RNA sequencing libraries can be barcoded, pooled and sequenced \ntogether. *Porplex* can demultiplex the librariess into separate FASTQ files.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter --barcoding\n```\n\nIn addition, *poreplex* can create directories containing hard-links to\nthe original FAST5 files, organized separately by the barcodes.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter --barcoding --fast5\n```\n\nIn case the FAST5 files are not basecalled yet, just a switch lets\n*poreplex* call *albacore* internally. Multicore machines help.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter --barcoding --fast5 --basecall --parallel 40\n```\n\nWith the `--live` switch, All tasks can be processed as soon as reads\nare produced from MinKNOW.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter --barcoding --basecall --parallel 40 --live\n```\n\nOne may want to output *aligned* reads directly to BAM files instead of\nFASTQ outputs. Poreplex streams the processed reads to *minimap2* and update\nthe BAM outputs real-time. A pre-built index (not a FASTA) generated using\n*minimap2* must be provided for this.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter --barcoding --basecall \\\n --parallel 40 --live --align GRCz11-transcriptome.mmidx\n```\n\nMore vibrant feedback is provided if you turn on the dashboard switch.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --trim-adapter --barcoding --basecall \\\n --parallel 40 --live --align GRCz11-transcriptome.mmidx --dashboard\n```\n\n*Poreplex* detects pseudo-fusion reads which may originate from\ninsufficiently segmented signals if `--filter-chimera` is given. This\nimproves the overall accuracy of demultiplexing.\n\n```bash\nporeplex -i path/to/fast5 -o path/to/output --filter-chimera\n```\n\n## Barcoding direct RNA sequencing libraries\nThe official kits and protocols do not support barcoding in the direct RNA\nsequencing yet. *Poreplex* enables pooling multiple libraries into a single\nDRS run.\n\nONT direct RNA sequencing libraries are prepared by subsequently attaching\ntwo different 3' adapters, [RTA and RMX](https://community.nanoporetech.com/protocols/sequence-specific-direct-rna-sequencing/v/drss_9035_v1_revg_11may2017/overview-of-the-direct-rna),\nrespectively. Both are double-stranded DNAs with Y-burged ends on the\n3'-sides. Barcoded libraries for *poreplex* can be built with modified versions of\nRTA adapters. Unlike in the DNA sequencing libraries, *poreplex* demultiplexes\nin signal-level to ensure the highest accuracy. The *poreplex* package\ncomes with pre-trained demultiplexer models for four different DNA barcodes.\nOrder these sequences as many as you need in the experiment and replace the\noriginal RTA adapters.\n\n```yaml\nBC1 Oligo A: 5'-/5Phos/CCTCCCCTAAAAACGAGCCGCATTTGCGTAGTAGGTTC-3'\nBC1 Oligo B: 5'-GAGGCGAGCGGTCAATTTTCGCAAATGCGGCTCGTTTTTAGGGGAGGTTTTTTTTTT-3'\n```\n\n```yaml\nBC2 Oligo A: 5'-/5Phos/CCTCGTCGGTTCTAGGCATCGCGTATGCTAGTAGGTTC-3'\nBC2 Oligo B: 5'-GAGGCGAGCGGTCAATTTTGCATACGCGATGCCTAGAACCGACGAGGTTTTTTTTTT-3'\n```\n\n```yaml\nBC3 Oligo A: 5'-/5Phos/CCTCCCACTTTCACACGCACTAACCAGGTAGTAGGTTC-3'\nBC3 Oligo B: 5'-GAGGCGAGCGGTCAATTTTCCTGGTTAGTGCGTGTGAAAGTGGGAGGTTTTTTTTTT-3'\n```\n\n```yaml\nBC4 Oligo A: 5'-/5Phos/CCTCCTTCAGAAGAGGGTCGCTTCTACCTAGTAGGTTC-3'\nBC4 Oligo B: 5'-GAGGCGAGCGGTCAATTTTGGTAGAAGCGACCCTCTTCTGAAGGAGGTTTTTTTTTT-3'\n```\n\n## Basecalling with the ONT Albacore\nMost studies requiring signal-level analysis need re-basecalling with\nthe ONT *albacore* to get the event tables in the FAST5 files. *Poreplex*\ncan internally call the basecaller core routines of *albacore* to yield\nthe sequences and tables for the downstream analyses. In fact, running\n*albacore* via *poreplex* is remarkably faster than running *albacore*\nitself in a multi-core machine thanks to more efficient scheduling of\nthe computational loads.\n\n

\n\n

\n\n## Live basecalling and processing\nOne can start the *poreplex* pipeline at any time even before the\nsequencing begins. With the `--live` switch turned on, it monitors\nevery update in input directories and picks the newly created\nfiles up for the whole process of the analysis. In the live mode,\nthe program keeps running unless a user presses Ctrl-C (in the\nstandard progress view) or Q (in the full-screen dashboard view). The\n[*inotify*](https://pypi.org/project/inotify/) module is required to allow\n*poreplex* to run in the live mode.\n\nIn case the points of sequencing and analysis are different,\na real-time directory synchronization software like [DirSync\nPro](https://www.dirsyncpro.org/) may help. *Poreplex* detects new files\nintroduced by moving or closing a file after writing. Files that are\nmade visible by creating hard or symbolic links or changing permissions\nmay remain undetected.\n\n## Real-time sequence alignments \n*Poreplex* aligns the reads to a reference transcriptome using\n*minimap2* and writes the results to BAM files when an index file for\nthe reference is provided. Some options that affect the performance of\nthe alignments can be specified when generating the *minimap2* index.\n\n```bash\nwget 'ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_28/gencode.v28.transcripts.fa.gz'\nminimap2 -H -k 13 -w 10 -d gencode.v28.transcripts.mmidx gencode.v28.transcripts.fa.gz\nporeplex -i /path/to/input -o /path/output --basecall --align gencode.v28.transcripts.mmidx\n```\n\nBy default, switching on the alignments suppresses the FASTQ\noutputs. Those can be recovered by adding `--fastq` to the command line.\n\n## Real-time reports\nThe results from the real-time alignments with the overall progression of\nthe pipeline can be visualized as a [full-screen dashboard view in a text\nterminal](#screenshot). *Poreplex* shows the real-time report when the\ncommand line includes the `--dashboard` switch along with `--align` for\nthe index of the reference transcriptome. The names of mapped sequences\nare shown as the sequence name in the reference *minimap2* index. To\nsee them as more familiar names, supply a file containing IDs and names\nwith the `--contig-aliases` switch. It must be a tab-separated\ntext file with two columns. The first should contain IDs (in the reference index)\nand the second should contain names (to show in the screen). The read counts \nwindow in the middle of the screen represents the summary of reads categorized by\nerror status or detected barcodes for multiplexed libraries. A user can\nchoose a group to show in the window with up and down arrow keys. To stop the\nprocess and close the dashboard, press Q key at any time.\n\n## Pseudo-fusion filter\nIn the Oxford Nanopore strand sequencing, a read is a snippet from a\nvery long contiguous signal from a channel. In most cases, there is a gap \nbetween two different molecules. The gap should be long enough for the *MinKNOW*\nto cut signals at the end of sequences. However, the gap between strands\nis sometimes not enough, so that a small fraction of reads carry two or more molecules.\nThis phenomenon can be particularly problematic in the pooled libraries with barcodes\nand fusion gene studies. In a few runs in our testing, up to 1% of reads could \nbe derived from insufficiently segmented signals. The following plot shows a signal \nsequence continued without any gap between the ends of two differently\nadapted RNAs which were prepared independently until the second ligation \nstep, before which RNAs were pooled (RT before the ligation includes the heat-\ninactivation of enzymes).\n\n

\n\n

\n\n*Poreplex* detects potential artifacts by detecting multiple appearances of the\nsignature of the DNA adapter in a single read when the `--filter-chimera` switch\nis turned on. Note that the default parameters for the filtering can be\ntoo sensitive for some experiments.\n\n## Output formats\n\n### FASTQ\nSequences and quality scores are written to [bgzip](http://www.htslib.org/doc/bgzip.html)-compressed\nFASTQ files in the `fastq` subdirectory. Each FASTQ file contains the\nentire sequences of a group classified by processing status and\ndetected barcode.\n\n| File name | Description |\n| --------- | ----------- |\n| `fastq/pass.fastq.gz` | All sequences that were basecalled and passed the basic quality filters in *poreplex*. With `--barcoding`, the passed sequences with no identifiable barcode are written to this file. |\n| `fastq/BC#.fastq.gz` | Sequences with identifiable barcode signals. |\n| `fastq/fail.fastq.gz` | Too short sequences that could not be calibrated for the signal processing. |\n| `fastq/artifact.fastq.gz` | Sequences that were classified as potential artifacts. |\n\nFASTQ outputs are suppressed when BAM outputs are activated with\nthe `--align` option. Please add `--fastq` to restore the FASTQ outputs.\n\n### FAST5\nTo reduce the disk I/O, *poreplex* utilizes the links instead of copying\nthe original FAST5 to append basecalled results to the file. With the\n`--fast5` option, *poreplex* creates hard links of the original FAST5\nfiles reorganized in subdirectories representing each processing status\nor barcode. Symbolic links are created in case the hard links are not\npossible or `--symlink-fast5` is specified.\n\nThe basecalled events, which are stored in `Analyses/Basecall_1D_00*`\nof the standard FAST5 files, are written to the `events` subdirectory\ninstead upon request by `--dump-basecalled-events`. The basecall\nevent tables for all reads are accessible through a single HDF5 file,\n`events/inventory.h5`, by the read id. These tables include an\nadditional `scaled_mean` column, which contains mean current levels\nscaled to match the ONT's reference\n[pore model](https://github.com/nanoporetech/kmer_models).\n\n### BAM\nThe alignments to the reference transcriptome go into BAM files\ninside the `bam` subdirectory. The reference sequences must be\nindexed using *minimap2* before providing it with the `--align`\noption ([see above](#real-time-sequence-alignments)). The BAM\nfiles are not sorted and not filtered thoroughly. FASTQ or FASTA\nsequence files can be generated from the BAM files without loss\nusing [bedtools](http://bedtools.readthedocs.io/en/latest/content/tools/bamtofastq.html).\nPlease use these sequence alignments in the BAM files for quality\nchecks and sketchy analyses only.\n\n### Nanopolish database\n[Nanopolish](https://github.com/jts/nanopolish) provides very convenient\ntools that help signal-level analyses. *Poreplex* provides a set of index\nfiles that are required to run the *nanopolish* commands. Add `--nanopolish`\nto a *poreplex* command line, then just skip `nanopolish extract` or\n`nanopolish index` commands in its tutorial, and proceed directly to\nthe main steps.\n\n## Command line options\n\n```bash\nusage: poreplex -i DIR -o DIR [-c NAME] [--trim-adapter]\n [--minimum-length LEN] [--filter-chimera] [--barcoding]\n [--polya] [--basecall] [--align INDEXFILE] [--live]\n [--live-delay SECONDS] [--fastq] [--fast5] [--symlink-fast5]\n [--nanopolish] [--dump-adapter-signals]\n [--dump-basecalled-events] [--dashboard]\n [--contig-aliases FILE] [-q] [-y] [-p COUNT] [--tmpdir DIR]\n [--batch-size SIZE] [--version] [-h]\n```\n\n| Short option | Long option | Description |\n| ------------------- | ---------------------- | ------------------------------ |\n| **Data Settings** |||\n| `-i DIR` | `--input DIR` | path to the directory with the input FAST5 files (required) |\n| `-o DIR` | `--output DIR` | output directory path (Required) |\n| `-c NAME` | `--config NAME` | path to signal processing configuration |\n| **Basic Processing Options** |||\n| | `--trim-adapter` | trim 3\u2032 adapter sequences from FASTQ outputs |\n| | `--filter-chimera` | remove unsplit reads fused of two or more RNAs in output |\n| **Optional Analyses** |||\n| | `--barcoding` | sort barcoded reads into separate outputs |\n| | `--polya` | output poly(A) tail length measurements |\n| | `--basecall` | call the ONT albacore for basecalling on-the-fly |\n| | `--align INDEXFILE` | align basecalled reads using minimap2 and create BAM files |\n| **Live Mode** |||\n| | `--live` | monitor new files in the input directory |\n| | `--live-delay SECONDS` | time to delay the start of analysis in live mode (default: 60) |\n| **Output Options** |||\n| | `--fastq` | write to FASTQ files even when BAM files are produced |\n| | `--fast5` | link or copy FAST5 files to separate output directories |\n| | `--symlink-fast5` | create symbolic links to FAST5 files in output directories even when hard linking is possible |\n| | `--nanopolish` | create a nanopolish readdb to enable access from nanopolish |\n| | `--dump-adapter-signals` | dump adapter signal dumps for training |\n| | `--dump-basecalled-events` | dump basecalled events to the output |\n| **User Interface** |||\n| | `--dashboard` | show the full screen dashboard |\n| | `--contig-aliases FILE` | path to a tab-separated text file for aliases to show as a contig names in the dashboard (see README) |\n| `-q` | `--quiet` | suppress non-error messages |\n| `-y` | `--yes` | suppress all questions |\n| **Pipeline Options** |||\n| `-p COUNT` | `--parallel COUNT` | number of worker processes (default: 1) |\n| | `--tmpdir DIR` | temporary directory for intermediate data |\n| | `--batch-size SIZE` | number of files in a single batch (default: 128) |\n| | `--version` | show program's version number and exit |\n| `-h` | `--help` | show this help message and exit |\n\n## Citing Poreplex\nA pre-print is going to be uploaded soon.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/hyeshik/poreplex/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hyeshik/poreplex", "keywords": "nanopore,direct RNA sequencing,barcode,demultiplexing", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "poreplex", "package_url": "https://pypi.org/project/poreplex/", "platform": "", "project_url": "https://pypi.org/project/poreplex/", "project_urls": { "Download": "https://github.com/hyeshik/poreplex/releases", "Homepage": "https://github.com/hyeshik/poreplex" }, "release_url": "https://pypi.org/project/poreplex/0.5/", "requires_dist": [ "PyYAML (>=3.0)", "h5py (>=2.7.0)", "mappy (>=2.10)", "numpy (>=1.14)", "pandas (>=0.22.0)", "pomegranate (>=0.10)", "progressbar33 (>=2.4)", "pysam (>=0.14.0)", "scipy (>=1.0)", "urwid (>=2.0.0)", "tensorflow (>=1.8.0)", "inotify (>=0.2.9); extra == 'full'", "inotify (>=0.2.9); extra == 'live'" ], "requires_python": "", "summary": "A versatile sequence read processor for nanopore direct RNA sequencing", "version": "0.5" }, "last_serial": 5993860, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "ca0ddc4faaef4c256b8357662d5e007c", "sha256": "9f3a3353a202b09baf6f91db5c9cd579db8f8f45b54b880b69e0ba4c4794b010" }, "downloads": -1, "filename": "poreplex-0.1-py3-none-any.whl", "has_sig": true, "md5_digest": "ca0ddc4faaef4c256b8357662d5e007c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 245872, "upload_time": "2018-06-28T16:07:02", "url": "https://files.pythonhosted.org/packages/5c/c1/c33594cb2973a6827761be6e3b02b83719ad7e78806f54330ed76771059e/poreplex-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d093d8cc86c0b4cb3117d68ffdef852", "sha256": "5a380be62e9c66f82bb29a94a7391196ea6daefc2472292a8f913014f1655f54" }, "downloads": -1, "filename": "poreplex-0.1.tar.gz", "has_sig": true, "md5_digest": "8d093d8cc86c0b4cb3117d68ffdef852", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 242370, "upload_time": "2018-06-28T16:07:05", "url": "https://files.pythonhosted.org/packages/2e/a2/8f032a4e2b7c973a1c5aebd5375ed4e2c5b3cb677058f28f3f81205e529e/poreplex-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "ac3f2a0047560865dd9c938ff92209d5", "sha256": "d297c63efd0dae3f8184cfefb966413584e36e871fa5f35baa227ef58ad9ef62" }, "downloads": -1, "filename": "poreplex-0.2-py3-none-any.whl", "has_sig": true, "md5_digest": "ac3f2a0047560865dd9c938ff92209d5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 251698, "upload_time": "2018-06-28T16:34:37", "url": "https://files.pythonhosted.org/packages/c0/d1/22dd5595d943653d91893da556a1d7361d68fec81b18cabd62a3b39e4b32/poreplex-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "208a2d99574a786db29b8b8a383bb2e2", "sha256": "9a2f3a585a1b7daea0da82547214dbd559e2febb5db835415c13ee721559df45" }, "downloads": -1, "filename": "poreplex-0.2.tar.gz", "has_sig": true, "md5_digest": "208a2d99574a786db29b8b8a383bb2e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245195, "upload_time": "2018-06-28T16:34:40", "url": "https://files.pythonhosted.org/packages/c9/85/8dd0c01db144a681191f6ace6ebc5ccd5a586e624db03e8552fe121da5f4/poreplex-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "25d7a6e621045d24cbe29c6a7c6c9ab6", "sha256": "258064952dc6ddf46f8cdd91102b49d40a46efbd7c6c5824836ea060dc943dcd" }, "downloads": -1, "filename": "poreplex-0.3-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "25d7a6e621045d24cbe29c6a7c6c9ab6", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 480853, "upload_time": "2018-10-09T13:27:43", "url": "https://files.pythonhosted.org/packages/6e/df/8fdc13905fa16e377ab0f1891b29de5e55d15a282b9692b9885042105a29/poreplex-0.3-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "9ce9df840c65ab3262c520011efe9999", "sha256": "d631bb924aa4e2c5a08d272ff78bfc04f4eb6c114415acefc90fef93209668d7" }, "downloads": -1, "filename": "poreplex-0.3-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "9ce9df840c65ab3262c520011efe9999", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 480990, "upload_time": "2018-10-09T13:27:46", "url": "https://files.pythonhosted.org/packages/b4/75/c4edab06b6c4768ffed5638e83d472105e3d1324d839b3977beb5b676e2d/poreplex-0.3-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "5fb8d1c7397f387e71f1bfd6695e70d6", "sha256": "e616c54a459a4c12a59ae6571c8c7aa4965507a9042d4f556333a7fc99baff44" }, "downloads": -1, "filename": "poreplex-0.3-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "5fb8d1c7397f387e71f1bfd6695e70d6", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 463454, "upload_time": "2018-10-09T13:27:49", "url": "https://files.pythonhosted.org/packages/64/69/bf0d4f8a77aebfd2cbb33e2ac06a6d415eee498b42703a659ac1e9fc2421/poreplex-0.3-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "b33825d531e97a12c783daeee84fdd90", "sha256": "ec8e2b860a87410c898d7bb57962327a1c21590157ce83d26b5b6d163b22f559" }, "downloads": -1, "filename": "poreplex-0.3-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "b33825d531e97a12c783daeee84fdd90", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 481998, "upload_time": "2018-10-09T13:27:51", "url": "https://files.pythonhosted.org/packages/07/b6/a12a753bab341e5eac95f7f73d32e4368d6b863ad046e6c4a2c1b8ab4ee0/poreplex-0.3-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f4fb590a8bf9e696c412d13fed5d9245", "sha256": "f5c0a50ce62611760f26f4ce3726b7648f55786e7007521b1a4205f9a90b4640" }, "downloads": -1, "filename": "poreplex-0.3.tar.gz", "has_sig": false, "md5_digest": "f4fb590a8bf9e696c412d13fed5d9245", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 481856, "upload_time": "2018-10-09T13:27:54", "url": "https://files.pythonhosted.org/packages/9d/8e/b88577d20003cbfd2bcd8aaeabceef45d153261a0f632fcd07efaf217060/poreplex-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "87d8db1ace4a8a4a2eef761191b49664", "sha256": "4da806a5e8028f6a4e66b55191e9e7a3a8e80edb32cc7dcaa9a4faa5cd038825" }, "downloads": -1, "filename": "poreplex-0.3.1-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "87d8db1ace4a8a4a2eef761191b49664", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 481284, "upload_time": "2018-10-09T14:22:11", "url": "https://files.pythonhosted.org/packages/d0/2a/58c1cabc6bd16b953bfa497a93c3200028d7b361acb9389556f63fb7c548/poreplex-0.3.1-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ace7e08ca313b23fd9cea9c8b91fe569", "sha256": "e22b44a91c7245f5f4dc42bd9d350ac527de36ba80d18f8ef883f7ba8c4ca2f8" }, "downloads": -1, "filename": "poreplex-0.3.1-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "ace7e08ca313b23fd9cea9c8b91fe569", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 481416, "upload_time": "2018-10-09T14:22:14", "url": "https://files.pythonhosted.org/packages/a8/fa/e5dfffd3e0abfdd9155c546cd1fab8dcf52250eb0ee84aadf0503923b4b2/poreplex-0.3.1-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "1f2e8a83fb749e4f9bd127c54dc87713", "sha256": "12aa9137be3db11b86d53421d4ddcd6183637c19ad3f9afbc4e231b49c5fb907" }, "downloads": -1, "filename": "poreplex-0.3.1-cp37-cp37m-macosx_10_13_x86_64.whl", "has_sig": false, "md5_digest": "1f2e8a83fb749e4f9bd127c54dc87713", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 463480, "upload_time": "2018-10-09T14:22:17", "url": "https://files.pythonhosted.org/packages/21/d6/0735f641c822d4faa78e9c1a912482785c8b35834119b3a2779a05f6798f/poreplex-0.3.1-cp37-cp37m-macosx_10_13_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "abc6668c166a85e1b15a122f4be6a2d4", "sha256": "2c4056fe3a1994a830d4c801c7017b2ed4c601043ec5229e6e24285d05b3a853" }, "downloads": -1, "filename": "poreplex-0.3.1.tar.gz", "has_sig": false, "md5_digest": "abc6668c166a85e1b15a122f4be6a2d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 482166, "upload_time": "2018-10-09T14:22:20", "url": "https://files.pythonhosted.org/packages/ce/7a/f4326f197aea434ade900d2c98edb56cc15b2bbfa2ddf711e5d300a461d9/poreplex-0.3.1.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "97eb38b7b145188f65c38c9767f6a01f", "sha256": "ec209cdaf48fdbc0e554f401af29b3810d8d32c733a54ab97e55497426f02936" }, "downloads": -1, "filename": "poreplex-0.4-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "97eb38b7b145188f65c38c9767f6a01f", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 418909, "upload_time": "2019-02-13T06:25:20", "url": "https://files.pythonhosted.org/packages/7d/a2/e9e32021aa09a67e1d9e364a1974432bc633df4f6f24709cc0ccc48593df/poreplex-0.4-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "c758d05bfd6cfed22599bec37191d5c9", "sha256": "9d7e13e16ddfe57af480cb3be215a1fb22e394e35754a267a817719df928e304" }, "downloads": -1, "filename": "poreplex-0.4-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "c758d05bfd6cfed22599bec37191d5c9", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 419029, "upload_time": "2019-02-13T06:25:24", "url": "https://files.pythonhosted.org/packages/77/33/b4e7f09100a72a9622e3dd07a8d63b861ccf4d0b445add5fb6e0ebc5afa9/poreplex-0.4-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "31159a23765e3fcdbd62d88f5f8e52dc", "sha256": "7cb52c381dda3160b7f555ddd0967e58a1ac2609c16d496ff04043f1b6a680d3" }, "downloads": -1, "filename": "poreplex-0.4.tar.gz", "has_sig": false, "md5_digest": "31159a23765e3fcdbd62d88f5f8e52dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 421344, "upload_time": "2019-02-13T06:25:27", "url": "https://files.pythonhosted.org/packages/ce/41/99b51880c9d9835218978008cf75851f2257f9fe0271e5d76c96b17fe501/poreplex-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "18f3a5568682eb9a943562edb7291a5e", "sha256": "54fa3108d16a7c7558c10e8cc541976aa9d87458087c3583b662c960b147cbd2" }, "downloads": -1, "filename": "poreplex-0.4.1-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "18f3a5568682eb9a943562edb7291a5e", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 483270, "upload_time": "2019-02-27T02:14:16", "url": "https://files.pythonhosted.org/packages/4c/dd/4b5372a8a156c4b30a8f7b18dd2c3c05669e3b49037c2541500ae441d8d7/poreplex-0.4.1-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "6d1df6ece0eeed37e943d4d2d3860a65", "sha256": "e6938cef240f0f27acd083cee7193da9573b0070e9a993b2b9c7022576162fb6" }, "downloads": -1, "filename": "poreplex-0.4.1-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "6d1df6ece0eeed37e943d4d2d3860a65", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 483400, "upload_time": "2019-02-27T02:14:19", "url": "https://files.pythonhosted.org/packages/0f/5d/e02ba0a7db08202899c71bdd7b5e163680ef128c1eea85bb0e73396e090c/poreplex-0.4.1-cp36-cp36m-manylinux1_x86_64.whl" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "6d073df82cbab6cce7a17ad4803bc072", "sha256": "de86590bebc549000cbcec8346bfb625d58d545f609692716b254311c3630112" }, "downloads": -1, "filename": "poreplex-0.5-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "6d073df82cbab6cce7a17ad4803bc072", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 941671, "upload_time": "2019-10-18T05:36:48", "url": "https://files.pythonhosted.org/packages/07/56/fa1c0e4cc281c4b4d7569b05b797aaf7ee0f9dbc3c155e3adde73149480b/poreplex-0.5-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a08b996dc47021286ed98482d9d91242", "sha256": "d362bda52bea7664176e51f214f5e5da299a367575051339ac3bf6b095dc9fe4" }, "downloads": -1, "filename": "poreplex-0.5-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a08b996dc47021286ed98482d9d91242", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 941759, "upload_time": "2019-10-18T05:36:51", "url": "https://files.pythonhosted.org/packages/9a/95/4186abdb42830b0907afeed9c95d54f2a8708e6485edcaaadbbcc5bc51bd/poreplex-0.5-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "85cf1f0185dc38e2ed4a3b981bbe95ea", "sha256": "c4439351df5d261df8cd64b52266842ab68254af83d5ce712099a3203e1794db" }, "downloads": -1, "filename": "poreplex-0.5-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "85cf1f0185dc38e2ed4a3b981bbe95ea", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 942768, "upload_time": "2019-10-18T05:36:55", "url": "https://files.pythonhosted.org/packages/db/b0/986fd950bfce4a166f9aae554de7b77525bfcb0f5fcba8a3c4808f11185c/poreplex-0.5-cp37-cp37m-manylinux1_x86_64.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d073df82cbab6cce7a17ad4803bc072", "sha256": "de86590bebc549000cbcec8346bfb625d58d545f609692716b254311c3630112" }, "downloads": -1, "filename": "poreplex-0.5-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "6d073df82cbab6cce7a17ad4803bc072", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 941671, "upload_time": "2019-10-18T05:36:48", "url": "https://files.pythonhosted.org/packages/07/56/fa1c0e4cc281c4b4d7569b05b797aaf7ee0f9dbc3c155e3adde73149480b/poreplex-0.5-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "a08b996dc47021286ed98482d9d91242", "sha256": "d362bda52bea7664176e51f214f5e5da299a367575051339ac3bf6b095dc9fe4" }, "downloads": -1, "filename": "poreplex-0.5-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "a08b996dc47021286ed98482d9d91242", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 941759, "upload_time": "2019-10-18T05:36:51", "url": "https://files.pythonhosted.org/packages/9a/95/4186abdb42830b0907afeed9c95d54f2a8708e6485edcaaadbbcc5bc51bd/poreplex-0.5-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "85cf1f0185dc38e2ed4a3b981bbe95ea", "sha256": "c4439351df5d261df8cd64b52266842ab68254af83d5ce712099a3203e1794db" }, "downloads": -1, "filename": "poreplex-0.5-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "85cf1f0185dc38e2ed4a3b981bbe95ea", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 942768, "upload_time": "2019-10-18T05:36:55", "url": "https://files.pythonhosted.org/packages/db/b0/986fd950bfce4a166f9aae554de7b77525bfcb0f5fcba8a3c4808f11185c/poreplex-0.5-cp37-cp37m-manylinux1_x86_64.whl" } ] }