单细胞数据分析计算每个细胞MT-比例
1、awk + >>追加实现
for i in $(seq 2 $(head -n 1 a.txt | awk '{print NF}')); do cut -f 1,$i a.txt | awk 'BEGIN{sum =0 } {if(NR != 1) sum += $2} {if($1 ~ /^MT-/ && NR != 1) {sum1 += $2}} END {print 100 * sum1/sum}' >> result.txt; done
2、awk + shell数组实现
sed 1d a.txt | awk '{for(i = 2; i <= NF; i++) {array1[i] += $i; if($1 ~ /^MT-/) {array2[i] += $i}}} END {for(i = 2; i <= NF; i++) {print 100 * array2[i]/array1[i]}}' > result.txt
3、R实现
001、
dir() dat <- read.table("a.txt", header = T) dim(dat) mt <- dat[grep("^MT-", rownames(dat)),] dim(mt) result <- apply(mt, 2, sum)/apply(dat, 2, sum) * 100 head(result) tail(result)
002、
dir() dat <- read.table("a.txt", header = T) sum1 <- rep(0, ncol(dat)) sum2 <- rep(0, ncol(dat)) for (i in 1:ncol(dat)) { for (j in 1:nrow(dat)) { sum1[i] <- sum1[i] + dat[j,i] if (substring(rownames(dat)[j],1, 3) == "MT-") { sum2[i] <- sum2[i] + dat[j, i] } } } head(sum1) head(sum2) result <- sum2/sum1 head(result)
003、
dir() dat <- read.table("a.txt", header = T) sum1 <- rep(0, ncol(dat)) sum2 <- rep(0, ncol(dat)) mt <- dat[grep("^MT-", rownames(dat)),] for (i in 1:ncol(dat)) { sum1[i] <- sum(dat[,i]) sum2[i] <- sum(mt[,i]) } result <- sum2/sum1 head(result)
004、
dat <- read.table("a.txt", row.names = 1, header = T) dim(dat) result <- apply(dat[grepl("^MT-",rownames(dat)),], 2, sum)/apply(dat, 2, sum) * 100 head(result)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律