- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图用 Python 编写理论上的蛋白质序列胰蛋白 enzyme 切割代码。胰蛋白 enzyme 的切割规则是:在 R 或 K 之后,但不在 P 之前。(即胰蛋白 enzyme 在每个 K 或 R 之后切割(切割)蛋白质序列,除非(K 或 R)后跟 P)。
示例:序列 MVPPPPSRGGAAKPGQLGRSLGPLLLLLRPEEPEDGDREICSESK
的切割(切割)应产生以下 4 个序列(肽):
MVPPPPSR
GGAAKPGQLGR
SLGPLLLLLRPEEPEDGDR
EICSESK
请注意,第二个肽中的 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'
这就是我让它为我工作的方式
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 = re.sub(r'(?<=[RK])(?=[^P])','\n', my_pro)
print peptides
蛋白质序列:
MVPPPPSRGGAAKPGQLGRSLGPLLLLLRPEEPEDGDREICSESKMVPPPPSRGGAAKPGQLGRSLGPLLLLLRPEEPEDGDREICSESKMVPPPPSRGGAAKPGQLGRSLGPLLLLLRPEEPEDGDREICSESK
输出(胰蛋白 enzyme 切割位点)或肽
MVPPPPSR
GGAAKPGQLGR
SLGPLLLLLRPEEPEDGDR
EICSESK
MVPPPPSR
GGAAKPGQLGR
SLGPLLLLLRPEEPEDGDR
EICSESK
MVPPPPSR
GGAAKPGQLGR
SLGPLLLLLRPEEPEDGDR
EICSESK
最佳答案
正则表达式很好,但这里有一个使用常规 python 的解决方案。既然你是在碱基中寻找子序列,将其构建为生成器是有意义的,产生片段。
example = 'MVPPPPSRGGAAKPGQLGRSLGPLLLLLRPEEPEDGDREICSESK'
def trypsin(bases):
sub = ''
while bases:
k, r = bases.find('K'), bases.find('R')
cut = min(k, r)+1 if k > 0 and r > 0 else max(k, r)+1
sub += bases[:cut]
bases = bases[cut:]
if not bases or bases[0] != 'P':
yield sub
sub = ''
print list(trypsin(example))
关于python - 胰蛋白 enzyme 消化(裂解)不能使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168727/
我试图用 Python 编写理论上的蛋白质序列胰蛋白 enzyme 切割代码。胰蛋白 enzyme 的切割规则是:在 R 或 K 之后,但不在 P 之前。(即胰蛋白 enzyme 在每个 K 或 R
我正在消化其他一些 zip 文件的内容以生成 MD5。文件内容被摘要并生成 MD5,而不是例如基于时间戳生成 MD5。因此,我断言两个文件具有相同的内容,即使它们是在不同时间生成的。因此,我编写了以下
我是一名优秀的程序员,十分优秀!