解析文件并匹配序列号(python)
我目前有一个文件中的基因列表。每行都有一个带有信息的染色体。这样的条目出现为:
NM_198212 CHR7 + ** 115926679 ** ** ** ** 115935830 ** 115927071 115933344 2*115926679*,'115933260
染色体的序列始于基础** 115926679 **,并继续(但不包括)基地** 115935830 **
如果我们想要剪接的序列,我们使用外显子。第一个从
*115926679*到*155927221*,第二个从'115933260'到'115935830'
但是,当按照以下互补序列(例如:
NM_001005286 CHR1- ** 245941755 ** *** *** 245942680 *** 245941755 245942680 1*245941755*,'245942680'
由于第3列是' - ',因此这些坐标是指抗沉思链(对链的补体)。第一碱(以粗体为单位)匹配感官链(斜体)上的最后一个底座。由于该文件仅具有感官支架,因此我需要尝试将反沉积链上的坐标转换为感官链,挑选正确的序列,然后将其反向汇编。
就是说,我只编程了大约半年,并且不确定如何开始这样做。
我写了一个正则表达:
'(nm_ \ d+)\ s+(chr \ d+)([((\+)|( - )])\ s+(\ d+)\ s+(\ d+)\ s+(\ d+) s+(\ d+)\ s+(\ d+),(\ d+),s+(\ d+),(\ d+),'
但是现在不确定如何启动此功能...
如果有人可以帮助我开始这件事,也许让我看看如何做到这一点,我会非常感谢。
好:假设这是Chromsome 25:
AAAAAAAAAACCCCCCCCCCTTTTTTTTTTGGGGGGGGGG
(每个字符有10个)。
现在:如果我正在寻找一个未填充的基因:
chr25 + 10 20
然后,基因从位置10开始(从0开始)开始,但不包括位置20。因此,它:
CCCCCCCCCC
这很简单。它非常匹配python string切片。
如果我给你,那就更令人困惑:
chr25-10 20
您拥有的是积极的链。但是该基因是负(互补)链的。记住染色体看起来像一条链的样子:
AAAAAAAAAACCCCCCCCCCTTTTTTTTTTGGGGGGGGGG
TTTTTTTTTTTTTTTGGGGGGGGGGGGGGAGAAAAAAAAAAAAAAAAACCCCCCCCCC
我们正在寻找底链的基因。这意味着我们从右边从0开始计数。从左侧和右侧的底线编号。所以我想要的是aaaaaaaaaa。
捕获是,我只给您顶级链。我没有给你底线。 (您可以从顶部链中产生自己,但是鉴于它的大小有多大,我建议您反对。)
因此,您需要转换坐标。在底部链上,底座0(最右C)与顶部链的基部39相对。基数1反对基本38。基本2反对案例37。
所以:如果我想在底部链上找到10-20的基础,我可以厕所 k在顶部的基部20-29处(然后将其反向组合)。
我需要弄清楚如何将底线上的坐标转换为底链上的等效坐标。是:这很困惑
我努力了:
fields = line.split('\ t')
Geneid,chr,strand = fields [:2]
start = int(字段[3])
end = int(字段[4])
如果strand ==' - ':
开始,结束=结束,开始
这是正确的轨道,但是还不够。这将需要10和20,然后将其变成20和10。
而且我知道我可以这样做:
r = s [:: - 1]
bc = {'a':'t','c':'g','g':'c','t':'a'}
l =列表(r)
o = [BC [base] base in l]
返回''.join(o)
但是,从这里我迷路了。