Skip to content

Commit a191165

Browse files
committed
Fixing bug in mmcif writing: ins codes were written as ascii code
1 parent bfb6a31 commit a191165

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

biojava-structure/src/main/java/org/biojava/nbio/structure/io/mmcif/MMCIFFileTools.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ record = "ATOM";
322322

323323
String insCode = MMCIF_MISSING_VALUE;
324324
if (g.getResidueNumber().getInsCode()!=null ) {
325-
insCode = Integer.toString(g.getResidueNumber().getInsCode());
325+
insCode = Character.toString(g.getResidueNumber().getInsCode());
326326
}
327327

328328
AtomSite atomSite = new AtomSite();

biojava-structure/src/test/java/org/biojava/nbio/structure/io/TestMMCIFWriting.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,5 +160,63 @@ public void test2N3J() throws IOException, StructureException {
160160
}
161161

162162
}
163+
164+
@Test
165+
public void test1A2C() throws IOException, StructureException {
166+
167+
// a structure with insertion codes
168+
169+
AtomCache cache = new AtomCache();
170+
171+
StructureIO.setAtomCache(cache);
172+
173+
cache.setUseMmCif(true);
174+
175+
FileParsingParameters params = new FileParsingParameters();
176+
params.setAlignSeqRes(true);
177+
cache.setFileParsingParams(params);
178+
179+
Structure originalStruct = StructureIO.getStructure("1A2C");
180+
181+
File outputFile = File.createTempFile("biojava_testing_", ".cif");
182+
183+
184+
FileWriter fw = new FileWriter(outputFile);
185+
fw.write(originalStruct.toMMCIF());
186+
fw.close();
187+
188+
189+
MMcifParser parser = new SimpleMMcifParser();
190+
191+
SimpleMMcifConsumer consumer = new SimpleMMcifConsumer();
192+
193+
FileParsingParameters fileParsingParams = new FileParsingParameters();
194+
fileParsingParams.setAlignSeqRes(true);
195+
196+
consumer.setFileParsingParameters(fileParsingParams);
197+
198+
parser.addMMcifConsumer(consumer);
199+
200+
//parser.parse(new BufferedReader(new FileReader(new File("/home/duarte_j/test.cif"))));
201+
parser.parse(new BufferedReader(new FileReader(outputFile)));
202+
203+
Structure readStruct = consumer.getStructure();
204+
205+
assertNotNull(readStruct);
206+
207+
assertEquals(originalStruct.getChains().size(), readStruct.getChains().size());
208+
209+
for (int i=0;i<originalStruct.getChains().size();i++) {
210+
assertEquals(originalStruct.getChains().get(i).getAtomGroups().size(),
211+
readStruct.getChains().get(i).getAtomGroups().size());
212+
213+
Chain origChain = originalStruct.getChains().get(i);
214+
Chain readChain = readStruct.getChains().get(i);
215+
216+
assertEquals(origChain.getAtomGroups().size(), readChain.getAtomGroups().size());
217+
//assertEquals(origChain.getSeqResGroups().size(), readChain.getSeqResGroups().size());
218+
}
219+
220+
}
163221

164222
}

0 commit comments

Comments
 (0)