#!/usr/bin/perl

use strict;
use Getopt::Long;
use Bio::SeqIO;


my $usage = qq {
Description:
   This program takes an input csfasta file and print the basespace fasta
   to the STDOUT.
Usage:
   perl $0 -i csfasta -d [flag]
   -i|--input      specify the input csfasta to be translated
   -d|--discard    do you wann discard the first base [0]
   -h|--help       dispaly this info
};
my $help = 0;
my $discard_1st = 0;
my $input = '';
GetOptions(
    '-h|help'      => sub {die $usage},
    '-i|input=s'   => \$input,
    '-d|discard:s' => \$discard_1st );


my $csfasta_file = $input;
my %colourspace = colour_space();
my $shift = $discard_1st;
my $sequence = "";
open(CSFASTA, $csfasta_file);
while( my $line = <CSFASTA> ){
    if( $line =~ /\>/){         # encounters a new sequence             
    	if($sequence){
	    print STDOUT convert($sequence),"\n";
	}
	print STDOUT $line; 
	$sequence = "";
    }else{ 
	chomp($line); 
	$sequence .= $line;
    }
    
}
print STDOUT convert($sequence),"\n";
close( CSFASTA );

exit;



sub convert{
    my ($sequence) = @_;
    my @letters = split//, $sequence;
    my $first_base = $letters[0];
    for(my $i = 1; $i < @letters ; $i++){
	my $colour = $letters[$i];
	if ($colour ne '.'){
	    $letters[$i] = $colourspace{$first_base.$colour};
	}else{
	    $letters[$i] = 'N';
	}
	
    }
    return join("", @letters);
}


sub colour_space{

    my %hash = (
	"A0" => "A",
	"A1" => "C",
	"A2" => "G",
	"A3" => "T",
	"C0" => "C",
	"C1" => "A",
	"C2" => "T",
	"C3" => "G",
	"G0" => "G",
	"G1" => "T",
	"G2" => "A",
	"G3" => "C",
	"T0" => "T",
	"T1" => "G",
	"T2" => "C",
	"T3" => "A");
    return %hash;


}




