Skip to content
Weiheng Liao edited this page Dec 3, 2022 · 3 revisions

常见问题及其回答

欢迎来到问答页,希望能解决您的问题!


如何检查Patpat与外部数据库的连接性?

1. 测试单个数据库的连通性

尝试使用patpat.checker模块。以PRIDE数据库为例,使用patpat.checker.PrideChecker类:

from patpat import checker

c = checker.PrideChecker()
m = c.check()

如果 Patpat 与 PRIDE 数据库连接正常,则会返回patpat.mapper.PrideMapper(),否则返回None

2. 测试Patpat所支持的全部数据库的连通性

hub模块中的CheckHub类,整合了Patpat支持的checker.<databse>Checker

from patpat import hub

c = hub.CheckerHub()
t = c.check()

同上,hub.CheckerHub().check()将返回一个列表,包含与 Patpat 连接正常的数据库Mapper

不难看出,Checker类的设计也遵循工厂模式。


Patpat到底输出什么?该如何查看?

Patpat作为数据集搜索框架,输出的是数据集元数据。 在快速上手-通过 MapperHub 搜索数据集的末尾 我们提到Patpat的搜索结果被保存在patpat_envs/result/<task_uuid>中,但描述的并不是很详细,在此和我们的用户说一声抱歉!

以下是Patpat的输出文件结构:

patpat_env/
    |-- result/
        |-- <task_uuid>
            |-- result.tsv
            |-- result.json
            

可见,Patpat是以.json.tsv格式作为输出。大家肯定不会满足这个答案,接下来我将详细介绍这两个文件包含什么信息。

1. result.tsv

简单来说,result.tsv的内容是result.json的子集,是由result.json再格式化而来的,方便用户直接进行查看和筛选的文件。 result.tsv中每一行保存着一个项目结果三个的信息:标题、摘要、网址。其中,用户可通过网址直接访问该项目在公开数据库中的页面。

.tsv是以表格结构储存数据的文本格式文件,详情请见 WiKi, 大多数表格编辑软件都提供支持,如Microsoft Excel等。

2. result.json

.json是“属性-值”结构的文件,很容易字符串化,详情请见 WiKi

result.json中的"<Database name>"是由用户选择的Mapper类决定的,换句话说,搜索几个数据库就有几个数据库结果,很直观对吧~ 另外,对于各个项目的属性则是由所属数据库决定的,信息丰度并不由Patpat保证。但是,有几个属性则是Patpat构建的

  • summary:项目摘要
  • website:项目网址
  • protein:蛋白质水平搜索数据库获得的映射
  • peptides:肽段水平搜索数据库获得的映射

result.json的内容结构如下:

  {
  "<Database name>": 
      {"<Project id>":
          {"attr1": "value1",
           "attr2": "value2",
           ...
           "attrN": "valueN",
          }
       "<Project id>":
          {
          ...
          }
       ...
      }
  "<Database name>":
      {"<Project id>":
       ...
      }
  ...
  },

有点抽象!让我们看一个例子:

  {"iProX": 
      {"PXD006512":
          {"title": "Proteomics identifies new therapeutic targets of early-stage hepatocellular carcinoma".
           "summary": "Hepatocellular carcinoma (HCC) accounts for approximately 90% of primary liver cancers, the...
           ...
          }
        ...
      }
   ...
  }

有点晕!该怎么使用result.json呢?Patpat提供内建函数

import os
from patpat import utility

os.chdir(os.path.dirname('~/patpat_envs'))  # choose the run directory as the parent directory of Patpat_envs

uuid = '<uuid>'
t = utility.get_result_from_file(task=uuid)

print(t)

Clone this wiki locally