// BridgeDb,
// An abstraction layer for identifier mapping services, both local and online.
// Copyright 2006-2009 BridgeDb developers
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package org.bridgedb.bio;
import java.util.Set;
import org.bridgedb.DataSource;
import org.bridgedb.DataSourcePatterns;
import org.bridgedb.Xref;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
public class BioDataSourceTest
{
boolean eventReceived = false;
@Before
public void setUp()
{
// cause static initializer to run.
BioDataSource.init();
}
@Test
public void testInit()
{
for (DataSource ds : DataSource.getDataSources())
{
assertNotNull(ds);
assertNotNull(ds.getFullName());
// test for all but a test case in testFromUrn()
if (!"blahblahblah".equals(ds.getFullName())) {
assertNotNull(
"Unexpected null system code for " + ds.getFullName(),
ds.getSystemCode()
);
}
}
}
@Test
public void testURN()
{
Xref ref = new Xref ("3643", BioDataSource.ENTREZ_GENE);
Xref ref2 = new Xref ("GO:00001", BioDataSource.GENE_ONTOLOGY);
assertEquals ("urn:miriam:ncbigene:3643", ref.getURN());
assertEquals ("urn:miriam:go:GO%3A00001", ref2.getURN());
}
@Test
public void testSpeciesSpecificEnsembl()
{
assertEquals (BioDataSource.ENSEMBL_COW, BioDataSource.getSpeciesSpecificEnsembl(Organism.BosTaurus));
assertEquals (BioDataSource.ENSEMBL_MOSQUITO, BioDataSource.getSpeciesSpecificEnsembl(Organism.AnophelesGambiae));
}
@Test
public void testBioDataSources()
{
assertEquals (Organism.CaenorhabditisElegans, BioDataSource.WORMBASE.getOrganism());
assertEquals (Organism.GallusGallus, BioDataSource.ENSEMBL_CHICKEN.getOrganism());
assertEquals ("metabolite", BioDataSource.CAS.getType());
}
@Test
public void testNCBITaxonomy() {
assertNotNull(BioDataSource.TAXONOMY_NCBI.getFullName());
assertNotNull(BioDataSource.TAXONOMY_NCBI.getSystemCode());
assertTrue(DataSourcePatterns.getDataSourceMatches("9606").contains(BioDataSource.TAXONOMY_NCBI));
}
@Test
public void testUniprotPatterns()
{
assertTrue (DataSourcePatterns.getDataSourceMatches("Q8JH47").contains(BioDataSource.UNIPROT));
assertTrue (DataSourcePatterns.getDataSourceMatches("F6X8M0").contains(BioDataSource.UNIPROT));
}
@Test
public void testWikiPathwayPatterns()
{
assertTrue (DataSourcePatterns.getDataSourceMatches("WP784").contains(BioDataSource.WIKIPATHWAYS));
assertTrue (DataSourcePatterns.getDataSourceMatches("WP784_r48306").contains(BioDataSource.WIKIPATHWAYS));
}
@Test
public void testPatterns()
{
assertTrue (DataSourcePatterns.getDataSourceMatches("1.1.1.1").contains(BioDataSource.ENZYME_CODE));
assertTrue (DataSourcePatterns.getDataSourceMatches("50-99-7").contains(BioDataSource.CAS));
assertTrue (DataSourcePatterns.getDataSourceMatches("HMDB00122").contains(BioDataSource.HMDB));
assertTrue (DataSourcePatterns.getDataSourceMatches("C00031").contains(BioDataSource.KEGG_COMPOUND));
assertTrue (DataSourcePatterns.getDataSourceMatches("CHEBI:17925").contains(BioDataSource.CHEBI));
}
@Test
public void testBadCASNumbers()
{
assertFalse(DataSourcePatterns.getDataSourceMatches("50-99-77").contains(BioDataSource.CAS));
assertFalse(DataSourcePatterns.getDataSourceMatches("1-99-77").contains(BioDataSource.CAS));
assertFalse(DataSourcePatterns.getDataSourceMatches("50-1-7").contains(BioDataSource.CAS));
assertFalse(DataSourcePatterns.getDataSourceMatches("50-333-7").contains(BioDataSource.CAS));
}
@Test
public void testXMetDB_Regex() {
assertTrue(DataSourcePatterns.getDataSourceMatches("XMETDB175").contains(
DataSource.getBySystemCode("Xm")
));
}
@Test
public void testXMetDB() {
DataSource xmetdb = DataSource.getBySystemCode("Xm");
assertNotNull(xmetdb);
assertEquals("XMetDB", xmetdb.getFullName());
}
@Test
public void testUniprotIDs() {
assertTrue(DataSourcePatterns.getDataSourceMatches("P62158").contains(BioDataSource.UNIPROT));
assertFalse(DataSourcePatterns.getDataSourceMatches("PA2158").contains(BioDataSource.UNIPROT));
assertTrue(DataSourcePatterns.getDataSourceMatches("G4XXL9").contains(BioDataSource.UNIPROT));
assertTrue(DataSourcePatterns.getDataSourceMatches("G4XXL9XXL9").contains(BioDataSource.UNIPROT));
}
@Test
public void testDataSource()
{
DataSource ds = BioDataSource.ENSEMBL;
assertEquals ("Ensembl", ds.getFullName());
assertEquals ("En", ds.getSystemCode());
DataSource ds4 = DataSource.getBySystemCode ("En");
assertEquals (ds, ds4);
DataSource ds5 = DataSource.getByFullName ("Entrez Gene");
assertEquals (BioDataSource.ENTREZ_GENE, ds5);
}
@Test
public void testDataSourceFilter ()
{
// ensembl is primary, affy isn't
Set<DataSource> f1 = DataSource.getFilteredSet(true, null, null);
assertTrue (f1.contains(BioDataSource.ENSEMBL_HUMAN));
assertTrue (f1.contains(BioDataSource.HMDB));
assertFalse (f1.contains(BioDataSource.AFFY));
// wormbase is specific for Ce.
Set<DataSource> f2 = DataSource.getFilteredSet(null, null, Organism.CaenorhabditisElegans);
assertTrue (f2.contains(BioDataSource.ENSEMBL_CELEGANS));
assertTrue (f2.contains(BioDataSource.WORMBASE));
assertFalse (f2.contains(BioDataSource.ZFIN));
// metabolites
Set<DataSource> f3 = DataSource.getFilteredSet(null, true, null);
assertTrue (f3.contains(BioDataSource.HMDB));
assertFalse (f3.contains(BioDataSource.WORMBASE));
assertFalse (f3.contains(BioDataSource.ENSEMBL_HUMAN));
// non-metabolites
Set<DataSource> f4 = DataSource.getFilteredSet(null, false, null);
assertTrue (f4.contains(BioDataSource.ENSEMBL_HUMAN));
assertTrue (f4.contains(BioDataSource.WORMBASE));
assertFalse (f4.contains(BioDataSource.HMDB));
}
@Test
public void testAlias()
{
DataSource ds = DataSource.getByAlias("ensembl_gene_id");
assertSame(BioDataSource.ENSEMBL, ds);
}
@Test
public void testFromUrn()
{
Xref ref = Xref.fromUrn("urn:miriam:ncbigene:3643");
assertEquals (BioDataSource.ENTREZ_GENE, ref.getDataSource());
assertEquals ("3643", ref.getId());
ref = Xref.fromUrn("urn:miriam:blahblahblah:abc");
assertEquals (DataSource.getByFullName("blahblahblah"), ref.getDataSource());
ref = Xref.fromUrn("blahblahblha");
assertNull (ref);
ref = Xref.fromUrn("urn:miriam:go:GO%3A00001234");
assertEquals (BioDataSource.GENE_ONTOLOGY, ref.getDataSource());
assertEquals ("GO:00001234", ref.getId());
}
}