library(Mfuzz)

sample <- 'ful'
nclusters <- 15
infile = paste0('/home/jforment/biovice/internal_projects/230627_irgoncua_clustering/00-inputdata/', sample, '.TPMs.tsv')

eset <- table2eset(infile)

eset.filtered <- filter.std(eset, min.std=0)

eset.filtered.2 <- fill.NA(eset.filtered, mode="wknn")

eset.standarised <- standardise(eset.filtered.2)

m1 <- mestimate(eset.standarised)

minClust <- 6

maxClust <- 20

cselected <- cselection(eset.standarised, m1, crange=seq(minClust,maxClust,1), repeats=3, visu=TRUE)

centroids <- data.frame(x = (minClust):(maxClust), y = Dmin(eset.standarised, m = m1, crange = seq(minClust, maxClust, 1), repeats = 3, visu = TRUE))

c <- nclusters

cnclusters <- mfuzz(eset.standarised,c=c,m=m1)

clusters_0.5 <- acore(eset.standarised, cnclusters, min.acore = 0.5)

clusters_0.7 <- acore(eset.standarised, cnclusters, min.acore = 0.7)

clusters_0.8 <- acore(eset.standarised, cnclusters, min.acore = 0.8)

clusters_0.9 <- acore(eset.standarised, cnclusters, min.acore = 0.9)

write.table(eset.standarised, file = paste0(sample,'.eset.standarised.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)

write.table(cnclusters$cluster, file = paste0(sample,'.',nclusters,'clusters-assignment.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)

write.table(cnclusters$membership, file = paste0(sample,'.',nclusters,'clusters-probabilities.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)

for (cl in 1:nclusters) {
	write.table(clusters_0.5[cl], file = paste0(sample,'.',nclusters,'clusters-assignment0.5.cluster',cl,'.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)
}

for (cl in 1:nclusters) {
	write.table(clusters_0.7[cl], file = paste0(sample,'.',nclusters,'clusters-assignment0.7.cluster',cl,'.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)
}

for (cl in 1:nclusters) {
	write.table(clusters_0.8[cl], file = paste0(sample,'.',nclusters,'clusters-assignment0.8.cluster',cl,'.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)
}

for (cl in 1:nclusters) {
	write.table(clusters_0.9[cl], file = paste0(sample,'.',nclusters,'clusters-assignment0.9.cluster',cl,'.tsv'), quote = FALSE, sep = "\t", row.names = TRUE, col.names = NA)
}

jpeg(file=paste0('clusters',nclusters,'.jpg'))

mfuzz.plot2(eset.standarised, cnclusters, mfrow=c(3,4), time.labels=c(1,2,3,4), centre = TRUE)

mfuzz.plot2(eset.standarised, cnclusters, mfrow=c(4,4), time.labels=c(1,2,3,4), centre = TRUE)

quit()
