JAL-1967 JAL-1479 refactored sequence<->structure mapping implementation
[jalview.git] / src / jalview / api / SiftsClientI.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.api;
22
23 import jalview.datamodel.SequenceI;
24 import jalview.structure.StructureMapping;
25 import jalview.ws.sifts.MappingOutputPojo;
26 import jalview.ws.sifts.SiftsException;
27 import jalview.xml.binding.sifts.Entry.Entity;
28
29 import java.util.HashMap;
30 import java.util.HashSet;
31
32 public interface SiftsClientI
33 {
34   /**
35    * Get the DB Accession Id for the SIFTs Entry
36    * 
37    * @return
38    */
39   public String getDbAccessionId();
40
41   /**
42    * Get DB Coordinate system for the SIFTs Entry
43    * 
44    * @return
45    */
46   public String getDbCoordSys();
47
48   /**
49    * Get DB Evidence for the SIFTs Entry
50    * 
51    * @return
52    */
53   public String getDbEvidence();
54
55   /**
56    * Get DB Source for the SIFTs Entry
57    * 
58    * @return
59    */
60   public String getDbSource();
61
62   /**
63    * Get DB version for the SIFTs Entry
64    * 
65    * @return
66    */
67   public String getDbVersion();
68
69   /**
70    * Get Number of Entities available in the SIFTs Entry
71    * 
72    * @return
73    */
74   public int getEntityCount();
75
76   /**
77    * Get a unique Entity by its Id
78    * 
79    * @param id
80    *          ID of the entity to fetch
81    * @return Entity
82    * @throws Exception
83    */
84   public Entity getEntityById(String id) throws SiftsException;
85
86   /**
87    * Get all accession Ids available in the current SIFTs entry
88    * 
89    * @return a unique set of discovered accession strings
90    */
91   public HashSet<String> getAllMappingAccession();
92
93   /**
94    * Check if the accessionId is available in current SIFTs Entry
95    * 
96    * @param accessionId
97    * @return
98    */
99   public boolean isAccessionMatched(String accessionId);
100
101   /**
102    * Get the standard DB referenced by the SIFTs Entry
103    * 
104    * @return
105    */
106   public String[] getEntryDBs();
107
108   /**
109    * 
110    * @param mop
111    *          MappingOutputPojo
112    * @return Sequence<->Structure mapping as int[][]
113    * @throws SiftsException
114    */
115   public StringBuffer getMappingOutput(MappingOutputPojo mop)
116           throws SiftsException;
117
118   /**
119    * 
120    * @param seq
121    *          sequence to generate mapping against the structure
122    * @param pdbFile
123    *          PDB file for the mapping
124    * @param chain
125    *          the chain of the entry to use for mapping
126    * @return StructureMapping
127    * @throws SiftsException
128    */
129   public StructureMapping getSiftsStructureMapping(SequenceI seq,
130           String pdbFile, String chain) throws SiftsException;
131   
132   /**
133    * Get residue by residue mapping for a given Sequence and SIFTs entity
134    * 
135    * @param entityId
136    *          Id of the target entity in the SIFTs entry
137    * @param seq
138    *          SequenceI
139    * @return generated mapping
140    * @throws Exception
141    */
142   public HashMap<Integer, int[]> getGreedyMapping(String entityId,
143           SequenceI seq,
144           java.io.PrintStream os) throws SiftsException;
145 }