Name | tensorqtl JSON |
Version |
1.0.10
JSON |
| download |
home_page | None |
Summary | GPU-accelerated QTL mapper |
upload_time | 2024-11-10 19:49:37 |
maintainer | None |
docs_url | None |
author | None |
requires_python | None |
license | BSD 3-Clause License Copyright (c) 2018-2019, The Broad Institute, Inc. and The General Hospital Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
keywords |
quantitative
trait
loci
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
## tensorQTL
tensorQTL is a GPU-enabled QTL mapper, achieving ~200-300 fold faster *cis*- and *trans*-QTL mapping compared to CPU-based implementations.
If you use tensorQTL in your research, please cite the following paper:
[Taylor-Weiner, Aguet, et al., *Genome Biol.*, 2019](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1836-7).
Empirical beta-approximated p-values are computed as described in [Ongen et al., *Bioinformatics*, 2016](https://academic.oup.com/bioinformatics/article/32/10/1479/1742545).
### Install
You can install tensorQTL using pip:
```
pip3 install tensorqtl
```
or directly from this repository:
```
$ git clone git@github.com:broadinstitute/tensorqtl.git
$ cd tensorqtl
# set up virtual environment and install
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install -r install/requirements.txt .
```
To use PLINK 2 binary files ([pgen/pvar/psam](https://www.cog-genomics.org/plink/2.0/input#pgen)), [pgenlib](https://github.com/chrchang/plink-ng/tree/master/2.0/Python) must be installed:
```
git clone git@github.com:chrchang/plink-ng.git
cd plink-ng/2.0/Python/
python3 setup.py build_ext
python3 setup.py install
```
### Requirements
tensorQTL requires an environment configured with a GPU for optimal performance, but can also be run on a CPU. Instructions for setting up a virtual machine on Google Cloud Platform are provided [here](install/INSTALL.md).
### Input formats
Three inputs are required for QTL analyses with tensorQTL: genotypes, phenotypes, and covariates.
* Phenotypes must be provided in BED format, with a single header line starting with `#` and the first four columns corresponding to: `chr`, `start`, `end`, `phenotype_id`, with the remaining columns corresponding to samples (the identifiers must match those in the genotype input). The BED file should specify the center of the *cis*-window (usually the TSS), with `start == end-1`. A function for generating a BED template from a gene annotation in GTF format is available in [pyqtl](https://github.com/broadinstitute/pyqtl) (`io.gtf_to_tss_bed`).
* Covariates can be provided as a tab-delimited text file (covariates x samples) or dataframe (samples x covariates), with row and column headers.
* Genotypes must be in [PLINK](https://www.cog-genomics.org/plink/2.0/) format, which can be generated from a VCF as follows:
```
plink2 --make-bed \
--output-chr chrM \
--vcf ${plink_prefix_path}.vcf.gz \
--out ${plink_prefix_path}
```
If using PLINK 1.9 or earlier, add the `--keep-allele-order` flag.
Alternatively, the genotypes can be provided as a dataframe (genotypes x samples).
The [examples notebook](example/tensorqtl_examples.ipynb) below contains examples of all input files. The input formats for phenotypes and covariates are identical to those used by [FastQTL](https://github.com/francois-a/fastqtl).
### Examples
For examples illustrating *cis*- and *trans*-QTL mapping, please see [tensorqtl_examples.ipynb](example/tensorqtl_examples.ipynb).
### Running tensorQTL
This section describes how to run the different modes of tensorQTL, both from the command line and within Python.
For a full list of options, run
```
python3 -m tensorqtl --help
```
#### Loading input files
This section is only relevant when running tensorQTL in Python.
The following imports are required:
```
import pandas as pd
import tensorqtl
from tensorqtl import genotypeio, cis, trans
```
Phenotypes and covariates can be loaded as follows:
```
phenotype_df, phenotype_pos_df = tensorqtl.read_phenotype_bed(phenotype_bed_file)
covariates_df = pd.read_csv(covariates_file, sep='\t', index_col=0).T # samples x covariates
```
Genotypes can be loaded as follows, where `plink_prefix_path` is the path to the VCF in PLINK format (excluding `.bed`/`.bim`/`.fam` extensions):
```
pr = genotypeio.PlinkReader(plink_prefix_path)
# load genotypes and variants into data frames
genotype_df = pr.load_genotypes()
variant_df = pr.bim.set_index('snp')[['chrom', 'pos']]
```
To save memory when using genotypes for a subset of samples, a subset of samples can be loaded (this is not strictly necessary, since tensorQTL will select the relevant samples from `genotype_df` otherwise):
```
pr = genotypeio.PlinkReader(plink_prefix_path, select_samples=phenotype_df.columns)
```
#### *cis*-QTL mapping: permutations
This is the main mode for *cis*-QTL mapping. It generates phenotype-level summary statistics with empirical p-values, enabling calculation of genome-wide FDR.
In Python:
```
cis_df = cis.map_cis(genotype_df, variant_df, phenotype_df, phenotype_pos_df, covariates_df)
tensorqtl.calculate_qvalues(cis_df, qvalue_lambda=0.85)
```
Shell command:
```
python3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \
--covariates ${covariates_file} \
--mode cis
```
`${prefix}` specifies the output file name.
#### *cis*-QTL mapping: summary statistics for all variant-phenotype pairs
In Python:
```
cis.map_nominal(genotype_df, variant_df, phenotype_df, phenotype_pos_df,
prefix, covariates_df, output_dir='.')
```
Shell command:
```
python3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \
--covariates ${covariates_file} \
--mode cis_nominal
```
The results are written to a [parquet](https://parquet.apache.org/) file for each chromosome. These files can be read using `pandas`:
```
df = pd.read_parquet(file_name)
```
#### *cis*-QTL mapping: conditionally independent QTLs
This mode maps conditionally independent *cis*-QTLs using the stepwise regression procedure described in [GTEx Consortium, 2017](https://www.nature.com/articles/nature24277). The output from the permutation step (see `map_cis` above) is required.
In Python:
```
indep_df = cis.map_independent(genotype_df, variant_df, cis_df,
phenotype_df, phenotype_pos_df, covariates_df)
```
Shell command:
```
python3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \
--covariates ${covariates_file} \
--cis_output ${prefix}.cis_qtl.txt.gz \
--mode cis_independent
```
#### *cis*-QTL mapping: interactions
Instead of mapping the standard linear model (p ~ g), this mode includes an interaction term (p ~ g + i + gi) and returns full summary statistics for the model. The interaction term is a tab-delimited text file or dataframe mapping sample ID to interaction value(s) (if multiple interactions are used, the file must include a header with variable names). With the `run_eigenmt=True` option, [eigenMT](https://www.cell.com/ajhg/fulltext/S0002-9297(15)00492-9)-adjusted p-values are computed.
In Python:
```
cis.map_nominal(genotype_df, variant_df, phenotype_df, phenotype_pos_df, prefix,
covariates_df=covariates_df,
interaction_df=interaction_df, maf_threshold_interaction=0.05,
run_eigenmt=True, output_dir='.', write_top=True, write_stats=True)
```
The input options `write_top` and `write_stats` control whether the top association per phenotype and full summary statistics, respectively, are written to file.
Shell command:
```
python3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \
--covariates ${covariates_file} \
--interaction ${interactions_file} \
--best_only \
--mode cis_nominal
```
The option `--best_only` disables output of full summary statistics.
Full summary statistics are saved as [parquet](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_parquet.html) files for each chromosome, in `${output_dir}/${prefix}.cis_qtl_pairs.${chr}.parquet`, and the top association for each phenotype is saved to `${output_dir}/${prefix}.cis_qtl_top_assoc.txt.gz`. In these files, the columns `b_g`, `b_g_se`, `pval_g` are the effect size, standard error, and p-value of *g* in the model, with matching columns for *i* and *gi*. In the `*.cis_qtl_top_assoc.txt.gz` file, `tests_emt` is the effective number of independent variants in the cis-window estimated with eigenMT, i.e., based on the eigenvalue decomposition of the regularized genotype correlation matrix ([Davis et al., AJHG, 2016](https://www.cell.com/ajhg/fulltext/S0002-9297(15)00492-9)). `pval_emt = pval_gi * tests_emt`, and `pval_adj_bh` are the Benjamini-Hochberg adjusted p-values corresponding to `pval_emt`.
#### *trans*-QTL mapping
This mode computes nominal associations between all phenotypes and genotypes. tensorQTL generates sparse output by default (associations with p-value < 1e-5). *cis*-associations are filtered out. The output is in parquet format, with four columns: phenotype_id, variant_id, pval, maf.
In Python:
```
trans_df = trans.map_trans(genotype_df, phenotype_df, covariates_df,
return_sparse=True, pval_threshold=1e-5, maf_threshold=0.05,
batch_size=20000)
# remove cis-associations
trans_df = trans.filter_cis(trans_df, phenotype_pos_df.T.to_dict(), variant_df, window=5000000)
```
Shell command:
```
python3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \
--covariates ${covariates_file} \
--mode trans
```
Raw data
{
"_id": null,
"home_page": null,
"name": "tensorqtl",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": "Francois Aguet <francois@broadinstitute.org>",
"keywords": "Quantitative trait loci",
"author": null,
"author_email": "Francois Aguet <francois@broadinstitute.org>",
"download_url": "https://files.pythonhosted.org/packages/cd/6a/aa64285d4dbb47e69e285dd5e6cc8a4d498ae2c824e0ede8692f362ccb6d/tensorqtl-1.0.10.tar.gz",
"platform": null,
"description": "## tensorQTL\n\ntensorQTL is a GPU-enabled QTL mapper, achieving ~200-300 fold faster *cis*- and *trans*-QTL mapping compared to CPU-based implementations.\n\nIf you use tensorQTL in your research, please cite the following paper:\n[Taylor-Weiner, Aguet, et al., *Genome Biol.*, 2019](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-019-1836-7).\n\nEmpirical beta-approximated p-values are computed as described in [Ongen et al., *Bioinformatics*, 2016](https://academic.oup.com/bioinformatics/article/32/10/1479/1742545).\n\n### Install\nYou can install tensorQTL using pip:\n```\npip3 install tensorqtl\n```\nor directly from this repository:\n```\n$ git clone git@github.com:broadinstitute/tensorqtl.git\n$ cd tensorqtl\n# set up virtual environment and install\n$ virtualenv venv\n$ source venv/bin/activate\n(venv)$ pip install -r install/requirements.txt .\n```\nTo use PLINK 2 binary files ([pgen/pvar/psam](https://www.cog-genomics.org/plink/2.0/input#pgen)), [pgenlib](https://github.com/chrchang/plink-ng/tree/master/2.0/Python) must be installed:\n```\ngit clone git@github.com:chrchang/plink-ng.git\ncd plink-ng/2.0/Python/\npython3 setup.py build_ext\npython3 setup.py install\n```\n\n### Requirements\n\ntensorQTL requires an environment configured with a GPU for optimal performance, but can also be run on a CPU. Instructions for setting up a virtual machine on Google Cloud Platform are provided [here](install/INSTALL.md).\n\n### Input formats\nThree inputs are required for QTL analyses with tensorQTL: genotypes, phenotypes, and covariates. \n* Phenotypes must be provided in BED format, with a single header line starting with `#` and the first four columns corresponding to: `chr`, `start`, `end`, `phenotype_id`, with the remaining columns corresponding to samples (the identifiers must match those in the genotype input). The BED file should specify the center of the *cis*-window (usually the TSS), with `start == end-1`. A function for generating a BED template from a gene annotation in GTF format is available in [pyqtl](https://github.com/broadinstitute/pyqtl) (`io.gtf_to_tss_bed`).\n* Covariates can be provided as a tab-delimited text file (covariates x samples) or dataframe (samples x covariates), with row and column headers.\n* Genotypes must be in [PLINK](https://www.cog-genomics.org/plink/2.0/) format, which can be generated from a VCF as follows:\n ```\n plink2 --make-bed \\\n --output-chr chrM \\\n --vcf ${plink_prefix_path}.vcf.gz \\\n --out ${plink_prefix_path}\n ```\n If using PLINK 1.9 or earlier, add the `--keep-allele-order` flag. \n \n Alternatively, the genotypes can be provided as a dataframe (genotypes x samples). \n\n\nThe [examples notebook](example/tensorqtl_examples.ipynb) below contains examples of all input files. The input formats for phenotypes and covariates are identical to those used by [FastQTL](https://github.com/francois-a/fastqtl).\n\n### Examples\nFor examples illustrating *cis*- and *trans*-QTL mapping, please see [tensorqtl_examples.ipynb](example/tensorqtl_examples.ipynb).\n\n### Running tensorQTL\nThis section describes how to run the different modes of tensorQTL, both from the command line and within Python.\nFor a full list of options, run\n```\npython3 -m tensorqtl --help\n```\n\n#### Loading input files\nThis section is only relevant when running tensorQTL in Python.\nThe following imports are required:\n```\nimport pandas as pd\nimport tensorqtl\nfrom tensorqtl import genotypeio, cis, trans\n```\nPhenotypes and covariates can be loaded as follows:\n```\nphenotype_df, phenotype_pos_df = tensorqtl.read_phenotype_bed(phenotype_bed_file)\ncovariates_df = pd.read_csv(covariates_file, sep='\\t', index_col=0).T # samples x covariates\n```\nGenotypes can be loaded as follows, where `plink_prefix_path` is the path to the VCF in PLINK format (excluding `.bed`/`.bim`/`.fam` extensions):\n```\npr = genotypeio.PlinkReader(plink_prefix_path)\n# load genotypes and variants into data frames\ngenotype_df = pr.load_genotypes()\nvariant_df = pr.bim.set_index('snp')[['chrom', 'pos']]\n```\nTo save memory when using genotypes for a subset of samples, a subset of samples can be loaded (this is not strictly necessary, since tensorQTL will select the relevant samples from `genotype_df` otherwise):\n```\npr = genotypeio.PlinkReader(plink_prefix_path, select_samples=phenotype_df.columns)\n```\n\n#### *cis*-QTL mapping: permutations\nThis is the main mode for *cis*-QTL mapping. It generates phenotype-level summary statistics with empirical p-values, enabling calculation of genome-wide FDR.\nIn Python:\n```\ncis_df = cis.map_cis(genotype_df, variant_df, phenotype_df, phenotype_pos_df, covariates_df)\ntensorqtl.calculate_qvalues(cis_df, qvalue_lambda=0.85)\n```\nShell command:\n```\npython3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \\\n --covariates ${covariates_file} \\\n --mode cis\n```\n`${prefix}` specifies the output file name.\n\n#### *cis*-QTL mapping: summary statistics for all variant-phenotype pairs\nIn Python:\n```\ncis.map_nominal(genotype_df, variant_df, phenotype_df, phenotype_pos_df,\n prefix, covariates_df, output_dir='.')\n```\nShell command:\n```\npython3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \\\n --covariates ${covariates_file} \\\n --mode cis_nominal\n```\nThe results are written to a [parquet](https://parquet.apache.org/) file for each chromosome. These files can be read using `pandas`:\n```\ndf = pd.read_parquet(file_name)\n```\n#### *cis*-QTL mapping: conditionally independent QTLs\nThis mode maps conditionally independent *cis*-QTLs using the stepwise regression procedure described in [GTEx Consortium, 2017](https://www.nature.com/articles/nature24277). The output from the permutation step (see `map_cis` above) is required.\nIn Python:\n```\nindep_df = cis.map_independent(genotype_df, variant_df, cis_df,\n phenotype_df, phenotype_pos_df, covariates_df)\n```\nShell command:\n```\npython3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \\\n --covariates ${covariates_file} \\\n --cis_output ${prefix}.cis_qtl.txt.gz \\\n --mode cis_independent\n```\n\n#### *cis*-QTL mapping: interactions\nInstead of mapping the standard linear model (p ~ g), this mode includes an interaction term (p ~ g + i + gi) and returns full summary statistics for the model. The interaction term is a tab-delimited text file or dataframe mapping sample ID to interaction value(s) (if multiple interactions are used, the file must include a header with variable names). With the `run_eigenmt=True` option, [eigenMT](https://www.cell.com/ajhg/fulltext/S0002-9297(15)00492-9)-adjusted p-values are computed.\nIn Python:\n```\ncis.map_nominal(genotype_df, variant_df, phenotype_df, phenotype_pos_df, prefix,\n covariates_df=covariates_df,\n interaction_df=interaction_df, maf_threshold_interaction=0.05,\n run_eigenmt=True, output_dir='.', write_top=True, write_stats=True)\n```\nThe input options `write_top` and `write_stats` control whether the top association per phenotype and full summary statistics, respectively, are written to file.\n\nShell command:\n```\npython3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \\\n --covariates ${covariates_file} \\\n --interaction ${interactions_file} \\\n --best_only \\\n --mode cis_nominal\n```\nThe option `--best_only` disables output of full summary statistics.\n\nFull summary statistics are saved as [parquet](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_parquet.html) files for each chromosome, in `${output_dir}/${prefix}.cis_qtl_pairs.${chr}.parquet`, and the top association for each phenotype is saved to `${output_dir}/${prefix}.cis_qtl_top_assoc.txt.gz`. In these files, the columns `b_g`, `b_g_se`, `pval_g` are the effect size, standard error, and p-value of *g* in the model, with matching columns for *i* and *gi*. In the `*.cis_qtl_top_assoc.txt.gz` file, `tests_emt` is the effective number of independent variants in the cis-window estimated with eigenMT, i.e., based on the eigenvalue decomposition of the regularized genotype correlation matrix ([Davis et al., AJHG, 2016](https://www.cell.com/ajhg/fulltext/S0002-9297(15)00492-9)). `pval_emt = pval_gi * tests_emt`, and `pval_adj_bh` are the Benjamini-Hochberg adjusted p-values corresponding to `pval_emt`. \n\n#### *trans*-QTL mapping\nThis mode computes nominal associations between all phenotypes and genotypes. tensorQTL generates sparse output by default (associations with p-value < 1e-5). *cis*-associations are filtered out. The output is in parquet format, with four columns: phenotype_id, variant_id, pval, maf.\nIn Python:\n```\ntrans_df = trans.map_trans(genotype_df, phenotype_df, covariates_df,\n return_sparse=True, pval_threshold=1e-5, maf_threshold=0.05,\n batch_size=20000)\n# remove cis-associations\ntrans_df = trans.filter_cis(trans_df, phenotype_pos_df.T.to_dict(), variant_df, window=5000000)\n```\nShell command:\n```\npython3 -m tensorqtl ${plink_prefix_path} ${expression_bed} ${prefix} \\\n --covariates ${covariates_file} \\\n --mode trans\n```\n\n",
"bugtrack_url": null,
"license": "BSD 3-Clause License Copyright (c) 2018-2019, The Broad Institute, Inc. and The General Hospital Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
"summary": "GPU-accelerated QTL mapper",
"version": "1.0.10",
"project_urls": {
"Repository": "https://github.com/broadinstitute/tensorqtl.git"
},
"split_keywords": [
"quantitative",
"trait",
"loci"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "29d45f26a4fb2b7a514badecee659c7d0587ffb5d9698d36eaa230bf92d41c68",
"md5": "e883d20e0f2b2b20d26661bf8451ae9b",
"sha256": "93e0da92b3d51b1fdfc623abc8d4dd779534eb1dc2a9b5ba9bc7d2c9250dd27d"
},
"downloads": -1,
"filename": "tensorqtl-1.0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e883d20e0f2b2b20d26661bf8451ae9b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 62256,
"upload_time": "2024-11-10T19:49:35",
"upload_time_iso_8601": "2024-11-10T19:49:35.995187Z",
"url": "https://files.pythonhosted.org/packages/29/d4/5f26a4fb2b7a514badecee659c7d0587ffb5d9698d36eaa230bf92d41c68/tensorqtl-1.0.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd6aaa64285d4dbb47e69e285dd5e6cc8a4d498ae2c824e0ede8692f362ccb6d",
"md5": "2204c73629644f090b627d0dc1e73a21",
"sha256": "9429f8aabcb8cf0aa51319e5b8a6a4f1416c1bd1587392e21d55f191d9fa041b"
},
"downloads": -1,
"filename": "tensorqtl-1.0.10.tar.gz",
"has_sig": false,
"md5_digest": "2204c73629644f090b627d0dc1e73a21",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 59425,
"upload_time": "2024-11-10T19:49:37",
"upload_time_iso_8601": "2024-11-10T19:49:37.543267Z",
"url": "https://files.pythonhosted.org/packages/cd/6a/aa64285d4dbb47e69e285dd5e6cc8a4d498ae2c824e0ede8692f362ccb6d/tensorqtl-1.0.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-10 19:49:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "broadinstitute",
"github_project": "tensorqtl",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "tensorqtl"
}