用于模拟radseq数据的软件包。

radinitio的Python项目详细描述


半径

radinitio是通过前瞻性和回顾性数据模拟评估radseq实验的管道。在用户定义的人口统计学模型下,使用msprime,通过联合模拟,为多个个体生成新的排序数据。每个样本中的遗传变异在基因组环境中进行模拟,可以影响rad基因座的下游生成和序列读取。然后将每一个序列处理为一个在silicoradseq文库制备中的。库的组成部分由用户定义,允许探索包括限制性内切酶选择、插入大小、测序覆盖率和PCR重复分布在内的参数。radinitio模拟也可以通过比较和建模经验数据集中的误差来源来回顾性地应用。radinitio的目的是让研究人员在数据生成过程中充分探索可能的变量,以确保在技术和实验误差的限制下,以最佳方式进行协议选择和库准备。

安装

radinitio可以使用以下命令从python包索引(pypi)安装:

python3 -m pip install radinitio

有关此安装的更多信息,请访问radinitiopypi project page

用户可以使用--user标志在本地python目录中安装radinitio

python3 -m pip install radinitio --user

或者,可以从Catchen Lab网站下载软件,并使用以下命令安装:

python3 -m pip install radinitio-version.tar.gz

或者对于本地安装:

python3 -m pip install radinitio-version.tar.gz --user

有关pip安装的更多信息,请访问pip用户指南。

运行来自pypi或直接安装的pip安装将处理所有依赖项,包括msprimeKelleher等人2016年)

管道结构

radinitio被设计为一系列独立的函数,模拟radseq库准备过程的不同方面。管道可分为三个主要步骤:

变量生成和处理

变量是从用户定义的人口统计中用msprime生成的。对用户提供的参考基因组中存在的不同染色体进行独立模拟。然后将模拟的变体投射到参考基因组上,获得参考等位基因,然后使用用户定义的模型将其转换为替代等位基因。

rad等位基因的提取

将参考基因组在硅片中进行消化,获得一系列参考rad基因座。这可以通过单酶或双酶消化完成。参考基因座在基因组中的位置,然后用于筛选所有样本的模拟变体,以仅包括rad基因座中存在的变体,从而改善下游性能。对于每个样本,我们提取rad等位基因,修改参考rad基因座以包含每个样本的相应遗传变异。这个过程可以改变剪切位点的序列,导致该样本的等位基因丢失。

模拟库充实和排序

提取后,随机抽取每个样本的等位基因,以获得每个等位基因模板的成对末端序列。等位基因是sa与库的期望序列覆盖率成比例的替换。采样的每次迭代都被视为一个独立的序列模板,该模板被截断为从模拟的插入大小分布中采样的随机长度。从用户定义的模型生成的pcr重复分布可应用于采样过程,从而导致对唯一模板序列的重复采样。该过程还可以引入随机误差到序列中,模拟pcr误差的产生。最后,从每个模板中生成成对的结束序列,每个模板都有其唯一的排序错误。

每个阶段的相应功能可以独立运行。我们确实提供了一个包装器脚本radinitio,它调用从开始到结束运行管道的顶级radinitio.simulate()函数。高级用户可以通过python api运行管道,该api允许生成更复杂的人口统计模型,定义更详细的库准备过程,并独立运行管道的组件。

命令行界面

运行radinitio的最简单方法是通过radinitio命令行执行模块 包装器,然后调用顶级的radinitio.simulate()函数,该函数运行 管道。

用法和选项

程序选项如下:

radinitio --genome path --chromosomes path --out-dir dir [pipeline-stage][(demographic model options)][(library options)]

管道阶段(这些选项相互排斥):

--simulate all:运行所有阶段(模拟填充、创建库和序列)(默认值)

--填充:模拟和处理变量。产生全基因组VCF。

--make library seq:模拟和排序rad库。需要退出进行填充运行。

