我正在尝试编辑由ClustalW生成的MSA (MultipleSequence准直)文件,以便在协商一致的文件之前修剪序列,使用BioPython。xxx指的是此处不相关的其他基地。
下面是I/O示例:
输入
ITS_primer_fw --------------------------------CGCGTCCACTMTCCAGTT
RBL67ITS_full_sequence CCACCCCAACAAGGGCGGCCACGCGGTCCGCTCGCGTCCACTCTCCAGTTxxxxxxxxxxxxxxxxxxxxxxx
PRL2010 ACACCCCCGAAAGGGCGTCC------CCTGCTCGCGTCCACTATCCAGTTxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BBF32_3 ACACACCCACAAGGGCGAGCAGGCG----GCTCGCGTCCACTATCCAGTTxxxxxxxxxxxxxx
BBFCG32 CAACACCACACCGGGCGAGCGGG-------CTCGCGTCCACTGTCGAGTTxxxxxxxxxxxxxxxxxxxxxx预期产出
ITS_primer_fw CGCGTCCACTMTCCAGTT
RBL67ITS_full_sequence CGCGTCCACTCTCCAGTTxxxxxxxxxxxxxxxxxxxx
PRL2010 CGCGTCCACTATCCAGTTxxxxxxxxxxxxxxxxxxxxx
BBF32_3 CGCGTCCACTATCCAGTTxxxxxxxxxxxxxxxxxxx
BBFCG32 CGCGTCCACTGTCGAGTTxxxxxxxxxxxxxxxxxxxxAlignIO的文档代码描述了一种通过将对齐处理为数组来提取序列的方法。在这个例子中
align = AlignIO.read(input_file, "clustal")
sub_alignment = align[:,20:]从第20个核苷酸开始,我能够提取所有序列(:)所做的子比对。我正在寻找一种方法来取代20在这个例子中的第一个核苷酸的位置一致的序列。
发布于 2019-01-09 16:50:40
多亏了一位生物星用户找到了答案。
抽搐正在查看列,以找到起点,这将是预期后的最后'-‘。默认情况下,我的对齐第一行是最短的,并以'-‘开头,然后再对齐。
下面是代码:
aln = AlignIO.read(input_file, "clustal")
for col in range(aln.get_alignment_length()): # search into column
res = list(aln[:,col])
if not '-' in res:
position = col # find start point
print('First full column is {}'.format(col))
break
print(aln[:,position::]) # print the whole alignment starting from the position variable foundhttps://stackoverflow.com/questions/54095661
复制相似问题