package com.compomics.util.experiment.biology.genes.ensembl; import com.compomics.util.experiment.biology.taxonomy.mappings.EnsemblGenomesSpecies.EnsemblGenomeDivision; /** * Class for the handling of Ensembl versions. * * @author Marc Vaudel * @author Harald Barsnes */ public class EnsemblVersion { /** * Returns the current Ensembl version number. Null if not found. * * @param ensemblGenomeDivision the Ensembl genome division, null if not * Ensembl genome * * @return the current Ensembl version number */ public static Integer getCurrentEnsemblVersion(EnsemblGenomeDivision ensemblGenomeDivision) { // @TODO: find a less hard coded way of finding the current ensembl versions!!! if (ensemblGenomeDivision != null) { return 34; } else { return 87; } // the code below used to work but is not always updated when new ensembl versions are released // if (ensemblVersions == null) { // ensemblVersions = new HashMap<String, Integer>(); // } // if (!ensemblVersions.containsKey(ensemblType)) { // // try { // // get the current Ensembl version // URL url = new URL("http://www.biomart.org/biomart/martservice?type=registry"); // // BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); // // String inputLine; // boolean ensemblVersionFound = false; // String ensemblVersionAsText = "?"; // // while ((inputLine = in.readLine()) != null && !ensemblVersionFound) { // if (inputLine.indexOf("database=\"" + ensemblType + "_mart_") != -1) { // ensemblVersionAsText = inputLine.substring(inputLine.indexOf("database=\"" + ensemblType + "_mart_") + ("database=\"" + ensemblType + "_mart_").length()); // ensemblVersionAsText = ensemblVersionAsText.substring(0, ensemblVersionAsText.indexOf("\"")); // ensemblVersionFound = true; // } // } // // in.close(); // // if (ensemblVersionFound) { // try { // Integer ensemblVersion = new Integer(ensemblVersionAsText); // ensemblVersions.put(ensemblType, ensemblVersion); // } catch (NumberFormatException e) { // e.printStackTrace(); // } // } // } catch (IOException e) { // e.printStackTrace(); // } // } // // return ensemblVersions.get(ensemblType); } /** * Returns the name of the Ensembl schema for BioMart queries. * * @param ensemblGenomeDivision the Ensembl genome division * * @return the name of the Ensembl schema for BioMart queries */ public static String getEnsemblSchemaName(EnsemblGenomeDivision ensemblGenomeDivision) { if (ensemblGenomeDivision == null) { return "default"; } switch (ensemblGenomeDivision) { // case fungi: // return "fungi_mart_" + getCurrentEnsemblVersion(ensemblGenomeDivision); // case plants: // return "plants_mart_" + getCurrentEnsemblVersion(ensemblGenomeDivision); // case protists: // return "protists_mart_" + getCurrentEnsemblVersion(ensemblGenomeDivision); // case metazoa: // return "metazoa_mart_" + getCurrentEnsemblVersion(ensemblGenomeDivision); case fungi: return "fungi_mart"; case plants: return "plants_mart"; case protists: return "protists_mart"; case metazoa: return "metazoa_mart"; default: return "default"; } } }