python - 在 UniProt 的正则表达式搜索中添加蛋白质代码作为标识符

标签 python regex bioinformatics

我已经从 UniProt 获取了包含我感兴趣的蛋白质序列的关闭文件,现在我希望从文件中提取/保存跨膜区域的位置。

文件看起来像这样


O75581  UniProtKB   Topological domain  1394    1613    .   .   .   Note=Cytoplasmic;Ontology_term=ECO:0000255;evidence=ECO:0000255 

O75581  UniProtKB   Repeat  63  106 .   .   .   Note=LDL-receptor class B 1 

P13688  UniProtKB   Transmembrane   429 452 .   .   .   Note=Helical;Ontology_term=ECO:0000255;evidence=ECO:0000255 

P13688  UniProtKB   Topological domain  453 526 .   .   .   Note=Cytoplasmic;Ontology_term=ECO:0000255;evidence=ECO:0000255 

P13688  UniProtKB   Domain  35  142 .   .   .   Note=Ig-like V-type;Ontology_term=ECO:0000250;evidence=ECO:0000250|UniProtKB:P31997 

P19022  UniProtKB   Transmembrane   725 745 .   .   .   Note=Helical;Ontology_term=ECO:0000255;evidence=ECO:0000255 

.....

为了提取跨膜区域的位置和相应的起始结束位置,我使用了以下代码

found = []
match = re.compile('(Transmembrane)'"\t"'(\w*)'"\t"'(\w*)')
with open("997_from uniprot.gff", "r") as f:
    searchlines = f.readlines()
j=len(searchlines)-1 
for i, line in enumerate(searchlines): 
    found.extend(match.findall(line))

col_Names=["location", "Start", "End"]
domain_position = pd.DataFrame(found,columns=col_Names)
domain_position.head()

这给出了期望的结果。

+---+----------------+--------+-----+ | |地点 |开始|结束 | +---+----------------+--------+------+ | 0 |跨膜 | 1371 | 1371 1393 | 1393 | 1 |跨膜 | 429 | 429 452 | 452 | 2 |跨膜| 725 | 725 745 | 745 | 3 |跨膜| 646 | 646 668 | 668 | 4 |跨膜 | 324 | 324 344 | 344 +---+----------------+--------+------+

现在我希望在生成的表的每一行上添加蛋白质标识符,并且我知道 re.compile = '^(.*?)[ ]' 给出了该行的第一个单词,但我不确定如何将其放入我的代码中而不提取不需要的行?

最佳答案

您可以将正则表达式修改为

match = re.compile('^(\S+).*?(Transmembrane)\t(\w*)\t(\w*)')
                    ^^^^^^^^^ 

^(\S+).*? 将匹配并捕获字符串中的第一个非空白 block ,并尽可能少地匹配除换行符之外的任何 0+ 个字符,最多后续模式第一次出现的位置。

请参阅regex demo .

注意:如果需要,请放回引号,问题中显示的您的输入没有引号。

然后,您只需添加该列:

col_Names=["proteinID", "location", "Start", "End"]

关于python - 在 UniProt 的正则表达式搜索中添加蛋白质代码作为标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59886001/

相关文章:

javascript - 替换字符串的一个字符

python-3.x - 修复将空列表分配给值 "DNA_Sequence"时出现的错误

将 SNP 映射到 CDS 的 Python 脚本

python - 函数输出不显示任何内容,Python

Python + 正则表达式 + 将模式替换为该模式的多个副本

python - Django:在模板中访问 OneToOneField

Python Pandas 数据帧移位在应用函数中不起作用

python - 使用Python中的内置函数查找3D距离

php - 按模式修剪字符串的结尾(正则表达式?)

regex - 描述 {0,1} 语言且没有交替 0 的正则表达式