From bfc7f9559b86670fda3867a1763de0c997658fe1 Mon Sep 17 00:00:00 2001 From: sundarvenkata-ebi Date: Thu, 8 Sep 2022 06:43:34 +0100 Subject: [PATCH 1/4] Remove Scaffold entities from the codebase --- .../controller/admin/AdminController.java | 11 - .../controller/admin/AdminHandler.java | 15 -- .../contigalias/ContigAliasHandler.java | 153 +++-------- .../datasource/ENAAssemblyDataSource.java | 11 +- .../contigalias/dus/AssemblyReportReader.java | 3 +- .../dus/ENAAssemblyReportReader.java | 10 +- .../dus/NCBIAssemblyReportReader.java | 10 +- .../contigalias/entities/AssemblyEntity.java | 15 -- .../contigalias/entities/ScaffoldEntity.java | 29 -- .../contigalias/entities/SequenceEntity.java | 16 ++ .../contigalias/repo/ScaffoldRepository.java | 86 ------ .../contigalias/service/AssemblyService.java | 19 +- .../service/ChromosomeService.java | 12 +- .../contigalias/service/ScaffoldService.java | 254 ------------------ .../ContigAliasControllerIntegrationTest.java | 10 - .../contigalias/ContigAliasHandlerTest.java | 121 +-------- .../dus/ENAAssemblyReportReaderTest.java | 21 -- .../dus/NCBIAssemblyReportReaderTest.java | 18 +- .../entitygenerator/AssemblyGenerator.java | 5 +- .../entitygenerator/ScaffoldGenerator.java | 109 -------- .../ScaffoldServiceIntegrationTest.java | 82 ------ 21 files changed, 90 insertions(+), 920 deletions(-) delete mode 100644 src/main/java/uk/ac/ebi/eva/contigalias/entities/ScaffoldEntity.java delete mode 100644 src/main/java/uk/ac/ebi/eva/contigalias/repo/ScaffoldRepository.java delete mode 100644 src/main/java/uk/ac/ebi/eva/contigalias/service/ScaffoldService.java delete mode 100644 src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/ScaffoldGenerator.java delete mode 100644 src/test/java/uk/ac/ebi/eva/contigalias/service/ScaffoldServiceIntegrationTest.java diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminController.java b/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminController.java index 9a929b99..d28658a4 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminController.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminController.java @@ -113,17 +113,6 @@ public void putChromosomeChecksumsByAccession( handler.putChromosomeChecksumsByAccession(accession, md5, trunc512); } - @ApiOperation(value = "Add MD5 and TRUNC512 checksums to all scaffolds by accession.", - notes = "Given an INSDC or RefSeq accession along with a MD5 or a TRUNC512 checksum, this endpoint will " + - "add the given checksums to all scaffolds that match the given INSDC or RefSeq accession.") - @PutMapping(value = "scaffolds/{accession}/checksum") - public void putScaffoldChecksumsByAccession( - @PathVariable @ApiParam(value = "INSDC or Refseq scaffold accession. Eg: NC_000001.11") String accession, - @RequestParam(required = false) @ApiParam("The MD5 checksum associated with the scaffolds.") String md5, - @RequestParam(required = false) @ApiParam("The TRUNC512 checksum associated with the scaffolds.") String trunc512) { - handler.putScaffoldChecksumsByAccession(accession, md5, trunc512); - } - @ApiOperation(value = "Delete an assembly from local database using its GenBank or RefSeq accession.", notes = "Given an assembly's accession this endpoint will delete the assembly that matches that " + "accession from the local database. The accession can be either a INSDC or RefSeq accession and" + diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminHandler.java b/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminHandler.java index c71c0968..9cc50eb9 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminHandler.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/controller/admin/AdminHandler.java @@ -18,22 +18,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.web.PagedResourcesAssembler; -import org.springframework.hateoas.EntityModel; -import org.springframework.hateoas.PagedModel; import org.springframework.stereotype.Service; import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.service.AssemblyService; import uk.ac.ebi.eva.contigalias.service.ChromosomeService; -import uk.ac.ebi.eva.contigalias.service.ScaffoldService; import java.io.IOException; import java.util.List; import java.util.Map; -import java.util.Optional; - -import static uk.ac.ebi.eva.contigalias.controller.BaseHandler.convertToPage; -import static uk.ac.ebi.eva.contigalias.controller.BaseHandler.generatePagedModelFromPage; @Service public class AdminHandler { @@ -42,18 +35,14 @@ public class AdminHandler { private final ChromosomeService chromosomeService; - private final ScaffoldService scaffoldService; - private final PagedResourcesAssembler assemblyAssembler; @Autowired public AdminHandler(AssemblyService assemblyService, ChromosomeService chromosomeService, - ScaffoldService scaffoldService, PagedResourcesAssembler assemblyAssembler) { this.assemblyService = assemblyService; this.chromosomeService = chromosomeService; - this.scaffoldService = scaffoldService; this.assemblyAssembler = assemblyAssembler; } @@ -76,8 +65,4 @@ public void putAssemblyChecksumsByAccession(String accession, String md5, String public void putChromosomeChecksumsByAccession(String accession, String md5, String trunc512) { chromosomeService.putChromosomeChecksumsByAccession(accession, md5, trunc512); } - - public void putScaffoldChecksumsByAccession(String accession, String md5, String trunc512) { - scaffoldService.putScaffoldChecksumsByAccession(accession, md5, trunc512); - } } diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java b/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java index f3c3849c..60eec563 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java @@ -30,7 +30,6 @@ import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import uk.ac.ebi.eva.contigalias.service.AssemblyService; import uk.ac.ebi.eva.contigalias.service.ChromosomeService; -import uk.ac.ebi.eva.contigalias.service.ScaffoldService; import java.util.LinkedList; import java.util.List; @@ -46,8 +45,6 @@ public class ContigAliasHandler { private final ChromosomeService chromosomeService; - private final ScaffoldService scaffoldService; - private final PagedResourcesAssembler assemblyAssembler; private final PagedResourcesAssembler sequenceAssembler; @@ -55,12 +52,10 @@ public class ContigAliasHandler { @Autowired public ContigAliasHandler(AssemblyService assemblyService, ChromosomeService chromosomeService, - ScaffoldService scaffoldService, PagedResourcesAssembler assemblyAssembler, PagedResourcesAssembler sequenceAssembler) { this.assemblyService = assemblyService; this.chromosomeService = chromosomeService; - this.scaffoldService = scaffoldService; this.assemblyAssembler = assemblyAssembler; this.sequenceAssembler = sequenceAssembler; } @@ -91,79 +86,52 @@ public PagedModel> getAssembliesByTaxid(long taxid, public PagedModel> getAssembliesBySequenceGenbank(String genbank) { List assemblies = chromosomeService.getAssembliesByChromosomeGenbank(genbank); - assemblies.addAll(scaffoldService.getAssembliesByScaffoldGenbank(genbank)); return generatePagedModelFromPage(new PageImpl<>(assemblies), assemblyAssembler); } public PagedModel> getAssembliesBySequenceRefseq(String refseq) { List assemblies = chromosomeService.getAssembliesByChromosomeRefseq(refseq); - assemblies.addAll(scaffoldService.getAssembliesByScaffoldRefseq(refseq)); return generatePagedModelFromPage(new PageImpl<>(assemblies), assemblyAssembler); } public PagedModel> getSequencesByGenbank(String genbank, Pageable request) { long count = chromosomeService.countChromosomeEntitiesByGenbank(genbank); - List[] pageRequests = createScaffoldsPageRequest(count, request); + Pageable pageRequest = createPageRequest(count, request); List> pages = new LinkedList<>(); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByGenbank(genbank, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByGenbank(genbank, pageable)); - } + pages.add(chromosomeService.getChromosomesByGenbank(genbank, pageRequest)); return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } public PagedModel> getSequencesByRefseq(String refseq, Pageable request) { long count = chromosomeService.countChromosomeEntitiesByRefseq(refseq); - List[] pageRequests = createScaffoldsPageRequest(count, request); + Pageable pageRequest = createPageRequest(count, request); List> pages = new LinkedList<>(); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByRefseq(refseq, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByRefseq(refseq, pageable)); - } + pages.add(chromosomeService.getChromosomesByRefseq(refseq, pageRequest)); return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } public PagedModel> getSequencesByAssemblyGenbank(String genbank, Pageable request) { long count = chromosomeService.countChromosomeEntitiesByAssembly_Genbank(genbank); - List[] pageRequests = createScaffoldsPageRequest(count, request); + Pageable pageRequest = createPageRequest(count, request); List> pages = new LinkedList<>(); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByAssemblyGenbank(genbank, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByAssemblyGenbank(genbank, pageable)); - } + pages.add(chromosomeService.getChromosomesByAssemblyGenbank(genbank, pageRequest)); return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } public PagedModel> getSequencesByAssemblyRefseq(String refseq, Pageable request) { long count = chromosomeService.countChromosomeEntitiesByAssembly_Refseq(refseq); - List[] pageRequests = createScaffoldsPageRequest(count, request); + Pageable pageRequest = createPageRequest(count, request); List> pages = new LinkedList<>(); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByAssemblyRefseq(refseq, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByAssemblyRefseq(refseq, pageable)); - } + pages.add(chromosomeService.getChromosomesByAssemblyRefseq(refseq, pageRequest)); return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } public PagedModel> getSequencesByAssemblyAccession(String accession, Pageable request) { long count = chromosomeService.countChromosomeEntitiesByAssemblyGenbankOrAssemblyRefseq(accession, accession); - List[] pageRequests = createScaffoldsPageRequest(count, request); + Pageable pageRequest = createPageRequest(count, request); List> pages = new LinkedList<>(); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByAssemblyAccession(accession, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByAssemblyAccession(accession, pageable)); - } + pages.add(chromosomeService.getChromosomesByAssemblyAccession(accession, pageRequest)); return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } @@ -172,31 +140,16 @@ public PagedModel> getSequencesBySequenceNameAndAsse List> pages = new LinkedList<>(); if (nameType.equals(ContigAliasController.NAME_UCSC_TYPE)) { long count = chromosomeService.countChromosomeEntitiesByUcscNameAndAssembly_Taxid(name, taxid); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByUcscNameAndAssemblyTaxid(name, taxid, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByUcscNameAndAssemblyTaxid(name, taxid, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByUcscNameAndAssemblyTaxid(name, taxid, pageRequest)); } else if (nameType.equals(ContigAliasController.NAME_ENA_TYPE)) { long count = chromosomeService.countChromosomeEntitiesByEnaNameAndAssembly_Taxid(name, taxid); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByEnaNameAndAssemblyTaxid(name, taxid, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByEnaNameAndAssemblyTaxid(name, taxid, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByEnaNameAndAssemblyTaxid(name, taxid, pageRequest)); } else { long count = chromosomeService.countChromosomeEntitiesByNameAndAssembly_Taxid(name, taxid); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByNameAndAssemblyTaxid(name, taxid, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByNameAndAssemblyTaxid(name, taxid, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByNameAndAssemblyTaxid(name, taxid, pageRequest)); } return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } @@ -209,31 +162,16 @@ public PagedModel> getSequencesBySequenceNameAndAsse AssemblyEntity assemblyEntity = assembly.get(); if (nameType.equals(ContigAliasController.NAME_UCSC_TYPE)) { long count = chromosomeService.countChromosomeEntitiesByUcscNameAndAssembly(name, assemblyEntity); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByUcscNameAndAssembly(name, assemblyEntity, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByUcscNameAndAssembly(name, assemblyEntity, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByUcscNameAndAssembly(name, assemblyEntity, pageRequest)); } else if (nameType.equals(ContigAliasController.NAME_ENA_TYPE)) { long count = chromosomeService.countChromosomeEntitiesByEnaNameAndAssembly(name, assemblyEntity); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByEnaNameAndAssembly(name, assemblyEntity, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByEnaNameAndAssembly(name, assemblyEntity, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByEnaNameAndAssembly(name, assemblyEntity, pageRequest)); } else { long count = chromosomeService.countChromosomeEntitiesByNameAndAssembly(name, assemblyEntity); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByNameAndAssembly(name, assemblyEntity, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByNameAndAssembly(name, assemblyEntity, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByNameAndAssembly(name, assemblyEntity, pageRequest)); } } return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); @@ -244,31 +182,16 @@ public PagedModel> getSequencesByName( List> pages = new LinkedList<>(); if (nameType.equals(ContigAliasController.NAME_UCSC_TYPE)) { long count = chromosomeService.countChromosomeEntitiesByUcscName(name); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByUcscName(name, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByUcscName(name, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByUcscName(name, pageRequest)); } else if (nameType.equals(ContigAliasController.NAME_ENA_TYPE)) { long count = chromosomeService.countChromosomeEntitiesByEnaName(name); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByEnaName(name, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByEnaName(name, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByEnaName(name, pageRequest)); } else { long count = chromosomeService.countChromosomeEntitiesByName(name); - List[] pageRequests = createScaffoldsPageRequest(count, request); - for (Pageable pageable : pageRequests[0]) { - pages.add(chromosomeService.getChromosomesByName(name, pageable)); - } - for (Pageable pageable : pageRequests[1]) { - pages.add(scaffoldService.getScaffoldsByName(name, pageable)); - } + Pageable pageRequest = createPageRequest(count, request); + pages.add(chromosomeService.getChromosomesByName(name, pageRequest)); } return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); } @@ -285,11 +208,7 @@ private Page createSequencePage(List(sequenceEntities); } - List[] createScaffoldsPageRequest(long totalChromosomes, Pageable request) { - List[] result = new List[2]; - result[0] = new LinkedList<>(); - result[1] = new LinkedList<>(); - + Pageable createPageRequest(long totalChromosomes, Pageable request) { int currentPageSize = request.getPageSize(); // 10 long maxFilledPageSize = request.getOffset() + currentPageSize; //30 @@ -298,22 +217,12 @@ List[] createScaffoldsPageRequest(long totalChromosomes, Pageable requ int totalChrPages = (int) ((totalChromosomes / currentPageSize) + 1); // 3 int maxFilledChrPageSize = (totalChrPages) * currentPageSize; //30 int chrResultOffset = (int) (totalChromosomes % currentPageSize); // 7 - int secondPageOffset = currentPageSize - chrResultOffset; if (maxFilledPageSize <= maxFilledChrPageSize) { - if (chrResultOffset != 0) { - result[0].add(PageRequest.of(request.getPageNumber(), chrResultOffset)); - } - result[1].add(PageRequest.of(0, secondPageOffset)); - } else { - int scaffoldPageNumber = (int) ((maxFilledPageSize - maxFilledChrPageSize) / currentPageSize); - result[1].add(PageRequest.of(scaffoldPageNumber - 1, chrResultOffset)); - result[1].add(PageRequest.of(scaffoldPageNumber, secondPageOffset)); + return PageRequest.of(request.getPageNumber(), chrResultOffset); } - } else { - result[0].add(request); } - return result; + return request; } } diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/datasource/ENAAssemblyDataSource.java b/src/main/java/uk/ac/ebi/eva/contigalias/datasource/ENAAssemblyDataSource.java index e05fdcfb..a5cd4fe3 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/datasource/ENAAssemblyDataSource.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/datasource/ENAAssemblyDataSource.java @@ -26,7 +26,6 @@ import uk.ac.ebi.eva.contigalias.dus.ENABrowserFactory; import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import java.io.IOException; @@ -37,7 +36,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.stream.Stream; @Repository("ENADataSource") public class ENAAssemblyDataSource implements AssemblyDataSource { @@ -97,10 +95,6 @@ public void addENASequenceNamesToAssembly(Optional optional) thr sourceAssembly.getChromosomes() : Collections.emptyList(), Objects.nonNull(targetAssembly.getChromosomes()) ? targetAssembly.getChromosomes() : Collections.emptyList()); - addENASequenceNames(Objects.nonNull(sourceAssembly.getScaffolds()) ? - sourceAssembly.getScaffolds() : Collections.emptyList(), - Objects.nonNull(targetAssembly.getScaffolds()) ? - targetAssembly.getScaffolds() : Collections.emptyList()); } } } @@ -109,10 +103,7 @@ public void addENASequenceNamesToAssembly(Optional optional) thr public boolean hasAllEnaSequenceNames(AssemblyEntity assembly) { List chromosomes = Objects.nonNull(assembly.getChromosomes()) ? assembly.getChromosomes() : Collections.emptyList(); - List scaffolds = Objects.nonNull(assembly.getScaffolds()) ? - assembly.getScaffolds() : Collections.emptyList(); - return Stream.concat(chromosomes.stream(), scaffolds.stream()) - .allMatch(sequence -> sequence.getEnaSequenceName() != null); + return chromosomes.stream().allMatch(sequence -> sequence.getEnaSequenceName() != null); } private void addENASequenceNames( diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/dus/AssemblyReportReader.java b/src/main/java/uk/ac/ebi/eva/contigalias/dus/AssemblyReportReader.java index b238277a..4d1750dd 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/dus/AssemblyReportReader.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/dus/AssemblyReportReader.java @@ -18,7 +18,6 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; import java.io.BufferedReader; import java.io.IOException; @@ -80,7 +79,7 @@ public AssemblyEntity getAssemblyEntity() throws IOException { /** * Parses lines in assembly report containing Scaffold metadata. This array is used to set metadata to corresponding - * fields in {@link ScaffoldEntity}. + * fields in {@link ChromosomeEntity}. * * @param columns An array of fields in a line of the assembly report file not starting with "#". */ diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReader.java b/src/main/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReader.java index a85be53b..c8555e4f 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReader.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReader.java @@ -18,7 +18,7 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; +import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import java.io.IOException; import java.io.InputStreamReader; @@ -71,6 +71,7 @@ protected void parseChromosomeLine(String[] columns) { assemblyEntity = new AssemblyEntity(); } chromosomeEntity.setAssembly(this.assemblyEntity); + chromosomeEntity.setContigType(SequenceEntity.ContigType.CHROMOSOME); List chromosomes = this.assemblyEntity.getChromosomes(); if (chromosomes == null) { @@ -81,7 +82,7 @@ protected void parseChromosomeLine(String[] columns) { } protected void parseScaffoldLine(String[] columns) { - ScaffoldEntity scaffoldEntity = new ScaffoldEntity(); + ChromosomeEntity scaffoldEntity = new ChromosomeEntity(); scaffoldEntity.setGenbank(columns[0]); scaffoldEntity.setEnaSequenceName(columns[1]); @@ -90,11 +91,12 @@ protected void parseScaffoldLine(String[] columns) { assemblyEntity = new AssemblyEntity(); } scaffoldEntity.setAssembly(this.assemblyEntity); + scaffoldEntity.setContigType(SequenceEntity.ContigType.SCAFFOLD); - List scaffolds = this.assemblyEntity.getScaffolds(); + List scaffolds = this.assemblyEntity.getChromosomes(); if (scaffolds == null) { scaffolds = new LinkedList<>(); - assemblyEntity.setScaffolds(scaffolds); + assemblyEntity.setChromosomes(scaffolds); } scaffolds.add(scaffoldEntity); } diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReader.java b/src/main/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReader.java index 7dbf64b0..9aa6584f 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReader.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReader.java @@ -18,7 +18,7 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; +import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import java.io.IOException; import java.io.InputStreamReader; @@ -108,6 +108,7 @@ protected void parseChromosomeLine(String[] columns) { assemblyEntity = new AssemblyEntity(); } chromosomeEntity.setAssembly(this.assemblyEntity); + chromosomeEntity.setContigType(SequenceEntity.ContigType.CHROMOSOME); List chromosomes = this.assemblyEntity.getChromosomes(); if (chromosomes == null) { @@ -118,7 +119,7 @@ protected void parseChromosomeLine(String[] columns) { } protected void parseScaffoldLine(String[] columns) { - ScaffoldEntity scaffoldEntity = new ScaffoldEntity(); + ChromosomeEntity scaffoldEntity = new ChromosomeEntity(); scaffoldEntity.setGenbankSequenceName(columns[0]); scaffoldEntity.setGenbank(columns[4]); @@ -135,11 +136,12 @@ protected void parseScaffoldLine(String[] columns) { assemblyEntity = new AssemblyEntity(); } scaffoldEntity.setAssembly(this.assemblyEntity); + scaffoldEntity.setContigType(SequenceEntity.ContigType.SCAFFOLD); - List scaffolds = this.assemblyEntity.getScaffolds(); + List scaffolds = this.assemblyEntity.getChromosomes(); if (scaffolds == null) { scaffolds = new LinkedList<>(); - assemblyEntity.setScaffolds(scaffolds); + assemblyEntity.setChromosomes(scaffolds); } scaffolds.add(scaffoldEntity); } diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/entities/AssemblyEntity.java b/src/main/java/uk/ac/ebi/eva/contigalias/entities/AssemblyEntity.java index 85ee0a1c..76b92a82 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/entities/AssemblyEntity.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/entities/AssemblyEntity.java @@ -73,12 +73,6 @@ public class AssemblyEntity { @OneToMany(mappedBy = "assembly", cascade = CascadeType.ALL) private List chromosomes; - @JsonIgnore - @ApiModelProperty(value = "List of all scaffolds of the assembly present in the database.") - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(mappedBy = "assembly", cascade = CascadeType.ALL) - private List scaffolds; - public AssemblyEntity() { } @@ -167,15 +161,6 @@ public AssemblyEntity setChromosomes(List chromosomes) { return this; } - public List getScaffolds() { - return scaffolds; - } - - public AssemblyEntity setScaffolds(List scaffolds) { - this.scaffolds = scaffolds; - return this; - } - @Override public String toString() { StringBuilder builder = new StringBuilder(); diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/entities/ScaffoldEntity.java b/src/main/java/uk/ac/ebi/eva/contigalias/entities/ScaffoldEntity.java deleted file mode 100644 index 893a0d9f..00000000 --- a/src/main/java/uk/ac/ebi/eva/contigalias/entities/ScaffoldEntity.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2020 EMBL - European Bioinformatics Institute - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package uk.ac.ebi.eva.contigalias.entities; - -import javax.persistence.Entity; -import javax.persistence.Table; - -@Entity -@Table(name = "scaffold") -public class ScaffoldEntity extends SequenceEntity { - - public ScaffoldEntity() { - } - -} diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java b/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java index 11ae9ac5..b4073d25 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java @@ -59,6 +59,14 @@ public class SequenceEntity { @ApiModelProperty(value = "Sequence's TRUNC512 checksum value.") private String trunc512checksum; + public enum ContigType { + SCAFFOLD, + CHROMOSOME + } + + @ApiModelProperty(value = "Type of contig: chromosome (or) scaffold") + private ContigType contigType; + @JsonInclude(JsonInclude.Include.NON_NULL) @ApiModelProperty(value = "Assembly that this sequence belongs to.") @ManyToOne(cascade = CascadeType.ALL) @@ -132,6 +140,14 @@ public SequenceEntity setTrunc512checksum(String trunc512checksum) { return this; } + public ContigType getContigType() { + return contigType; + } + + public void setContigType(ContigType contigType) { + this.contigType = contigType; + } + public AssemblyEntity getAssembly() { return assembly; } diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/repo/ScaffoldRepository.java b/src/main/java/uk/ac/ebi/eva/contigalias/repo/ScaffoldRepository.java deleted file mode 100644 index 6e97fda6..00000000 --- a/src/main/java/uk/ac/ebi/eva/contigalias/repo/ScaffoldRepository.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2020 EMBL - European Bioinformatics Institute - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package uk.ac.ebi.eva.contigalias.repo; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; - -@Repository -public interface ScaffoldRepository extends JpaRepository { - - Page findScaffoldEntitiesByGenbank(String genbank, Pageable request); - - Page findScaffoldEntitiesByRefseq(String refseq, Pageable request); - - Page findScaffoldEntitiesByAssembly_Genbank(String asmGenbank, Pageable request); - - Page findScaffoldEntitiesByAssembly_Refseq(String asmRefseq, Pageable request); - - Page findScaffoldEntitiesByGenbankSequenceName(String genbankName, Pageable request); - - Page findScaffoldEntitiesByGenbankSequenceNameAndAssembly_Taxid(String genbankName, long asmTaxid, Pageable request); - - Page findScaffoldEntitiesByGenbankSequenceNameAndAssembly(String genbankName, AssemblyEntity assembly, Pageable request); - - Page findScaffoldEntitiesByAssemblyGenbankOrAssemblyRefseq(String accession, String accession1, - Pageable request); - - Page findScaffoldEntitiesByUcscName(String ucscName, Pageable request); - - Page findScaffoldEntitiesByUcscNameAndAssembly_Taxid(String ucscName, long asmTaxid, - Pageable request); - - Page findScaffoldEntitiesByUcscNameAndAssembly(String ucscName, AssemblyEntity assembly, - Pageable request); - - Page findScaffoldEntitiesByEnaSequenceName(String enaName, Pageable request); - - Page findScaffoldEntitiesByEnaSequenceNameAndAssembly_Taxid(String enaName, long asmTaxid, - Pageable request); - - Page findScaffoldEntitiesByEnaSequenceNameAndAssembly(String enaName, AssemblyEntity assembly, - Pageable request); - - Page findScaffoldEntitiesByGenbankOrRefseq(String accession, String accession1, Pageable request); - - long countScaffoldEntitiesByGenbank(String genbank); - - long countScaffoldEntitiesByRefseq(String refseq); - - long countScaffoldEntitiesByAssembly_Genbank(String asmGenbank); - - long countScaffoldEntitiesByAssembly_Refseq(String asmRefseq); - - long countScaffoldEntitiesByGenbankSequenceNameAndAssembly_Taxid(String genbankName, long asmTaxid); - - long countScaffoldEntitiesByUcscNameAndAssembly_Taxid(String ucscName, long asmTaxid); - - long countScaffoldEntitiesByGenbankSequenceNameAndAssembly(String genbankName, AssemblyEntity assembly); - - long countScaffoldEntitiesByUcscNameAndAssembly(String ucscName, AssemblyEntity assembly); - - long countScaffoldEntitiesByGenbankSequenceName(String genbankName); - - long countScaffoldEntitiesByAssemblyGenbankOrAssemblyRefseq(String genbank, String refseq); - - long countScaffoldEntitiesByUcscName(String ucscName); -} \ No newline at end of file diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/service/AssemblyService.java b/src/main/java/uk/ac/ebi/eva/contigalias/service/AssemblyService.java index f128e8e6..088a72e7 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/service/AssemblyService.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/service/AssemblyService.java @@ -28,7 +28,6 @@ import uk.ac.ebi.eva.contigalias.datasource.NCBIAssemblyDataSource; import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; import uk.ac.ebi.eva.contigalias.exception.AssemblyNotFoundException; import uk.ac.ebi.eva.contigalias.exception.DuplicateAssemblyException; import uk.ac.ebi.eva.contigalias.repo.AssemblyRepository; @@ -75,13 +74,13 @@ public AssemblyService( public Optional getAssemblyByGenbank(String genbank) { Optional entity = repository.findAssemblyEntityByGenbank(genbank); - stripAssemblyFromChromosomesAndScaffolds(entity); + stripAssemblyFromChromosomes(entity); return entity; } public Optional getAssemblyByRefseq(String refseq) { Optional entity = repository.findAssemblyEntityByRefseq(refseq); - stripAssemblyFromChromosomesAndScaffolds(entity); + stripAssemblyFromChromosomes(entity); return entity; } @@ -118,18 +117,17 @@ public void fetchAndInsertAssembly(String accession) throws IOException { public Optional getAssemblyByAccession(String accession) { Optional entity = repository.findAssemblyEntityByAccession(accession); if (entity.isPresent()) { - stripAssemblyFromChromosomesAndScaffolds(entity); + stripAssemblyFromChromosomes(entity); return entity; } else { throw new AssemblyNotFoundException(accession); } } - public void stripAssemblyFromChromosomesAndScaffolds(Optional optional) { + public void stripAssemblyFromChromosomes(Optional optional) { if (optional.isPresent()) { AssemblyEntity entity = optional.get(); stripAssemblyFromChromosomes(entity); - stripAssemblyFromScaffolds(entity); } } @@ -142,15 +140,6 @@ private void stripAssemblyFromChromosomes(AssemblyEntity assembly) { } } - private void stripAssemblyFromScaffolds(AssemblyEntity assembly) { - List scaffolds = assembly.getScaffolds(); - if (scaffolds != null && scaffolds.size() > 0) { - scaffolds.forEach(it -> it.setAssembly(null)); - } else { - assembly.setScaffolds(Collections.emptyList()); - } - } - public void insertAssembly(AssemblyEntity entity) { setCacheSizeLimit(); diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/service/ChromosomeService.java b/src/main/java/uk/ac/ebi/eva/contigalias/service/ChromosomeService.java index 3b6f328c..2487d6ca 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/service/ChromosomeService.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/service/ChromosomeService.java @@ -153,21 +153,11 @@ private Page injectAssemblyIntoChromosomes(Page stripChromosomesAndScaffoldsFromAssembly(Page page) { if (page != null && page.getTotalElements() > 0) { - page.forEach(it -> { - stripChromosomeFromAssembly(it); - stripScaffoldFromAssembly(it); - }); + page.forEach(this::stripChromosomeFromAssembly); } return page; } - private void stripScaffoldFromAssembly(ChromosomeEntity chromosome) { - AssemblyEntity assembly = chromosome.getAssembly(); - if (assembly != null) { - assembly.setScaffolds(null); - } - } - private void stripChromosomeFromAssembly(ChromosomeEntity chromosome) { AssemblyEntity assembly = chromosome.getAssembly(); if (assembly != null) { diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/service/ScaffoldService.java b/src/main/java/uk/ac/ebi/eva/contigalias/service/ScaffoldService.java deleted file mode 100644 index 65cfdcaf..00000000 --- a/src/main/java/uk/ac/ebi/eva/contigalias/service/ScaffoldService.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2020 EMBL - European Bioinformatics Institute - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package uk.ac.ebi.eva.contigalias.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; -import uk.ac.ebi.eva.contigalias.repo.ScaffoldRepository; - -import java.util.LinkedList; -import java.util.List; - -@Service -public class ScaffoldService { - - private final ScaffoldRepository repository; - - @Autowired - public ScaffoldService(ScaffoldRepository repository) { - this.repository = repository; - } - - public Page getScaffoldsByGenbank(String genbank, Pageable request) { - Page page = repository.findScaffoldEntitiesByGenbank(genbank, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByRefseq(String refseq, Pageable request) { - Page page = repository.findScaffoldEntitiesByRefseq(refseq, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByAssemblyGenbank(String asmGenbank, Pageable request) { - Page page = repository.findScaffoldEntitiesByAssembly_Genbank(asmGenbank, request); - return stripAssembliesFromScaffolds(page); - } - - public Page getScaffoldsByAssemblyRefseq(String asmRefseq, Pageable request) { - Page page = repository.findScaffoldEntitiesByAssembly_Refseq(asmRefseq, request); - return stripAssembliesFromScaffolds(page); - } - - public Page getScaffoldsByName(String name, Pageable request) { - Page page = repository.findScaffoldEntitiesByGenbankSequenceName(name, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByNameAndAssemblyTaxid(String name, long asmTaxid, Pageable request) { - Page page = repository.findScaffoldEntitiesByGenbankSequenceNameAndAssembly_Taxid(name, asmTaxid, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByNameAndAssembly( - String name, AssemblyEntity assembly, Pageable request) { - Page page = repository.findScaffoldEntitiesByGenbankSequenceNameAndAssembly(name, assembly, request); - assembly.setScaffolds(null); - return injectAssemblyIntoScaffolds(page, assembly); - } - - public Page getScaffoldsByAssemblyAccession(String accession, Pageable request) { - Page Scaffolds = repository.findScaffoldEntitiesByAssemblyGenbankOrAssemblyRefseq( - accession, accession, request); - return stripAssembliesFromScaffolds(Scaffolds); - } - - public Page getScaffoldsByUcscName(String ucscName, Pageable request) { - Page page = repository.findScaffoldEntitiesByUcscName(ucscName, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByUcscNameAndAssemblyTaxid( - String ucscName, long asmTaxid, Pageable request) { - Page page - = repository.findScaffoldEntitiesByUcscNameAndAssembly_Taxid(ucscName, asmTaxid, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByUcscNameAndAssembly(String ucscName, AssemblyEntity assembly, - Pageable request) { - Page page - = repository.findScaffoldEntitiesByUcscNameAndAssembly(ucscName, assembly, request); - assembly.setScaffolds(null); - return injectAssemblyIntoScaffolds(page, assembly); - } - - public Page getScaffoldsByEnaName(String enaSequenceName, Pageable request) { - Page page = repository.findScaffoldEntitiesByEnaSequenceName(enaSequenceName, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByEnaNameAndAssemblyTaxid(String enaName, long asmTaxid, Pageable request) { - Page page - = repository.findScaffoldEntitiesByEnaSequenceNameAndAssembly_Taxid(enaName, asmTaxid, request); - return stripChromosomesAndScaffoldsFromAssembly(page); - } - - public Page getScaffoldsByEnaNameAndAssembly( - String enaName, AssemblyEntity assembly, Pageable request) { - Page page - = repository.findScaffoldEntitiesByEnaSequenceNameAndAssembly(enaName, assembly, request); - assembly.setScaffolds(null); - return injectAssemblyIntoScaffolds(page, assembly); - } - - public List getAssembliesByScaffoldGenbank(String chrGenbank) { - Page page = repository.findScaffoldEntitiesByGenbank(chrGenbank, Pageable.unpaged()); - return extractAssembliesFromScaffolds(page); - } - - public List getAssembliesByScaffoldRefseq(String chrRefseq) { - Page page = repository.findScaffoldEntitiesByRefseq(chrRefseq, Pageable.unpaged()); - return extractAssembliesFromScaffolds(page); - } - - public List extractAssembliesFromScaffolds(Page page) { - List list = new LinkedList<>(); - if (page != null && page.getTotalElements() > 0) { - for (ScaffoldEntity scaffoldEntity : page) { - AssemblyEntity assembly = scaffoldEntity.getAssembly(); - assembly.setChromosomes(null); - list.add(assembly); - } - } - return list; - } - - private Page injectAssemblyIntoScaffolds(Page page, AssemblyEntity assembly) { - if (page != null && page.getTotalElements() > 0) { - page.forEach(it -> it.setAssembly(assembly)); - } - return page; - } - - private Page stripChromosomesAndScaffoldsFromAssembly(Page page) { - if (page != null && page.getTotalElements() > 0) { - page.forEach(it -> { - stripChromosomeFromAssembly(it); - stripScaffoldFromAssembly(it); - }); - } - return page; - } - - private void stripScaffoldFromAssembly(ScaffoldEntity scaffold) { - AssemblyEntity assembly = scaffold.getAssembly(); - if (assembly != null) { - assembly.setScaffolds(null); - } - } - - private void stripChromosomeFromAssembly(ScaffoldEntity scaffold) { - AssemblyEntity assembly = scaffold.getAssembly(); - if (assembly != null) { - assembly.setChromosomes(null); - } - } - - private Page stripAssembliesFromScaffolds(Page page) { - if (page != null && page.getTotalElements() > 0) { - page.forEach(this::stripAssemblyFromChromosome); - } - return page; - } - - public void putScaffoldChecksumsByAccession(String accession, String md5, String trunc512) { - Page page = repository.findScaffoldEntitiesByGenbankOrRefseq( - accession, accession, Pageable.unpaged()); - if (page.isEmpty()) { - throw new IllegalArgumentException( - "No scaffolds corresponding to accession " + accession + " found in the database"); - } - page.forEach(it -> { - it.setMd5checksum(md5).setTrunc512checksum(trunc512); - repository.save(it); - }); - } - - private void stripAssemblyFromChromosome(ScaffoldEntity scaffold) { - scaffold.setAssembly(null); - } - - public void insertScaffold(ScaffoldEntity entity) { - // TODO check if entity already exists in db - repository.save(entity); - } - - public void deleteScaffold(ScaffoldEntity entity) { - // TODO check if entity already exists in db - repository.delete(entity); - } - - public long countScaffoldEntitiesByGenbank(String genbank) { - return repository.countScaffoldEntitiesByGenbank(genbank); - } - - public long countScaffoldEntitiesByRefseq(String refseq) { - return repository.countScaffoldEntitiesByRefseq(refseq); - } - - public long countScaffoldEntitiesByAssembly_Genbank(String asmGenbank) { - return repository.countScaffoldEntitiesByAssembly_Genbank(asmGenbank); - } - - public long countScaffoldEntitiesByAssembly_Refseq(String asmRefseq) { - return repository.countScaffoldEntitiesByAssembly_Refseq(asmRefseq); - } - - public long countScaffoldEntitiesByNameAndAssembly_Taxid(String name, long asmTaxid) { - return repository.countScaffoldEntitiesByGenbankSequenceNameAndAssembly_Taxid(name, asmTaxid); - } - - public long countScaffoldEntitiesByUcscNameAndAssembly_Taxid(String ucscName, long asmTaxid) { - return repository.countScaffoldEntitiesByUcscNameAndAssembly_Taxid(ucscName, asmTaxid); - } - - public long countScaffoldEntitiesByNameAndAssembly(String name, AssemblyEntity assembly) { - return repository.countScaffoldEntitiesByGenbankSequenceNameAndAssembly(name, assembly); - } - - public long countScaffoldEntitiesByUcscNameAndAssembly(String ucscName, AssemblyEntity assembly) { - return repository.countScaffoldEntitiesByUcscNameAndAssembly(ucscName, assembly); - } - - public long countScaffoldEntitiesByName(String name) { - return repository.countScaffoldEntitiesByGenbankSequenceName(name); - } - - public long countScaffoldEntitiesByAssemblyGenbankOrAssemblyRefseq(String genbank, String refseq) { - return repository.countScaffoldEntitiesByAssemblyGenbankOrAssemblyRefseq(genbank, refseq); - } - - public long countScaffoldEntitiesByUcscName(String ucscName) { - return repository.countScaffoldEntitiesByUcscName(ucscName); - } - -} diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasControllerIntegrationTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasControllerIntegrationTest.java index 7898f42f..72b9f2ed 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasControllerIntegrationTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasControllerIntegrationTest.java @@ -31,11 +31,9 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import uk.ac.ebi.eva.contigalias.entitygenerator.AssemblyGenerator; import uk.ac.ebi.eva.contigalias.entitygenerator.ChromosomeGenerator; -import uk.ac.ebi.eva.contigalias.entitygenerator.ScaffoldGenerator; import uk.ac.ebi.eva.contigalias.test.TestConfiguration; import java.util.Collections; @@ -69,8 +67,6 @@ public class ContigAliasControllerIntegrationTest { private final ChromosomeEntity chromosomeEntity = ChromosomeGenerator.generate(); - private final ScaffoldEntity scaffoldEntity = ScaffoldGenerator.generate(); - @Autowired private MockMvc mockMvc; @@ -135,12 +131,6 @@ void setup() { when(mockHandler.getSequencesByAssemblyAccession(assemblyEntity.getRefseq(), DEFAULT_PAGE_REQUEST)) .thenReturn(chromosomePagedModel); - PagedResourcesAssembler scaffoldAssembler = mock(PagedResourcesAssembler.class); - PagedModel> scaffoldPagedModel = new PagedModel<>( - Collections.singletonList(new EntityModel<>(scaffoldEntity)), null); - Mockito.when(scaffoldAssembler.toModel(any())) - .thenReturn(scaffoldPagedModel); - when(mockHandler.getAssemblyByAccession(assemblyEntity.getGenbank())) .thenReturn(assemblyPagedModel); when(mockHandler.getAssemblyByGenbank(assemblyEntity.getGenbank())) diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java index 0bcfd1e7..398fd43f 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java @@ -31,14 +31,11 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import uk.ac.ebi.eva.contigalias.entitygenerator.AssemblyGenerator; import uk.ac.ebi.eva.contigalias.entitygenerator.ChromosomeGenerator; -import uk.ac.ebi.eva.contigalias.entitygenerator.ScaffoldGenerator; import uk.ac.ebi.eva.contigalias.service.AssemblyService; import uk.ac.ebi.eva.contigalias.service.ChromosomeService; -import uk.ac.ebi.eva.contigalias.service.ScaffoldService; import java.util.ArrayList; import java.util.Collection; @@ -69,75 +66,27 @@ class ManualPaginationTests { @BeforeEach public void setup() { - handler = new ContigAliasHandler(null, null, null, null, null); + handler = new ContigAliasHandler(null, null, null, null); } @Test void createScaffoldsPageRequestTestOnlyChromosomes() { PageRequest request = PageRequest.of(1, 10); - List[] scaffoldsPageRequest = handler.createScaffoldsPageRequest(TOTAL_CHROMOSOMES, request); + Pageable pageRequest = handler.createPageRequest(TOTAL_CHROMOSOMES, request); - assertNotNull(scaffoldsPageRequest); - - List chrRequests = scaffoldsPageRequest[0]; - assertNotNull(chrRequests); - assertEquals(1, chrRequests.size()); - - Pageable chrRequest = chrRequests.get(0); - assertEquals(1, chrRequest.getPageNumber()); - assertEquals(10, chrRequest.getPageSize()); - - List scfRequests = scaffoldsPageRequest[1]; - assertNotNull(scfRequests); - assertEquals(0, scfRequests.size()); - } - - @Test - void createScaffoldsPageRequestTestOnlyScaffolds() { - PageRequest request = PageRequest.of(3, 10); - List[] scaffoldsPageRequest = handler.createScaffoldsPageRequest(TOTAL_CHROMOSOMES, request); - - assertNotNull(scaffoldsPageRequest); - - List chrRequests = scaffoldsPageRequest[0]; - assertNotNull(chrRequests); - assertEquals(0, chrRequests.size()); - - List scfRequests = scaffoldsPageRequest[1]; - assertNotNull(scfRequests); - assertEquals(2, scfRequests.size()); - - Pageable scfRequest1 = scfRequests.get(0); - assertEquals(0, scfRequest1.getPageNumber()); - assertEquals(7, scfRequest1.getPageSize()); - - Pageable scfRequest2 = scfRequests.get(1); - assertEquals(1, scfRequest2.getPageNumber()); - assertEquals(3, scfRequest2.getPageSize()); + assertNotNull(pageRequest); + assertEquals(1, pageRequest.getPageNumber()); + assertEquals(10, pageRequest.getPageSize()); } @Test void createScaffoldsPageRequestTestBothCombined() { PageRequest request = PageRequest.of(2, 10); - List[] scaffoldsPageRequest = handler.createScaffoldsPageRequest(TOTAL_CHROMOSOMES, request); - - assertNotNull(scaffoldsPageRequest); + Pageable chrRequest = handler.createPageRequest(TOTAL_CHROMOSOMES, request); - List chrRequests = scaffoldsPageRequest[0]; - assertNotNull(chrRequests); - assertEquals(1, chrRequests.size()); - - Pageable chrRequest = chrRequests.get(0); + assertNotNull(chrRequest); assertEquals(2, chrRequest.getPageNumber()); assertEquals(7, chrRequest.getPageSize()); - - List scfRequests = scaffoldsPageRequest[1]; - assertNotNull(scfRequests); - assertEquals(1, scfRequests.size()); - - Pageable scfRequest = scfRequests.get(0); - assertEquals(0, scfRequest.getPageNumber()); - assertEquals(3, scfRequest.getPageSize()); } } @@ -167,7 +116,7 @@ void setUp() { Collections.singletonList(new EntityModel<>(entity)), null); Mockito.when(assembler.toModel(any())) .thenReturn(pagedModel); - handler = new ContigAliasHandler(mockAssemblyService, null, null, assembler, null); + handler = new ContigAliasHandler(mockAssemblyService, null, assembler, null); } @Test @@ -233,7 +182,7 @@ void setup() { PagedModel> pagedModel = PagedModel.wrap(entities, null); Mockito.when(assembler.toModel(any())) .thenReturn(pagedModel); - handler = new ContigAliasHandler(mockAssemblyService, null, null, assembler, null); + handler = new ContigAliasHandler(mockAssemblyService, null, assembler, null); } @Test @@ -268,7 +217,6 @@ class ChromosomeServiceTests { @BeforeEach void setUp() { ChromosomeService mockChromosomeService = mock(ChromosomeService.class); - ScaffoldService mockScaffoldService = mock(ScaffoldService.class); Page pageOfEntity = new PageImpl<>(Collections.singletonList(entity)); Mockito.when(mockChromosomeService.getChromosomesByGenbank(entity.getGenbank(), DEFAULT_PAGE_REQUEST)) @@ -276,20 +224,13 @@ void setUp() { Mockito.when(mockChromosomeService.getChromosomesByRefseq(entity.getRefseq(), DEFAULT_PAGE_REQUEST)) .thenReturn(pageOfEntity); - Page pageOfEmptyScaffoldEntity = new PageImpl<>(Collections.emptyList()); - Mockito.when(mockScaffoldService.getScaffoldsByGenbank(entity.getGenbank(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEmptyScaffoldEntity); - Mockito.when(mockScaffoldService.getScaffoldsByRefseq(entity.getRefseq(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEmptyScaffoldEntity); - PagedResourcesAssembler mockSequencesAssembler = mock(PagedResourcesAssembler.class); PagedModel> sequencePagedModel = new PagedModel<>( Collections.singletonList(new EntityModel<>(entity)), null); Mockito.when(mockSequencesAssembler.toModel(any())) .thenReturn(sequencePagedModel); - handler = new ContigAliasHandler(null, mockChromosomeService, mockScaffoldService, null, - mockSequencesAssembler); + handler = new ContigAliasHandler(null, mockChromosomeService, null, mockSequencesAssembler); } @Test @@ -411,46 +352,8 @@ void setup() { Mockito.when(mockSequenceAssembler.toModel(any())) .thenReturn(sequencePagedModel); - ScaffoldService mockScaffoldService = mock(ScaffoldService.class); - - ScaffoldEntity scaffoldEntity = ScaffoldGenerator.generate(assemblyEntity); - - Page pageOfEntity = new PageImpl<>(Collections.singletonList(scaffoldEntity)); - Mockito.when(mockScaffoldService.getScaffoldsByGenbank(scaffoldEntity.getGenbank(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService.getScaffoldsByRefseq(scaffoldEntity.getRefseq(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService - .getScaffoldsByAssemblyGenbank(assemblyEntity.getGenbank(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when( - mockScaffoldService.getScaffoldsByAssemblyRefseq(assemblyEntity.getRefseq(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService - .getScaffoldsByAssemblyAccession(assemblyEntity.getGenbank(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService - .getScaffoldsByAssemblyAccession(assemblyEntity.getRefseq(), DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService.getScaffoldsByNameAndAssemblyTaxid(scaffoldEntity.getGenbankSequenceName(), asmTaxid, - DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService - .getScaffoldsByUcscNameAndAssemblyTaxid(scaffoldEntity.getUcscName(), asmTaxid, - DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - Mockito.when(mockScaffoldService.getScaffoldsByNameAndAssembly(scaffoldEntity.getGenbankSequenceName(), assemblyEntity, - DEFAULT_PAGE_REQUEST)) - .thenReturn(pageOfEntity); - - PagedResourcesAssembler mockScaffoldAssembler = mock(PagedResourcesAssembler.class); - PagedModel> scaffoldPagedModel = new PagedModel<>( - Collections.singletonList(new EntityModel<>(scaffoldEntity)), null); - Mockito.when(mockScaffoldAssembler.toModel(any())) - .thenReturn(scaffoldPagedModel); - - handler = new ContigAliasHandler(mockAssemblyService, mockChromosomeService, mockScaffoldService, - mockAssemblyAssembler, mockSequenceAssembler); + handler = new ContigAliasHandler(mockAssemblyService, mockChromosomeService, mockAssemblyAssembler, + mockSequenceAssembler); } @AfterEach diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java index 31ec0fb8..c43dc1fa 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java @@ -25,7 +25,6 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -99,24 +98,4 @@ void verifyChromosomeMetadata() throws IOException { assertEquals(CHROMOSOME_GENBANK_ACCESSION, chromosome.getGenbank()); assertNull(chromosome.getUcscName()); } - - @Test - void verifyAssemblyHasScaffolds() throws IOException { - AssemblyEntity assembly = getAssemblyEntity(); - List scaffolds = assembly.getScaffolds(); - assertNotNull(scaffolds); - assertEquals(3286, scaffolds.size()); - } - - @Test - void assertParsedScaffoldValid() throws IOException { - List scaffolds = getAssemblyEntity().getScaffolds(); - assertNotNull(scaffolds); - assertTrue(scaffolds.size() > 0); - ScaffoldEntity scaffold = scaffolds.get(0); - assertNotNull(scaffold); - assertEquals(SCAFFOLD_SEQUENCE_NAME, scaffold.getEnaSequenceName()); - assertEquals(SCAFFOLD_GENBANK_ACCESSION, scaffold.getGenbank()); - } - } \ No newline at end of file diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReaderTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReaderTest.java index 7e217b3b..8597a6db 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReaderTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/dus/NCBIAssemblyReportReaderTest.java @@ -25,7 +25,7 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; +import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import java.io.File; import java.io.FileInputStream; @@ -34,6 +34,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; +import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -62,7 +63,7 @@ class NCBIAssemblyReportReaderTest { private static final String CHROMOSOME_CHR1_REFSEQ_ACCESSION = "AC_000158.1"; - private ScaffoldEntity scaffoldEntity; + private ChromosomeEntity scaffoldEntity; private InputStreamReader streamReader; @@ -79,7 +80,7 @@ void setup() throws FileNotFoundException { new File("src/test/resources/GCA_000003055.3_Bos_taurus_UMD_3.1_assembly_report.txt")); streamReader = new InputStreamReader(stream); reader = readerFactory.build(streamReader); - scaffoldEntity = (ScaffoldEntity) new ScaffoldEntity() + scaffoldEntity = (ChromosomeEntity) new ChromosomeEntity() .setGenbankSequenceName("ChrU_1") .setGenbank("GJ057137.1") .setRefseq("NW_003097882.1") @@ -117,7 +118,7 @@ void verifyAssemblyHasChromosomes() throws IOException { AssemblyEntity assembly = getAssemblyEntity(); List chromosomes = assembly.getChromosomes(); assertNotNull(chromosomes); - assertEquals(30, chromosomes.size()); + assertEquals(3316, chromosomes.size()); } @Test @@ -134,17 +135,20 @@ void verifyChromosomeMetadata() throws IOException { @Test void verifyAssemblyHasScaffolds() throws IOException { AssemblyEntity assembly = getAssemblyEntity(); - List scaffolds = assembly.getScaffolds(); + List scaffolds = assembly.getChromosomes().stream() + .filter(e -> e.getContigType().equals(SequenceEntity.ContigType.SCAFFOLD)).collect(Collectors.toList()); assertNotNull(scaffolds); assertEquals(3286, scaffolds.size()); } @Test void assertParsedScaffoldValid() throws IOException { - List scaffolds = getAssemblyEntity().getScaffolds(); + AssemblyEntity assembly = getAssemblyEntity(); + List scaffolds = assembly.getChromosomes().stream() + .filter(e -> e.getContigType().equals(SequenceEntity.ContigType.SCAFFOLD)).collect(Collectors.toList()); assertNotNull(scaffolds); assertTrue(scaffolds.size() > 0); - ScaffoldEntity scaffold = scaffolds.get(0); + ChromosomeEntity scaffold = scaffolds.get(0); assertNotNull(scaffold); assertEquals(scaffoldEntity.getGenbankSequenceName(), scaffold.getGenbankSequenceName()); assertEquals(scaffoldEntity.getGenbank(), scaffold.getGenbank()); diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/AssemblyGenerator.java b/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/AssemblyGenerator.java index 3a7e3ec9..d639d489 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/AssemblyGenerator.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/AssemblyGenerator.java @@ -41,8 +41,7 @@ public static AssemblyEntity generate(long id) { .setGenbankRefseqIdentical(new Random().nextBoolean()) .setMd5checksum("md5" + id) .setTrunc512checksum("trunc512" + id) - .setChromosomes(new LinkedList<>()) - .setScaffolds(new LinkedList<>()); + .setChromosomes(new LinkedList<>()); } public static AssemblyEntity generate() { @@ -64,7 +63,6 @@ void generateTest() { assertTrue(entity.getMd5checksum().endsWith(sId)); assertTrue(entity.getTrunc512checksum().endsWith(sId)); assertNotNull(entity.getChromosomes()); - assertNotNull(entity.getScaffolds()); } @Test @@ -80,7 +78,6 @@ void generateWithSpecifiedIdTest() { assertTrue(entity.getMd5checksum().endsWith(sId)); assertTrue(entity.getTrunc512checksum().endsWith(sId)); assertNotNull(entity.getChromosomes()); - assertNotNull(entity.getScaffolds()); } diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/ScaffoldGenerator.java b/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/ScaffoldGenerator.java deleted file mode 100644 index b6cdde09..00000000 --- a/src/test/java/uk/ac/ebi/eva/contigalias/entitygenerator/ScaffoldGenerator.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2020 EMBL - European Bioinformatics Institute - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package uk.ac.ebi.eva.contigalias.entitygenerator; - -import org.junit.jupiter.api.Test; - -import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; - -import java.util.LinkedList; -import java.util.List; -import java.util.Random; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class ScaffoldGenerator { - - private static final String PREFIX_NAME = "name"; - - public static ScaffoldEntity generate(long id) { - return (ScaffoldEntity) new ScaffoldEntity() - .setGenbankSequenceName(PREFIX_NAME + id) - .setGenbank("genbank" + id) - .setRefseq("refseq" + id) - .setUcscName("ucsc" + id) - .setEnaSequenceName("ena" + id) - .setAssembly(null); - } - - public static ScaffoldEntity generate() { - long id = new Random().nextLong(); - return generate(id); - } - - public static ScaffoldEntity generate(long id, AssemblyEntity assembly) { - if (assembly == null) { - throw new IllegalArgumentException("Assembly cannot be null!"); - } - ScaffoldEntity entity = generate(id); - if (assembly.getScaffolds() == null) { - assembly.setScaffolds(new LinkedList<>()); - } - List scaffolds = assembly.getScaffolds(); - scaffolds.add(entity); - entity.setAssembly(assembly); - return entity; - } - - public static ScaffoldEntity generate(AssemblyEntity assembly) { - long id = new Random().nextLong(); - return generate(id, assembly); - } - - @Test - void generateTest() { - ScaffoldEntity entity = generate(); - int length = PREFIX_NAME.length(); - String name = entity.getGenbankSequenceName(); - assertTrue(name.length() > length); - String sId = name.substring(length); - assertTrue(name.endsWith(sId)); - assertTrue(entity.getGenbank().endsWith(sId)); - assertTrue(entity.getRefseq().endsWith(sId)); - assertTrue(entity.getUcscName().endsWith(sId)); - assertNull(entity.getAssembly()); - } - - @Test - void generateForGivenAssemblyTest() { - AssemblyEntity assembly = new AssemblyEntity(); - int iterate = 10; - for (int i = 0; i < iterate; i++) { - ScaffoldEntity generate = generate(assembly); - assertEquals(generate, assembly.getScaffolds().get(i)); - assertEquals(assembly, generate.getAssembly()); - } - assertEquals(iterate, assembly.getScaffolds().size()); - } - - @Test - void generateForGivenAssemblyWithSpecifiedIdTest() { - AssemblyEntity assembly = new AssemblyEntity() - .setScaffolds(new LinkedList<>()); - int iterate = 10; - for (int i = 0; i < iterate; i++) { - ScaffoldEntity generate = generate(i, assembly); - assertEquals(generate, assembly.getScaffolds().get(i)); - assertEquals(assembly, generate.getAssembly()); - } - assertEquals(iterate, assembly.getScaffolds().size()); - } - -} diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/service/ScaffoldServiceIntegrationTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/service/ScaffoldServiceIntegrationTest.java deleted file mode 100644 index 2f874f64..00000000 --- a/src/test/java/uk/ac/ebi/eva/contigalias/service/ScaffoldServiceIntegrationTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2020 EMBL - European Bioinformatics Institute - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package uk.ac.ebi.eva.contigalias.service; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.data.domain.Page; -import org.springframework.test.context.ActiveProfiles; - -import uk.ac.ebi.eva.contigalias.entities.ScaffoldEntity; -import uk.ac.ebi.eva.contigalias.entitygenerator.ScaffoldGenerator; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static uk.ac.ebi.eva.contigalias.controller.BaseController.DEFAULT_PAGE_REQUEST; - -@ActiveProfiles("test") -@SpringBootTest -public class ScaffoldServiceIntegrationTest { - - private final ScaffoldEntity entity = ScaffoldGenerator.generate(); - - @Autowired - private ScaffoldService service; - - @BeforeEach - void setup() { - service.insertScaffold(entity); - } - - @AfterEach - void tearDown() { - service.deleteScaffold(entity); - } - - @Test - void getScaffoldByGenbank() { - Page page = service.getScaffoldsByGenbank( - entity.getGenbank(), DEFAULT_PAGE_REQUEST); - assertScaffoldPageIdenticalToEntity(page); - } - - @Test - void getScaffoldByRefseq() { - Page page = service.getScaffoldsByRefseq( - entity.getRefseq(), DEFAULT_PAGE_REQUEST); - assertScaffoldPageIdenticalToEntity(page); - } - - void assertScaffoldPageIdenticalToEntity(Page page) { - assertNotNull(page); - assertTrue(page.getTotalElements() > 0); - page.forEach(this::assertScaffoldIdenticalToEntity); - } - - void assertScaffoldIdenticalToEntity(ScaffoldEntity scaffoldEntity) { - assertEquals(entity.getGenbankSequenceName(), scaffoldEntity.getGenbankSequenceName()); - assertEquals(entity.getGenbank(), scaffoldEntity.getGenbank()); - assertEquals(entity.getRefseq(), scaffoldEntity.getRefseq()); - assertEquals(entity.getUcscName(), scaffoldEntity.getUcscName()); - assertEquals(entity.getEnaSequenceName(), scaffoldEntity.getEnaSequenceName()); - } - -} From 6e0b62e7dc400242f7ab05ac03b8a599e726daa2 Mon Sep 17 00:00:00 2001 From: sundarvenkata-ebi Date: Thu, 8 Sep 2022 07:21:50 +0100 Subject: [PATCH 2/4] Set proper page offset --- .../contigalias/ContigAliasHandler.java | 4 ++- .../NCBIAssemblyDataSourceTest.java | 10 ++++--- .../dus/ENAAssemblyReportReaderTest.java | 27 ++++++++++++++++++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java b/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java index 60eec563..7892e4fd 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java @@ -219,7 +219,9 @@ Pageable createPageRequest(long totalChromosomes, Pageable request) { int chrResultOffset = (int) (totalChromosomes % currentPageSize); // 7 if (maxFilledPageSize <= maxFilledChrPageSize) { - return PageRequest.of(request.getPageNumber(), chrResultOffset); + if (chrResultOffset != 0) { + return PageRequest.of(request.getPageNumber(), chrResultOffset); + } } } return request; diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/datasource/NCBIAssemblyDataSourceTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/datasource/NCBIAssemblyDataSourceTest.java index 768c1668..589b441e 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/datasource/NCBIAssemblyDataSourceTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/datasource/NCBIAssemblyDataSourceTest.java @@ -23,14 +23,16 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; +import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import java.io.IOException; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; @ActiveProfiles("test") @@ -57,8 +59,10 @@ public void getAssemblyByAccessionGCAHavingChromosomes() throws IOException { public void getAssemblyByAccessionGCFNoChromosomes() throws IOException { Optional accession = dataSource.getAssemblyByAccession(GCF_ACCESSION_NO_CHROMOSOMES); assertTrue(accession.isPresent()); - List chromosomes = accession.get().getChromosomes(); - assertNull(chromosomes); + List chromosomes = accession.get().getChromosomes().stream() + .filter(e -> e.getContigType().equals(SequenceEntity.ContigType.CHROMOSOME)) + .collect(Collectors.toList()); + assertEquals(0, chromosomes.size()); } } diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java index c43dc1fa..5c7b7177 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/dus/ENAAssemblyReportReaderTest.java @@ -25,6 +25,7 @@ import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; +import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -32,6 +33,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; +import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -86,7 +88,7 @@ void verifyAssemblyHasChromosomes() throws IOException { AssemblyEntity assembly = getAssemblyEntity(); List chromosomes = assembly.getChromosomes(); assertNotNull(chromosomes); - assertEquals(30, chromosomes.size()); + assertEquals(3316, chromosomes.size()); } @Test @@ -98,4 +100,27 @@ void verifyChromosomeMetadata() throws IOException { assertEquals(CHROMOSOME_GENBANK_ACCESSION, chromosome.getGenbank()); assertNull(chromosome.getUcscName()); } + + @Test + void verifyAssemblyHasScaffolds() throws IOException { + AssemblyEntity assembly = getAssemblyEntity(); + List scaffolds = assembly.getChromosomes().stream() + .filter(e -> e.getContigType().equals(SequenceEntity.ContigType.SCAFFOLD)).collect(Collectors.toList()); + assertNotNull(scaffolds); + assertEquals(3286, scaffolds.size()); + } + + @Test + void assertParsedScaffoldValid() throws IOException { + AssemblyEntity assembly = getAssemblyEntity(); + List scaffolds = assembly.getChromosomes().stream() + .filter(e -> e.getContigType().equals(SequenceEntity.ContigType.SCAFFOLD)).collect(Collectors.toList()); + assertNotNull(scaffolds); + assertTrue(scaffolds.size() > 0); + ChromosomeEntity scaffold = scaffolds.get(0); + assertNotNull(scaffold); + assertEquals(SCAFFOLD_SEQUENCE_NAME, scaffold.getEnaSequenceName()); + assertEquals(SCAFFOLD_GENBANK_ACCESSION, scaffold.getGenbank()); + } + } \ No newline at end of file From b9bc8bdba808fed77b8ab0027d4fb7cb05d059b7 Mon Sep 17 00:00:00 2001 From: sundarvenkata-ebi Date: Thu, 8 Sep 2022 11:52:02 +0100 Subject: [PATCH 3/4] Use string enumeration annoation for contig type --- .../uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java b/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java index b4073d25..98d744de 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/entities/SequenceEntity.java @@ -22,6 +22,8 @@ import javax.persistence.CascadeType; import javax.persistence.Column; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -65,6 +67,7 @@ public enum ContigType { } @ApiModelProperty(value = "Type of contig: chromosome (or) scaffold") + @Enumerated(EnumType.STRING) private ContigType contigType; @JsonInclude(JsonInclude.Include.NON_NULL) From a5b649d9729b8413b8eefa980616600eb75059bb Mon Sep 17 00:00:00 2001 From: sundarvenkata-ebi Date: Thu, 8 Sep 2022 22:10:39 +0100 Subject: [PATCH 4/4] Remove need for manual pagination --- .../contigalias/ContigAliasHandler.java | 120 +++++------------- .../contigalias/ContigAliasHandlerTest.java | 32 ----- 2 files changed, 31 insertions(+), 121 deletions(-) diff --git a/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java b/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java index 7892e4fd..06de7d75 100644 --- a/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java +++ b/src/main/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandler.java @@ -27,13 +27,15 @@ import org.springframework.stereotype.Service; import uk.ac.ebi.eva.contigalias.entities.AssemblyEntity; +import uk.ac.ebi.eva.contigalias.entities.ChromosomeEntity; import uk.ac.ebi.eva.contigalias.entities.SequenceEntity; import uk.ac.ebi.eva.contigalias.service.AssemblyService; import uk.ac.ebi.eva.contigalias.service.ChromosomeService; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import static uk.ac.ebi.eva.contigalias.controller.BaseHandler.convertToPage; import static uk.ac.ebi.eva.contigalias.controller.BaseHandler.generatePagedModelFromPage; @@ -95,136 +97,76 @@ public PagedModel> getAssembliesBySequenceRefseq(Str } public PagedModel> getSequencesByGenbank(String genbank, Pageable request) { - long count = chromosomeService.countChromosomeEntitiesByGenbank(genbank); - Pageable pageRequest = createPageRequest(count, request); - List> pages = new LinkedList<>(); - pages.add(chromosomeService.getChromosomesByGenbank(genbank, pageRequest)); - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + Page chrPage = chromosomeService.getChromosomesByGenbank(genbank, request); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesByRefseq(String refseq, Pageable request) { - long count = chromosomeService.countChromosomeEntitiesByRefseq(refseq); - Pageable pageRequest = createPageRequest(count, request); - List> pages = new LinkedList<>(); - pages.add(chromosomeService.getChromosomesByRefseq(refseq, pageRequest)); - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + Page chrPage = chromosomeService.getChromosomesByRefseq(refseq, request); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesByAssemblyGenbank(String genbank, Pageable request) { - long count = chromosomeService.countChromosomeEntitiesByAssembly_Genbank(genbank); - Pageable pageRequest = createPageRequest(count, request); - List> pages = new LinkedList<>(); - pages.add(chromosomeService.getChromosomesByAssemblyGenbank(genbank, pageRequest)); - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + Page chrPage = chromosomeService.getChromosomesByAssemblyGenbank(genbank, request); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesByAssemblyRefseq(String refseq, Pageable request) { - long count = chromosomeService.countChromosomeEntitiesByAssembly_Refseq(refseq); - Pageable pageRequest = createPageRequest(count, request); - List> pages = new LinkedList<>(); - pages.add(chromosomeService.getChromosomesByAssemblyRefseq(refseq, pageRequest)); - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + Page chrPage = chromosomeService.getChromosomesByAssemblyRefseq(refseq, request); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesByAssemblyAccession(String accession, Pageable request) { - long count = chromosomeService.countChromosomeEntitiesByAssemblyGenbankOrAssemblyRefseq(accession, accession); - Pageable pageRequest = createPageRequest(count, request); - List> pages = new LinkedList<>(); - pages.add(chromosomeService.getChromosomesByAssemblyAccession(accession, pageRequest)); - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + Page chrPage = chromosomeService.getChromosomesByAssemblyAccession(accession, request); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesBySequenceNameAndAssemblyTaxid( String name, long taxid, String nameType, Pageable request) { - List> pages = new LinkedList<>(); + Page chrPage; if (nameType.equals(ContigAliasController.NAME_UCSC_TYPE)) { - long count = chromosomeService.countChromosomeEntitiesByUcscNameAndAssembly_Taxid(name, taxid); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByUcscNameAndAssemblyTaxid(name, taxid, pageRequest)); + chrPage = chromosomeService.getChromosomesByUcscNameAndAssemblyTaxid(name, taxid, request); } else if (nameType.equals(ContigAliasController.NAME_ENA_TYPE)) { - long count = chromosomeService.countChromosomeEntitiesByEnaNameAndAssembly_Taxid(name, taxid); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByEnaNameAndAssemblyTaxid(name, taxid, pageRequest)); + chrPage = chromosomeService.getChromosomesByEnaNameAndAssemblyTaxid(name, taxid, request); } else { - long count = chromosomeService.countChromosomeEntitiesByNameAndAssembly_Taxid(name, taxid); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByNameAndAssemblyTaxid(name, taxid, pageRequest)); + chrPage = chromosomeService.getChromosomesByNameAndAssemblyTaxid(name, taxid, request); } - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesBySequenceNameAndAssemblyAccession( String name, String accession, String nameType, Pageable request) { - List> pages = new LinkedList<>(); + Page chrPage = new PageImpl<>(new ArrayList<>()); Optional assembly = assemblyService.getAssemblyByAccession(accession); if (assembly.isPresent()) { AssemblyEntity assemblyEntity = assembly.get(); if (nameType.equals(ContigAliasController.NAME_UCSC_TYPE)) { - long count = chromosomeService.countChromosomeEntitiesByUcscNameAndAssembly(name, assemblyEntity); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByUcscNameAndAssembly(name, assemblyEntity, pageRequest)); + chrPage = chromosomeService.getChromosomesByUcscNameAndAssembly(name, assemblyEntity, request); } else if (nameType.equals(ContigAliasController.NAME_ENA_TYPE)) { - long count = chromosomeService.countChromosomeEntitiesByEnaNameAndAssembly(name, assemblyEntity); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByEnaNameAndAssembly(name, assemblyEntity, pageRequest)); + chrPage = chromosomeService.getChromosomesByEnaNameAndAssembly(name, assemblyEntity, request); } else { - long count = chromosomeService.countChromosomeEntitiesByNameAndAssembly(name, assemblyEntity); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByNameAndAssembly(name, assemblyEntity, pageRequest)); + chrPage = chromosomeService.getChromosomesByNameAndAssembly(name, assemblyEntity, request); } } - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } public PagedModel> getSequencesByName( String name, String nameType, Pageable request) { - List> pages = new LinkedList<>(); + Page chrPage; if (nameType.equals(ContigAliasController.NAME_UCSC_TYPE)) { - long count = chromosomeService.countChromosomeEntitiesByUcscName(name); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByUcscName(name, pageRequest)); + chrPage = chromosomeService.getChromosomesByUcscName(name, request); } else if (nameType.equals(ContigAliasController.NAME_ENA_TYPE)) { - long count = chromosomeService.countChromosomeEntitiesByEnaName(name); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByEnaName(name, pageRequest)); + chrPage = chromosomeService.getChromosomesByEnaName(name, request); } else { - long count = chromosomeService.countChromosomeEntitiesByName(name); - Pageable pageRequest = createPageRequest(count, request); - pages.add(chromosomeService.getChromosomesByName(name, pageRequest)); + chrPage = chromosomeService.getChromosomesByName(name, request); } - return generatePagedModelFromPage(createSequencePage(pages), sequenceAssembler); + return generatePagedModelFromPage(createSequencePage(chrPage), sequenceAssembler); } - private Page createSequencePage(List> pages) { - List sequenceEntities = new LinkedList<>(); - if (pages != null && pages.size() > 0) { - for (Page page : pages) { - if (page != null) { - sequenceEntities.addAll(page.toList()); - } - } - } - return new PageImpl<>(sequenceEntities); - } - - Pageable createPageRequest(long totalChromosomes, Pageable request) { - int currentPageSize = request.getPageSize(); // 10 - long maxFilledPageSize = request.getOffset() + currentPageSize; //30 - - if (maxFilledPageSize > totalChromosomes/*27*/) { - - int totalChrPages = (int) ((totalChromosomes / currentPageSize) + 1); // 3 - int maxFilledChrPageSize = (totalChrPages) * currentPageSize; //30 - int chrResultOffset = (int) (totalChromosomes % currentPageSize); // 7 - - if (maxFilledPageSize <= maxFilledChrPageSize) { - if (chrResultOffset != 0) { - return PageRequest.of(request.getPageNumber(), chrResultOffset); - } - } - } - return request; + private Page createSequencePage(Page page) { + return new PageImpl<>(page.getContent().stream().map(e -> (SequenceEntity)e) + .collect(Collectors.toList()), page.getPageable(), page.getTotalElements()); } - } diff --git a/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java b/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java index 398fd43f..d30407be 100644 --- a/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java +++ b/src/test/java/uk/ac/ebi/eva/contigalias/controller/contigalias/ContigAliasHandlerTest.java @@ -59,38 +59,6 @@ public class ContigAliasHandlerTest { private ContigAliasHandler handler; - @Nested - class ManualPaginationTests { - - private final long TOTAL_CHROMOSOMES = 27; - - @BeforeEach - public void setup() { - handler = new ContigAliasHandler(null, null, null, null); - } - - @Test - void createScaffoldsPageRequestTestOnlyChromosomes() { - PageRequest request = PageRequest.of(1, 10); - Pageable pageRequest = handler.createPageRequest(TOTAL_CHROMOSOMES, request); - - assertNotNull(pageRequest); - assertEquals(1, pageRequest.getPageNumber()); - assertEquals(10, pageRequest.getPageSize()); - } - - @Test - void createScaffoldsPageRequestTestBothCombined() { - PageRequest request = PageRequest.of(2, 10); - Pageable chrRequest = handler.createPageRequest(TOTAL_CHROMOSOMES, request); - - assertNotNull(chrRequest); - assertEquals(2, chrRequest.getPageNumber()); - assertEquals(7, chrRequest.getPageSize()); - } - - } - @Nested class AssemblyServiceTests {