Package org.openbel.framework.core.equivalence

Source Code of org.openbel.framework.core.equivalence.EquivalentTermEqualityTest

/**
* 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.core.equivalence;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.openbel.framework.common.enums.FunctionEnum.GENE_ABUNDANCE;
import static org.openbel.framework.common.enums.FunctionEnum.PROTEIN_ABUNDANCE;
import static org.openbel.framework.common.enums.FunctionEnum.values;

import java.util.Arrays;

import org.junit.Test;
import org.openbel.framework.common.enums.FunctionEnum;
import org.openbel.framework.common.model.BELObject;
import org.openbel.framework.common.model.Namespace;
import org.openbel.framework.common.protonetwork.model.SkinnyUUID;
import org.openbel.framework.core.equivalence.EquivalentParameter;
import org.openbel.framework.core.equivalence.EquivalentTerm;

/**
* {@link EquivalentTermEqualityTest} tests the equality check between different
* pairs of {@link EquivalentTerm equivalent terms}.
*
* @author Anthony Bargnesi {@code <abargnesi@selventa.com>}
*/
public class EquivalentTermEqualityTest {

    /**
     * Test identity comparison of BEL Term:
     * <p>
     * {@code p(HGNC:AKT1)}
     * </p>
     */
    @Test
    public void testTermIdentityEquivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");

        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));

        assertThat(term1.equals(term1), is(true));
    }

    /**
     * Test mismatched {@link Object object types}.
     */
    @Test
    public void testMismatchedTypeUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");

        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));

        assertThat(term1.equals(new Object()), is(false));
    }

    /**
     * Test exact match of BEL Terms:
     * <p>
     * {@code p(HGNC:AKT1)}<br>
     * {@code p(HGNC:AKT1)}
     * </p>
     */
    @Test
    public void testExactMatchEquivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));
        EquivalentParameter param2 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term2 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param2));

        assertThat(term1.equals(term2), is(true));
    }

    /**
     * Test mismatched {@link FunctionEnum function types} of BEL Terms:
     * <p>
     * {@code p(HGNC:AKT1)}<br>
     * {@code g(HGNC:AKT1)}
     * </p>
     */
    @Test
    public void testMismatchedFunctionUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));
        EquivalentParameter param2 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term2 = new EquivalentTerm(GENE_ABUNDANCE,
                Arrays.asList((BELObject) param2));

        assertThat(term1.equals(term2), is(false));
    }

    /**
     * Test mismatched argument cardinality of BEL Terms:
     * <p>
     * {@code ALL_FUNCTIONS(HGNC:AKT1, HGNC:AKT2)}<br>
     * {@code ALL_FUNCTIONS(EGID:207)}
     * </p>
     */
    @Test
    public void testMismatchedArgumentCardinalityUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        for (final FunctionEnum f : values()) {
            EquivalentParameter param1 =
                    new EquivalentParameter(
                            hgnc,
                            "AKT1",
                            SkinnyUUID
                                    .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
            EquivalentParameter param2 =
                    new EquivalentParameter(
                            hgnc,
                            "AKT2",
                            SkinnyUUID
                                    .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
            EquivalentTerm term1 = new EquivalentTerm(f, Arrays.asList(
                    (BELObject) param1, (BELObject) param2));

            EquivalentParameter param4 =
                    new EquivalentParameter(
                            egid,
                            "207",
                            SkinnyUUID
                                    .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
            EquivalentTerm term2 = new EquivalentTerm(f,
                    Arrays.asList((BELObject) param4));

            assertThat(term1.equals(term2), is(false));
        }
    }

    /**
     * Test different parameter UUIDS of BEL Terms:
     * <p>
     * {@code p(HGNC:AKT1) with UUID a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f}<br>
     * {@code p(HGNC:AKT1) with UUID 27e0ab06-6644-42fc-b1f7-0b98bf4e6858}
     * </p>
     *
     * <p>
     * Not likely since the same namespace and value is used, but worth testing
     * the UUID in isolation.
     * </p>
     */
    @Test
    public void testDifferentParameterUUIDSUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");

        // different parameter uuids, not equivalent
        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));
        EquivalentParameter param2 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("27e0ab06-6644-42fc-b1f7-0b98bf4e6858"));
        EquivalentTerm term2 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param2));

        assertThat(term1.equals(term2), is(false));
    }

    /**
     * Test different parameter values of BEL Terms:
     * <p>
     * {@code p(HGNC:AKT1) with UUID a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f}<br>
     * {@code p(HGNC:AKT2) with UUID 9be88c14-6311-4452-a911-9f02abcf6a1e}
     * </p>
     */
    @Test
    public void testDifferentParameterValuesUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");

        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));
        EquivalentParameter param2 = new EquivalentParameter(hgnc, "AKT2",
                SkinnyUUID.fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
        EquivalentTerm term2 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param2));

        assertThat(term1.equals(term2), is(false));
    }

    /**
     * Test different namespaces with the same UUIDS of BEL Terms:
     * <p>
     * {@code p(HGNC:AKT1) with UUID a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f}<br>
     * {@code p(EGID:207) with UUID a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f}
     * </p>
     */
    @Test
    public void testDifferentNamespacesSameUUIDSEquivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));
        EquivalentParameter param2 = new EquivalentParameter(egid, "207",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term2 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param2));

        assertThat(term1.equals(term2), is(true));
    }

    /**
     * Test different namespaces with different values of BEL Terms:
     * <p>
     * {@code p(HGNC:AKT1) with UUID a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f}<br>
     * {@code p(EGID:257) with UUID aae305e5-bb6d-4e75-ac0b-85a76e1e8e09}
     * </p>
     */
    @Test
    public void testDifferentNamespacesDifferentValuesUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        EquivalentParameter param1 = new EquivalentParameter(hgnc, "AKT1",
                SkinnyUUID.fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
        EquivalentTerm term1 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param1));
        EquivalentParameter param2 = new EquivalentParameter(egid, "257",
                SkinnyUUID.fromString("aae305e5-bb6d-4e75-ac0b-85a76e1e8e09"));
        EquivalentTerm term2 = new EquivalentTerm(PROTEIN_ABUNDANCE,
                Arrays.asList((BELObject) param2));

        assertThat(term1.equals(term2), is(false));
    }

    /**
     * Test sequential matches of BEL Terms:
     * <p>
     * {@code SEQUENTIAL_FUNCTION(HGNC:AKT1, HGNC:AKT2)}<br>
     * {@code SEQUENTIAL_FUNCTION(EGID:207, EGID:208)}<br>
     * </p>
     */
    @Test
    public void testSequentialMatchEquivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        for (final FunctionEnum f : values()) {
            if (f.isSequential()) {
                EquivalentParameter param1 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT1",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentParameter param2 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT2",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentTerm term1 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param1, (BELObject) param2));

                EquivalentParameter param3 =
                        new EquivalentParameter(
                                egid,
                                "207",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentParameter param4 =
                        new EquivalentParameter(
                                egid,
                                "208",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentTerm term2 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param3, (BELObject) param4));

                assertThat(term1.equals(term2), is(true));
            }
        }
    }

    /**
     * Test mismatched arguments of BEL Terms:
     * <p>
     * {@code SEQUENTIAL_FUNCTION(HGNC:AKT1, HGNC:AKT2)}<br>
     * {@code SEQUENTIAL_FUNCTION(EGID:208, EGID:207)}<br>
     * </p>
     */
    @Test
    public void testSequentialMismatchUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        for (final FunctionEnum f : values()) {
            if (f.isSequential()) {
                EquivalentParameter param1 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT1",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentParameter param2 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT2",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentTerm term1 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param1, (BELObject) param2));

                EquivalentParameter param3 =
                        new EquivalentParameter(
                                egid,
                                "208",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentParameter param4 =
                        new EquivalentParameter(
                                egid,
                                "207",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentTerm term2 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param3, (BELObject) param4));

                assertThat(term1.equals(term2), is(false));
            }
        }
    }

    /**
     * Test unconsecutive argument matches of BEL Terms:
     * <p>
     * {@code NON_SEQUENTIAL_FUNCTION(HGNC:AKT1, HGNC:AKT2)}<br>
     * {@code NON_SEQUENTIAL_FUNCTION(EGID:208, EGID:207)}<br>
     * </p>
     */
    @Test
    public void testUnconsecutiveMatchEquivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        for (final FunctionEnum f : values()) {
            if (!f.isSequential()) {
                EquivalentParameter param1 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT1",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentParameter param2 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT2",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentTerm term1 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param1, (BELObject) param2));

                EquivalentParameter param3 =
                        new EquivalentParameter(
                                egid,
                                "208",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentParameter param4 =
                        new EquivalentParameter(
                                egid,
                                "207",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentTerm term2 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param3, (BELObject) param4));

                assertThat(term1.equals(term2), is(true));
            }
        }
    }

    /**
     * Test mismatched unconsecutive argument of BEL Terms:
     * <p>
     * {@code NON_SEQUENTIAL_FUNCTION(HGNC:AKT1, HGNC:AKT2)}<br>
     * {@code NON_SEQUENTIAL_FUNCTION(EGID:171, EGID:207)}<br>
     * </p>
     */
    @Test
    public void testUnconsecutiveMismatchUnequivalent() {
        final Namespace hgnc =
                new Namespace(
                        "HGNC",
                        "http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns");
        final Namespace egid =
                new Namespace(
                        "EGID",
                        "http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns");

        for (final FunctionEnum f : values()) {
            if (!f.isSequential()) {
                EquivalentParameter param1 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT1",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentParameter param2 =
                        new EquivalentParameter(
                                hgnc,
                                "AKT2",
                                SkinnyUUID
                                        .fromString("9be88c14-6311-4452-a911-9f02abcf6a1e"));
                EquivalentTerm term1 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param1, (BELObject) param2));

                EquivalentParameter param3 =
                        new EquivalentParameter(
                                egid,
                                "171",
                                SkinnyUUID
                                        .fromString("1075d064-35f5-4418-97af-7a168ee54309"));
                EquivalentParameter param4 =
                        new EquivalentParameter(
                                egid,
                                "207",
                                SkinnyUUID
                                        .fromString("a32fd1cb-7d97-44ee-a0d0-db16c2a93b3f"));
                EquivalentTerm term2 = new EquivalentTerm(f, Arrays.asList(
                        (BELObject) param3, (BELObject) param4));

                assertThat(term1.equals(term2), is(false));
            }
        }
    }
}
TOP

Related Classes of org.openbel.framework.core.equivalence.EquivalentTermEqualityTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.