我试图在Python中编码蛋白质序列的理论性胰蛋白酶切割.胰蛋白酶的切割规则是:在R或K之后,但不在P之前(即胰蛋白酶在每个K或R之后切割(切割)蛋白质序列,除非(K或R)之后是P).
例子:序列的切割(切割)MVPPPPSRGGAAKPGQLGRSLGPLLLLLRPEEPEDGDREICSESK应产生这4个序列(肽):
MVPPPPSR
GGAAKPGQLGR
SLGPLLLLLRPEEPEDGDR
EICSESK
Run Code Online (Sandbox Code Playgroud)
注意,在第二肽中K后没有裂解(因为P在K之后出现)并且在第三肽中R之后没有裂解(因为P在R之后出现).
我用Python编写了这段代码,但效果不好.有没有办法更有意义地实现这个正则表达式?
# Open the file and read it line by line.
myprotein = open(raw_input('Enter input filename: '),'r')
if os.path.exists("trypsin_digest.txt"):
os.remove("trypsin_digest.txt")
outfile = open("trypsin_digest.txt",'w+')
for line in myprotein:
protein = line.rstrip()
protein = re.sub('(?<=[RK])(?=[^P])','', protein)
for peptide in protein:
outfile.write(peptide)
print 'results written to:\n', os.getcwd() +'\ trypsin_digest.txt'
Run Code Online (Sandbox Code Playgroud)
这就是我让它为我工作的方式
myprotein = open(raw_input('Enter input filename: '),'r')
my_protein = []
for protein in myprotein:
myprotein = protein.rstrip('\n')
my_protein.append(myprotein)
my_pro = (''.join(my_protein))
#cleaves sequence
peptides = …Run Code Online (Sandbox Code Playgroud) 我一直在尝试写一个文件,但它一直用逗号和两端的方括号写在一行上.如何在没有方括号,逗号和换行符的情况下为文件的每一行或每行写入文件.第6列必须按降序排列.
这是以下代码的输出:
[NP_001026855.1, N, 1, YES, 96.4765%, 0.9823825] [NP_597716.1, D, 1, YES, 96.2573%, 0.9812865]
Run Code Online (Sandbox Code Playgroud)
这是我的代码.
lines = open("file.txt", "r").readlines()
outfile = open("file2.txt",'w+')
lines = [x.split() for x in lines]
lines.sort(key=lambda x:x[5], reverse=True)
for i in lines:
outfile.writelines(i)
Run Code Online (Sandbox Code Playgroud)
所需的输出应为:
NP_001026855.1 N 1 YES 96.4765% 0.9823825
NP_597716.1 D 1 YES 96.2573% 0.9812865
Run Code Online (Sandbox Code Playgroud)
谢谢你的贡献.
如何从第一列中删除第二个和其余数字?
例如,
HP_000083.21423 N -1 NO 99.8951% 0.000524499999999983
NP_075561.1_1908 N -1 NO 99.9697% 0.000151499999999971
Run Code Online (Sandbox Code Playgroud)
我想从"NP_075561.1_1908"中删除"_1908"
和"1423来自"HP_000083.21423"
不从后续列中删除其他项目.
预期的行将是:
HP_000083.2 N -1 NO 99.8951% 0.000524499999999983
NP_075561.1 N -1 NO 99.9697% 0.000151499999999971
Run Code Online (Sandbox Code Playgroud)
这是我的代码:你们中的一些人过去曾提供过这个解决方案的一部分.
for line in fname:
line = re.sub('[\(\)\{\}\'\'\,<>]','', line)
line = re.sub(r"(\.\d+)_\d+", r"\1", line)
fields = line.rstrip("\n").split()
outfile.write('%s %s %s %s %s %s\n' % (fields[0],fields[1],fields[2],fields[3],fields[4],(fields[5])))
Run Code Online (Sandbox Code Playgroud)
先谢谢你们,干杯,
python ×4