/*
* Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
* Copyright (C) 2014 The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.io;
import static org.junit.Assert.*;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.schemes.AnnotationColourGradient;
import jalview.schemes.ColourSchemeI;
import java.io.File;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class Jalview2xmlTests
{
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
jalview.bin.Jalview.main(new String[] {"-props","test/src/jalview/io/testProps.jvprops"});
}
/**
* @throws java.lang.Exception
*/
@AfterClass
public static void tearDownAfterClass() throws Exception
{
jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
}
public int countDsAnn(jalview.viewmodel.AlignmentViewport avp)
{
int numdsann=0;
for (SequenceI sq: avp.getAlignment().getDataset().getSequences()) {
if (sq.getAnnotation() != null)
{
for (AlignmentAnnotation dssa : sq.getAnnotation())
{
if (dssa.isValidStruc())
{
numdsann++;
}
}
}
}
return numdsann;
}
@Test
public void testRNAStructureRecovery() throws Exception
{
String inFile = "examples/RF00031_folded.stk";
String tfile = File.createTempFile("JalviewTest", ".jvp").getAbsolutePath();
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(inFile, FormatAdapter.FILE);
assertTrue("Didn't read input file "+inFile, af!=null);
int olddsann=countDsAnn(af.getViewport());
assertTrue("Didn't find any dataset annotations",olddsann>0);
af.rnahelicesColour_actionPerformed(null);
assertTrue("Couldn't apply RNA helices colourscheme",af.getViewport().getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour);
assertTrue("Failed to store as a project.",af.saveAlignment(tfile, "Jalview"));
af.closeMenuItem_actionPerformed(true);
af=null;
af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
assertTrue("Failed to import new project", af!=null);
int newdsann=countDsAnn(af.getViewport());
assertTrue("Differing numbers of dataset sequence annotation\nOriginally "+olddsann+" and now "+newdsann,olddsann==newdsann);
System.out.println("Read in same number of annotations as originally present ("+olddsann+")");
assertTrue("RNA helices colourscheme was not applied on import.",af.getViewport().getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour);
}
@Test
public void testTCoffeeScores() throws Exception
{
String inFile = "examples/uniref50.fa",inAnnot="examples/uniref50.score_ascii";
String tfile = File.createTempFile("JalviewTest", ".jvp").getAbsolutePath();
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(inFile, FormatAdapter.FILE);
assertTrue("Didn't read input file "+inFile, af!=null);
af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null,null);
assertTrue(
"Didn't set T-coffee colourscheme",
af.getViewport().getGlobalColourScheme().getClass()
.equals(jalview.schemes.TCoffeeColourScheme.class));
assertTrue(
"Recognise T-Coffee score from string",
jalview.schemes.ColourSchemeProperty.getColour(af.getViewport()
.getAlignment(),
jalview.schemes.ColourSchemeProperty.getColourName(af
.getViewport().getGlobalColourScheme())) != null);
assertTrue("Failed to store as a project.",af.saveAlignment(tfile, "Jalview"));
af.closeMenuItem_actionPerformed(true);
af=null;
af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
assertTrue("Failed to import new project", af!=null);
assertTrue("Didn't set T-coffee colourscheme for imported project.",af.getViewport().getGlobalColourScheme().getClass().equals(jalview.schemes.TCoffeeColourScheme.class));
System.out.println("T-Coffee score shading successfully recovered from project.");
}
@Test
public void testColourByAnnotScores() throws Exception
{
String inFile = "examples/uniref50.fa",inAnnot="examples/testdata/uniref50_iupred.jva";
String tfile = File.createTempFile("JalviewTest", ".jvp").getAbsolutePath();
AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(inFile, FormatAdapter.FILE);
assertTrue("Didn't read input file "+inFile, af!=null);
af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null,null);
AlignmentAnnotation[] aa = af.getViewport().getAlignment().getSequenceAt(0).getAnnotation("IUPredWS (Short)");
assertTrue("Didn't find any IUPred annotation to use to shade alignment.",aa!=null && aa.length>0);
AnnotationColourGradient cs = new jalview.schemes.AnnotationColourGradient(aa[0], null, AnnotationColourGradient.ABOVE_THRESHOLD);
AnnotationColourGradient gcs = new jalview.schemes.AnnotationColourGradient(aa[0], null, AnnotationColourGradient.BELOW_THRESHOLD);
cs.setSeqAssociated(true);
gcs.setSeqAssociated(true);
af.changeColour(cs);
SequenceGroup sg = new SequenceGroup();
sg.setStartRes(57);
sg.setEndRes(92);
sg.cs = gcs;
af.getViewport().getAlignment().addGroup(sg);
sg.addSequence(af.getViewport().getAlignment().getSequenceAt(1), false);
sg.addSequence(af.getViewport().getAlignment().getSequenceAt(2), true);
af.alignPanel.alignmentChanged();
assertTrue("Failed to store as a project.",af.saveAlignment(tfile, "Jalview"));
af.closeMenuItem_actionPerformed(true);
af=null;
af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
assertTrue("Failed to import new project", af!=null);
// check for group and alignment colourschemes
ColourSchemeI _rcs=af.getViewport().getGlobalColourScheme();
ColourSchemeI _rgcs=af.getViewport().getAlignment().getGroups().get(0).cs;
assertTrue("Didn't recover global colourscheme",_rcs!=null);
assertTrue("Didn't recover annotation colour global scheme",_rcs instanceof AnnotationColourGradient);
AnnotationColourGradient __rcs = (AnnotationColourGradient) _rcs;
assertTrue("Annotation colourscheme wasn't sequence associated",__rcs.isSeqAssociated());
boolean diffseqcols=false,diffgseqcols=false;
SequenceI[] sqs=af.getViewport().getAlignment().getSequencesArray();
for (int p=0,pSize=af.getViewport().getAlignment().getWidth();p