clust——共表达聚类
文章目录
clust 是一种用于识别在 一个或多个物种的异构数据集中持续共表达(相关性良好)的基因簇(组)的全自动方法。
(一)对于单个数据集,clust 自动识别共表达基因的 clusters 的数量 k 并完成聚类。
(二)对于多个数据集,clust 自动识别在每个输入数据集中共表达(相关性良好)的基因 clusters,此处每个数据集的条件或时间点数量不同。
对于 clust,具有如下的特征:
- 无需对数据进行预处理,clust 能够自动对数据进行归一化处理
- 无需预设聚类的数量,clust 能够自动识别 cluster 的数目
- 可以通过参数
-t
控制聚类的紧密度(tightness) - 同时也可以适用于如下数据集:
- 由不同技术生成(如 RNA-seq 或微阵列)
- 来自不同物种
- 条件或时间点数量不同
- 同一条件有多个重复
- 需要不同类型的归一化
- 由不同年份和实验室生成
- 存在缺失值
- 并非所有基因都被包含在每个数据集中
- 输出文件:
- 聚类统计表
- 列出各聚类所含基因的表格
- 预处理(归一化、汇总和过滤)数据集文件
- 聚类基因表达谱图谱(PDF 文件)
官网:https://github.com/BaselAbujamous/clust
网页版:http://clust.baselabujamous.com
安装
方法一:使用 conda(推荐)
conda create -n clust
conda activate clust
conda install -c bioconda clust
方法二:使用 pip
# 以下任选一条命令即可
sudo pip install clust
pip install --user clust
**补充:**更新版本(分别对应如上的安装命令)
conda update -c bioconda clust
sudo pip install clust --upgrade
pip install --user clust --upgrade
使用
1. 基础版
输入数据格式:每个数据集都以单个 TAB 分隔(TSV)文件表示,其中第一列表示基因 ID,第一行表示样本的唯一标签,文件的其余部分包括数值,主要是基因表达值。
**注意:**当相同的基因 ID 出现在不同的数据集中时,会被认为是同一个基因;如果同一文件中有多行具有相同的标识符会自动将它们的值相加进行汇总;基因名称不应包含空格、逗号或分号。
(一)对于归一化过的同质数据集,可以直接运行:
clust data_path -o output_directory [...]
该命令使用默认参数运行 clust,data_path
可以是单个数据文件(v1.8.5 以上)的路径,也可以是包含一个或多个数据文件的目录路径;如果没使用 -o
提供输出目录,clust 会在当前工作目录下为结果创建一个新目录。
(二)对于原始 RNA-seq TPM、FPKM 或 RPKM 数据,可参考如下进阶版的归一化部分。 有关处理 replicates 数据、处理来自多个物种的数据,以及处理微阵列数据(仅RNA-seq数据或与RNA-seq数据混合)也可参考如下进阶版中对应内容。
2. 进阶版
2.1 归一化(Normalisation)
在 V1.7.0 及更新版本中,可以实现自动规范化,除非用户通过 -n
另有说明,否则会自动检测每个数据集最适合的归一化方法,所使用的归一化 codes 存储在输出文件 /Normalisation_actual
中。
$ cat ~/clust/rpkm_Results_05_Aug_24/Normalisation_actual.txt
total_rpkm_gene.csv 101 3 4
在 V1.6.0 及更早版本 中,用户应通过 -n
说明所需的归一化技术,否则不应用归一化。
(一)方法一(V1.7.0 及更新版本):列出要应用于一个或多个数据集的一个或多个归一化 codes(可从下表中选取)
clust data_path -n code1 [code2 code3 ...] [...]
# 示例
clust total_rpkm_gene.csv -n 101 3 4 -o rpkm_Results_05_Aug_24
(二)方法二:提供列出每个数据集的归一化 codes 的文件,分隔符可以是空格、TAB、逗号或分号
clust data_path -n normalisation_file [...]
# 示例
clust total_rpkm_gene.csv -n Normalisation_actual.txt -o rpkm_Results_05_Aug_24
常用数据集建议 codes:
- RNA-seq TPM, FPKM, and RPKM data: 101 3 4
- Log2 RNA-seq TPM, FPKM, and RPKM data: 101 4
- One-colour microarray gene expression data: 101 3 4
- Log2 one-colour microarray gene expression data: 101 4
- Two-colour microarray gene expression data: 3 6
- Log2 two-colour microarray gene expression data: 6
- Log2 fold-changes 4
在此基础上,如果数据集中有太多的零或一些负值,则建议使用 31 代替 3。
All normalisation codes:
Code | Definition |
---|---|
0 | No normalisation (Default in v1.6.0 and earlier) |
1 | Divide by the mean value of the row |
2 | Divide by the first value of the row |
3 | Log2 |
31 | Set all values that are less than 1.0 to 1.0, then log2 (v1.7.0+) |
4 | Z-score: subtract the mean of the row and then divide by its standard deviation |
5 | Divide by the total (sum) of the row |
6 | Subtract the mean value of the row |
7 | Divide by the maximum value of the row |
8 | 2 to the power X |
9 | Subtract the minimum value of the row |
10 | Rank across rows (1 for the lowest, up to N for N columns; average ranks at ties) |
11 | Rank across rows (1 for the lowest, up to N for N columns; order arbitrarly at ties) |
12 | Linear transformation to the [0, 1] range across rows (0.0 for the lowest and 1.0 for the highest) |
13 | Set all values of genes with low expression everywhere to zeros. The threshold of low expression is found by fitting a bimodal distribution to per-gene maximum expression values over all samples (v1.7.0+) |
- | - |
101 | Quantile normalisation |
102 | Column-wise mean subtraction |
103 | Subtract the global mean of the entire dataset |
- | - |
1000 | Automatic detection of suitable normalisation (Default in v1.7.0 and newer) |
**注意:**codes 的顺序决定了归一化技术的应用顺序
2.2 处理 replicates
提供包含有 replicates 信息的文件,其中文件中的每一行代表一个样本,按顺序包含数据集文件的名称(如 X0.txt),样本条件的名称,该样本条件的一个或多个 replicates 名称,且这些名称应与数据集文件中的列名相匹配,分隔符可以是空格、TAB、逗号或分号。
$ cat rpkm_replicates_file.txt
total_rpkm_gene.csv AC AC1_count, AC2_count, AC3_count
total_rpkm_gene.csv BC BC1_count, BC2_count, BC3_count
total_rpkm_gene.csv BD BD1_count, BD2_count, BD3_count
total_rpkm_gene.csv AD AD1_count, AD2_count, AD3_count
total_rpkm_gene.csv BE BE1_count, BE2_count, BE3_count
total_rpkm_gene.csv AE AE1_count, AE2_count, AE3_count
具体使用代码:
clust data_path -r replicates_file [...]
# 示例
clust total_rpkm_gene.csv -r rpkm_replicates_file.txt -o rpkm_Results_05_Aug_24
2.3 多物种数据
提供包含有多物种信息的文件 mapping file
,其中 mapping file
是一个 TAB 分隔文件,第一行显示物种名称,第一列显示 orthologue groups(OG)的 ID,每个 OG 包括零个、一个或多个orthologous genes,每个物种一栏用逗号分隔,具体文件格式可参考官网信息。
clust data_path -m map_file [...]
2.4 多技术数据
提供包含有多技术信息的文件mapping file
,注意此处需要为不同技术数据集应用不同的归一化 codes,如果微阵列数据文件的第一列包含探针 ID,而这些探针 ID 在使用不同微阵列/RNA-seq 平台生成的数据集中并不完全相同,则应确保探针-基因映射信息包含在上述 mapping file
中,具体文件格式可参考官网信息。
clust data_path -m map_file [...]
2.5 缺失值处理
使用 -d
自动舍弃未出现在所有(或大部分)数据集中的基因;如共有 20 个数据集,可以通过以下方法强制 clust 丢弃至少 17 个数据集未包含的基因:
clust data_path -d 17 [...]
2.6 低表达基因处理
在 v1.7.0+ 中,clust 默认会在合并 replicates 和归一化后过滤掉表达谱平坦(表达谱完全没有变化)的基因;可使用 --no-fil-flat
禁止该操作。
如果向 clust 提供三个选项 -fil-v
、-fil-c
和 -fil-d
,clust 可以自动过滤掉表达值低的基因:
clust data_path -fil-v value -fil-c conditions -fil-d datasets
此代码将舍弃在数据集中低于 value 值、在 conditions 条件下低于 conditions 值的所有基因。
此部分需要在归一化之前使用,但要在合并 replicates 数据和处理跨物种基因 mapping 之后使用。
2.7 noisy clusters 处理
紧密度参数 -t
可以控制聚类的紧密程度(较紧密较小的聚类 vs 较不紧密较大的聚类),为正实数,默认值为 1.0;小于 1.0 的值(如 0.5)产生的聚类不太紧密,而大于 1.0 的值(如 2.0、5.0、10.0…)产生的聚类更紧密。
更大的 -t
值可以获得更紧密的聚类:
clust data_path -t tightness_level
示例
clust Data/ -r Replicates.txt \
-n Normalisation.txt \
-m MapIDs.txt \
-t 5 \
-o MyResultsDirectory/
参考
- BaselAbujamous/clust: Automatic and optimised consensus clustering of one or more heterogeneous datasets (github.com)
- Basel Abu-Jamous and Steven Kelly (2018) Clust: automatic extraction of optimal coexpressed gene clusters from gene expression data.
Genome Biology
: 19:172; doi: https://doi.org/10.1186/s13059-018-1536-8.