gpt4 book ai didi

python - 在 Python 中使用 Phobius 输出从序列中选择区域

转载 作者:行者123 更新时间:2023-12-01 09:31:36 24 4
gpt4 key购买 nike

我需要使用某个程序来验证我的一些结果。我对 Python 比较陌生。每个条目的输出都非常不同,请参阅下面的片段:

SEQENCE ID                              TM SP PREDICTION
YOL154W_Q12512_Saccharomyces_cerevisiae 0 Y n8-15c20/21o
YDR481C_P11491_Saccharomyces_cerevisiae 1 0 i34-53o
YAL007C_P39704_Saccharomyces_cerevisiae 1 Y n5-20c25/26o181-207i
YAR028W_P39548_Saccharomyces_cerevisiae 2 0 i51-69o75-97i
YBL040C_P18414_Saccharomyces_cerevisiae 7 0 o6-26i38-56o62-80i101-119o125-143i155-174o186-206i
YBR106W_P38264_Saccharomyces_cerevisiae 1 0 o28-47i
YBR287W_P38355_Saccharomyces_cerevisiae 8 0 o12-32i44-63o69-90i258-275o295-315i327-351o363-385i397-421o

所以,我需要最后一个跨膜区域,在这种情况下,它始终是 o 和 i 之间的最后一个数字,反之亦然。如果 TM = 0,则没有跨膜区域,所以我想要 TM > 0 时的数字我需要的输出:

34-53
181-207
75-97
186-206
28-47
397-421

最好是单独的值,例如:

first_number = 34
second_number = 53

因为我将使用循环,所以值无论如何都会被覆盖。总结一下:我需要 o 和 i 之间的最后一个区域,反之亦然,具有非常可变的字符串(长度和组成)。麻烦:如果我只是搜索(例如使用正则表达式)o 和 i 之间的最后一个区域,有时会选择错误的区域。

最佳答案

如果 Phobius 输出存储在文件中,将 'Phobius_output' 更改为路径,则以下代码应给出预期结果:

with open('Phobius_output') as file:
for line in file.readlines()[1:]:
if int(line.split()[1]) > 0:
prediction = line.split()[3]
i_idx, o_idx = prediction.rfind('i'), prediction.rfind('o')
last_region = prediction[i_idx + 1:o_idx] if i_idx < o_idx else prediction[o_idx + 1:i_idx]
first_number, second_number = map(int, last_region.split('-'))
print(last_region)

关于python - 在 Python 中使用 Phobius 输出从序列中选择区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49923479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com