CellphoneDB工具通过利用我们的CellphoneDB数据库中与单细胞转录组数据交互的分子,提供不同的方法来评估不同细胞类型之间的细胞间通讯。
v5 的新特性
- 新的Python包,可以轻松在Jupyter Notebook和Collabs中执行。
- 基于相互作用伙伴表达特异性的评分方法。
- 一个基于受体下游转录因子活性的CellSign模块。该模块包含211个描述良好的受体-转录因子直接关系。
- 一种新的查询CellphoneDB结果的方法
search_utils.search_analysis_results
。 - 运行CellphoneDB的教程(可在这里找到)。
- 提高了方法2
cpdb_statistical_analysis_method
的计算效率。 - 一个新的数据库(cellphonedb-data v5.0)包含更多手动整理的相互作用,总计约3,000个相互作用。本次发布的CellphoneDB数据库有三个主要变化:
- 集成了新的手动审查的细胞间通讯作用。
- 包含作为配体的非蛋白质分子。
- 对于具有明确信号方向性的相互作用,按照伙伴A(配体)和伙伴B(受体)的顺序排序。
- 相互作用已在信号通路中分类。
- CellphoneDB不再从外部资源导入相互作用,以避免包含低可信度的相互作用。
查看以前版本的更新。
安装
我们强烈建议使用隔离的Python环境(如步骤1和2中所述)使用conda或virtualenv,但您当然可以省略这些步骤,立即通过pip
安装。
-
创建python=>3.8环境
- 使用conda:
conda create -n cpdb python=3.8
- 使用virtualenv:
python -m venv cpdb
- 使用conda:
-
激活环境
- 使用conda:
conda activate cpdb
- 使用virtualenv:
source cpdb/bin/activate
- 使用conda:
安装CellphoneDB
pip install cellphonedb
-
为Jupyter notebooks设置内核。
- 安装ipython内核:
pip install -U ipykernel
。 - 将环境添加为jupyter内核:
python -m ipykernel install --user --name 'cpdb'
。 - 打开/启动Jupyter并选择创建的内核。
- 安装ipython内核:
-
下载数据库。
- 按照这个教程。
注意:适用于Python v3.8或更高版本。如果您的默认Python解释器是
v2.x
(可以通过python --version
检查),则应将对python
/pip
的调用替换为python3
/pip3
。
分析与方法
运行CellphoneDB有三种方法,每种方法都会生成特定的输出:
方法1 简单分析(>= v1):在这里,不执行统计分析。CellphoneDB将输出每个细胞类型对组合的所有相互作用的平均值。请注意,只有当相互作用的所有基因成员在细胞类型中至少由一部分细胞表达时(
threshold
),CellphoneDB才会报告平均值。如果未满足条件threshold
,则在相应的细胞类型对中将忽略该相互作用。方法2 统计分析(>= v1):这是一个统计分析,评估数据集中所有可能发生的相互作用的显著性:即在所有潜在的细胞类型对之间。CellphoneDB使用经验洗牌计算哪些配体-受体对显示出显著的细胞类型特异性。具体来说,它通过随机置换所有细胞的簇标签来估计相互作用簇中平均配体和受体表达的均值的无效分布。计算给定受体-配体复合物的细胞类型特异性的P值是基于均值等于或高于实际均值的比例。
-
方法3 degs分析(>= v3):此方法是统计推断方法的替代方案。此方法允许用户设计更复杂的比较,以检索特定细胞类型的相互作用。这在研究问题超出“一个”细胞类型与“其余”的比较时尤为重要。替代对比的示例包括分层比较(例如,您对特定谱系感兴趣,例如上皮细胞,并希望识别该谱系内表达变化的基因)或比较疾病与对照(例如,您希望通过将其与对照T细胞进行比较,识别疾病T细胞中上调的基因)。对于此CellphoneDB方法(
cpdb_degs_analysis_method
),用户提供一个输入文件(命令中的test_DEGs.txt
)指示哪些基因对某个细胞类型是相关的(例如,标记基因或由差异表达分析(DEG)产生的显著上调基因)。CellphoneDB将选择以下相互作用:- 相互作用中的所有基因在相应细胞类型中由超过10%的细胞表达(
threshold = 0.1
),并且 - 至少一个基因-细胞类型对在提供的
DEG.tsv
文件中。
- 相互作用中的所有基因在相应细胞类型中由超过10%的细胞表达(
用户可以使用其首选工具(我们为Seurat和Scanpy用户提供了notebooks)识别标记基因或DEG,并通过text file将信息输入CellphoneDB。
方法1. 检索相互作用表达均值
使用此简单的analysis
方法,不进行显著性分析。此选项将输出每个细胞类型对中每个相互作用的均值。简单相互作用的均值通过平均相应生产细胞中所有基因参与者的表达来计算。对于涉及多亚基异质复合物的相互作用,我们使用表达最低的复合物成员。
[图片上传失败...(image-bb4dfe-1719581313690)]
仅包含由特定簇中超过一部分细胞(threshold
默认值为0.1,即10%)表达的受体和配体的相互作用。如果其中一个基因参与者的表达少于10%的细胞,我们通常不会认为该相互作用是可行的(用户可以修改此部分threshold
)。
- 示例命令:
from cellphonedb.src.core.methods import cpdb_analysis_method
cpdb_results = cpdb_analysis_method.call(
cpdb_file_path = cellphonedb.zip,
meta_file_path = test_meta.txt,
counts_file_path = test_counts.h5ad,
counts_data = 'hgnc_symbol',
output_path = out_path)
- 输出:在不运行受体-配体相互作用的统计推断的情况下,只生成
means.csv
和deconvoluted.csv
。
方法2. 相互作用特异性的统计推断
使用此statistical_analysis
方法,我们基于一种细胞类型表达的受体和另一种细胞类型表达的配体,预测两种细胞类型之间富集的受体-配体相互作用,以scRNA-seq数据为基础。为了识别细胞类型之间最相关的相互作用,我们寻找细胞类型特异性相互作用。
重要的是:
- 只有在特定簇中由超过用户指定阈值百分比的细胞表达的受体和配体(
threshold
默认值为0.1)才会被测试,并在significant.txt
输出中获得均值。 - 对于多亚基异质复合物,我们要求:
- 复合物的所有亚基由一定比例的细胞(
threshold
)表达,然后 - 我们使用表达最低的复合物成员来计算相互作用均值并执行随机洗牌。
- 复合物的所有亚基由一定比例的细胞(
然后,我们在所有细胞类型之间进行成对比较。首先,我们随机置换所有细胞的簇标签(默认为1,000),并确定簇中受体的平均表达水平和相互作用簇中配体的平均表达水平的均值。对于每个受体-配体对在两种细胞类型之间的每个成对比较,这会生成一个无效分布。通过计算均值等于或高于实际均值的比例,我们获得了给定受体-配体复合物的细胞类型特异性的p值。然后,我们根据显著对的数量优先考虑在细胞类型之间高度富集的相互作用,以便用户可以手动选择生物学上相关的相互作用。
- 示例命令:
from cellphonedb.src.core.methods import cpdb_statistical_analysis_method
cpdb_results = cpdb_statistical_analysis_method.call(
cpdb_file_path = cellphonedb.zip,
meta_file_path = test_meta.txt,
counts_file_path = test_counts.h5ad,
counts_data = 'hgnc_symbol',
output_path = out_path)
- 输出:除了方法1中的输出外,还生成具有显著相互作用值的
pvalues.csv
和significant_means.csv
文件。在最后一个文件中,受体-配体对根据其在细胞群体中的显著P值总数进行排名。
细胞子抽样以加速分析(可选方法2)
随着技术发展和协议改进,单细胞RNA测序数据集的规模呈指数级增长。大规模数据集可以分析数十万个细胞,这对现有的分析方法在内存使用和运行时间方面提出了挑战。为了提高我们协议的速度和效率,并促进其广泛应用,我们集成了Hie et al. 2019(PMID: 31176620)中描述的几何素描子抽样方法。该方法旨在通过较小的细胞子集来保持数据集内的转录异质性。子抽样步骤是可选的,用户可以对所有细胞进行分析,也可以选择其他子抽样方法。
或者,用户可以使用其首选方法对细胞进行下采样,并将下采样后的数据输入CellphoneDB。我们建议用户下采样数据集以均衡每种细胞类型的贡献(即每种细胞类型的细胞数)。这将确保无效分布在所有细胞类型中均匀代表(即不偏向于具有较大细胞数量的细胞类型)。
方法3. 检索差异表达的相互作用
使用此方法3degs_analysis
,用户可以检索其基因参与者在相应的细胞类型对中表达且至少有一个基因参与者差异表达(由用户提供的列表)的相互作用。更具体地说,此方法将检索如下相关的相互作用:
- 相互作用中的所有基因在相应细胞类型中由超过10%的细胞表达(
threshold = 0.1
) - 至少一个基因-细胞类型对在提供的
DEG.tsv
文件中。
相关/选择的相互作用将在relevant_interactions.txt
文件中标记为1,并在significant_means.csv
文件中获得均值。
- 示例命令:
from cellphonedb.src.core.methods import cpdb_degs_analysis_method
cpdb_results = cpdb_degs_analysis_method.call(
cpdb_file_path = cellphonedb.zip,
meta_file_path = test_meta.txt,
counts_file_path = test_counts.h5ad,
degs_file_path = degs_file.txt,
counts_data = 'hgnc_symbol',
threshold = 0.1,
output_path = out_path)
- 输出:此方法将输出
relevant_interactions.txt
(代替pvalues.csv
)和significant_means.csv
文件。
此方法使用户能够设计更符合其研究问题的基因表达比较。对于方法2,我们的无效假设(和背景分布)考虑了数据集中的所有细胞类型,并进行“一个”细胞类型与“其余”比较。然而,用户可能希望使用不同的方法来更好地反映其研究场景。以下是一些示例情况:
- 分析需要考虑技术批次或生物协变量。在这里,最好依赖能够包含这些混杂因素并直接向CellphoneDB提供结果的差异表达方法。
- 用户对特定谱系内的特异性感兴趣,并希望进行分层差异表达分析(例如,用户对特定谱系感兴趣,例如上皮细胞,并希望识别在该上皮谱系内表达变化的基因;研究问题:上皮A与上皮B相比,哪些相互作用上调?)。
- 用户希望以疾病对照的方式比较特定群体(例如,通过将疾病T细胞与对照T细胞进行比较,识别疾病T细胞中上调的基因;研究问题:哪些相互作用由疾病T细胞上调?)。
用户应使用其首选工具和策略进行差异表达分析。我们为Seurat和Scanpy用户提供了示例notebooks。用户有责任设计适合实验设计/研究问题的DEG分析。
包含空间信息:微环境
CellphoneDB可以优先考虑在邻近细胞类型之间发生的相互作用。该工具将细胞类型相互作用对限制为共享微环境的细胞类型对(即仅测试共存于微环境中的簇组合)。
通过microenvironments
文件提供细胞的空间信息。这个两列文件指示哪种细胞类型位于哪个空间微环境中(见示例)。CellphoneDB将使用此信息定义可能的相互作用细胞对(即共存于微环境中的簇对)。
要在任何方法中考虑微环境,请添加:
microenvs = test_microenvs.txt
您可以使用先验知识、成像或Visium分析与cell2location定义微环境。
TF 活性状态:CellSign 模块
CellphoneDB v5 集成了 CellSign 模块,该模块通过利用受体下游转录因子的活性状态来优先考虑高置信度的相互作用。受体-转录因子关系通过手动审查文献并限制为对上游受体具有高度特异性的转录因子。CellSign 数据库包含总共 211 个高度特异的直接受体-转录因子关系。CellSign 使用转录因子激活作为细胞间相互作用后受体激活的下游传感器,从而为细胞间相互作用的可能性增加了额外的证据层。
该模块需要用户提供每种细胞类型中活跃的转录因子的列表,理想情况下以数据驱动的方式估计。要识别活跃的转录因子,您可以使用:(i)它们自己的转录因子表达(ii)目标基因的表达(DoRothEA)(iii)来自 scATAC-seq 图谱的结合基序的染色质可及性(ChromVar,SCENIC)。用户可以更新受体-转录因子数据库以包括其他感兴趣的关系。
要在方法2和方法3中考虑转录因子,请使用参数:
active_tfs_file_path = active_tf.txt
相互作用排名:评分模块
CellphoneDB v5 集成了一个评分方法,旨在根据相互作用伙伴的特异性对相互作用进行排名。为了对相互作用进行评分,CellphoneDB v5 采用以下协议:
- 排除未参与任何相互作用的基因以及在给定细胞类型中表达少于 k% 细胞的基因。
- 计算每个基因在每个细胞类型中的平均表达。
- 对异质蛋白质,采用几何平均数汇总每个亚基的平均基因表达。
- 在细胞类型之间将平均基因/异质表达缩放到 0 到 10 之间。
- 计算相互作用蛋白质的缩放平均表达的乘积,作为相互作用相关性的代理。
要对相互作用进行评分,CellphoneDB 需要对数归一化的表达数据,任何将零转换为任何其他值的归一化程序(例如z-scaling)都必须避免。
由于评分方法和相互作用推断方法采用不同的方法,因此可能会遇到被认为相关/显著但评分较低的相互作用。这可能由于多种原因发生:(i)如果相互作用基因之一是数据集中表达最少的基因,则在缩放(步骤4)其值
"secreted_desc"指示分泌蛋白的质量。
所有手动注释的信息都被仔细标记并可以识别。请参见下文的“标记”部分。
b. 受体和整合素
有三个字段用于注释受体或整合素:"receptor"、"receptor_desc" 和 "integrin"。
受体通过UniProt关键字KW-0675定义。受体列表经过广泛审查,并根据UniProt描述和文献修订添加了新的受体。涉及免疫细胞通讯的受体经过仔细整理。对于一些受体,在 "receptor_desc" 中包含简短的描述。
整合素是一个手动整理字段,指示蛋白质是整合素家族的一部分。所有注释的信息都被仔细标记并可以识别。详情请参见下文的“标记”部分。
c. 不考虑用于细胞间通讯分析的膜和分泌蛋白(“其他”)
我们创建了另一个名为"others"的列,包含从分析中排除的蛋白质。我们还添加了"others_desc"以简要描述被排除蛋白质的原因。这些蛋白质包括:(i)辅受体;(ii)与耳结合相关的神经特异性受体,如耳结合受体、嗅觉受体、味觉受体和唾液受体;(iii)小分子受体;(iv)免疫球蛋白链;(v)病毒和逆转录病毒蛋白、假基因、癌症抗原和光受体。
d. 标记
有三个字段指示蛋白质是否已手动整理:"tags"、"tags_description" 和 "tags_reason"。
"tags" 字段与蛋白质的手动整理有关,包含三个字段:(i)‘N/A’,指示蛋白质在所有字段中与UniProt描述匹配;(ii)‘To_add’,指示已添加分泌和/或质膜蛋白注释;(iii)‘To_comment’,指示蛋白质是分泌(KW-0964)或膜相关(KW-1003),但我们手动添加了蛋白质的特定属性(即,蛋白质被注释为受体)。
"tags_reason"字段与蛋白质特性有关,有五种可能的值:(i)‘extracellular_add’,指示蛋白质被手动注释为质膜;(ii)‘peripheral_add’,指示蛋白质被手动注释为质膜外周蛋白;(iii)‘secreted_add’,指示蛋白质被手动注释为分泌;(iv)‘secreted_high’,指示蛋白质被手动注释为分泌亮点。对于细胞因子、激素、生长因子和其他免疫相关蛋白质,选项(v)‘receptor_add’指示蛋白质被手动注释为受体。
最后,"tags_description"字段是蛋白质、功能或与手动整理蛋白质相关的属性的简短描述。
3. "complex_input"
必填字段:"complex_name"; "uniprot1, 2,..."
可选字段:"transmembrane"; "peripheral"; "secreted"; "secreted_desc"; "secreted_highlight"; "receptor"; "receptor_desc" ; "integrin"; "other"; "other_desc"; "pdb_id"; "pdb_structure" ; "stoichiometry"; "comments_complex"
异质受体和配体,即由多个基因产物组成的蛋白质,通过审查文献和UniProt描述进行注释。细胞因子复合物、TGF家族复合物和整合素复合物经过仔细注释。
这些列表包含每个异质配体和受体的UniProt标识符("uniprot1"、"uniprot2",...)和复合物名称("complex_name")。与"protein_input"共同的字段包括:"transmembrane"、"peripheral"、"secreted"、"secreted_desc"、"secreted_highlight"、"receptor"、"receptor_desc"、"integrin"、"other"、"other_desc"(请参阅上述"protein_input"部分中的描述以澄清)。此外,我们还包括其他可能与异质二聚体的化学计量相关的可选信息。如果异质体在RCSB蛋白质数据库(http://www.rcsb.org)中定义,结构信息将包含在我们的CellphoneDB注释中,包括"pdb_structure"、"pdb_id"和"stoichiometry"。创建了一个额外的字段"comments_complex"以添加对异质体的简要描述。
4. "interaction_input"
必填字段:"partner_a"; "partner_b"; "annotation_strategy"; "source"
可选字段:"protein_name_a"; "protein_name_b"
存储在CellphoneDB中的相互作用通过其UniProt标识符(双相互作用)或复合物名称(涉及异质体的相互作用)("partner_a"和"partner_b")进行注释。蛋白质名称也包括在内,但不是必填字段("protein_name_a"和"protein_name_b")。蛋白质名称不存储在数据库中。
相互作用的主要输入有两种:i)查询其他数据库的系统输入,和ii)使用CellphoneDB开发人员和用户的整理信息的手动输入("interaction_curated")。使用的方法在"annotation_strategy"列中指示。
存储的每个相互作用都有一个CellphoneDB唯一标识符("id_cp_interaction"),由内部管道自动生成。
5. "transcription_factor_input"
必填字段:"receptor_id"; "TF_symbol"; "Effect"
可选字段:"partner_receptor"; "partner_TF"; "protein_name_receptor"; "protein_name_TF"; "Source"; "Curator"; "Xrefs_or_figures"; "Brivanlou_class"
"receptor_id"包含复合物名称(见:"complex_name"列在"complex_input"中)或基因名称 - 对应于受体,"TF_symbol"为基因名称 - 对应于转录因子。
"Effect"字段设置为-1,如果受体对转录因子有抑制作用,否则为1。
"partner_TF"和"partner_receptor"分别包含UniProt标识和复合物名称/UniProt标识。
"protein_name_TF"和非复合物的"protein_name_receptor"分别包含蛋白质名称。
"Brivanlou_class"包含Ali H. Brivanlou的转录因子分类(参见:https://www.jstor.org/stable/3075743)。
用户定义的数据库
我们的系统允许用户创建自己的相互作用和复合物数据库。为此,用户列表的格式必须与输入文件兼容。
您想为我们的整理工作做出贡献吗?
用户可以使用CellphoneDB的Python包版本提交他们的列表,然后通过contact@cellphonedb.org或向CellphoneDB数据仓库发送拉取请求。
绘制结果
============================================
目前CellphoneDB依赖外部绘图实现来表示结果。示例在教程中提供。
我们推荐使用以下工具:
@zktuong:
发布说明
============================================
cellphonedb v4.1.0
- 新的Python包,可以轻松在Jupyter Notebook和Collabs中执行。
- 一种新的查询CellphoneDB结果的方法。
- 运行CellphoneDB的教程(可在这里找到)。
- 提高了方法2
cpdb_statistical_analysis_method
的计算效率。
cellphonedb-data v4.1.0
- 新数据库(v4.1.0),包含更多手动整理的相互作用,总计2,923个相互作用。
- 不再使用非整理的外部数据库。
cellphonedb-data v4.0.0
- 添加了更多手动整理的相互作用,特别关注作为异质复合物的蛋白质。本版本数据库包含近2,000个高置信度相互作用,包括异质复合物!我们相信建模复合物是减少预测中假阳性的关键。
- 包含涉及非肽分子(即,不由基因编码)的相互作用。例子包括类固醇激素(例如雌激素)。为此,我们重建了生物合成途径,并使用最后一个代表性酶作为配体丰度的代理。我们通过手动审查和整理相关文献以及同行评审的途径资源(如REACTOME)来获取此信息。我们包括了200多个涉及非肽配体的相互作用。
cellphonedb v3.0.0
- 新方法,集成空间信息。CellphoneDB现在允许通过
microenvironments
文件集成细胞的空间信息。CellphoneDB将使用此信息定义可能的相互作用细胞对(即共存于微环境中的簇对)。您可以使用先验知识、成像或Visium分析与cell2location定义微环境。 - 新的DEG分析方法。此方法依赖于差异表达基因(
cpdb_degs_analysis_method
或cellphonedb method degs_analysis
),作为基于置换的方法的替代方案。用户使用其首选工具识别DEGs,并通过文本文件将信息提供给CellphoneDB。
cellphonedb-data v3.0.0
- 更新了涉及WNT通路的相互作用。
教程
============================================
运行CellphoneDB的教程可在这里找到。
常见问题
============================================
1. 接受哪些格式的counts输入文件?
CellphoneDB接受以下格式的counts文件:文本文件(列表示单个细胞,行表示基因)、h5ad(推荐)、h5或包含mtx/barcode/features文件的10x输出文件夹路径。
2. 如何从Seurat对象中提取CellphoneDB输入文件?
我们建议使用归一化的计数数据。这可以通过从Seurat对象中提取归一化插槽或手动应用归一化来获得。用户也可以使用其首选方法对数据进行归一化。
# R
# 提取原始数据并进行归一化
count_raw <- seurat_obj@assays$RNA@counts[,seurat_obj@cell.names]
count_norm <- apply(count_raw, 2, function(x) (x/sum(x))*10000)
write.table(count_norm, ‘CellphoneDB_count.txt’, sep=’\t’, quote=F)
请注意,您还可以将Seurat对象导出为包含matrix.mtx.gz、features.tsv.gz和barcodes.tsv.gz的10x .mtx输出格式。要生成这些文件,您可以使用:
# R
library(Matrix)
writeMM(obj = seurat_obj@assays$RNA@counts, file = 'outdir/matrix.mtx') # 或者从seurat_obj@assays$RNA@data中提取归一化计数
features <- as.data.frame(rowData(seurat_obj))
features$gene_names<- rownames(features)
features <- features[c('gene_ids','gene_names','feature_types')]
write.table(features, file = 'outdir/features.tsv', sep = '\t', quote=F, row.names = F, col.names = F)
write.table(colData(seurat_obj), file = 'outdir/barcodes.tsv', sep = '\t', quote=F, row.names = F, col.names = F)
# 然后将文件压缩为.gz格式
3. 如何从scanpy anndata中提取CellphoneDB输入文件?
您可以提供一个.h5ad文件作为anndata。
4. 输入的计数数据文件应该使用HGNC符号(基因名称)还是Ensembl ID?
CellphoneDB 2.0允许使用HGNC符号和Ensembl ID。
请使用 counts-data = hgnc_symbol
指定HGNC符号。
5. 子抽样的目的是什么?
生成的数据集的细胞测序数量呈指数级增长。为了提高CellphoneDB的速度,我们在分析中加入了一个可选步骤,使用了Hie B等人,2019(Cell Systems 2019)中描述的方法。用户也可以选择其他方法进行子抽样,并将子抽样后的数据按照上述方式输入到CellphoneDB中。我们建议对非常大的数据集使用子抽样;使用子抽样选项的最少细胞数为1000。
6. “significant_means.txt”输出文件中的“Rank”是什么意思?
Rank是通过计算每个相互作用对(每行)的显著p值数量并除以簇-簇比较的总数来计算的。目的是优先考虑高度特异的相互作用,即仅具有一个或少数显著p值的相互作用,并将那些在所有地方都存在或根本不存在的相互作用排在列表的底部。
引用
============================================
CellphoneDB的第一个版本由Roser Vento-Tormo和Mirjana Efremova在Wellcome Sanger研究所(剑桥,英国)的Teichmann实验室开发。目前,由Vento-Tormo实验室(CellphoneDB ≥v3)进一步开发和支持。
如果您使用CellphoneDB或CellphoneDB数据,请引论文:
CellphoneDB v1 (original): Single-cell reconstruction of the early maternal-fetal interface in humans. Vento-Tormo R, Efremova M, et al., Nature. 2018 链接
CellphoneDB v2: Inferring cell-cell communication from combined expression of multi-subunit receptor-ligand complexes. Efremova M, Vento-Tormo M, Teichmann S, Vento-Tormo R. Nat Protoc. 2020 链接
CellphoneDB v3: Mapping the temporal and spatial dynamics of the human endometrium in vivo and in vitro. L Garcia-Alonso, L-François Handfield, K Roberts, K Nikolakopoulou et al. Nature Genetics 2021 链接
CellphoneDB v4: Single-cell roadmap of human gonadal development. L Garcia-Alonso, V Lorenzi et al. 2022 Nature 链接
CellphoneDB v5 (latest): CellPhoneDV v5. Authors et al. 2023 Nature Protocls 链接