From 29e75fe994c7b512387b7765f186a5937f00bbfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 2 Apr 2024 12:32:00 +0200 Subject: [PATCH 1/5] analysis: take into account the clinical analysis type before running the Exomiser analysis; and add JUnit test, #TASK-5603 --- .../ExomiserInterpretationAnalysis.java | 10 +++ .../exomiser/ExomiserWrapperAnalysis.java | 1 + .../ExomiserWrapperAnalysisExecutor.java | 41 +++++++----- .../ExomiserInterpretationAnalysisTest.java | 33 +++++++++- .../VariantInternalCommandExecutor.java | 2 + .../options/VariantCommandOptions.java | 4 ++ .../managers/AbstractClinicalManagerTest.java | 59 ++++++++++++++++-- .../test/resources/biofiles/HG104.1k.vcf.gz | Bin 0 -> 24986 bytes .../test/resources/biofiles/HG105.1k.vcf.gz | Bin 0 -> 27768 bytes .../test/resources/biofiles/HG106.1k.vcf.gz | Bin 0 -> 24417 bytes .../test/resources/biofiles/HG107.1k.vcf.gz | Bin 0 -> 24985 bytes .../clinical/ExomiserWrapperParams.java | 14 ++++- 12 files changed, 142 insertions(+), 22 deletions(-) create mode 100644 opencga-catalog/src/test/resources/biofiles/HG104.1k.vcf.gz create mode 100644 opencga-catalog/src/test/resources/biofiles/HG105.1k.vcf.gz create mode 100644 opencga-catalog/src/test/resources/biofiles/HG106.1k.vcf.gz create mode 100644 opencga-catalog/src/test/resources/biofiles/HG107.1k.vcf.gz diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java index 39fa4fd581c..0ae02104c82 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java @@ -68,6 +68,7 @@ public class ExomiserInterpretationAnalysis extends InterpretationAnalysis { private String studyId; private String clinicalAnalysisId; private String sampleId; + private ClinicalAnalysis.Type clinicalAnalysisType; private ClinicalAnalysis clinicalAnalysis; @@ -116,6 +117,14 @@ protected void check() throws Exception { } sampleId = clinicalAnalysis.getProband().getSamples().get(0).getId(); + if (clinicalAnalysis.getType() == ClinicalAnalysis.Type.FAMILY) { + clinicalAnalysisType = ClinicalAnalysis.Type.FAMILY; + } else { + clinicalAnalysisType = ClinicalAnalysis.Type.SINGLE; + } + logger.info("The clinical analysis type is {}, so the Exomiser will be run in mode {}", clinicalAnalysis.getType(), + clinicalAnalysisType); + // Update executor params with OpenCGA home and session ID setUpStorageEngineExecutor(studyId); } @@ -128,6 +137,7 @@ protected void run() throws ToolException { getToolExecutor(ExomiserWrapperAnalysisExecutor.class) .setStudyId(studyId) .setSampleId(sampleId) + .setClinicalAnalysisType(clinicalAnalysisType) .execute(); saveInterpretation(studyId, clinicalAnalysis); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java index 3d8253861a4..172f8629135 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java @@ -52,6 +52,7 @@ protected void run() throws Exception { getToolExecutor(ExomiserWrapperAnalysisExecutor.class) .setStudyId(study) .setSampleId(analysisParams.getSample()) + .setSampleId(analysisParams.getSample()) .execute(); }); } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java index 86bb3760b3c..cdbb24c2ab8 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java @@ -18,6 +18,7 @@ import org.opencb.opencga.catalog.managers.FamilyManager; import org.opencb.opencga.core.exceptions.ToolException; import org.opencb.opencga.core.exceptions.ToolExecutorException; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.family.Family; import org.opencb.opencga.core.models.individual.Individual; import org.opencb.opencga.core.tools.annotations.ToolExecutor; @@ -50,6 +51,7 @@ public class ExomiserWrapperAnalysisExecutor extends DockerWrapperAnalysisExecut private String studyId; private String sampleId; + private ClinicalAnalysis.Type clinicalAnalysisType; private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -100,22 +102,24 @@ public void run() throws ToolException { // Check multi-sample (family) analysis File pedigreeFile = null; Pedigree pedigree = null; - if (individual.getMother() != null && individual.getMother().getId() != null - && individual.getFather() != null && individual.getFather().getId() != null) { - Family family = IndividualQcUtils.getFamilyByIndividualId(getStudyId(), individual.getId(), - getVariantStorageManager().getCatalogManager(), getToken()); - if (family != null) { - pedigree = FamilyManager.getPedigreeFromFamily(family, individual.getId()); - } - - if (pedigree != null) { - if (individual.getFather() != null) { - samples.add(individual.getFather().getSamples().get(0).getId()); + if (clinicalAnalysisType == ClinicalAnalysis.Type.FAMILY) { + if (individual.getMother() != null && individual.getMother().getId() != null + && individual.getFather() != null && individual.getFather().getId() != null) { + Family family = IndividualQcUtils.getFamilyByIndividualId(getStudyId(), individual.getId(), + getVariantStorageManager().getCatalogManager(), getToken()); + if (family != null) { + pedigree = FamilyManager.getPedigreeFromFamily(family, individual.getId()); } - if (individual.getMother() != null) { - samples.add(individual.getMother().getSamples().get(0).getId()); + + if (pedigree != null) { + if (individual.getFather() != null) { + samples.add(individual.getFather().getSamples().get(0).getId()); + } + if (individual.getMother() != null) { + samples.add(individual.getMother().getSamples().get(0).getId()); + } + pedigreeFile = createPedigreeFile(family, pedigree); } - pedigreeFile = createPedigreeFile(family, pedigree); } } File sampleFile = createSampleFile(individual, hpos, pedigree); @@ -483,4 +487,13 @@ public ExomiserWrapperAnalysisExecutor setSampleId(String sampleId) { this.sampleId = sampleId; return this; } + + public ClinicalAnalysis.Type getClinicalAnalysisType() { + return clinicalAnalysisType; + } + + public ExomiserWrapperAnalysisExecutor setClinicalAnalysisType(ClinicalAnalysis.Type clinicalAnalysisType) { + this.clinicalAnalysisType = clinicalAnalysisType; + return this; + } } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java index 001e44792cf..04d8147529b 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java @@ -71,7 +71,7 @@ public void testNormalization() throws NonStandardCompliantSampleField { } @Test - public void singleExomiserAnalysis() throws IOException, CatalogException, ToolException { + public void singleSingleExomiserAnalysis() throws IOException, CatalogException, ToolException { assumeThat(Paths.get("/opt/opencga/analysis/resources/exomiser").toFile().exists(), is(true)); prepareExomiserData(); @@ -98,11 +98,11 @@ public void singleExomiserAnalysis() throws IOException, CatalogException, ToolE } @Test - public void familyExomiserAnalysis() throws IOException, CatalogException, ToolException { + public void trioFamilyExomiserAnalysis() throws IOException, CatalogException, ToolException { assumeThat(Paths.get("/opt/opencga/analysis/resources/exomiser").toFile().exists(), is(true)); prepareExomiserData(); - outDir = Paths.get(opencga.createTmpOutdir("_interpretation_analysis_family")); + outDir = Paths.get(opencga.createTmpOutdir("_interpretation_analysis_trio_family")); ClinicalAnalysis clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() .get(clinicalTest.studyFqn, clinicalTest.CA_ID3, QueryOptions.empty(), clinicalTest.token).first(); @@ -124,6 +124,33 @@ public void familyExomiserAnalysis() throws IOException, CatalogException, ToolE System.out.println("results at out dir = " + outDir.toAbsolutePath()); } + @Test + public void trioSingleExomiserAnalysis() throws IOException, CatalogException, ToolException { + assumeThat(Paths.get("/opt/opencga/analysis/resources/exomiser").toFile().exists(), is(true)); + + prepareExomiserData(); + outDir = Paths.get(opencga.createTmpOutdir("_interpretation_analysis_trio_single")); + + ClinicalAnalysis clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() + .get(clinicalTest.studyFqn, clinicalTest.CA_ID4, QueryOptions.empty(), clinicalTest.token).first(); + assertEquals(0, clinicalAnalysis.getSecondaryInterpretations().size()); + + ExomiserInterpretationAnalysis exomiser = new ExomiserInterpretationAnalysis(); + + exomiser.setUp(opencga.getOpencgaHome().toAbsolutePath().toString(), new ObjectMap(), outDir, clinicalTest.token); + exomiser.setStudyId(clinicalTest.studyFqn) + .setClinicalAnalysisId(clinicalTest.CA_ID4); + + ExecutionResult result = exomiser.start(); + + // Refresh clinical analysis + clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() + .get(clinicalTest.studyFqn, clinicalTest.CA_ID4, QueryOptions.empty(), clinicalTest.token).first(); + assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); + assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + System.out.println("results at out dir = " + outDir.toAbsolutePath()); + } + private void prepareExomiserData() throws IOException { Path opencgaHome = opencga.getOpencgaHome(); Path exomiserDataPath = opencgaHome.resolve("analysis/resources"); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java index e502850d9ee..34ee91a796e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java @@ -62,6 +62,7 @@ import org.opencb.opencga.core.common.YesNoAuto; import org.opencb.opencga.core.exceptions.AnalysisExecutionException; import org.opencb.opencga.core.exceptions.ToolException; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.common.mixins.GenericRecordAvroJsonMixin; import org.opencb.opencga.core.models.operations.variant.*; @@ -1017,6 +1018,7 @@ private void exomiser() throws Exception { ObjectMap params = new ExomiserWrapperParams( cliOptions.sample, + ClinicalAnalysis.Type.valueOf(cliOptions.clinicalAnalysisType), cliOptions.outdir) .toObjectMap(cliOptions.commonOptions.params).append(ParamConstants.STUDY_PARAM, cliOptions.study); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java index bad1beff087..daedb022e2c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java @@ -48,6 +48,7 @@ import org.opencb.opencga.app.cli.internal.InternalCliOptionsParser; import org.opencb.opencga.core.api.FieldConstants; import org.opencb.opencga.core.api.ParamConstants; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.variant.AnnotationVariantQueryParams; import org.opencb.opencga.core.models.variant.SampleVariantFilterParams; import org.opencb.opencga.core.tools.variant.IndividualQcAnalysisExecutor; @@ -1844,6 +1845,9 @@ public class ExomiserAnalysisCommandOptions { @Parameter(names = {"--sample"}, description = "Sample ID.", required = true) public String sample; + @Parameter(names = {"--analysis-mode"}, description = "Analysis mode, valid values: SINGLE or FAMILY") + public String clinicalAnalysisType = ClinicalAnalysis.Type.SINGLE.name(); + @Parameter(names = {"-o", "--outdir"}, description = "Output directory.") public String outdir; } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java index 58b08381342..d9f384a5789 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java @@ -56,7 +56,8 @@ public class AbstractClinicalManagerTest extends GenericTest { public final static String PROBAND_ID2 = "manuel_individual"; public final static String CA_ID3 = "clinical-analysis-3"; - public final static String PROBAND_ID3 = "HG005_individual"; + + public final static String CA_ID4 = "clinical-analysis-4"; @Rule public ExpectedException thrown = ExpectedException.none(); @@ -127,7 +128,7 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta catalogUploadFile("/biofiles/exomiser.vcf.gz"); //--------------------------------------------------------------------- - // Chinese trio (clinicalAnalysis3) + // Chinese trio: FAMILY (clinicalAnalysis3) //--------------------------------------------------------------------- Individual hg006Individual = new Individual().setId("HG006_individual") @@ -154,14 +155,14 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta .setSex(SexOntologyTermAnnotation.initFemale()) .setSamples(Collections.singletonList(new Sample().setId("HG004"))); - Family chineseFamily = new Family("chinese_family", "chinese_family", null, null, + Family chineseFamily = new Family("chinese_trio_family", "chinese_trio_family", null, null, Arrays.asList(hg005Individual, hg006Individual, hg007Individual, hg004Individual), "", 4, Collections.emptyList(), Collections.emptyMap()); catalogManager.getFamilyManager().create(studyFqn, chineseFamily, QueryOptions.empty(), token).first(); auxClinicalAnalysis = new ClinicalAnalysis() .setId(CA_ID3) - .setDescription("My description - exomiser - trio") + .setDescription("My description - exomiser - trio - family") .setType(ClinicalAnalysis.Type.FAMILY) .setDueDate("20180510100000") .setDisorder(getDisorder()) @@ -175,6 +176,56 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta catalogUploadFile("/biofiles/HG005.1k.vcf.gz"); catalogUploadFile("/biofiles/HG006.1k.vcf.gz"); catalogUploadFile("/biofiles/HG007.1k.vcf.gz"); + + //--------------------------------------------------------------------- + // Chinese trio: SINGLE (clinicalAnalysis4) + //--------------------------------------------------------------------- + + Individual hg106Individual = new Individual().setId("HG106_individual") + .setPhenotypes(Collections.emptyList()) + .setSex(SexOntologyTermAnnotation.initMale()) + .setSamples(Collections.singletonList(new Sample().setId("HG106"))); + + Individual hg107Individual = new Individual().setId("HG107_individual") + .setPhenotypes(Collections.emptyList()) + .setSex(SexOntologyTermAnnotation.initFemale()) + .setSamples(Collections.singletonList(new Sample().setId("HG107"))); + + Individual hg105Individual = new Individual().setId("HG105_individual") + .setDisorders(Collections.singletonList(getDisorder())) + .setPhenotypes(getPhenotypes()) + .setFather(hg106Individual) + .setMother(hg107Individual) + .setSex(SexOntologyTermAnnotation.initMale()) + .setSamples(Collections.singletonList(new Sample().setId("HG105"))); + + Individual hg104Individual = new Individual().setId("HG104_individual") + .setFather(hg106Individual) + .setMother(hg107Individual) + .setSex(SexOntologyTermAnnotation.initFemale()) + .setSamples(Collections.singletonList(new Sample().setId("HG104"))); + + Family chineseSingle = new Family("chinese_trio_single", "chinese_trio_single", null, null, + Arrays.asList(hg105Individual, hg106Individual, hg107Individual, hg104Individual), "", 4, Collections.emptyList(), + Collections.emptyMap()); + catalogManager.getFamilyManager().create(studyFqn, chineseSingle, QueryOptions.empty(), token).first(); + + auxClinicalAnalysis = new ClinicalAnalysis() + .setId(CA_ID4) + .setDescription("My description - exomiser - trio - single") + .setType(ClinicalAnalysis.Type.SINGLE) + .setDueDate("20180510100000") + .setDisorder(getDisorder()) + .setProband(hg105Individual) + .setFamily(chineseSingle); + + catalogManager.getClinicalAnalysisManager().create(studyFqn, auxClinicalAnalysis, QueryOptions.empty(), token) + .first(); + + catalogUploadFile("/biofiles/HG104.1k.vcf.gz"); + catalogUploadFile("/biofiles/HG105.1k.vcf.gz"); + catalogUploadFile("/biofiles/HG106.1k.vcf.gz"); + catalogUploadFile("/biofiles/HG107.1k.vcf.gz"); } private void catalogUploadFile(String path) throws IOException, CatalogException { diff --git a/opencga-catalog/src/test/resources/biofiles/HG104.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG104.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..4237b056dfaf746b1d7dfa8606969d62d624a4e2 GIT binary patch literal 24986 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 literal 0 HcmV?d00001 diff --git a/opencga-catalog/src/test/resources/biofiles/HG105.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG105.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..4bb5c469f015fb572582ac3eac06496022d8c240 GIT binary patch literal 27768 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 PtjPU8Cl^gm$&m*DOH->O literal 0 HcmV?d00001 diff --git a/opencga-catalog/src/test/resources/biofiles/HG106.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG106.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..47cec223765fd3f095c6e3f9e07170a878c7decb GIT binary patch literal 24417 zcmV(#K;*w4iwFqq#|vfv14u_PFg7kRYc6(UW&rG6TT>&+m43#*LecZG8?I*aeyKK& z!1OfJVcJ7C%!D1`2%>-jw4)0niEj69_`myP)-6ja2?-8RK>0zQMyiu1Gr#=KB{NU` z@WVxakY0=@!(_Je>)wa2Vw?Tp2miMrgeqc~fWPe>?0h}DfNy5$r1!Spd)s?E zb{}v5H~E@O&nErrS?|ro&FE~_ACG#I^lUsi|F8e<{r^wp7NL8ho=5=I3Gy}wLZ z$~07R!!YzzrA$o>kyazf)TK;mxd55`{xVG|Q%K5<;_Ch~Z7Gu*ZiS}${xT`4gmP^) z3g{`Vgi2zRLJ`UWO_`RQAWS{2))Ez53C;|H&}uOeO$65zLuj>{2(^|{gVFtRIa$I1 zR03hu({ec(&ZHKCBFHS4lObHgBw^@TE+=Ue)rumlP*$!cCE$NlA*@hVE+(NgvDP54 z6D!veEKh2LLICLBD;8Bm5U`;4m-&xUP0g4V6hY*tQcWcl#u7UD>qn+xovW|(WRi@| z$HU4*NrGWV%O>RRfh< zfioX@KR{kX8&sh9H)TH-?FBa!!zHVlSnLM3D5;35i3W?InL)ALWgCko1A;(~F&VOG zqJav9VFDx2R7D#N&Y*#oG153x7gj?qta56kv=~97E;_Qvxy%rQG9g79e35i1Wl~~z zB84l$oBRZ#G0aod#v)rm*oEPDR!uAt3Ds6>jBIP!Mgt)#i9)(n8;evTfJsniyutZ2 z)H2j=EK&(2+;9XcsoH4p4K3FQ#9lSAxX9se7>S~PzY0ti!d(0^%9`K=R$oa` zOd~ApO0)<>!&<-;%`4I1iXg1xO0*0_3k-@VMYC|MK{kT#TFEArY?lT^6ioxs6dYnq z(JCBlfr&mUYrsYwkYFCIMPRK;G7X2CV}$&bY+cFbT3JLE5#fkHFoUSJ2#16zfjEzX zh6E)r@&=V?8w?1+*n+J@n;MHC(y9nagmH$r(gmv-156VpLSQqLgk_~QtML=+SO+G| z8q}cI*u{mF9T{8y;(LPENPNc<1EL2*D3z8E= zXiHj)Xi&BTD%myuGn8QtcW7*+!ekN|I#HlC!ZuGOI$#ooY7!&~_)l_)$WgN93^P>G zH5+L#U3kgDwT?>Kl859+F-~VxqJsgk7FFqBJS;^yo>j^gB6JxDVje(>kXI!tLQI$# z5vaUsLO0uDZ1hy3!wiE&U5zGSKIc9liq-+HIVG50r8I$TAq1*1uwkl5VdN_-wSz_D zPN8Co4y>b+1am-4upSkanA~TB^~edv!Nf{*fNa1bW`Zj;22@GZ9B3^uf||(9Q^qbH=4;K^{yr4?_cj>0xsom@tS;F*DgJG`xl&G9OoA z>datHbF4#?P8sU9fvx3j4Pto5L$A-BLd4WM zWIl?Sx8*kE5MwaG7di_-A(-@JgN1H2s?yg6~a2749AuwU88FSZ>harJrmB}@t|f1kK|RK$MX-hhH5dnnE7`$xDkU(t^Rx(Ed22LBq(dFjq2;J&N3;le zMH-aj;H7X`%VZdXX*IR1Eq&+-CJtq|(Wz1H(N(g8)v1`pJej9um?Q?1gb5WHtWB;o z!{l+PLW?gkU0E%IwW%pX@~?6lujNHGN^O8@ZH6wVQ7Cs#D$Ui`ssw{p3fH=snnOVa zLT=;7zx-P13;xxe;P>IKQnSA%BUh!}bbQs^vru}pGZR)>FP6ugkl3s$4X%D2kFTQ62 zpdnWyCmGF3HK$I**JRRnfAr0*(Dn3Y_E3s~=s;2TlW8(cOEu?}s(NxWD%z-PwO455 zr>6Qg?P;cYg75t-@^sWJn{n2GMA}})WoS&Gach$eVa#(V`uPNw% zHXb@nq8>bamICT#>Bx_admg_3HW`mD=e7I&CY?HE+~D>{=jmV#4X5K_IyZw!rH+@< z8zhsKXWRd2bgo3^=G|rpv+nRQ+R6F&nDqw0>he&zV|ZK z^KLhQK7|1so+g6?v|d9sH!&kOvHra z@7^$(on3kTKK|{)&tALthd_hT-)@Gd>12mS$FOd8K8|K7Af&G8@pzUDVDe#p&eLmH zhtr$k5EM_&CSzbnr%*8>Q7`@1+2H2fY5M6i@efVw&0Y_ZnJXMNU8m{nC$5|4{RghWPAl$b*^D7O04xBm$Hk|bVU9KK;-xpSF$ zfP?WjAS*Dd$))e6cfCG+&S-3&KL7~*vzx&z6R?3w<&#C*r!X(Bwq=beOEu@(O(v)P z*(8~PFT2Kkefj0bUjHI=+|EOfHnZN-aj_0F(SAI@Ga9AodE*>_C^ueC#hX$8cL%rJ zfmmZ0a;H0M(mj6TT(3+Mw~P;WkB-~`ltB_q)BdqT@~FrDSbkl0sqjaVU~Lx9F4x_= zJ-Eszi>g-|d6#mXZnz<+cRlOGho8TE+C9!)t4H&zf>!rGuf>!wIQxbAzuzQ-{_J~m zlhAWm1P;jg;C${mT+VS@J}lXaNZkUNrlTpi0Q<*L@5Y-9@9>9q&5KJDFnf7x^Ih3} zzk6^{^ybSgy~&+*KZet$t}IHwx9Fy5z%x|N^7W86n4{x0NMWxU!(yTudbL)2hezvR z;t*m!h#*}=I?DYK&u)b)cu|DVdp~{o`P0_n&qrGy-*0{S@x#{c!SUATUv>|+van~% zt>mq&{ViX?_YY@R6S}1sw@hqpZ|!dFZ%MM{7S~qkkM8hyHHUlWFgg26e;j=r3~q+~ zQ4&$|_jg6Ncf`BU?b_MfJEHQp(-TI1JB@zoAEmz^{zwV=mwRaM3V_zX86JGezWD@T zK1}+PcLjQPfA#)X*U-Ti_v?Bi#n0b0xMDkd`y*F8 zdC;Jjv!6SAM<)xqoD|=_bJ%k~X;ALO8~M4%-~U?vxm33N%PJv_9rEA4n=`LFdl0pz z(9KDI{5GrIe09mqwiCO3nhdv3`-9(7m+9$$-FDT9sNFulxt>P;SJU*;{o`Z`Op>0T z4AaRam`||wLkOP}coawqI={7l93LLV?+;^75bzoAf8L`1L*wn(n3zV4#w23!UsM;s z(~_AM0#7Xm9zbe69Nq%F`d=?5X?mJ`Pp2#KxD8BY);g1$@1yMw20x95maI`UxIGAZsm}x-?cmClXkmK!Wgb{6kBCA7jE$U-+{4HUz)$j>nUc>(y zPF{tLJ9Ab>c^gBk>{Hu#i+G?gFq|Zk`G?Nq2(67`%;TiVofFNh6~YB3r9zBcL0%2; zDdu?jw0fy}C8t#oTQk^bZ0$ChThnwd!f#E3+6=%)K+!792=KOyjkJ!HjDTo_qy=m& z5gK5#4{^ZSo>w!=tn$2;W9Ckt*QQW;bkFO~@VS+x8op~0MP;^(D+VE_1)_qP(lN6o zNm;9m_wzfFdQy_gwR&1^%E6++jLC>n3I2}-|A(_2Ert`KHqB6U-1I1>EsqD=M?F$I z7&$Ca!eXXn2_~vHPBC;~dSPH%4IP&Yu(W`VEukZfB1@q&Z?zm|<}*|)tkztJy(~+x zq1D>hOwDDs?rpU&aq-L&OOol>s)#`t@0mzYQ20Bfb`HnY8_OB(J`eAu;N(9 z09It-DjP*@XRn^#UbP1@c_`0ptVN_b1oe^7V6}=+-o5kEc8Ga$#5{Q>XhT2|9xD?m zARiM64#7Jq00kUmmZqLNKs`xr=y~`+oVv|5<2HJYi^2j(Db}SMJ4oFDQo{Pk%zbJb zv&!ySN@-{JT7#*@UENzY<(>)tD9?O!5=o#mk!L9lAw;OPgSsxK{Zew;8%BBrB0U{Z z<};I2#a#0OK$HsR)7(vNRyzQM%Vo{2t#Ov%*5ja0xefPx4iaRLWR^iR85y6Z0>59= z0FZp`d}jy94v<)Yq#lqqOT%+53P3Wm0+5}D*Bw&0OWwnhSjtG7SP^$JhO3hQxZ$LQ z`_8M6grdN0jVl>Tb?gv#8^7s1b_EZRshAmE08V5fL^I&pVQ^nV2=O9NCR}h~0bzb4 zo3WUiGE@~*m@fPFHxC{7IHfGgVqEliiGN+xFut!BXphLPgB-{U7JnFjFK@ zDHk?#YuW{r&PqKoVr*uh{3jzZC$vP2F|u=nJH*W8gt(!x(Cz}J(vcJ~m$pERAXF{A zxzZt~O)1EGTq|yQhMX%6&XVyP(KLwD0G*t7u2L)9?$-xOe{aHw9F#_uprl;CE>NyV zjx9pvEhlrHbCr+$wmkTN48jH(D;g;h9J>H`DuLqzt}6Ah6rL3z1tuUn{BvA=u~POTJ*3=5=SXRIbbao0t}NuN_7eU0P0L?IK8Q1wNOca5Wn) z!QOpv7OsrD7d(2*b3D(~UCelqY7z_SZkh-h3E)V@1I&r83S7&oz`YJsGD3k0owXJu z5)j7FDz@f?FJ;2cTCX@H^jrh(XNu(9pqp%mB-@~cC?~+N?J}6p!s~o}*ezIC#S-S+ zlQ0D9oK)atx+_-PGS>hLrY*#wiJ6J4JC4q6a8eU+sFAKjZ`C5*#GoGCYbeTy* z08&+EQkv{C*zxXT@7!#ft=yR0)`rXGJ2@}Xj-nQ9Ul~;^9UE8B#6-%*y>A(u()1|yavGvbo{Q=^?>l|T)TS}pQOqi>anhBj+U{m$WGDaac>8&4qj`*OA}X- zTV-*As?sWI^K)ZeTIHFfRoV?nCj7ggY#zGmz@lpIDX(3-fSbk(8({JwkBxO$TnCFx zWUnO4uqXq5Tv0UqAx}YUYJ*YFJ9J2UU_Z~$+z?lrbIN2jpmv)aJ=%!03Se|Oz$!?w z%^=lbr~QdGDn(II0zOoAS;ffidQ;1`dRq^v{0fw&u6%@0vDEI^Di4mWTE&(I3tg3x zHdHC86+wJn`Cctz5&4+F?HTZj%rrG!ea)wX-P8I@5)ff@#Hh_L@d{G%k>-MSRg+#T zFo=z<0|s+d0jM)t6)+@SevY^U#$y?(MX$WwHF{lzamjrNq^u$!E7S1W7~7ozesYJp zb%>!Z{!%8pJrmsUGK9$%mO<+9@~Bxw?G7&pmA|$iC|F~N=-%!0^zdl;ftl5{l3gBA zW+nSX%!#P5WkqMII&7iZxon%x2j|2U9w|3SjPO_X_Vylsi)6*os|+}E7(+d_x8X(6 zwLRqJx#`w{f=aMyk+*T0#}I-An6OLBv2}=e!H7^Id*N4(h{`5`KitBC>YYt$l}%b* z{V{v{7b%OUs|sAS16K#G`+zH}l}>~Q7YA?^fjpCvcY9thImf(VNl{5+sUoVfz>CDZ zELY5=R=UeNKY7;qv2)C;-|y|t_yAl;@h%2lc*#t0xtv)#v-PUpgt{`*<0~tA1X&p~ zVJiUX4nXYzP|G5>m5`Fo-|_F$RXS#jl#mjPEPWGYcOBq)Uk7+<&~cKzI+wT`bd2Z< zbewK_Sg`|L2f90+Gh-F^8CU3|grU^gO}pLBp1$lo+YJHZ{V#ve+JOJXE5I1byF=C; zUKa4;2u5D>lQ$E{y+&N1frZ&VB<5^J@=TGUFl`rsM zhESvzcyyR*O_i1Q;g750om-j!{EAw392%2rQ<}rw(xXmu@S8hHv@DCY9{e`m)I&ZZ zb!%PlM?Glp+%9-CZDQdLQxSj1iK)U#<4h3J-HLp{2NPEAE4w#T+KBp_C+^&eASEp^ zvw8WP&MLm{ZNcL0rz{rM<;GpvYZ7x=f{GJmI#=t-LDe4fMDpWMGS)OwJeJJu>Ty{F zd=Lo=+ueYB1&CRlx2*C3zN9`a;gJ>b?FgkER_a;g1BwDQV4qYZw6j%;xm(*MsFao6 zVci$(6K{A}mjF^sM7gVd>TgNvl7FNm%Zti%{L|%*aJUML9w!mwz*5ey4m@fpx#`}< z)dBE<^GC|jw_LZ+#XklUUwK0ZfE*XUXe&4RR1;tCW z2*KCh5q|Zl?)#;;A8LBJuRNq zE^2L9=K?>y2Xfzu&NFe$x|?Q_$4a`-AQNY~RNaQaL%ox$9rvEA_aGf7qw{q5CB06Q z*%XwevoSnP?)&~Do?VglcQ{;WyegAt1?g%{cksF&yqGC&$a)tA7^{Sr@oxT+%b_Mssxl;^DW+3>`QGk_f#wib(g`#p6?9dLGxKfbmrVGOP4qI?a5A!i29 zIJ!Qqu4EmB^anebd@YochbaQ~5DG70LIOm2S;Ik%*@L8O8sxGmoJCv3C|X4>Ay-6- zIC-lEIZ^CX==PTHM&7ZnjtX2*V1)>R$H z#vMl>ne>DJo#J@t#;({l9l+CzFbc-)gR!hYvPgAEHMN{PXliOG>4%S~mw6PG;#DHo zHdK&B!~tzeM+z#@d0lYYGAggVTL-SN73PH$Zn`|g8kc2MbQt9d!zdqJt>n!C76_tD zPx`_@a9*9m)jKCICnHZEAia@oTjEp}r*H(mRmLouC>EGB8eJc_mp^2kAh{sNDIwoy zie~7!z){qm?}pQwg`{{}hnPsoF%A zoxp1xA=|hQ; z$9OcMYjQeM0HQVrQ-D?j(ABf~g?MHEWGZY%6%9*UqVUz;?Nz?6KYDf}-BFHMgNYTQ zZ+jJGLD*UX*Nl~&yq=*z?E|RkQF|7ZFsbgK84Dop@$p$+?%{N^OYyn=w&)}p$(h6y zs5l53G9ztEBIMYsP}udGQR@jtrf54kuB@#s=Y3~aVv!4hM*HULa3zGzp+!ioZ*&UPPVMK+r7*&L6F&gYLD6>mAL7>Tm0UvcR2M9=b0Gh zt~rHf(hB;{ln)p#bJ2{J1;&@?@j~=o!EClL$V|7Uq|GCZe0RVlkruiEa~llLpCi`F z@+QU{RvUXwD?<`xz!Zb%67%qoqYW|df@_~c`y9t==f1WnQ}Z=@>2{DUfiec3Kd+!g zM-L-HJBh<7Kt;t0OLBPYL|Y!HA)5V%`@Hf9O}~MuBm+vkc{%RABuJW1bXjy zTQIIXY2$!3K#-9^3k{C0;7Aji2%D5qzi4A_RT!?@C(3a)!OzPhI?FAS*h3h`mm$?B z-lR`lIgF7dK$Fjxm_$rI6c~LYr}=O=EV^xS^-l71-*^Plj{@>W-z?ryH@K@?Yz+u` zx)EbVI8b(V5DjF%xS+wO7+w>@Z9;0jtHH)9v5LuQ!chVlL1Onq`tv$18@kHZ-Ai#g zBZnN#F%;EzK$Q?>9XW)WK-$!OyD^cN)mavYFo%YPHUXou|hFPv(%c~vd#*IxOwFFZ#`AucsjI!<;ziHQa zT|0c!oo16lTNK40#yr(trd1p+-Izli6t*edx!* zJbUf4C^0XeF;duJ>AVoh$jqQK7fhbB*W_d!CC?4j(HLa>UU0&ghhF+ggMi@lB*A)= zDd#^%td24QtgV;PDufE{k?SHee=|}kdw0rihAH$mOE0BB=qjRPrcl?;Ru&F#9=8-I zZQgQB*%uu(oTcTg8Ur_h+i$<#20|-3Cr=>6wW#)n8ZGo(#&MM~oaS<#;J^&0w^VLm zwyQe{*>6Grn$iO!sI7a@>0(r}t(~n9YY0Lm#IkuAJdAH%eiW6{W1t@tfKS7ET|94X zGVgN0a_y*s*aC}Y0PI9(e>Si<57-`2dOM;w>LPc`pvBt73Vi1@2?q=|2e#f6%9TN7 z@Kpw(c45e1>=~rR7nHQjQG7pA77N=`?pY1c)j0H^`9$IA33~OQis0ousL4@0bRKl@ zqH@OZ!_yvgZuxVB$z_Z3V&8YrOi&^(+aih*)3GOV5Yv70aJ;V89yu=ga);18e$F|G9sVB=i7<7F+ z$`bQw$My1OuFMT}y+%1VlD|-*EW&`Yp!54m*@foLj72uw{Ph{m7i{S+ zw#(&O5IMHI8)CYR=D?N~AJ|eqw6SD}^ED!12~*K0cT(JkZM4r0cZd52O^9}hNUNm* zR%V}^5orV)rI*z);t)C4QxErdcXtmD5BK*8mxFw{e@K7bwO>|6&pQf*FVJ}W*vEr) zDgQtjO->aU)~*Uprke^?)@Webuh;3Sbk3t15}qOrbi@)KE@%^H?|6_jaiY*6E2>zW zM*v(b*{XD`YPsun1}M55I=d=@RvQRo_e>I^3sIj*)+(44!jOR%8Ja2G4tdcc?bUIkYmR}-kf^$v zZM&N3gMBE9pdLlETdqJ_>ItF6vJT3}`|V2&Pm5lgn&ekf((5@>69*#ii5fp%O6$R` z_dd9_N?KBp6kHXdwnhpirb3H1Fg{bPwCszPrm<_~ZAk1(fio+!{TZ_O5DrJt#^v7XVF?-96FJ!vxqSEI z;qyPgJbwS{d$#b_euv~8zo)~7(CD;TqYtu-QO zQH*cB8(j@n<8Q$D>{AM8V)}zhPCt*W7xPDB0HT(WTQ#vL6NrakCT`YjSeng{|oTLGW2k zM0AIjK(eaV!O}&!cZKBIm0_#_Tm`^2LWQyKGbdvQ8kbd6Z?J&`fzi}4qsE@fPNLVo+efBN6(Nn2v{4E&YHXUJU3#HG##Qi?Sr}WRz&;HeGz-#mctW2CF zmjFIj0(~yXCg>R3wp{|DJP}6O8n3Ku?Ui`I05<1>8V|N=d@!|#^yefpSxqGjT13=ymU*6STrg!rwOJJ#|Y zG5Bwa5Q{B*VvOwKiV)}TR36iF`ilHVaDfDA= zn?t3uLc!5M(hCczsmMD~`VoC}hrd^{p0F)0dFgemDYUA7BMxyL5a zfxK4|K8l1{pYxNyv3Gc(fikokLxt?cTcp1sUy=^ztk-IIKW>6a+ysf}52li(f1phy zgz=NlO2Xzy2-F^7^$CTPNRTh}s`GZfwu_>0>nLz+dR&~>zDZtm`|QDU)E?KiSa@x2 z=xAhQ5}bf}5+EOSb}W+t1sfZ9_6(q6voCC#BqXzAMO~`A%>?Ut^qiDZbJNtE`a!Q< z6n||DiP9f#kX#l}4#Jd&nMhGf-i>m!xRokBGB0x_CYQhzN}d~Sdlpj%1{9MVj!YK0 zL6!~2(j$qkO@Y;$>>iU~n*IqGNL90yL6a5}1he3(q0Tz5X4d)aCx5V6W!)thLIpff zNR5cZLF*s&8SS2A^O)=9ZN~SPP$LpSUXh-+CaaumniCV+6hw}Fpj>c|p@6~&TG1#c zIS0YkpV&|#;-GVnY>+io-3=x$24ClQPe7cF+)4Enr0STgFANcwl{4f%fT8IH-j~0z zP4aXsBRUC`=k69WG?R@3uS7X`DN#z)5~5tQXNooYW{Ja5AN}(bz2-Ir#~>ekYgyw$$x5p|bo%TbshS*A#B!2Q_1LSsfXIm4~Im z0-2x_mb*$?&MnSmQagnkro<4{#JxYEc*ZKB`ja*LllMzzQ6f?RIpqa0q>{Y%MeOI_ zcvX%zz|re#0U%1AK6xBz-f$tsVVHf-L!;KMN3H4PCi@d#JJ}w=Vbj>9B4~MTqyFUD z{$#qP8yZO_C+|#Da~X+3$Eb=1`*8}(#=9Li*rbT!hnuMAJdh?Gx923zj~B976r9|J zL*r{k?onXYI%Yp8a9$FMT!Wm6a8dOBIu^V!x^B2TMXuKqO$T|kBP3Y*L8t_a>RKo) zN5!k88qSK=pL98_DN)8ZQD)(EoF>u9kn3<@=xb7Mr$5XdTwU z$}k4X68UiRCXgnG8*5Fy{^0Jh_O9tkyV8@6#7+e@H$}qfvo@0g&XAwB0CGE$1}XuG z53k2c_Ra^#&`uc(A65i<2YjeDp7Ie|{{fBv@V)=AR_D34#m6KG?S_lUq;W-Ns9cnC zPSW#s`(c4>Y;`oLLI{ILP6D82;`c87=Mpa(6Eop6Xz1;4-^Knr+GU!Y0B4s1gr%D0 z5~8mWdLZmMuiok!Hb@CKX(kxyM53dC5;KXgzg8oPNzp75C5YfEWEOSz4iiMv3{LF( zv3!%5O!da6=6z56l<7p)wyWB}DSb(pk+X#_m!sAF!^6YEeeIikHr>r|&iTXPjNDbg z##R_Wlxhkt-fG>mQFk;uYPEW3406@VhAbm4dywo*;iNhLu2P%(;N%UfC{}jwQz4ZH z1w}2b>{%0a>PDLTTneK1G4R9{o4-7LfBNzC?O)#?fByRP_1XRLPnCu-B40$G5yhsIdn2~(J z#2F1a`=R6wnXoY_Ur7vEt{_$2$-i_AS&RClurG#=rzfWqnO3JNwm1HKDWGh$XY4~L zH#f}9nZ5_1QJ}FhH=T-bE@@5xAC#e8F|@?@$XtY%5g8ebaKrpKT5odDdXT}0`};%s z@7=xw*v_{2&fg<%v*~COR9G{Y=c?%Q(Ursf-QD3{pt?)n60UUWdmsMkbum{TYHv~$ zi-X+&Hpww*OJ_Hfoc`tBTA#H!5~Uo8gUkeWbOC_wASqq1@e`V;7D7|s7r}f+BE2}L z{45qepVlZ2McLf=8iOgcu?6iW?Tfa#>o1ho=c4WO@QZ>IGsgKs3OXdVz9F$wKj@Wd z!{bK4xN}-KkZ7CD8Y@$;7;82?WMsT5#wlbMfh>nUYg@>Q2n4gIwQHBY^_0UB$S%Cm zvx;~(o-$3etzH{=Bs6lGh`bB~fUz}~r61;CRUmagIn|7Dd!!mLB-axLC+OKB>yG(; zI62GPbh~4ry)2T-w+f}nGwMCGZDBMmvE1wthDPBo9OcX*)$_{2Zdf4e+g0>L z0?2X>77~0r-F$awo?PYSwS42@A$=qNt$eq9JN<8&4BFj&Q9>KtSD&5rHvjIU`|9%v zm?UXDyKS*PKhwQ7CGW9E_{yCB=bwN4`TR3|*O&i%`0M}t*Yt+G6#3k=yR96L=!8@_ znk>|H__xF1?vQ9atayU%N?r$8yFrGNkBv=oaSV{;i=ru#TONFPGWd;5X_ok|Ahd7plW z%$nxaVc|W^&G~`74vx*AL`+emed+WuxrbO=6AMI*MC{(1E(+01@lZoe&&6{3e|lF$ z!0L*WqF3JuEZW-nim?Xb3R0?Kfd>@nsMv=kwzKllW6MtLvOj$O=asRKF=ES^fkqL5KGY<%I*{9qc7M(dcdfJ|Q z=49f5dl^Kho~F-v;y&B0j6ibQFtfeFw`U7;T!Lu6MJZ&Zv(HrXAkhd$&XYXo%GCy& zABzVTrlq>_yO2ql2FSZm7^vq6My`Dg&|E_~dhJ${sbXj`qJaQqN?nbro^K1H>1G_Y zvN$0tD3J|43FMb6S?F-)wTI>AMi5h>Lzz4242}?tiump3qtE2pg9jpsWqr-Y7Zey( z5^GN=K$j3C6lCWyl!SmVOTg-k{)WN;alYJ6vN?^As!?Nmb9*)S*39jFv&tMrZ(d?P z6m$Dl?nPt%Rvi85!HfCDq3Mc4lW6h7lZ!%&$~-GAN3_K57PrvCg9B=o(VpR3G?ZLB zl$>lj%@jR|-2%GoOhpk;Ee%R0B7IQbl=GNIp;>4Nb)b}Wc#(eZP_T|cn~a-6;f&Lp zxeM*`9GA>@mTQX%kDO+xhVGv6XhMn0(gAcdB_v z1D&_yvDC(|qyR6T$N%w_!oUA|{QBj8fBgFN>*?q7$r z241IuDfwr~^qpyRVf))FHlUsVgrN4lw0&PM>o4^g7ae=z3UepGiC$vQ04+G1tqiR5 zGtK~Y6rJ!kAL|#fY=lT^->ZMdr$-mh&CM|7W--4Pm@1?MJYX@q1=B9{-XG>P_tf<3 z{AiQ&wND>yN0Of5V4Tny!uk4tI$=C#!uV8ud;wLo*|W-M;Q1;2^nQth0}i z+2>z-+f0mik#yhM_AV=Ob8gD<12JH zW|e?-O|2FkUtM(EVA5=#e;~{J!$mpjkfxPJ(ILl93)Ed>Wg{XG${NQ(XR}|$*t|OM z8zk`*5qn33bLEzYrHM5?nJ^;4TEE_dP!X|nL=eV&^qnGwO@&4<6Jl+`gtt04Z>rI~ z7cNwsD2jNMD8=}34CYf((VVj52=Ws)w^-c{PFa|W4KK20F-rYGkw=h(6ZRC$@H2~&=u!dOvF`zF2V(L#GErSb?+fwhO(V@GAZ6GrcpDg3t&bL>;tCiZ>ol_p1DAYfPH1Wp zATEf;RfL{7k5#e84WBj7E;G**98H7c%#I}FzSzVb4NSmsy?9k{90D9!#30(iu?FG9 zS@qy!PArcpO}7E$?63Z>3$A((Dlr;!DtmkfLnhUx(6Q;kQU?f=D=CjIqRJT@riZ!A z%b(dd&o@1(rVY~cMBj-!FpWGkk70|xlHzK|xLOmLPHdE{{pWfgQXY$waeu;(({aDz z=hke_<=LF;BV7EY(thP_bHR4;keLQiq1R=yf$#$1$@n!w2r zZ(Lo*Kwd{OTKO)ke9Or|h<&82)J);DfeHXl-R+N)t`;e$cwdY}$30U3QvC!)$-t8+ zrHkpoh|Wfwq@@6E;NodCIXX_t*bWSc5(mg|chr~+XiNzwN~bvjOx{&C%dcO{X28ql z+M=i_z=)wDT&;!6aWJ%at3=t%AQa=7II%PcWN?Ews-kA6sF^1Q7rii)jkQHDLzxjK zU}1fN(izON&tNuYp(x_&soWK#6w#EdvK)b}3mQ`w289D$k-3wZSl|0{`IT-*V!Zx{ou2mertzdda~mhHyFQRjl0VSzd`_5f`jLK z@C8f%IZQA|nM@Gn$^g-(tWYt5PG_A*NC#&^2Zpm$sO;}6%OeCR;<2x;O{6aW9?kKh0J^N;WU`u&%G{`H@~{%|So|MvTzzx?xme);bozy5%Cel&ke|MvSY zC12F9{73myMee5;Z4=dWN8$;N$%YFrw(wQDz8?!ba zJ?1+!^1Z|KNq3VwBYE`gG9LQq&;00d`siW$=!CXRTfeED(W6aC?o8;0j6&&ubhM)`t@YP-jIRZahDf19qe1!h<0K zoy#MIqLdx{M7vfHVK*NPJ|!TU9XG9gb#lGjhl;U#2O`IHsuJ_sVar*_Ge7$g}0C~33g$C-ANHlU`Jb2{FVE- z4R%|T+5FQl-mHKB!LVqj9!o22?V$FA&R4{ERN~|A1J&BjDf=k`Ll0m&8M0yI3W)&Q zhb$UI8Vw?z#1KR%b6JiO-4rlrREtFc^Ali9A4H%d+ndEI6PCVli)OoIoF<(oNjjfe z9WUpVAeVbkVV9thCavPmV{xX@VZe@Yx3<_Rlu|bNRt%_KfCwT2>K3s@M9gQqd%{Z* zp+ONG5j?p{S54m}c~Ih7i+GwRto!s~-u#qsSgnN1H5$mT}{rFe< zPG@;9hJ-eiDO4g$!gXL1Owii-a1o}E>5%*2QqJMC_B*ikZIK_2wAp;u7R_&*jEw%l zXEk=Lgog}+8Ns4m!axJVg3_Zf9;`^7fwMxe9}y9oD@L0Q3?Evl%u{Aypv>(x7<%XPVg6*v2&stG zYUOB%AQA9SP;k8usf`I@r8y!3&2awr^75j+ZCjw2saG~kU|sAvABafJ8&el#TtyKM z#5>J2Z9!-@u5j*x7>nK$O_ZMn66DI(?@cjr988Ey2xRl1U~~0B#!Mg)x4SeeB6f<1 z;#`+Hl$a0^xhJp{5uB?J9jhM+5rcspg&x3mHdPd4CXfisT1xB`67!>qoEj*PDukd$ zlLC^g|H2bvef0+py|!@2%0&XhB#{e)>_tIR<+p=3q#C)quTVCR#qm_Tns>FU z52o>|ZWY564fR;0c{{Sbt$f0S6(V)MYZxi>-fG-a z2O#!JguUfjrvw`tV;(o#@GLoqSu+*MJusz+AzL=z6HHLSUKg%=tvTiocypb}>D5!? z;yJ;f61pNr-@B-zz+h{JxSy%YM7;> z17h_h8lkR;RM<&x9LuHe&~OXTDzxa4&{|;EeetgDi?H)Pkgb9Nr%Ki?tYfVh zeFYi1IqEHpcQO{p+qTv?M=E3IWsQotge`)wsd6D4+gh7inKH0{dwYF*d42o#_WJTI z{qXiW{9NI%KR8^Us$R@T3${G~!!7rO3S!ZFrGo6f++7<^vaqKNRL5{)cmjzKGbEac z8w!crkbrV-8H-mP;#B;@V#t2N8YPYd2`mQFHWZQoO)n@d8>>O$aEOpQgxrLBlaHOS z4$&>gAj_4vZOYI;>%nZBd7MoX253EU+%f+7>$F}zswchQ(dhDPo6=}5P zx3GTv9c6PfO$fXG_-|_`u+TKX_faHU%v5#RdTZTgVB8ReS{VdXG4*K_Q)4PC(WJ6c z`VLvRP;ECn!*(qOMa)wm=Ch~a=zZ@+vsuPsawl6!ht@m9wx*y*OiimHIDZXQgi>7( zMw(ku85?UEwAQO&LyLg9WgSsG_rPLjQ7oK82b>){65sc;v-+@D=Jow zh7~MMYBu(qsuD6&jl+bM*x2}AtCHIa-KVj?$E+-aaU8m(IMUh-MFFvtAHY3;%wo-y zSeAO2EZY7>>E!J1UvIzfzWrW1U2|E@KlQXs9XJ-rk&28{QL3@xII+UJ;n2>-Y|ly- zCxC$Xb;(0R#fOKAtpx`RCokyJUry*5V1k(}S=CUtqCw;)AO;>g%j8_>?5UrvfQZmo z`+6im%*TP4S%;9P7BUWnIC=Kg?icjgPXh=$(2uhLkUK9KqIbF$Y5Cb>d3JyH>=A(4 zY8`Y&xnLdU2HR_4ok!az7)%h6_0Aj8s#HWQs0erX4BjvT3W!)XcG9RUsbKa{bh!2*Cb0JSJS*Dj(v}ws!IFT`Jm8P0krVU9*X@#=VH$!iU_TF(>dq?#FHSQfn!AjGiYGgDH?8B4P;#ca%CD_)q2Sr zrzf7fP4r^0S%SMy-JDR6teZS--aIu_)gS3;F=VD489n9inBc7ay|*Do$gm zV{pEMfYVz^2IEw+uEmIe-V8)Vk9CiKle%{+@Id~ z5)A6&&LCj(yI*&Atuene5)5kuI;{~>BrrU^O=1T0`szD< z^*c*`D*k(}m<7im&0z%wMx6lc9vF|!9;I2ZuJ>F533J5@-C?t$cxe+aZcq)D38S1z zdsp$|47G(9EkPH7A{66b%$(!s&uUOtj4xikwS$TyMv+Tjbi?N0+HaY^na#XbV|$8S zFjEgFc9FEM-93=j-ZSKbS>VitgDCe5lQ_rV^cq zSqW*GWkHo+!9IpET4@G)8jS8OgNkJ(M#)`S_`dpoaWnv%1!HckU9RHguC>boynO81 z!}T9`o#j zJo>fNvxJBYYn(hft{`VdEV`aUCdQ(t z3K!R!FRjAmUiJ!RxP;!jOp?Pmvg5o7gbJ7T;Id%C0o+G%{ShARSjPI)&NLQ3w4uFc z_+fJm>!=T=T+;=vSP8?;O*6yvqXmzR8HHfrLsCjCF7-8T>}$L=!%2E zl^^lyNF8sF)GJtU%RIfJf*v_IAHS>LfBWmN-~RVk`J?}RW_14J z-FDWhB4U?_K*$#tDK^N(MYcH{XX?Rvrwz<*0kOoR%=H0NW{@_eK088COMw>KlzH|r z4YRG39y%+Lpt=Fj;p70n4j-Ps-troV5Ler5!fGq~aS zQP4C-nnj@c2}c)W&UR2OLeWpi`!G;_IdYbGXXcz^El!uP!C6ys&XyuXBg`Hn%!YVk ze9u(kNlH?N&f^JgIi}Wlve$S*Hj_Gx>%rR2dV97uagH}E(i9E*MMJr&Hz_ux^x`O? zVZ4+Mp_p;%8RT)&%XtAiYv+Vgm~iY7vvChnO)4?k?e2dHoIL_(`QV+hw~NU?lHA|o z2{#eY`pw#8ikrRRW`3EU-Qr>@Upw$_dUhLuhVZfqCR(LDbCt3xhM5I0D{m-xOtc+MwVvE$JBsWQG);p*5ZlefWzvvYif8wP+Sbk!r$|# z?z75b1HybjlNXvk)jzdc_ZFh+b2g}0@Sdf=s#CWdd&il#&mGG0yB0pd1)cC5JwXiv z9mq$6(n_Hpc1d;wO7y%z4rP}K>IyAlN#1(C1a&7B;(8H252esEc1*)PdjeLS4mxAZ zcJq>UVvZ7S?nRju50s9~u>7_?!x*p}uniip+74J7itfiUbwnPBT!$o{UTn|89C&NA zrQ2~!_pm^PLd8gd%JtFbGltQOC!r)7e~>VxD49ozRNSs3>|N|)oVNA}B>?Le8H$ny zQ6jN~1tlU#Csg(`m~gp^Q^McTVG=l}9NCK|oS1Ni6Kl%Refnpmkkl2d%q+bYV5Opi zKLi~YcUkZ8**GMuT-Mu6*ul>GiR?=P1hej`jxz>a3!sxO9S=HES#>`J7&Fp~9TMgF z;4`;73%2Qx$IQh&`sC04v|ajz4Z=rl*XP&eQP$EUz!A~IxBCe5-f5HHw{?MW%jdn|3|O0X2oB#??te(=@hLUtmGi)y*KL%bqzEP z1{(DFYzwl1l8{v=aV9`+?;o@4)b@VgHP0=^s`VYl%A#y&P#KYx^&?GZ|_=mg6ft$DW{WqnR>{n#Vp`QG}$ zb@8*e*>?=}7>4@^tp>%-nHUo37XPl@jcfdV;_fS*P&s00Kv@Z20#lSF7g_P4;A&N< zN_CG$avxNoctlh}F+_d)@%_i;bm%%8_vmcQplcB*&iO$zETA8M{r7+V*FOi%jQ{y} zfnPr{ETaBcz%kY`vaPH%lsq>oAf&9cVTSDS=85CYt!AqP3W|d!JK^-&*uXF}TP{|5 z3^1_e3o4Ze#;TFR^5*sfYQ>0qQXU5kItW$7ffHzg6)iF-22eNqdc85syx#qA)0Bt7 z8=W1iC@O8(8v5t|vY&rt*0EH7;t~RS=5hO{j47=jr}^jq)t~R=LO7XENwoD!M)+*zp+etE=5=hsZXii*pe}`QCt5Kk;R+Yea4~{ zQ*!MEti{#bB}-N^0Z7^)2;%_R7eFvr6GYUfT-^_**@?j`-hBaNK2}I|xz!#RhS?~m z2^d69rHUt%BfvodR5D}eA%+gb_9oQe5ScxB90m+bb=z({A+omj%>GgB-s0-0+;{CC zv}@l2ishZ|-0|px4@(()LA$;vX@|uO1sk&7E}WP2$CKzXf@~(t+yc}a?$(8wwTOBT z$h*VL0}*q1_Hm;j{`=?u{`0SY{p+v)_{ZP>`1OC~SDL@8psE<3N`x`lN{06KDFj_y zeohAO7vKI}V40b^UwZqiM_j9)_Z%JLufJ~Wao;;$`FgL6K`#94JD)s+UcpXjK)Z7t zmh$94HIe*z>3e^lN#4KrStg;GkNxWYrM)v>|Ed?i?)WDr{A(_-JBrkogx0?7Ch zWR^e~J9D|46l$sT1wJb}3>27iFVQMCVB^`QDgRoN(DJ*HTS0%WYQG)yw^i+%sT7Z{ z+82|fF~F~%<@dXgADzOmj||jf=*~H@nsTt&&bL1=%OkF8=xNKRe6-n3PIDp! zB5d*mQrbi#)0#>_+Z$%7{xZ)TW&EUk9Tpaxl+V{8(e}(*TFKH;Lg`EdTTz-5dF=SK z*l}kDS=_Du{Yzk3pQ?QUK?fLm#p-A_txQc{eJ zgVLR(VNtYXPvne)Ju(jF@BFln(PSYg*tH+E;baa>aDB)494Te@oclF|g0G#JLF_dc zb(*5lsEM>8N#**^!-LS_gAkOaxIm{G&y)t4cnX~)SFcMQIu0E)=)@{ZEamUqN*{>M z%J&ZXoT)8V?MNDyvCKVZXn4ttoAL7P`+2lkikHi8c5TbI9xv-r(h&Bcc=>!}Y&c>T z)Ozk?Z0-V>Qr1WqSv?s;*shOtH((a!sfPmQ1~NW)9Y05BYLWB9r;a``h(E% zdAx?%m;6}kXEqBCG-4`N#*6mUgbzwTl+iUmJu(F9j3! zGMPasoic^9yd-ePgwBET)Igb=+s(zImE$~0p(-Iq8|S4`_E6g}2}fEl=h4P__gbfJ zUrx?q=#I(V!e!^{!gvG>)(6N(r}>b<%7 zBu=i*a}rsu3*y=DrLy1J!QKE6B9phQKAHh1IMG3R!nabdxs_TA2C80$#0G|ZX6=wu z%-1J5UeY{eNwf0#(XP(2)fFP0@_EY8*De&f0J11~aSsCjLhv#wBe-fk5P1_>fgxjGC`)}ILP7z*DL70gG#@mA z;Uo;Hr{JO_BOHOkK)yF}pbQRaT7aU}hy}sSc65Y^4svGS|M>p>&u>1X-A#howge(d zJ);SgK|s5Vo)ohbK(deWj{=iTgoabRsfj6SuiAl$C@PE~ilL?@UnF{3B9&UdXrD{@ zLTZD%h7-s>r#lW#RxX@Nhsp@!BGzAh3}z|v!>92k@+9YgwFgXQVBgg z0!Ua^cuqQiUL8R5v;NpK57XT|+|jnJv?zw^TmEBFl5(TEZANwX?QBk;yP%m)noAYd z)4>?VSIiJ)u@?NSXYe+E*((nhANp{s-fQt~$NI;-$90efm!K5wv=7eKZju?F1oN zISf#KJG$AzHha4kt@bcNW{OzKV{SD|L6rs{embf)ph~5p3M#5fDHO*xE1m9ljvlKH zW;(R_77Vbo?X^B4szgY^Fu_vZz^QgD9TQ8W$@uwp421Oq_T&^WH z_8N_%JFT#7jp|!e4>UIfRdaP2F1ZS%1DhuDNEJ+@pz0G-eqIejPgxK@lIBxFlB%81 zaHu;8-7r_OsMDeLQMz=dwwQ9lN_lmqPDjuTg3NbGYX~~obB*hL4T1fV z#{qPYni?iBy&E)DSTHd)n!ro93=n+Gw8JrznU|u`_4CQYr_GrZhtrL3e|%dniuCRK zZ?0d;7`vxU|)X}3;)3_sb94Asmta)VC_*Chn5 z`o*;*cCX^}mB{kgOR`k~)Ij?YT z^3euUusE241uN)Xa+b9U0(sA7XS;JYh?<3hCze6 zwd5LUi{jdqir1~NpJ~?o;K{O@4pPTleNc7cfLcJLI@maQSME9MDu7BD!g>X7Od*)K zX=6r#>ki5epgjWUN{@E?Vx!bLVy5gsr7^cfSG)enOd+@v)S+;+CJ@0m+6iXjok9nh zN_{j=cCrLi_nbQnfadR@vmr!s56m5~t<-e_6xu*YbfD}CC@_+rLnS@u++pOYqIJPZ z3{FWrI8NRKJGgqC=6W0kXu`y?0fj<#lDq?@7AV0M;G~t}tWyD?9AS%N@-xr&=J%4H zJllJ~tKam4%cj|5Uf4WcDrQCRUG^FP=B9UBhH(T&tgmUaD~?^^Xg*o6 zU2Rqg3+!^5UNdBs=nj*w%x9Sk9FO3V-$A2dv+)ruIn8|8Nn3B6Nvrmp@38k1f;QK( zk}3}dO4FlN&2k*qQV2xB#kO~alX*)@I1Nf-?vTxT9Y-uctcOybs$MKr%~Ne{GFIwS z8V0EC8i@kJ9V8Y1_Fw1Qf8#^4p@5*l{8TN`bNr zixsB=>;(+>keIeiM;O>R0><6PK|sBgoGgi)Y2x~z3wOXwy>RVbNK55fegv&#WtD+D zd2B50GE^;LEzM6-R&bh1nM_iBwZTvpN(4(I%4A^ZdUbRRl+A`CR0~I9($}StrZ}Ob z6re=*)aF1LDj+hEERh0~Q;97tZ$;p|9wwN^?mLS5!I_7R zK^mmv-(XlSQGxd9~w*AH@_3=u_oNu8wXn*bJHCL^4v#=7k_nK`H04An@ zjJh@t#APM{Fc@4*iMg*R4wtZ~6CG)s~QMqwUF zfEWUjJ7+w{1mbK*aghtUSTp+XUjmE95<-0@8%U&J^o*tmLWl@X``cHXxD2rsgkmc= zLp`?A@<(axuh{USF|L=m^Xc_hPp>y$VB>IZl}lm?RUo2`v5=GM!^A?ixe;uVf8G!- z9=s2~H+x*!VlNeSczBAzsMQu#dMs5)FcGQ|B~tQ_t77gm#jHMbnLkj-eWXroiJk{u zAhci;nb~E+4+Eq5JzK7abtNgG0VPiiEC>?<_!Pu}a=MMPOBO8EO96@*aWzUhCeiCo zO8cs1uWVYDl(^4V%P!cieEQM2RQv7%G)-N`5}mlgEJZ(&*=ao50I$mx`DPBPRLgGj z8w6VmFijF+R&?O)6L{OewYnrH8yDt|#o`(SbMzi}kEkJSxGjIl{CSvJ&~*^aZlaKE z6IIW;Aksv`zMv!vAEe4U3`*u#)X}>5f&v>K!m(O^PQL)U25j)W9B=mq(;z*cCQyWmC&v+atqd{rtn0g3l7zVcG z13_SCT02nQh?G&fh$W(w%7l0tQ3_D9v#^g2lv9b4OmD#UPof=`e^6sz8{>8eDBmB^ z^}6Trb2PUzBjuaUv}S4yMwcmBNO)pxOg8&@?l|Bc47eD}UuHdM@{u~F787wyF1WoIGx?+AB#iOI20PkA$v#z7L!<#EZ;_#OpzI1LFdjvg#53pv zij=%Fg-LR!b%)7N##()%puF=J7{#X5$f{ zZZ7RQDwrdCgHOsEL~DJo{hHIl`D7I8emnI_9prd64~!D=$)k*Cqo+890jz}1(j<{B zHFfHIN(mr&?Ryv)&F`w>Nq97+4$-WDTDVDxHtaNgRrR!Q9!9n$QAaXdwLmz_F{(Ak zcqy{8QeLOjVxCTFSpcqY1HUeAJXSz)!$V*AjU6ankksLR sGz+m93xIF}7`jeo@ literal 0 HcmV?d00001 diff --git a/opencga-catalog/src/test/resources/biofiles/HG107.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG107.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..065f94379eacf4f3da378fd29105d5d24d90f774 GIT binary patch literal 24985 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 Date: Tue, 2 Apr 2024 17:51:21 +0200 Subject: [PATCH 2/5] tests: improve JUnit tests, #TASK-5603 --- .../ExomiserInterpretationAnalysis.java | 3 +- .../DockerWrapperAnalysisExecutor.java | 2 + .../ExomiserWrapperAnalysisExecutor.java | 4 +- .../clinical/ClinicalAnalysisUtilsTest.java | 4 ++ .../ExomiserInterpretationAnalysisTest.java | 62 ++++++++++++++++++- .../managers/AbstractClinicalManagerTest.java | 15 ++++- 6 files changed, 84 insertions(+), 6 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java index 0ae02104c82..5611d1c0d4f 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java @@ -191,7 +191,8 @@ private List getPrimaryFindings() throws IOException, StorageEn // Prepare variant query List sampleIds = new ArrayList<>(); - if (clinicalAnalysis.getFamily() != null && CollectionUtils.isNotEmpty(clinicalAnalysis.getFamily().getMembers())) { + if (clinicalAnalysis.getType() == ClinicalAnalysis.Type.FAMILY && clinicalAnalysis.getFamily() != null + && CollectionUtils.isNotEmpty(clinicalAnalysis.getFamily().getMembers())) { for (Individual member : clinicalAnalysis.getFamily().getMembers()) { Individual individual = IndividualQcUtils.getIndividualById(studyId, member.getId(), getCatalogManager(), getToken()); if (CollectionUtils.isNotEmpty(individual.getSamples())) { 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 ae2b5072473..d68f363b36d 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 @@ -31,6 +31,8 @@ public abstract class DockerWrapperAnalysisExecutor extends OpenCgaToolExecutor public static final String STDOUT_FILENAME = "stdout.txt"; public static final String STDERR_FILENAME = "stderr.txt"; + public static final String DOCKER_CLI_MSG = "Docker CLI: "; + public String getDockerImageName() { return "opencb/opencga-ext-tools"; } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java index cdbb24c2ab8..a6325932fb9 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java @@ -196,7 +196,9 @@ public void run() throws ToolException { .append(" --spring.config.location=/jobdir/").append(EXOMISER_PROPERTIES_TEMPLATE_FILENAME); // Execute command and redirect stdout and stderr to the files - logger.info("{}: Docker command line: {}", ID, sb); + String msg = DOCKER_CLI_MSG + sb; + logger.info(msg); + addWarning(msg); runCommandLine(sb.toString()); } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java index 26bf31c9dfc..f77a1025377 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java @@ -76,6 +76,10 @@ public static AbstractClinicalManagerTest getClinicalTest(OpenCGATestExternalRes variantStorageManager.index(clinicalTest.studyFqn, "HG005.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); variantStorageManager.index(clinicalTest.studyFqn, "HG006.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); variantStorageManager.index(clinicalTest.studyFqn, "HG007.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG104.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG105.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG106.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG107.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); return clinicalTest; } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java index 04d8147529b..ba185297c28 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java @@ -1,19 +1,23 @@ package org.opencb.opencga.analysis.clinical.exomiser; +import org.apache.commons.lang3.StringUtils; import org.junit.After; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; +import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.tools.variant.VariantNormalizer; import org.junit.*; import org.eclipse.jetty.util.Scanner; import org.junit.experimental.categories.Category; +import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.analysis.clinical.ClinicalAnalysisUtilsTest; import org.opencb.opencga.analysis.variant.OpenCGATestExternalResource; +import org.opencb.opencga.analysis.wrappers.executors.DockerWrapperAnalysisExecutor; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.managers.AbstractClinicalManagerTest; import org.opencb.opencga.core.exceptions.ToolException; @@ -26,9 +30,13 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.Optional; +import java.util.stream.Stream; +import static com.mongodb.assertions.Assertions.assertFalse; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -50,8 +58,8 @@ public static void setUp() throws Exception { clinicalTest = ClinicalAnalysisUtilsTest.getClinicalTest(opencga); } - @After - public void tearDown() throws Exception { + @AfterClass + public static void tearDown() throws Exception { opencga.clear(); } @@ -95,6 +103,22 @@ public void singleSingleExomiserAnalysis() throws IOException, CatalogException, .get(clinicalTest.studyFqn, clinicalTest.CA_ID2, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + + // Check Exomiser docker CLI + boolean pedFound = false; + for (Event event : result.getEvents()) { + if (event.getType() == Event.Type.WARNING && StringUtils.isNotEmpty(event.getMessage()) + && event.getMessage().startsWith(DockerWrapperAnalysisExecutor.DOCKER_CLI_MSG)) { + List splits = Arrays.asList(event.getMessage().split(" ")); + pedFound = splits.contains("--ped") && splits.contains("/jobdir/" + clinicalTest.PROBAND_ID2 + ".ped"); + } + } + assertFalse(pedFound); + + // Only proband sample is returned in primary findings + for (ClinicalVariant cv : clinicalAnalysis.getInterpretation().getPrimaryFindings()) { + assertEquals(1, cv.getStudies().get(0).getSamples().size()); + } } @Test @@ -121,6 +145,23 @@ public void trioFamilyExomiserAnalysis() throws IOException, CatalogException, T .get(clinicalTest.studyFqn, clinicalTest.CA_ID3, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + + // Check Exomiser docker CLI + boolean pedFound = false; + for (Event event : result.getEvents()) { + if (event.getType() == Event.Type.WARNING && StringUtils.isNotEmpty(event.getMessage()) + && event.getMessage().startsWith(DockerWrapperAnalysisExecutor.DOCKER_CLI_MSG)) { + List splits = Arrays.asList(event.getMessage().split(" ")); + pedFound = splits.contains("--ped") && splits.contains("/jobdir/" + clinicalTest.PROBAND_ID3 + ".ped"); + } + } + assertTrue(pedFound); + + // All family samples are returned in primary findings + for (ClinicalVariant cv : clinicalAnalysis.getInterpretation().getPrimaryFindings()) { + assertEquals(4, cv.getStudies().get(0).getSamples().size()); + } + System.out.println("results at out dir = " + outDir.toAbsolutePath()); } @@ -148,6 +189,23 @@ public void trioSingleExomiserAnalysis() throws IOException, CatalogException, T .get(clinicalTest.studyFqn, clinicalTest.CA_ID4, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + + // Check Exomiser docker CLI + boolean pedFound = false; + for (Event event : result.getEvents()) { + if (event.getType() == Event.Type.WARNING && StringUtils.isNotEmpty(event.getMessage()) + && event.getMessage().startsWith(DockerWrapperAnalysisExecutor.DOCKER_CLI_MSG)) { + List splits = Arrays.asList(event.getMessage().split(" ")); + pedFound = splits.contains("--ped") && splits.contains("/jobdir/" + clinicalTest.PROBAND_ID4 + ".ped"); + } + } + assertFalse(pedFound); + + // Only proband sample is returned in primary findings + for (ClinicalVariant cv : clinicalAnalysis.getInterpretation().getPrimaryFindings()) { + assertEquals(1, cv.getStudies().get(0).getSamples().size()); + } + System.out.println("results at out dir = " + outDir.toAbsolutePath()); } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java index d9f384a5789..9a10ff857f1 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java @@ -16,6 +16,7 @@ package org.opencb.opencga.catalog.managers; +import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.experimental.categories.Category; @@ -23,6 +24,7 @@ import org.opencb.biodata.models.clinical.Disorder; import org.opencb.biodata.models.clinical.Phenotype; import org.opencb.biodata.models.core.SexOntologyTermAnnotation; +import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.test.GenericTest; import org.opencb.opencga.catalog.exceptions.CatalogException; @@ -34,6 +36,7 @@ import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.models.user.Account; +import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; import java.io.IOException; @@ -45,6 +48,8 @@ import java.util.Collections; import java.util.List; +import static org.opencb.commons.datastore.core.QueryOptions.INCLUDE; + @Category(MediumTests.class) public class AbstractClinicalManagerTest extends GenericTest { @@ -56,8 +61,10 @@ public class AbstractClinicalManagerTest extends GenericTest { public final static String PROBAND_ID2 = "manuel_individual"; public final static String CA_ID3 = "clinical-analysis-3"; + public final static String PROBAND_ID3 = "HG005"; public final static String CA_ID4 = "clinical-analysis-4"; + public final static String PROBAND_ID4 = "HG105"; @Rule public ExpectedException thrown = ExpectedException.none(); @@ -147,7 +154,7 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta .setFather(hg006Individual) .setMother(hg007Individual) .setSex(SexOntologyTermAnnotation.initMale()) - .setSamples(Collections.singletonList(new Sample().setId("HG005"))); + .setSamples(Collections.singletonList(new Sample().setId(PROBAND_ID3))); Individual hg004Individual = new Individual().setId("HG004_individual") .setFather(hg006Individual) @@ -197,7 +204,7 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta .setFather(hg106Individual) .setMother(hg107Individual) .setSex(SexOntologyTermAnnotation.initMale()) - .setSamples(Collections.singletonList(new Sample().setId("HG105"))); + .setSamples(Collections.singletonList(new Sample().setId(PROBAND_ID4))); Individual hg104Individual = new Individual().setId("HG104_individual") .setFather(hg106Individual) @@ -226,6 +233,10 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta catalogUploadFile("/biofiles/HG105.1k.vcf.gz"); catalogUploadFile("/biofiles/HG106.1k.vcf.gz"); catalogUploadFile("/biofiles/HG107.1k.vcf.gz"); + + + OpenCGAResult sampleResult = catalogManager.getSampleManager().search(studyFqn, new Query(), new QueryOptions(INCLUDE, "id"), token); + Assert.assertEquals(12, sampleResult.getNumResults()); } private void catalogUploadFile(String path) throws IOException, CatalogException { From dbd516fd6ce5d44e593f75d6a2d913b6ba6c505b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 2 Apr 2024 18:13:13 +0200 Subject: [PATCH 3/5] app: fix Exomiser parameters, #TASK-5603 --- .../exomiser/ExomiserWrapperAnalysis.java | 3 ++- .../VariantInternalCommandExecutor.java | 2 +- .../internal/options/VariantCommandOptions.java | 6 +++--- .../opencb/opencga/core/api/FieldConstants.java | 6 +++--- .../models/clinical/ExomiserWrapperParams.java | 16 ++++++++++++---- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java index 172f8629135..c4a9d87d4f7 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.opencb.opencga.analysis.tools.OpenCgaToolScopeStudy; import org.opencb.opencga.core.exceptions.ToolException; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.tools.annotations.Tool; @@ -52,7 +53,7 @@ protected void run() throws Exception { getToolExecutor(ExomiserWrapperAnalysisExecutor.class) .setStudyId(study) .setSampleId(analysisParams.getSample()) - .setSampleId(analysisParams.getSample()) + .setClinicalAnalysisType(ClinicalAnalysis.Type.valueOf(analysisParams.getClinicalAnalysisType())) .execute(); }); } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java index 34ee91a796e..b39a1387329 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java @@ -1018,7 +1018,7 @@ private void exomiser() throws Exception { ObjectMap params = new ExomiserWrapperParams( cliOptions.sample, - ClinicalAnalysis.Type.valueOf(cliOptions.clinicalAnalysisType), + cliOptions.clinicalAnalysisType, cliOptions.outdir) .toObjectMap(cliOptions.commonOptions.params).append(ParamConstants.STUDY_PARAM, cliOptions.study); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java index daedb022e2c..aa25fe630e1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java @@ -1842,13 +1842,13 @@ public class ExomiserAnalysisCommandOptions { @Parameter(names = {"--study"}, description = "Study where all the samples belong to.") public String study; - @Parameter(names = {"--sample"}, description = "Sample ID.", required = true) + @Parameter(names = {"--sample"}, description = FieldConstants.SAMPLE_ID_DESCRIPTION, required = true) public String sample; - @Parameter(names = {"--analysis-mode"}, description = "Analysis mode, valid values: SINGLE or FAMILY") + @Parameter(names = {"--clinical-analysis-type"}, description = FieldConstants.EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION) public String clinicalAnalysisType = ClinicalAnalysis.Type.SINGLE.name(); - @Parameter(names = {"-o", "--outdir"}, description = "Output directory.") + @Parameter(names = {"-o", "--outdir"}, description = FieldConstants.JOB_OUT_DIR_DESCRIPTION) public String outdir; } } 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 d5476e10f60..2c2b3b9ee6a 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 @@ -38,9 +38,7 @@ public class FieldConstants { public static final String QUALITY_CONTROL_COMMENTS_DESCRIPTION = "Comments related to the quality control."; //Sample - public static final String SAMPLE_ID_DESCRIPTION = "Sample data model hosts information about any biological material, normally " - + "extracted from an _Individual_, that is used for a particular analysis. This is the main data model, it stores the most " - + "basic and important information."; + public static final String SAMPLE_ID_DESCRIPTION = "Sample ID."; public static final String SAMPLE_PROCESSING_DESCRIPTION = "Describes how the sample was processed in the lab."; public static final String SAMPLE_SAMPLE_COLLECTION_DESCRIPTION = "Describes how the sample was collected."; public static final String SAMPLE_QUALITY_CONTROL_DESCRIPTION = "Contains different metrics to evaluate the quality of the sample."; @@ -492,4 +490,6 @@ public class FieldConstants { + AlignmentQcParams.FASTQC_METRICS_SKIP_VALUE; public static final String ALIGNMENT_QC_OVERWRITE_DESCRIPTION = "To overwrite the QC metrics already computed."; + // Exomiser + public static final String EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION = "Clinical analysis type: SINGLE or FAMILY."; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java index d2183090e14..3b836063439 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java @@ -1,5 +1,7 @@ package org.opencb.opencga.core.models.clinical; +import org.opencb.commons.annotations.DataField; +import org.opencb.opencga.core.api.FieldConstants; import org.opencb.opencga.core.tools.ToolParams; import java.util.Map; @@ -7,14 +9,20 @@ public class ExomiserWrapperParams extends ToolParams { public static final String DESCRIPTION = "Exomiser parameters"; + @DataField(id = "sample", description = FieldConstants.SAMPLE_ID_DESCRIPTION) private String sample; - private ClinicalAnalysis.Type clinicalAnalysisType; + + @DataField(id = "clinicalAnalysisType", description = FieldConstants.EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION, + defaultValue = "SINGLE") + private String clinicalAnalysisType; + + @DataField(id = "outdir", description = FieldConstants.JOB_OUT_DIR_DESCRIPTION) private String outdir; public ExomiserWrapperParams() { } - public ExomiserWrapperParams(String sample, ClinicalAnalysis.Type clinicalAnalysisType, String outdir) { + public ExomiserWrapperParams(String sample, String clinicalAnalysisType, String outdir) { this.sample = sample; this.clinicalAnalysisType = clinicalAnalysisType; this.outdir = outdir; @@ -39,11 +47,11 @@ public ExomiserWrapperParams setSample(String sample) { return this; } - public ClinicalAnalysis.Type getClinicalAnalysisType() { + public String getClinicalAnalysisType() { return clinicalAnalysisType; } - public ExomiserWrapperParams setClinicalAnalysisType(ClinicalAnalysis.Type clinicalAnalysisType) { + public ExomiserWrapperParams setClinicalAnalysisType(String clinicalAnalysisType) { this.clinicalAnalysisType = clinicalAnalysisType; return this; } From 339c0cf3aa273f452e20d6aa0acf210e9cfb7c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 2 Apr 2024 18:21:21 +0200 Subject: [PATCH 4/5] clients: generate clients, #TASK-5603 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisVariantCommandExecutor.java | 14 ++++++++++++- ...erationsVariantStorageCommandExecutor.java | 19 ++++++++++++------ .../executors/SamplesCommandExecutor.java | 1 + .../AnalysisVariantCommandOptions.java | 13 +++++++----- ...perationsVariantStorageCommandOptions.java | 16 +++++++-------- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 20 +++++++++---------- .../src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 4 ++-- .../client/rest/clients/AlignmentClient.java | 4 ++-- .../rest/clients/ClinicalAnalysisClient.java | 4 ++-- .../client/rest/clients/CohortClient.java | 4 ++-- .../rest/clients/DiseasePanelClient.java | 4 ++-- .../client/rest/clients/FamilyClient.java | 4 ++-- .../client/rest/clients/FileClient.java | 4 ++-- .../client/rest/clients/GA4GHClient.java | 4 ++-- .../client/rest/clients/IndividualClient.java | 4 ++-- .../client/rest/clients/JobClient.java | 4 ++-- .../client/rest/clients/MetaClient.java | 4 ++-- .../client/rest/clients/ProjectClient.java | 4 ++-- .../client/rest/clients/SampleClient.java | 4 ++-- .../client/rest/clients/StudyClient.java | 4 ++-- .../client/rest/clients/UserClient.java | 4 ++-- .../client/rest/clients/VariantClient.java | 6 +++--- .../rest/clients/VariantOperationClient.java | 16 +++++++-------- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 4 ++-- .../rest_clients/alignment_client.py | 4 ++-- .../rest_clients/clinical_analysis_client.py | 4 ++-- .../pyopencga/rest_clients/cohort_client.py | 4 ++-- .../rest_clients/disease_panel_client.py | 4 ++-- .../pyopencga/rest_clients/family_client.py | 4 ++-- .../pyopencga/rest_clients/file_client.py | 4 ++-- .../pyopencga/rest_clients/ga4gh_client.py | 4 ++-- .../rest_clients/individual_client.py | 4 ++-- .../pyopencga/rest_clients/job_client.py | 4 ++-- .../pyopencga/rest_clients/meta_client.py | 4 ++-- .../pyopencga/rest_clients/project_client.py | 4 ++-- .../pyopencga/rest_clients/sample_client.py | 4 ++-- .../pyopencga/rest_clients/study_client.py | 4 ++-- .../pyopencga/rest_clients/user_client.py | 4 ++-- .../pyopencga/rest_clients/variant_client.py | 4 ++-- .../rest_clients/variant_operation_client.py | 4 ++-- 76 files changed, 174 insertions(+), 151 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 48db1bde2fd..8aae8622858 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-02-14 OpenCB +* Copyright 2015-2024-04-02 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index af1660a9e33..39e19ee88e1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-02-14 OpenCB +* Copyright 2015-2024-04-02 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java index 59d5ba0c3db..de60333d151 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java @@ -1,9 +1,16 @@ package org.opencb.opencga.app.cli.main.executors; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.opencb.biodata.models.clinical.ClinicalProperty.ModeOfInheritance; +import org.opencb.biodata.models.clinical.ClinicalProperty.Penetrance; import org.opencb.biodata.models.clinical.qc.Signature; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantAnnotation; +import org.opencb.biodata.models.variant.metadata.Aggregation; import org.opencb.biodata.models.variant.metadata.SampleVariantStats; import org.opencb.biodata.models.variant.metadata.VariantMetadata; import org.opencb.biodata.models.variant.metadata.VariantSetStats; @@ -12,14 +19,18 @@ import org.opencb.commons.datastore.core.QueryResponse; import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.main.*; +import org.opencb.opencga.app.cli.main.executors.OpencgaCommandExecutor; import org.opencb.opencga.app.cli.main.options.AnalysisVariantCommandOptions; import org.opencb.opencga.catalog.exceptions.CatalogAuthenticationException; +import org.opencb.opencga.client.exceptions.ClientException; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.models.analysis.knockout.KnockoutByGene; import org.opencb.opencga.core.models.analysis.knockout.KnockoutByIndividual; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.job.Job; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsExportParams; +import org.opencb.opencga.core.models.variant.AnnotationVariantQueryParams; import org.opencb.opencga.core.models.variant.CircosAnalysisParams; import org.opencb.opencga.core.models.variant.CohortVariantStatsAnalysisParams; import org.opencb.opencga.core.models.variant.FamilyQcAnalysisParams; @@ -40,10 +51,10 @@ import org.opencb.opencga.core.models.variant.SampleVariantFilterParams; import org.opencb.opencga.core.models.variant.SampleVariantStatsAnalysisParams; import org.opencb.opencga.core.models.variant.VariantExportParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.variant.VariantStatsAnalysisParams; import org.opencb.opencga.core.response.QueryType; import org.opencb.opencga.core.response.RestResponse; +import org.opencb.oskar.analysis.variant.gwas.GwasConfiguration; /* @@ -416,6 +427,7 @@ private RestResponse runExomiser() throws Exception { } else { ObjectMap beanParams = new ObjectMap(); putNestedIfNotEmpty(beanParams, "sample",commandOptions.sample, true); + putNestedIfNotEmpty(beanParams, "clinicalAnalysisType",commandOptions.clinicalAnalysisType, true); putNestedIfNotEmpty(beanParams, "outdir",commandOptions.outdir, true); exomiserWrapperParams = JacksonUtils.getDefaultObjectMapper().copy() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java index 294763c0b74..0b3a28d11b3 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java @@ -1,12 +1,19 @@ package org.opencb.opencga.app.cli.main.executors; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.HashMap; +import java.util.List; +import org.opencb.biodata.models.variant.metadata.Aggregation; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.main.*; +import org.opencb.opencga.app.cli.main.executors.OpencgaCommandExecutor; import org.opencb.opencga.app.cli.main.options.OperationsVariantStorageCommandOptions; import org.opencb.opencga.catalog.exceptions.CatalogAuthenticationException; +import org.opencb.opencga.client.exceptions.ClientException; import org.opencb.opencga.core.common.JacksonUtils; +import org.opencb.opencga.core.common.YesNoAuto; import org.opencb.opencga.core.config.storage.CellBaseConfiguration; import org.opencb.opencga.core.config.storage.SampleIndexConfiguration; import org.opencb.opencga.core.models.job.Job; @@ -15,19 +22,19 @@ import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationSaveParams; +import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; import org.opencb.opencga.core.models.operations.variant.VariantFamilyIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; +import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantScoreIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondaryAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondarySampleIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataRepairToolParams; -import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; -import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; -import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataSynchronizeParams; import org.opencb.opencga.core.models.operations.variant.VariantStudyDeleteParams; import org.opencb.opencga.core.response.QueryType; diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java index 7ed949a68a5..328cc9eb556 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java @@ -125,6 +125,7 @@ private RestResponse updateAcl() throws Exception { queryParams.putIfNotEmpty("study", sessionManager.getSession().getCurrentStudy()); } + SampleAclUpdateParams sampleAclUpdateParams = null; if (commandOptions.jsonDataModel) { RestResponse res = new RestResponse<>(); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java index ed53b2c1ded..f4a675b0e53 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java @@ -410,10 +410,13 @@ public class RunExomiserCommandOptions { @Parameter(names = {"--job-tags"}, description = "Job tags", required = false, arity = 1) public String jobTags; - @Parameter(names = {"--sample"}, description = "The body web service sample parameter", required = false, arity = 1) + @Parameter(names = {"--sample"}, description = "Sample ID.", required = false, arity = 1) public String sample; - @Parameter(names = {"--outdir"}, description = "The body web service outdir parameter", required = false, arity = 1) + @Parameter(names = {"--clinical-analysis-type"}, description = "Clinical analysis type: SINGLE or FAMILY.", required = false, arity = 1) + public String clinicalAnalysisType = "SINGLE"; + + @Parameter(names = {"--outdir"}, description = "Output dir for the job.", required = false, arity = 1) public String outdir; } @@ -993,7 +996,7 @@ public class RunHrDetectCommandOptions { @Parameter(names = {"--description"}, description = "Decription for these particular HRDetect results.", required = false, arity = 1) public String description; - @Parameter(names = {"--sample-id"}, description = "Sample data model hosts information about any biological material, normally extracted from an _Individual_, that is used for a particular analysis. This is the main data model, it stores the most basic and important information.", required = false, arity = 1) + @Parameter(names = {"--sample-id"}, description = "Sample ID.", required = false, arity = 1) public String sampleId; @Parameter(names = {"--snv-fitting-id"}, description = "Mutational signature fitting ID for SNV.", required = false, arity = 1) @@ -1079,7 +1082,7 @@ public class RunIndexCommandOptions { @Parameter(names = {"--fail-on-malformed-lines"}, description = "Fail when encountering malformed lines. (yes, no, auto) [auto]", required = false, arity = 1) public String failOnMalformedLines; - @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO and execute 'family-index' afterwards", required = false, help = true, arity = 0) + @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO", required = false, help = true, arity = 0) public boolean family = false; @Parameter(names = {"--somatic"}, description = "Indicate that the files to be loaded contain somatic samples. This will set 'load-hom-ref' to YES if it was in AUTO.", required = false, help = true, arity = 0) @@ -2035,7 +2038,7 @@ public class RunSampleQcCommandOptions { @Parameter(names = {"--job-tags"}, description = "Job tags", required = false, arity = 1) public String jobTags; - @Parameter(names = {"--sample"}, description = "Sample data model hosts information about any biological material, normally extracted from an _Individual_, that is used for a particular analysis. This is the main data model, it stores the most basic and important information.", required = false, arity = 1) + @Parameter(names = {"--sample"}, description = "Sample ID.", required = false, arity = 1) public String sample; @Parameter(names = {"--vs-id"}, description = "Variant stats ID.", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java index a9b95be294a..4f81b547328 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java @@ -160,10 +160,10 @@ public class AggregateVariantCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--overwrite"}, description = "The body web service overwrite parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--overwrite"}, description = "Overwrite aggregation for all files and variants. Repeat operation for already processed variants.", required = false, help = true, arity = 0) public boolean overwrite = false; - @Parameter(names = {"--resume"}, description = "The body web service resume parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--resume"}, description = "Resume a previously failed index operation", required = false, help = true, arity = 0) public boolean resume = false; } @@ -280,7 +280,7 @@ public class SaveVariantAnnotationCommandOptions { @Parameter(names = {"--project", "-p"}, description = "Project [user@]project where project can be either the ID or the alias", required = false, arity = 1) public String project; - @Parameter(names = {"--annotation-id"}, description = "The body web service annotationId parameter", required = false, arity = 1) + @Parameter(names = {"--annotation-id"}, description = "New Variant Annotation identifier", required = false, arity = 1) public String annotationId; } @@ -370,13 +370,13 @@ public class AggregateVariantFamilyCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--samples"}, description = "The body web service samples parameter", required = false, arity = 1) + @Parameter(names = {"--samples"}, description = "Samples within the same study to aggregate", required = false, arity = 1) public String samples; - @Parameter(names = {"--gaps-genotype"}, description = "The body web service gapsGenotype parameter", required = false, arity = 1) + @Parameter(names = {"--gaps-genotype"}, description = "Genotype to be used in gaps. Either 0/0, ./. or ?/?", required = false, arity = 1) public String gapsGenotype; - @Parameter(names = {"--resume"}, description = "The body web service resume parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--resume"}, description = "Resume a previously failed index operation", required = false, help = true, arity = 0) public boolean resume = false; } @@ -473,7 +473,7 @@ public class IndexVariantCommandOptions { @Parameter(names = {"--fail-on-malformed-lines"}, description = "Fail when encountering malformed lines. (yes, no, auto) [auto]", required = false, arity = 1) public String failOnMalformedLines; - @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO and execute 'family-index' afterwards", required = false, help = true, arity = 0) + @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO", required = false, help = true, arity = 0) public boolean family = false; @Parameter(names = {"--somatic"}, description = "Indicate that the files to be loaded contain somatic samples. This will set 'load-hom-ref' to YES if it was in AUTO.", required = false, help = true, arity = 0) @@ -607,7 +607,7 @@ public class LauncherVariantIndexCommandOptions { @Parameter(names = {"--index-params-fail-on-malformed-lines"}, description = "Fail when encountering malformed lines. (yes, no, auto) [auto]", required = false, arity = 1) public String indexParamsFailOnMalformedLines; - @Parameter(names = {"--index-params-family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO and execute 'family-index' afterwards", required = false, help = true, arity = 0) + @Parameter(names = {"--index-params-family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO", required = false, help = true, arity = 0) public boolean indexParamsFamily = false; @Parameter(names = {"--index-params-somatic"}, description = "Indicate that the files to be loaded contain somatic samples. This will set 'load-hom-ref' to YES if it was in AUTO.", required = false, help = true, arity = 0) diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index c3041969f51..9eb3da76a50 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 53cd5d9802c..f2305dc2afc 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index f9fdb51fe6f..b95464800e9 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, group, variableSet, studies, templateId, study, members, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, study, group, studies, members, templateId, variableSet, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, folder, annotationSet, file, files, members, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, file, annotationSet, members, folder, files, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, annotationSet, members, sample, samples, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individuals, members, annotationSet, individual, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, annotationSet, members, individual, individuals, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, families, family, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, annotationSet, family, members, families, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohort, members, annotationSet, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretation, clinicalAnalysis, interpretations, annotationSet, clinicalAnalyses, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretations, clinicalAnalyses, annotationSet, members, clinicalAnalysis, interpretation, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index ecd04d6d74d..12050747f04 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -61,7 +61,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, clinicalAnalysis, interpretations, annotationSet, clinicalAnalyses, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, clinicalAnalyses, annotationSet, members, clinicalAnalysis, interpretation, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index b4cbb071860..0f06995005e 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, members, annotationSet, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 9f965314e0f..ae6fcf23567 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, families, family, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, annotationSet, family, members, families, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index fd0ad7f691c..11e4a3b6e53 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, annotationSet, file, files, members, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, file, annotationSet, members, folder, files, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index d9d2c5689e4..66438d21bf7 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 72d5e0839dc..eec88910643 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individuals, members, annotationSet, individual, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, members, individual, individuals, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index edfb52fbaff..37c35708bab 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 730500d7b4a..4281a8dd7a0 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 11e89656de2..20688eb888d 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 3d1c5bfb8d3..447c7f260e7 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index ebbcb80dd92..2a990c23110 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index c5f0bbd3357..d3236dcb5ff 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, members, sample, samples, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index c86c0da79b1..80dd512e819 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, group, variableSet, studies, templateId, study, members, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, study, group, studies, members, templateId, variableSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index fb403c674e6..6fa09e03fc5 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index d114e5d4882..2139d8a1a6d 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index d4fcd4b1d60..ad1d3acb437 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Admin webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: admin */ public class AdminClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index c6c8c84fd8b..42c0aa02a6c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -49,7 +49,7 @@ /** * This class contains methods for the Alignment webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/alignment */ public class AlignmentClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index e4858049e0b..0f1a735818d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -54,7 +54,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -63,7 +63,7 @@ /** * This class contains methods for the ClinicalAnalysis webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/clinical */ public class ClinicalAnalysisClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index f136be11310..edc593ea0df 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Cohort webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: cohorts */ public class CohortClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 497e02f5445..42024d2cdb8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +44,7 @@ /** * This class contains methods for the DiseasePanel webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: panels */ public class DiseasePanelClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 437d6e65255..cef93b298d4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Family webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: families */ public class FamilyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 66ae008ab7c..727b4bdaa1b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -52,7 +52,7 @@ /** * This class contains methods for the File webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: files */ public class FileClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 5d007b409bd..29ba4b837db 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ /** * This class contains methods for the GA4GH webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: ga4gh */ public class GA4GHClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 67bb7feb715..570b0c5e290 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Individual webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: individuals */ public class IndividualClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index c4fb407be93..dc70868534f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Job webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: jobs */ public class JobClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 4f1873c571c..c1038c2bcb1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -37,7 +37,7 @@ /** * This class contains methods for the Meta webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: meta */ public class MetaClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 19b3144a06d..46ff0306de0 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -41,7 +41,7 @@ /** * This class contains methods for the Project webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: projects */ public class ProjectClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index f1e5b7ac798..2e7dac9ea70 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Sample webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: samples */ public class SampleClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 4a9b4550de8..9f304ec146b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ /** * This class contains methods for the Study webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: studies */ public class StudyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index bbf582a2cc6..a3258204820 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the User webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: users */ public class UserClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 1480df3ca9e..72a918c8f6a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -32,6 +32,7 @@ import org.opencb.opencga.core.models.analysis.knockout.KnockoutByIndividual; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.job.Job; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsExportParams; import org.opencb.opencga.core.models.variant.CircosAnalysisParams; import org.opencb.opencga.core.models.variant.CohortVariantStatsAnalysisParams; @@ -53,7 +54,6 @@ import org.opencb.opencga.core.models.variant.SampleVariantFilterParams; import org.opencb.opencga.core.models.variant.SampleVariantStatsAnalysisParams; import org.opencb.opencga.core.models.variant.VariantExportParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.variant.VariantStatsAnalysisParams; import org.opencb.opencga.core.response.RestResponse; @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -71,7 +71,7 @@ /** * This class contains methods for the Variant webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/variant */ public class VariantClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 5351b58c869..e7e515c9357 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -28,19 +28,19 @@ import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationSaveParams; +import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; import org.opencb.opencga.core.models.operations.variant.VariantFamilyIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; +import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantScoreIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondaryAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondarySampleIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataRepairToolParams; -import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; -import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; -import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataSynchronizeParams; import org.opencb.opencga.core.models.operations.variant.VariantStudyDeleteParams; import org.opencb.opencga.core.response.RestResponse; @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -59,7 +59,7 @@ /** * This class contains methods for the VariantOperation webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: operation */ public class VariantOperationClient extends AbstractParentClient { diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 30fe2d2b09b..2377deb6a5d 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 764a51d164d..f19e3f9730a 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 1556652d3d3..43355233c98 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 97ef19dcbdf..eed9d670e97 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 52601203a30..ad3750dddd8 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 608c23c087d..cc2a5e7fd84 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index f09d5c4562f..a512552f575 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index b656c0bd696..ad65f679658 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index d8bd896ae88..3446e95a702 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 9489c82bc7a..2ed4db0e9b4 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index b5636ff6a5e..8a452420625 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index bde7382c84d..6c5dc015c14 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 990f3b3b04e..6a10489e885 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 7d443653ad9..9d68b8ecb87 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index 2093a3aadb4..b008e70997a 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index c98bccd6bf5..1874e9b146d 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index ad54d4104cf..65132601a6d 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 4a60e9c7e2f..3cc57636937 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Admin(_ParentRestClient): """ This class contains methods for the 'Admin' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/admin """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 98b40a3f711..54e58d84df2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Alignment(_ParentRestClient): """ This class contains methods for the 'Analysis - Alignment' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/alignment """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 1e4a73902cc..9b385f43826 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class ClinicalAnalysis(_ParentRestClient): """ This class contains methods for the 'Analysis - Clinical' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/clinical """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 50af2a865a2..eebf5207dd3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Cohort(_ParentRestClient): """ This class contains methods for the 'Cohorts' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/cohorts """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index e234b2ff148..cad832f07e3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class DiseasePanel(_ParentRestClient): """ This class contains methods for the 'Disease Panels' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/panels """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 4fd32087258..3401712dbf8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Family(_ParentRestClient): """ This class contains methods for the 'Families' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/families """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 22e58ba63be..ef79d272d7b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class File(_ParentRestClient): """ This class contains methods for the 'Files' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/files """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index b15c6e8bd76..55b32f7a9a3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class GA4GH(_ParentRestClient): """ This class contains methods for the 'GA4GH' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/ga4gh """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 3b393328993..65ab19393dd 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Individual(_ParentRestClient): """ This class contains methods for the 'Individuals' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/individuals """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 1d5369c4639..1a9e30fa472 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Job(_ParentRestClient): """ This class contains methods for the 'Jobs' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/jobs """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 1506926345b..91f1a0148c4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Meta(_ParentRestClient): """ This class contains methods for the 'Meta' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/meta """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 338e65d466c..9265e6cb11c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Project(_ParentRestClient): """ This class contains methods for the 'Projects' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/projects """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index e83e98d3be2..01affe601e3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Sample(_ParentRestClient): """ This class contains methods for the 'Samples' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/samples """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 17fda942ec7..620c5e3fdc6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Study(_ParentRestClient): """ This class contains methods for the 'Studies' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/studies """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index f991cf25dae..b684890bcab 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class User(_ParentRestClient): """ This class contains methods for the 'Users' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/users """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 57cd7a1a9cf..cf74d9e49c8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Variant(_ParentRestClient): """ This class contains methods for the 'Analysis - Variant' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/variant """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index b48bb9d8ad4..315ddf4e234 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class VariantOperation(_ParentRestClient): """ This class contains methods for the 'Operations - Variant Storage' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/operation """ From f9f40511b9afc65120dde7583dfff03e1d8040e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 3 Apr 2024 16:38:54 +0100 Subject: [PATCH 5/5] pom: Add log4j2-test.xml #TASK-5603 --- opencga-analysis/pom.xml | 8 ++++++++ opencga-catalog/pom.xml | 6 ++++++ .../src/test/resources/log4j2-test.xml | 20 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 opencga-core/src/test/resources/log4j2-test.xml diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 8f1dbb61469..abd6d563378 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -243,6 +243,14 @@ + + + ../opencga-core/src/test/resources + + log4j2-test.xml + + + org.apache.maven.plugins diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 7a4dd21139b..e20025edd44 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -265,6 +265,12 @@ template.zip + + ../opencga-core/src/test/resources + + log4j2-test.xml + + diff --git a/opencga-core/src/test/resources/log4j2-test.xml b/opencga-core/src/test/resources/log4j2-test.xml new file mode 100644 index 00000000000..dce741b72cb --- /dev/null +++ b/opencga-core/src/test/resources/log4j2-test.xml @@ -0,0 +1,20 @@ + + + + ${sys:opencga.log.level:-info} + + + + + + + + + + + + + + + + \ No newline at end of file