基于似然推断的基因组功能分析

famli的Python项目详细描述


#famli
用似然推理对亚基因组进行功能分析

[![码头码头码头储存库](https://quay.io/repository/fhcrc-microbiome/famli/status"码头码头码头码头储存库")(https://quay.io/repository/fhcrc microbiome/famli)


本文的主要目的是提高从短读的鸟枪基因组测序数据中识别蛋白质编码序列的准确性。我们在这里考虑的核心挑战是"多重映射"读取与多个不同参考蛋白序列相同的短核苷酸序列。在其他领域,这种多映射读取可以用多种方式处理。例如,在分类识别领域,可以将它们分配给两个引用的最低共同祖先(lca)。

然而,在将短读映射到蛋白质序列(或肽)数据库的情况下,我们不能假设存在潜在的有向无环图结构(例如分类法)。肽
可以通过复制事件、同源重组和共享高度保守的
结构域(导致共享短读)的其他方式进化。如果一个简单地包含了所有有读的肽,
我们发现假阳性比真阳性多1000:1。

我们开发了一种方法,迭代地将共享读取分配给最有可能的真肽,使
精度(tp/(tp+fp))接近90%。为此,我们采用了以下原则:



1。在样本中真正呈阳性的肽中,在整个肽的长度上应该有相对均匀的序列覆盖。


present:

```
c:23445432
c:23445432
p:
````



````````


/>c:234454320000000000000
c:234454320000000000000
p:p:p:=
pp
p
p
p`````````````
````````
```````````——————————————————————————————————————————————————————————————————————我们使用一个肽的总覆盖深度(标准化为肽长度)来迭代地将多重排列的序列重新分配给更可能存在的肽

将氨基酸空间中的所有输入核苷酸读数与肽的参考数据库对齐。
2.过滤掉覆盖高度不均匀的所有招募的参考序列(假设所有可能的对齐序列都来自该肽):
肽每氨基酸覆盖深度的标准偏差/平均值gt;1.0
3。迭代地,直到没有进一步的参考被剪除:
i)标准化:对于与多个可能的参考序列对齐的序列,用每个候选参考肽的长度标准化总对齐质量加权对齐质量
(比特分数)。
ii)修剪。从该序列的候选参考序列中删除加权对齐分数小于该序列最大值90%的所有参考。
4。在步骤3中剪除引用后,筛选出覆盖率高度不均匀的所有招募引用序列。

以下是一些示例:

*对于引用A和引用B,它们都具有一些对齐查询读取,如果**对于引用A,存在不均匀深度**
,但是相对深度y穿过参考文献b的均匀深度,则**参考文献a从候选列表中移除**,而参考文献b
作为候选保留。

*如果**读取1与参考文献a和参考文献c的对齐度相同,则**参考文献a的读取深度比参考文献a的读取深度高2倍整个样本中的CE C**,然后**从候选列表中删除参考C的对齐
用于读取1**。




每种氨基酸在此基础上,使用整数向量计算对齐深度。
预计参考的5'和3'端将有轨迹,因此在5'和3'
端修剪向量。计算了平均覆盖深度和平均值的标准差。标准偏差除以
平均值。基于泊松分布和我们的一些经验努力,我们为这个比率设置了一个阈值1.0作为不均匀性的截止值,**覆盖率为sd/平均比率为1.0的引用被过滤**。

对于本讨论的条款,我们将其描述为给定任务的**可能性**(l<;sub>;ij<;sub>;)。

在我们的应用程序中,我们使用**位分数**(综合考虑对齐长度、不匹配数量、间隔和悬置)作为比较对齐质量以进行加权的一种方法:位分数<;sub>;ij<;/sub>;是读取*i*到r的查询对齐的质量reference*j*

>
>
>;w<;sub>;ij< lt;sub>;ij<;lt;sub>;ij<;lt;sub>;ij<;lt;sub>;ij<;lt;sub>;ij<;lt lt;sub>;ij<;lt lt>

>
>
>
>
>
>
>
>
>
>;w<;sub>;ij<;lt;sub>;ij<;lt;ij<;lt;lt;lt;sub>;ij<;lt;lt;子项&对于所有的*i*)

最后,我们计算**任何单个查询*i*真正来自引用*j*,**l<;sub>;ij<;sub>;**


r查询i,l max<;sub>;i<;/sub>;**被确定为
>;lmax<;sub>;i<;/sub>;=最大值(对于所有*j*,l<;sub>;ij<;/sub>;。

如果l<;sub>;ij<;/sub>;低于查询i*的缩放最大可能性,则**对齐将从考虑中删除**:

>;对于所有查询*i*,
>;如果l<;sub>;ij<;/sub>;>;则比特分数<;sub>;ij<;/sub>;设置为零。


计算w<;sub>;ij<;/sub>;,计算每个参考*j*的tot<;sub>;j<;/sub>;,然后使用新的w<;sub>;ij<;/sub>;和tot<;sub>;j<;/sub>;)迭代计算a
r达到最大迭代次数。


我们特别使用以下对齐选项运行diamond:
``
--查询封面90
--最小分数20
--前10
--id 80
```

**对齐分数**:我们使用diamond计算的位分数作为对齐质量的综合评估
(考虑对齐长度)gth、间隙、不匹配和查询序列质量)。



这个脚本包含:

1.下载参考数据库(如果需要)
2。从sra、aws s3或ftp(如果需要)下载输入数据
3。将输入数据(fastq)与参考数据库对齐
4。分析对齐的读取
5。以上述方式分配多映射读取
6。计算每个参考文献的覆盖率和深度指标rence
7.将输出作为单个json文件写入本地或aws s3

脚本"famil"可以运行两个命令:"filter"和"align"。



调用"famli filter"时可用的选项如下:

````
用法:famli[-h][--input input][--output output]
[--threads threads][--output aln output aln]
[--logfile logfile][--qseqid ix qseqid ix]
[--sseqid-ix sseqid_ix][--qstart IX qstart_ix]
[--qend IX qend_ix][--ssstart IX ssstart_ix]
[--send IX send_ix][--bitscore IX bitscore_ix]
[--slen IX slen_ix][--sd mean cutoff sd_mean_cutoff]
[--strim-5 strim_5][--strim-3 strim_3]

用famli


可选参数筛选一组表格格式的现有对齐:
-h,--帮助显示此帮助消息并退出
--输入对齐文件的输入位置。
--输出JSON文件的输出位置。
--输出ALN OUtput_aln
输出筛选对齐文件的位置。
--要使用的处理器线程数。
--日志文件日志文件(可选)将日志写入此文件。
--查询序列ID的qseqid ix qseqid_ix
对齐列。(0-索引
列ix)
--主题序列id的对齐列(0-索引
列ix)
--查询起始位置的对齐列。(0-索引
第IX列,1-索引起始位置)
--查询结束位置的QEND IX QEND U IX对齐列。(0-索引
第IX列,1-索引结束位置)
--sstart IX sstart IX
主题开始位置的对齐列。
(0-索引第IX列,1-索引开始位置)
--send IX send IX alignment列主题结束位置。(0-索引
第IX列,1-索引结束位置)
--第IX位分数的对齐列
对齐位分数的对齐列。(0索引
第IX列)
--主题长度的SLEN IX SLEN U IX对齐列。(0-索引列
ix)
--sd-平均截止值sd-平均截止值
筛选最大sd/平均值的阈值
--strim-5 strim-5从受试者5'末端修剪的量
--strim-3 strim-3从受试者3'末端修剪的量
```

` align`

/>` align`用于处理fastq格式的一组核苷酸序列,使用diamond与
参考数据库对齐,处理对齐,过滤不太可能的蛋白质,
并将多映射读取分配给单个参考。

调用"famli align"时可用的选项如下:

````
用法:famli[-h]--输入--样本名称样本名称--ref db ref db
--输出文件夹输出--最小得分最小得分]
[--块块][--查询gencode查询编码]
[--线程线程][--min qual min qual]
[--temp folder temp quau folder]

退出
--输入文件的输入位置。将多个文件
与+组合。(支持:sra://、s3://或ftp://)。
--示例名称sample_name
示例的名称,设置输出文件名。
--包含引用数据库的ref db ref_db文件夹。(支持:
s3://、ftp://或本地路径)。
--输出文件夹output_folder
放置结果的文件夹。(支持:s3://,或本地
路径)。
--最小得分最小值
要报告的最小对齐得分。
--块对齐时使用的块数。值与使用的内存量有关。大约6GB RAM由
菱形块使用。
--查询gencode查询gencode
用于翻译核苷酸的遗传代码。
--要使用对齐的线程数。
--最小qual最小qual trim读取到最小Q分数。
--临时文件夹temp文件夹
用于临时文件的文件夹。
```

如果您选择以这种方式安装famli,您还需要安装diamond aligner的工作副本,
可在运行时通过"diamond"访问。这是"pip install famli"未安装的唯一依赖项。
famli尚未使用python3进行测试——只建议使用python2运行它。









>本次回购(famli:latest`)Docker镜像内famli函数调用示例(`famli:latest`)


``````
>Docker Run\
-v$pwd/tests/share\
-rm\
>famli:latest\
>famli\
>align\
>





<输入/分享/分享/分享/example.fastq\
——示例名称示例示例示例示例示例:示例示例
--参考数据库/共享/参考db.dmnd\
--输出文件夹/share/\
--块5\
--查询gencode 11\
--线程16\
--最小质量30\
--临时文件夹/share/

````


为此repo在基目录中运行上述命令时,应在"tests/`directo"中创建输出文件
(`example.fastq.json.gz`)ry.



NT序列。
换言之,对于两个真正存在的引用共享一个大区域的精确氨基酸身份,从该冗余区域读取的
多个映射将完全分配给主引用,而不是在两个引用之间被分割的
。也就是说,在输出中仍然会检测到不太丰富的引用,
并且映射到具有唯一氨基酸序列的区域的所有读操作仍应正确分配。

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

推荐PyPI第三方库


热门话题
使用硬件相关VM参数(重新)启动Java应用程序的正确方法?   java有一个Eclipse插件弹出菜单,只有在选择文件夹时才会出现   java演示简单Ajax ans Servelt实现失败   java如何在不需要OAuth授权的情况下代表组织用户提供密码   java检查一个字符串是否等于另一个字符串的子字符串   java我可以从for循环中的1开始初始化2D数组吗   使用选择排序的java排序2D数组   java如何在一轮投票后重新开始,而不在其中存储统计数据   我的Java代码不断向文本文件添加重复项   java MapReduce Hadoop字长频率不起作用   试图保存Iterable时执行独立工作时发生java错误   java这两个源是同一个场景生成器吗?   java计划重试关联的JMS消息