无中间文件计算fdr和多组方差分析(无齐性检验)

无中间文件计算fdr

#!perl
use warnings;
use strict;


die "perl $0 <pvalue file> <outprefix>\n" if @ARGV != 2;


my (%va, %out);
open FA, $ARGV[0] or die $!;
while(<FA>)
{
<span style="white-space:pre">	</span>chomp;
<span style="white-space:pre">	</span>my @tmp = split;
<span style="white-space:pre">	</span>$va{$tmp[0]} = $tmp[7];
<span style="white-space:pre">	</span>$out{$tmp[0]} = $_;
}


my @arr;
my $n = 0;
foreach my $i(sort {$va{$a} <=> $va{$b}} keys %va)
{
<span style="white-space:pre">	</span>$arr[$n]{$i} = $va{$i};
<span style="white-space:pre">	</span>$n ++;
}


open OUT, "> $ARGV[1].fdr" or die $!;
for(my $i = 0; $i < @arr; $i ++)
{
<span style="white-space:pre">	</span>foreach my $j(keys %{$arr[$i]})
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>my $fdr = ($arr[$i]{$j} * ($n + 1)) / ($i + 1);
<span style="white-space:pre">		</span>print OUT "$out{$j}\t$fdr\n";
<span style="white-space:pre">	</span>}
}
perl的sort还是不熟啊。。。

多组方差分析(无齐性检验)

args<-commandArgs(T)
mat <- read.table(args[1], sep="\t")
column <- c(rep(0, nrow(mat)))
for(i in 1:nrow(mat))
{
	dat <- as.numeric(mat[i, 2:ncol(mat)])
	groups <- factor(rep(letters[1:3], each = 2))
	fit <- lm(formula = dat ~ groups)
	column[i] <- anova(fit)[1,5]
}
f = cbind(mat, column)
write.table(f, file=args[2], sep ="\t", quote=FALSE,row.names=FALSE, col.names=F)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值