BuKyung In a multi-sequence FASTA file, produce statistics such as sequence number, average seq length, GC content, AT content, etc

From Biolecture.org
Revision as of 21:01, 16 June 2016 by imported>Baik BuKyung

Back to Baik BuKyung


Source code:


#!/usr/bin/perl

 use strict;
 use warnings;
 open FH, ">", "outer.fasta" or die "$!\n";
 my $numberofseq=0;
 my @matrix;
 while(<>){
 if($_=~ />/){
  $matrix[$numberofseq]{seqname}=$_;
  $matrix[$numberofseq]{seqname}=~ s/\n//;
  
}
 else{
  $matrix[$numberofseq]{seq}=$_;
    $matrix[$numberofseq]{seq}=~ s/\n//;
  $numberofseq++;
}

}
 
for(my $i=0;$i<$numberofseq;$i++){

 my $count=0;
 $matrix[$i]{seqlen}=length($matrix[$i]{seq});
 for(my $j=0;$j<$matrix[$i]{seqlen};$j++){
  my $seq_char=substr($matrix[$i]{seq},$j,1);
  if($seq_char=~/[GC]/){
   $count++;
  }
  $matrix[$i]{GC}=$count;
 }

}
 
my $total_seqlen=0;

my $total_GC=0;
for(my $i=0;$i<$numberofseq;$i++){
 print FH ($matrix[$i]{seqname},"\n",$matrix[$i]{seq},"\n GC content is:",$matrix[$i]{GC},"\n");
 $total_seqlen=$total_seqlen+$matrix[$i]{seqlen};
 $total_GC=$total_GC+$matrix[$i]{GC};
}

print FH ("Average sequence length is :",$total_seqlen/$numberofseq,"\n GC contents:",$total_GC/$total_seqlen,"\n AT contents:",1-($total_GC/$total_seqlen),"\n")

 

 


 

Result

 

After the 6.pl is executed with the 5_100-length_Seq.fasta file, the outer.fasta file is generated.

The original content in the tert_Human.fasta file contains 5 fasta sequences with each length 100. The made this file.

 

>0
ACCACTACTAAGCGCATGAACGACTGTTAGGTTTCCGATGGCTGCTTGCGTTCCGTGTTCCAGCTGACTGGGCTGAACTATTTGTAATGTTGGTTGCACT
>1
CAGGTACACGGACTGTTTGGTTTGCCCAATTAATTGGCGGGTCGTAAACCGGTTTTTCGTTGGGCGCGGAGTTGTCGTAAACGGTCGGTATTAACTACCT
>2
ATATTCTGTTCGAAGGCGAGGCCTTAATAAACGGGCTCACACTATACGTTTCTAGCGTGCCAGTACGCGTATGCCCTGAGCAGCATCTTGAATAGTCCTT
>3
CACGTCTTGAGGCATGCTCACATAACTTGGGATTGATACAATCGGGGGACGGTAGCGGGGCTAGTGGGCATCGTCGGCGGTCTACGAGCAAAAGTATCAG
>4
CAGGACGTGAACCGAAAGCTGCACACCTATACTATCGTAGTATACCACCGTTCCGTAAATCCATCGCTGATCCTGCCATGAAGGGCTAAGTACGCATGAG

 

 

 

The content of outer.fasta file is

 

>0

ACCACTACTAAGCGCATGAACGACTGTTAGGTTTCCGATGGCTGCTTGCGTTCCGTGTTCCAGCTGACTGGGCTGAACTATTTGTAATGTTGGTTGCACT
 GC content is:0.49
>1
CAGGTACACGGACTGTTTGGTTTGCCCAATTAATTGGCGGGTCGTAAACCGGTTTTTCGTTGGGCGCGGAGTTGTCGTAAACGGTCGGTATTAACTACCT
 GC content is:0.5
>2
ATATTCTGTTCGAAGGCGAGGCCTTAATAAACGGGCTCACACTATACGTTTCTAGCGTGCCAGTACGCGTATGCCCTGAGCAGCATCTTGAATAGTCCTT
 GC content is:0.48
>3
CACGTCTTGAGGCATGCTCACATAACTTGGGATTGATACAATCGGGGGACGGTAGCGGGGCTAGTGGGCATCGTCGGCGGTCTACGAGCAAAAGTATCAG
 GC content is:0.55
>4
CAGGACGTGAACCGAAAGCTGCACACCTATACTATCGTAGTATACCACCGTTCCGTAAATCCATCGCTGATCCTGCCATGAAGGGCTAAGTACGCATGAG

 GC content is:0.5
 

Average sequence length is :100
 GC contents:0.504

 AT contents:0.496
 
 
I just add GC content of each sequence to the end of each sequence. At the end of the file, Average sequence length, GC contents and AT contents are printed.