Skip to content

Commit c16c2a8

Browse files
committed
Parsing EM resolution in mmCif parser
1 parent 96def7e commit c16c2a8

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

biojava-structure/src/main/java/org/biojava/nbio/structure/io/cif/CifStructureConsumer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.rcsb.cif.schema.mm.DatabasePDBRemark;
1111
import org.rcsb.cif.schema.mm.DatabasePDBRev;
1212
import org.rcsb.cif.schema.mm.DatabasePDBRevRecord;
13+
import org.rcsb.cif.schema.mm.Em3dReconstruction;
1314
import org.rcsb.cif.schema.mm.Entity;
1415
import org.rcsb.cif.schema.mm.EntityPoly;
1516
import org.rcsb.cif.schema.mm.EntityPolySeq;
@@ -107,7 +108,13 @@ public interface CifStructureConsumer extends CifFileConsumer<Structure> {
107108
*/
108109
void consumeDatabasePDBRevRecord(DatabasePDBRevRecord databasePDBrevRecord);
109110

110-
/**
111+
/**
112+
* Consume Electron Microscopy 3D reconstruction data
113+
* @param em3dReconstruction
114+
*/
115+
void consumeEm3dReconstruction(Em3dReconstruction em3dReconstruction);
116+
117+
/**
111118
* Consume a particular Cif category.
112119
* @param entity data
113120
*/

biojava-structure/src/main/java/org/biojava/nbio/structure/io/cif/CifStructureConsumerImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
import org.rcsb.cif.schema.mm.DatabasePDBRemark;
7070
import org.rcsb.cif.schema.mm.DatabasePDBRev;
7171
import org.rcsb.cif.schema.mm.DatabasePDBRevRecord;
72+
import org.rcsb.cif.schema.mm.Em3dReconstruction;
7273
import org.rcsb.cif.schema.mm.Entity;
7374
import org.rcsb.cif.schema.mm.EntityPoly;
7475
import org.rcsb.cif.schema.mm.EntityPolySeq;
@@ -128,6 +129,7 @@ public class CifStructureConsumerImpl implements CifStructureConsumer {
128129
private List<Chain> currentModel;
129130
private PDBHeader pdbHeader;
130131
private String currentNmrModelNumber;
132+
private Em3dReconstruction em3dReconstruction;
131133
private List<Chain> entityChains;
132134

133135
private Entity entity;
@@ -644,6 +646,16 @@ public void consumeDatabasePDBRevRecord(DatabasePDBRevRecord databasePDBrevRecor
644646
revRecords.add(new org.biojava.nbio.structure.DatabasePDBRevRecord(databasePDBrevRecord, i));
645647
}
646648
}
649+
650+
@Override
651+
public void consumeEm3dReconstruction(Em3dReconstruction em3dReconstruction) {
652+
this.em3dReconstruction = em3dReconstruction;
653+
654+
for (int rowIndex = 0; rowIndex < em3dReconstruction.getRowCount(); rowIndex++) {
655+
pdbHeader.setResolution((float) em3dReconstruction.getResolution().get(rowIndex)); //can it have more than 1 value?
656+
}
657+
//TODO other fields (maybe RFree)?
658+
}
647659

648660
@Override
649661
public void consumeEntity(Entity entity) {
@@ -831,6 +843,10 @@ public void consumePdbxStructOperList(PdbxStructOperList pdbxStructOperList) {
831843
public void consumeRefine(Refine refine) {
832844
for (int rowIndex = 0; rowIndex < refine.getRowCount(); rowIndex++) {
833845
// RESOLUTION
846+
ValueKind valueKind = refine.getLsDResHigh().getValueKind(rowIndex);
847+
if (ValueKind.NOT_PRESENT.equals(valueKind)) {
848+
continue;
849+
}
834850
// in very rare cases (for instance hybrid methods x-ray + neutron diffraction, e.g. 3ins, 4n9m)
835851
// there are 2 resolution values, one for each method
836852
// we take the last one found so that behaviour is like in PDB file parsing

biojava-structure/src/main/java/org/biojava/nbio/structure/io/cif/CifStructureConverter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ public static Structure fromCifFile(CifFile cifFile, FileParsingParameters param
118118
consumer.consumeDatabasePDBRemark(cifBlock.getDatabasePDBRemark());
119119
consumer.consumeDatabasePDBRev(cifBlock.getDatabasePDBRev());
120120
consumer.consumeDatabasePDBRevRecord(cifBlock.getDatabasePDBRevRecord());
121+
consumer.consumeEm3dReconstruction(cifBlock.getEm3dReconstruction());
121122
consumer.consumeEntity(cifBlock.getEntity());
122123
consumer.consumeEntityPoly(cifBlock.getEntityPoly());
123124
consumer.consumeEntitySrcGen(cifBlock.getEntitySrcGen());

0 commit comments

Comments
 (0)