--tally rad位点:计算基因组中保留的rad位点数。

输入/输出文件

-g--genome:参考基因组的路径(fasta文件,可以是gzip)。必需的

-l--染色体:包含要模拟的染色体列表(每行一个)的文件。必需的

-o--out dir:将写入所有文件的输出目录的路径。必需的

人口统计学模型(简单岛模型)

-p--n-pops:(int)孤岛模型中的种群数量(deme)。(默认值=2)

-n--pop eff size:(float)每个模拟dem的有效总体大小。(默认值=5000)

-s--n-seq-indv:(int)从每个群体中抽样的个体数。(默认值=10)

文库准备/排序

-b--库类型:库类型(sdrad或ddrad)。(默认值为"sdrad")

-e--enz:限制性内切酶(sbfi、psti、ecori、bamhi等)。(默认设置为"SBFI")

-d--enz2:双酶切的第二限制性内切酶(mspi、msei、alui等)。(默认值为'mspi')

-m--insert mean:(int)插入bp中的大小平均值。(默认值=350)

-t--插入stdev:(int)插入bp中的尺寸标准偏差。(默认值=37)

-c--PCR循环数:(int)PCR循环数。(默认值=0)

-v--覆盖率:(int)排序覆盖率。(默认值=20)

r--读取长度:(int)序列读取长度。(默认值=150)

make-library-seq()-特定选项:

--make pop sim dir:包含以前的"radinitio.make\pop"的目录运行。不能与"输出目录"相同

附加选项

-v,--版本:打印程序版本。

-h--help:显示此帮助消息。

示例

# Simulating a sdRAD library (whole pipeline):
radinitio --simulate-all \
    --genome ./genome/reference.fa.gz \
    --chromosomes ./genome/chrom.list \
    --out-dir ./simulations_sdRAD/ \
    --n-pops 4 --pop-eff-size 2500 --n-seq-indv 10\
    --lib-type sdRAD --enz SbfI --insert-mean 350 --insert-stdev 35\
    --pcr-cycles 9 --coverage 20 --read-length 150# Simulating a ddRAD library (whole pipeline):
radinitio --simulate-all \
    --genome ./genome/reference.fa.gz \
    --chromosomes ./genome/chrom.list \
    --out-dir ./simulations_ddRAD/ \
    --n-pops 4 --pop-eff-size 2500 --n-seq-indv 10\
    --lib-type ddRAD --enz PstI --enz2 MspI \
    --insert-mean 350 --insert-stdev 35\
    --pcr-cycles 9 --coverage 20 --read-length 150# Make a tally of sdRAD loci
radinitio --tally-rad-loci \
    --genome ./genome/reference.fa.gz \
    --chromosomes ./genome/chrom.list \
    --out-dir ./count_rad_loci/ \
    --lib-type sdRAD --enz SbfI

# Make a tally of ddRAD loci
radinitio --tally-rad-loci \
    --genome ./genome/reference.fa.gz \
    --chromosomes ./genome/chrom.list \
    --out-dir ./count_ddrad_loci/ \
    --lib-type ddRAD --enz NlaIII --enz2 MluCI \
    --insert-mean 320 --insert-stdev 25# Simulate a population only
radinitio --make-population \
    --genome ./genome/reference.fa.gz \
    --chromosomes ./genome/chrom.list \
    --out-dir ./simulated_population/ \
    --n-pops 4 --pop-eff-size 2500 --n-seq-indv 10# Simulate library and sequencing# Use population from previous simulation
radinitio --make-library-seq \
    --genome ./genome/reference.fa.gz \
    --chromosomes ./genome/chrom.list \
    --out-dir ./SbfI_library/ \
    --make-pop-sim-dir ./simulated_population/ \
    --lib-type sdRAD --enz SbfI \
    --insert-mean 350 --insert-stdev 35\
    --pcr-cycles 9 --coverage 20 --read-length 150

选项说明

