Skip to content

Can I search without going through the Hub_zh

Weiheng Liao edited this page Nov 29, 2022 · 2 revisions

不通过Hub能否进行搜索?

当然可以!~

1 Hub模块:本模块为用户提供一站式使用patpat功能的类

Hub模块是patpat的核心模块,用户可以通过本模块中的类将patpat的其他类聚合在一起使用。 QueryHub类提供对蛋白质元数据的查询和需要检索肽段的生成功能,MapperHub类则提供多蛋白质组数据库合并检索和检索断点续传的功能。 其次,这两个类都是可拔插的,因此只要开发者遵守接口设计,很容易将自建的方法或类插入其中。

典型用法示例:

from patpat import hub
from patpat import mapper
from patpat import utility

utility.init()

identifier_ = 'P05067'

q = hub.QueryHub()
q.identifier = identifier_
q.simple_query()

m = hub.MapperHub(config=q.get_query_config(),
                  mappers=[mapper.PrideMapper(), mapper.IProXMapper()],
                  task=None
                  # task=[your task's uuid]
                  )

m.mapping()
result_ = m.export()

上述 Hub 模块的经典用法与快速上手中介绍的一致, 如果没有理解,请回去看看吧~

2 Retriever模块:包含与外部蛋白质组学数据库交互的类

Retriever模块的类使用了三层继承。首先,所有的子类都需要继承Retriever基类(1),其次,根据要针对的数据库,需要为该数据库创建一个基类(2), 最后,从该数据库收集指定数据的子类(3)需要继承该数据库的基类。例如,PRIDE数据库的基类名为GenericPrideRetriever(2), 它继承了Retriever基类(1),从PRIDE收集蛋白质信息的子类名为PrideProteinRetriever(3)

典型用法示例:

2.1 通过蛋白质识别符在PRIDE数据库中搜索符合条件的PSM

from patpat import logger
from patpat import retriever

# Logger module for testing, with console output available through TestLogger when using other modules alone
l = logger.TestLogger()

r = retriever.PrideProteinRetriever()
r.request_word = "Q9CWY9"
r.get_payloads_on_web()
r.payloads["pageSize"] = 200  # Optional: The parameters can be modified
r.retrieve()

output = r.response

2.2 通过肽段序列在PRIDE数据库中搜索符合条件的PSM

from patpat import logger
from patpat import retriever

# Logger module for testing, with console output available through TestLogger when using other modules alone
l = logger.TestLogger()

r = retriever.PridePeptideRetriever()
r.request_word = 'TCVADESAENCDK'
r.get_payloads_on_web()
r.retrieve()

output = r.response

2.3 通过数据集编号在iProX数据库中获取元数据

from patpat import retriever

r = retriever.IProXProjectRetriever()
r.request_word = 'PXD006512'
r.retrieve()

output = r.response  

不难看出,自动化获取信息的关键有两个

  • 获取需要查询的肽段序列和数据集编号(Querier模块)
  • 流程化调用retriever类(Mapper模块)

接下来,让我们看看Mapper模块该怎么用!

3 Mapper模块:调用retriever模块并实现检索功能

Mapper模块根据面向数据库的不同构建不同的类,每个类自行调用对应的retriever实现搜索。通过protein/peptide retriever实现蛋白质/肽段水平的检索, 在通过project retriever实现蛋白质对项目的映射。此外,每个类也需要实现其他功能:

  • 过滤功能,以去除错误的映射;
  • 导出功能,结构化检索结果,以供下游模块调用。

典型用法示例:

from patpat import hub
from patpat import mapper
from patpat import utility

utility.init()
utility.initiate_uniprot_proteome_catalog()

identifier = 'E9PV96'
q = hub.QueryHub()
q.identifier = identifier
q.simple_query()

conf = q.get_query_config()

m = mapper.PrideMapper()

# Add configs
m._identifier = conf['identifier']
m._peptides = conf['peptides']
m._organism = conf['organism']

m.mapping()
m.filtering()

output = m.export()

4 Querier模块:该模块用于建立需要检索的配置信息

完成映射所需要的配置信息有蛋白质的元数据和需要检索的肽段序列。 必要的蛋白质元数据有:蛋白质识别符、蛋白质所属物种或组织、蛋白质序列,其中蛋白质序列用于产生需要检索的肽段序列。

典型用法示例:

from patpat import querier

p1 = querier.UniProtProteinQuerier()
p1.identifier = 'E9PV96'
p1.query()
_, organism_, fasta_ = p1.get_properties()

p2 = querier.LocalPeptideQuerier()
p2.set_params(sequence=fasta_['sequence'],
              organism=organism_)
p2.query()
digestion_params_, source_, filtered_peptides_ = p2.get_properties()

5 Logger模块:日志记录器模块

CoreLogger用于生成日志和搜索临时文件,建议配合hub.py和viewer.py使用。

典型用法示例:

from patpat import logger

uuid = ''

l = logger.CoreLogger(uuid)
l.set_core()
l.set_tmp()

6 Checker模块:此模块用于确认外部蛋白质组学数据库的连通性

典型用法示例:

from patpat import checker
from patpat import retriever

c = checker.Checker()
c.peptide_retrievers = [
    retriever.PridePeptideRetriever(),
    retriever.IProXPeptideRetriever()
]
c.check()

结语

意犹未尽吗?开始了解如何扩展 Patpat 吧!

Clone this wiki locally