R:使用离散小波变换比较代谢模型之间的差异

时间:2015-08-01 12:05:26

标签: r time-series bioinformatics dwt

我正在研究细菌代谢模型。每个模型都有一组代谢物及其浓度,持续200个时间点。我正在比较模型,根据它们的相似性对它们进行聚类。 我遵循的一种方法是使用欧几里德距离对两个模型中的每个代谢物对进行成对比较。以下是我的数据的样子。这是sample data file

enter image description here

我计算了模型A的Met1和模型B的Met1的成对欧几里德距离。同样计算了两个模型(模型A中的Met4和模型B中的Met4)之间所有常见代谢物的距离,并总结了距离获得两个模型之间的距离(不相似)。类似地,我计算了所有模型的相异度矩阵,我使用层次聚类来聚类它们。

现在我想用离散小波变换作为我的距离测量来计算模型的不相似性。但是,我无法在包定义中找到有关如何比较两个时间序列的方法。我想知道如何使用离散小波变换计算2个时间序列之间的相异距离,因此我的模型也是如此。

1 个答案:

答案 0 :(得分:0)

查看TSclust包。在这里,您将如何将其应用于您的示例数据。

require(TSclust)

#read in the data
model_a <- read.csv("~/Desktop/Model A.csv", header = TRUE, stringsAsFactors = FALSE)
model_b <- read.csv("~/Desktop/Model B.csv", header = TRUE, stringsAsFactors = FALSE)

#data must be in rows rather than columns
model_a <- as.data.frame(t(model_a))

model_b <- as.data.frame(t(model_b))

#calculate dissimlarities between metabolites in models 1 and 2
met1_DWT.diss <- as.numeric(diss.DWT(rbind(model_a['Met1', ], model_b['Met1', ])))
met1_DWT.diss
[1] 90.80332

met2_DWT.diss <- as.numeric(diss.DWT(rbind(model_a['Met2', ], model_b['Met2', ])))
met2_DWT.diss
[1] 1.499241