/*******************************************************************************
* Copyright (c) 2007-2008 The Bioclipse Project and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* www.eclipse.org�epl-v10.html <http://www.eclipse.org/legal/epl-v10.html>
*
* Contributors:
* shk3
*
*******************************************************************************/
package net.bioclipse.spectrum.business.test;
import static org.junit.Assert.assertEquals;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import junit.framework.Assert;
import net.bioclipse.core.MockIFile;
import net.bioclipse.core.ResourcePathTransformer;
import net.bioclipse.core.business.BioclipseException;
import net.bioclipse.core.domain.ISpectrum;
import net.bioclipse.spectrum.business.ISpectrumManager;
import net.bioclipse.spectrum.domain.IJumboSpectrum;
import net.bioclipse.spectrum.domain.JumboSpectrum;
import net.bioclipse.spectrum.editor.SpectrumEditor;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.junit.Test;
public abstract class AbstractSpectrumManagerPluginTest{
protected static ISpectrumManager spectrummanager;
@Test
public void testLoadSpectrum_String() throws IOException,
BioclipseException,
CoreException, URISyntaxException {
URI uri = getClass().getResource("/testFiles/aug07.dx").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( path);
Assert.assertEquals(0,((IJumboSpectrum)spectrum).getJumboObject().getPeakListElements().size());
Assert.assertEquals(1,((IJumboSpectrum)spectrum).getJumboObject().getSpectrumDataElements().size());
uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
url=FileLocator.toFileURL(uri.toURL());
path=url.getFile();
spectrum = spectrummanager.loadSpectrum( path);
Assert.assertEquals(0,((IJumboSpectrum)spectrum).getJumboObject().getPeakListElements().size());
Assert.assertEquals(1,((IJumboSpectrum)spectrum).getJumboObject().getSpectrumDataElements().size());
}
@Test
public void testSaveSpectrum_JumboSpectrum_IFile_String() throws URISyntaxException, IOException, BioclipseException, CoreException{
URI uri = getClass().getResource("/testFiles/aug07.dx").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( path);
IFile target=new MockIFile();
spectrummanager.saveSpectrum((JumboSpectrum)spectrum, target, SpectrumEditor.JCAMP_TYPE);
byte[] bytes=new byte[3];
target.getContents().read(bytes);
Assert.assertEquals(35, bytes[0]);
Assert.assertEquals(35, bytes[1]);
Assert.assertEquals(84, bytes[2]);
}
@Test
public void testSaveSpectrum_IJumboSpectrum_String_String() throws URISyntaxException, IOException, BioclipseException, CoreException{
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url = FileLocator.toFileURL(uri.toURL());
String path = url.getFile();
JumboSpectrum spectrum = spectrummanager.loadSpectrum( path);
String filename = "/Virtual/testSaveSpectrum"+System.currentTimeMillis()+".jdx";
spectrummanager.saveSpectrum(spectrum, filename, SpectrumEditor.JCAMP_TYPE);
byte[] bytes=new byte[1000];
IFile file= ResourcePathTransformer.getInstance().transform(filename);
file.getContents().read(bytes);
StringBuffer sb=new StringBuffer();
for(int i=0;i<bytes.length;i++){
sb.append((char)bytes[i]);
}
assertEquals(0, sb.toString().indexOf( "##TITLE=" ));
}
@Test
public void testLoadSpectrum_IFile() throws IOException,
BioclipseException,
CoreException, URISyntaxException {
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( new MockIFile(path));
Assert.assertEquals(0,((IJumboSpectrum)spectrum).getJumboObject().getPeakListElements().size());
Assert.assertEquals(1,((IJumboSpectrum)spectrum).getJumboObject().getSpectrumDataElements().size());
}
@Test
public void testLoadSpectrum_InputStream_String() throws IOException,
BioclipseException,
CoreException, URISyntaxException {
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( new MockIFile(path).getContents(),SpectrumEditor.CML_TYPE);
Assert.assertEquals(0,((IJumboSpectrum)spectrum).getJumboObject().getPeakListElements().size());
Assert.assertEquals(1,((IJumboSpectrum)spectrum).getJumboObject().getSpectrumDataElements().size());
}
@Test
public void testFromCml() throws BioclipseException, IOException, URISyntaxException{
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
FileInputStream fis=new FileInputStream(path);
StringBuffer strContent=new StringBuffer();
int ch;
while( (ch = fis.read()) != -1)
strContent.append((char)ch);
ISpectrum spectrum=spectrummanager.fromCml(strContent.toString());
Assert.assertEquals(0,((IJumboSpectrum)spectrum).getJumboObject().getPeakListElements().size());
Assert.assertEquals(1,((IJumboSpectrum)spectrum).getJumboObject().getSpectrumDataElements().size());
}
@Test
public void testCreate_ISpectrum() throws IOException,
BioclipseException,
CoreException, URISyntaxException {
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( new MockIFile(path));
IJumboSpectrum jumbospectrum=spectrummanager.create(spectrum);
Assert.assertTrue(jumbospectrum.getJumboObject().toXML().contains("<metadata name=\"dc:origin\">D.HENNEBERG, MAX-PLANCK INSTITUTE, MULHEIM, WEST GERMANY</metadata>"));
}
@Test
public void testPickPeaks_IJumboSpectrum() throws IOException,
BioclipseException,
CoreException, URISyntaxException {
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( new MockIFile(path));
IJumboSpectrum jumbospectrum=spectrummanager.pickPeaks((IJumboSpectrum)spectrum);
Assert.assertEquals(1,jumbospectrum.getJumboObject().getPeakListElements().get(0).getPeakElements().size());
}
@Test
public void testCalculateSimilarityWCCWithIntensities() throws Exception{
double[] peaks1=new double[]{1,2,3};
double[] peaks2=new double[]{1,2,3};
double[] intensities1=new double[]{1,1,0.5};
double[] intensities2=new double[]{1,1,0.5};
double similarity=spectrummanager.calculateSimilarityWCC( peaks1, intensities1, peaks2, intensities2, 1 );
Assert.assertEquals( 1.0,similarity,0.01 );
peaks2=new double[]{1,2};
intensities2=new double[]{1,0.5};
similarity=spectrummanager.calculateSimilarityWCC( peaks1, intensities1, peaks2, intensities2, 1 );
Assert.assertEquals( 0.89,similarity,0.01 );
}
@Test
public void testCalculateSimilarityWCC() throws Exception{
double[] peaks1=new double[]{1,2,3};
double[] peaks2=new double[]{1,2,3};
double similarity=spectrummanager.calculateSimilarityWCC( peaks1, peaks2, 1 );
Assert.assertEquals( 1.0,similarity,0.01 );
peaks2=new double[]{1,2};
similarity=spectrummanager.calculateSimilarityWCC( peaks1, peaks2, 1 );
Assert.assertEquals( 0.81,similarity,0.01 );
}
@Test
public void testCalculateSimilarityWCC_ISpectrum_ISpectrum() throws Exception{
URI uri = getClass().getResource("/testFiles/spectrum2-local.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( new MockIFile(path));
double similarity=spectrummanager.calculateSimilarityWCC( spectrum, spectrum, 1 );
Assert.assertEquals( 1.0,similarity,0.01 );
}
@Test
public void testDetectFileType() throws Exception{
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
Assert.assertEquals( SpectrumEditor.CML_TYPE, spectrummanager.detectFileType( new MockIFile(path).getFileExtension() ));
uri = getClass().getResource("/testFiles/aug07.dx").toURI();
url=FileLocator.toFileURL(uri.toURL());
path=url.getFile();
Assert.assertEquals( SpectrumEditor.JCAMP_TYPE, spectrummanager.detectFileType( new MockIFile(path).getFileExtension() ));
}
@Test
public void testLoadAndPeakPickWithHkoExample() throws Exception{
URI uri = getClass().getResource("/testFiles/spectrum3.xml").toURI();
URL url=FileLocator.toFileURL(uri.toURL());
String path=url.getFile();
ISpectrum spectrum = spectrummanager.loadSpectrum( new MockIFile(path));
Assert.assertEquals(0,((IJumboSpectrum)spectrum).getJumboObject().getPeakListElements().size());
Assert.assertEquals(1,((IJumboSpectrum)spectrum).getJumboObject().getSpectrumDataElements().size());
IJumboSpectrum peakspectrum=spectrummanager.pickPeaks((IJumboSpectrum)spectrum);
Assert.assertEquals(1,peakspectrum.getJumboObject().getPeakListElements().get(0).getPeakElements().size());
Assert.assertEquals(42.0,peakspectrum.getJumboObject().getPeakListElements().get(0).getPeakElements().get( 0 ).getXValue(),.1);
}
@Test
public void testCreateEmpty() throws BioclipseException{
IJumboSpectrum spectrum = spectrummanager.createEmpty();
Assert.assertEquals(1, spectrum.getJumboObject().getPeakListElements().size());
}
}