2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.ext.jmol;
23 import jalview.datamodel.SequenceI;
24 import jalview.io.AppletFormatAdapter;
27 import java.io.IOException;
28 import java.util.HashSet;
30 import java.util.Vector;
32 import MCview.PDBfile;
35 * This is not a unit test, rather it is a bulk End-to-End scan for sequences
36 * consistency for PDB files parsed with JmolParser vs. Jalview's PDBfile
37 * parser. The directory of PDB files to test must be provided in the launch
43 public class JmolVsJalviewPDBParserEndToEndTest
46 public static void main(String[] args)
48 if (args == null || args[0] == null)
51 .println("You must provide a PDB directory in the launch argument");
55 // args[0] must provide the directory of PDB files to run the test with
56 String testDir = args[0];
57 System.out.println("PDB directory : " + testDir);
58 File pdbDir = new File(testDir);
59 String testFiles[] = pdbDir.list();
60 testFileParser(testDir, testFiles);
63 public static void testFileParser(String testDir, String[] testFiles)
65 Set<String> failedFiles = new HashSet<String>();
66 int totalSeqScanned = 0, totalFail = 0;
67 for (String pdbStr : testFiles)
69 String testFile = testDir + "/" + pdbStr;
70 PDBfile mctest = null;
71 JmolParser jtest = null;
74 mctest = new PDBfile(false, false, false, testFile,
75 AppletFormatAdapter.FILE);
76 jtest = new JmolParser(testFile, AppletFormatAdapter.FILE);
77 } catch (IOException e)
79 System.err.println("Exception thrown while parsing : " + pdbStr);
81 Vector<SequenceI> seqs = jtest.getSeqs();
82 Vector<SequenceI> mcseqs = mctest.getSeqs();
84 for (SequenceI sq : seqs)
88 String testSeq = mcseqs.remove(0).getSequenceAsString();
89 if (!sq.getSequenceAsString().equals(testSeq))
92 System.err.println("Test Failed for " + pdbStr + ". Diff:");
93 System.err.println(sq.getSequenceAsString());
94 System.err.println(testSeq);
95 failedFiles.add(pdbStr);
106 System.out.println("\n\nTotal sequence Scanned : " + totalSeqScanned);
107 System.out.println("Total sequence passed : "
108 + (totalSeqScanned - totalFail));
109 System.out.println("Total sequence failed : " + totalFail);
111 .println("Success rate: "
112 + ((totalSeqScanned - totalFail) * 100)
113 / totalSeqScanned + "%");
114 System.out.println("\nList of " + failedFiles.size()
115 + " file(s) with sequence diffs:");
116 for (String problemFile : failedFiles)
118 System.out.println(++count + ". " + problemFile);