perl脚本
perl吧
全部回复
仅看楼主
level 1
陌上花1189 楼主
写一个perl脚本统计每个样品fpkm在以下范围内的gene数目:FPKM>100", "10<FPKM<=100", "3<=FPKM<=10", "0.5<FPKM<3", "FPKM<=0.5"
要求定义哈希,请问这个怎么写?
2022年08月02日 11点08分 1
level 12
第一列是基因还是样本?
2022年08月03日 08点08分 2
样本
2022年08月05日 00点08分
@陌上花1189 看私信。今天有空帮你写了
2022年08月05日 00点08分
大佬 具体怎么写啊 我也不会...[委屈]
2022年08月09日 01点08分
@一生如你😍 他这个是要求用哈希写,但是我感觉没有必要。。。
2022年08月09日 01点08分
level 12
#!/usr/bin/perl
use warnings;
use strict;
my $usage =<<USAGE;
Usage perl $0 file
USAGE
die $usage if @argv <1;
my ($in) = @ARGV;
my %hash;
my @head;
my $out = "#ID\tFPKM>100\tFPKM>100 num\t10<FPKM<=100\t10<FPKM<=100 num\t3<=FPKM<=10\t3<=FPKM<=10 num\t0.5<FPKM<3\t0.5<FPKM<3 num\tFPKM<=0.5\tFPKM<=0.5 num\n";
open IN, $in or die "Error $in\n";
while (<IN>) {
chomp;
my @璐村惂鐢ㄦ埛_00000eP馃惥 = split "\t",$_;
if ($_ =~ /^#/) {
@head = @a;
next;
}
for my $i ( 1 .. $#a ) {
if ($a[$i] > 100) {
#$hash{$a[0]}{'a'}++;
push @{$hash{$a[0]}{'a'}},$head[$i];
}
elsif ($a[$i] > 10 && $a[$i] <= 100) {
#$hash{$a[0]}{'b'}++;
push @{$hash{$a[0]}{'b'}},$head[$i];
}
elsif ($a[$i] >= 3 && $a[$i] <= 10) {
#$hash{$a[0]}{'c'}++;
push @{$hash{$a[0]}{'c'}},$head[$i];
}
elsif ($a[$i] > 0.5 && $a[$i] < 3) {
#$hash{$a[0]}{'d'}++;
push @{$hash{$a[0]}{'d'}},$head[$i];
}
elsif ($a[$i] <= 0.5) {
#$hash{$a[0]}{'e'}++;
push @{$hash{$a[0]}{'e'}},$head[$i];
}
}
$out .= "$a[0]";
for my $i ('a','b','c','d','e') {
my $num = 0;
my $sample = "";
if ($hash{$a[0]}{$i}) {
$num = @{$hash{$a[0]}{$i}};
$sample = join(",", @{$hash{$a[0]}{$i}});
}
$out .= "\t$sample\t$num";
}
$out .= "\n";
}
print $out;
2022年08月09日 02点08分 3
如果在判断表达量属于哪个分级的时候$hash{$a[0]}{'d'}++,这样哈希的值直接就是个数了,应该比之后计算数组个数省内存
2022年08月09日 10点08分
@啊依哟啊依哟 我加了统计个数和符合的名字。按需删除[捂嘴笑]
2022年08月09日 10点08分
@HeMonseter 哦~~奇怪我昨天竟然没看见[滑稽]
2022年08月10日 03点08分
level 12
麻的,辣鸡贴吧,自己转了格式
留意一下@开头的函数,根据截图自己改一下
2022年08月09日 02点08分 4
1