#!/usr/bin/perl

use Bio::SeqIO;

my $infile = $ARGV[0];
my $step = $ARGV[1];

if($step%2)
{
print "Please input a even number\n\n";
}
if($step%2)
{
die;
}


$step=$step/2;
open(OUT, ">spliced.fa");
my $seq_io = Bio::SeqIO->new(-file => "$infile", -format => "genbank");
my $count=0;
my $id=1;
while( my $seq_obj = $seq_io->next_seq )
{
my $accession = $seq_obj->accession_number;
my $location;
my $genoseq = $seq_obj->seq;
foreach my $feat_object ( $seq_obj->get_SeqFeatures )
		{my ($gene_name) = $feat_object->get_tag_values('gene') if $feat_object->has_tag('gene');
				my ($locus_tag) = $feat_object->get_tag_values('locus_tag') if $feat_object->has_tag('locus_tag');
				my $strand = $feat_object->strand;
				my $location;
				my $sequence;
				my $translation;
	
	if ($feat_object->primary_tag eq "CDS")
	{
		next if ($feat_object->has_tag('pseudo'));
		$count++;
		my $loc_strand = $feat_object->strand;
	if ( $feat_object->location->isa('Bio::Location::SplitLocationI') )
				{
					my $endf=0;
					my $startf=0;
					foreach my $loc ( $feat_object->location->sub_Location )
					{
						if($endf)
						{
							my $s=$loc->start;
							
								my $str=substr($genoseq,$endf-$step,$step).substr($genoseq,$s-1,$step);
							print OUT ">$accession|$id|(",$endf-$step+1,",$endf)($s,",$s+$step-1,")\n$str\n";
							$id++;
						}
						$location = $location . "(" . $loc->start . ".." . $loc->end . ")";
						$endf=$loc->end;
						$startf=$loc->start;
	
				}
				}
			#	print OUT "\n";			
				
			}
		}
		
	}print $count,"\n";

close(OUT);

