git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'develop' into features/JAL-2393customMatrices
[jalview.git]
/
src
/
jalview
/
ws
/
sifts
/
SiftsClient.java
diff --git
a/src/jalview/ws/sifts/SiftsClient.java
b/src/jalview/ws/sifts/SiftsClient.java
index
fb59071
..
0e9e888
100644
(file)
--- a/
src/jalview/ws/sifts/SiftsClient.java
+++ b/
src/jalview/ws/sifts/SiftsClient.java
@@
-21,6
+21,8
@@
package jalview.ws.sifts;
import jalview.analysis.AlignSeq;
package jalview.ws.sifts;
import jalview.analysis.AlignSeq;
+import jalview.analysis.scoremodels.ScoreMatrix;
+import jalview.analysis.scoremodels.ScoreModels;
import jalview.api.DBRefEntryI;
import jalview.api.SiftsClientI;
import jalview.datamodel.DBRefEntry;
import jalview.api.DBRefEntryI;
import jalview.api.SiftsClientI;
import jalview.datamodel.DBRefEntry;
@@
-29,6
+31,7
@@
import jalview.datamodel.SequenceI;
import jalview.io.StructureFile;
import jalview.schemes.ResidueProperties;
import jalview.structure.StructureMapping;
import jalview.io.StructureFile;
import jalview.schemes.ResidueProperties;
import jalview.structure.StructureMapping;
+import jalview.util.Comparison;
import jalview.util.DBRefUtils;
import jalview.util.Format;
import jalview.xml.binding.sifts.Entry;
import jalview.util.DBRefUtils;
import jalview.util.Format;
import jalview.xml.binding.sifts.Entry;
@@
-73,6
+76,12
@@
import MCview.PDBChain;
public class SiftsClient implements SiftsClientI
{
public class SiftsClient implements SiftsClientI
{
+ /*
+ * for use in mocking out file fetch for tests only
+ * - reset to null after testing!
+ */
+ private static File mockSiftsFile;
+
private Entry siftsEntry;
private StructureFile pdb;
private Entry siftsEntry;
private StructureFile pdb;
@@
-186,6
+195,14
@@
public class SiftsClient implements SiftsClientI
*/
public static File getSiftsFile(String pdbId) throws SiftsException
{
*/
public static File getSiftsFile(String pdbId) throws SiftsException
{
+ /*
+ * return mocked file if it has been set
+ */
+ if (mockSiftsFile != null)
+ {
+ return mockSiftsFile;
+ }
+
String siftsFileName = SiftsSettings.getSiftDownloadDirectory()
+ pdbId.toLowerCase() + ".xml.gz";
File siftsFile = new File(siftsFileName);
String siftsFileName = SiftsSettings.getSiftDownloadDirectory()
+ pdbId.toLowerCase() + ".xml.gz";
File siftsFile = new File(siftsFileName);
@@
-211,6
+228,10
@@
public class SiftsClient implements SiftsClientI
return new File(siftsFileName);
}
}
return new File(siftsFileName);
}
}
+ else
+ {
+ return siftsFile;
+ }
}
try
{
}
try
{
@@
-276,6
+297,7
@@
public class SiftsClient implements SiftsClientI
siftsDownloadDir.mkdirs();
}
// System.out.println(">> Download ftp url : " + siftsFileFTPURL);
siftsDownloadDir.mkdirs();
}
// System.out.println(">> Download ftp url : " + siftsFileFTPURL);
+ // long now = System.currentTimeMillis();
URL url = new URL(siftsFileFTPURL);
URLConnection conn = url.openConnection();
InputStream inputStream = conn.getInputStream();
URL url = new URL(siftsFileFTPURL);
URLConnection conn = url.openConnection();
InputStream inputStream = conn.getInputStream();
@@
-289,7
+311,8
@@
public class SiftsClient implements SiftsClientI
}
outputStream.close();
inputStream.close();
}
outputStream.close();
inputStream.close();
- // System.out.println(">>> File downloaded : " + downloadedSiftsFile);
+// System.out.println(">>> File downloaded : " + downloadedSiftsFile
+// + " took " + (System.currentTimeMillis() - now) + "ms");
return new File(downloadedSiftsFile);
}
return new File(downloadedSiftsFile);
}
@@
-390,8
+413,8
@@
public class SiftsClient implements SiftsClientI
String pdbFile, String chain) throws SiftsException
{
structId = (chain == null) ? pdbId : pdbId + "|" + chain;
String pdbFile, String chain) throws SiftsException
{
structId = (chain == null) ? pdbId : pdbId + "|" + chain;
- System.out.println("Getting mapping for: " + pdbId + "|" + chain
- + " : seq- " + seq.getName());
+ System.out.println("Getting SIFTS mapping for " + structId + ": seq "
+ + seq.getName());
final StringBuilder mappingDetails = new StringBuilder(128);
PrintStream ps = new PrintStream(System.out)
final StringBuilder mappingDetails = new StringBuilder(128);
PrintStream ps = new PrintStream(System.out)
@@
-470,12
+493,13
@@
public class SiftsClient implements SiftsClientI
int pdbStart = UNASSIGNED;
int pdbEnd = UNASSIGNED;
int pdbStart = UNASSIGNED;
int pdbEnd = UNASSIGNED;
- Integer[] keys = mapping.keySet().toArray(new Integer[0]);
- Arrays.sort(keys);
- if (keys.length < 1)
+ if (mapping.isEmpty())
{
{
- throw new SiftsException(">>> Empty SIFTS mapping generated!!");
+ throw new SiftsException("SIFTS mapping failed");
}
}
+
+ Integer[] keys = mapping.keySet().toArray(new Integer[0]);
+ Arrays.sort(keys);
seqStart = keys[0];
seqEnd = keys[keys.length - 1];
seqStart = keys[0];
seqEnd = keys[keys.length - 1];
@@
-509,13
+533,13
@@
public class SiftsClient implements SiftsClientI
if (os != null)
{
MappingOutputPojo mop = new MappingOutputPojo();
if (os != null)
{
MappingOutputPojo mop = new MappingOutputPojo();
- mop.setSeqStart(pdbStart);
- mop.setSeqEnd(pdbEnd);
+ mop.setSeqStart(seqStart);
+ mop.setSeqEnd(seqEnd);
mop.setSeqName(seq.getName());
mop.setSeqResidue(matchedSeq);
mop.setSeqName(seq.getName());
mop.setSeqResidue(matchedSeq);
- mop.setStrStart(seqStart);
- mop.setStrEnd(seqEnd);
+ mop.setStrStart(pdbStart);
+ mop.setStrEnd(pdbEnd);
mop.setStrName(structId);
mop.setStrResidue(targetStrucSeqs.toString());
mop.setStrName(structId);
mop.setStrResidue(targetStrucSeqs.toString());
@@
-585,8
+609,12
@@
public class SiftsClient implements SiftsClientI
.getDbResNum());
} catch (NumberFormatException nfe)
{
.getDbResNum());
} catch (NumberFormatException nfe)
{
- resNum = (pdbRefDb == null) ? Integer.valueOf(residue
- .getDbResNum()) : Integer.valueOf(pdbRefDb
+ if (pdbRefDb == null || pdbRefDb.getDbResNum().equals("null"))
+ {
+ resNum = UNASSIGNED;
+ continue;
+ }
+ resNum = Integer.valueOf(pdbRefDb
.getDbResNum().split("[a-zA-Z]")[0]);
continue;
}
.getDbResNum().split("[a-zA-Z]")[0]);
continue;
}
@@
-825,6
+853,10
@@
public class SiftsClient implements SiftsClientI
if (sPojo[0].entityId != null)
{
if (sPojo[0].entityId != null)
{
+ if (sPojo[0].pid < 1)
+ {
+ return null;
+ }
for (Entity entity : entities)
{
if (!entity.getEntityId().equalsIgnoreCase(sPojo[0].entityId))
for (Entity entity : entities)
{
if (!entity.getEntityId().equalsIgnoreCase(sPojo[0].entityId))
@@
-931,7
+963,7
@@
public class SiftsClient implements SiftsClientI
}
@Override
}
@Override
- public StringBuffer getMappingOutput(MappingOutputPojo mp)
+ public StringBuilder getMappingOutput(MappingOutputPojo mp)
throws SiftsException
{
String seqRes = mp.getSeqResidue();
throws SiftsException
{
String seqRes = mp.getSeqResidue();
@@
-953,7
+985,7
@@
public class SiftsClient implements SiftsClientI
int nochunks = ((seqRes.length()) / len)
+ ((seqRes.length()) % len > 0 ? 1 : 0);
// output mappings
int nochunks = ((seqRes.length()) / len)
+ ((seqRes.length()) % len > 0 ? 1 : 0);
// output mappings
- StringBuffer output = new StringBuffer();
+ StringBuilder output = new StringBuilder(512);
output.append(NEWLINE);
output.append("Sequence \u27f7 Structure mapping details").append(
NEWLINE);
output.append(NEWLINE);
output.append("Sequence \u27f7 Structure mapping details").append(
NEWLINE);
@@
-974,6
+1006,7
@@
public class SiftsClient implements SiftsClientI
output.append(String.valueOf(pdbEnd));
output.append(NEWLINE).append(NEWLINE);
output.append(String.valueOf(pdbEnd));
output.append(NEWLINE).append(NEWLINE);
+ ScoreMatrix pam250 = ScoreModels.getInstance().getPam250();
int matchedSeqCount = 0;
for (int j = 0; j < nochunks; j++)
{
int matchedSeqCount = 0;
for (int j = 0; j < nochunks; j++)
{
@@
-992,25
+1025,29
@@
public class SiftsClient implements SiftsClientI
output.append(NEWLINE);
output.append(new Format("%" + (maxid) + "s").form(" ")).append(" ");
output.append(NEWLINE);
output.append(new Format("%" + (maxid) + "s").form(" ")).append(" ");
- // Print out the matching chars
+ /*
+ * Print out the match symbols:
+ * | for exact match (ignoring case)
+ * . if PAM250 score is positive
+ * else a space
+ */
for (int i = 0; i < len; i++)
{
try
{
if ((i + (j * len)) < seqRes.length())
{
for (int i = 0; i < len; i++)
{
try
{
if ((i + (j * len)) < seqRes.length())
{
- if (seqRes.charAt(i + (j * len)) == strRes
- .charAt(i + (j * len))
- && !jalview.util.Comparison.isGap(seqRes.charAt(i
- + (j * len))))
+ char c1 = seqRes.charAt(i + (j * len));
+ char c2 = strRes.charAt(i + (j * len));
+ boolean sameChar = Comparison.isSameResidue(c1, c2, false);
+ if (sameChar && !Comparison.isGap(c1))
{
matchedSeqCount++;
output.append("|");
}
else if (type.equals("pep"))
{
{
matchedSeqCount++;
output.append("|");
}
else if (type.equals("pep"))
{
- if (ResidueProperties.getPAM250(seqRes.charAt(i + (j * len)),
- strRes.charAt(i + (j * len))) > 0)
+ if (pam250.getPairwiseScore(c1, c2) > 0)
{
output.append(".");
}
{
output.append(".");
}
@@
-1083,4
+1120,9
@@
public class SiftsClient implements SiftsClientI
return siftsEntry.getDbVersion();
}
return siftsEntry.getDbVersion();
}
+ public static void setMockSiftsFile(File file)
+ {
+ mockSiftsFile = file;
+ }
+
}
}