Clover icon

Coverage Report

  1. Project Clover database Wed Nov 13 2024 16:21:17 GMT
  2. Package jalview.fts.service.alphafold

File AlphafoldRestClient.java

 

Coverage histogram

../../../../img/srcFileCovDistChart0.png
59% of files have more coverage

Code metrics

16
44
6
1
177
127
17
0.39
7.33
6
2.83

Classes

Class Line # Actions
AlphafoldRestClient 40 44 17
0.00%
 

Contributing tests

No tests hitting this source file were found.

Source view

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.fts.service.alphafold;
22   
23    import java.net.URL;
24    import java.util.ArrayList;
25    import java.util.Collection;
26    import java.util.List;
27    import java.util.Objects;
28   
29    import jalview.bin.Console;
30    import jalview.datamodel.DBRefEntry;
31    import jalview.datamodel.DBRefSource;
32    import jalview.datamodel.SequenceI;
33    import jalview.fts.api.FTSData;
34    import jalview.fts.api.FTSDataColumnI;
35    import jalview.fts.core.FTSRestRequest;
36    import jalview.util.DBRefUtils;
37    import jalview.util.HttpUtils;
38    import jalview.ws.dbsources.EBIAlfaFold;
39   
 
40    public class AlphafoldRestClient
41    {
42   
43    /**
44    * turns a uniprot ID into a fake alphafold entry for the structure chooser -
45    * fakes PDB fields in response
46    *
47    * @param UniprotID
48    * @return null or an FTS Record (if alphafold thinks it has a structure)
49    */
 
50  0 toggle public static List<FTSData> getFTSData(// Map<String, Object> pdbJsonDoc,
51    FTSRestRequest request)
52    {
53  0 List<FTSData> records = new ArrayList<FTSData>();
54  0 String primaryKey = null;
55   
56  0 Object[] summaryRowData;
57   
58  0 SequenceI associatedSequence;
59   
60  0 Collection<FTSDataColumnI> diplayFields = request.getWantedFields();
61  0 SequenceI associatedSeq = request.getAssociatedSequence();
62   
63  0 for (DBRefEntry upref : DBRefUtils
64    .selectRefs(associatedSeq.getPrimaryDBRefs(), new String[]
65    { DBRefSource.UNIPROT }))
66    {
67  0 String alphaFoldId = "AF-" + upref.getAccessionId() + "-F1";
68  0 try
69    {
70  0 String urls = EBIAlfaFold.getAlphaFoldCifDownloadUrl(alphaFoldId,
71    null);
72  0 URL url = new URL(urls);
73  0 if (!HttpUtils.checkUrlAvailable(url, 50))
74    {
75  0 continue;
76    }
77    } catch (Exception mfe)
78    {
79  0 Console.debug("Exception accessing urls", mfe);
80  0 continue;
81    }
82  0 int colCounter = 0;
83  0 summaryRowData = new Object[(associatedSeq != null)
84    ? diplayFields.size() + 1
85    : diplayFields.size()];
86  0 if (associatedSeq != null)
87    {
88  0 associatedSequence = associatedSeq;
89  0 summaryRowData[0] = associatedSequence;
90  0 colCounter = 1;
91    }
92   
93  0 for (FTSDataColumnI field : diplayFields)
94    {
95  0 String fieldData = "alphafold";// (pdbJsonDoc.get(field.getCode()) ==
96    // null) ? ""
97    // : pdbJsonDoc.get(field.getCode()).toString();
98  0 if (field.isPrimaryKeyColumn())
99    {
100  0 primaryKey = alphaFoldId;
101  0 summaryRowData[colCounter++] = alphaFoldId;
102    }
103  0 else if (fieldData == null || fieldData.isEmpty())
104    {
105  0 summaryRowData[colCounter++] = null;
106    }
107    else
108    {
109  0 try
110    {
111  0 summaryRowData[colCounter++] = (field.getDataType()
112    .getDataTypeClass() == Integer.class)
113    ? 1
114  0 : (field.getDataType()
115    .getDataTypeClass() == Double.class)
116    ? 1.3131313
117    : "AlphaFold clarity";
118    } catch (Exception e)
119    {
120  0 e.printStackTrace();
121  0 jalview.bin.Console.outPrintln("offending value:" + fieldData);
122    }
123    }
124    }
125   
126  0 final String primaryKey1 = primaryKey;
127   
128  0 final Object[] summaryRowData1 = summaryRowData;
129  0 records.add(new FTSData()
130    {
 
131  0 toggle @Override
132    public Object[] getSummaryData()
133    {
134  0 return summaryRowData1;
135    }
136   
 
137  0 toggle @Override
138    public Object getPrimaryKey()
139    {
140  0 return primaryKey1;
141    }
142   
143    /**
144    * Returns a string representation of this object;
145    */
 
146  0 toggle @Override
147    public String toString()
148    {
149  0 StringBuilder summaryFieldValues = new StringBuilder();
150  0 for (Object summaryField : summaryRowData1)
151    {
152  0 summaryFieldValues.append(
153  0 summaryField == null ? " " : summaryField.toString())
154    .append("\t");
155    }
156  0 return summaryFieldValues.toString();
157    }
158   
159    /**
160    * Returns hash code value for this object
161    */
 
162  0 toggle @Override
163    public int hashCode()
164    {
165  0 return Objects.hash(primaryKey1, this.toString());
166    }
167   
 
168  0 toggle @Override
169    public boolean equals(Object that)
170    {
171  0 return this.toString().equals(that.toString());
172    }
173    });
174    }
175  0 return records;
176    }
177    }