帅哥们:)。我对Python编程没有太多的帮助,因为我在编写Python方面没有太多的经验。我正在研究DNA序列中的短串联重复序列,我想有一个代码,可以读取和计算基于特定位点串联基序的重复核苷酸。在
下面是我需要的一个例子:
串联图案:
AGAT,AGAC,[AGAT],gat,[AGAT]
输入:
TTAGTTCAGGATAGTAGTTGTTTGGAAGCGCAACTCTCTGAGAAACTTAGTTATTCTCTCATCTATTTAGCTACAGCAAACTTCATGTGACAAAAGCCACACCCATAACTTTTTTCCTCTAGATAGACAGATAGATGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATAGATTCTCTTTCTCTGCATTCTCATCTATATTTCTGTCTTTCTCTTAATTATGGGTAACTCTTAGCCTGCCAGGCTACCATGGAAAGACAACCTTTAT
分析输入:
TTAGTTCAGGATAGTAGTTGTTTGGAAGCGCAACTCTCTGAGAAACTTAGTTATTCTCTCATCTATTTAGCTACAGCAAACTTCATGTGACAAAAGCCACACCCATAACTTTTTTCCTCTAGATAGACAGATAGATGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATAGATATAGATTCTCTTTCTCTGCATTCTCATCTATATTTCTGTCTTTCTCTTAATTATGGGTAACTCTTAGCCTGCCAGGCTACCATGGAAAGACAACCTTTAT
输出:
^{pr2}$等位基因:16
说明
每个基因座的串联基序是不同的,所以我需要为每个基因座(总共约130个基因座)手动指定它。在
所以在本例中,整个motif以AGAT
开头,以AGAT
的最后一个副本结束
在串联基序中指定的核苷酸之间没有未知的核苷酸(A/C/T/G),在这个定义的基序之前和之后的一切都应该被忽略
如你所见,当串联基序中有以小写字母(gat)书写的核苷酸时,它们不包括在最终的等位基因值中
那些在括号里的图案,可以重复多次
那些不在括号中的-在序列中只有一个副本
也可能出现这种情况:
串联图案:
[CTAT],CTAA,[CTAT],N30,[TATC]
输入:
TTTGCATGATCTCTTCTTGATCATTTTCTTCCCCCTTTCCTAAAAAATTCTGGTCCTTTGAGGTAACTGCCATTACCATATGAGTTAGTCTGGGTTCTCCAGAGAAACAGAACCAATAGGCTATCTATCTAACTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTACTATCTCTATATTATCTATCTATCTATTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCATCTATCTATATCTTCTACCAAGTGATTTACTGTAATAAATTAGCTCATGCTATTATGGAGGATGAGTTCAAGATTTGTGGTCAGCAAGTTGCAGACTCA
分析输入:
TTTGCATGATCTCTTCTTGATCATTTTCTTCCCCCTTTCCTAAAAAATTCTGGTCCTTTGAGGTAACTGCCATTACCATATGAGTTAGTCTGGGTTCTCCAGAGAAACAGAACCAATAGGCTATCTATCTAACTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTACTATCTCTATATTATCTATCTATCTATTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCTATCATCTATCTATATCTTCTACCAAGTGATTTACTGTAATAAATTAGCTCATGCTATTATGGAGGATGAGTTCAAGATTTGTGGTCAGCAAGTTGCAGACTCA
输出:
(CTAT)2 CTAA (CTAT)12 (TATC)13
等位基因
说明
N30意味着在最后的串联重复之前有30个未指定的核苷酸
摘要
母题中可以有这些类型,需要加以界定,每个位点都有不同的母题组合:
括号:示例[CTAT]–CTAT的多个副本
无括号:示例CTAT–只有一份CTAT副本
N#:示例N30-表示30个未指定核苷酸(A/C/G/T)
小写:例如ctat-表示这些不包括在最终等位基因数中
真实母题的例子:
[CTTT],TT,CT,[CTTT]
[TCTA],[TCTG],[TCTA],ta,[TCTA],tca,[TCTA],tccata,[TCTA],TA,[TCTA]
[TAGA],[CAGA],N48,[TAGA],[CAGA]
[AAGA],[AAGG],[AAGA]
还有更多
提前谢谢大家。任何帮助和想法将不胜感激!:)
很抱歉,我没有时间完成所有的案件,但希望这会给你一些开始的东西。在
设计是一个线性自动机,其磁带是核苷酸序列。在
我们有一个position(
pos
)变量,它标记了我们正在使用的序列中的索引。在还有两个正在运行的累积变量:一个
output
字符串和一个alleles
的整数计数。在现在我们已经初始化了设置,我们可以开始迭代串联motif字符串中的每个motif。这是通过在逗号上拆分字符串来完成的。在
然后在for循环中,我们需要确定这是哪个motif大小写(例如,方括号重复,无括号,
N#
等)。为了节省时间,我只对重复的方括号实现了这一点,因为它很容易演示过程。在一旦测试用例通过了,您需要处理需要执行的步骤。在
例如,在这个方括号中,motif是重复的,所以我将一个初始的}-也就是说,如果这是我们的第一个motif,我们需要将位置跳到第一个出现的末尾。我还增加了
count
变量初始化为0
,然后跳pos
到sequence
中第一个出现的motif,如果pos
是{count
,因为我们发现了一个母题。在从这里开始,虽然
sequence
中的下一个字符等于我们的motif字符串,但是我们将位置增加为motif的长度(因此它位于下一个的末尾),同时还增加count
。在最后,我们将格式化字符串(
(motif)#
)附加到输出字符串,并将motif(等位基因)的数量添加到主alleles
计数器中。在然后我们将输出作为字典返回(如果需要,可以使用元组)。在
我做了一个很基本的测试:
^{pr2}$这是正确的,因为:
'TGCAGCAT|TCTATCTATCTA|GCTAAGCC'
解决问题的一个好方法是使用regex。正则表达式是编程中解析
strings
的常用方法。使用regex,您可以定义要在字符串中搜索的模式(就像您所做的那样),这是问题的核心。
这意味着regex有自己的格式,与您的格式相似,但不完全相同。
您也可以编写一些代码来将格式转换为regex格式,但您可能应该编写另一个问题,避免所有的DNA内容。在
让我们看看regex是如何工作的:
以下是您的摘要在regex模式中的外观:
有了这些知识,我们可以将正则表达式应用于我们的输入:
例1:
对于下一个示例,我只展示regex
tandem
,其余代码都是相同的例2:
^{pr2}$例3:
例4:
另一个例子是:
开发一个完整的工作框架需要一点时间,这取决于你想要达到的灵活性水平、输入类型、自动化程度。。。在
相关问题 更多 >
编程相关推荐