biology/canu: Upgrade to 1.8, add experimental SLURM integration

Solves build issue with gcc8.

PR:             232930
Reported by:    gerald
Approved by:    jrm (mentor, implicit)
This commit is contained in:
Jason W. Bacon 2018-11-04 14:29:02 +00:00
parent ac7664c507
commit 9726120ffe
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=484077
5 changed files with 102 additions and 31 deletions

View file

@ -2,8 +2,7 @@
PORTNAME= canu
DISTVERSIONPREFIX= v
DISTVERSION= 1.7
PORTREVISION= 2
DISTVERSION= 1.8
CATEGORIES= biology java perl5
MAINTAINER= jwb@FreeBSD.org
@ -21,9 +20,10 @@ RUN_DEPENDS= gnuplot:math/gnuplot
USES= compiler:openmp gmake perl5
USE_JAVA= yes
USE_GITHUB= yes
JAVA_RUN= yes
JAVA_VERSION= 1.8+
USE_GITHUB= yes
GH_ACCOUNT= marbl
WRKSRC_SUBDIR= src
@ -44,12 +44,12 @@ post-patch:
# Upstream does not want to use lib/perl5/site_perl
post-build:
${MKDIR} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
@${MKDIR} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
${MV} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/site_perl \
${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
do-install:
${MKDIR} ${STAGEDIR}${PREFIX}
@${MKDIR} ${STAGEDIR}${PREFIX}
(cd ${WRKSRC}${PREFIX}/FreeBSD-${ARCH} && \
${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX})
# STRIP_CMD fails without this on 11.1 under poudriere

View file

@ -1,3 +1,3 @@
TIMESTAMP = 1524325169
SHA256 (marbl-canu-v1.7_GH0.tar.gz) = c5be54b0ad20729093413e7e722a19637d32e966dc8ecd2b579ba3e4958d378a
SIZE (marbl-canu-v1.7_GH0.tar.gz) = 2533016
TIMESTAMP = 1540317173
SHA256 (marbl-canu-v1.8_GH0.tar.gz) = 30ecfe574166f54f79606038830f68927cf0efab33bdc3c6e43fd1448fa0b2e4
SIZE (marbl-canu-v1.8_GH0.tar.gz) = 2465314

View file

@ -0,0 +1,19 @@
--- pipelines/canu/Defaults.pm.orig 2018-06-19 17:20:30 UTC
+++ pipelines/canu/Defaults.pm
@@ -812,6 +812,16 @@ sub setDefaults () {
setDefault("gridEngineArraySubmitID", undef, "Grid engine configuration, not documented");
setDefault("gridEngineJobID", undef, "Grid engine configuration, not documented");
+ ##### Slurm-specific parameters for controlling the number of
+ ##### cores / tasks dispatched per step or globally (WIP)
+
+ setDefault( 'slurmCormhapCoreLimit', undef, 'Maximum number of cores allocated for MHAP pre-computing and alignment within the correction phase' );
+ setDefault( 'slurmOvbCoreLimit', undef, 'Maximum number of single-core tasks dispatched for the ovlStore bucketizing step within the trimming phase' );
+ setDefault( 'slurmOvsCoreLimit', undef, 'Maximum number of single-core tasks dispatched for the ovlStore sorting step within the trimming phase' );
+ setDefault( 'slurmRedCoreLimit', undef, 'Maximum number of cores allocated for read error detection within the unitigging phase' );
+ setDefault( 'slurmArrayTaskLimit', undef, 'Maximum number of tasks permitted for each step throughout assembly' );
+ setDefault( 'slurmArrayCoreLimit', undef, 'Maximum number of cores allocated for each step throughout assembly' );
+
##### Grid Engine Pipeline
setDefault("useGrid", 1, "If 'true', enable grid-based execution; if 'false', run all jobs on the local machine; if 'remote', create jobs for grid execution but do not submit; default 'true'");

View file

@ -1,8 +1,6 @@
$NetBSD$
--- pipelines/canu/Execution.pm.orig 2017-04-17 19:32:38 UTC
--- pipelines/canu/Execution.pm.orig 2018-06-18 02:42:11 UTC
+++ pipelines/canu/Execution.pm
@@ -293,10 +293,6 @@ sub skipStage ($$@) {
@@ -303,10 +303,6 @@ sub skipStage ($$@) {
sub getInstallDirectory () {
my $installDir = $FindBin::RealBin;
@ -13,3 +11,68 @@ $NetBSD$
return($installDir);
}
@@ -694,8 +690,8 @@ sub submitScript ($$) {
-sub buildGridArray ($$$$) {
- my ($name, $bgn, $end, $opt) = @_;
+sub buildGridArray (@) {
+ my ( $name, $bgn, $end, $opt, $thr ) = @_;
my $off = 0;
# In some grids (SGE) this is the maximum size of an array job.
@@ -725,8 +721,42 @@ sub buildGridArray ($$$$) {
$off = "-F \"$off\"";
}
- $opt =~ s/ARRAY_NAME/$name/g; # Replace ARRAY_NAME with 'job name'
- $opt =~ s/ARRAY_JOBS/$bgn-$end/g; # Replace ARRAY_JOBS with 'bgn-end'
+ if( $opt =~ m/(ARRAY_NAME)/ )
+ {
+ $opt =~ s/$1/$name/; # Replace ARRAY_NAME with 'job name'
+ }
+ elsif( $opt =~ m/(ARRAY_JOBS)/ )
+ {
+ $opt =~ s/$1/$bgn-$end/; # Replace ARRAY_JOBS with 'bgn-end'
+
+ if( lc( getGlobal( 'gridEngine' ) ) eq 'slurm' && $end > 1 )
+ {
+ if( $name =~ m/^cormhap_/i && defined getGlobal( 'slurmCormhapCoreLimit' ) )
+ {
+ $opt .= '%' . int( getGlobal( 'slurmCormhapCoreLimit' ) / $thr );
+ }
+ elsif( $name =~ m/^ovb_/i && defined getGlobal( 'slurmOvbCoreLimit' ) )
+ {
+ $opt .= '%' . getGlobal( 'slurmOvbCoreLimit' );
+ }
+ elsif( $name =~ m/^ovs_/i && defined getGlobal( 'slurmOvsCoreLimit' ) )
+ {
+ $opt .= '%' . getGlobal( 'slurmOvsCoreLimit' );
+ }
+ elsif( $name =~ m/^red_/i && defined getGlobal( 'slurmRedCoreLimit' ) )
+ {
+ $opt .= '%' . int( getGlobal( 'slurmRedCoreLimit' ) / $thr );
+ }
+ elsif( defined getGlobal( 'slurmArrayTaskLimit' ) )
+ {
+ $opt .= '%' . getGlobal( 'slurmArrayTaskLimit' );
+ }
+ elsif( defined getGlobal( 'slurmArrayCoreLimit' ) )
+ {
+ $opt .= '%' . int( getGlobal( 'slurmArrayCoreLimit' ) / $thr );
+ }
+ }
+ }
return($opt, $off);
}
@@ -870,7 +900,7 @@ sub buildGridJob ($$$$$$$$$) {
my $jobNameT = makeUniqueJobName($jobType, $asm);
my ($jobName, $jobOff) = buildGridArray($jobNameT, $bgnJob, $endJob, getGlobal("gridEngineArrayName"));
- my ($arrayOpt, $arrayOff) = buildGridArray($jobNameT, $bgnJob, $endJob, getGlobal("gridEngineArrayOption"));
+ my ( $arrayOpt, $arrayOff ) = buildGridArray( $jobNameT, $bgnJob, $endJob, getGlobal( "gridEngineArrayOption" ), $thr );
my $outputOption = buildOutputOption($path, $script);

View file

@ -4,14 +4,9 @@ bin/bogus
bin/canu
bin/canu.defaults
bin/correctOverlaps
bin/createFalconSenseInputs
bin/dumpBlob
bin/edalign
bin/erateEstimate
bin/errorEstimate
bin/estimate-mer-threshold
bin/existDB
bin/falcon_sense
bin/falconsense
bin/fastqAnalyze
bin/fastqSample
@ -21,21 +16,16 @@ bin/filterCorrectionLayouts
bin/filterCorrectionOverlaps
bin/findErrors
bin/findErrors-Dump
bin/gatekeeperCreate
bin/gatekeeperDumpFASTQ
bin/gatekeeperDumpMetaData
bin/gatekeeperPartition
bin/generateCorrectionLayouts
bin/leaff
bin/loadCorrectedReads
bin/loadErates
bin/loadTrimmedReads
bin/maskMers
bin/merTrim
bin/meryl
bin/mhapConvert
bin/mmapConvert
bin/ovStoreBucketizer
bin/ovStoreBuild
bin/ovStoreConfig
bin/ovStoreDump
bin/ovStoreIndexer
bin/ovStoreSorter
@ -45,14 +35,15 @@ bin/overlapImport
bin/overlapInCore
bin/overlapInCorePartition
bin/overlapPair
bin/positionDB
bin/prefixEditDistance-matchLimitGenerate
bin/readConsensus
bin/sequence
bin/simple
bin/simple-dump
bin/splitHaplotype
bin/splitReads
bin/sqStoreCreate
bin/sqStoreCreatePartition
bin/sqStoreDumpFASTQ
bin/sqStoreDumpMetaData
bin/tgStoreCompress
bin/tgStoreCoverageStat
bin/tgStoreDump
@ -60,17 +51,14 @@ bin/tgStoreFilter
bin/tgStoreLoad
bin/tgTigDisplay
bin/trimReads
bin/trioCanu
bin/utgcns
bin/wtdbgConvert
lib/libcanu.a
lib/libleaff.a
%%SITE_PERL%%/canu/Configure.pm
%%SITE_PERL%%/canu/Consensus.pm
%%SITE_PERL%%/canu/CorrectReads.pm
%%SITE_PERL%%/canu/Defaults.pm
%%SITE_PERL%%/canu/ErrorEstimate.pm
%%SITE_PERL%%/canu/Execution.pm
%%SITE_PERL%%/canu/Gatekeeper.pm
%%SITE_PERL%%/canu/Grid.pm
%%SITE_PERL%%/canu/Grid_Cloud.pm
%%SITE_PERL%%/canu/Grid_DNANexus.pm
@ -88,5 +76,6 @@ lib/libleaff.a
%%SITE_PERL%%/canu/OverlapMhap.pm
%%SITE_PERL%%/canu/OverlapStore.pm
%%SITE_PERL%%/canu/Report.pm
%%SITE_PERL%%/canu/SequenceStore.pm
%%SITE_PERL%%/canu/Unitig.pm
%%JAVAJARDIR%%/mhap-2.1.3.jar