neederman-wunsch质量感知序列比对

allein_zu_haus的Python项目详细描述


一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个一个三个一个一个一个一个三个一个一个一个三个一个一个三个一个一个一个一个三个一个一个一个三个一个一个一个三个一个一个一个一个二个一个三个一个三个一个三个一个三个一个一个三个一个一个三个一个一个三个三个一个一个三个一个三个一个一个三个一个一个一个一个三个一个一个一个三个一个三个一个一个一个一个三个一个一个一个一个一个三个三===




这个包实现了一个'needman–wunsch<;https://en.wikipedia.org/wiki/needeman%e2%80%93wunsch_u算法>;` br/>与"仿射间隔惩罚"的全局对齐<;https://en.wikipedia.org/wiki/gap_u惩罚仿射>;` `,同时考虑到读取序列的每个基对的可信度。

假设所有读到的核苷酸都被确定地识别出来。在实践中,
`NGS(下一代测序)<;http://www.illumina.com/technology/next generation sequencing.html>;``用不同的质量级别标识核苷酸,并且流行的格式,例如,`fastq<;https://en.wikipedia.org/wiki/fastq-u format>;``是为描述这些品质。此包修改算法以考虑质量(请参见下面的数学原理)。

.net/software/gem/>;`。理想情况下,这些工具将配置为在搜索命中时考虑到基对质量。由于目前情况并非如此,因此可以使用allein zu_haus包,以便在读取对齐器报告的位置将读取重新对齐到引用序列,并提取更准确的对齐分数和"雪茄"字符串。

包通过根据提供的基本优先级权衡不同的选项来处理不明确的基本代码。读取序列必须从{a,c,g,t,n}字母表中提取,但是参考序列可以包含由iupac核苷酸歧义码定义的任何碱基对。对于不明确的读取基对,忽略质量值。



用法示例:
----




最小示例
~~~~~~~~~~~~~~~~~


……代码::python

import allein zu_haus
import numpy as np

max_read_len=100要对齐的读取的最大长度
max_ref_len=2*max_read_len;要全局对齐的引用子序列的最大长度(其中起始位置由读取决定对准器输出)
失配惩罚=4;失配核苷酸惩罚
间隙开放惩罚=6;gep开放惩罚
gep扩展惩罚=3;间隙扩展惩罚
对准器=allein zu haus.对准器(最大读取长度,最大参考长度,失配惩罚ty,gap_open,gap_extend)

read=np.array(['a','c','g','t','a',dtype=bytes)read sequence,给定为numpy array,dtype=bytes
ref=np.array(['a','g','g','t',a',dtype=bytes)要对齐的引用子序列,给定为numpy array,dtype=bytes
read bp_probs=np.array([0.9,0.99,0.8,0.99,0.99])对每个读基对的置信度。有关如何从读取质量字符串中提取此类值的信息,请参见下文。这里假设核苷酸分布均匀。
更多与生物学相关的先验信息,请参见下面的示例
最大间隙=2允许的最大间隙数。使用小值改善运行时间

score,cigar=aligner.match(read,read_bp_probs,base_probs,ref,max_gaps)aligner返回对齐分数和雪茄字符串



单碱基对先验是通过使用在参考序列中观察到的核苷酸频率。假设_ ref_seq是一个字符串变量,包含感兴趣的参考基因组,可以通过以下方法完成:

…代码::python

def get_priors():
返回集合中(k,v/float(len(_ref_seq))(k,v)。counter(_ref_seq).items()]




很自然,可以轻松地设计更复杂的prior。

在fastq文件中编辑/使用以下公式读取校准器输出:

…数学:

1-10^\frac{-q}{10}


,其中q是质量字符-33的ascii值(假设质量以phred+33表示)

代码::python

def get_read_bp_probs(read_quality_string):read quality_string:fastq文件中报告的fastq quality string或read aligner输出
返回1-np.power(10,-np.array([ord(e)-33 for e in a])/10。)




er基对概率(1-p_错误)。例如,对于质量字符串'??cii的输出将是[0.999、0.999、0.996、0.9999、0.9999]



检查每个结果相对于相应的参考子序列的得分。为此,若要使用它,请首先创建一个具有与所有匹配项相关的参数的对象。
由于读取通常具有相似的长度,并且由于读取对齐器提供读取对齐到的参考序列中的位置,因此读取序列的长度和参考序列都可以很容易地绑定。

代码::python

import allein zu_haus
import numpy as np

max_read_len=100
max_ref_len=2*max_read_len
mismatch_pension=4
gap_open=6
gep_extend=3
aligner=allein zu haus.aligner(max_read_len,max_ref_len,mismatch_惩罚、间隙打开、间隙延长)




然后为每次匹配重复使用校准器,仅提供匹配特定参数:

…代码::python

请参阅上面的示例。
base_probs=get_priors()用于从引用和/或读取序列计算priors的函数。请参阅上面的示例

score,cigar=aligner.match(read,read_bp_probs,base_probs,ref,max_gaps)多次调用aligner,相关序列和优先级



。_数学原理:

不幸的是,我们不能直接观察到*d*,而只能看到*d*,这是一些不完善的"测序过程"输出的序列<;https://en.wikipedia.org/wiki/dna-sequencing>;`。假设在比对算法中的某个时刻,我们考虑来自*d'*的核苷酸是否与来自*f*的核苷酸匹配。定义:

