/************************************************************************* * * * This file is part of the 20n/act project. * * 20n/act enables DNA prediction for synthetic biology/bioengineering. * * Copyright (C) 2017 20n Labs, Inc. * * * * Please direct all queries to act@20n.com. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * * * *************************************************************************/ package act.installer.pubchem; import java.util.HashMap; import java.util.Map; public enum MeshTermType { // Names derived from the MeSH XML data elements page (https://www.nlm.nih.gov/mesh/xml_data_elements.html) // section LexicalTags. // Abbreviation, embedded abbreviation and acronym are self explanatory and describe well what they tag // They will be ignored for web queries ABBREVIATION("ABB"), EMBEDDED_ABBREVIATION("ABX"), ACRONYM("ACR"), // Examples of EPO tagged terms: Thomsen-Friedenreich antigen", "Brompton mixture", // "Andrew's Liver Salt", "Evans Blue", "Schiff Bases", "Giemsa Stain" EPONYM("EPO"), // Lab number: ignore for web queries LAB_NUMBER("LAB"), // Examples of NAM tagged terms: "Benin", "India", "Rome", "Taiwan", "United Nations", "Saturn" // Ignore by all means PROPER_NAME("NAM"), // NON tags the non-classified names, including most of the good ones NONE("NON"), // Trade names are tagged with TRD and seem to be of good quality. TRADE_NAME("TRD"), ; private static final Map<String, MeshTermType> LEXICAL_TAG_TO_TYPE = new HashMap<String, MeshTermType>() {{ for (MeshTermType type : MeshTermType.values()) { put(type.getLexicalTag(), type); } }}; public static MeshTermType getByLexicalTag(String lexicalTag) { return LEXICAL_TAG_TO_TYPE.getOrDefault(lexicalTag, NONE); } String lexicalTag; public String getLexicalTag() { return lexicalTag; } MeshTermType(String lexicalTag) { this.lexicalTag = lexicalTag; } @Override public String toString() { return this.name(); } }