Skip to content

Commit affb82b

Browse files
committed
Updates to the biojava structure decoder due to an API change in the interrface
1 parent 41a0e00 commit affb82b

File tree

1 file changed

+48
-46
lines changed

1 file changed

+48
-46
lines changed

biojava-structure/src/main/java/org/biojava/nbio/structure/io/mmtf/BioJavaStructureDecoder.java

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import java.io.Serializable;
44
import java.util.ArrayList;
55
import java.util.HashMap;
6+
import java.util.HashSet;
67
import java.util.List;
78
import java.util.Map;
89
import java.util.Map.Entry;
10+
import java.util.Set;
911

1012
import javax.vecmath.Matrix4d;
1113

@@ -31,6 +33,8 @@
3133
import org.biojava.nbio.structure.xtal.CrystalCell;
3234
import org.biojava.nbio.structure.xtal.SpaceGroup;
3335
import org.rcsb.mmtf.api.StructureDecoderInterface;
36+
import org.rcsb.mmtf.dataholders.BioAssemblyData;
37+
import org.rcsb.mmtf.dataholders.BioAssemblyTrans;
3438

3539

3640
/**
@@ -270,52 +274,6 @@ private Group getCorrectAltLocGroup(final Character altLoc) {
270274

271275
}
272276

273-
/* (non-Javadoc)
274-
* @see org.rcsb.mmtf.decoder.StructureDecoderInterface
275-
* #setBioAssembly(java.util.Map, java.util.Map,
276-
* java.util.Map, java.util.Map, java.util.Map)
277-
*/
278-
@Override
279-
public final void setBioAssembly(final Map<Integer,
280-
Integer> keyList, final Map<Integer, Integer> sizeList,
281-
final Map<Integer, List<String>> inputIds, final Map<Integer,
282-
List<String>> inputChainIds, final Map<Integer,
283-
List<double[]>> inputTransformations) {
284-
PDBHeader pdbHeader = structure.getPDBHeader();
285-
// Get the bioassebly data
286-
Map<Integer, BioAssemblyInfo> bioAssemblies = new HashMap<>();
287-
for (Entry<Integer, Integer> entry: keyList.entrySet()) {
288-
// Get the key and the value
289-
Integer key = entry.getKey();
290-
Integer value = entry.getValue();
291-
// Make a biojava bioassembly object
292-
BioAssemblyInfo bioAssInfo = new BioAssemblyInfo();
293-
bioAssInfo.setId(value);
294-
// Set size
295-
bioAssInfo.setMacromolecularSize(sizeList.get(key));
296-
// Now get the new sizes
297-
List<BiologicalAssemblyTransformation> newList = new ArrayList<>();
298-
for (int i = 0; i < inputIds.get(key).size(); i++) {
299-
BiologicalAssemblyTransformation bioAssTrans =
300-
new BiologicalAssemblyTransformation();
301-
bioAssTrans.setId(inputIds.get(key).get(i));
302-
bioAssTrans.setChainId(inputChainIds.get(key).get(i));
303-
// Now set matrix
304-
Matrix4d mat4d = new Matrix4d(inputTransformations.get(key).get(i));
305-
bioAssTrans.setTransformationMatrix(mat4d);
306-
// Now add this
307-
newList.add(bioAssTrans);
308-
}
309-
// Now set the transform list
310-
bioAssInfo.setTransforms(newList);
311-
// Now set this
312-
bioAssemblies.put(key, bioAssInfo);
313-
}
314-
// Now actually set them
315-
pdbHeader.setBioAssemblies(bioAssemblies);
316-
structure.setPDBHeader(pdbHeader);
317-
}
318-
319277

320278
/* (non-Javadoc)
321279
* @see org.rcsb.mmtf.decoder.StructureDecoderInterface#
@@ -378,5 +336,49 @@ private int getGroupTypIndicator(String currentGroupType) {
378336
}
379337
}
380338

339+
@Override
340+
public void setBioAssembly(Map<Integer, BioAssemblyData> inputBioassemblies) {
341+
342+
PDBHeader pdbHeader = structure.getPDBHeader();
343+
// Get the bioassebly data
344+
Map<Integer, BioAssemblyInfo> bioAssemblies = new HashMap<>();
345+
int bioassemlyCounter = 0;
346+
for (Entry<Integer, BioAssemblyData> entry: inputBioassemblies.entrySet()) {
347+
bioassemlyCounter++;
348+
// Get the key and the value
349+
Integer key = entry.getKey();
350+
BioAssemblyData value = entry.getValue();
351+
// Make a biojava bioassembly object
352+
BioAssemblyInfo bioAssInfo = new BioAssemblyInfo();
353+
bioAssInfo.setId(bioassemlyCounter);
354+
// Now get the new sizes
355+
List<BiologicalAssemblyTransformation> newList = new ArrayList<>();
356+
Integer transIdCounter =0;
357+
for (BioAssemblyTrans transform : value.getTransforms()) {
358+
transIdCounter++;
359+
// Now loop over the chains
360+
for(String currChainId : transform.getChainId()){
361+
BiologicalAssemblyTransformation bioAssTrans =
362+
new BiologicalAssemblyTransformation();
363+
bioAssTrans.setId(transIdCounter.toString());
364+
bioAssTrans.setChainId(currChainId);
365+
// Now set matrix
366+
Matrix4d mat4d = new Matrix4d(transform.getTransformation());
367+
bioAssTrans.setTransformationMatrix(mat4d);
368+
// Now add this
369+
newList.add(bioAssTrans);
370+
}
371+
}
372+
// Now set the transform list
373+
bioAssInfo.setTransforms(newList);
374+
bioAssInfo.setMacromolecularSize(value.getMacroMolecularSize());
375+
// Now set this
376+
bioAssemblies.put(key, bioAssInfo);
377+
}
378+
// Now actually set them
379+
pdbHeader.setBioAssemblies(bioAssemblies);
380+
structure.setPDBHeader(pdbHeader);
381+
}
382+
381383

382384
}

0 commit comments

Comments
 (0)