1 package jalview.ext.jmol;
3 import jalview.datamodel.SequenceI;
4 import jalview.io.AppletFormatAdapter;
7 import java.io.IOException;
8 import java.util.HashSet;
10 import java.util.Vector;
12 import MCview.PDBfile;
15 * This is not a unit test, rather it is a bulk End-to-End scan for sequences
16 * consistency for PDB files parsed with JmolParser vs. Jalview's PDBfile
17 * parser. The directory of PDB files to test must be provided in the launch
23 public class JmolVsJalviewPDBParserEndToEndTest
26 public static void main(String[] args)
28 if (args == null || args[0] == null)
31 .println("You must provide a PDB directory in the launch argument");
35 // args[0] must provide the directory of PDB files to run the test with
36 String testDir = args[0];
37 System.out.println("PDB directory : " + testDir);
38 File pdbDir = new File(testDir);
39 String testFiles[] = pdbDir.list();
40 testFileParser(testDir, testFiles);
43 public static void testFileParser(String testDir, String[] testFiles)
45 Set<String> failedFiles = new HashSet<String>();
46 int totalSeqScanned = 0, totalFail = 0;
47 for (String pdbStr : testFiles)
49 String testFile = testDir + "/" + pdbStr;
50 PDBfile mctest = null;
51 JmolParser jtest = null;
54 mctest = new PDBfile(false, false, false, testFile,
55 AppletFormatAdapter.FILE);
56 jtest = new JmolParser(testFile, AppletFormatAdapter.FILE);
57 } catch (IOException e)
59 System.err.println("Exception thrown while parsing : " + pdbStr);
61 Vector<SequenceI> seqs = jtest.getSeqs();
62 Vector<SequenceI> mcseqs = mctest.getSeqs();
64 for (SequenceI sq : seqs)
68 String testSeq = mcseqs.remove(0).getSequenceAsString();
69 if (!sq.getSequenceAsString().equals(testSeq))
72 System.err.println("Test Failed for " + pdbStr + ". Diff:");
73 System.err.println(sq.getSequenceAsString());
74 System.err.println(testSeq);
75 failedFiles.add(pdbStr);
86 System.out.println("\n\nTotal sequence Scanned : " + totalSeqScanned);
87 System.out.println("Total sequence passed : "
88 + (totalSeqScanned - totalFail));
89 System.out.println("Total sequence failed : " + totalFail);
91 .println("Success rate: "
92 + ((totalSeqScanned - totalFail) * 100)
93 / totalSeqScanned + "%");
94 System.out.println("\nList of " + failedFiles.size()
95 + " file(s) with sequence diffs:");
96 for (String problemFile : failedFiles)
98 System.out.println(++count + ". " + problemFile);