Bioinfo
view release on metacpan or search on metacpan
lib/Bioinfo/App/Cmd/Fasta/Cmd/Split.pm view on Meta::CPAN
package Bioinfo::App::Cmd::Fasta::Cmd::Split;
use Modern::Perl;
use Moo;
use MooX::Cmd;
use MooX::Options prefer_commandline => 1;
use IO::All;
our $VERSION = '0.1.15'; # VERSION:
# ABSTRACT: my perl module and CLIs for Biology
option input => (
is => 'ro',
required => 1,
format => 's',
short => 'i',
doc => 'a file of fasta format'
);
option num => (
is => 'ro',
format => 'i',
short => 'n',
doc => ''
);
option outdir => (
is => 'ro',
format => 's',
short => 'o',
doc => '',
);
option prefix => (
is => 'ro',
format => 's',
short => 'p',
default => sub { '' },
doc => 'the prefix of the split file',
);
sub execute {
my ($self, $args_ref, $chain_ref) = @_;
$self->options_usage unless (@$args_ref);
my $input = $self->input;
my $outdir = $self->outdir;
my $num = $self->num;
my $prefix = $self->prefix;
system("mkdir -p $outdir") unless -e $outdir;
my %id2seq;
my $io_fa = io($input)->chomp;
my ($total_base, $seqid) = (0, '');
while (defined (my $line = $io_fa->getline)) {
if ($line =~/^>/) {
$seqid = $line;
} else {
$id2seq{$seqid} .= $line;
$total_base += length($line);
( run in 1.128 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )