Skip to content

Commit 9f05a76

Browse files
author
Sebastian Bittrich
committed
stub for to test date format parsing
1 parent 4824817 commit 9f05a76

3 files changed

Lines changed: 54 additions & 16 deletions

File tree

biojava-integrationtest/src/test/java/org/biojava/nbio/structure/test/io/cif/CifFileConsumerImplTest.java

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,62 @@
99

1010
import java.io.IOException;
1111
import java.io.InputStream;
12+
import java.io.UncheckedIOException;
1213
import java.nio.file.Files;
1314
import java.nio.file.Paths;
15+
import java.util.Date;
1416
import java.util.List;
1517
import java.util.concurrent.atomic.AtomicInteger;
18+
import java.util.stream.Stream;
19+
import java.util.zip.GZIPInputStream;
1620

1721
import static org.junit.Assert.*;
1822

1923
public class CifFileConsumerImplTest {
24+
/**
25+
* java.lang.NumberFormatException: multiple points have been thrown.
26+
*/
2027
@Test
21-
public void test2z4j() {
22-
28+
@Ignore("ignored for now as Bcif file source may change - currently using local files")
29+
public void testNumberFormat() {
30+
Stream.of("1z4s", "4hec", "1dzw", "2y28").forEach(pdbId -> {
31+
System.out.println(pdbId);
32+
Structure cif = loadLocalCif(pdbId);
33+
assertNumberFormat(cif);
34+
Structure bcif = loadLocalBcif(pdbId);
35+
assertNumberFormat(bcif);
36+
});
37+
}
38+
39+
private Structure loadLocalCif(String pdbId) {
40+
try {
41+
String middle = pdbId.substring(1, 3);
42+
return CifFileConverter.convert(CifReader.readText(new GZIPInputStream(Files.newInputStream(Paths.get("/var/pdb/" + middle + "/" + pdbId + ".cif.gz")))));
43+
} catch (IOException e) {
44+
throw new UncheckedIOException(e);
45+
}
46+
}
47+
48+
private Structure loadLocalBcif(String pdbId) {
49+
try {
50+
String middle = pdbId.substring(1, 3);
51+
return CifFileConverter.convert(CifReader.readBinary(Files.newInputStream(Paths.get("/var/bcif/" + middle + "/" + pdbId + ".bcif"))));
52+
} catch (IOException e) {
53+
throw new UncheckedIOException(e);
54+
}
55+
}
56+
57+
private void assertNumberFormat(Structure structure) {
58+
PDBHeader header = structure.getPDBHeader();
59+
assertNotNull(header);
60+
Date relDate = header.getRelDate();
61+
assertNotNull(relDate);
62+
Date modDate = header.getModDate();
63+
assertNotNull(modDate);
2364
}
2465

2566
@Test
26-
@Ignore
67+
@Ignore("ignore long-running test, do run to track performance")
2768
public void parseEntireArchive() throws IOException {
2869
AtomicInteger counter = new AtomicInteger(0);
2970
AtomicInteger failed = new AtomicInteger(0);

biojava-structure/src/main/java/org/biojava/nbio/structure/io/cif/CifFileConsumerImpl.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22

33
import org.biojava.nbio.structure.*;
44
import org.biojava.nbio.structure.io.*;
5-
// TODO detach the impl from the redundant mmCIF impl
65
import org.biojava.nbio.structure.io.mmcif.ChemCompGroupFactory;
76
import org.biojava.nbio.structure.io.mmcif.model.DatabasePdbrevRecord;
8-
import org.biojava.nbio.structure.io.mmcif.model.EntitySrcSyn;
97
import org.biojava.nbio.structure.quaternary.BioAssemblyInfo;
108
import org.biojava.nbio.structure.quaternary.BiologicalAssemblyBuilder;
119
import org.biojava.nbio.structure.quaternary.BiologicalAssemblyTransformation;
1210
import org.biojava.nbio.structure.xtal.CrystalCell;
1311
import org.biojava.nbio.structure.xtal.SpaceGroup;
1412
import org.biojava.nbio.structure.xtal.SymoplibParser;
15-
import org.rcsb.cif.model.*;
13+
import org.rcsb.cif.model.FloatColumn;
14+
import org.rcsb.cif.model.IntColumn;
15+
import org.rcsb.cif.model.StrColumn;
1616
import org.rcsb.cif.model.generated.*;
1717
import org.slf4j.Logger;
1818
import org.slf4j.LoggerFactory;
@@ -24,6 +24,8 @@
2424
import java.util.stream.Collectors;
2525
import java.util.stream.IntStream;
2626

27+
// TODO detach the impl from the redundant mmCIF impl
28+
2729
/**
2830
* An implementation of a CifFileConsumer for BioJava. Will process the information provided by a CifFile instance and
2931
* use it to build up a {@link Structure} object. The implementation is for the most part really close to that in
@@ -566,13 +568,13 @@ public void consumeDatabasePDBrevRecord(DatabasePDBRevRecord databasePDBrevRecor
566568
revRecords.addAll(convert(databasePDBrevRecord));
567569
}
568570

569-
private List<DatabasePdbrevRecord> convert(Category databasePDBrevRecord) {
571+
private List<DatabasePdbrevRecord> convert(DatabasePDBRevRecord databasePDBrevRecord) {
570572
List<DatabasePdbrevRecord> revRecords = new ArrayList<>();
571573
for (int rowIndex = 0; rowIndex < databasePDBrevRecord.getRowCount(); rowIndex++) {
572574
DatabasePdbrevRecord revRecord = new DatabasePdbrevRecord();
573-
revRecord.setDetails(databasePDBrevRecord.getColumn("details").getStringData(rowIndex));
574-
revRecord.setRev_num(databasePDBrevRecord.getColumn("rev_num").getStringData(rowIndex));
575-
revRecord.setType(databasePDBrevRecord.getColumn("type").getStringData(rowIndex));
575+
revRecord.setDetails(databasePDBrevRecord.getDetails().get(rowIndex));
576+
revRecord.setRev_num(databasePDBrevRecord.getRevNum().getStringData(rowIndex));
577+
revRecord.setType(databasePDBrevRecord.getType().get(rowIndex));
576578
revRecords.add(revRecord);
577579
}
578580
return revRecords;
@@ -825,6 +827,7 @@ public void consumeStruct(Struct struct) {
825827

826828
if (struct.isDefined() && struct.getEntryId().isDefined()) {
827829
pdbHeader.setIdCode(struct.getEntryId().get());
830+
structure.setPDBCode(struct.getEntryId().get());
828831
}
829832
}
830833

biojava-structure/src/test/java/org/biojava/nbio/structure/io/cif/CifFileConsumerImplTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.biojava.nbio.structure.io.CifFileReader;
88
import org.biojava.nbio.structure.io.FileParsingParameters;
99
import org.biojava.nbio.structure.io.PDBFileParser;
10-
import org.junit.Ignore;
1110
import org.junit.Test;
1211
import org.rcsb.cif.CifReader;
1312
import org.rcsb.cif.model.CifFile;
@@ -17,17 +16,12 @@
1716
import java.io.ByteArrayInputStream;
1817
import java.io.IOException;
1918
import java.io.InputStream;
20-
import java.nio.file.Files;
21-
import java.nio.file.Path;
22-
import java.nio.file.Paths;
2319
import java.text.ParseException;
2420
import java.text.SimpleDateFormat;
2521
import java.util.Date;
2622
import java.util.List;
2723
import java.util.Locale;
2824
import java.util.Objects;
29-
import java.util.concurrent.atomic.AtomicInteger;
30-
import java.util.stream.Stream;
3125
import java.util.zip.GZIPInputStream;
3226

3327
import static org.junit.Assert.*;

0 commit comments

Comments
 (0)