Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TASK-6324 - Simplify QC analysis by launching a single job #2469

Open
wants to merge 25 commits into
base: release-3.x.x
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
833d0f3
analysis: update alignment QC analysis in order to launch a single jo…
jtarraga May 31, 2024
483c1be
Merge branch 'develop' into TASK-6324
jtarraga Jun 13, 2024
b0aea7b
app: fix circos.R and move to app/analysis/genome-plot, #TASK-6326, #…
jtarraga Jun 14, 2024
333e6dc
analysis: add FastQC docker cli in the result.json file, and remove u…
jtarraga Jun 18, 2024
177f1a2
analysis: add Samtools docker CLI in the result.json file, and remove…
jtarraga Jun 18, 2024
512c17d
analysis: use ToolRunner to execute each alignment QC step (i.e.: sam…
jtarraga Jun 18, 2024
65a1bdd
analysis: support the flag overwrite, and forward excetions, and mino…
jtarraga Jun 18, 2024
55c81ff
test: add JUnit tests for alignment QC, #TASK-6325, #TASK-6324
jtarraga Jun 18, 2024
0d78abd
analysis: add docker CLI and parameters in the tool step, fix some ty…
jtarraga Jun 19, 2024
af024c6
analysis: add parameters in the tool step, #TASK-6326, #TASK-6324
jtarraga Jun 19, 2024
edb882b
analysis: add docker CLI and parameters in the tool step (in genome p…
jtarraga Jun 19, 2024
39c2f6a
analysis: add the method addStepAttributes, #TASK-6326, #TASK-6324
jtarraga Jun 19, 2024
7e3ca47
analysis: use the ToolRunner instead of launching jobs for each sampl…
jtarraga Jun 19, 2024
f88c703
analysis: remove unused get/set methods and R scripts, #TASK-6325, #T…
jtarraga Jun 19, 2024
aed7911
analysis: update circos/genome plot to take the R script from the ana…
jtarraga Jun 19, 2024
592c793
tests: add and update JUnit tests for sample QC, #TASK-6326, #TASK-6324
jtarraga Jun 19, 2024
11a8653
Merge branch 'develop' into TASK-6324
jtarraga Jun 19, 2024
9f6913b
analysis: add a new tool step to update the alignment QC, #TASK-6325,…
jtarraga Jun 19, 2024
4518a72
analysis: minor improvements in sample QC analysis, #TASK-6326, #TASK…
jtarraga Jun 19, 2024
06d46a7
analysis: read the stderr file to get error messages when something w…
jtarraga Jun 20, 2024
37faea0
analysis: add the result of the "nested" analysis to the current step…
jtarraga Jun 21, 2024
0531c48
analysis: use a simpler ToolRunner constructor, #TASK-6325, #TASK-6324
jtarraga Jun 21, 2024
a53bd04
analysis: use a simpler ToolRunner constructor, #TASK-6326, #TASK-6324
jtarraga Jun 21, 2024
f77ca2e
Merge branch 'release-3.2.x' into TASK-6324
jtarraga Jul 22, 2024
8666ba9
Merge branch 'release-3.2.x' into TASK-6324
jtarraga Aug 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public class AlignmentQcAnalysis extends OpenCgaToolScopeStudy {
public static final String SAMTOOLS_FLAGSTATS_STEP = "samtools-flagstats";
public static final String PLOT_BAMSTATS_STEP = "plot-bamstats";
public static final String FASTQC_METRICS_STEP = "fastqc-metrics";
public static final String UPDATE_FILE_ALIGNMENT_QC_STEP = "update-file-alignment-qc";

@ToolParams
protected final AlignmentQcParams alignmentQcParams = new AlignmentQcParams();
Expand All @@ -72,6 +73,7 @@ public class AlignmentQcAnalysis extends OpenCgaToolScopeStudy {
private boolean runSamtoolsStatsStep = true;
private boolean runSamptoolsFlagstatsStep = true;
private boolean runFastqcMetricsStep = true;
private boolean updateQcStep = true;

private File catalogBamFile;
private File catalogStatsFile;
Expand Down Expand Up @@ -138,6 +140,8 @@ protected void check() throws Exception {
logger.warn(msg);
}
}

updateQcStep = (runSamptoolsFlagstatsStep || runSamtoolsStatsStep || runFastqcMetricsStep) ? true : false;
}

@Override
Expand All @@ -153,13 +157,17 @@ protected List<String> getSteps() {
if (runFastqcMetricsStep) {
steps.add(FASTQC_METRICS_STEP);
}
if (updateQcStep) {
steps.add(UPDATE_FILE_ALIGNMENT_QC_STEP);
}
return steps;
}

@Override
protected void run() throws ToolException {
// Create the tool runner
toolRunner = new ToolRunner(opencgaHome, catalogManager, StorageEngineFactory.get(variantStorageManager.getStorageConfiguration()));
toolRunner = new ToolRunner(getOpencgaHome().toString(), catalogManager,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can better use the constructor

  • public ToolRunner(String opencgaHome, CatalogManager catalogManager, VariantStorageManager variantStorageManager)

instead of

  • ToolRunner(String opencgaHome, CatalogManager catalogManager, StorageEngineFactory storageEngineFactory)

StorageEngineFactory.get(variantStorageManager.getStorageConfiguration()));

// Get alignment QC metrics to update
if (catalogBamFile.getQualityControl() != null) {
Expand All @@ -179,13 +187,8 @@ protected void run() throws ToolException {
if (runFastqcMetricsStep) {
step(FASTQC_METRICS_STEP, this::runFastqcMetrics);
}

// Finally, update file quality control
try {
FileUpdateParams fileUpdateParams = new FileUpdateParams().setQualityControl(fileQc);
catalogManager.getFileManager().update(study, catalogBamFile.getId(), fileUpdateParams, QueryOptions.empty(), token);
} catch (CatalogException e) {
throw new ToolException("Error updating alignment quality control", e);
if (updateQcStep) {
step(UPDATE_FILE_ALIGNMENT_QC_STEP, this::updateAlignmentQc);
}
}

Expand Down Expand Up @@ -373,4 +376,14 @@ private void runFastqcMetrics() throws ToolException {
FastQcMetrics fastQcMetrics = AlignmentFastQcMetricsAnalysis.parseResults(outPath, configuration.getJobDir());
fileQc.getAlignment().setFastQcMetrics(fastQcMetrics);
}

private void updateAlignmentQc() throws ToolException {
// Finally, update file quality control
try {
FileUpdateParams fileUpdateParams = new FileUpdateParams().setQualityControl(fileQc);
catalogManager.getFileManager().update(study, catalogBamFile.getId(), fileUpdateParams, QueryOptions.empty(), token);
} catch (CatalogException e) {
throw new ToolException("Error updating alignment quality control", e);
}
}
}