现在,我需要找到一种方法,Python可以找到上述代码的密码子位置编号5并将该序列提取到位置12(ATGG * CTTTACCTCGTC * TCACAGGAG)。所以输出应该是这样的:
>CCODE1112_5..11
CTTTACCTCGTC
如何让python在第一个“_”之后获取开始值,在“...”之后获取结束值,以便它可以自动执行? ?致谢!!!
答案 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]