Python 分析DNA序列中的串联重复基序

Python 分析DNA序列中的串联重复基序,python,regex,dna-sequence,Python,Regex,Dna Sequence,嘿,伙计们:)。由于我在编码领域和Python方面都是新手,所以我没有太多的编码经验,因此希望能得到任何帮助。我正在研究DNA序列中的短串联重复序列,我希望有一个代码,可以根据特定位点的串联基序读取和计数重复核苷酸 以下是我需要的一个示例: 串联图案: AGAT,AGAC,[AGAT],gat,[AGAT] [CTAT],CTAA,[CTAT],N30,[TATC] (CTAT)2 CTAA (CTAT)12 (TATC)13 输入: AGAT AGAC (AGAT)2 GAT (AGA

嘿,伙计们:)。由于我在编码领域和Python方面都是新手,所以我没有太多的编码经验,因此希望能得到任何帮助。我正在研究DNA序列中的短串联重复序列,我希望有一个代码,可以根据特定位点的串联基序读取和计数重复核苷酸

以下是我需要的一个示例:


串联图案:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
输入

AGAT AGAC (AGAT)2 GAT (AGAT)12 
TTAGTTCAGGATAGTTAGTTGGATAGTTAGTTAGTTAGTTAGATAGCTGAGAACTTATTAGTTAGCTCTCTCTCTCAAGACTTCAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATAGATAGATATTCTCTCTCTCATCTCATATATATCTCTAGATAGATCTCTAGATAGATAGATAGCTAGATAGATAGATAGATAGATAGATAGATAGATTCTCTCTCTCTCTCTCTCTCTCTCTCTTAGATAGATAGATATATAGATAGATATAGATAGATAGATATAGATAGATAGATAGATATAGATAT

分析输入:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
TTAGTTCAGGATAGTTAGTTGTTTGGATAGCTAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATAGATAGATATAGATATATATAGATAGATATATATATATATAT

输出

AGAT AGAC (AGAT)2 GAT (AGAT)12 
  • 份数。(在输出中,GAT为大写,即使它不计入viz描述)
等位基因:16

  • 每个主题的副本总数(1+1+2+12)

说明

每个基因座的串联基序是不同的,所以我需要手动指定每个基因座的串联基序(总共约130个基因座)

因此,在这种情况下,整个主题以
AGAT
开始,以
AGAT
的最后一个副本结束

在串联基序中指定的核苷酸和在此定义基序之前和之后的所有核苷酸之间不存在未知核苷酸(A/C/T/G)

如你所见,当串联基序中有小写的核苷酸(gat)时,它们不包括在最终等位基因值中

括号内的图案可以重复多次

不在括号内的–序列中只有一个副本


也可能存在这种情况:


串联图案:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
输入:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
TTTTGCATCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTATCTCTCTCTATCTCTATCTCTCTATCTCTATCTCTATCTCTATCTATCTATCTCTATCTCTCTATCTCTCTATCTCTATCTCTATCTCTATCTCTATCTCTCTATCTCTCTATCTCTATCTATCTCTCTATCTATCTCTATCTCTCTATCTCTCTATCTCTATCTCTCTATCTCTCTATCTCTATCTCTCTCTCTATCTCTCTATCTCTCTCTATCTATCTCTCTCTCTATCTCTCTCTATCTCTCTCTATCTCTCTCTCTATCTCTCTATCTCTCTCTCTCTCTCTGCAAGTTGCAGACTCA

分析输入:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
TTTTGCATCTCTCTCTTCTTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTATCTCTCTCTCTATCTCTATCTCTATCTCTATCTCTATCTATCTCTATCTATCTCTATCTCTATCTCTCTATCTCTATCTCTCTATCTCTATCTCTATCTCTATCTCTATCTCTATCTATCTATCTCTATCTATCTATCTATCTATCTCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTCTATCTATCTATCTATCTCTATCTATCTATCTATCTCTATCTATCTATCTCTATCTATCTATCTATCTCTATCTATCTATCTATCTATCTATCTCTCTCTATTTCAAGATTTGTGGTCAGCAAGTGCAGACTCA

输出:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
等位基因:28

  • (2+1+12+13)
说明

N30意味着在最终串联重复之前有30个未指定的核苷酸



摘要

母题中可能有这些类型,需要定义,每个基因座都有不同的母题组合:

括号:示例[CTAT]–CTAT的多份副本

无括号:示例CTAT–仅一份CTAT副本

N#:示例N30-表示30个未指定的核苷酸(A/C/G/T)

小写:示例ctat-表示这些不包括在最终等位基因数中


真实图案示例:

AGAT,AGAC,[AGAT],gat,[AGAT]
[CTAT],CTAA,[CTAT],N30,[TATC]
(CTAT)2 CTAA (CTAT)12 (TATC)13
还有更多



提前谢谢大家。任何帮助和想法都将不胜感激!:)

很抱歉,我没有时间完成所有的案例,但希望这能给你一些开始

该设计是一个线性自动机,其磁带是核苷酸序列

我们有一个position(
pos
)变量,它按照我们工作的顺序标记索引

还有两个正在运行的累积变量:
输出
字符串和
等位基因的整数计数

现在我们已经初始化了设置,我们可以开始对串联motif字符串中的每个motif进行迭代。这是通过在逗号上拆分字符串来完成的

然后在for循环中,我们需要确定这是哪种motif情况(例如,方括号重复、无括号、
n35;
等)。为了时间起见,我只在重复的方括号中实现了这一点,因为它很容易地演示了这个过程

一旦测试用例通过,您就需要处理需要执行的步骤

例如,在本例中,使用方括号时,主题是重复的,因此我将一个初始
count
变量初始化为
0
,然后跳到
pos
序列中第一个出现的主题,如果
pos
0
-即,如果这是我们的第一个主题,我们需要跳转到第一次事件的末尾。我还增加了
计数
,因为我们发现了一个主题

从这里开始,虽然序列中的下一个字符等于我们的motif字符串,但我们会根据motif的长度增加位置(因此它位于下一个字符的末尾),同时也会增加
计数

最后,我们将格式化字符串(
(motif)#
)附加到输出字符串,并将motif(等位基因)的数量添加到主
等位基因
计数器

然后,我们将输出作为字典返回(如果需要,可以使用元组)

这是正确的,因为:
'TGCAG