Skip to content
Snippets Groups Projects

Draft: Add WGS read reconstruction for ROI

Open Workum, Dirk-Jan van requested to merge add_wgs_roi into add_gfa_export
Compare and
13 files
+ 1017
63
Compare changes
  • Side-by-side
  • Inline
Files
13
@@ -2,14 +2,18 @@ package nl.wur.bif.pantools.analysis.region_analysis;
import nl.wur.bif.pantools.Pantools;
import nl.wur.bif.pantools.utils.BeanUtils;
import nl.wur.bif.pantools.utils.FileUtils;
import nl.wur.bif.pantools.utils.Globals;
import nl.wur.bif.pantools.utils.GraphUtils;
import nl.wur.bif.pantools.utils.cli.mixins.SelectGenomes;
import nl.wur.bif.pantools.utils.cli.mixins.ThreadNumber;
import nl.wur.bif.pantools.utils.cli.validation.Constraints.OutputDirectory;
import picocli.CommandLine.*;
import java.nio.file.Path;
import java.util.concurrent.Callable;
import static nl.wur.bif.pantools.utils.Globals.THREADS;
import static nl.wur.bif.pantools.utils.Globals.setGenomeSelectionOptions;
/**
@@ -20,6 +24,7 @@ import static nl.wur.bif.pantools.utils.Globals.setGenomeSelectionOptions;
@OutputDirectory(directory = "outputPath")
public class ExtractFunctionsCLI implements Callable<Integer> {
@Spec Model.CommandSpec spec;
@Mixin private ThreadNumber threadNumber;
@ArgGroup private SelectGenomes selectGenomes;
@ParentCommand
@@ -75,6 +80,11 @@ public class ExtractFunctionsCLI implements Callable<Integer> {
)
private boolean writeRepeats;
@Option(names = {"--reads-file"},
description = "Tab-delimited file with library names and corresponding read files. Default: none"
)
private Path readsFile;
//TODO: add --write-blast option to visualize BLASTP and BLASTN results
private String[] functions;
@@ -103,20 +113,21 @@ public class ExtractFunctionsCLI implements Callable<Integer> {
GraphUtils.validateRepeats(); // check that repeats are present
}
// determine whether to use the fast option
boolean fast = !writeGfa && !writeUnitigs;
// always use fast option, except when writing GFA or unitigs, or using read files
boolean fast = !writeGfa && !writeUnitigs && readsFile == null;
if (!fast) {
Pantools.logger.warn("Using a slow method for extraction.");
}
final RegionExtractor regionExtractor = new RegionExtractor(outputPath);
regionExtractor.extractFunctions(functions, flanking, writeAnnotations, writeGfa, writeHomology, writeUnitigs, writeRepeats, fast);
regionExtractor.extractFunctions(functions, flanking, writeAnnotations, writeGfa, writeHomology, writeUnitigs, writeRepeats, FileUtils.parseReadsFile(readsFile), fast);
return 0;
}
private void setGlobalParameters() {
setGenomeSelectionOptions(selectGenomes);
THREADS = threadNumber.getnThreads();
}
private void crossValidate() {
@@ -126,6 +137,11 @@ public class ExtractFunctionsCLI implements Callable<Integer> {
throw new ParameterException(spec.commandLine(), "Functions must be GO, InterPro, Pfam or TIGRFAM");
}
}
// Assert that K is smaller than 64 when using reads (because of storing 2bit version of k-mers in long)
if (readsFile != null && Globals.K_SIZE > 63) {
throw new ParameterException(spec.commandLine(), "K should be smaller than 63 when using reads");
}
}
public Pantools getPantools() {
Loading