X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fsifts%2FSiftsClient.java;h=9790f7918f89dc9e77fb953cb158f37d36488bef;hb=af259f508805faf2da90585ee9a67cd7853bf5aa;hp=c9c4618e15bb6b85c80c8513e1076507877c6ad2;hpb=d97bf67918528e7c2e1601a537d78eda2fbd2a5d;p=jalview.git diff --git a/src/jalview/ws/sifts/SiftsClient.java b/src/jalview/ws/sifts/SiftsClient.java index c9c4618..9790f79 100644 --- a/src/jalview/ws/sifts/SiftsClient.java +++ b/src/jalview/ws/sifts/SiftsClient.java @@ -20,28 +20,6 @@ */ 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.datamodel.DBRefSource; -import jalview.datamodel.SequenceI; -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.xml.binding.sifts.Entry.Entity; -import jalview.xml.binding.sifts.Entry.Entity.Segment; -import jalview.xml.binding.sifts.Entry.Entity.Segment.ListMapRegion.MapRegion; -import jalview.xml.binding.sifts.Entry.Entity.Segment.ListResidue.Residue; -import jalview.xml.binding.sifts.Entry.Entity.Segment.ListResidue.Residue.CrossRefDb; -import jalview.xml.binding.sifts.Entry.Entity.Segment.ListResidue.Residue.ResidueDetail; - import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -73,6 +51,28 @@ import javax.xml.stream.XMLStreamReader; import MCview.Atom; import MCview.PDBChain; +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.datamodel.DBRefSource; +import jalview.datamodel.SequenceI; +import jalview.io.BackupFiles; +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.xml.binding.sifts.Entry.Entity; +import jalview.xml.binding.sifts.Entry.Entity.Segment; +import jalview.xml.binding.sifts.Entry.Entity.Segment.ListMapRegion.MapRegion; +import jalview.xml.binding.sifts.Entry.Entity.Segment.ListResidue.Residue; +import jalview.xml.binding.sifts.Entry.Entity.Segment.ListResidue.Residue.CrossRefDb; +import jalview.xml.binding.sifts.Entry.Entity.Segment.ListResidue.Residue.ResidueDetail; public class SiftsClient implements SiftsClientI { @@ -123,6 +123,7 @@ public class SiftsClient implements SiftsClientI private enum CoordinateSys { UNIPROT("UniProt"), PDB("PDBresnum"), PDBe("PDBe"); + private String name; private CoordinateSys(String name) @@ -140,6 +141,7 @@ public class SiftsClient implements SiftsClientI { NAME_SEC_STRUCTURE("nameSecondaryStructure"), CODE_SEC_STRUCTURE("codeSecondaryStructure"), ANNOTATION("Annotation"); + private String code; private ResidueDetailType(String code) @@ -225,7 +227,7 @@ public class SiftsClient implements SiftsClientI SiftsSettings.getCacheThresholdInDays())) { File oldSiftsFile = new File(siftsFileName + "_old"); - siftsFile.renameTo(oldSiftsFile); + BackupFiles.moveFileToFile(siftsFile, oldSiftsFile); try { siftsFile = downloadSiftsFile(pdbId.toLowerCase()); @@ -234,7 +236,7 @@ public class SiftsClient implements SiftsClientI } catch (IOException e) { e.printStackTrace(); - oldSiftsFile.renameTo(siftsFile); + BackupFiles.moveFileToFile(oldSiftsFile, siftsFile); return new File(siftsFileName); } } @@ -461,7 +463,7 @@ public class SiftsClient implements SiftsClientI SequenceI seq, java.io.PrintStream os) throws SiftsException { List omitNonObserved = new ArrayList<>(); - int nonObservedShiftIndex = 0,pdbeNonObserved=0; + int nonObservedShiftIndex = 0, pdbeNonObserved = 0; // System.out.println("Generating mappings for : " + entityId); Entity entity = null; entity = getEntityById(entityId); @@ -492,7 +494,7 @@ public class SiftsClient implements SiftsClientI TreeMap resNumMap = new TreeMap(); List segments = entity.getSegment(); SegmentHelperPojo shp = new SegmentHelperPojo(seq, mapping, resNumMap, - omitNonObserved, nonObservedShiftIndex,pdbeNonObserved); + omitNonObserved, nonObservedShiftIndex, pdbeNonObserved); processSegments(segments, shp); try { @@ -514,18 +516,20 @@ public class SiftsClient implements SiftsClientI { throw new SiftsException("SIFTS mapping failed"); } - // also construct a mapping object between the seq-coord sys and the PDB seq's coord sys + // also construct a mapping object between the seq-coord sys and the PDB + // seq's coord sys Integer[] keys = mapping.keySet().toArray(new Integer[0]); Arrays.sort(keys); seqStart = keys[0]; seqEnd = keys[keys.length - 1]; - List from=new ArrayList<>(),to=new ArrayList<>(); - int[]_cfrom=null,_cto=null; + List from = new ArrayList<>(), to = new ArrayList<>(); + int[] _cfrom = null, _cto = null; String matchedSeq = originalSeq; - if (seqStart != UNASSIGNED) // fixme! seqStart can map to -1 for a pdb sequence that starts <-1 + if (seqStart != UNASSIGNED) // fixme! seqStart can map to -1 for a pdb + // sequence that starts <-1 { - for (int seqps:keys) + for (int seqps : keys) { int pdbpos = mapping.get(seqps)[PDBE_POS]; if (pdbpos == UNASSIGNED) @@ -533,19 +537,23 @@ public class SiftsClient implements SiftsClientI // not correct - pdbpos might be -1, but leave it for now continue; } - if (_cfrom==null || seqps!=_cfrom[1]+1) + if (_cfrom == null || seqps != _cfrom[1] + 1) { - _cfrom = new int[] { seqps,seqps}; + _cfrom = new int[] { seqps, seqps }; from.add(_cfrom); _cto = null; // discontinuity - } else { - _cfrom[1]= seqps; } - if (_cto==null || pdbpos!=1+_cto[1]) + else { - _cto = new int[] { pdbpos,pdbpos}; + _cfrom[1] = seqps; + } + if (_cto == null || pdbpos != 1 + _cto[1]) + { + _cto = new int[] { pdbpos, pdbpos }; to.add(_cto); - } else { + } + else + { _cto[1] = pdbpos; } } @@ -567,8 +575,7 @@ public class SiftsClient implements SiftsClientI ; seqFromPdbMapping = new jalview.datamodel.Mapping(null, _cto, _cfrom, - 1, - 1); + 1, 1); pdbStart = mapping.get(seqStart)[PDB_RES_POS]; pdbEnd = mapping.get(seqEnd)[PDB_RES_POS]; int orignalSeqStart = seq.getStart(); @@ -690,14 +697,21 @@ public class SiftsClient implements SiftsClientI ++nonObservedShiftIndex; } } + if (currSeqIndex == UNASSIGNED) + { + // change in logic - unobserved residues with no currSeqIndex + // corresponding are still counted in both nonObservedShiftIndex and + // pdbeIndex... + continue; + } // if (currSeqIndex >= seq.getStart() && currSeqIndex <= seqlength) // // true - // numbering - // is - // not - // up - // to - // seq.getEnd() + // numbering + // is + // not + // up + // to + // seq.getEnd() { int resNum = (pdbRefDb == null) @@ -706,21 +720,18 @@ public class SiftsClient implements SiftsClientI : getLeadingIntegerValue(pdbRefDb.getDbResNum(), UNASSIGNED); - if (isResidueObserved(residue) - || seqCoordSys == CoordinateSys.UNIPROT) + if (isObserved) { char resCharCode = ResidueProperties .getSingleCharacterCode(ResidueProperties .getCanonicalAminoAcid(residue.getDbResName())); resNumMap.put(currSeqIndex, String.valueOf(resCharCode)); + + int[] mappingcols = new int[] { Integer.valueOf(resNum), + UNASSIGNED, isObserved ? firstPDBResNum : UNASSIGNED }; + + mapping.put(currSeqIndex - nonObservedShiftIndex, mappingcols); } - // TODO: mapping should have SeqCoordSysNum => int[] {PDBeNum, - // PDBRESNUM, ATOMNUM } - mapping.put(currSeqIndex - nonObservedShiftIndex, - new int[] - { Integer.valueOf(resNum), UNASSIGNED, - isObserved ? firstPDBResNum - : UNASSIGNED }); } } } @@ -1040,6 +1051,7 @@ public class SiftsClient implements SiftsClientI { return pdbeNonObserved; } + public SequenceI getSeq() { return seq;