From d78f80ee7362f5cc40a686e323ca6ad625ae3441 Mon Sep 17 00:00:00 2001 From: rdk Date: Tue, 10 Mar 2026 03:24:44 +0100 Subject: [PATCH] Extract writeCases() method, rename sites.csv to observed_sites.csv Consolidate case CSV writing into Evaluation.writeCases(). Remove duplicate DSO_0.1 criterion and stale TODO comments. --- .../routines/results/EvalResults.groovy | 10 +++---- .../routines/results/Evaluation.groovy | 26 ++++++++++++++----- .../routines/results/PredictResults.groovy | 9 +------ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/main/groovy/cz/siret/prank/program/routines/results/EvalResults.groovy b/src/main/groovy/cz/siret/prank/program/routines/results/EvalResults.groovy index 77cdef36..9d0c6d12 100644 --- a/src/main/groovy/cz/siret/prank/program/routines/results/EvalResults.groovy +++ b/src/main/groovy/cz/siret/prank/program/routines/results/EvalResults.groovy @@ -314,13 +314,9 @@ class EvalResults extends ResultsBase { origEval.sort() eval.sort() - String casedir = "$outdir/cases" - mkdirs(casedir) - writeFile "$casedir/proteins.csv", eval.toProteinsCSV() - writeFile "$casedir/ligands.csv", eval.toLigandsCSV() - writeFile "$casedir/sites.csv", eval.toSitesCSV() - writeFile "$casedir/predicted_pockets.csv", eval.toPocketsCSV() - writeFile "$casedir/ranks.csv", eval.toRanksCSV() + String casedir = mkdirs("$outdir/cases") + + eval.writeCases(casedir) if (rescoring) { writeFile "$casedir/ranks_original.csv", origEval.toRanksCSV() } diff --git a/src/main/groovy/cz/siret/prank/program/routines/results/Evaluation.groovy b/src/main/groovy/cz/siret/prank/program/routines/results/Evaluation.groovy index ec0b5574..e5d0371b 100644 --- a/src/main/groovy/cz/siret/prank/program/routines/results/Evaluation.groovy +++ b/src/main/groovy/cz/siret/prank/program/routines/results/Evaluation.groovy @@ -20,6 +20,12 @@ import static cz.siret.prank.geom.Atoms.union import static cz.siret.prank.utils.Cutils.head import static cz.siret.prank.utils.Cutils.newSynchronizedList import static cz.siret.prank.utils.Formatter.* +import static cz.siret.prank.utils.Futils.mkdirs +import static cz.siret.prank.utils.Futils.writeFile +import static cz.siret.prank.utils.Futils.writeFile +import static cz.siret.prank.utils.Futils.writeFile +import static cz.siret.prank.utils.Futils.writeFile +import static cz.siret.prank.utils.Futils.writeFile import static java.util.Collections.emptyList /** @@ -856,7 +862,7 @@ class Evaluation implements Parametrized { m.OPT2 = 100*m.DCA_4_0_PC + 50*m.DCA_4_2_PC + 5*m.AVG_LIGCOV_SUCC + 3*m.AVG_DSO_SUCC - + // write predicted scores to file if requested // TODO: move this somewhere else (getStats() shouldn't write to disk) if (StringUtils.isNotBlank(params.log_scores_to_file)) { PrintWriter w = new PrintWriter(new BufferedWriter( @@ -907,7 +913,6 @@ class Evaluation implements Parametrized { new DSO("DSO_0.3", 0.3), new DSO("DSO_0.2", 0.2), new DSO("DSO_0.1", 0.1), - new DSO("DSO_0.1", 0.1), new DSO("DSO_0.05", 0.05), new DPA("DPA_1", 1), @@ -1041,7 +1046,7 @@ class Evaluation implements Parametrized { */ String toRanksCSV() { StringBuilder csv = new StringBuilder() - csv << "file,#ligands,ligand," + criteria.list.join(",") + "\n" + csv << "file,#ligands,ligand," + criteria.list.join(",") + "\n" ligandRows.each { row -> csv << "$row.protName,$row.ligCount,$row.ligName," + row.ranks.join(",") + "\n" } @@ -1051,7 +1056,7 @@ class Evaluation implements Parametrized { String toProteinsCSV() { StringBuilder csv = new StringBuilder() - csv << "name,#atoms,#proteinAtoms,#chains,chainNames,#ligands,#pockets,ligandNames,#ignoredLigands,ignoredLigNames,#smallLigands,smallLigNames,#distantLigands,distantLigNames\n" + csv << "name,#atoms,#proteinAtoms,#chains,chainNames,#ligands,#pockets,ligandNames,#ignoredLigands,ignoredLigNames,#smallLigands,smallLigNames,#distantLigands,distantLigNames\n" for (ProteinRow p in proteinRows) { csv << "$p.name,$p.atoms,$p.protAtoms,$p.chains,$p.chainNames,$p.ligands,$p.pockets,$p.ligNames,$p.ignoredLigands,$p.ignoredLigNames,$p.smallLigands,$p.smallLigNames,$p.distantLigands,$p.distantLigNames\n" @@ -1067,7 +1072,6 @@ class Evaluation implements Parametrized { for (PocketRow p in pocketRows) { csv << "$p.protName,$p.ligCount,$p.pocketCount,$p.pocketName,$p.ligName," - // TODO possibly problematic, occasional groovy error in sprintf csv << "$p.rank,$p.score,$p.newRank,${fmtCsv(p.oldScore)},${fmtCsv(p.auxInfo.zScoreTP)},${fmtCsv(p.auxInfo.probaTP)},$p.auxInfo.samplePoints,${fmtCsv(p.auxInfo.rawNewScore)},$p.pocketVolume,$p.surfaceAtomCount" csv << "\n" } @@ -1075,6 +1079,16 @@ class Evaluation implements Parametrized { return csv.toString() } +//===========================================================================================================// + + void writeCases(String dir) { + writeFile "$dir/proteins.csv", this.toProteinsCSV() + writeFile "$dir/ligands.csv", this.toLigandsCSV() + writeFile "$dir/observed_sites.csv", this.toSitesCSV() + writeFile "$dir/predicted_pockets.csv", this.toPocketsCSV() + writeFile "$dir/ranks.csv", this.toRanksCSV() + } + //===========================================================================================================// static class ProteinRow { @@ -1108,8 +1122,6 @@ class Evaluation implements Parametrized { double ligandCoverageSucc // coverage only considering those ligands that were successfully predicted according to DCA(4) double surfOverlapSucc // overlap only considering those ligands that were successfully predicted according to DCA(4) -// double protDCA_4_0 - int sasPoints } diff --git a/src/main/groovy/cz/siret/prank/program/routines/results/PredictResults.groovy b/src/main/groovy/cz/siret/prank/program/routines/results/PredictResults.groovy index 0695b369..341dd0bb 100644 --- a/src/main/groovy/cz/siret/prank/program/routines/results/PredictResults.groovy +++ b/src/main/groovy/cz/siret/prank/program/routines/results/PredictResults.groovy @@ -66,14 +66,7 @@ class PredictResults extends ResultsBase { if (logIndividualCases) { evaluation.sort() - - String casedir = "$outdir/cases" - mkdirs(casedir) - - writeFile "$casedir/proteins.csv", evaluation.toProteinsCSV() - writeFile "$casedir/ligands.csv", evaluation.toLigandsCSV() - writeFile "$casedir/pockets.csv", evaluation.toPocketsCSV() - writeFile "$casedir/ranks.csv", evaluation.toRanksCSV() + evaluation.writeCases("$outdir/cases") } log.info "\n" + CSV.tabulate(classifier_stats) + "\n\n"