Skip to content

Commit 06a2076

Browse files
author
Matt Larson
committed
Fix for large coordinates to avoid ',' grouping character in coordinates.
1 parent c6b12cd commit 06a2076

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

biojava-structure/src/main/java/org/biojava/nbio/structure/io/FileConvert.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,14 @@ public class FileConvert {
6868
d3.setMaximumIntegerDigits(4);
6969
d3.setMinimumFractionDigits(3);
7070
d3.setMaximumFractionDigits(3);
71+
d3.setGroupingUsed(false);
7172
}
7273
public static DecimalFormat d2 = (DecimalFormat)NumberFormat.getInstance(Locale.US);
7374
static {
7475
d2.setMaximumIntegerDigits(3);
7576
d2.setMinimumFractionDigits(2);
7677
d2.setMaximumFractionDigits(2);
78+
d2.setGroupingUsed(false);
7779
}
7880

7981
private static final String newline = System.getProperty("line.separator");
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.biojava.nbio.structure.io;
2+
3+
import static org.junit.Assert.fail;
4+
5+
import java.io.IOException;
6+
7+
import org.biojava.nbio.structure.Atom;
8+
import org.biojava.nbio.structure.Group;
9+
import org.biojava.nbio.structure.Structure;
10+
import org.biojava.nbio.structure.StructureException;
11+
import org.biojava.nbio.structure.StructureIO;
12+
import org.biojava.nbio.structure.align.util.AtomCache;
13+
import org.junit.Test;
14+
15+
public class TestWriteLargeCoordinatePDB {
16+
17+
// This test checks that 'grouping' characters such as commas are not
18+
// incorrectly introduced into formatted PDB coordinate fields.
19+
// See FileConvert.d3 formatter.
20+
@Test
21+
public void TestWrite5D9Q() throws IOException, StructureException {
22+
23+
AtomCache cache = new AtomCache();
24+
cache.setUseMmCif(false);
25+
26+
FileParsingParameters params = new FileParsingParameters();
27+
params.setHeaderOnly(false);
28+
cache.setFileParsingParams(params);
29+
30+
StructureIO.setAtomCache(cache);
31+
32+
// Example structure with large coordinates in PDB file.
33+
Structure sPDB = StructureIO.getStructure("5D9Q");
34+
35+
// If 48 column for a ATOM/HETATM has a comma, fail.
36+
for (Group g : sPDB.getChain("K").getAtomGroups()) {
37+
for (Atom a : g.getAtoms()) {
38+
if (a.toPDB().contains(",")) {
39+
fail("Comma present in ATOM/HETATM record.");
40+
}
41+
}
42+
}
43+
44+
//try (PrintWriter p = new PrintWriter(new FileWriter(new File("/tmp/test.pdb")))) {
45+
// p.print(sPDB.toPDB());
46+
//}
47+
}
48+
49+
}

0 commit comments

Comments
 (0)