User Tools

Site Tools


gc_skew.pl
#!/usr/bin/perl

use Bio::SeqIO;

$window = 5000; # 10 kb
$shift = 5000;   # 2 kb

$seqIn = Bio::SeqIO->new(-file => $ARGV[0], -format => 'fasta');
$seqObj = $seqIn->next_seq();
$seqStr = $seqObj->seq();
$length = $seqObj->length();
@whole_seq = split //, $seqStr;

$cum_GC_skew = 0;

for ($i = 1; $i <= $length; $i += $shift) {
    $end = $i + $shift - 1;
    $end = $length if $end > $length;
    $frag = $seqObj->trunc($i, $end)->seq();
    $G = ($frag =~ s/g/G/ig);
    $C = ($frag =~ s/c/C/ig);
    $GC_skew = ($G - $C) / ($G + $C);
    $cum_GC_skew += $GC_skew;
    $GC = ($G + $C) / $window;
    print join "\t", $i, $GC_skew, $cum_GC_skew, $GC . "\n";
}
gc_skew.pl.txt · Last modified: 2021/03/17 13:09 by 127.0.0.1