App-SimulateReads
view release on metacpan or search on metacpan
lib/App/SimulateReads/Base.pm view on Meta::CPAN
};
}
binmode STDERR, ":encoding(utf8)";
our $LOG_VERBOSE = 1;
sub log_msg {
my ($msg) = @_;
return if not defined $msg;
chomp $msg;
say STDERR $msg if $LOG_VERBOSE;
}
sub import {
my ($class, @opts) = @_;
my $caller = caller;
# Import as in Moder::Perl
strict->import;
feature->import(':5.10');
utf8->import($caller);
lib/App/SimulateReads/Simulator.pm view on Meta::CPAN
my @fastq_entry;
try {
@fastq_entry = $self->sprint_fastq($tid, $i, $id,
\$fasta->{$id}{seq}, $fasta->{$id}{size}, $strand->());
} catch {
die "Not defined entry for seqid '>$id' at job $tid: $_";
} finally {
unless (@_) {
for my $fh_idx (0..$#fhs) {
$counter{$id}++;
$fhs[$fh_idx]->say(${$fastq_entry[$fh_idx]})
or die "Cannot write to $files_t[$fh_idx]: $!\n";
}
}
};
}
log_msg " => Job $tid: Writing and closing file: @files_t";
# Close temporary files
for my $fh_idx (0..$#fhs) {
$fhs[$fh_idx]->close
lib/App/SimulateReads/Simulator.pm view on Meta::CPAN
$fh[$fh_idx]->close
or die "Cannot write file $files{$fastq_class}[$fh_idx]: $!\n";
}
# Save counts
log_msg ":: Saving count file ...";
my $count_fh = $self->my_open_w($count_file, 0);
log_msg ":; Wrinting counts to $count_file ...";
while (my ($id, $count) = each %counters) {
$count_fh->say("$id\t$count");
}
# Just in case, calculate 'gene' like expression
my $parent_count = $self->_calculate_parent_count(\%counters);
if (defined $parent_count) {
while (my ($id, $count) = each %$parent_count) {
$count_fh->say("$id\t$count");
}
}
# Close $count_file
log_msg ":; Writing and closing $count_file ...";
$count_fh->close
or die "Cannot write file $count_file: $!\n";
# Clean up the mess
log_msg ":: Removing temporary files ...";
( run in 0.453 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )