X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fsifts%2FSiftsClient.java;h=53a2b8c9c20a3ff8fa1c1f75223c2b7a3693f59e;hb=c51dbe7933683b64548f5353e67561d2b5e377f7;hp=847377d5f0c9f78d0e886856ddfe5320e8d74a32;hpb=76c239505d13a123cc83621623aaca16e47ddb12;p=jalview.git diff --git a/src/jalview/ws/sifts/SiftsClient.java b/src/jalview/ws/sifts/SiftsClient.java index 847377d..53a2b8c 100644 --- a/src/jalview/ws/sifts/SiftsClient.java +++ b/src/jalview/ws/sifts/SiftsClient.java @@ -31,6 +31,7 @@ import jalview.datamodel.SequenceI; import jalview.io.StructureFile; import jalview.schemes.ResidueProperties; import jalview.structure.StructureMapping; +import jalview.structures.models.MappingOutputModel; import jalview.util.Comparison; import jalview.util.DBRefUtils; import jalview.util.Format; @@ -82,9 +83,13 @@ public class SiftsClient implements SiftsClientI */ private static File mockSiftsFile; + private static final int UNASSIGNED = StructureMapping.UNASSIGNED; // -1 + + private static final int PDB_RES_POS = StructureMapping.PDB_RES_NUM_INDEX; // 0 + private Entry siftsEntry; - private StructureFile pdb; + private StructureFile structureFile; private String pdbId; @@ -94,10 +99,6 @@ public class SiftsClient implements SiftsClientI private static final int BUFFER_SIZE = 4096; - public static final int UNASSIGNED = -1; - - private static final int PDB_RES_POS = 0; - private static final int PDB_ATOM_POS = 1; private static final String NOT_OBSERVED = "Not_Observed"; @@ -150,10 +151,10 @@ public class SiftsClient implements SiftsClientI * @param pdbId * @throws SiftsException */ - public SiftsClient(StructureFile pdb) throws SiftsException + public SiftsClient(StructureFile structureFile) throws SiftsException { - this.pdb = pdb; - this.pdbId = pdb.getId(); + this.structureFile = structureFile; + this.pdbId = structureFile.getId(); File siftsFile = getSiftsFile(pdbId); siftsEntry = parseSIFTs(siftsFile); } @@ -532,7 +533,7 @@ public class SiftsClient implements SiftsClientI if (os != null) { - MappingOutputPojo mop = new MappingOutputPojo(); + MappingOutputModel mop = new MappingOutputModel(); mop.setSeqStart(seqStart); mop.setSeqEnd(seqEnd); mop.setSeqName(seq.getName()); @@ -577,18 +578,8 @@ public class SiftsClient implements SiftsClientI .equalsIgnoreCase(seqCoordSys.getName()) && isAccessionMatched(cRefDb.getDbAccessionId())) { - String resNumIndexString = cRefDb.getDbResNum() - .equalsIgnoreCase("None") ? String.valueOf(UNASSIGNED) - : cRefDb.getDbResNum(); - try - { - currSeqIndex = Integer.valueOf(resNumIndexString); - } catch (NumberFormatException nfe) - { - currSeqIndex = Integer.valueOf(resNumIndexString - .split("[a-zA-Z]")[0]); - continue; - } + currSeqIndex = getLeadingIntegerValue( + cRefDb.getDbResNum(), UNASSIGNED); if (pdbRefDb != null) { break;// exit loop if pdb and uniprot are already found @@ -601,19 +592,11 @@ public class SiftsClient implements SiftsClientI } if (currSeqIndex >= seq.getStart() && currSeqIndex <= seq.getEnd()) { - int resNum; - try - { - resNum = (pdbRefDb == null) ? Integer.valueOf(residue - .getDbResNum()) : Integer.valueOf(pdbRefDb - .getDbResNum()); - } catch (NumberFormatException nfe) - { - resNum = (pdbRefDb == null) ? Integer.valueOf(residue - .getDbResNum()) : Integer.valueOf(pdbRefDb - .getDbResNum().split("[a-zA-Z]")[0]); - continue; - } + + int resNum = (pdbRefDb == null) ? getLeadingIntegerValue( + residue.getDbResNum(), UNASSIGNED) + : getLeadingIntegerValue(pdbRefDb.getDbResNum(), + UNASSIGNED); if (isResidueObserved(residue) || seqCoordSys == CoordinateSys.UNIPROT) @@ -636,6 +619,30 @@ public class SiftsClient implements SiftsClientI } /** + * Get the leading integer part of a string that begins with an integer. + * + * @param input + * - the string input to process + * @param failValue + * - value returned if unsuccessful + * @return + */ + static int getLeadingIntegerValue(String input, int failValue) + { + if (input == null) + { + return failValue; + } + String[] parts = input.split("(?=\\D)(?<=\\d)"); + if (parts != null && parts.length > 0 && parts[0].matches("[0-9]+")) + { + return Integer.valueOf(parts[0]); + } + return failValue; + } + + + /** * * @param chainId * Target chain to populate mapping of its atom positions. @@ -650,7 +657,7 @@ public class SiftsClient implements SiftsClientI { try { - PDBChain chain = pdb.findChain(chainId); + PDBChain chain = structureFile.findChain(chainId); if (chain == null || mapping == null) { @@ -959,7 +966,7 @@ public class SiftsClient implements SiftsClientI } @Override - public StringBuilder getMappingOutput(MappingOutputPojo mp) + public StringBuilder getMappingOutput(MappingOutputModel mp) throws SiftsException { String seqRes = mp.getSeqResidue(); @@ -1121,4 +1128,5 @@ public class SiftsClient implements SiftsClientI mockSiftsFile = file; } + }