JAL-2344 override to ignore (obsolete?) JalviewFileView
[jalview.git] / test / jalview / ext / jmol / JmolVsJalviewPDBParserEndToEndTest.java
1 package jalview.ext.jmol;
2
3 import jalview.datamodel.SequenceI;
4 import jalview.io.DataSourceType;
5
6 import java.io.File;
7 import java.io.IOException;
8 import java.util.HashSet;
9 import java.util.Set;
10 import java.util.Vector;
11
12 import MCview.PDBfile;
13
14 /**
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
18  * args.
19  * 
20  * @author tcnofoegbu
21  *
22  */
23 public class JmolVsJalviewPDBParserEndToEndTest
24 {
25
26   public static void main(String[] args)
27   {
28     if (args == null || args[0] == null)
29     {
30       System.err
31               .println("You must provide a PDB directory in the launch argument");
32       return;
33     }
34
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);
41   }
42
43   public static void testFileParser(String testDir, String[] testFiles)
44   {
45     Set<String> failedFiles = new HashSet<String>();
46     int totalSeqScanned = 0, totalFail = 0;
47     for (String pdbStr : testFiles)
48     {
49       String testFile = testDir + "/" + pdbStr;
50       PDBfile mctest = null;
51       JmolParser jtest = null;
52       try
53       {
54         mctest = new PDBfile(false, false, false, testFile,
55                 DataSourceType.FILE);
56         jtest = new JmolParser(false, false, false, testFile,
57                 DataSourceType.FILE);
58       } catch (IOException e)
59       {
60         System.err.println("Exception thrown while parsing : " + pdbStr);
61       }
62       Vector<SequenceI> seqs = jtest.getSeqs();
63       Vector<SequenceI> mcseqs = mctest.getSeqs();
64
65       for (SequenceI sq : seqs)
66       {
67         try
68         {
69         String testSeq = mcseqs.remove(0).getSequenceAsString();
70           if (!sq.getSequenceAsString().equals(testSeq))
71         {
72           ++totalFail;
73             System.err.println("Test Failed for " + pdbStr + ". Diff:");
74           System.err.println(sq.getSequenceAsString());
75           System.err.println(testSeq);
76           failedFiles.add(pdbStr);
77         }
78           ++totalSeqScanned;
79         } catch (Exception e)
80         {
81           e.printStackTrace();
82         }
83       }
84     }
85     int count = 0;
86
87     System.out.println("\n\nTotal sequence Scanned : " + totalSeqScanned);
88     System.out.println("Total sequence passed : "
89             + (totalSeqScanned - totalFail));
90     System.out.println("Total sequence failed : " + totalFail);
91     System.out
92             .println("Success rate: "
93                     + ((totalSeqScanned - totalFail) * 100)
94                     / totalSeqScanned + "%");
95     System.out.println("\nList of " + failedFiles.size()
96             + " file(s) with sequence diffs:");
97     for (String problemFile : failedFiles)
98     {
99       System.out.println(++count + ". " + problemFile);
100     }
101   }
102 }