半径的不同管道阶段可以独立运行:

  • --simulate all运行所有radinitio阶段。从参考基因组开始,指定染色体,模拟种群,准备一个库和序列。这是包装中的默认值。

  • --使种群只生成一个全基因组的vcf,其中包含模拟种群的变体。以后可以使用不同的库参数对单个模拟种群进行排序。

  • --make library seq模拟库的准备和排序,从而对模拟的indivolutions进行成对的末端读取。它需要一组个体,可能是前一个make populationrun的输出。

  • --tally rad位点对于给定的文库配置-文库类型和酶-计算基因组中rad位点的数量。

reference.fa.gz是一个基因组fasta文件。radinitio可以模拟使用压缩和未压缩的fasta文件。

--out dir是模拟的输出目录。在IT内部,将生成一系列子目录和文件(如下所述)。

chrom.list包含要模拟的所有染色体ID的列表。只有列表中的染色体将被用作模拟的输入。当使用高度碎片化的组件或使用许多小型未放置的脚手架时,这一点非常重要。chrom.list的结构如下:

chromosome_1
chromosome_2
chromosome_3
...

--n-pops--n-seq-indv--pop eff size包含简单的岛屿人口统计模型的参数。在这个例子中,我们模拟了4个种群,每个种群的有效种群规模为2500个个体,从中我们分别抽取了10个个体。使用附加的radinitio函数可以生成更复杂的人口统计学参数。有关人口统计模型参数的更多信息,请查看msprime文档

对于上面的例子(--library type sdrad),--enz是用于生成单个摘要radseq库的主要限制酶,如Baird等人2008年和文章?id=10.1371/journal.pone.0018561" rel="nofollow"title="etter等。2011">等2011 在此示例中,使用限制性内切酶sbfi,但其他酶如ecoripstibamhi等也可用。模拟库的平均插入大小(--insert mean)为350bp,标准偏差(--insert stdev)为+35bp,2x150bp成对端读(--read length)。

示例(--library type ddrad)使用双限制性内切酶组合,如协议中的彼得森等人。2012年,--enz是罕见的(主)切割器,psti在本例中,--enz2是常见的(或双)切割器酶(mspi)。模拟库将有一个插入尺寸(--insert mean)为350bp,标准偏差(--insert stdev)为35bp。这种尺寸分布将产生介于280bp和420bp之间的插入尺寸范围(插入平均值+2 x插入标准偏差)。模拟将产生2x150bp的成对末端读取(--读取长度)。

--pcr cycles定义了一个使用9个pcr循环富集的rad库。这个库有一个2:1的模板分子对序列的读取比率。可以使用附加的radinitio函数生成更复杂的PCR参数。

--coverage定义库的每个轨迹排序深度,在本例中为20倍。

--make pop sim dir是包含以前的半径的目录。make_populationsimulation。此选项仅在radinitio.make_library_seq中使用,并定义采样的总体以模拟库准备和排序。它不能与运行的输出目录相同。

Radinitio手册

完整版本的《Radinitio手册》,包括安装说明、命令行变量文档、输出文件说明和运行管道的教程,可在radinitio网站

作者

安吉尔里维拉科隆

尼古拉斯·罗切特罗切特@illinois.edu

朱利安·卡岑jcatchen@illinois.edu

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java有可能让一个bean在春天拥有多个父对象吗?   java将字符串转换为sparql URI   java如何仅从JPQL中的日期时间字段按日期分组   java到节点。js代码转换   java为什么即使构建成功,applet也不启动?   java多人查询jpql   令牌“}”上的java语法错误,{应为   基于列表的简单留言板实现中的java NullPointerException   javasimplenlg:我们如何指定数量?   java如何仅从Freemarker中的字符串获取字母表?   java Spring引导JPA按实体排序集合   java排序单链表与排序双链表   eclipse将版权头添加到所有项目文件(.java、.xml、…)