Clover icon

Coverage Report

  1. Project Clover database Wed Dec 3 2025 17:03:17 GMT
  2. Package jalview.ws.jabaws

File DisorderAnnotExportImport.java

 

Code metrics

12
54
6
1
211
156
14
0.26
9
6
2.33

Classes

Class Line # Actions
DisorderAnnotExportImport 56 54 14
0.00%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
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.
11    *
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.
16    *
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.
20    */
21    package jalview.ws.jabaws;
22   
23    import java.util.Locale;
24    import static org.testng.AssertJUnit.assertNotNull;
25    import static org.testng.AssertJUnit.assertTrue;
26   
27    import jalview.bin.Cache;
28    import jalview.bin.Console;
29    import jalview.datamodel.AlignmentAnnotation;
30    import jalview.datamodel.AlignmentI;
31    import jalview.gui.JvOptionPane;
32    import jalview.io.AnnotationFile;
33    import jalview.io.DataSourceType;
34    import jalview.io.FileFormat;
35    import jalview.io.FormatAdapter;
36    import jalview.io.StockholmFileTest;
37    import jalview.ws.api.ServiceWithParameters;
38    import jalview.ws.jws2.Jws2Discoverer;
39    import jalview.ws.jws2.SeqAnnotationServiceCalcWorker;
40    import jalview.ws.slivkaws.SlivkaWSDiscoverer;
41   
42    import java.util.ArrayList;
43    import java.util.List;
44   
45    import org.testng.Assert;
46    import org.testng.annotations.AfterClass;
47    import org.testng.annotations.BeforeClass;
48    import org.testng.annotations.DataProvider;
49    import org.testng.annotations.Test;
50   
51    /*
52    * All methods in this class are set to the Network group because setUpBeforeClass will fail
53    * if there is no network.
54    */
55    @Test(singleThreaded = true)
 
56    public class DisorderAnnotExportImport
57    {
58   
 
59  0 toggle @BeforeClass(alwaysRun = true)
60    public void setUpJvOptionPane()
61    {
62  0 JvOptionPane.setInteractiveMode(false);
63  0 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
64    }
65   
66    public static String testseqs = "examples/uniref50.fa";
67   
68    public static Jws2Discoverer disc;
69   
70    public static List<ServiceWithParameters> iupreds;
71   
72    jalview.ws.jws2.SeqAnnotationServiceCalcWorker disorderClient;
73   
74    public static jalview.gui.AlignFrame af = null;
75   
 
76  0 toggle @BeforeClass(alwaysRun = true)
77    public static void setUpBeforeClass() throws Exception
78    {
79  0 Cache.loadProperties("test/jalview/io/testProps.jvprops");
80  0 Console.initLogger();
81  0 disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
82   
83  0 while (disc.isRunning())
84    {
85    // don't get services until discoverer has finished
86  0 Thread.sleep(100);
87    }
88   
89  0 SlivkaWSDiscoverer disc2 = SlivkaWSDiscoverer.getInstance();
90  0 disc2.startDiscoverer();
91  0 while (disc2.isRunning())
92    {
93  0 Thread.sleep(100);
94    }
95  0 iupreds = new ArrayList<>();
96  0 for (ServiceWithParameters svc : disc2.getServices())
97    {
98  0 if (svc.getNameURI().toLowerCase().contains("iupred"))
99    {
100  0 iupreds.add(svc);
101    }
102    }
103  0 assertTrue("Couldn't discover any IUPred services to use to test.",
104    iupreds.size() > 0);
105  0 jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
106  0 af = fl.LoadFileWaitTillLoaded(testseqs,
107    jalview.io.DataSourceType.FILE);
108  0 assertNotNull("Couldn't load test data ('" + testseqs + "')", af);
109    }
110   
 
111  0 toggle @AfterClass(alwaysRun = true)
112    public static void tearDownAfterClass() throws Exception
113    {
114  0 if (af != null)
115    {
116  0 af.setVisible(false);
117  0 af.dispose();
118  0 af = null;
119    }
120    }
121   
 
122  0 toggle @DataProvider(name="getIuPreds",parallel = false)
123    public static ServiceWithParameters[][] getIuPreds()
124    {
125  0 ServiceWithParameters[][] services = new ServiceWithParameters[iupreds
126    .size()][1];
127   
128  0 int i = 0;
129  0 for (ServiceWithParameters iupred : iupreds)
130    {
131  0 services[i++][0] = iupred;
132    }
133  0 return services;
134    }
135   
136    /**
137    * test for patches to JAL-1294
138    */
 
139  0 toggle @Test(groups = { "External", "Network" },dataProvider = "getIuPreds")
140    public void testDisorderAnnotExport(ServiceWithParameters iuPred)
141    {
142  0 disorderClient = new SeqAnnotationServiceCalcWorker(iuPred, af, null,
143    null);
144  0 af.getViewport().getCalcManager().startWorker(disorderClient);
145  0 do
146    {
147  0 try
148    {
149  0 Thread.sleep(50);
150    } catch (InterruptedException x)
151    {
152    }
153  0 ;
154  0 } while (af.getViewport().getCalcManager().isWorking());
155  0 AlignmentI orig_alig = af.getViewport().getAlignment();
156    // NOTE: Consensus annotation row cannot be exported and reimported
157    // faithfully - so we remove them
158  0 List<AlignmentAnnotation> toremove = new ArrayList<>();
159  0 for (AlignmentAnnotation aa : orig_alig.getAlignmentAnnotation())
160    {
161  0 if (aa.autoCalculated)
162    {
163  0 toremove.add(aa);
164    }
165    }
166  0 for (AlignmentAnnotation aa : toremove)
167    {
168  0 orig_alig.deleteAnnotation(aa);
169    }
170  0 checkAnnotationFileIO("Testing IUPred Annotation IO", orig_alig);
171   
172    }
173   
 
174  0 toggle static void checkAnnotationFileIO(String testname, AlignmentI al)
175    {
176  0 try
177    {
178  0 String aligfileout = FileFormat.Pfam.getWriter(al)
179    .print(al.getSequencesArray(), true);
180  0 String anfileout = new AnnotationFile()
181    .printAnnotationsForAlignment(al);
182  0 assertTrue("Test " + testname
183    + "\nAlignment annotation file was not regenerated. Null string",
184    anfileout != null);
185  0 assertTrue("Test " + testname
186    + "\nAlignment annotation file was not regenerated. Empty string",
187    anfileout.length() > "JALVIEW_ANNOTATION".length());
188   
189  0 System.out.println(
190    "Output annotation file:\n" + anfileout + "\n<<EOF\n");
191   
192  0 AlignmentI al_new = new FormatAdapter().readFile(aligfileout,
193    DataSourceType.PASTE, FileFormat.Pfam);
194  0 assertTrue("Test " + testname
195    + "\nregenerated annotation file did not annotate alignment.",
196    new AnnotationFile().readAnnotationFile(al_new, anfileout,
197    DataSourceType.PASTE));
198   
199    // test for consistency in io
200  0 StockholmFileTest.testAlignmentEquivalence(al, al_new, true, false,
201    false);
202  0 return;
203    } catch (Exception e)
204    {
205  0 e.printStackTrace();
206    }
207  0 Assert.fail("Test " + testname
208    + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
209    }
210   
211    }