package org.signalml.domain.signal.space;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import org.junit.After;
import org.signalml.app.document.TagDocument;
import org.signalml.app.document.signal.RawSignalDocument;
import org.signalml.app.document.signal.SignalDocument;
import org.signalml.app.model.signal.SignalExportDescriptor;
import org.signalml.domain.signal.raw.RawSignalDescriptor;
import org.signalml.domain.signal.raw.RawSignalWriter;
import org.signalml.domain.signal.samplesource.DoubleArraySampleSource;
import org.signalml.plugin.export.SignalMLException;
import org.signalml.plugin.export.signal.SignalSelectionType;
import org.signalml.plugin.export.signal.TagStyle;
public class AbstractTagSegmentedTest {
protected static final int CHANNEL_COUNT = 3;
protected static final int SAMPLE_COUNT = 128 * 15;
protected static final String AVERAGED_TAG_NAME = "averaged";
protected static final String AVERAGED_TAG_NAME_2 = "averaged2";
protected static final String ARTIFACT_TAG_NAME = "artifact";
protected double samplingFrequency = 128.0;
protected double[][] samples;
protected File signalFile = new File("epTestSignalFile.bin");
protected TagStyle averagedTagStyle = new TagStyle(SignalSelectionType.CHANNEL, AVERAGED_TAG_NAME, "", Color.black, Color.BLACK, 1);
protected TagStyle averagedTagStyle2 = new TagStyle(SignalSelectionType.CHANNEL, AVERAGED_TAG_NAME_2, "", Color.black, Color.BLACK, 1);
protected TagStyle artifactTagStyle = new TagStyle(SignalSelectionType.CHANNEL, ARTIFACT_TAG_NAME, "", Color.blue, Color.blue, 1);
protected TagStyle otherTagStyle = new TagStyle(SignalSelectionType.CHANNEL, "not_averaged", "", Color.black, Color.BLACK, 1);
protected TagStyle[] tagStyles = new TagStyle[] {
averagedTagStyle, averagedTagStyle2, artifactTagStyle, otherTagStyle
};
protected double[][] getSamples() {
if (samples == null) {
samples = new double[CHANNEL_COUNT][SAMPLE_COUNT];
for (int channel = 0; channel < CHANNEL_COUNT; channel++) {
for (int i = 0; i < SAMPLE_COUNT; i++)
if (channel == 0)
samples[channel][i] = (i) / samplingFrequency;
else
samples[channel][i] = SAMPLE_COUNT - (i) / samplingFrequency;
}
}
return samples;
}
protected SignalDocument getSignalDocument() throws SignalMLException, IOException {
//write data to file
DoubleArraySampleSource sampleSource = new DoubleArraySampleSource(getSamples());
RawSignalWriter writer = new RawSignalWriter();
writer.writeSignal(signalFile, sampleSource, new SignalExportDescriptor(), null);
//get signal document
RawSignalDescriptor descriptor = new RawSignalDescriptor();
descriptor.setSampleCount(getSamples()[0].length);
descriptor.setChannelCount(getSamples().length);
RawSignalDocument signalDocument = new RawSignalDocument(descriptor);
signalDocument.setBackingFile(signalFile);
signalDocument.openDocument();
return signalDocument;
}
protected TagDocument getTagDocument() throws SignalMLException, IOException {
TagDocument tagDocument = new TagDocument();
for (TagStyle style: tagStyles)
tagDocument.getTagSet().addStyle(style);
return tagDocument;
}
@After
public void cleanUp() {
signalFile.delete();
}
}