|
3 | 3 | import java.io.Serializable; |
4 | 4 | import java.util.ArrayList; |
5 | 5 | import java.util.HashMap; |
| 6 | +import java.util.HashSet; |
6 | 7 | import java.util.List; |
7 | 8 | import java.util.Map; |
8 | 9 | import java.util.Map.Entry; |
| 10 | +import java.util.Set; |
9 | 11 |
|
10 | 12 | import javax.vecmath.Matrix4d; |
11 | 13 |
|
|
31 | 33 | import org.biojava.nbio.structure.xtal.CrystalCell; |
32 | 34 | import org.biojava.nbio.structure.xtal.SpaceGroup; |
33 | 35 | import org.rcsb.mmtf.api.StructureDecoderInterface; |
| 36 | +import org.rcsb.mmtf.dataholders.BioAssemblyData; |
| 37 | +import org.rcsb.mmtf.dataholders.BioAssemblyTrans; |
34 | 38 |
|
35 | 39 |
|
36 | 40 | /** |
@@ -270,52 +274,6 @@ private Group getCorrectAltLocGroup(final Character altLoc) { |
270 | 274 |
|
271 | 275 | } |
272 | 276 |
|
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 | | - |
319 | 277 |
|
320 | 278 | /* (non-Javadoc) |
321 | 279 | * @see org.rcsb.mmtf.decoder.StructureDecoderInterface# |
@@ -378,5 +336,49 @@ private int getGroupTypIndicator(String currentGroupType) { |
378 | 336 | } |
379 | 337 | } |
380 | 338 |
|
| 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 | + |
381 | 383 |
|
382 | 384 | } |
0 commit comments