BioCyc Database
biocyc.Rmd
这里使用 E. coli 作为示例,展示如何调用 BioCyc 进行富集分析。
建立会话
使用 biocyc.org
需要登录,因此需要首先建立会话(biocyc_session()
)。这个会话会保存用户的登录信息,并用于后续的调用。这里使用了环境变量中的用户名和密码进行登录。为了避免密码泄露,建议将用户名和密码保存在环境变量中,而不是直接在代码中写明。
session = biocyc_session(
Sys.getenv("BIOCYC_USERNAME"),
Sys.getenv("BIOCYC_PASSWORD")
)
获取所有基因
biocyc_get_all()
函数用于获取指定物种的所有基因。这里以
E. coli 为例。获取基因实际上是拷贝了一个包含所有基因的 Smart
Table。
# 获取所有基因
all_genes = biocyc_get_all(
session = session,
orgid = "ECOLI",
type = "Genes"
)
all_genes
创建智能表
biocyc_create_smart_table()
函数用于创建智能表。这里创建了一个包含前 30 个基因 ID 的 Smart
Table,并返回了该 Smart Table 的 ID。
# 创建智能表
selected_genes = all_genes[[1]][1:30]
smart_table_id = biocyc_create_smart_table(
session = session,
orgid = "ECOLI",
type = "Genes",
values = selected_genes
)
获取智能表
biocyc_get_smart_table()
函数用于获取智能表。这里获取了刚刚创建的智能表,并将其格式设置为
TSV。现在的 Smart Table 中可能只有一个列,即 ID 列。
smart_table = biocyc_get_smart_table(
session = session,
table_id = smart_table_id,
format = "tsv"
)
smart_table
运行富集分析
将 Smart Table 中保存的基因提交,进行富集分析。富集分析会生成一个新的 Smart Table。并在这个新生成的 Smart Table 中保存富集到的代谢通路或 GO 条目。
enrichment_result_id = biocyc_enrichment(
session = session,
method = "GET",
table_id = smart_table_id,
key = "enrich-genes-pwys",
type = "enrichment",
threshold = 0.1,
statistic = "fisher-exact",
correction = "none"
)
enrichment_result = biocyc_get_enrichment_result(
session = session,
enrichment_result_id = enrichment_result_id
)
enrichment_result
添加属性列
所有新建的 Smart Table 默认只有一列,即 ID 列。为了给 Smart Table
中加入更多有用的信息,用户可以使用
biocyc_add_property_column()
函数为 Smart Table
添加更多的列。
# 添加属性列
biocyc_add_property_column(
session = session,
table_id = enrichment_result_id,
property_id = c("COMMON-NAME", "REACTION-LIST"),
index = 0
)
# 重新获取富集分析结果
enrichment_result2 = biocyc_get_enrichment_result(
session = session,
enrichment_result_id = enrichment_result_id
)
# 新获取的富集分析结果中已经添加了属性列
enrichment_result2
或者使用 biocyc_transform()
函数对 Smart Table
进行转换。将 pathway 中包含的基因添加到 Smart Table
中。通路中包含的多个反应或者基因之间使用 //
分隔。
# 将 pathway 中包含的基因添加到 Smart Table 中
biocyc_transform(
session = session,
table_id = enrichment_result_id,
transform_id = "pwy-genes",
index = 0
)
# 重新获取富集分析结果
enrichment_result3 = biocyc_get_enrichment_result(
session = session,
enrichment_result_id = enrichment_result_id
)
# 新获取的富集分析结果中已经添加了 pathway 中包含的基因
enrichment_result3
transform_id
是转换操作的唯一标识符。用户可以通过软件包内置的数据集
transformations
获取所有可用的转换操作。下面是针对 pathway
所有可以使用的转换操作。
# 查看针对 pathway 所有可以使用的转换操作
transformations |> dplyr::filter(stringr::str_detect(id, "pwy"))
也可以针对 selected gene 进行转换,获取更多信息。
# 查看针对 gene 所有可以使用的转换操作
transformations |> dplyr::filter(stringr::str_starts(id, "gene"))
# 添加 gene accession,transcriptional regulator,pathway,reaction 列
biocyc_transform(
session = session,
table_id = smart_table_id,
transform_id = "gene-accession",
index = 0
)
biocyc_transform(
session = session,
table_id = smart_table_id,
transform_id = "gene-tfs",
index = 0
)
biocyc_transform(
session = session,
table_id = smart_table_id,
transform_id = "gene-pwys",
index = 0
)
biocyc_transform(
session = session,
table_id = smart_table_id,
transform_id = "gene-rxns",
index = 0
)
smart_table2 = biocyc_get_smart_table(
session = session,
table_id = smart_table_id,
format = "tsv"
)
smart_table2
查看并添加与 gene 相关的列。
properties |> dplyr::filter(stringr::str_detect(description, "gene"))
# 添加 common-name,product,accession-1,names,last-update,regulated-by 列
biocyc_add_property_column(
session = session,
table_id = smart_table_id,
property_id = c("common-name", "product", "accession-1", "names", "last-update", "regulated-by")
)
smart_table3 = biocyc_get_smart_table(
session = session,
table_id = smart_table_id,
format = "tsv"
)
smart_table3
删除富集分析结果
使用 biocyc_delete_smart_table()
函数删除 Smart
Table。富集结果也是一个 Smart Table,因此也可以使用该函数删除。
# 删除富集分析结果
biocyc_delete_smart_table(
session = session,
table_id = enrichment_result_id
)
# 删除智能表
biocyc_delete_smart_table(
session = session,
table_id = smart_table_id
)