App-Egaz
view release on metacpan or search on metacpan
lib/App/Egaz/Command/lpcnam.pm view on Meta::CPAN
my $cmd
= "chainMergeSort"
. " -inputList="
. Path::Tiny::path( $outdir, "chainList.tmp" )->stringify
. " > $outdir/all.$i.chain.tmp";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
Path::Tiny::path( $outdir, "chainList.tmp" )->remove;
$i++;
}
my $cmd = "chainMergeSort" . " $outdir/all.*.chain.tmp" . " > $outdir/all.chain";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
# chainPreNet - Remove chains that don't have a chance of being netted
# usage:
# chainPreNet in.chain target.sizes query.sizes out.chain
$cmd
= "chainPreNet"
. " $outdir/all.chain"
. " $args->[0]/chr.sizes"
. " $args->[1]/chr.sizes"
. " $outdir/all.pre.chain";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
}
#----------------------------#
# chain-net
#----------------------------#
{
# chainNet - Make alignment nets out of chains
# usage:
# chainNet in.chain target.sizes query.sizes target.net query.net
#
# netSyntenic - Add synteny info to net.
# usage:
# netSyntenic in.net out.net
my $cmd
= "chainNet -minSpace=1"
. " $outdir/all.pre.chain"
. " $args->[0]/chr.sizes"
. " $args->[1]/chr.sizes"
. " stdout" # $dir_lav/target.chainnet
. " $outdir/query.chainnet" . " | netSyntenic" . " stdin" . " $outdir/noClass.net";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
# netChainSubset - Create chain file with subset of chains that appear in
# the net
# usage:
# netChainSubset in.net in.chain out.chain
# options:
# -gapOut=gap.tab - Output gap sizes to file
# -type=XXX - Restrict output to particular type in net file
# -splitOnInsert - Split chain when get an insertion of another chain
# -wholeChains - Write entire chain references by net, don't split
# when a high-level net is encoundered. This is useful when nets
# have been filtered.
# -skipMissing - skip chains that are not found instead of generating
# an error. Useful if chains have been filtered.
#
# chainStitchId - Join chain fragments with the same chain ID into a single
# chain per ID. Chain fragments must be from same original chain but
# must not overlap. Chain fragment scores are summed.
# usage:
# chainStitchId in.chain out.chain
$cmd
= "netChainSubset -verbose=0 $outdir/noClass.net"
. " $outdir/all.chain"
. " stdout"
. " | chainStitchId"
. " stdin"
. " $outdir/over.chain";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
# netSplit - Split a genome net file into chromosome net files
# usage:
# netSplit in.net outDir
$cmd = "netSplit" . " $outdir/noClass.net" . " $outdir/net";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
}
#----------------------------#
# netToAxt
#----------------------------#
{
my @files = File::Find::Rule->file->name('*.net')->in("$outdir/net");
printf STDERR "* .net files: [%d]\n", scalar @files;
my $mce = MCE->new( chunk_size => 1, max_workers => $opt->{parallel}, );
$mce->foreach(
[ sort @files ],
sub {
my ( $self, $chunk_ref, $chunk_id ) = @_;
my $file = $chunk_ref->[0];
my $output = Path::Tiny::path($file)->basename;
$output .= ".axt.gz";
# netToAxt - Convert net (and chain) to axt.
# usage:
# netToAxt in.net in.chain target.2bit query.2bit out.axt
# note:
# directories full of .nib files (an older format)
# may also be used in place of target.2bit and query.2bit.
#
# axtSort - Sort axt files
# usage:
# axtSort in.axt out.axt
my $cmd
= "netToAxt"
. " $file"
. " $outdir/all.pre.chain"
. " $args->[0]/chr.2bit"
. " $args->[1]/chr.2bit"
. " stdout"
. " | axtSort stdin stdout"
. " | $gzip_bin >"
. " $outdir/axtNet/$output";
App::Egaz::Common::exec_cmd( $cmd, { verbose => $opt->{verbose}, } );
}
);
}
( run in 0.993 second using v1.01-cache-2.11-cpan-b16cb0d3907 )