diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java index 860100228e..cd64b5d017 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java @@ -23,6 +23,9 @@ public abstract class DockerWrapperAnalysisExecutor extends OpenCgaToolExecutor { +// protected String study; + protected Logger logger; + public final static String DOCKER_INPUT_PATH = "/data/input"; public final static String DOCKER_OUTPUT_PATH = "/data/output"; @@ -31,6 +34,10 @@ public abstract class DockerWrapperAnalysisExecutor extends OpenCgaToolExecutor public static final String DOCKER_CLI_MSG = "Docker CLI: "; + public DockerWrapperAnalysisExecutor() { + logger = LoggerFactory.getLogger(this.getClass()); + } + public String getDockerImageName() { return "opencb/opencga-ext-tools"; } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysis.java index 08f3bae915..8770d27247 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysis.java @@ -102,7 +102,7 @@ protected List getSteps() { return Arrays.asList(PREPARE_RESOURCES_STEP, ID); } - protected void run() throws ToolException { + protected void run() throws ToolException, IOException { // Download and copy liftover resource files in the job dir step(PREPARE_RESOURCES_STEP, this::prepareResources); @@ -110,16 +110,23 @@ protected void run() throws ToolException { step(ID, this::runLiftover); // Do we have to clean the liftover resource folder +// Files.newDirectoryStream(resourcePath).forEach(file -> { +// try { +// Files.delete(file); +// } catch (IOException e) { +// logger.warn("Error deleting file '{}': {}", file, e.getMessage()); +// } +// }); } - protected void prepareResources() throws IOException, ToolException { + private void prepareResources() throws IOException, ToolException { // Create folder where the liftover resources will be saved (within the job dir, aka outdir) resourcePath = Files.createDirectories(getOutDir().resolve(RESOURCES_FOLDER)); // Identify Liftover resources to download only the required ones Map> mapResources = new HashMap<>(); - switch (analysisParams.getTargetAssembly()) { + switch (analysisParams.getTargetAssembly().toUpperCase()) { case LIFTOVER_GRCH38: { mapResources.put(ID, Collections.singletonList("GRCh37_to_GRCh38.chain.gz")); mapResources.put("reference-genome", Arrays.asList("Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz", @@ -148,7 +155,7 @@ protected void prepareResources() throws IOException, ToolException { } } - protected void runLiftover() throws Exception { + private void runLiftover() throws Exception { // Get executor LiftoverWrapperAnalysisExecutor executor = getToolExecutor(LiftoverWrapperAnalysisExecutor.class); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysisExecutor.java index 53c7054dfb..08fdac65c7 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/liftover/LiftoverWrapperAnalysisExecutor.java @@ -43,7 +43,7 @@ public class LiftoverWrapperAnalysisExecutor extends DockerWrapperAnalysisExecut private String vcfDest; private Path resourcePath; - private Logger logger = LoggerFactory.getLogger(this.getClass()); +// private Logger logger = LoggerFactory.getLogger(this.getClass()); @Override protected void run() throws Exception { @@ -91,7 +91,7 @@ private void runLiftover(File file, Path outPath) throws ToolExecutorException { + " " + VIRTUAL_RESOURCES_FOLDER; // Execute Pythong script in docker - String dockerImage = "opencb/opencga-ext-tools:" + GitRepositoryState.getInstance().getBuildVersion(); + String dockerImage = getDockerImageName() + GitRepositoryState.getInstance().getBuildVersion(); String dockerCli = buildCommandLine(dockerImage, inputBindings, outputBinding, params, null); addEvent(Event.Type.INFO, "Docker command line: " + dockerCli); diff --git a/opencga-app/app/analysis/liftover/liftover.sh b/opencga-app/app/analysis/liftover/liftover.sh index 585613bbef..2c9c6b30b3 100644 --- a/opencga-app/app/analysis/liftover/liftover.sh +++ b/opencga-app/app/analysis/liftover/liftover.sh @@ -19,7 +19,7 @@ INPUT_FILE=$1 TARGET_ASSEMBLY=$2 ## Values accepted are: GRCh38, hg38 OUTPUT_DIR=$3 -RESOURCES_DIR=$4 +LOCAL_RESOURCES_DIR=$4 if [ -z "$INPUT_FILE" ] || [ -z "$TARGET_ASSEMBLY" ] || [ -z "$OUTPUT_DIR" ] || [ -z "$RESOURCES_DIR" ]; then echo "Usage: $0 " @@ -39,26 +39,26 @@ fi if [ $TARGET_ASSEMBLY == "GRCh38" ]; then echo "Liftover from GRCh37 to $TARGET_ASSEMBLY" -# -# ## Prepare GRCh37 and GRCh38 reference genomes -# if [ ! -f Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz ]; then + + ## Prepare GRCh37 and GRCh38 reference genomes +# if [ ! -f "${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz" ]; then # wget --no-check-certificate https://resources.opencb.org/opencb/opencga/analysis/commons/reference-genomes/Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz # fi # # if [ ! -f Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz ]; then # wget --no-check-certificate https://resources.opencb.org/opencb/opencga/analysis/commons/reference-genomes/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz # fi -# - echo "gunzip ${RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz" - gunzip ${RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz - SOURCE_REFERENCE_FILE="${RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa" - echo "gunzip ${RESOURCES_DIR}/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz" - gunzip ${RESOURCES_DIR}/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz - TARGET_REFERENCE_FILE="${RESOURCES_DIR}/Homo_sapiens.GRCh38.dna.primary_assembly.fa" + echo "gunzip ${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz" + gunzip ${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa.gz + SOURCE_REFERENCE_FILE="${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh37.dna.primary_assembly.fa" + + echo "gunzip ${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz" + gunzip ${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz + TARGET_REFERENCE_FILE="${LOCAL_RESOURCES_DIR}/Homo_sapiens.GRCh38.dna.primary_assembly.fa" # wget http://ftp.ensembl.org/pub/assembly_mapping/homo_sapiens/GRCh37_to_GRCh38.chain.gz - CHAIN_FILE="${RESOURCES_DIR}/GRCh37_to_GRCh38.chain.gz" + CHAIN_FILE="${LOCAL_RESOURCES_DIR}/GRCh37_to_GRCh38.chain.gz" elif [ $TARGET_ASSEMBLY == "hg38" ]; then echo "Liftover from hg19 to $TARGET_ASSEMBLY" # @@ -71,16 +71,16 @@ elif [ $TARGET_ASSEMBLY == "hg38" ]; then # wget https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz # fi # - echo "gunzip ${RESOURCES_DIR}/hg19.fa.gz" - gunzip ${RESOURCES_DIR}/hg19.fa.gz - SOURCE_REFERENCE_FILE="${RESOURCES_DIR}/hg19.fa" + echo "gunzip ${LOCAL_RESOURCES_DIR}/hg19.fa.gz" + gunzip ${LOCAL_RESOURCES_DIR}/hg19.fa.gz + SOURCE_REFERENCE_FILE="${LOCAL_RESOURCES_DIR}/hg19.fa" - echo "gunzip ${RESOURCES_DIR}/hg38.fa.gz" - gunzip ${RESOURCES_DIR}/hg38.fa.gz - TARGET_REFERENCE_FILE="${RESOURCES_DIR}/hg38.fa" + echo "gunzip ${LOCAL_RESOURCES_DIR}/hg38.fa.gz" + gunzip ${LOCAL_RESOURCES_DIR}/hg38.fa.gz + TARGET_REFERENCE_FILE="${LOCAL_RESOURCES_DIR}/hg38.fa" # wget http://hgdownload.cse.ucsc.edu/goldenpath/hg19/liftOver/hg19ToHg38.over.chain.gz - CHAIN_FILE="${RESOURCES_DIR}/hg19ToHg38.over.chain.gz" + CHAIN_FILE="${LOCAL_RESOURCES_DIR}/hg19ToHg38.over.chain.gz" else echo "Unsupported target assembly $TARGET_ASSEMBLY" exit 1 diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java index a3bfc2e615..df273d910f 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java @@ -567,14 +567,14 @@ public class FieldConstants { public static final String EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION = "Clinical analysis type: SINGLE or FAMILY."; // Liftover - public static final String LIFTOVER_GRCH38 = "GRCh38"; - public static final String LIFTOVER_HG38 = "hg38"; + public static final String LIFTOVER_GRCH38 = "GRCH38"; + public static final String LIFTOVER_HG38 = "HG38"; public static final String LIFTOVER_VCF_INPUT_FOLDER = "OPENCGA_VCF_INPUT_FOLDER"; public static final String LIFTOVER_FILES_DESCRIPTION = "List of VCF files to lift over"; public static final String LIFTOVER_TARGET_ASSEMBLY_DESCRIPTION = "Target assembly for lift over. Valid values: " + LIFTOVER_GRCH38 + " (for Ensembl) or " + LIFTOVER_HG38 + " (for NCBI)"; public static final String LIFTOVER_VCF_DESTINATION_DESCRIPTION = "Destination path where the lifted-over VCF files will be stored." + " If left empty, the VCF files will be stored in the job folder. If the keyword " + LIFTOVER_VCF_INPUT_FOLDER - + " is used, they will be stored in the same folder as the input VCF files. Otherwise, they will be stored in the specified" + + " is used, then VCF files be stored in the same folder as the input VCF files. Otherwise, they will be stored in the specified" + " destination path"; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/variant/LiftoverWrapperParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/variant/LiftoverWrapperParams.java index a8aea870f1..1e63676c00 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/variant/LiftoverWrapperParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/variant/LiftoverWrapperParams.java @@ -24,7 +24,7 @@ public class LiftoverWrapperParams extends ToolParams { - public static final String DESCRIPTION = "BCFtools +liftover plugin parameterss"; + public static final String DESCRIPTION = "BCFtools +liftover plugin parameters"; @DataField(id = "files", description = FieldConstants.LIFTOVER_FILES_DESCRIPTION, required = true) private List files;