Mercurial > repos > amadeo > amadeo
diff Tools/Motif_search/rules_galaxy.pl @ 0:229d36377838 draft
Uploaded
author | amadeo |
---|---|
date | Mon, 05 Sep 2016 05:53:08 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Tools/Motif_search/rules_galaxy.pl Mon Sep 05 05:53:08 2016 -0400 @@ -0,0 +1,95 @@ +#!/usr/bin/perl -w + +$|=1; +use warnings; +use strict; +#Script that looks for genes that have motifs from a certain rule. + +#Declaration of variables +my $line; +my $line2; +my @cols; +my @cols2; +my %hash; +my %hash1; +my %hash3; + +my $gene; +my $TF; +my $num_motifs; +my @genes_rules; + + +$num_motifs=$ARGV[2]; + + +open(FIMO, "<$ARGV[0]") || + die "File '$ARGV[0]' not found\n"; + +open(OUTPUT, ">$ARGV[1]") || + die "File '>$ARGV[1]' not found\n"; + + +while (<FIMO>) { + $line=$_; + chomp $line; + @cols=split; + if (not $line=~/^ /){ + $TF= substr $cols[8],5,8; + $gene=substr $cols[0],0,21; + + if (not exists $hash{$gene}) { + $hash1{$gene}=0; + + } + if (not exists $hash{$gene}{$TF}) { + $hash1{$gene}++; + $hash{$gene}{$TF}=1; + #print $hash1{$gene}; + } + + + if ($hash1{$gene}==$num_motifs and not exists $hash3{$gene}) { + $hash3{$gene}=1; + #print $line, "\n"; + + } + + + + } + +} + +close FIMO; +open(FIMO, "<$ARGV[0]") || + die "File '$ARGV[0]' not found\n"; + +while (<FIMO>) { + $line2=$_; + chomp $line2; + @cols2=split; + + if (not $line2=~/^ /){ + $TF= substr $cols2[8],5,8; + $gene=substr $cols2[0],0,21; + foreach my $gene_listed (keys %hash3){ + + if ($gene_listed eq $gene) { + printf OUTPUT "%s\n", $line2; + + } + + + } + + } +} + + +print "Genes that have this rule:", "\n"; +foreach my $gene_listed (keys %hash3){ + print $gene_listed,"\n"; + } + +