Mercurial > repos > bigrna > gpsrna
view SampleDEGseqMerge.pl @ 0:87fe81de0931 draft default tip
Uploaded
author | bigrna |
---|---|
date | Sun, 04 Jan 2015 02:47:25 -0500 |
parents | |
children |
line wrap: on
line source
#!/usr/bin/perl -w #Filename: #Author: Tian Dongmei #Email: chentt@big.ac.cn #Date: 2014-05-21 #Modified: #Description: merged deg file and total information my $version=1.00; use strict; use Getopt::Long; my %opts; GetOptions(\%opts,"i:s@","mark:s@","f:s","o=s","n=s","h"); if (!(defined $opts{o} ) || defined $opts{h}) { #necessary arguments &usage; } my @filein=@{$opts{'i'}}; my @mark=@{$opts{'mark'}}; my $fileout=$opts{'o'}; my $number=$opts{'n'}; my %hash; open IN,"<$filein[0]"; #input file while (my $aline=<IN>) { chomp $aline; next if($aline=~/^\"/); my @temp=split/\t/,$aline; $hash{$temp[0]}=$temp[4]."\t".$temp[6]."\t".$temp[7]."\t".$temp[-1]; } close IN; for (my $i=1;$i<=$#filein;$i++) { open IN,"<$filein[$i]"; #input file while (my $aline=<IN>) { chomp $aline; next if($aline=~/^\"/); my @temp=split/\t/,$aline; if (!(defined $hash{$temp[0]})) { print "Not find $temp[0]in sample one!\n"; next; } $hash{$temp[0]} .="\t".$temp[4]."\t".$temp[6]."\t".$temp[7]."\t".$temp[-1]; } close IN; } open OUT,">$fileout"; #output file my $deg_title; foreach (@mark) { $deg_title.="log2(Fold_change)\tp_value\tq_value\t".$_."\t"; } $deg_title=~s/\s+$//; my %function; my $title; open F,"<$opts{f}"; while (my $aline=<F>) { chomp $aline; if($aline=~/^\#/){ my $title=$aline; my @title=split/\t/,$aline; $title[2+$number].="\t".$deg_title; $title=join"\t",@title; print OUT "$title\n"; next; } my @temp=split/\t/,$aline; $temp[2+$number].="\t".$hash{$temp[0]}; my $temp=join"\t",@temp; print OUT "$temp\n"; } close F; close OUT; sub usage{ print <<"USAGE"; Version $version Usage: $0 -i -o -mark -f options: -i input file # -i output_score.txt -i output_score.txt -i output_score.txt -mark sample name # -mark sam1_VS_sam2 -mark sam1_VS_sam3 -mark sam2_VS_sam3 -f cluster file -n sample number -o output file -h help USAGE exit(1); }