R:microtable包隨機森林

王哲MGG_AI發表於2024-06-13
rm(list = ls())
setwd("C:\\Users\\Administrator\\Desktop\\New_microtable") #設定工作目錄
library(microeco)
library(magrittr)
library(dplyr)
library(tibble)

feature_table <- read.table('Bac_species.txt', header = TRUE, row.names = 1, sep = "\t", fill = TRUE) #特徵表
# 檢查並處理缺失值
if (any(is.na(feature_table))) {
  feature_table[is.na(feature_table)] <- 0  # 將缺失值填充為零
}
sample_table <- read.table('sample_table.txt', header = TRUE, row.names = 1, sep = "\t") #樣本表
tax_table <- read.table('tax_table_s.txt', header = TRUE, row.names = 1, sep = "\t", fill = TRUE) #分類表

dataset <- microtable$new(sample_table = sample_table,
                          otu_table = feature_table, 
                          tax_table = tax_table)

dataset$tidy_dataset() #整理和預處理資料集
#資料清洗:移除或填補缺失值、異常值等。
#資料標準化:確保資料符合一定的格式,比如統一的資料型別。
#資料整合:如果有多個表格,確保它們之間的連結正確無誤。

dataset$sample_sums() %>% range #計算並檢視樣本總數的範圍

dataset$rarefy_samples(sample.size = 1000000) #執行重取樣,標準化樣本中的測序深度

dataset$sample_sums() %>% range #計算並檢視標準化後樣本總數的範圍

dataset$cal_abund() #計算每個分類等級的分類群丰度

t1 <- trans_diff$new(dataset = dataset, method = "rf", group = "Group", taxa_level = "Species")

write.table(t1$res_diff, file = "res_rf.txt", sep = "\t", quote = FALSE, row.names = TRUE, col.names = TRUE)

library(ggplot2)
library(gridExtra)

# 定義分組的顏色
group_colors <- c("B73" = "#8FC9E2", "Mo17" = "#ECC97F")  # 可以根據需要選擇顏色

# 生成條形圖並設定填充色和邊框色
g1 <- t1$plot_diff_bar(use_number = 1:20, width = 0.8, group_order = c("B73", "Mo17")) +
  scale_fill_manual(values = group_colors) +  # 設定條形填充顏色
  scale_color_manual(values = group_colors) +  # 設定條形邊框顏色
  theme(legend.position = "none",axis.text.x = element_text(size = 12, face = "bold")
        ,text = element_text(family = "Times New Roman"))

# 生成丰度圖並設定填充色和邊框色
g2 <- t1$plot_diff_abund(use_number = 1:20, group_order = c("B73", "Mo17"), select_taxa = t1$plot_diff_bar_taxa) +
  scale_fill_manual(values = group_colors) +  # 設定丰度圖填充顏色
  scale_color_manual(values = group_colors) +  # 設定丰度圖邊框顏色
  theme(axis.text.y = element_blank(), axis.ticks.y = element_blank(),axis.text.x = element_text(size = 12, face = "bold")
        ,text = element_text(family = "Times New Roman"))

# 生成並排顯示的圖形物件
combined_plot <- gridExtra::grid.arrange(g1, g2, ncol = 2, nrow = 1, widths = c(2, 1.7))
# 儲存圖形為 PNG 格式
ggsave("Species_rf.png", plot = combined_plot, width = 10, height = 6, dpi = 800)

相關文章