DNA提取蟒蛇

时间:2012-04-26 17:44:15

标签: object-tag

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

>CCODE1112_5..11
 CTTTACCTCGTC

如何让python在第一个“_”之后获取开始值,在“...”之后获取结束值,以便它可以自动执行? ?致谢!!!

2 个答案:

答案 0 :(得分:0)

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]

答案 1 :(得分:0)

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

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

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

对于正则表达式:

  
    
      
        

regex = re.compile(r'^ [^ ] * (\ d +)..(\ d +)_。* $')         regex.match( 'CCODE1112_5..12_ABC')                  match = regex.match('CCODE1112_5..12_ABC')         match.group(1)         '5'         match.group(2)         '12'

      
    
  

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

然后你的索引是从1开始的,而python是从0开始的。此外,python的切片起点是你想要的值,而python的切片终点是你想要的值。所以从组(1)中减去一个,然后单独留下组(2)。

类似于: substring = dna_data [left_point-1:right_point]