/* * Concept profile generation tool suite * Copyright (C) 2015 Biosemantics Group, Erasmus University Medical Center, * Rotterdam, The Netherlands * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/> */ package org.erasmusmc.ontology.ontologyConstructors; import java.util.Iterator; import java.util.List; import org.erasmusmc.ids.DatabaseID; import org.erasmusmc.ontology.Concept; import org.erasmusmc.ontology.DefaultTypes; import org.erasmusmc.ontology.OntologyPSFLoader; import org.erasmusmc.ontology.OntologyStore; import org.erasmusmc.ontology.Relation; import org.erasmusmc.ontology.ontologyutilities.GeneTermVariantGenerator; import org.erasmusmc.ontology.ontologyutilities.OntologyCurator; public class OCGenelistEColi { public static void main(String[] args){ OntologyStore ontology = constructOntology(); OntologyStore newOntology = new OntologyStore(); Iterator<Concept> iterator = ontology.getConceptIterator(); Concept voc = new Concept(-1000); voc.setName("GENE"); Concept semType = new Concept(-116); semType.setName("Amino Acid, Peptide, or Protein"); newOntology.setConcept(voc); newOntology.setConcept(semType); int id = 2500000; while (iterator.hasNext()){ Concept concept = iterator.next(); if (concept.getID() >= 0 ){ Concept newConcept = new Concept(id++); newConcept.setDefinition(concept.getDefinition()); newConcept.setTerms(concept.getTerms()); newOntology.setConcept(newConcept); List<DatabaseID> databaseIDs = ontology.getDatabaseIDsForConcept(concept.getID()); for (DatabaseID databaseID : databaseIDs) newOntology.setDatabaseIDForConcept(newConcept.getID(), databaseID); Relation isofSemType = new Relation(newConcept.getID(), DefaultTypes.isOfSemanticType, semType.getID()); newOntology.setRelation(isofSemType); Relation isofVoc = new Relation(newConcept.getID(), DefaultTypes.fromVocabulary, voc.getID()); newOntology.setRelation(isofVoc); } } OntologyPSFLoader loader = new OntologyPSFLoader(); loader.ontology = newOntology; loader.saveToPSF("/home/schuemie/leiden/ecoli/ecoliCurated.psf"); } public static OntologyStore constructOntology(){ //String psfFile = "/home/public/thesauri/GenesNonHuman/SGD_june2007.psf"; String psfFile = "/home/schuemie/Leiden/ecoli/ecoli.psf"; System.out.println("Loading thesaurus"); OntologyPSFLoader loader = new OntologyPSFLoader(); loader.loadDefinitions = true; loader.loadFromPSF(psfFile); System.out.println("Preparing thesaurus"); GeneTermVariantGenerator.generateVariants(loader.ontology); OntologyCurator curator = new OntologyCurator("/home/schuemie/leiden/ecoli/EColiCurationFile.txt"); curator.curateAndPrepare(loader.ontology); loader.ontology.setName("EColi"); return loader.ontology; } }