/** * Copyright (C) 2012-2013 Selventa, Inc. * * This file is part of the OpenBEL Framework. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The OpenBEL Framework is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the OpenBEL Framework. If not, see <http://www.gnu.org/licenses/>. * * Additional Terms under LGPL v3: * * This license does not authorize you and you are prohibited from using the * name, trademarks, service marks, logos or similar indicia of Selventa, Inc., * or, in the discretion of other licensors or authors of the program, the * name, trademarks, service marks, logos or similar indicia of such authors or * licensors, in any marketing or advertising materials relating to your * distribution of the program or any covered product. This restriction does * not waive or limit your obligation to keep intact all copyright notices set * forth in the program as delivered to you. * * If you distribute the program in whole or in part, or any modified version * of the program, and you assume contractual liability to the recipient with * respect to the program or modified version, then you will indemnify the * authors and licensors of the program for any liabilities that these * contractual assumptions directly impose on those licensors and authors. */ package org.openbel.framework.api; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.openbel.framework.api.KamBuilder.edge; import static org.openbel.framework.api.internal.KamStoreUtil.*; import static org.openbel.framework.common.enums.RelationshipType.ACTS_IN; import static org.openbel.framework.common.enums.RelationshipType.ORTHOLOGOUS; import static org.openbel.framework.common.enums.RelationshipType.TRANSCRIBED_TO; import static org.openbel.framework.common.enums.RelationshipType.TRANSLATED_TO; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import org.antlr.runtime.RecognitionException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openbel.framework.api.Kam.KamEdge; import org.openbel.framework.api.Kam.KamNode; import org.openbel.framework.api.internal.KamInfoUtil; import org.openbel.framework.api.internal.KAMCatalogDao.KamInfo; import org.openbel.framework.api.internal.KAMStoreDaoImpl.BelTerm; import org.openbel.framework.api.internal.KAMStoreDaoImpl.Namespace; import org.openbel.framework.api.internal.KAMStoreDaoImpl.TermParameter; import org.openbel.framework.common.InvalidArgument; import org.openbel.framework.common.SystemConfigurationFile; import org.openbel.framework.common.cfg.SystemConfigurationBasedTest; import org.openbel.framework.common.lang.ComplexAbundance; import org.openbel.framework.common.lang.GeneAbundance; import org.openbel.framework.common.lang.ProteinAbundance; @SystemConfigurationFile(path = "src/test/resources/org/openbel/framework/api/belframework.cfg") public class SpeciesKamTest extends SystemConfigurationBasedTest { private static KamInfo info; private KAMStore kamstore; /** * Tests collapsing of orthologous {@link GeneAbundance gene abundance} * nodes. Additionally the surrounding gene activation pathway and * activities should be inferred as orthologous and collapsed. The kam * should collapse to: * <p> * <pre> * proteinAbundance(HGNC:MAPK1) actsIn kinaseActivity(proteinAbundance(HGNC:MAPK1)) * rnaAbundance(HGNC:MAPK1) translatedTo proteinAbundance(HGNC:MAPK1) * geneAbundance(HGNC:MAPK1) transcribedTo rnaAbundance(HGNC:MAPK1) * </pre> * </p> */ @Test public void speciesSimple() { kamstore = mock(KAMStore.class); final Kam kam; try { kam = simpleKam(); } catch (RecognitionException e) { e.printStackTrace(); fail("Simple KAM was not built correctly, error: " + e.getMessage()); return; } OrthologizedKam skam; try { Orthologize orthologize = new DefaultOrthologize(); SpeciesDialect dialect = new DefaultSpeciesDialect(info, kamstore, 9606, true); skam = orthologize.orthologize(kam, kamstore, dialect); } catch (InvalidArgument e) { e.printStackTrace(); fail("Failed to load species-specific KAM."); return; } catch (KAMStoreException e) { e.printStackTrace(); fail("Failed to load species-specific KAM."); return; } // assert the topology of the graph assertThat(skam.getNodes().size(), is(4)); assertThat(skam.getEdges().size(), is(3)); // assert that ORTHOLOGOUS edges no longer exist for (final KamEdge e : skam.getEdges()) { if (ORTHOLOGOUS.equals(e.getRelationshipType())) { fail("Orthologous edge exists in the Kam after collapsing."); } } // assert deterministic collapsing final Iterator<KamEdge> it = skam.getEdges().iterator(); assertThat( it.next().toString(), is("proteinAbundance(HGNC:MAPK1) actsIn kinaseActivity(proteinAbundance(HGNC:MAPK1))")); assertThat( it.next().toString(), is("rnaAbundance(HGNC:MAPK1) translatedTo proteinAbundance(HGNC:MAPK1)")); assertThat( it.next().toString(), is("geneAbundance(HGNC:MAPK1) transcribedTo rnaAbundance(HGNC:MAPK1)")); } /** * Tests collapsing of orthologous {@link ProteinAbundance protein family} * nodes and associated activities. The kam should collapse to: * <p> * <pre> * p(PFH:"14-3-3 Family") actsIn phos(p(PFH:"14-3-3 Family\)) p(PFH:"14-3-3 Family") actsIn kin(p(PFH:"14-3-3 Family")) * </pre> * </p> */ @Test public void speciesFamily() { kamstore = mock(KAMStore.class); final Kam kam; try { kam = familyKam(); } catch (RecognitionException e) { e.printStackTrace(); fail("Family KAM was not built correctly, error: " + e.getMessage()); return; } OrthologizedKam skam; try { Orthologize orthologize = new DefaultOrthologize(); SpeciesDialect dialect = new DefaultSpeciesDialect(info, kamstore, 9606, true); skam = orthologize.orthologize(kam, kamstore, dialect); } catch (InvalidArgument e) { e.printStackTrace(); fail("Failed to load species-specific KAM."); return; } catch (KAMStoreException e) { e.printStackTrace(); fail("Failed to load species-specific KAM."); return; } // assert the topology of the graph assertThat(skam.getNodes().size(), is(3)); assertThat(skam.getEdges().size(), is(2)); // assert that ORTHOLOGOUS edges no longer exist for (final KamEdge e : skam.getEdges()) { if (ORTHOLOGOUS.equals(e.getRelationshipType())) { fail("Orthologous edge exists in the Kam after collapsing."); } } // assert deterministic collapsing final Iterator<KamEdge> it = skam.getEdges().iterator(); assertThat(it.next().toString(), is("proteinAbundance(PFH:\"14-3-3 Family\") actsIn phosphataseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))")); assertThat(it.next().toString(), is("proteinAbundance(PFH:\"14-3-3 Family\") actsIn kinaseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))")); } /** * Tests collapsing of orthologous {@link ComplexAbundance protein complex} * nodes and associated activities. The kam should collapse to: * <p> * <pre> * complex(NCH:"AP-1 Complex") actsIn kin(complex(NCH:"AP-1 Complex")) * </pre> * </p> */ @Test public void speciesComplex() { kamstore = mock(KAMStore.class); final Kam kam; try { kam = complexKam(); } catch (RecognitionException e) { e.printStackTrace(); fail("Complex KAM was not built correctly, error: " + e.getMessage()); return; } OrthologizedKam skam; try { Orthologize orthologize = new DefaultOrthologize(); SpeciesDialect dialect = new DefaultSpeciesDialect(info, kamstore, 9606, true); skam = orthologize.orthologize(kam, kamstore, dialect); } catch (InvalidArgument e) { e.printStackTrace(); fail("Failed to load species-specific KAM."); return; } catch (KAMStoreException e) { e.printStackTrace(); fail("Failed to load species-specific KAM."); return; } // assert the topology of the graph assertThat(skam.getNodes().size(), is(2)); assertThat(skam.getEdges().size(), is(1)); // assert that ORTHOLOGOUS edges no longer exist for (final KamEdge e : skam.getEdges()) { if (ORTHOLOGOUS.equals(e.getRelationshipType())) { fail("Orthologous edge exists in the Kam after collapsing."); } } // assert deterministic collapsing final Iterator<KamEdge> it = skam.getEdges().iterator(); assertThat(it.next().toString(), is("complexAbundance(NCH:\"AP-1 Complex\") actsIn kinaseActivity(complexAbundance(NCH:\"AP-1 Complex\"))")); } /** * {@inheritDoc} */ @Before @Override public void setup() { super.setup(); try { info = KamInfoUtil.createKamInfo(); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } } /** * {@inheritDoc} */ @After @Override public void teardown() { super.teardown(); } /** * <pre> * k(p(MGI:Mapk1)) * ^ * actsIn * | * p(MGI:Mapk1) * ^ * translatedTo * | * r(EG:26413) * ^ * transcribedTo * | * g(MGI:Mapk1) <--orthologous--> g(HGNC:MAPK1) <--orthologous--> g(RGD:Mapk1) * | * transcribedTo * v * r(EG:116590) * | * translatedTo * v * p(RGD:Mapk1) * | * actsIn * v * k(p(RGD:Mapk1)) * </pre> * * @throws RecognitionException */ private Kam simpleKam() throws RecognitionException { final KamBuilder kb = new KamBuilder(info, true); Kam kam = kb.addNodes( "kinaseActivity(proteinAbundance(MGI:Mapk1))", "proteinAbundance(MGI:Mapk1)", "rnaAbundance(EG:26413)", "geneAbundance(EG:26413)", "geneAbundance(HGNC:MAPK1)", "geneAbundance(EG:116590)", "rnaAbundance(EG:116590)", "proteinAbundance(RGD:Mapk1)", "kinaseActivity(proteinAbundance(RGD:Mapk1))"). addEdges( edge("proteinAbundance(MGI:Mapk1)", ACTS_IN, "kinaseActivity(proteinAbundance(MGI:Mapk1))"), edge("rnaAbundance(EG:26413)", TRANSLATED_TO, "proteinAbundance(MGI:Mapk1)"), edge("geneAbundance(EG:26413)", TRANSCRIBED_TO, "rnaAbundance(EG:26413)"), edge("geneAbundance(EG:26413)", ORTHOLOGOUS, "geneAbundance(HGNC:MAPK1)"), edge("geneAbundance(HGNC:MAPK1)", ORTHOLOGOUS, "geneAbundance(EG:26413)"), edge("geneAbundance(HGNC:MAPK1)", ORTHOLOGOUS, "geneAbundance(EG:116590)"), edge("geneAbundance(EG:116590)", ORTHOLOGOUS, "geneAbundance(HGNC:MAPK1)"), edge("geneAbundance(EG:116590)", TRANSCRIBED_TO, "rnaAbundance(EG:116590)"), edge("rnaAbundance(EG:116590)", TRANSLATED_TO, "proteinAbundance(RGD:Mapk1)"), edge("proteinAbundance(RGD:Mapk1)", ACTS_IN, "kinaseActivity(proteinAbundance(RGD:Mapk1))")).create(); try { final Namespace mgi = createNamespace( 0, "MGI", "http://resource.belframework.org/belframework/1.0/namespace/mgi-approved-symbols.belns"); final Namespace eg = createNamespace( 1, "EG", "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns"); final Namespace hgnc = createNamespace( 2, "HGNC", "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns"); final Namespace rgd = createNamespace( 3, "RGD", "http://resource.belframework.org/belframework/1.0/namespace/rgd-approved-symbols.belns"); when(kamstore.getNamespaces(info)).thenReturn( Arrays.asList(eg, hgnc, mgi, rgd)); final TermParameter mgiMapk1 = createTermParameter(0, mgi, "Mapk1"); final TermParameter eg26413 = createTermParameter(1, eg, "26413"); final TermParameter hgncMAPK1 = createTermParameter(2, hgnc, "MAPK1"); final TermParameter eg116590 = createTermParameter(3, eg, "116590"); final TermParameter rgdMapk1 = createTermParameter(4, rgd, "Mapk1"); Collection<KamNode> kn = kam.getNodes(); final KamNode[] nodes = kn.toArray(new KamNode[kn.size()]); BelTerm belTerm = createBelTerm(0, "kinaseActivity(proteinAbundance(MGI:Mapk1))"); when(kamstore.getSupportingTerms(nodes[0])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(mgiMapk1)); belTerm = createBelTerm(1, "proteinAbundance(MGI:Mapk1)"); when(kamstore.getSupportingTerms(nodes[1])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(mgiMapk1)); belTerm = createBelTerm(2, "rnaAbundance(EG:26413)"); when(kamstore.getSupportingTerms(nodes[2])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(eg26413)); belTerm = createBelTerm(3, "geneAbundance(EG:26413)"); when(kamstore.getSupportingTerms(nodes[3])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(eg26413)); belTerm = createBelTerm(4, "geneAbundance(HGNC:MAPK1)"); when(kamstore.getSupportingTerms(nodes[4])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(hgncMAPK1)); belTerm = createBelTerm(5, "geneAbundance(EG:116590)"); when(kamstore.getSupportingTerms(nodes[5])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(eg116590)); belTerm = createBelTerm(6, "rnaAbundance(EG:116590)"); when(kamstore.getSupportingTerms(nodes[6])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(eg116590)); belTerm = createBelTerm(7, "proteinAbundance(RGD:Mapk1)"); when(kamstore.getSupportingTerms(nodes[7])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(rgdMapk1)); belTerm = createBelTerm(8, "kinaseActivity(proteinAbundance(RGD:Mapk1))"); when(kamstore.getSupportingTerms(nodes[8])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(rgdMapk1)); } catch (KAMStoreException e) { e.printStackTrace(); fail("Failed retrieving mocked supporting terms."); } return kam; } /** * <pre> * k(p(PFM:"14-3-3 Family")) k(p(PFH:"14-3-3 Family")) * ^ ^ * | | * | | * actsIn actsIn * | | * | | * p(PFM:"14-3-3 Family") <--orthologous--> p(PFH:"14-3-3 Family") --actsIn--> phos(p(PFH:"14-3-3 Family")) * ^ ^ * \ / * \ / * orthologous orthologous * \ / * \ / * v v * p(PFR:"14-3-3 Family") * | * | * actsIn * | * | * v * kin(p(PFR:"14-3-3 Family") * </pre> * @throws RecognitionException */ private Kam familyKam() throws RecognitionException { final KamBuilder kb = new KamBuilder(info, true); Kam kam = kb.addNodes( "phosphataseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))", "kinaseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))", "proteinAbundance(PFH:\"14-3-3 Family\")", "kinaseActivity(proteinAbundance(PFM:\"14-3-3 Family\"))", "proteinAbundance(PFM:\"14-3-3 Family\")", "kinaseActivity(proteinAbundance(PFR:\"14-3-3 Family\"))", "proteinAbundance(PFR:\"14-3-3 Family\")"). addEdges( edge("proteinAbundance(PFH:\"14-3-3 Family\")", ACTS_IN, "phosphataseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))"), edge("proteinAbundance(PFH:\"14-3-3 Family\")", ACTS_IN, "kinaseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))"), edge("proteinAbundance(PFM:\"14-3-3 Family\")", ACTS_IN, "kinaseActivity(proteinAbundance(PFM:\"14-3-3 Family\"))"), edge("proteinAbundance(PFR:\"14-3-3 Family\")", ACTS_IN, "kinaseActivity(proteinAbundance(PFR:\"14-3-3 Family\"))"), edge("proteinAbundance(PFH:\"14-3-3 Family\")", ORTHOLOGOUS, "proteinAbundance(PFM:\"14-3-3 Family\")"), edge("proteinAbundance(PFM:\"14-3-3 Family\")", ORTHOLOGOUS, "proteinAbundance(PFH:\"14-3-3 Family\")"), edge("proteinAbundance(PFM:\"14-3-3 Family\")", ORTHOLOGOUS, "proteinAbundance(PFR:\"14-3-3 Family\")"), edge("proteinAbundance(PFR:\"14-3-3 Family\")", ORTHOLOGOUS, "proteinAbundance(PFM:\"14-3-3 Family\")"), edge("proteinAbundance(PFR:\"14-3-3 Family\")", ORTHOLOGOUS, "proteinAbundance(PFH:\"14-3-3 Family\")"), edge("proteinAbundance(PFH:\"14-3-3 Family\")", ORTHOLOGOUS, "proteinAbundance(PFR:\"14-3-3 Family\")")).create(); try { final Namespace pfh = createNamespace( 0, "PFH", "http://resource.belframework.org/belframework/1.0/namespace/selventa-named-human-protein-families.belns"); final Namespace pfm = createNamespace( 1, "PFM", "http://resource.belframework.org/belframework/1.0/namespace/selventa-named-mouse-protein-families.belns"); final Namespace pfr = createNamespace( 2, "PFR", "http://resource.belframework.org/belframework/1.0/namespace/selventa-named-rat-protein-families.belns"); when(kamstore.getNamespaces(info)).thenReturn( Arrays.asList(pfh, pfm, pfr)); final TermParameter pfh1433 = createTermParameter(0, pfh, "14-3-3 Family"); final TermParameter pfm1433 = createTermParameter(1, pfm, "14-3-3 Family"); final TermParameter pfr1433 = createTermParameter(2, pfr, "14-3-3 Family"); final Collection<KamNode> kn = kam.getNodes(); final KamNode[] nodes = kn.toArray(new KamNode[kn.size()]); BelTerm belTerm = createBelTerm(0, "phosphataseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))"); when(kamstore.getSupportingTerms(nodes[0])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfh1433)); belTerm = createBelTerm(1, "kinaseActivity(proteinAbundance(PFH:\"14-3-3 Family\"))"); when(kamstore.getSupportingTerms(nodes[1])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfh1433)); belTerm = createBelTerm(2, "proteinAbundance(PFH:\"14-3-3 Family\")"); when(kamstore.getSupportingTerms(nodes[2])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfh1433)); belTerm = createBelTerm(3, "kinaseActivity(proteinAbundance(PFM:\"14-3-3 Family\"))"); when(kamstore.getSupportingTerms(nodes[3])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfm1433)); belTerm = createBelTerm(4, "proteinAbundance(PFM:\"14-3-3 Family\")"); when(kamstore.getSupportingTerms(nodes[4])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfm1433)); belTerm = createBelTerm(5, "kinaseActivity(proteinAbundance(PFR:\"14-3-3 Family\"))"); when(kamstore.getSupportingTerms(nodes[5])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfr1433)); belTerm = createBelTerm(6, "proteinAbundance(PFR:\"14-3-3 Family\")"); when(kamstore.getSupportingTerms(nodes[6])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(pfr1433)); } catch (KAMStoreException e) { e.printStackTrace(); fail("Failed retrieving mocked supporting terms."); } return kam; } /** * <pre> * kin(complex(NCM:"AP-1 Family")) kin(complex(NCH:"AP-1 Family")) * ^ ^ * | | * | | * actsIn actsIn * | | * | | * complex(NCM:"AP-1 Family") <--orthologous--> complex(NCH:"AP-1 Family") * ^ ^ * \ / * \ / * orthologous orthologous * \ / * \ / * v v * complex(NCR:"AP-1 Family") * | * | * actsIn * | * | * v * kin(complex(NCH:"AP-1 Family")) * </pre> * @throws RecognitionException */ private Kam complexKam() throws RecognitionException { final KamBuilder kb = new KamBuilder(info, true); Kam kam = kb.addNodes( "kinaseActivity(complexAbundance(NCH:\"AP-1 Complex\"))", "complexAbundance(NCH:\"AP-1 Complex\")", "kinaseActivity(complexAbundance(NCM:\"AP-1 Complex\"))", "complexAbundance(NCM:\"AP-1 Complex\")", "kinaseActivity(complexAbundance(NCR:\"AP-1 Complex\"))", "complexAbundance(NCR:\"AP-1 Complex\")"). addEdges( edge("complexAbundance(NCH:\"AP-1 Complex\")", ACTS_IN, "kinaseActivity(complexAbundance(NCH:\"AP-1 Complex\"))"), edge("complexAbundance(NCM:\"AP-1 Complex\")", ACTS_IN, "kinaseActivity(complexAbundance(NCM:\"AP-1 Complex\"))"), edge("complexAbundance(NCR:\"AP-1 Complex\")", ACTS_IN, "kinaseActivity(complexAbundance(NCR:\"AP-1 Complex\"))"), edge("complexAbundance(NCH:\"AP-1 Complex\")", ORTHOLOGOUS, "complexAbundance(NCM:\"AP-1 Complex\")"), edge("complexAbundance(NCM:\"AP-1 Complex\")", ORTHOLOGOUS, "complexAbundance(NCH:\"AP-1 Complex\")"), edge("complexAbundance(NCM:\"AP-1 Complex\")", ORTHOLOGOUS, "complexAbundance(NCR:\"AP-1 Complex\")"), edge("complexAbundance(NCR:\"AP-1 Complex\")", ORTHOLOGOUS, "complexAbundance(NCM:\"AP-1 Complex\")"), edge("complexAbundance(NCR:\"AP-1 Complex\")", ORTHOLOGOUS, "complexAbundance(NCH:\"AP-1 Complex\")"), edge("complexAbundance(NCH:\"AP-1 Complex\")", ORTHOLOGOUS, "complexAbundance(NCR:\"AP-1 Complex\")")).create(); try { final Namespace nch = createNamespace( 0, "NCH", "http://resource.belframework.org/belframework/1.0/namespace/selventa-named-human-complexes.belns"); final Namespace ncm = createNamespace( 1, "NCM", "http://resource.belframework.org/belframework/1.0/namespace/selventa-named-mouse-complexes.belns"); final Namespace ncr = createNamespace( 2, "NCR", "http://resource.belframework.org/belframework/1.0/namespace/selventa-named-rat-complexes.belns"); when(kamstore.getNamespaces(info)).thenReturn( Arrays.asList(nch, ncm, ncr)); final TermParameter nchAP1 = createTermParameter(0, nch, "AP-1 Complex"); final TermParameter ncmAP1 = createTermParameter(1, ncm, "AP-1 Complex"); final TermParameter ncrAP1 = createTermParameter(2, ncr, "AP-1 Complex"); final Collection<KamNode> kn = kam.getNodes(); final KamNode[] nodes = kn.toArray(new KamNode[kn.size()]); BelTerm belTerm = createBelTerm(0, "kinaseActivity(complexAbundance(NCH:\"AP-1 Complex\"))"); when(kamstore.getSupportingTerms(nodes[0])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(nchAP1)); belTerm = createBelTerm(1, "complexAbundance(NCH:\"AP-1 Complex\")"); when(kamstore.getSupportingTerms(nodes[1])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(nchAP1)); belTerm = createBelTerm(2, "kinaseActivity(complexAbundance(NCM:\"AP-1 Complex\"))"); when(kamstore.getSupportingTerms(nodes[2])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(ncmAP1)); belTerm = createBelTerm(3, "complexAbundance(NCM:\"AP-1 Complex\")"); when(kamstore.getSupportingTerms(nodes[3])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(ncmAP1)); belTerm = createBelTerm(4, "kinaseActivity(complexAbundance(NCR:\"AP-1 Complex\"))"); when(kamstore.getSupportingTerms(nodes[4])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(ncrAP1)); belTerm = createBelTerm(5, "complexAbundance(NCR:\"AP-1 Complex\")"); when(kamstore.getSupportingTerms(nodes[5])).thenReturn( Arrays.asList(belTerm)); when(kamstore.getTermParameters(info, belTerm)).thenReturn( Arrays.asList(ncrAP1)); } catch (KAMStoreException e) { e.printStackTrace(); fail("Failed retrieving mocked supporting terms."); } return kam; } }