view NEUMA-1.2.1/filter_exclusive_NRgene_from_gene_table.pl @ 0:c44c43d185ef draft default tip

NEUMA-1.2.1 Uploaded
author chawhwa
date Thu, 08 Aug 2013 00:46:13 -0400
parents
children
line wrap: on
line source

#!/usr/bin/perl


if(@ARGV<2) { print "usage: $0 gene2NM_file table_file > output_file\n"; exit; }

my $gene2NM_file = shift @ARGV;
my $table_file = shift @ARGV;

my %gene2NM=();
&filtered_gene2NM($gene2NM_file,\%gene2NM);
&read_and_print_table($table_file,\%gene2NM);






sub read_and_print_table {
  my $table_file = shift @_;
  my $pGene2NM = shift @_;
  open TABLE, $table_file or die "Can't open gene table file $table_file\n";
  chomp(my $header=<TABLE>); print "$header\n";
  while(<TABLE>){
   chomp;
   my @line = split/\t/;
   my $gid = shift @line;
   if(exists $pGene2NM->{$gid}) { print "$_\n"; }
  }
  close TABLE;
}




sub filtered_gene2NM{
  my $gene2NM_file = shift @_;
  my $pGene2NM = shift @_;

  my %gene2NM_total = ();
  my %gene2NR = ();
  open GENE2NM, $gene2NM_file or die "Can't open gene2NM_file $gene2NM_file\n";
  while(<GENE2NM>){
   chomp;
   my ($gid,$rid) = split/\t/;
   $gene2NM_total{$gid}++;
   if($rid=~/^NR/) { $gene2NR{$gid}++; }
  }
  close GENE2NM;
  
  for my $gid (keys %gene2NM_total){
   if(!exists $gene2NR{$gid} || $gene2NM_total{$gid} > $gene2NR{$gid}){
     $pGene2NM->{$gid}=1;
   }
  }
}