#!/usr/bin/perl -w use strict; use warnings; #Initiate all variables, hashes and co #Open folders in working directy my @folders = glob("*"); #to get all folders in directory; extension ("*") as wildcard to get all names foreach my $folder(@folders) #to speak to each element in directory { next if ($folder!~/^UNITAS_/); #skip elements which do not start with "UNITAS" opendir(DIR,$folder)||die print$!; #open folder, end script when opening is not possible (DIR is the "filehandle" for the directory) print"\n$folder"; while( my $file=readdir(DIR)) #returns content of folder { next if($file!~/\.mapped_sequences$/); #get the mapped_sequences file we need to read out the reads print"\n$file"; #print out file names to make sure we get the right files my $reads = 0; #set the number of reads to 0 for each run open my $fileone, '<', "$folder/$file" or die ""$folder/$file": $!"; while(my $tocount=<$fileone>)#read file { chomp $tocount; $tocount =~ s/>//g; #remove all ">" next if ($tocount =~ /[A-Za-z]/); #skip lines which contain the sequence if ($tocount =~ /[0-9]/) #get the read-number { print"\n$tocount"; $reads = ($reads + $tocount); # add up all reads } print"\n$reads"; } close $fileone; my $trftable = 'unitas.tRF-table.txt'; #save file name in variable open my $trf, '<', "$folder/$trftable" or die ""$folder/$trftable": $!"; undef = <$trf> for 1 .. 4; my %hash = (); #initiate empty hash while( my $line=<$trf>) { chomp $line; my @line=split("\t",$line); if($line[0]=~s/tRNA-[^-]+-...//) # "tRNA-"(matched tRNA und -) "[^-]+" beginning bis Ende, egal was "-..."(weiterer Strich bis Ende) { my $tRNAname=$line[0]; $tRNAname=$&; # "$&" = last pattern match print"\n$tRNAname"; } else { my $tRNAname=$line[0]; $tRNAname=~s/-ENS.+$//; # "-ENS.+$" ( matched allen die -ENS. bis Ende enthalten) print"\n$tRNAname"; } my $hash{$tRNAname}{"5p-tR-halves"}+=$line[1]/$reads*1000000; $hash{$tRNAname}{"5p-tRFs"}+=$line[3]/$reads*1000000; $hash{$tRNAname}{"3p-tR-halves"}+=$line[5]/$reads*1000000; $hash{$tRNAname}{"3p-CCA-tRFs"}+=$line[7]/$reads*1000000; $hash{$tRNAname}{"3p-tRFs"}+=$line[9]/$reads*1000000; $hash{$tRNAname}{"tRF-1"}+=$line[11]/$reads*1000000; $hash{$tRNAname}{"tRNA-leader"}+=$line[13]/$reads*1000000; $hash{$tRNAname}{"misc-tRFs"}+=$line[15]/$reads*1000000; } open my $merge,">>","$folder/$merge" or die "Could not open $folder/$merge : $!"; my @tRF_types=("5p-tR-halves","5p-tRFs","3p-tR-halves","3p-CCA-tRFs","3p-tRFs","tRF-1","tRNA-leader","misc-tRFs"); foreach $tRNAname(sort{$a cmp $b}keys%hash) #sortiert die alphabetisch nach keys { print MERGE $tRNAname; # print tRNA name foreach my $tRF_type(@tRF_types) { print MERGE"\t$hash{$tRNAname}{$tRF_type}"; # print counts for each tRF type separated by tab } print MERGE"\n";# print newline } close TRF; close MERGE; close DIR; } }