import java.awt.Color;
import java.util.List;
+import java.util.Locale;
import java.util.Vector;
public class PDBChain
public String pdbid = "";
- public PDBChain(String thePdbid, String theId, boolean isAlphaFoldModel)
+ String tfacName = "Temperature Factor";
+
+ public PDBChain(String thePdbid, String theId,
+ String tempFactorColumnName)
{
- this.pdbid = thePdbid == null ? thePdbid : thePdbid.toLowerCase();
+ this.pdbid = thePdbid == null ? thePdbid
+ : thePdbid.toLowerCase(Locale.ROOT);
this.id = theId;
- this.alphaFoldModel = isAlphaFoldModel;
+ if (tempFactorColumnName != null && tempFactorColumnName.length() > 0)
+ {
+ tfacName = tempFactorColumnName;
+ }
+ }
+
+ /**
+ * import chain data assuming Temperature Factor is in the Temperature Factor
+ * column
+ *
+ * @param thePdbid
+ * @param theId
+ */
+ public PDBChain(String thePdbid, String theId)
+ {
+ this(thePdbid, theId, null);
}
/**
public Mapping shadowMap;
- private boolean alphaFoldModel;
-
public void setNewlineString(String nl)
{
newline = nl;
}
char seqchar = ds.getCharAt(seqpos - ds.getStart());
- boolean sameResidue = Comparison.isSameResidue(
- seqchar, strchar, false);
+ boolean sameResidue = Comparison.isSameResidue(seqchar, strchar,
+ false);
if (sameResidue)
{
for (Atom atom : res.atoms)
* @param seq
* @param status
* The Status of the transferred annotation
+ *
+ * @param altPDBID
+ * the group id for the features on the destination sequence (e.g.
+ * the official accession ID)
*/
- public void transferRESNUMFeatures(SequenceI seq,
- String status)
+ public void transferRESNUMFeatures(SequenceI seq, String status,
+ String altPDBID)
{
+ if (altPDBID == null)
+ {
+ altPDBID = pdbid;
+ }
SequenceI sq = seq;
while (sq != null && sq.getDatasetSequence() != null)
{
if (feature.getFeatureGroup() != null
&& feature.getFeatureGroup().equals(pdbid))
{
- int newBegin = 1 + residues.elementAt(feature.getBegin() - offset).atoms
- .elementAt(0).alignmentMapping;
+ int newBegin = 1
+ + residues.elementAt(feature.getBegin() - offset).atoms
+ .elementAt(0).alignmentMapping;
int newEnd = 1 + residues.elementAt(feature.getEnd() - offset).atoms
.elementAt(0).alignmentMapping;
SequenceFeature tx = new SequenceFeature(feature, newBegin, newEnd,
- feature.getFeatureGroup(), feature.getScore());
+ altPDBID, feature.getScore());
tx.setStatus(status
+ ((tx.getStatus() == null || tx.getStatus().length() == 0)
? ""
{
String desc = currAtom.resName + ":" + currAtom.resNumIns + " "
+ pdbid + id;
- SequenceFeature sf = new SequenceFeature("INSERTION", desc, offset
- + count - 1, offset + count - 1, "PDB_INS");
+ SequenceFeature sf = new SequenceFeature("INSERTION", desc,
+ offset + count - 1, offset + count - 1, "PDB_INS");
resFeatures.addElement(sf);
residues.lastElement().atoms.addAll(resAtoms);
}
Residue tmpres = residues.lastElement();
Atom tmpat = tmpres.atoms.get(0);
// Make A new SequenceFeature for the current residue numbering
- String desc = tmpat.resName
- + ":" + tmpat.resNumIns + " " + pdbid + id;
+ String desc = tmpat.resName + ":" + tmpat.resNumIns + " " + pdbid
+ + id;
SequenceFeature sf = new SequenceFeature(RESNUM_FEATURE, desc,
offset + count, offset + count, pdbid);
resFeatures.addElement(sf);
min = Math.min(min, annots[i].value);
resAnnotation.setElementAt(null, i);
}
- String tfacName = "Temperature Factor";
- if (isAlphaFoldModel())
- {
- tfacName = "Alphafold Reliability";
- }
- AlignmentAnnotation tfactorann = new AlignmentAnnotation(
- tfacName, tfacName + " for " + pdbid + id,
- annots, min, max, AlignmentAnnotation.LINE_GRAPH);
+ AlignmentAnnotation tfactorann = new AlignmentAnnotation(tfacName,
+ tfacName + " for " + pdbid + id, annots, min, max,
+ AlignmentAnnotation.LINE_GRAPH);
+
+ tfactorann.setCalcId(getClass().getName());
+
tfactorann.setSequenceRef(sequence);
sequence.addAlignmentAnnotation(tfactorann);
}
}
- private boolean isAlphaFoldModel()
- {
- return alphaFoldModel;
- }
-
/**
* Colour start/end of bonds by charge
* <ul>
for (AlignmentAnnotation ana : shadow.getAnnotation())
{
- List<AlignmentAnnotation> transfer = sq
- .getAlignmentAnnotations(ana.getCalcId(), ana.label);
+ // match on calcId, label and description so annotations from
+ // different structures are preserved
+ List<AlignmentAnnotation> transfer = sq.getAlignmentAnnotations(
+ ana.getCalcId(), ana.label, ana.description);
if (transfer == null || transfer.size() == 0)
{
ana = new AlignmentAnnotation(ana);
{
for (AlignmentAnnotation ana : sequence.getAnnotation())
{
+ // match on calcId, label and description so annotations from
+ // different structures are preserved
List<AlignmentAnnotation> transfer = dsq
- .getAlignmentAnnotations(ana.getCalcId(), ana.label);
+ .getAlignmentAnnotations(ana.getCalcId(), ana.label,
+ ana.description);
if (transfer == null || transfer.size() == 0)
{
ana = new AlignmentAnnotation(ana);