Python 在基因中发现外显子/内含子边界

Python 在基因中发现外显子/内含子边界,python,biopython,Python,Biopython,我想通过一个基因,从每个feature.type==“mRNA”中获得一个包含外显子/内含子边界的10bp长序列列表。似乎我需要使用compoundLocation,以及'join'中使用的位置,但我不知道如何操作,也找不到教程 有人能给我举个例子或给我指一个教程吗?假设所有信息都是您在评论中显示的精确格式,并且您在每个简介/外显子边界的两侧寻找20个bp,类似这样的情况可能是一个开始: 编辑:如果您实际上是从一个GenBank记录开始,那么这并不难。假设您要查找的完整连接字符串位于CDS功能信

我想通过一个基因,从每个
feature.type==“mRNA”
中获得一个包含外显子/内含子边界的10bp长序列列表。似乎我需要使用
compoundLocation
,以及
'join'
中使用的位置,但我不知道如何操作,也找不到教程


有人能给我举个例子或给我指一个教程吗?

假设所有信息都是您在评论中显示的精确格式,并且您在每个简介/外显子边界的两侧寻找20个bp,类似这样的情况可能是一个开始:

编辑:如果您实际上是从一个GenBank记录开始,那么这并不难。假设您要查找的完整连接字符串位于CDS功能信息中,则:

for f in record.features:
    if f.type == 'CDS':
        jct_info = str(f.location)
将“位置”信息转换为字符串,您可以继续如下操作

(有一些方法可以直接处理位置信息,而无需转换为字符串——特别是可以使用“提取”将拼接序列直接从父序列中提取出来——但是,通过转换为str和int,可以更快、更容易地完成所需的步骤。)

现在,您可以循环遍历start:end值列表,将它们从文本中提取出来,并将它们转换为int,以便将它们用作序列索引。大概是这样的:

for jct in jcts:
    (start,end) = jct.replace('[', '').replace(']', '').split(':')
    try:   # You need to account for going out of index, e.g. where start = 0
        start_20_20 = seq[int(start)-20:int(start)+20]
    except IndexError:
        # do your alternatives e.g. start = int(start)

基因是否为GenBank格式,注释中显示了内含子/外显子边界,或者您是否试图通过序列分析确定边界?基因为GenBank格式。我试图找出如何通过“join{[0:229](+),[11680:11768](+),[11871:12135](+),[15277:15339](+),[16136:16416](+),[17220:17471](+),[17547:17671](+)”理想情况下,我希望得到每边的每个位置+/20bp。谢谢,但“join{[0:229](+)…”不是字符串。它是一个“位置”操作符。如果我将一个变量设置为等于它,然后循环遍历该变量,它会显示“join…”,然后,它将所有的数字合并在一起。这可能是biopython的特定情况,我可能跳得有点太深了…实际上,“join”部分是一个location\u操作符;您感兴趣的字符串是一个“location”你可以很容易地把它转换成一个带有STR(位置)的字符串,然后继续。你说的对,它太好了!一个很好的简单解决方案。我没有考虑把整个东西转换成一个字符串,然后从那里移动。我正试图用Pythython来进行它。谢谢!
for jct in jcts:
    (start,end) = jct.replace('[', '').replace(']', '').split(':')
    try:   # You need to account for going out of index, e.g. where start = 0
        start_20_20 = seq[int(start)-20:int(start)+20]
    except IndexError:
        # do your alternatives e.g. start = int(start)