/* EvokedPotentialApplicationData.java created 2008-01-12 * */ package org.signalml.app.method.ep; import java.util.ArrayList; import java.util.List; import org.signalml.app.document.TagDocument; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.method.ep.view.tags.TagStyleGroup; import org.signalml.app.view.signal.SignalView; import org.signalml.domain.signal.SignalProcessingChain; import org.signalml.domain.signal.samplesource.MultichannelSampleSource; import org.signalml.domain.signal.space.MarkerSegmentedSampleSource; import org.signalml.domain.signal.space.SignalSpace; import org.signalml.domain.signal.space.TimeSpaceType; import org.signalml.method.ep.EvokedPotentialData; import org.signalml.plugin.export.SignalMLException; /** EvokedPotentialApplicationData * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class EvokedPotentialApplicationData extends EvokedPotentialData { private static final long serialVersionUID = 1L; private SignalDocument signalDocument; private TagDocument tagDocument; public EvokedPotentialApplicationData() { super(); } public SignalDocument getSignalDocument() { return signalDocument; } public void setSignalDocument(SignalDocument signalDocument) { this.signalDocument = signalDocument; } public TagDocument getTagDocument() { return tagDocument; } public void setTagDocument(TagDocument tagDocument) { this.tagDocument = tagDocument; } public void calculate() throws SignalMLException { this.setStyledTagSet(tagDocument != null ? tagDocument.getTagSet() : null); SignalSpace signalSpace = getParameters().getSignalSpace(); MultichannelSampleSource sampleSource; if (signalDocument.getDocumentView() != null) { SignalView signalView = (SignalView) signalDocument.getDocumentView(); SignalProcessingChain signalChain = signalView.getMasterPlot().getSignalChain(); sampleSource = signalChain.createLevelCopyChain(signalSpace.getSignalSourceLevel()); } else{ sampleSource = signalDocument.getSampleSource(); } List<String> artifactTagStyleNames = new ArrayList<String>(); for (TagStyleGroup styleGroup: getParameters().getArtifactTagStyles()) { artifactTagStyleNames.addAll(styleGroup.getTagStyleNames()); } List<MarkerSegmentedSampleSource> averagedSampleSources = new ArrayList<MarkerSegmentedSampleSource>(); List<MarkerSegmentedSampleSource> baselineSampleSources = new ArrayList<MarkerSegmentedSampleSource>(); for (TagStyleGroup tagStyleGroup: getParameters().getAveragedTagStyles()) { List<String> styleNames = tagStyleGroup.getTagStyleNames(); Double startAveragingTime = null, endAveragingTime = null; if (signalSpace.getTimeSpaceType() == TimeSpaceType.SELECTION_BASED) { startAveragingTime = signalSpace.getSelectionTimeSpace().getPosition(); endAveragingTime = startAveragingTime + signalSpace.getSelectionTimeSpace().getLength(); } MarkerSegmentedSampleSource segmentedSampleSource = new MarkerSegmentedSampleSource( sampleSource, startAveragingTime, endAveragingTime, getStyledTagSet(), styleNames, artifactTagStyleNames, getParameters().getAveragingStartTime(), getParameters().getAveragingTimeLength(), signalSpace.getChannelSpace()); MarkerSegmentedSampleSource baselineSampleSource = new MarkerSegmentedSampleSource( sampleSource, startAveragingTime, endAveragingTime, getStyledTagSet(), styleNames, artifactTagStyleNames, getParameters().getBaselineTimeStart(), getParameters().getBaselineTimeLength(), signalSpace.getChannelSpace()); averagedSampleSources.add(segmentedSampleSource); baselineSampleSources.add(baselineSampleSource); } setSampleSource(averagedSampleSources); setBaselineSampleSources(baselineSampleSources); } }