Skip to content

Commit

Permalink
fix(assembler): do not skip flavor (#350)
Browse files Browse the repository at this point in the history
* fix(assembler): do not skip flavor

* fix(assembly): do not use xlarge
  • Loading branch information
pbelmann authored Feb 22, 2024
1 parent efd1725 commit 8ec47be
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 7 deletions.
2 changes: 1 addition & 1 deletion main.nf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ include { wSaveSettingsList } from './modules/config/module'
include { pPublish as pPublishIllumina; pPublish as pPublishOnt; } from './modules/utils/processes'
include { wShortReadQualityControlFile; wShortReadQualityControlList} from './modules/qualityControl/shortReadQC'
include { wOntQualityControlFile; wOntQualityControlList} from './modules/qualityControl/ontQC'
include { wShortReadAssemblyFile; wShortReadAssemblyList } from './modules/assembly/shortReadAssembler'
include { wShortReadAssemblyFile; wShortReadAssemblyList; wTestMemSelection } from './modules/assembly/shortReadAssembler'
include { wOntAssemblyFile; wOntAssemblyList } from './modules/assembly/ontAssembler'
include { wShortReadBinningList } from './modules/binning/shortReadBinning'
include { wLongReadBinningList } from './modules/binning/ontBinning'
Expand Down
42 changes: 36 additions & 6 deletions modules/assembly/shortReadAssembler.nf
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def getNextHigherResource = { exitCodes, exitStatus, resourceType, attempt, memo
return currentResourceType;
} else {
// if the exit code is not known then the memory value should not be increased
FLAVOR_INDEX_CONSTANT_TO_ADD = 0
FLAVOR_INDEX_CONSTANT_TO_ADD = 1
def currentResource = getResources(memory, tool, defaults, sample, FLAVOR_INDEX_CONSTANT_TO_ADD);
def currentResourceType = currentResource[resourceType];

Expand Down Expand Up @@ -148,6 +148,30 @@ process pMetaspades {
}


/*
*
* This workflow is only meant for testing purposes.
*
*/
workflow wTestMemSelection {
main:
exitCode = -9
attempt = 2
flavorRAMPredicted = "34"
resourcesFlavor = params.resources.highmemXLarge
outCPUs = getNextHigherResource([-9, 137, 247], exitCode, "cpus", attempt, \
flavorRAMPredicted, params.steps.assembly.megahit, \
resourcesFlavor, "SAMPLE")

outRAM = getNextHigherResource([-9, 137, 247], exitCode, "memory", attempt, \
flavorRAMPredicted, params.steps.assembly.megahit, \
resourcesFlavor, "SAMPLE")

println("CPUs: " + outCPUs)
println("RAM: " + outRAM)
}



/*
* Input:
Expand Down Expand Up @@ -255,6 +279,8 @@ def getResources(predictedMemory, assembler, defaults, sample, attempt){
// get memory values as list
def memorySet = memoryLabelMap.keySet().sort()



switch(assembler.resources.RAM.mode){
case 'PREDICT':
def predictedMemoryCeil = (int)Math.ceil(Float.parseFloat(predictedMemory))
Expand All @@ -264,7 +290,7 @@ def getResources(predictedMemory, assembler, defaults, sample, attempt){
def sortedUpdatedMemorySet = updatedMemorySet.sort()
def predictedMemoryIndex = sortedUpdatedMemorySet.findIndexOf({ it == predictedMemoryCeil })

def nextHigherMemoryIndex = predictedMemoryIndex + attempt + 1
def nextHigherMemoryIndex = predictedMemoryIndex + attempt

if(nextHigherMemoryIndex >= sortedUpdatedMemorySet.size()){
// In case it is already the highest possible memory setting
Expand Down Expand Up @@ -293,19 +319,23 @@ def getResources(predictedMemory, assembler, defaults, sample, attempt){
}
break;
case 'DEFAULT':

// If the memory value is not predicted do the following
def defaultCpus = defaults.cpus

def defaultMemory = defaults.memory

def defaultMemoryIndex = memorySet.findIndexOf({ it == defaultMemory })

def nextHigherMemoryIndex = defaultMemoryIndex + attempt
def nextHigherMemoryIndex = defaultMemoryIndex + attempt - 1

if(defaultMemoryIndex >= memorySet.size()){

if(nextHigherMemoryIndex >= memorySet.size()){
// In case it is already the highest possible memory setting
// then try the label with the highest memory
println("Warning: Predicted Memory " + predictedMemoryCeil \
+ " of the dataset " + sample + " is greater or equal to the flavour with the largest RAM specification.")
println("Warning: Highest possible memory setting " \
+ " of the dataset " + sample + " is already reached." \
+ " Retry will be done using a flavor with the highest possible RAM configuration")

def label = memoryLabelMap[memorySet[memorySet.size()-1]]
def cpus = labelMap[label]["cpus"]
Expand Down

0 comments on commit 8ec47be

Please sign in to comment.