a56e8a0de421583f4c08e06bfbfcd9e2c2a4dd86
[jalview.git] / src / jalview / datamodel / DBRefSource.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.datamodel;
22
23 import java.lang.reflect.Field;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 /**
28  * Defines internal constants for unambiguous annotation of DbRefEntry source
29  * strings and describing the data retrieved from external database sources (see
30  * jalview.ws.DbSourcProxy) <br/>
31  * TODO: replace with ontology to allow recognition of particular attributes
32  * (e.g. protein coding, alignment (ortholog db, paralog db, domain db),
33  * genomic, transcriptomic, 3D structure providing (PDB, MODBASE, etc) ..).
34  * 
35  * @author JimP
36  * 
37  */
38 public class DBRefSource
39 {
40   /**
41    * UNIPROT Accession Number
42    */
43   public static final String UNIPROT = "UNIPROT";
44
45   /**
46    * UNIPROT Entry Name
47    */
48   public static final String UP_NAME = "UNIPROT_NAME".toUpperCase();
49
50   /**
51    * Uniprot Knowledgebase/TrEMBL as served from EMBL protein products.
52    */
53   public static final String UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase();
54
55   public static final String EMBLCDSProduct = "EMBLCDSProtein"
56           .toUpperCase();
57
58   /**
59    * PDB Entry Code
60    */
61   public static final String PDB = "PDB";
62
63   /**
64    * EMBL ID
65    */
66   public static final String EMBL = "EMBL";
67
68   /**
69    * EMBLCDS ID
70    */
71   public static final String EMBLCDS = "EMBLCDS";
72
73   /**
74    * PFAM ID
75    */
76   public static final String PFAM = "PFAM";
77
78   /**
79    * RFAM ID
80    */
81   public static final String RFAM = "RFAM";
82
83   /**
84    * GeneDB ID
85    */
86   public static final String GENEDB = "GeneDB".toUpperCase();
87
88   /**
89    * Ensembl (EnsemblGenomes merged to Ensembl rest services 09.04.2019)
90    */
91   public static final String ENSEMBL = "ENSEMBL";
92
93   /**
94    * List of databases whose sequences might have coding regions annotated
95    */
96   public static final String[] DNACODINGDBS = { EMBL, EMBLCDS, GENEDB,
97       ENSEMBL };
98
99   public static final String[] CODINGDBS = { EMBLCDS, GENEDB, ENSEMBL };
100
101   public static final String[] PROTEINDBS = { UNIPROT, UNIPROTKB,
102       EMBLCDSProduct, ENSEMBL }; // Ensembl ENSP* entries are protein
103
104   public static String[] allSources()
105   {
106     List<String> src = new ArrayList<>();
107     for (Field f : DBRefSource.class.getFields())
108     {
109       if (String.class.equals(f.getType()))
110       {
111         try
112         {
113           src.add((String) f.get(null));
114         } catch (Exception x)
115         {
116           x.printStackTrace();
117         }
118       }
119     }
120     return src.toArray(new String[0]);
121   }
122 }