python - 正则表达式匹配不适用于 Pyteomics 解析器的简单字符串

标签 python regex string dataframe match

我正在对人类蛋白质组进行计算机消化,这意味着我正在尝试在某个位置切割每种蛋白质的氨基酸序列。我正在使用 Pyteomics 解析器函数 Pyteomics Parser在我创建的一个更大的函数中。

我收到此错误: PyteomicsError:Pyteomics 错误,消息:“不是有效的 modX 序列:{'sequence': 'AKDEVQKN'}”

但是,我不确定 AKDEVQKN 为何与 modX_reqquence 编译器不匹配:

_modX_sequence = re.compile(r'^([^-]+-)?((?:[^A-Z-]*[A-Z])+)(-[^-]+)?$')

根据我对这个正则表达式的理解,它应该找到任何不以 (-) 开头且后跟一系列字母字符的字符串。

这是我尝试使用它的功能。

import re
import pyteomics
from pyteomics import fasta, parser
def ButcherShop(df, target, rule,min_length=7,exception=None,max_legnth=100, pH=2.0):
>     raw = df[target]
>     unique_peptides = set()
>     for peptide in raw:
>         new_peptides = parser.cleave(peptide, rule=rule,min_length=min_length,exception=exception)
>         unique_peptides.update(new_peptides)
>     print(f'Done,{len(unique_peptides)} sequences of >= 7 amino acids!')
>     pep_dic = [{'sequence': i} for i in unique_peptides]
>     for peptides in pep_dic:
>         pep_dic['parsed_sequence'] = parser.parse(peptides,show_unmodified_termini=False)
>         pep_dic['xlength'] = len(peptides)
>         pep_dic['charge'] = int(round(electrochem.charge(peptides, pH=pH)))
>         pep_dic['mass']=int(round(Peptide_mass(peptides)))
>     pep_dic = [peptide for peptide in pep_dic if peptide['length'] <= int(max_length)]
>     pep_df = pd.DataFrame.from_dict(pep_dic)
>     return unique_peptides,pep_dic,pep_df

感谢您提供有关如何解决此问题的任何见解。

** 更新:如果我在不同的集合上运行,我会收到相同的错误,这可能表明这是库本身的问题。

错误屏幕截图: Error

最佳答案

这里是 Pyteomics 维护者。

错误消息实际上告诉您问题的根源:PyteomicsError: Pyteomics error, message: "Not a valid modXequence: {'sequence': 'AKDEVQKN'}"

这意味着您传递的是字典{'sequence': 'AKDEVQKN'},而不是字符串'AKDEVQKN'。这实际上发生在这里:

pep_dic = [{'sequence': i} for i in unique_peptides]
for peptides in pep_dic:
    pep_dic['parsed_sequence'] = parser.parse(peptides,show_unmodified_termini=False)
    ...

您应该将序列本身传递给parse,而不是字典:

pep_dic['parsed_sequence'] = parser.parse(peptides['sequence'], show_unmodified_termini=False)

关于python - 正则表达式匹配不适用于 Pyteomics 解析器的简单字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66483290/

相关文章:

javascript - 在 Node js 中从字符串创建对象

python - 在 statsmodels 结果中使用 result.prsquared() 调用拟合优度值 TypeError : 'numpy.float64' object is not callable

python - 在 MacOS 上的 Emacs 中设置 PYTHONPATH?

python - 使用 R SOAP (SSOAP) 检索数据/抓取

python - 如何正确拆分此字符串列表?

r - 确定字符向量中与匹配向量 [R] 中的最大匹配数相匹配的位置

.net - 如何替换.net中最后一次出现的字符

python - 如何使用 AND 运算符过滤包含特定字符串值的行

regex - Coldfusion 替换 "&"但不是 htmlspecialchars

regex - 如何使用正则表达式匹配字符串中的第 n 次出现