塩基配列を逆相補鎖に変換する

塩基配列から逆相補鎖を求めてみましょう。

塩基配列を逆相補鎖に変換する(Perl)

塩基配列から逆相補鎖をPerlのプログラムで求めてみましょう。

use strict;
use warnings;

my $sequence = 'ATGCAGCCCCGGGTACTCC';
my $length = length $sequence;

my $result = '';
while ($sequence =~ /(.)/g) {
  my $char = $1;
  my $complement;
  if ($char eq 'A') { $complement = 'T'; }
  if ($char eq 'G') { $complement = 'C'; }
  if ($char eq 'C') { $complement = 'G'; }
  if ($char eq 'T') { $complement = 'A'; }
  $result = "$complement$result";
}

print "$result\n";

出力結果。

GGAGTACCCGGGGCTGCAT

塩基配列を逆相補鎖に変換する(SPVM)

塩基配列から逆相補鎖をSPVMのプログラムで求めてみましょう。

package Sequence {
  sub run : void () {
    my $sequence = "ATGCAGCCCCGGGTACTCC";
    my $length = length $sequence;

    my $reverse_complement = new byte[$length];
    for (my $i = 0; $i < $length; ++$i) {
      my $char = $sequence->[$i];
      my $complement : byte;
      if ($char == 'A') { $complement = 'T'; }
      if ($char == 'G') { $complement = 'C'; }
      if ($char == 'C') { $complement = 'G'; }
      if ($char == 'T') { $complement = 'A'; }
      $reverse_complement->[$length - $i - 1] = $complement;
    }
    print((string)$reverse_complement . "\n");
  }
}

出力結果。

$ perl -I. -e 'use SPVM "Sequence"; Sequence->run;'
GGAGTACCCGGGGCTGCAT

塩基配列を逆相補鎖に変換する(PerlからSPVM)

塩基配列から逆相補鎖をSPVMのプログラムで求めて、Perlから呼び出してみましょう。

# Sequence.spvm
package Sequence {
  sub reverse_complement : string ($sequence : string) {
    my $length = length $sequence;

    my $reverse_complement = new byte[$length];
    for (my $i = 0; $i < $length; ++$i) {
      my $char = $sequence->[$i];
      my $complement : byte;
      if ($char == 'A') { $complement = 'T'; }
      if ($char == 'G') { $complement = 'C'; }
      if ($char == 'C') { $complement = 'G'; }
      if ($char == 'T') { $complement = 'A'; }
      $reverse_complement->[$length - $i - 1] = $complement;
    }

    my $result = (string)$reverse_complement;

    return $result;
  }
}
# make_complement.pl
use strict;
use warnings;
use SPVM 'Sequence';

my $sequence = 'ATGCAGCCCCGGGTACTCC';
my $result = Sequence->reverse_complement($sequence);

print "$result\n";

出力結果。

$ perl -I. make_complement.pl
GGAGTACCCGGGGCTGCAT
Side Bar