跳转到主要内容

PhIP-seq分析工具

项目描述

phip-stat: 分析PhIP-seq数据的工具

注意:该项目不再维护。请参阅由Erick Matsen小组维护的phippery、phip-flow和相关项目:[https://github.com/matsengrp/phippery](https://github.com/matsengrp/phippery) [https://github.com/matsengrp/phip-flow](https://github.com/matsengrp/phip-flow)

PhIP-seq检测首次在Larman et. al.中被描述。此存储库包含将原始PhIP-seq数据转换为分析准备就绪的富集分数的代码。

此代码还实现了多个统计模型以处理PhIP-seq数据,包括原始Larman et al论文中描述的模型(generalized-poisson-model)。我们目前推荐使用这里实现的较新模型之一(例如,gamma-poisson-model)。

请提交问题来报告任何问题。

安装

phip-stat在Python 3.6+上运行,并至少依赖于click、tqdm、numpy、scipy和pandas。矩阵分解模型还需要tensorflow。

pip install phip-stat

或者从GitHub安装最新开发版本

pip install git+https://github.com/lasersonlab/phip-stat.git

用法

管道的整体流程是

  1. align —— 对于每个样本计算来自每个可能的库成员的读取数量

  2. merge —— 将所有样本的计数值合并到一个单个计数矩阵中

  3. model —— 标准化计数并训练一个模型来计算富集分数/击中次数

在具有500M读取的整个NextSeq运行中,在具有4个核心的笔记本电脑上(如果使用kallisto等工具进行对齐)可以在 <30 分钟内进行处理。

命令行界面

所有管道工具都可以通过phip可执行文件访问。可以通过传递-h获取所有(子)命令用法/选项。

$ phip -h
Usage: phip [OPTIONS] COMMAND [ARGS]...

  phip -- PhIP-seq analysis tools

Options:
  -h, --help  Show this message and exit.

Commands:
  align-parts     align fastq files to peptide reference
  compute-counts  compute counts from aligned bam file
  compute-pvals   compute p-values from counts
  groupby-sample  group alignments by sample
  join-barcodes   annotate Illumina reads with barcodes Some...
  merge-columns   merge tab-delim files
  split-fastq     split fastq files into smaller chunks

示例管道1:kallisto对齐后跟Gamma-Poisson模型

此管道将使用kallisto将读取伪对齐到参考。因为每个对齐步骤的输出都是一个目录,所以合并步骤使用为这种目录结构设计的CLI工具。计数也预先标准化。

# 1. align
kallisto quant --single --plaintext --fr-stranded -l 75 -s 0.1 -t 4 \
    -i reference.idx -o sample_counts/sample1 sample1.fastq.gz
# ...
kallisto quant --single --plaintext --fr-stranded -l 75 -s 0.1 -t 4 \
    -i reference.idx -o sample_counts/sampleN sampleN.fastq.gz

# 2. merge
phip merge-kallisto-tpm -i sample_counts -o cpm.tsv

# 3. model
phip gamma-poisson-model -t 99.9 -i cpm.tsv -o gamma-poisson

示例流程 2:精确匹配读段随后进行矩阵分解

此流程将每个读段与参考序列精确匹配(或选择读段的一部分)然后合并成一个矩阵。接着用低秩近似(允许剪裁)对矩阵进行分解,并用启发式算法调用“命中”。

# 1. align
phip count-exact-matches -r reference.fasta -l 75 -o sample_counts/sample1.counts.tsv sample1.fastq.gz
# ...
phip count-exact-matches -r reference.fasta -l 75 -o sample_counts/sampleN.counts.tsv sampleN.fastq.gz

# 2. merge
phip merge-columns -m iter -i sample_counts -o counts.tsv

# 3. model
phip clipped-factorization-model --rank 2 -i counts.tsv -o residuals.tsv
phip call-hits -i residuals.tsv -o hits.tsv --beads-regex ".*BEADS_ONLY.*"

示例流程 3:使用 bowtie2 进行比对随后进行归一化和伽马泊松

此示例使用 bowtie2,虽然牺牲了速度,但应能提供最大的敏感性。主要的 bowtie2 命令完成以下任务:将读段与参考序列进行比对,排序并转换为 BAM 格式,计算每个克隆在每个位置的覆盖深度,对每个克隆只取观察到的最大值,最后按克隆标识符排序。

# 1. align
echo "id\tsample1" > sample_counts/sample1.tsv
bowtie2 -p 4 -x reference_index -U sample1.fastq.gz \
    | samtools sort -O BAM \
    | samtools depth -aa -m 100000000 - \
    | awk 'BEGIN {OFS="\t"} {counts[$1] = ($3 < counts[$1]) ? counts[$1] : $3} END {for (c in counts) {print c, counts[c]}}' \
    | sort -k 1 \
    >> sample_counts/sample1.tsv
# ...
echo "id\tsampleN" > sample_counts/sampleN.tsv
bowtie2 -p 4 -x reference_index -U sampleN.fastq.gz \
    | samtools sort -O BAM \
    | samtools depth -aa -m 100000000 - \
    | awk 'BEGIN {OFS="\t"} {counts[$1] = ($3 < counts[$1]) ? counts[$1] : $3} END {for (c in counts) {print c, counts[c]}}' \
    | sort -k 1 \
    >> sample_counts/sampleN.tsv

# 2. merge -- NOTE: this performs a pandas outer join and loads all counts into memory
phip merge-columns -m outer -i sample_counts -o counts.tsv

# 3. model
phip normalize-counts -m size-factors -i counts.tsv -o normalized_counts.tsv
phip gamma-poisson-model -t 99.9 -i normalized_counts.tsv -o gamma-poisson

Snakemake 菜谱

我们包含了一些 Snakemake 菜谱示例,以便轻松一次性处理大量样本,例如,workflows/example-kallisto-GamPois-factorization.snakefile。通常需要编辑配置部分以指定原始测序数据的位置。

运行单元测试

单元测试使用 nose 包,可以使用以下方式运行:

$ pip install nose  # if not already installed
$ nosetests -sv test/

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源代码分发

phip-stat-0.5.1.tar.gz (31.4 kB 查看哈希值)

上传时间 源代码

构建分发

phip_stat-0.5.1-py3-none-any.whl (30.2 kB 查看哈希值)

上传时间 Python 3

由以下机构支持