From a2bb23d7f717d19d3c6d4b2aabbd9fb6d0425fd6 Mon Sep 17 00:00:00 2001 From: abradle Date: Thu, 23 Jun 2016 15:41:59 +0100 Subject: [PATCH 01/10] Update to the serialization module - only construct object mapper once. --- .../serialization/MessagePackSerialization.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/mmtf-serialization/src/main/java/org/rcsb/mmtf/serialization/MessagePackSerialization.java b/mmtf-serialization/src/main/java/org/rcsb/mmtf/serialization/MessagePackSerialization.java index de6dccb..6fd344b 100644 --- a/mmtf-serialization/src/main/java/org/rcsb/mmtf/serialization/MessagePackSerialization.java +++ b/mmtf-serialization/src/main/java/org/rcsb/mmtf/serialization/MessagePackSerialization.java @@ -17,11 +17,22 @@ */ public class MessagePackSerialization implements MmtfStructureSerializationInterface { + private ObjectMapper objectMapper; + + /** + * Constructor for the {@link MessagePackSerialization} class. + * Generates {@link ObjectMapper} and sets to include non-null. + */ + public MessagePackSerialization() { + objectMapper = new ObjectMapper(new MessagePackFactory()); + objectMapper.setSerializationInclusion(Include.NON_NULL); + } + @Override public MmtfStructure deserialize(InputStream inputStream){ MmtfStructure mmtfBean = null; try { - mmtfBean = new ObjectMapper(new MessagePackFactory()).readValue(inputStream, MmtfStructure.class); + mmtfBean = objectMapper.readValue(inputStream, MmtfStructure.class); } catch (IOException e) { e.printStackTrace(); } @@ -30,8 +41,6 @@ public MmtfStructure deserialize(InputStream inputStream){ @Override public void serialize(MmtfStructure mmtfStructure, OutputStream outputStream) { - ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); - objectMapper.setSerializationInclusion(Include.NON_NULL); try { objectMapper.writeValue(outputStream, mmtfStructure); } catch (IOException e) { From 934786a50062dd63f80fa3a0a7eb2426c197b64a Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 11:27:31 -0400 Subject: [PATCH 02/10] Added getBioassemblyName to the API and the implementations of it. --- .../rcsb/mmtf/api/StructureDataInterface.java | 9 ++++- .../org/rcsb/mmtf/decoder/GenericDecoder.java | 5 +++ .../mmtf/encoder/AdapterToStructureData.java | 5 +++ .../org/rcsb/mmtf/encoder/EncoderUtils.java | 36 +++++++++++-------- .../org/rcsb/mmtf/decoder/DummyApiImpl.java | 5 +++ .../org/rcsb/mmtf/encoder/DummyApiImpl.java | 5 +++ 6 files changed, 50 insertions(+), 15 deletions(-) diff --git a/mmtf-api/src/main/java/org/rcsb/mmtf/api/StructureDataInterface.java b/mmtf-api/src/main/java/org/rcsb/mmtf/api/StructureDataInterface.java index e7fffa5..1d38cff 100644 --- a/mmtf-api/src/main/java/org/rcsb/mmtf/api/StructureDataInterface.java +++ b/mmtf-api/src/main/java/org/rcsb/mmtf/api/StructureDataInterface.java @@ -216,10 +216,17 @@ public interface StructureDataInterface { /** * Returns the number of transformations in a given bioassembly. * @param bioassemblyIndex an integer specifying the bioassembly index (zero indexed). - * @return an integer specifying of transformations in a given bioassembly. + * @return an integer specifying the number of transformations in a given bioassembly. */ int getNumTransInBioassembly(int bioassemblyIndex); + /** + * Returns the name of the transformation for a bioassembly. + * @param bioassemblyIndex an integer specifying the bioassembly index (zero indexed). + * @return a string specifying the name of a given bioassembly. + */ + String getBioassemblyName(int bioassemblyIndex); + /** * Returns the list of chain indices for the given transformation for the given bioassembly. * @param bioassemblyIndex an integer specifying the bioassembly index (zero indexed). diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/GenericDecoder.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/GenericDecoder.java index 5182cc4..57951d4 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/GenericDecoder.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/GenericDecoder.java @@ -474,4 +474,9 @@ public double[][] getNcsOperatorList() { return ncsOperMatrixList; } + @Override + public String getBioassemblyName(int bioassemblyIndex) { + return bioAssembly.get(bioassemblyIndex).getName(); + } + } diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java index 32fa8ba..174a258 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java @@ -610,4 +610,9 @@ public double[][] getNcsOperatorList() { return ncsOperMatrixList; } + @Override + public String getBioassemblyName(int bioassemblyIndex) { + return bioAssembly.get(bioassemblyIndex).getName(); + } + } diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java index 77b68f3..307dcd2 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java @@ -59,31 +59,39 @@ public static Group[] generateGroupMap(StructureDataInterface structureDataInter /** * Find the bioassembly information as a list from the {@link StructureDataInterface}. * @param structureDataInterface the interface from where to find the data - * @return a list of bioassembly information + * @return a list of bioassembly information to be stored in the MMTF data structure. */ public static List generateBioassemblies(StructureDataInterface structureDataInterface) { int numBioassemblies = structureDataInterface.getNumBioassemblies(); List outList = new ArrayList<>(); for (int i=0; i transformList = new ArrayList<>(); - bioAssemblyData.setTransformList(transformList); + BioAssemblyData bioassembly = addBioassembly(structureDataInterface, outList, i); int numTrans = structureDataInterface.getNumTransInBioassembly(i); for (int j=0; j outList, int i) { + BioAssemblyData bioAssemblyData = new BioAssemblyData(); + bioAssemblyData.setName(structureDataInterface.getBioassemblyName(i)); + outList.add(bioAssemblyData); + List transformList = new ArrayList<>(); + bioAssemblyData.setTransformList(transformList); + return bioAssemblyData; + } + /** * Generate the entity level information from the {@link StructureDataInterface}. * @param structureDataInterface the input interface @@ -194,7 +202,7 @@ public static void transferBioassembly(StructureDataInterface structureDataInter adapterToStructureData.setBioAssemblyTrans(i, structureDataInterface.getChainIndexListForTransform(i, j), structureDataInterface.getMatrixForTransform(i, j), - Integer.toString(i)); + structureDataInterface.getBioassemblyName(i)); } } diff --git a/mmtf-codec/src/test/java/org/rcsb/mmtf/decoder/DummyApiImpl.java b/mmtf-codec/src/test/java/org/rcsb/mmtf/decoder/DummyApiImpl.java index e07c787..5cdb1fa 100644 --- a/mmtf-codec/src/test/java/org/rcsb/mmtf/decoder/DummyApiImpl.java +++ b/mmtf-codec/src/test/java/org/rcsb/mmtf/decoder/DummyApiImpl.java @@ -294,4 +294,9 @@ public double[][] getNcsOperatorList() { return new double[16][16]; } + @Override + public String getBioassemblyName(int bioassemblyIndex) { + return "NA"; + } + } diff --git a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/DummyApiImpl.java b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/DummyApiImpl.java index 446570a..8fd4481 100644 --- a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/DummyApiImpl.java +++ b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/DummyApiImpl.java @@ -295,4 +295,9 @@ public double[][] getNcsOperatorList() { return new double[16][16]; } + @Override + public String getBioassemblyName(int bioassemblyIndex) { + return "NA"; + } + } From f768dcaf0d821e8dce6b7a6ca5d0db5765447c72 Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 12:55:50 -0400 Subject: [PATCH 03/10] Clean up of the Bioassembly transfer. Addition of tests for EncoderUtils --- .../mmtf/encoder/AdapterToStructureData.java | 9 +- .../org/rcsb/mmtf/encoder/EncoderUtils.java | 28 +++--- .../rcsb/mmtf/encoder/TestEncoderUtils.java | 88 +++++++++++++++++++ .../mmtf/dataholders/BioAssemblyData.java | 17 ++++ 4 files changed, 121 insertions(+), 21 deletions(-) create mode 100644 mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java index 174a258..83ef8ec 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/AdapterToStructureData.java @@ -528,20 +528,17 @@ public void setAtomInfo(String atomName, int serialNumber, char alternativeLocat @Override public void setBioAssemblyTrans(int bioAssemblyIndex, int[] chainIndices, double[] transform, String name) { BioAssemblyData bioAssemblyData; - List bioAssemblyTranList; if (bioAssembly.size()>bioAssemblyIndex) { - bioAssemblyTranList = bioAssembly.get(bioAssemblyIndex).getTransformList(); + bioAssemblyData = bioAssembly.get(bioAssemblyIndex); } else{ - bioAssemblyData = new BioAssemblyData(); - bioAssemblyTranList = new ArrayList<>(); - bioAssemblyData.setTransformList(bioAssemblyTranList); + bioAssemblyData = new BioAssemblyData(name); bioAssembly.add(bioAssemblyData); } BioAssemblyTransformation bioAssemblyTrans = new BioAssemblyTransformation(); bioAssemblyTrans.setChainIndexList(chainIndices); bioAssemblyTrans.setMatrix(transform); - bioAssemblyTranList.add(bioAssemblyTrans); + bioAssemblyData.getTransformList().add(bioAssemblyTrans); } @Override diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java index 307dcd2..9cd848d 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java @@ -65,32 +65,30 @@ public static List generateBioassemblies(StructureDataInterface int numBioassemblies = structureDataInterface.getNumBioassemblies(); List outList = new ArrayList<>(); for (int i=0; i outList, int i) { - BioAssemblyData bioAssemblyData = new BioAssemblyData(); - bioAssemblyData.setName(structureDataInterface.getBioassemblyName(i)); - outList.add(bioAssemblyData); - List transformList = new ArrayList<>(); - bioAssemblyData.setTransformList(transformList); - return bioAssemblyData; - } /** * Generate the entity level information from the {@link StructureDataInterface}. diff --git a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java new file mode 100644 index 0000000..d0abf88 --- /dev/null +++ b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java @@ -0,0 +1,88 @@ +package org.rcsb.mmtf.encoder; + +import org.junit.Test; +import static org.junit.Assert.*; + +import java.util.ArrayList; +import java.util.List; + +import org.rcsb.mmtf.codec.CharCodecs; +import org.rcsb.mmtf.codec.FloatCodecs; +import org.rcsb.mmtf.codec.IntCodecs; +import org.rcsb.mmtf.codec.OptionParser; +import org.rcsb.mmtf.codec.StringCodecs; +import org.rcsb.mmtf.dataholders.BioAssemblyData; +import org.rcsb.mmtf.dataholders.BioAssemblyTransformation; + +/** + * Tests for the {@link EncoderUtils} class of static methods. + * @author Anthony Bradley + * + */ +public class TestEncoderUtils { + + /** + * Test that all of the codecs can handle and empty input array. + */ + @Test + public void testEmptyArrs() { + + for (FloatCodecs inputCodec : FloatCodecs.values()) { + testOutput(EncoderUtils.encodeByteArr(inputCodec, new float[] {}, 0), + inputCodec.getCodecId()); + } + + for (CharCodecs inputCodec : CharCodecs.values()) { + testOutput(EncoderUtils.encodeByteArr(inputCodec, new char[] {}, 0), + inputCodec.getCodecId()); + } + + for (IntCodecs inputCodec : IntCodecs.values()) { + testOutput(EncoderUtils.encodeByteArr(inputCodec, new int[] {}, 0), + inputCodec.getCodecId()); + } + + for (StringCodecs inputCodec : StringCodecs.values()) { + testOutput(EncoderUtils.encodeByteArr(inputCodec, new String[] {}, 0), + inputCodec.getCodecId()); + } + } + + @Test + public void testGenerateBioassemblies() { + List bioAssemblyData = new ArrayList<>(); + BioAssemblyData bioAssemblyOne = new BioAssemblyData("1"); + bioAssemblyData.add(bioAssemblyOne); + List bioAssemblyOneTransforms = new ArrayList<>(); + BioAssemblyTransformation bioassOneTransOne = new BioAssemblyTransformation(); + bioassOneTransOne.setChainIndexList(new int[]{1,2,3,4}); + bioassOneTransOne.setMatrix(new double[]{1.0,2.0,3.0,4.0}); + bioAssemblyOneTransforms.add(bioassOneTransOne); + BioAssemblyTransformation bioassOneTransTwo = new BioAssemblyTransformation(); + bioassOneTransTwo.setChainIndexList(new int[]{5,7,11}); + bioassOneTransTwo.setMatrix(new double[]{5.0,2.0,8.0,4.0}); + bioAssemblyOneTransforms.add(bioassOneTransTwo); + bioAssemblyOne.setTransformList(bioAssemblyOneTransforms); + AdapterToStructureData adapterToStructureData = new AdapterToStructureData(); + adapterToStructureData.initStructure(0,0,0,0,0,"DUMY"); + for (int i=0; i< bioAssemblyData.size(); i++){ + for (int j=0; j< bioAssemblyData.get(i).getTransformList().size();j++) + adapterToStructureData.setBioAssemblyTrans(i, + bioAssemblyData.get(i).getTransformList().get(j).getChainIndexList(), + bioAssemblyData.get(i).getTransformList().get(j).getMatrix(), + bioAssemblyData.get(i).getName()); + } + List generateBioass = EncoderUtils.generateBioassemblies(adapterToStructureData); + + assertEquals(bioAssemblyData.get(0).getName(), generateBioass.get(0).getName()); + assertArrayEquals(bioAssemblyData.get(0).getTransformList().get(0).getChainIndexList(), + generateBioass.get(0).getTransformList().get(0).getChainIndexList()); + assertArrayEquals(bioAssemblyData.get(0).getTransformList().get(0).getMatrix(), + generateBioass.get(0).getTransformList().get(0).getMatrix(),0.0); + } + + + private void testOutput(byte[] encodeByteArr, int codecId) { + assertArrayEquals(encodeByteArr, new OptionParser(codecId, 0, 0).getHeader()); + } +} diff --git a/mmtf-serialization/src/main/java/org/rcsb/mmtf/dataholders/BioAssemblyData.java b/mmtf-serialization/src/main/java/org/rcsb/mmtf/dataholders/BioAssemblyData.java index 5d0fcbf..330e8c8 100644 --- a/mmtf-serialization/src/main/java/org/rcsb/mmtf/dataholders/BioAssemblyData.java +++ b/mmtf-serialization/src/main/java/org/rcsb/mmtf/dataholders/BioAssemblyData.java @@ -1,6 +1,7 @@ package org.rcsb.mmtf.dataholders; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; /** @@ -23,6 +24,22 @@ public class BioAssemblyData implements Serializable { /** The name of the Bioassembly. Can be user defined. */ private String name; + /** + * Constructor setting the name and initialising an empty transform list. + * @param name the name of this {@link BioAssemblyData} object + */ + public BioAssemblyData(String name) { + transformList = new ArrayList(); + this.name = name; + } + + /** + * Constructor without setting the name. + */ + public BioAssemblyData() { + transformList = new ArrayList(); + } + /** * Gets the list of transforms. * From e89c0efb0c5244070a7e4e310bf82a3f5667b3f7 Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 15:10:52 -0400 Subject: [PATCH 04/10] Refactored generateGroupMap to generateGroupList --- .../src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java | 2 +- .../src/main/java/org/rcsb/mmtf/encoder/GenericEncoder.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java index 9cd848d..b0dfd0d 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/EncoderUtils.java @@ -33,7 +33,7 @@ public class EncoderUtils { * @param structureDataInterface the input interface * @return a list of all the groups in the molecule */ - public static Group[] generateGroupMap(StructureDataInterface structureDataInterface) { + public static Group[] generateGroupList(StructureDataInterface structureDataInterface) { int[] groupTypeIndices = structureDataInterface.getGroupTypeIndices(); if(groupTypeIndices.length==0){ return new Group[0]; diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/GenericEncoder.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/GenericEncoder.java index 0cea9ff..a967ab5 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/GenericEncoder.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/encoder/GenericEncoder.java @@ -70,7 +70,7 @@ private void encode(StructureDataInterface structureDataInterface) { // Slightly unusual thing // Set the group map (all the unique groups in the structure). - mmtfBean.setGroupList(EncoderUtils.generateGroupMap(structureDataInterface)); + mmtfBean.setGroupList(EncoderUtils.generateGroupList(structureDataInterface)); // Set the bioassembly and entity information mmtfBean.setBioAssemblyList(EncoderUtils.generateBioassemblies(structureDataInterface)); mmtfBean.setEntityList(EncoderUtils.generateEntityList(structureDataInterface)); From ee50b1ebf882c6374ebdf72858d55645d4a72249 Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 15:11:35 -0400 Subject: [PATCH 05/10] Added more tests for the EncoderUtils class --- .../rcsb/mmtf/encoder/TestEncoderUtils.java | 67 ++++++++++++++++++- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java index d0abf88..ac9c11a 100644 --- a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java +++ b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java @@ -3,9 +3,13 @@ import org.junit.Test; import static org.junit.Assert.*; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; +import org.rcsb.mmtf.api.StructureDataInterface; import org.rcsb.mmtf.codec.CharCodecs; import org.rcsb.mmtf.codec.FloatCodecs; import org.rcsb.mmtf.codec.IntCodecs; @@ -13,6 +17,10 @@ import org.rcsb.mmtf.codec.StringCodecs; import org.rcsb.mmtf.dataholders.BioAssemblyData; import org.rcsb.mmtf.dataholders.BioAssemblyTransformation; +import org.rcsb.mmtf.dataholders.Entity; +import org.rcsb.mmtf.dataholders.Group; +import org.rcsb.mmtf.decoder.GenericDecoder; +import org.rcsb.mmtf.decoder.ReaderUtils; /** * Tests for the {@link EncoderUtils} class of static methods. @@ -64,7 +72,7 @@ public void testGenerateBioassemblies() { bioAssemblyOneTransforms.add(bioassOneTransTwo); bioAssemblyOne.setTransformList(bioAssemblyOneTransforms); AdapterToStructureData adapterToStructureData = new AdapterToStructureData(); - adapterToStructureData.initStructure(0,0,0,0,0,"DUMY"); + adapterToStructureData.initStructure(0,0,0,0,0,"DUMMY"); for (int i=0; i< bioAssemblyData.size(); i++){ for (int j=0; j< bioAssemblyData.get(i).getTransformList().size();j++) adapterToStructureData.setBioAssemblyTrans(i, @@ -73,7 +81,6 @@ public void testGenerateBioassemblies() { bioAssemblyData.get(i).getName()); } List generateBioass = EncoderUtils.generateBioassemblies(adapterToStructureData); - assertEquals(bioAssemblyData.get(0).getName(), generateBioass.get(0).getName()); assertArrayEquals(bioAssemblyData.get(0).getTransformList().get(0).getChainIndexList(), generateBioass.get(0).getTransformList().get(0).getChainIndexList()); @@ -81,6 +88,62 @@ public void testGenerateBioassemblies() { generateBioass.get(0).getTransformList().get(0).getMatrix(),0.0); } + @Test + public void testGetEntityType() throws IOException { + StructureDataInterface structureDataInterface = getDefaultFullData(); + assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 0),"polymer"); + assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 1),"non-polymer"); + assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 2),"non-polymer"); + assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 3),"non-polymer"); + assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 4),"non-polymer"); + assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 5),"water"); + } + + @Test + public void testGenerateEntityList() throws IOException { + StructureDataInterface structureDataInterface = getDefaultFullData(); + Entity[] entities = EncoderUtils.generateEntityList(structureDataInterface); + assertEquals(entities.length, 4); + assertArrayEquals(entities[0].getChainIndexList(), new int[] {0}); + assertArrayEquals(entities[1].getChainIndexList(), new int[] {1}); + assertArrayEquals(entities[2].getChainIndexList(), new int[] {2,3,4}); + assertArrayEquals(entities[3].getChainIndexList(), new int[] {5}); + + assertEquals(entities[0].getDescription(),"BROMODOMAIN ADJACENT TO ZINC FINGER DOMAIN PROTEIN 2B"); + assertEquals(entities[1].getDescription(),"4-FLUOROBENZAMIDOXIME"); + assertEquals(entities[2].getDescription(),"METHANOL"); + assertEquals(entities[3].getDescription(),"water"); + + + assertEquals(entities[0].getSequence(),"SMSVKKPKRDDSKDLALCSMILTEMETHEDAWPFLLPVNLKLVPGYKKVIKKPMDFSTIREKLSSGQYPNLETFALDVRLVFDNCETFNEDDSDIGRAGHNMRKYFEKKWTDTFKVS"); + assertEquals(entities[1].getSequence(),""); + assertEquals(entities[2].getSequence(),""); + assertEquals(entities[3].getSequence(),""); + + assertEquals(entities[0].getType(),"polymer"); + assertEquals(entities[1].getType(),"non-polymer"); + assertEquals(entities[2].getType(),"non-polymer"); + assertEquals(entities[3].getType(),"water"); + + } + + @Test + public void testGenerateGroupMap() throws IOException { + StructureDataInterface structureDataInterface = getDefaultFullData(); + Group[] groupList = EncoderUtils.generateGroupList(structureDataInterface); + assertEquals(groupList.length, 29); + } + + /** + * Get the default data for the full format. + * @return a {@link StructureDataInterface} for the full data. + * @throws IOException + */ + private StructureDataInterface getDefaultFullData() throws IOException { + ClassLoader classLoader = getClass().getClassLoader(); + Path inFile = Paths.get(classLoader.getResource("mmtf/4cup.mmtf").getFile()); + return new GenericDecoder(ReaderUtils.getDataFromFile(inFile)); + } private void testOutput(byte[] encodeByteArr, int codecId) { assertArrayEquals(encodeByteArr, new OptionParser(codecId, 0, 0).getHeader()); From 50718945379c48fa8fd68025ea86fe3156f9d02d Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 15:16:22 -0400 Subject: [PATCH 06/10] Update the docs for the TestEncoderUtils --- .../rcsb/mmtf/encoder/TestEncoderUtils.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java index ac9c11a..447dde0 100644 --- a/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java +++ b/mmtf-codec/src/test/java/org/rcsb/mmtf/encoder/TestEncoderUtils.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; +import org.rcsb.mmtf.api.StructureAdapterInterface; import org.rcsb.mmtf.api.StructureDataInterface; import org.rcsb.mmtf.codec.CharCodecs; import org.rcsb.mmtf.codec.FloatCodecs; @@ -56,6 +57,10 @@ public void testEmptyArrs() { } } + /** + * Test that Bioassemblies can be generated correctly form a {@link StructureDataInterface} + * to a {@link StructureAdapterInterface} + */ @Test public void testGenerateBioassemblies() { List bioAssemblyData = new ArrayList<>(); @@ -88,8 +93,11 @@ public void testGenerateBioassemblies() { generateBioass.get(0).getTransformList().get(0).getMatrix(),0.0); } + /** + * Test that the entity type can be retrieved from a chain index + */ @Test - public void testGetEntityType() throws IOException { + public void testGetEntityType() { StructureDataInterface structureDataInterface = getDefaultFullData(); assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 0),"polymer"); assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 1),"non-polymer"); @@ -99,8 +107,11 @@ public void testGetEntityType() throws IOException { assertEquals(EncoderUtils.getTypeFromChainId(structureDataInterface, 5),"water"); } + /** + * Test that the entityList can be generated correctly. + */ @Test - public void testGenerateEntityList() throws IOException { + public void testGenerateEntityList() { StructureDataInterface structureDataInterface = getDefaultFullData(); Entity[] entities = EncoderUtils.generateEntityList(structureDataInterface); assertEquals(entities.length, 4); @@ -127,8 +138,11 @@ public void testGenerateEntityList() throws IOException { } + /** + * Test that the groupList can be generated correctly + */ @Test - public void testGenerateGroupMap() throws IOException { + public void testGenerateGroupMap() { StructureDataInterface structureDataInterface = getDefaultFullData(); Group[] groupList = EncoderUtils.generateGroupList(structureDataInterface); assertEquals(groupList.length, 29); @@ -137,12 +151,16 @@ public void testGenerateGroupMap() throws IOException { /** * Get the default data for the full format. * @return a {@link StructureDataInterface} for the full data. - * @throws IOException */ - private StructureDataInterface getDefaultFullData() throws IOException { + private StructureDataInterface getDefaultFullData() { ClassLoader classLoader = getClass().getClassLoader(); Path inFile = Paths.get(classLoader.getResource("mmtf/4cup.mmtf").getFile()); - return new GenericDecoder(ReaderUtils.getDataFromFile(inFile)); + try { + return new GenericDecoder(ReaderUtils.getDataFromFile(inFile)); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException(); + } } private void testOutput(byte[] encodeByteArr, int codecId) { From 2bff8bcb9deb74ae9c4c9f1239655b125b45a9c1 Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 15:20:02 -0400 Subject: [PATCH 07/10] Updated CHANGELOG preparing for v0.2.2 release --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9a581c..2f4701b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,4 +42,12 @@ All notable changes to this project will be documented in this file, following t - Added package info for the codec project - Improved docs and refactoring of test names +## v0.2.2 - 2016-07-05 +### Changed + - Refactored the generation of Bioassemblies + - Refactored generateGroupMap to generateGroupList + +### Added + - getBioassemblyName added to the API - returin the BioassemblyName as a string. + - Tests for EncoderUtils From 7cffcdd3b8eac3499468d6f7433370355ab50b32 Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 15:22:16 -0400 Subject: [PATCH 08/10] Fixed typeo and updated README --- CHANGELOG.md | 2 +- README.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f4701b..9b9f66f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,6 @@ All notable changes to this project will be documented in this file, following t - Refactored generateGroupMap to generateGroupList ### Added - - getBioassemblyName added to the API - returin the BioassemblyName as a string. + - getBioassemblyName added to the API - return the BioassemblyName as a string. - Tests for EncoderUtils diff --git a/README.md b/README.md index fbbfd9c..15ef746 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Build Status](https://travis-ci.org/rcsb/mmtf-java.svg?branch=master)](https://travis-ci.org/rcsb/mmtf-java) [![Coverage Status](https://coveralls.io/repos/github/rcsb/mmtf-java/badge.svg?branch=master)](https://coveralls.io/github/rcsb/mmtf-java?branch=master) [![Dependency Status](https://www.versioneye.com/user/projects/56feb8e5fcd19a0039f1553c/badge.svg?style=flat)](https://www.versioneye.com/user/projects/56feb8e5fcd19a0039f1553c) -[![Version](http://img.shields.io/badge/version-0.2.1-blue.svg?style=flat)](https://github.com/rcsb/mmtf-java/) [![License](http://img.shields.io/badge/license-Apache 2.0-blue.svg?style=flat)](https://github.com/rcsb/mmtf-java/blob/master/LICENSE.txt) +[![Version](http://img.shields.io/badge/version-0.2.2-blue.svg?style=flat)](https://github.com/rcsb/mmtf-java/) [![License](http://img.shields.io/badge/license-Apache 2.0-blue.svg?style=flat)](https://github.com/rcsb/mmtf-java/blob/master/LICENSE.txt) @@ -16,12 +16,12 @@ The alpha release is available on Maven central. org.rcsb mmtf-codec - 0.2.1 + 0.2.2 org.rcsb mmtf-api - 0.2.1 + 0.2.2 ``` From 3d3292a0520eb69902ad91a80c15efac18060644 Mon Sep 17 00:00:00 2001 From: abradle Date: Thu, 23 Jun 2016 15:41:59 +0100 Subject: [PATCH 09/10] Update to the serialization module - only construct object mapper once. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b9f66f..3aa6897 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ All notable changes to this project will be documented in this file, following t ### Changed - Refactored the generation of Bioassemblies - Refactored generateGroupMap to generateGroupList + - Update to the serialization module - only construct object mapper once ### Added - getBioassemblyName added to the API - return the BioassemblyName as a string. From 3be09c943f6c20386434b86d3ee74077227db07b Mon Sep 17 00:00:00 2001 From: abradle Date: Tue, 5 Jul 2016 15:30:35 -0400 Subject: [PATCH 10/10] Update dependencies to latest version. --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 44d72db..7f72b2c 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ maven-jar-plugin - 3.0.1 + 3.0.2 maven-scm-plugin @@ -98,7 +98,7 @@ maven-source-plugin - 3.0.0 + 3.0.1 maven-failsafe-plugin @@ -309,7 +309,7 @@ com.versioneye versioneye-maven-plugin - 3.9.2 + 3.10.0