inprogress
[jalview.git] / forester / java / src / org / forester / ws / seqdb / UniProtTaxonomy.java
index 0884a6f..c379607 100644 (file)
@@ -21,7 +21,7 @@
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 //
 // Contact: phylosoft @ gmail . com
-// WWW: www.phylosoft.org/forester
+// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
 
 package org.forester.ws.seqdb;
 
@@ -32,46 +32,19 @@ import org.forester.util.ForesterUtil;
 
 public final class UniProtTaxonomy {
 
-    private static final String         ARCHAEA                  = "Archaea";
-    private static final String         BACTERIA                 = "Bacteria";
-    private static final String         EUKARYOTA                = "Eukaryota";
-    private final List<String>          _lineage;
-    private final String                _code;
-    private final String                _scientific_name;
-    private final String                _common_name;
-    private final String                _synonym;
-    private final String                _rank;
-    private final String                _id;
-    public final static String          CELLULAR_ORGANISMS       = "cellular organisms";
-    public final static String          VIRUSES                  = "Viruses";
-    public final static UniProtTaxonomy DROSOPHILA_GENUS         = new UniProtTaxonomy( new String[] {
-            CELLULAR_ORGANISMS, EUKARYOTA, "Metazoa", "Ecdysozoa", "Arthropoda", "Hexapoda", "Insecta", "Pterygota",
-            "Neoptera", "Endopterygota", "Diptera", "Brachycera", "Muscomorpha", "Ephydroidea", "Drosophilidae",
-            "Drosophila"                                                               },
-                                                                                        "",
-                                                                                        "fruit flies",
-                                                                                        "Drosophila",
-                                                                                        "",
-                                                                                        "genus",
-                                                                                        "7215" );
-    public final static UniProtTaxonomy XENOPUS_GENUS            = new UniProtTaxonomy( new String[] {
-            CELLULAR_ORGANISMS, EUKARYOTA, "Metazoa", "Chordata", "Craniata", "Vertebrata", "Euteleostomi", "Amphibia",
-            "Batrachia", "Anura", "Mesobatrachia", "Pipoidea", "Pipidae", "Xenopodinae", "Xenopus" },
-                                                                                        "",
-                                                                                        "",
-                                                                                        "Xenopus",
-                                                                                        "",
-                                                                                        "genus",
-                                                                                        "8353" );
-    public final static UniProtTaxonomy CAPITELLA_TELATA_SPECIES = new UniProtTaxonomy( new String[] {
-            CELLULAR_ORGANISMS, EUKARYOTA, "Metazoa", "Annelida", "Polychaeta", "Scolecida", "Capitellida",
-            "Capitellidae", "Capitella", "Capitella teleta"                            },
-                                                                                        "",
-                                                                                        "",
-                                                                                        "Capitella teleta",
-                                                                                        "Capitella sp. I",
-                                                                                        "species",
-                                                                                        "283909" );
+    public static final String ARCHAEA            = "Archaea";
+    public static final String BACTERIA           = "Bacteria";
+    public static final String EUKARYOTA          = "Eukaryota";
+    private final List<String> _lineage;
+    private final String       _code;
+    private final String       _scientific_name;
+    private final String       _common_name;
+    private final String       _synonym;
+    private final String       _rank;
+    private final String       _id;
+    public final static String CELLULAR_ORGANISMS = "cellular organisms";
+    public final static String VIRUSES            = "Viruses";
+    public static final String X                  = "x";
 
     public UniProtTaxonomy( final String line ) {
         final String[] items = line.split( "\t" );
@@ -135,31 +108,9 @@ public final class UniProtTaxonomy {
         _synonym = synonym;
         _rank = rank;
         _id = id;
-        if ( ( _lineage != null ) && !_lineage.get( _lineage.size() - 1 ).equalsIgnoreCase( _scientific_name ) ) {
-            _lineage.add( _scientific_name );
-        }
-    }
-
-    public UniProtTaxonomy( final String[] lineage,
-                            final String code,
-                            final String common_name,
-                            final String scientific_name,
-                            final String synonym,
-                            final String rank,
-                            final String id ) {
-        _lineage = new ArrayList<String>();
-        if ( lineage != null ) {
-            for( final String l : lineage ) {
-                _lineage.add( l );
-            }
-        }
-        _code = code;
-        _scientific_name = scientific_name;
-        _common_name = common_name;
-        _synonym = synonym;
-        _rank = rank;
-        _id = id;
-        if ( ( _lineage != null ) && !_lineage.get( _lineage.size() - 1 ).equalsIgnoreCase( _scientific_name ) ) {
+        if ( ( ( _lineage != null ) && _lineage.isEmpty() )
+                || ( ( !ForesterUtil.isEmpty( _lineage ) ) && !_lineage.get( _lineage.size() - 1 )
+                        .equalsIgnoreCase( _scientific_name ) ) ) {
             _lineage.add( _scientific_name );
         }
     }
@@ -206,4 +157,44 @@ public final class UniProtTaxonomy {
     public String getSynonym() {
         return _synonym;
     }
+
+    public final static UniProtTaxonomy createSpecialFromScientificName( final String sn ) {
+        final List<String> lineage = new ArrayList<String>();
+        final String code = "";
+        final String common_name = "";
+        String scientific_name = "";
+        final String synonym = "";
+        String rank = "";
+        String id = "";
+        if ( sn.equalsIgnoreCase( BACTERIA ) ) {
+            scientific_name = BACTERIA;
+            lineage.add( "cellular organisms" );
+            rank = "superkingdom";
+            id = "2";
+        }
+        else if ( sn.equalsIgnoreCase( ARCHAEA ) ) {
+            scientific_name = ARCHAEA;
+            lineage.add( "cellular organisms" );
+            rank = "superkingdom";
+            id = "2157";
+        }
+        else if ( sn.equalsIgnoreCase( EUKARYOTA ) ) {
+            scientific_name = EUKARYOTA;
+            lineage.add( "cellular organisms" );
+            rank = "superkingdom";
+            id = "2759";
+        }
+        else if ( sn.equalsIgnoreCase( VIRUSES ) ) {
+            scientific_name = VIRUSES;
+            rank = "superkingdom";
+            id = "10239";
+        }
+        else if ( sn.equalsIgnoreCase( X ) ) {
+            scientific_name = X;
+        }
+        else {
+            throw new IllegalArgumentException( "illegal attempt to make UniProt taxonomy for :" + sn );
+        }
+        return new UniProtTaxonomy( lineage, code, common_name, scientific_name, synonym, rank, id );
+    }
 }