**b*:sub:`d'是测序过程报告的核苷酸。
**b*:sub:`d'是真实(未知)未清核苷酸。
**b*:sub:`r'是参考核苷酸。



数学:
\mbox{惩罚}(b{d'},b{r)

,而正确的惩罚应该是

。数学:

\mbox{罚}(b{d},b{d},b{r\simeq
\sumb左[p左[p左(b{d=b{d}=b{d'}=b{{d'}\右]\cdot\mbox{罚}(b,b{r\右]


由贝叶斯定理和lt;https://en.wikipedia.org/wikipedia.org/wiki/bayes/bayes%27{定理和};`{,
…数学:

p左(b_d=b_b_d'}=b_d'}\right)
=
\frac
{
p左(b{d'}=b{d'};b{d'};b{d=b{d'};b{d=b{d=b};右)
\cdot
\p左(b{d=b};右)

{
{
\sum{k=a,'c,'c,'g,'t}
p左(b{d'}=b{d'};b{d'};b{d=b{d'};b{d=b{d'};b{右)
\cdot
p\left(b_d=k \右)
}


数学:

p左(b_d=b右)


math::

P\left( B_{D'} = b_{D'} | B_D = b \right)
=
\begin{cases}
1 - P_{\mbox{err}} ,& \text{if } b_{D'} = b, \\
\frac{P_{\mbox{err}}}{3}, & \text{otherwise}
\end{cases}


where *P* :sub:`err` is the probability for e错误率由所报告的核苷酸质量决定。



问题
----


欢迎在"https://bitbucket.org/taliraveh/allein zu haus/issues<;https://bitbucket.org/taliraveh/allein zu haus/issues>;"。

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

推荐PyPI第三方库


热门话题
字符串Java字母替换无效   java Spring Roo JPA MS SQL Server无法打开JPA EntityManager组织。冬眠例外GenericJDBCException:无法打开连接   在scala中使用JavaWS对大型数据文件进行java流式处理   Java编译器是否将字节和短字符识别为文本?   java无法查找符号错误,空指针   mongodb在Java中重用数据库连接   java将多个StringArray从字符串文件获取到活动中   java是一个变量,它只保存最后一次鼠标单击的坐标   c#尺寸有限;添加、删除和洗牌   java如何在Android中显示来自资产文件夹的文本文件中的文本   Android应用程序中的java Tensorflow Lite自定义对象检测模型错误   java如何在foreachloop中使用scanner将来自命令行的输入存储到数组中   java如何定义一个好的存储库接口   Android中的java解析动态json对象