小编use*_*646的帖子

胰蛋白酶消化(切割)不能使用正则表达式

我试图在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)

python

7
推荐指数
2
解决办法
3570
查看次数

写入文件

我一直在尝试写一个文件,但它一直用逗号和两端的方括号写在一行上.如何在没有方括号,逗号和换行符的情况下为文件的每一行或每行写入文件.第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)

谢谢你的贡献.

python

2
推荐指数
1
解决办法
4566
查看次数

如何从第一列的句点后删除第二个和其余数字?

如何从第一列中删除第二个和其余数字?
例如,

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

0
推荐指数
1
解决办法
114
查看次数

查找列表中的数字对,最多可添加10个

给定一个数字列表,我想找到所有数字对,加起来为10.

如何在Python中编写一个函数来执行此操作?

python

0
推荐指数
1
解决办法
1649
查看次数

标签 统计

python ×4