这可能是一个非常简单的问题,但我希望有人可以为我提供快速有效的答案......我正在尝试将染色体数据输入数据库,同时稍微改变格式。目前的数据如下:
chrom = chr1
txStart = 134212702
exonCount = 8
exonStarts = 134212702,134221529,134222782,134224273,134224707,134226534,134227135,134227897,
exonEnds= 134213049,134221650,134222806,134224425,134224773,134226654,134227268,134229870,
我正在创建一个包含所有上述数据的数据库,包括启动子、外显子和内含子位置的信息。每组数据(来自单行,例如上面的示例)将对应于单个转录本。我将启动子定义为 txStart(例如 134212702)- 2000。然后每个转录本都有一组外显子数量,如外显子计数(例如 8)中所指定。较大转录本中每个外显子的开始和结束由 exonStarts 和 exonEnds 列表中的匹配值指定。例如,在这种情况下,第一个外显子的范围从 134212702 到 134213049。内含子位于外显子之间,因此第一个外显子将从 134213050 到 134221528。我成功地完成了这项工作:
PromoterStart = int(TxStart) - 2000
PromoterEnd = int(TxStart) -1
ExonStart = map(int, ExonStart[:-1].split(","))
ExonEnd = map(int, ExonEnd[:-1].split(","))
i = 0
while i < int(ExonCount):
ExonCount = i +1
if i != int(ExonCount) -1:
IntronStart[i] = ExonEnd[i] +1
IntronEnd[i] = ExonStart[i+1] -1
i += 1
使用这种方法,我将所有数据插入数据库以供以后比较。我现在想使用从 TxStart -2000 到 TxStart + 2000 的启动子定义重新进行此分析。但是,似乎使用此代码的外显子和启动子之间有大量重叠,只需将启动子结束更改为 = int (TxStart) +2000,大大减慢了我的下游分析。我想找到一种方法,如果一个区域被认为是从 txStart -2000 到 txStart +2000 的启动子,则该区域不会被视为外显子区域。