<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[BOL: Calculate Dinucleotide Frequency with Perl]]></title>
	<link>https://bioinformaticsonline.com/snippets/view/34584/calculate-dinucleotide-frequency-with-perl?</link>
	<atom:link href="https://bioinformaticsonline.com/snippets/view/34584/calculate-dinucleotide-frequency-with-perl?" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/snippets/view/34584/calculate-dinucleotide-frequency-with-perl</guid>
	<pubDate>Sun, 10 Dec 2017 05:51:42 -0600</pubDate>
	<link>https://bioinformaticsonline.com/snippets/view/34584/calculate-dinucleotide-frequency-with-perl</link>
	<title><![CDATA[Calculate Dinucleotide Frequency with Perl]]></title>
	<description><![CDATA[<code>#!/usr/bin/perl -w
use strict;

my ($genome, $head, $tail);
my (%mono_nt, %di_nt);

$/ = &quot;&gt;&quot;;
open my $fasta, &#039;&lt;&#039;, $ARGV[0] or die $!;
while (&lt;$fasta&gt;) {
    chomp; s/\r//g; s/^\s*|\s*$//;
    if (/.+?\n(.+)/s) {
        (my $seq = $1) =~ s/\n//g;
        $genome .= uc $seq;
        $head = uc substr($seq, 0, 1);
        $di_nt{&quot;$tail$head&quot;}-- if $tail;
        $tail = uc substr($seq, -1);
    }
}
close $fasta;

my $len = length $genome;
for my $i (0..$len-2) {
    my $each_mono_nt = substr($genome, $i, 1);
    my $each_di_nt   = substr($genome, $i, 2);
    $mono_nt{$each_mono_nt}++;
    $di_nt{$each_di_nt}++;
}
$mono_nt{$tail}++;

print &quot;-&quot;x30, &quot;\nSingle nucleotide frequency:\n&quot;;
for my $nt (sort keys %mono_nt) {print &quot;$nt\t&quot;, $mono_nt{$nt} / $len, &quot;\n&quot;;}

print &quot;\n&quot;, &quot;-&quot;x30, &quot;\nDinucleotide frequency:\nDinucleotide\tObs. freq.\tExp. freq.\n&quot;;
for my $nt_pair (sort keys %di_nt) {
    my ($first_nt, $second_nt) = split //, $nt_pair;
    print &quot;$nt_pair\t&quot;, $di_nt{$nt_pair} / ($len-1), &quot;\t&quot;,
        $mono_nt{$first_nt} * $mono_nt{$second_nt} /$len /$len, &quot;\n&quot;;
}</code>]]></description>
	<dc:creator>Rahul Nayak</dc:creator>
</item>

</channel>
</rss>