【问题标题】:DNA extraction pythonDNA提取蟒蛇
【发布时间】:2012-04-26 17:44:14
【问题描述】:

现在,我需要找到一种方法,让 Python 可以找到上述代码的密码子位置 5 并提取该序列直到位置 12 (ATGG*CTTTACCTCGTC*TCACAGGAG)。所以输出应该是这样的:

>CCODE1112_5..11
 CTTTACCTCGTC

如何告诉 python 在第一个“_”之后获取开始值,在“..”之后获取结束值,以便它可以自动完成? ?谢谢!!!

【问题讨论】:

标签: object-tag


【解决方案1】:
def extractseq( queryseq , begin=5, end =12):
   queryseq=queryseq.split('\n')#transform the string in a list of lines included in the string

   return queryseq[1][begin-1:end-1]

我认为这个函数应该可以工作,注意python中从0开始的索引

在你的脚本中写完之后,你只需要调用函数 subs=extractseq(seq,5,12)

好吧,抱歉,如果您想提取 子字符串中包含的 5 和 12,一种简单的方法是:

substring=queryseq.split('\n')[0].split('_')[1].split('...')#extraction of the substring
begin=substring[0]
end = substring[1]

【讨论】:

  • 好的,所以在那里你指定 begin=5,end =12,但是我如何告诉 python 在第一个“_”之后获取开始值,在“..”之后获取结束值所以它可以自动完成吗?无论如何谢谢! :)
【解决方案2】:

我可能(叹气)使用正则表达式从 CCODE1112_5..12_ABC 中提取 5 和 12。

然后将提取的字符串转换为int。

然后在 DNA 数据的字符串切片中使用 int 作为索引。

对于正则表达式:

正则表达式 = re.compile(r'^[^]*(\d+)..(\d+)_.*$') regex.match('CCODE1112_5..12_ABC') 匹配 = regex.match('CCODE1112_5..12_ABC') 匹配组(1) '5' 匹配组(2) '12'

例如,要将它们转换为 int,请使用 int(match.group(1))。

那么你的索引是从 1 开始的,而 python 是从 0 开始的。此外,python 切片的起点是您想要的值,python 切片的终点是您想要的值的一个以上。所以从 group(1) 中减去一个,让 group(2) 一个人呆着。

类似: 子串 = dna_data[left_point-1:right_point]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2010-10-21
    • 2016-05-28
    • 2014-08-01
    相关资源
    最近更新 更多