conda activate SignalP
for i in /backup/liuli/geneomic/orthofinder/last/wai/*.fa; do
file_name=$(basename "$i")
output_dir="/backup/liuli/geneomic/orthofinder/last/wai/$file_name"
signalp6 --fastafile "$i" --organism eukarya --output_dir "$output_dir" --format txt --mode fast
done
数据处理
file_list <- readLines("list.txt")
##循环读取
file_list <- list.files("D:/地衣/result/基因家族扩张收缩/signal/", full.names = TRUE)
for (file in file_list) {
filename <- tools::file_path_sans_ext(basename(file))
assign(filename, read.delim(file, header=FALSE, comment.char="#")) # 假设文件有标题行
}
data <- ls(pattern = ".*_prediction_results$")
# 遍历数据框名称向量,依次处理每个数据框
for (df_name in data) {
# 获取数据框
df <- get(df_name)
# 计算第二列 V2 的频率表并转换为数据框
df_2 <- as.data.frame(table(df$V2))
# 生成新数据框名称,例如 "df1_2"
new_df_name <- paste0(df_name, "_2")
# 将新数据框保存到全局环境中,使用 assign() 函数
assign(new_df_name, df_2)
}
# 获取所有以 "_2" 结尾的数据框名
dfs_to_merge <- mget(ls(pattern = "_2$"))
# 在合并前修改列名,给每个频数列加上数据框名称作为前缀
dfs_to_merge <- lapply(names(dfs_to_merge), function(df_name) {
df <- dfs_to_merge[[df_name]]
colnames(df)[2] <- paste0(df_name, "_Freq") # 修改频数列的列名,添加数据框名字作为前缀
return(df)
})
# 使用 Reduce 和 merge 进行合并
merged_df <- Reduce(function(x, y) merge(x, y, by = "Var1", all = TRUE), dfs_to_merge)
# 将 NA 替换为 0,防止列中有缺失值
merged_df[is.na(merged_df)] <- 0
# 查看合并后的数据框
print(merged_df)