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;
*/
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;
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";
* @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);
}
if (os != null)
{
- MappingOutputPojo mop = new MappingOutputPojo();
+ MappingOutputModel mop = new MappingOutputModel();
mop.setSeqStart(seqStart);
mop.setSeqEnd(seqEnd);
mop.setSeqName(seq.getName());
.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
}
if (currSeqIndex >= seq.getStart() && currSeqIndex <= seq.getEnd())
{
- int resNum;
- try
- {
- resNum = (pdbRefDb == null) ? Integer.valueOf(residue
- .getDbResNum()) : Integer.valueOf(pdbRefDb
- .getDbResNum());
- } catch (NumberFormatException nfe)
- {
- if (pdbRefDb == null || pdbRefDb.getDbResNum().equals("null"))
- {
- resNum = UNASSIGNED;
- continue;
- }
- resNum = 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)
}
/**
+ * 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.
{
try
{
- PDBChain chain = pdb.findChain(chainId);
+ PDBChain chain = structureFile.findChain(chainId);
if (chain == null || mapping == null)
{
}
@Override
- public StringBuilder getMappingOutput(MappingOutputPojo mp)
+ public StringBuilder getMappingOutput(MappingOutputModel mp)
throws SiftsException
{
String seqRes = mp.getSeqResidue();
mockSiftsFile = file;
}
+
}