From 1331ea0a629e1da451ed553027e1a7a0df436762 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 12 Feb 2018 17:20:10 +0100 Subject: [PATCH] unit tests fixed (model cannot contain reactions with the same id) --- .../lcsb/mapviewer/model/map/model/Model.java | 2 + .../model/map/model/ModelFullIndexed.java | 9 + .../services/impl/ExporterServiceTest.java | 993 +++++++++--------- .../search/data/FullAliasViewFactoryTest.java | 382 +++---- 4 files changed, 705 insertions(+), 681 deletions(-) diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java index 8a2bb71c2e..1fd990051d 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java @@ -616,4 +616,6 @@ public interface Model { void addFunction(SbmlFunction sbmlFunction); SbmlArgument getFunctionById(String id); + + void removeReactions(Collection<Reaction> reactions); } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java index 4d2d833420..893134e99c 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java @@ -734,4 +734,13 @@ public class ModelFullIndexed implements Model { } return null; } + + @Override + public void removeReactions(Collection<Reaction> reactions) { + Set<Reaction> reactionsToRemove = new HashSet<>(); + reactionsToRemove.addAll(reactions); + for (Reaction reaction : reactionsToRemove) { + removeReaction(reaction); + } + } } diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java index ad2bd21b54..e65556f104 100644 --- a/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java +++ b/service/src/test/java/lcsb/mapviewer/services/impl/ExporterServiceTest.java @@ -35,495 +35,506 @@ import lcsb.mapviewer.services.utils.data.ExportFileType; import lcsb.mapviewer.services.view.PubmedAnnotatedElementsView; public class ExporterServiceTest extends ServiceTestFunctions { - Logger logger = Logger.getLogger(ExporterServiceTest.class); - @Autowired - IExporterService exporter2; - - ExporterService exporter; - - @Before - public void setUp() throws Exception { - exporter = (ExporterService) exporter2; - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testGetExportSpeciesStringForTabSeparatedFile() throws Exception { - try { - Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); - ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE }; - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED); - - // full export (all elements) - String string = exporter.getExportSpeciesString(params); - String lines[] = string.split("\n"); - assertTrue("Not enough elements in the result file", lines.length > 1); - - String response = lines[0]; - String textColumns[] = response.split("\t"); - assertEquals(5, textColumns.length); - - // only proteins for self-made modules - new CreateHierarchyCommand(model, 8, 80).execute(); - string = exporter.getExportSpeciesString(params.type(GenericProtein.class)); - lines = string.split("\n"); - assertTrue(lines.length > 1); - - boolean differenceBetweenComponentCompartmnet = false; - int lineCount = 0; - for (String string2 : lines) { - if (lineCount == 0) { - textColumns = string2.split("\t"); - assertEquals(ExportColumn.TYPE.getTitle(), textColumns[4]); - } else { - textColumns = string2.split("\t"); - assertEquals(GenericProtein.class.getSimpleName(), textColumns[4]); - if (!textColumns[2].equalsIgnoreCase(textColumns[3])) { - differenceBetweenComponentCompartmnet = true; - } - } - lineCount++; - } - assertTrue(differenceBetweenComponentCompartmnet); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testDuplicatesInGetExportSpeciesString() throws Exception { - try { - Model model = getModelForFile("testFiles/export_duplicate_elements.xml", false); - ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.COMPONENT_NAME, ExportColumn.TYPE }; - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED); - - // full export (all elements) - String string = exporter.getExportSpeciesString(params); - - String lines[] = string.split("\n"); - Set<String> uniqueNames = new HashSet<String>(); - for (String string2 : lines) { - uniqueNames.add(string2); - } - assertEquals(uniqueNames.size(), lines.length); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testGetExportStringForOneSpecies_Complex() { - try { - Model model = getModelForFile("testFiles/export/hsp70.xml", true); - - Species alias = (Species) model.getElementByElementId("csa1"); - ExportColumn columns[] = { ExportColumn.NAME }; - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).// - column(columns).// - complexElementsName(false).// - fileType(ExportFileType.TAB_SEPARATED); - - List<String> elements = exporter.getExportStringForOneSpecies(alias, params); - assertTrue(elements.contains("HSP70:chaperon")); - - // now the results are concatenated children - params.complexElementsName(true); - - elements = exporter.getExportStringForOneSpecies(alias, params); - assertTrue(elements.size() > 0); - String string = elements.get(0); - assertFalse(string.equals("HSP70:chaperon")); - assertTrue(string.contains("HSP70")); - assertTrue(string.contains("STUB1")); - assertTrue(string.contains("DNAJB2")); - assertTrue(string.contains("BAG1")); - - // and now check complexes with mix of proteins and molecules - alias = (Species) model.getElementByElementId("csa3"); - - elements = exporter.getExportStringForOneSpecies(alias, params); - assertTrue(elements.size() > 0); - string = elements.get(0); - assertTrue(string.contains("UBA1")); - assertTrue(string.contains("UBA6")); - assertTrue(string.contains("AMP")); - - elements = exporter.getExportStringForOneSpecies(alias, params.type(Protein.class)); - assertTrue(elements.size() > 0); - string = elements.get(0); - assertTrue(string.contains("UBA1")); - assertTrue(string.contains("UBA6")); - assertFalse(string.contains("AMP")); - - } catch (Exception e) { - e.printStackTrace(); - fail("Exception occured"); - } - } - - @Test - public void testGetExportStringForOneReaction() throws Exception { - try { - Model model = getModelForFile("testFiles/export/reaction.xml", false); - Set<Compartment> aliases = new HashSet<>(); - for (Compartment alias : model.getCompartments()) { - if (alias.getName().equalsIgnoreCase("Dopamine loaded synaptic vesicle")) - aliases.add(alias); - } - - Reaction reaction = model.getReactionByReactionId("re2"); - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).// - fileType(ExportFileType.SIF).// - type(Protein.class).// - type(Complex.class).// - fileType(ExportFileType.SIF).// - complexElementsName(false).// - excluded(aliases); - - String string = exporter.getExportSingleInteractionString(reaction, params).get(0); - assertNotNull(string); - assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB")); - assertTrue(string.contains("CSP:Hsc70:SGT")); - assertTrue(string.contains("SNCA")); - assertTrue(string.contains("trans-SNARE complex")); - assertFalse(string.contains("VAMP2")); - - params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF).type(Complex.class).type(Protein.class); - string = exporter.getExportSingleInteractionString(reaction, params).get(0); - assertTrue(string.contains("VAMP2")); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void testGetExportStringForOneReactionInGeneral() { - try { - Model model = getModelForFile("testFiles/export/reaction.xml", true); - Reaction reaction = model.getReactionByReactionId("re2"); - ExporterParameters params = new IExporterService.ExporterParameters().model(model).// - fileType(ExportFileType.SIF).// - complexElementsName(false).// - type(Complex.class).type(Protein.class); - String string = exporter.getExportSingleInteractionString(reaction, params).get(0); - assertNotNull(string); - assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB")); - assertTrue(string.contains("CSP:Hsc70:SGT")); - assertTrue(string.contains("SNCA")); - assertTrue(string.contains("trans-SNARE complex")); - assertTrue(string.contains("SNAP25")); - assertFalse(string.contains("RAB3A")); - - params.complexElementsName(true); - string = exporter.getExportSingleInteractionString(reaction, params).get(0); - assertFalse(string.contains("trans-SNARE complex")); - assertTrue(string.contains("RAB3A")); - - } catch (Exception e) { - e.printStackTrace(); - fail("Exception occured"); - } - - } - - @Test - public void testGetExportStringForOneReactionInGeneralWithOnlyOneElement() throws Exception { - try { - Model model = getModelForFile("testFiles/export/reaction.xml", false); - Reaction reaction = model.getReactionByReactionId("re11"); - model.getReactions().clear(); - model.addReaction(reaction); - Set<Compartment> aliases = new HashSet<Compartment>(); - aliases.add((Compartment) model.getElementByElementId("ca1")); - ExporterParameters params = new IExporterService.ExporterParameters() - .model(model).fileType(ExportFileType.SIF).included("dopamine loaded synaptic vesicle"); - assertEquals(0, exporter.getExportSingleInteractionString(reaction, params).size()); - - params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF); - assertEquals(1, exporter.getExportSingleInteractionString(reaction, params).size()); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testGetExportSingleInteractionString_text() { - try { - Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); - for (Reaction reaction : model.getReactions()) { - String str = exporter - .getExportSingleInteractionString( - reaction, new IExporterService.ExporterParameters().fileType(ExportFileType.TAB_SEPARATED).type(Species.class)) - .get(0); - - List<String> strings = new ArrayList<String>(); - strings.add(ReactionLineData.getByReactionType(reaction.getClass()).getCellDesignerString()); - strings.add(reaction.getIdReaction()); - for (ReactionNode node : reaction.getReactionNodes()) { - strings.add(node.getElement().getName()); - - } - for (String string : strings) { - assertTrue("Description \"" + str + "\" doesn't contain " + string + ". reactionId=" + reaction.getIdReaction(), str.contains(string)); - } - } - - } catch (Exception e) { - e.printStackTrace(); - fail("Exception occured"); - } - } - - @Test - public void testGetExportComponentAndCompartments() throws Exception { - try { - Model model = getModelForFile("testFiles/export/export_model.xml", false); - new CreateHierarchyCommand(model, 7, 80).execute(); - ExporterParameters params = new IExporterService.ExporterParameters() - .model(model).fileType(ExportFileType.TAB_SEPARATED).column(ExportColumn.NAME).column(ExportColumn.COMPONENT_NAME) - .column(ExportColumn.COMPARTMENT_NAME); - - List<String> list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa1"), params); - String desc = list.get(0); - String compartment = desc.split("\t")[2]; - assertEquals("c1", compartment); - String component = desc.split("\t")[1]; - assertEquals("Test3", component); - - list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa2"), params); - desc = null; - for (String string : list) { - if (string.contains("Test 1")) { - desc = string; - } - } - compartment = desc.split("\t")[2]; - assertEquals("c2", compartment); - component = desc.split("\t")[1]; - assertEquals("Test 1", component); - - for (String string : list) { - if (string.contains("Test2")) { - desc = string; - } - } - compartment = desc.split("\t")[2]; - assertEquals("c2", compartment); - component = desc.split("\t")[1]; - assertEquals("Test2", component); - - for (String string : list) { - if (string.contains("Test3")) { - desc = string; - } - } - compartment = desc.split("\t")[2]; - assertEquals("c2", compartment); - component = desc.split("\t")[1]; - assertEquals("Test3", component); - - list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa3"), params); - boolean ok = false; - for (String string : list) { - if (string.split("\t")[2].equals("null") && string.split("\t")[1].equals("Test2")) { - ok = true; - } - } - assertTrue(ok); - - list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa4"), params); - desc = list.get(0); - compartment = desc.split("\t")[2]; - assertEquals("null", compartment); - component = desc.split("\t")[1]; - assertEquals("Test3", component); - - list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa5"), params); - desc = list.get(0); - compartment = desc.split("\t")[2]; - assertEquals("c3", compartment); - component = desc.split("\t")[1]; - assertEquals("null", component); - - list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa6"), params); - desc = list.get(0); - compartment = desc.split("\t")[2]; - assertEquals("null", compartment); - component = desc.split("\t")[1]; - assertEquals("null", component); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testGetExportSpeciesStringForTabSeparatedFile2() throws Exception { - try { - Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); - ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE }; - - ExporterParameters params = new IExporterService.ExporterParameters() - .model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED).type(Object.class); - - // full export (all elements) - String string = exporter.getExportSpeciesString(params); - String lines[] = string.split("\n"); - assertTrue("Not enough elements in the result file", lines.length > 1); - - String response = lines[0]; - String textColumns[] = response.split("\t"); - assertEquals(columns.length, textColumns.length); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testGetExportCompartmentsString() throws Exception { - try { - Model model = getModelForFile("testFiles/export/export_compartments.xml", false); - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.TAB_SEPARATED).type(Object.class); - - // full export (all compartments) - String string = exporter.getExportCompartmentsString(params); - String lines[] = string.split("\n"); - assertTrue("Not enough elements in the result file", lines.length >= 2); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testAllExportColumnsSpecies() throws Exception { - try { - Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); - List<ExportColumn> columns = new ArrayList<ExportColumn>(); - for (ExportColumn column : ExportColumn.values()) { - if (column.getClazz().isAssignableFrom(Species.class)) { - columns.add(column); - } - } - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED); - - // full export (all elements) - String string = exporter.getExportSpeciesString(params); - assertNotNull(string); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testAllExportColumnsReaction() throws Exception { - try { - Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); - List<ExportColumn> columns = new ArrayList<ExportColumn>(); - for (ExportColumn column : ExportColumn.values()) { - if (column.getClazz().isAssignableFrom(Reaction.class)) { - columns.add(column); - } - } - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED); - - // full export (all elements) - String string = exporter.getExportInteractionString(params); - assertNotNull(string); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testGetTabSeparatedReaction() throws Exception { - try { - Model model = getModelForFile("testFiles/export/reaction.xml", false); - Set<Compartment> aliases = new HashSet<>(); - for (Compartment alias : model.getCompartments()) { - if (alias.getName().equalsIgnoreCase("Dopamine loaded synaptic vesicle")) - aliases.add(alias); - } - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).// - fileType(ExportFileType.TAB_SEPARATED).// - column(ExportColumn.REACTION_ID).// - column(ExportColumn.REACTION_TYPE).// - type(Species.class); - - String string = exporter.getExportInteractionString(params); - assertTrue(string.indexOf("STATE_TRANSITION REACTANT") >= 0); - assertTrue(string.indexOf("sa7") >= 0); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - - } - - @Test - public void test() throws Exception { - try { - Model model = getModelForFile("testFiles/export/new_line_file.xml", false); - List<ExportColumn> columns = new ArrayList<ExportColumn>(); - for (ExportColumn column : ExportColumn.values()) { - if (column.getClazz().isAssignableFrom(Species.class)) { - columns.add(column); - } - } - - ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns).fileType(ExportFileType.TAB_SEPARATED); - - // full export (all elements) - String string = exporter.getExportSpeciesString(params); - String tmp[] = string.split("\n"); - for (String string2 : tmp) { - assertTrue(string2, columns.size() <= string2.split("\t", -1).length); - } - assertNotNull(string); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testPubmedSummary() throws Exception { - try { - Model model = getModelForFile("testFiles/export/reaction.xml", false); - List<PubmedAnnotatedElementsView> result = exporter.getPublicationModelSummary(model); - assertNotNull(result); - for (PubmedAnnotatedElementsView pubmedAnnotatedElementsView : result) { - assertNotNull(pubmedAnnotatedElementsView.getArticle()); - assertNotNull(pubmedAnnotatedElementsView.getArticle().getTitle()); - assertTrue(pubmedAnnotatedElementsView.getElements().size() > 0); - } - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } + Logger logger = Logger.getLogger(ExporterServiceTest.class); + @Autowired + IExporterService exporter2; + + ExporterService exporter; + + @Before + public void setUp() throws Exception { + exporter = (ExporterService) exporter2; + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testGetExportSpeciesStringForTabSeparatedFile() throws Exception { + try { + Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); + ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, + ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE }; + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns) + .fileType(ExportFileType.TAB_SEPARATED); + + // full export (all elements) + String string = exporter.getExportSpeciesString(params); + String lines[] = string.split("\n"); + assertTrue("Not enough elements in the result file", lines.length > 1); + + String response = lines[0]; + String textColumns[] = response.split("\t"); + assertEquals(5, textColumns.length); + + // only proteins for self-made modules + new CreateHierarchyCommand(model, 8, 80).execute(); + string = exporter.getExportSpeciesString(params.type(GenericProtein.class)); + lines = string.split("\n"); + assertTrue(lines.length > 1); + + boolean differenceBetweenComponentCompartmnet = false; + int lineCount = 0; + for (String string2 : lines) { + if (lineCount == 0) { + textColumns = string2.split("\t"); + assertEquals(ExportColumn.TYPE.getTitle(), textColumns[4]); + } else { + textColumns = string2.split("\t"); + assertEquals(GenericProtein.class.getSimpleName(), textColumns[4]); + if (!textColumns[2].equalsIgnoreCase(textColumns[3])) { + differenceBetweenComponentCompartmnet = true; + } + } + lineCount++; + } + assertTrue(differenceBetweenComponentCompartmnet); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testDuplicatesInGetExportSpeciesString() throws Exception { + try { + Model model = getModelForFile("testFiles/export_duplicate_elements.xml", false); + ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.COMPONENT_NAME, ExportColumn.TYPE }; + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns) + .fileType(ExportFileType.TAB_SEPARATED); + + // full export (all elements) + String string = exporter.getExportSpeciesString(params); + + String lines[] = string.split("\n"); + Set<String> uniqueNames = new HashSet<String>(); + for (String string2 : lines) { + uniqueNames.add(string2); + } + assertEquals(uniqueNames.size(), lines.length); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testGetExportStringForOneSpecies_Complex() { + try { + Model model = getModelForFile("testFiles/export/hsp70.xml", true); + + Species alias = (Species) model.getElementByElementId("csa1"); + ExportColumn columns[] = { ExportColumn.NAME }; + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).// + column(columns).// + complexElementsName(false).// + fileType(ExportFileType.TAB_SEPARATED); + + List<String> elements = exporter.getExportStringForOneSpecies(alias, params); + assertTrue(elements.contains("HSP70:chaperon")); + + // now the results are concatenated children + params.complexElementsName(true); + + elements = exporter.getExportStringForOneSpecies(alias, params); + assertTrue(elements.size() > 0); + String string = elements.get(0); + assertFalse(string.equals("HSP70:chaperon")); + assertTrue(string.contains("HSP70")); + assertTrue(string.contains("STUB1")); + assertTrue(string.contains("DNAJB2")); + assertTrue(string.contains("BAG1")); + + // and now check complexes with mix of proteins and molecules + alias = (Species) model.getElementByElementId("csa3"); + + elements = exporter.getExportStringForOneSpecies(alias, params); + assertTrue(elements.size() > 0); + string = elements.get(0); + assertTrue(string.contains("UBA1")); + assertTrue(string.contains("UBA6")); + assertTrue(string.contains("AMP")); + + elements = exporter.getExportStringForOneSpecies(alias, params.type(Protein.class)); + assertTrue(elements.size() > 0); + string = elements.get(0); + assertTrue(string.contains("UBA1")); + assertTrue(string.contains("UBA6")); + assertFalse(string.contains("AMP")); + + } catch (Exception e) { + e.printStackTrace(); + fail("Exception occured"); + } + } + + @Test + public void testGetExportStringForOneReaction() throws Exception { + try { + Model model = getModelForFile("testFiles/export/reaction.xml", false); + Set<Compartment> aliases = new HashSet<>(); + for (Compartment alias : model.getCompartments()) { + if (alias.getName().equalsIgnoreCase("Dopamine loaded synaptic vesicle")) + aliases.add(alias); + } + + Reaction reaction = model.getReactionByReactionId("re2"); + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).// + fileType(ExportFileType.SIF).// + type(Protein.class).// + type(Complex.class).// + fileType(ExportFileType.SIF).// + complexElementsName(false).// + excluded(aliases); + + String string = exporter.getExportSingleInteractionString(reaction, params).get(0); + assertNotNull(string); + assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB")); + assertTrue(string.contains("CSP:Hsc70:SGT")); + assertTrue(string.contains("SNCA")); + assertTrue(string.contains("trans-SNARE complex")); + assertFalse(string.contains("VAMP2")); + + params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF).type(Complex.class) + .type(Protein.class); + string = exporter.getExportSingleInteractionString(reaction, params).get(0); + assertTrue(string.contains("VAMP2")); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void testGetExportStringForOneReactionInGeneral() { + try { + Model model = getModelForFile("testFiles/export/reaction.xml", true); + Reaction reaction = model.getReactionByReactionId("re2"); + ExporterParameters params = new IExporterService.ExporterParameters().model(model).// + fileType(ExportFileType.SIF).// + complexElementsName(false).// + type(Complex.class).type(Protein.class); + String string = exporter.getExportSingleInteractionString(reaction, params).get(0); + assertNotNull(string); + assertTrue(string.contains("Calcium channel:RIMBP:RIM:MUNC13:RAB")); + assertTrue(string.contains("CSP:Hsc70:SGT")); + assertTrue(string.contains("SNCA")); + assertTrue(string.contains("trans-SNARE complex")); + assertTrue(string.contains("SNAP25")); + assertFalse(string.contains("RAB3A")); + + params.complexElementsName(true); + string = exporter.getExportSingleInteractionString(reaction, params).get(0); + assertFalse(string.contains("trans-SNARE complex")); + assertTrue(string.contains("RAB3A")); + + } catch (Exception e) { + e.printStackTrace(); + fail("Exception occured"); + } + + } + + @Test + public void testGetExportStringForOneReactionInGeneralWithOnlyOneElement() throws Exception { + try { + Model model = getModelForFile("testFiles/export/reaction.xml", false); + Reaction reaction = model.getReactionByReactionId("re11"); + model.removeReactions(model.getReactions()); + model.addReaction(reaction); + Set<Compartment> aliases = new HashSet<>(); + aliases.add((Compartment) model.getElementByElementId("ca1")); + ExporterParameters params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF) + .included("dopamine loaded synaptic vesicle"); + assertEquals(0, exporter.getExportSingleInteractionString(reaction, params).size()); + + params = new IExporterService.ExporterParameters().model(model).fileType(ExportFileType.SIF); + assertEquals(1, exporter.getExportSingleInteractionString(reaction, params).size()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testGetExportSingleInteractionString_text() { + try { + Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); + for (Reaction reaction : model.getReactions()) { + String str = exporter + .getExportSingleInteractionString(reaction, + new IExporterService.ExporterParameters().fileType(ExportFileType.TAB_SEPARATED).type(Species.class)) + .get(0); + + List<String> strings = new ArrayList<String>(); + strings.add(ReactionLineData.getByReactionType(reaction.getClass()).getCellDesignerString()); + strings.add(reaction.getIdReaction()); + for (ReactionNode node : reaction.getReactionNodes()) { + strings.add(node.getElement().getName()); + + } + for (String string : strings) { + assertTrue( + "Description \"" + str + "\" doesn't contain " + string + ". reactionId=" + reaction.getIdReaction(), + str.contains(string)); + } + } + + } catch (Exception e) { + e.printStackTrace(); + fail("Exception occured"); + } + } + + @Test + public void testGetExportComponentAndCompartments() throws Exception { + try { + Model model = getModelForFile("testFiles/export/export_model.xml", false); + new CreateHierarchyCommand(model, 7, 80).execute(); + ExporterParameters params = new IExporterService.ExporterParameters().model(model) + .fileType(ExportFileType.TAB_SEPARATED).column(ExportColumn.NAME).column(ExportColumn.COMPONENT_NAME) + .column(ExportColumn.COMPARTMENT_NAME); + + List<String> list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa1"), params); + String desc = list.get(0); + String compartment = desc.split("\t")[2]; + assertEquals("c1", compartment); + String component = desc.split("\t")[1]; + assertEquals("Test3", component); + + list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa2"), params); + desc = null; + for (String string : list) { + if (string.contains("Test 1")) { + desc = string; + } + } + compartment = desc.split("\t")[2]; + assertEquals("c2", compartment); + component = desc.split("\t")[1]; + assertEquals("Test 1", component); + + for (String string : list) { + if (string.contains("Test2")) { + desc = string; + } + } + compartment = desc.split("\t")[2]; + assertEquals("c2", compartment); + component = desc.split("\t")[1]; + assertEquals("Test2", component); + + for (String string : list) { + if (string.contains("Test3")) { + desc = string; + } + } + compartment = desc.split("\t")[2]; + assertEquals("c2", compartment); + component = desc.split("\t")[1]; + assertEquals("Test3", component); + + list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa3"), params); + boolean ok = false; + for (String string : list) { + if (string.split("\t")[2].equals("null") && string.split("\t")[1].equals("Test2")) { + ok = true; + } + } + assertTrue(ok); + + list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa4"), params); + desc = list.get(0); + compartment = desc.split("\t")[2]; + assertEquals("null", compartment); + component = desc.split("\t")[1]; + assertEquals("Test3", component); + + list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa5"), params); + desc = list.get(0); + compartment = desc.split("\t")[2]; + assertEquals("c3", compartment); + component = desc.split("\t")[1]; + assertEquals("null", component); + + list = exporter.getExportStringForOneSpecies((Species) model.getElementByElementId("sa6"), params); + desc = list.get(0); + compartment = desc.split("\t")[2]; + assertEquals("null", compartment); + component = desc.split("\t")[1]; + assertEquals("null", component); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testGetExportSpeciesStringForTabSeparatedFile2() throws Exception { + try { + Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); + ExportColumn columns[] = { ExportColumn.NAME, ExportColumn.ID, ExportColumn.COMPONENT_NAME, + ExportColumn.COMPARTMENT_NAME, ExportColumn.TYPE }; + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns) + .fileType(ExportFileType.TAB_SEPARATED).type(Object.class); + + // full export (all elements) + String string = exporter.getExportSpeciesString(params); + String lines[] = string.split("\n"); + assertTrue("Not enough elements in the result file", lines.length > 1); + + String response = lines[0]; + String textColumns[] = response.split("\t"); + assertEquals(columns.length, textColumns.length); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testGetExportCompartmentsString() throws Exception { + try { + Model model = getModelForFile("testFiles/export/export_compartments.xml", false); + + ExporterParameters params = new IExporterService.ExporterParameters().model(model) + .fileType(ExportFileType.TAB_SEPARATED).type(Object.class); + + // full export (all compartments) + String string = exporter.getExportCompartmentsString(params); + String lines[] = string.split("\n"); + assertTrue("Not enough elements in the result file", lines.length >= 2); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testAllExportColumnsSpecies() throws Exception { + try { + Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); + List<ExportColumn> columns = new ArrayList<ExportColumn>(); + for (ExportColumn column : ExportColumn.values()) { + if (column.getClazz().isAssignableFrom(Species.class)) { + columns.add(column); + } + } + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns) + .fileType(ExportFileType.TAB_SEPARATED); + + // full export (all elements) + String string = exporter.getExportSpeciesString(params); + assertNotNull(string); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testAllExportColumnsReaction() throws Exception { + try { + Model model = getModelForFile("testFiles/export_with_artifitial_comp.xml", false); + List<ExportColumn> columns = new ArrayList<ExportColumn>(); + for (ExportColumn column : ExportColumn.values()) { + if (column.getClazz().isAssignableFrom(Reaction.class)) { + columns.add(column); + } + } + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns) + .fileType(ExportFileType.TAB_SEPARATED); + + // full export (all elements) + String string = exporter.getExportInteractionString(params); + assertNotNull(string); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testGetTabSeparatedReaction() throws Exception { + try { + Model model = getModelForFile("testFiles/export/reaction.xml", false); + Set<Compartment> aliases = new HashSet<>(); + for (Compartment alias : model.getCompartments()) { + if (alias.getName().equalsIgnoreCase("Dopamine loaded synaptic vesicle")) + aliases.add(alias); + } + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).// + fileType(ExportFileType.TAB_SEPARATED).// + column(ExportColumn.REACTION_ID).// + column(ExportColumn.REACTION_TYPE).// + type(Species.class); + + String string = exporter.getExportInteractionString(params); + assertTrue(string.indexOf("STATE_TRANSITION REACTANT") >= 0); + assertTrue(string.indexOf("sa7") >= 0); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + } + + @Test + public void test() throws Exception { + try { + Model model = getModelForFile("testFiles/export/new_line_file.xml", false); + List<ExportColumn> columns = new ArrayList<ExportColumn>(); + for (ExportColumn column : ExportColumn.values()) { + if (column.getClazz().isAssignableFrom(Species.class)) { + columns.add(column); + } + } + + ExporterParameters params = new IExporterService.ExporterParameters().model(model).column(columns) + .fileType(ExportFileType.TAB_SEPARATED); + + // full export (all elements) + String string = exporter.getExportSpeciesString(params); + String tmp[] = string.split("\n"); + for (String string2 : tmp) { + assertTrue(string2, columns.size() <= string2.split("\t", -1).length); + } + assertNotNull(string); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testPubmedSummary() throws Exception { + try { + Model model = getModelForFile("testFiles/export/reaction.xml", false); + List<PubmedAnnotatedElementsView> result = exporter.getPublicationModelSummary(model); + assertNotNull(result); + for (PubmedAnnotatedElementsView pubmedAnnotatedElementsView : result) { + assertNotNull(pubmedAnnotatedElementsView.getArticle()); + assertNotNull(pubmedAnnotatedElementsView.getArticle().getTitle()); + assertTrue(pubmedAnnotatedElementsView.getElements().size() > 0); + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } } diff --git a/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java b/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java index 538ec5894c..0e1577f840 100644 --- a/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java +++ b/service/src/test/java/lcsb/mapviewer/services/search/data/FullAliasViewFactoryTest.java @@ -40,195 +40,197 @@ import lcsb.mapviewer.services.ServiceTestFunctions; import lcsb.mapviewer.services.overlay.ChebiTreeRow; public class FullAliasViewFactoryTest extends ServiceTestFunctions { - Logger logger = Logger.getLogger(FullAliasViewFactoryTest.class); - - @Autowired - FullAliasViewFactory fullAliasViewFactory; - - @Autowired - private ChebiAnnotator backend; - private Species alias; - private Species alias2; - private Point2D midPoint; - private Reaction reaction; - private Species alias3; - - private Model model; - - private Compartment compartmentAlias; - - @Before - public void setUp() throws Exception { - - model = new ModelFullIndexed(null); - model.setWidth(20010); - model.setHeight(20010); - model.setTileSize(256); - model.setZoomLevels(7); - model.addLayout(new Layout()); - model.getModelData().setId(-12); - - alias = new GenericProtein("AL1"); - alias.setName("blablabla"); - alias.setNotes("nottttttes"); - alias.setX(10.0); - alias.setY(12.0); - alias.getMiriamData().add(new MiriamData(MiriamRelationType.BQ_BIOL_IS_DESCRIBED_BY, MiriamType.WIKIPEDIA, "144352")); - alias.getMiriamData().add(new MiriamData(MiriamRelationType.BQ_BIOL_IS_DESCRIBED_BY, MiriamType.PUBMED, "43345")); - - model.addElement(alias); - - alias2 = new GenericProtein("AL2"); - alias2.setName("blablabla2"); - alias2.setX(100.0); - alias2.setY(120.0); - - model.addElement(alias2); - - midPoint = new Point2D.Double(30, 100); - - reaction = new Reaction(); - - Reactant reactant = new Reactant(alias); - reactant.setLine(new PolylineData(alias.getCenter(), midPoint)); - reaction.addReactant(reactant); - - Product product = new Product(alias2); - product.setLine(new PolylineData(alias2.getCenter(), midPoint)); - reaction.addProduct(product); - - model.addReaction(reaction); - - alias3 = new GenericProtein("AL3"); - alias3.setName("blablabla3"); - alias3.setX(200.0); - alias3.setY(120.0); - - model.addElement(alias3); - - reaction = new NegativeInfluenceReaction(reaction); - reaction.getMiriamData().add(new MiriamData(MiriamRelationType.BQ_BIOL_IS_DESCRIBED_BY, MiriamType.CAS, "cc")); - - model.addReaction(reaction); - - compartmentAlias = new Compartment("AL4"); - compartmentAlias.setX(10); - compartmentAlias.setY(10); - compartmentAlias.setWidth(10); - compartmentAlias.setHeight(10); - model.addElement(compartmentAlias); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testCreateGson() { - try { - Element alias = new GenericProtein("id"); - alias.setName("12"); - alias.setModel(new ModelFullIndexed(null)); - FullAliasView object = fullAliasViewFactory.create(alias); - String gson = fullAliasViewFactory.createGson(object); - assertNotNull(gson); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testAliasOverlay() throws Exception { - try { - FullAliasView result = fullAliasViewFactory.create(alias); - assertNotNull(result); - assertEquals(model.getId(), result.getModelId()); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testAliasOverlay2() throws Exception { - try { - FullAliasView result = fullAliasViewFactory.create(alias2); - assertNotNull(result); - assertEquals(model.getId(), result.getModelId()); - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testGetNotes() throws Exception { - try { - Model model = getModelForFile("testFiles/protein_with_modification.xml", true); - model.setTileSize(256); - Species alias = (Species) model.getElementByElementId("sa1"); - FullAliasView marker = fullAliasViewFactory.create(alias); - List<?> list = (List<?>) marker.getOther("posttranslationalModifications"); - assertNotNull(list); - assertEquals(2, list.size()); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testCreateChebiTree() throws Exception { - try { - Chebi chebi = backend.getChebiElementForChebiId(new MiriamData(MiriamType.CHEBI, "CHEBI:15377")); - - TreeNode root = fullAliasViewFactory.createTreeForChebi(chebi); - - Set<String> el = new HashSet<String>(); - assertNotNull(root); - - Queue<TreeNode> elements = new LinkedList<TreeNode>(); - - elements.add(root); - - while (!elements.isEmpty()) { - TreeNode node = elements.peek(); - elements.remove(); - el.add(((ChebiTreeRow) node.getData()).getName()); - for (TreeNode child : node.getChildren()) { - elements.add(child); - } - } - - assertTrue(el.size() > 3); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @Test - public void testAnnotationsInConversionForChebiTree() throws Exception { - try { - Model model = getModelForFile("testFiles/graph_path_example3.xml", false); - model.setTileSize(256); - Species alias = (Species) model.getElementByElementId("sa4"); - assertNotNull(alias); - FullAliasView result = fullAliasViewFactory.create(alias); - assertNotNull(result.getOther("chebiTree")); - - alias = (Species) model.getElementByElementId("sa3"); - result = fullAliasViewFactory.create(alias); - assertNull(result.getOther("chebiTree")); - - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } + Logger logger = Logger.getLogger(FullAliasViewFactoryTest.class); + + @Autowired + FullAliasViewFactory fullAliasViewFactory; + + @Autowired + private ChebiAnnotator backend; + private Species alias; + private Species alias2; + private Point2D midPoint; + private Reaction reaction; + private Species alias3; + + private Model model; + + private Compartment compartmentAlias; + + @Before + public void setUp() throws Exception { + + model = new ModelFullIndexed(null); + model.setWidth(20010); + model.setHeight(20010); + model.setTileSize(256); + model.setZoomLevels(7); + model.addLayout(new Layout()); + model.getModelData().setId(-12); + + alias = new GenericProtein("AL1"); + alias.setName("blablabla"); + alias.setNotes("nottttttes"); + alias.setX(10.0); + alias.setY(12.0); + alias.getMiriamData() + .add(new MiriamData(MiriamRelationType.BQ_BIOL_IS_DESCRIBED_BY, MiriamType.WIKIPEDIA, "144352")); + alias.getMiriamData().add(new MiriamData(MiriamRelationType.BQ_BIOL_IS_DESCRIBED_BY, MiriamType.PUBMED, "43345")); + + model.addElement(alias); + + alias2 = new GenericProtein("AL2"); + alias2.setName("blablabla2"); + alias2.setX(100.0); + alias2.setY(120.0); + + model.addElement(alias2); + + midPoint = new Point2D.Double(30, 100); + + reaction = new Reaction("re1"); + + Reactant reactant = new Reactant(alias); + reactant.setLine(new PolylineData(alias.getCenter(), midPoint)); + reaction.addReactant(reactant); + + Product product = new Product(alias2); + product.setLine(new PolylineData(alias2.getCenter(), midPoint)); + reaction.addProduct(product); + + model.addReaction(reaction); + + alias3 = new GenericProtein("AL3"); + alias3.setName("blablabla3"); + alias3.setX(200.0); + alias3.setY(120.0); + + model.addElement(alias3); + + reaction = new NegativeInfluenceReaction(reaction); + reaction.setIdReaction("re2"); + reaction.getMiriamData().add(new MiriamData(MiriamRelationType.BQ_BIOL_IS_DESCRIBED_BY, MiriamType.CAS, "cc")); + + model.addReaction(reaction); + + compartmentAlias = new Compartment("AL4"); + compartmentAlias.setX(10); + compartmentAlias.setY(10); + compartmentAlias.setWidth(10); + compartmentAlias.setHeight(10); + model.addElement(compartmentAlias); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testCreateGson() { + try { + Element alias = new GenericProtein("id"); + alias.setName("12"); + alias.setModel(new ModelFullIndexed(null)); + FullAliasView object = fullAliasViewFactory.create(alias); + String gson = fullAliasViewFactory.createGson(object); + assertNotNull(gson); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testAliasOverlay() throws Exception { + try { + FullAliasView result = fullAliasViewFactory.create(alias); + assertNotNull(result); + assertEquals(model.getId(), result.getModelId()); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testAliasOverlay2() throws Exception { + try { + FullAliasView result = fullAliasViewFactory.create(alias2); + assertNotNull(result); + assertEquals(model.getId(), result.getModelId()); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testGetNotes() throws Exception { + try { + Model model = getModelForFile("testFiles/protein_with_modification.xml", true); + model.setTileSize(256); + Species alias = (Species) model.getElementByElementId("sa1"); + FullAliasView marker = fullAliasViewFactory.create(alias); + List<?> list = (List<?>) marker.getOther("posttranslationalModifications"); + assertNotNull(list); + assertEquals(2, list.size()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testCreateChebiTree() throws Exception { + try { + Chebi chebi = backend.getChebiElementForChebiId(new MiriamData(MiriamType.CHEBI, "CHEBI:15377")); + + TreeNode root = fullAliasViewFactory.createTreeForChebi(chebi); + + Set<String> el = new HashSet<String>(); + assertNotNull(root); + + Queue<TreeNode> elements = new LinkedList<TreeNode>(); + + elements.add(root); + + while (!elements.isEmpty()) { + TreeNode node = elements.peek(); + elements.remove(); + el.add(((ChebiTreeRow) node.getData()).getName()); + for (TreeNode child : node.getChildren()) { + elements.add(child); + } + } + + assertTrue(el.size() > 3); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testAnnotationsInConversionForChebiTree() throws Exception { + try { + Model model = getModelForFile("testFiles/graph_path_example3.xml", false); + model.setTileSize(256); + Species alias = (Species) model.getElementByElementId("sa4"); + assertNotNull(alias); + FullAliasView result = fullAliasViewFactory.create(alias); + assertNotNull(result.getOther("chebiTree")); + + alias = (Species) model.getElementByElementId("sa3"); + result = fullAliasViewFactory.create(alias); + assertNull(result.getOther("chebiTree")); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } } -- GitLab