This commit is contained in:
2021-10-14 13:47:35 +02:00
commit 6625a8dfaa
4026 changed files with 844291 additions and 0 deletions
@@ -0,0 +1 @@
OV_ADD_PROJECTS("PLUGINS")
@@ -0,0 +1,2 @@
# Add all the subdirs as projects of the named branch
OV_ADD_PROJECTS("PLUGINS_PROCESSING")
@@ -0,0 +1,29 @@
PROJECT(openvibe-plugins-acquisition)
SET(PROJECT_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
SET(PROJECT_VERSION ${OV_GLOBAL_VERSION_STRING})
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.h src/*.inl)
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRC_FILES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER ${PLUGINS_FOLDER}
COMPILE_FLAGS "-DOVP_Exports -DOVP_Shared")
# ---------------------------------
INCLUDE("FindOpenViBE")
INCLUDE("FindOpenViBECommon")
INCLUDE("FindOpenViBEToolkit")
INCLUDE("FindOpenViBEModuleEBML")
INCLUDE("FindOpenViBEModuleSocket")
# -----------------------------
# Install files
# -----------------------------
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
INSTALL(DIRECTORY box-tutorials DESTINATION ${DIST_DATADIR}/openvibe/scenarios/)
@@ -0,0 +1,387 @@
<OpenViBE-Scenario>
<FormatVersion>1</FormatVersion>
<Creator>openvibe</Creator>
<CreatorVersion>2.0</CreatorVersion>
<Boxes>
<Box>
<Identifier>(0x000029b8, 0x00004235)</Identifier>
<Name>Acquisition client</Name>
<AlgorithmClassIdentifier>(0x35d225cb, 0x3e6e3a5f)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Experiment information</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Signal stream</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Output>
<Output>
<TypeIdentifier>(0x013df452, 0xa3a8879a)</TypeIdentifier>
<Name>Channel localisation</Name>
</Output>
<Output>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel units</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Acquisition server hostname</Name>
<DefaultValue>${AcquisitionServer_HostName}</DefaultValue>
<Value>${AcquisitionServer_HostName}</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Acquisition server port</Name>
<DefaultValue>1024</DefaultValue>
<Value>1024</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>48.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa963f5, 0x1a638cd4)</Identifier>
<Value>25</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>352.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x0d4656c0, 0xc95b1fa8)</Value>
</Attribute>
<Attribute>
<Identifier>(0xad100179, 0xa3c984ab)</Identifier>
<Value>136</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005c0f5a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>5</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000044d9, 0x0000415f)</Identifier>
<Name>Signal display</Name>
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Data</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel Units</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
<Name>Display Mode</Name>
<DefaultValue>Scan</DefaultValue>
<Value>Scan</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
<Name>Auto vertical scale</Name>
<DefaultValue>Per channel</DefaultValue>
<Value>Per channel</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Scale refresh interval (secs)</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Scale</Name>
<DefaultValue>100</DefaultValue>
<Value>100</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Offset</Name>
<DefaultValue>0</DefaultValue>
<Value>0</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Time Scale</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Horizontal ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Vertical ruler</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Multiview</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>160.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa963f5, 0x1a638cd4)</Identifier>
<Value>38</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>368.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xad100179, 0xa3c984ab)</Identifier>
<Value>113</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x00276b19)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x000019c2, 0x00003e36)</Identifier>
<Source>
<BoxIdentifier>(0x000029b8, 0x00004235)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000044d9, 0x0000415f)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
<Attributes>
<Attribute>
<Identifier>(0x1b32c44c, 0x1905e0e9)</Identifier>
<Value>67</Value>
</Attribute>
<Attribute>
<Identifier>(0x358ae8b5, 0x0f8bacd1)</Identifier>
<Value>337</Value>
</Attribute>
<Attribute>
<Identifier>(0x3f0a3b27, 0x570913d2)</Identifier>
<Value>136</Value>
</Attribute>
<Attribute>
<Identifier>(0x6267b5c5, 0x676e3e42)</Identifier>
<Value>353</Value>
</Attribute>
</Attributes>
</Link>
<Link>
<Identifier>(0x00002352, 0x00007dcd)</Identifier>
<Source>
<BoxIdentifier>(0x000029b8, 0x00004235)</BoxIdentifier>
<BoxOutputIndex>4</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000044d9, 0x0000415f)</BoxIdentifier>
<BoxInputIndex>2</BoxInputIndex>
</Target>
<Attributes>
<Attribute>
<Identifier>(0x1b32c44c, 0x1905e0e9)</Identifier>
<Value>67</Value>
</Attribute>
<Attribute>
<Identifier>(0x358ae8b5, 0x0f8bacd1)</Identifier>
<Value>382</Value>
</Attribute>
<Attribute>
<Identifier>(0x3f0a3b27, 0x570913d2)</Identifier>
<Value>136</Value>
</Attribute>
<Attribute>
<Identifier>(0x6267b5c5, 0x676e3e42)</Identifier>
<Value>383</Value>
</Attribute>
</Attributes>
</Link>
<Link>
<Identifier>(0x00005ba9, 0x00007356)</Identifier>
<Source>
<BoxIdentifier>(0x000029b8, 0x00004235)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000044d9, 0x0000415f)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
<Attributes>
<Attribute>
<Identifier>(0x1b32c44c, 0x1905e0e9)</Identifier>
<Value>67</Value>
</Attribute>
<Attribute>
<Identifier>(0x358ae8b5, 0x0f8bacd1)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x3f0a3b27, 0x570913d2)</Identifier>
<Value>136</Value>
</Attribute>
<Attribute>
<Identifier>(0x6267b5c5, 0x676e3e42)</Identifier>
<Value>368</Value>
</Attribute>
</Attributes>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x00002398, 0x00002d9d)</Identifier>
<Text>The &lt;i&gt;&lt;b&gt;Acquisition Client&lt;/b&gt;&lt;/i&gt; box
receives data from the OpenViBE acquisition
server. You should have the OpenViBE
acquisition server started and acquiring to
let this scenario work correctly. In case
of connection errors, you should read a
message in the console.</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>624</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>64</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x00005018, 0x00007ee0)</Identifier>
<Text>The &lt;i&gt;Signal Display&lt;/i&gt; box display the
acquired data.</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>624</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>176</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x00005a08, 0x00002b8c)</Identifier>
<Text>You can browse each box' documentation by selecting the box and pressing &lt;b&gt;F1&lt;/b&gt;</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>512</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>240</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":1,"identifier":"(0x0000228a, 0x0000253b)","index":0,"name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":1},{"boxIdentifier":"(0x000044d9, 0x0000415f)","childCount":0,"identifier":"(0x00005a9f, 0x00004ede)","index":0,"parentIdentifier":"(0xffffffff, 0xffffffff)","type":3},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00001786, 0x00000497)","index":0,"name":"Default tab","parentIdentifier":"(0x0000228a, 0x0000253b)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x00005f28, 0x000016db)","index":0,"name":"Empty","parentIdentifier":"(0x00001786, 0x00000497)","type":0}]</Data>
</Entry>
</Metadata>
<Attributes>
<Attribute>
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
<Value>1.0</Value>
</Attribute>
<Attribute>
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
<Value>Network acquisition example</Value>
</Attribute>
<Attribute>
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
<Value>http://openvibe.inria.fr/tutorial-the-most-basic-openvibe-setup/</Value>
</Attribute>
<Attribute>
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
<Value>box-tutorials</Value>
</Attribute>
<Attribute>
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
<Value>Inria</Value>
</Attribute>
</Attributes>
</OpenViBE-Scenario>
@@ -0,0 +1,61 @@
/**
* \page BoxAlgorithm_AcquisitionClient Acquisition client
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Description|
Opens a socket to read experiment information, signal, stimulations and channel localization data sent across the network.
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Description|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Outputs|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Outputs|
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Output1|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Output1|
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Output2|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Output2|
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Output3|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Output3|
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Output4|
Channel localisation flow
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Output4|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Settings|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Settings|
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Setting1|
EEG server hostname
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Setting1|
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Setting2|
EEG server port
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Setting2|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Examples|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_AcquisitionClient_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_AcquisitionClient_Miscellaneous|
*/
@@ -0,0 +1,159 @@
#include "ovpCBoxAlgorithmAcquisitionClient.h"
#include <limits>
namespace OpenViBE {
namespace Plugins {
namespace Acquisition {
uint64_t CBoxAlgorithmAcquisitionClient::getClockFrequency() { return 64LL << 32; }
bool CBoxAlgorithmAcquisitionClient::initialize()
{
m_decoder = &getAlgorithmManager().getAlgorithm(getAlgorithmManager().createAlgorithm(OVP_GD_ClassId_Algorithm_AcquisitionDecoder));
m_decoder->initialize();
ip_acquisitionBuffer.initialize(m_decoder->getInputParameter(OVP_GD_Algorithm_AcquisitionDecoder_InputParameterId_MemoryBufferToDecode));
op_bufferDuration.initialize(m_decoder->getOutputParameter(OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_BufferDuration));
op_experimentInfoBuffer.initialize(m_decoder->getOutputParameter(OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_ExperimentInfoStream));
op_signalBuffer.initialize(m_decoder->getOutputParameter(OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_SignalStream));
op_stimulationBuffer.initialize(m_decoder->getOutputParameter(OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_StimulationStream));
op_channelLocalisationBuffer.initialize(m_decoder->getOutputParameter(OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_ChannelLocalisationStream));
op_channelUnitsBuffer.initialize(m_decoder->getOutputParameter(OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_ChannelUnitsStream));
m_lastStartTime = 0;
m_lastEndTime = 0;
m_connectionClient = nullptr;
if (getStaticBoxContext().getOutputCount() < 5)
{
this->getLogManager() << Kernel::LogLevel_Error << "Code expects at least 5 box outputs. Did you update the box?\n";
return false;
}
return true;
}
bool CBoxAlgorithmAcquisitionClient::uninitialize()
{
if (m_connectionClient)
{
m_connectionClient->close();
m_connectionClient->release();
m_connectionClient = nullptr;
}
op_channelUnitsBuffer.uninitialize();
op_channelLocalisationBuffer.uninitialize();
op_stimulationBuffer.uninitialize();
op_signalBuffer.uninitialize();
op_experimentInfoBuffer.uninitialize();
op_bufferDuration.uninitialize();
ip_acquisitionBuffer.uninitialize();
m_decoder->uninitialize();
getAlgorithmManager().releaseAlgorithm(*m_decoder);
m_decoder = nullptr;
return true;
}
bool CBoxAlgorithmAcquisitionClient::processClock(Kernel::CMessageClock& /*msg*/)
{
if (!m_connectionClient)
{
CString name = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0);
const size_t port = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 1);
if (name.length() == 0)
{
this->getLogManager() << Kernel::LogLevel_Warning <<
"Empty server name, please set it to a correct value or set AcquisitionServer_HostName in config files. Defaulting to \"localhost\".\n";
name = "localhost";
}
if (port == std::numeric_limits<size_t>::max() || port == std::numeric_limits<size_t>::min())
{
this->getLogManager() << Kernel::LogLevel_Error << "Invalid value for port : " << port <<
". Please set the port to a positive non-zero integer value.\n";
return false;
}
m_connectionClient = Socket::createConnectionClient();
m_connectionClient->connect(name, port);
if (!m_connectionClient->isConnected())
{
this->getLogManager() << Kernel::LogLevel_Error << "Could not connect to server " << name << ":" << port <<
". Make sure the server is running and in Play state.\n";
return false;
}
}
if (m_connectionClient && m_connectionClient->isReadyToReceive() /* && getPlayerContext().getCurrentTime()>m_lastChunkEndTime */)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
}
return true;
}
bool CBoxAlgorithmAcquisitionClient::process()
{
if (!m_connectionClient || !m_connectionClient->isConnected()) { return false; }
Kernel::IBoxIO& boxContext = this->getDynamicBoxContext();
op_experimentInfoBuffer = boxContext.getOutputChunk(0);
op_signalBuffer = boxContext.getOutputChunk(1);
op_stimulationBuffer = boxContext.getOutputChunk(2);
op_channelLocalisationBuffer = boxContext.getOutputChunk(3);
op_channelUnitsBuffer = boxContext.getOutputChunk(4);
while (m_connectionClient->isReadyToReceive())
{
size_t size = 0;
if (!m_connectionClient->receiveBufferBlocking(&size, sizeof(size)))
{
getLogManager() << Kernel::LogLevel_Error << "Could not receive memory buffer size from the server. Is the server on 'Play'?\n";
return false;
}
if (!ip_acquisitionBuffer->setSize(size, true))
{
getLogManager() << Kernel::LogLevel_Error << "Could not re allocate memory buffer with size " << size << "\n";
return false;
}
if (!m_connectionClient->receiveBufferBlocking(ip_acquisitionBuffer->getDirectPointer(), size))
{
getLogManager() << Kernel::LogLevel_Error << "Could not receive memory buffer content of size " << size << "\n";
return false;
}
m_decoder->process();
if (m_decoder->isOutputTriggerActive(OVP_GD_Algorithm_AcquisitionDecoder_OutputTriggerId_ReceivedHeader)
|| m_decoder->isOutputTriggerActive(OVP_GD_Algorithm_AcquisitionDecoder_OutputTriggerId_ReceivedBuffer)
|| m_decoder->isOutputTriggerActive(OVP_GD_Algorithm_AcquisitionDecoder_OutputTriggerId_ReceivedEnd))
{
boxContext.markOutputAsReadyToSend(0, m_lastStartTime, m_lastEndTime);
boxContext.markOutputAsReadyToSend(1, m_lastStartTime, m_lastEndTime);
boxContext.markOutputAsReadyToSend(2, m_lastStartTime, m_lastEndTime);
if (op_channelLocalisationBuffer->getSize() > 0) { boxContext.markOutputAsReadyToSend(3, m_lastStartTime, m_lastEndTime); }
else { boxContext.setOutputChunkSize(3, 0, true); }
if (op_channelUnitsBuffer->getSize() > 0) { boxContext.markOutputAsReadyToSend(4, m_lastStartTime, m_lastEndTime); }
else { boxContext.setOutputChunkSize(4, 0, true); }
m_lastStartTime = m_lastEndTime;
m_lastEndTime += op_bufferDuration;
// @todo ?
// const double latency=CTime(m_lastChunkEndTime).toSeconds() - CTime(this->getPlayerContext().getCurrentTime()).toSeconds();
const double latency = double(int64_t(m_lastEndTime - this->getPlayerContext().getCurrentTime()) / (1LL << 22)) / 1024.0;
this->getLogManager() << Kernel::LogLevel_Debug << "Acquisition inner latency : " << latency << "\n";
}
}
return true;
}
} // namespace Acquisition
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,83 @@
#pragma once
#include "../ovp_defines.h"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <socket/IConnectionClient.h>
namespace OpenViBE {
namespace Plugins {
namespace Acquisition {
class CBoxAlgorithmAcquisitionClient final : public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
uint64_t getClockFrequency() override;
bool initialize() override;
bool uninitialize() override;
bool processClock(Kernel::CMessageClock& msg) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, OVP_ClassId_BoxAlgorithm_AcquisitionClient)
protected:
Kernel::IAlgorithmProxy* m_decoder = nullptr;
Kernel::TParameterHandler<IMemoryBuffer*> ip_acquisitionBuffer;
Kernel::TParameterHandler<uint64_t> op_bufferDuration;
Kernel::TParameterHandler<IMemoryBuffer*> op_experimentInfoBuffer;
Kernel::TParameterHandler<IMemoryBuffer*> op_signalBuffer;
Kernel::TParameterHandler<IMemoryBuffer*> op_stimulationBuffer;
Kernel::TParameterHandler<IMemoryBuffer*> op_channelLocalisationBuffer;
Kernel::TParameterHandler<IMemoryBuffer*> op_channelUnitsBuffer;
Socket::IConnectionClient* m_connectionClient = nullptr;
uint64_t m_lastStartTime = 0;
uint64_t m_lastEndTime = 0;
};
class CBoxAlgorithmAcquisitionClientDesc final : public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return CString("Acquisition client"); }
CString getAuthorName() const override { return CString("Yann Renard"); }
CString getAuthorCompanyName() const override { return CString("INRIA/IRISA"); }
CString getShortDescription() const override { return CString("A generic network based acquisition client"); }
CString getDetailedDescription() const override
{
return CString("This algorithm waits for EEG data from the network and distributes it into the scenario");
}
CString getCategory() const override { return CString("Acquisition and network IO"); }
CString getVersion() const override { return CString("1.0"); }
CIdentifier getCreatedClass() const override { return OVP_ClassId_BoxAlgorithm_AcquisitionClient; }
IPluginObject* create() override { return new CBoxAlgorithmAcquisitionClient; }
CString getStockItemName() const override { return CString("gtk-connect"); }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addOutput("Experiment information", OV_TypeId_ExperimentInfo);
prototype.addOutput("Signal stream", OV_TypeId_Signal);
prototype.addOutput("Stimulations", OV_TypeId_Stimulations);
prototype.addOutput("Channel localisation", OV_TypeId_ChannelLocalisation);
prototype.addOutput("Channel units", OV_TypeId_ChannelUnits);
prototype.addSetting("Acquisition server hostname", OV_TypeId_String, "${AcquisitionServer_HostName}");
prototype.addSetting("Acquisition server port", OV_TypeId_Integer, "1024");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, OVP_ClassId_BoxAlgorithm_AcquisitionClientDesc)
};
} // namespace Acquisition
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,12 @@
#pragma once
// Boxes
//---------------------------------------------------------------------------------------------------
#define OVP_ClassId_BoxAlgorithm_AcquisitionClient OpenViBE::CIdentifier(0x35D225CB, 0x3E6E3A5F)
#define OVP_ClassId_BoxAlgorithm_AcquisitionClientDesc OpenViBE::CIdentifier(0x7D3061B9, 0x43565E8C)
// Global defines
//---------------------------------------------------------------------------------------------------
#ifdef TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
#include "ovp_global_defines.h"
#endif // TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
@@ -0,0 +1,15 @@
#include "ovp_defines.h"
#include "box-algorithms/ovpCBoxAlgorithmAcquisitionClient.h"
namespace OpenViBE {
namespace Plugins {
namespace Acquisition {
OVP_Declare_Begin()
OVP_Declare_New(CBoxAlgorithmAcquisitionClientDesc)
OVP_Declare_End()
} // namespace Acquisition
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,4 @@
doc/html/*
Doxyfile
.vscode/
test/scenarios-tests/*output*
@@ -0,0 +1,55 @@
PROJECT(openvibe-plugins-artifact)
SET(PROJECT_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
SET(PROJECT_VERSION ${OV_GLOBAL_VERSION_STRING})
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.hpp src/*.h src/*.inl src/*.c)
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRC_FILES}
)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER ${PLUGINS_FOLDER}
COMPILE_FLAGS "-DOVP_Exports -DOVP_Shared -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE")
INCLUDE_DIRECTORIES("src")
# OpenViBE Base
INCLUDE("FindOpenViBE")
INCLUDE("FindOpenViBECommon")
INCLUDE("FindOpenViBEToolkit")
# OpenViBE Module
INCLUDE("FindModuleGeometry")
#INCLUDE("FindOpenViBEModuleSystem")
#INCLUDE("FindOpenViBEModuleXML")
# OpenViBE Third Party
INCLUDE("FindThirdPartyEigen")
# ---------------------------------
# Target macros
# Defines target operating system, architecture and compiler
# ---------------------------------
SET_BUILD_PLATFORM()
# -----------------------------
# Install files
# -----------------------------
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
SET(SUB_DIR_NAME artifact)
INSTALL(DIRECTORY box-tutorials/ DESTINATION ${DIST_DATADIR}/openvibe/scenarios/box-tutorials/${SUB_DIR_NAME})
#INSTALL(DIRECTORY bci-examples/ DESTINATION ${DIST_DATADIR}/openvibe/scenarios/bci-examples/${SUB_DIR_NAME})
# ---------------------------------
# Test applications
# ---------------------------------
IF(OV_COMPILE_TESTS)
#ADD_SUBDIRECTORY(test)
ENDIF()
@@ -0,0 +1,832 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings></Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x0000586a, 0x00001f44)</Identifier>
<Name>Time based epoching</Name>
<AlgorithmClassIdentifier>(0x00777fa0, 0x5dc3f560)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Epoched signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>1.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>480</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00006bd5, 0x0000489b)</Identifier>
<Name>ASR Trainer</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xc05f38ff)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Tran-completed Flag</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename to save model</Name>
<DefaultValue>${Player_ScenarioDirectory}/ASR-model.xml</DefaultValue>
<Value>${Player_ScenarioDirectory}/ASR-model.xml</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Train trigger</Name>
<DefaultValue>OVTK_StimulationId_Train</DefaultValue>
<Value>OVTK_StimulationId_Train</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x5261636b, 0x4d455452)</TypeIdentifier>
<Name>Metric</Name>
<DefaultValue>Euclidian</DefaultValue>
<Value>Euclidian</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Channel ratio to reconstruct</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Rejection limit</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>528</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xe02de2aa, 0x821ba183)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>5</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00007f96, 0x00002d09)</Identifier>
<Name>Stimulation listener</Name>
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulation stream 1</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
<Name>Log level to use</Name>
<DefaultValue>Information</DefaultValue>
<Value>Information</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>592</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf451ad91, 0x14c75f86)</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x11a6038b, 0x7157c284)</Identifier>
<Name>Generic stream reader</Name>
<AlgorithmClassIdentifier>(0x6468099f, 0x0370095a)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 2</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 3</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Path_Data}/scenarios/signals/bci-motor-imagery.ov</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>208</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf37b8e7a, 0x1bc33e4e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005e1c11)</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c649749)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>624</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c64974a)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>480</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>624</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x2b88852d, 0x43d7a773)</Identifier>
<Name>Reference Channel</Name>
<AlgorithmClassIdentifier>(0x444721ad, 0x78342cf5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel</Name>
<DefaultValue>Ref_Nose</DefaultValue>
<Value>Nz</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x7e39891d, 0x32cf5be7)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x5045ebd9, 0x67325c0b)</Identifier>
<Name>Player Controller</Name>
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Stimulation name</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_EndOfFile</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
<Name>Action to perform</Name>
<DefaultValue>Pause</DefaultValue>
<Value>Stop</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>912</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x5194b6cb, 0x7e001787)</Identifier>
<Name>C3;C4;FC3;FC4</Name>
<AlgorithmClassIdentifier>(0x361722e8, 0x311574e8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel List</Name>
<DefaultValue>-</DefaultValue>
<Value>C3;C4;FC3;FC4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
<Name>Action</Name>
<DefaultValue>Select</DefaultValue>
<Value>Select</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>320</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x277826e1, 0xa30a3bd0)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>3</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x558c587f, 0x223f3b67)</Identifier>
<Name>Temporal filter</Name>
<AlgorithmClassIdentifier>(0xb4f9d042, 0x9d79f2e5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Filtered signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2f2c606c, 0x8512ed68)</TypeIdentifier>
<Name>Filter method</Name>
<DefaultValue>Butterworth</DefaultValue>
<Value>Butterworth</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xfa20178e, 0x4cba62e9)</TypeIdentifier>
<Name>Filter type</Name>
<DefaultValue>Low pass</DefaultValue>
<Value>Band pass</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Filter order</Name>
<DefaultValue>4</DefaultValue>
<Value>4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Low cut frequency (Hz)</Name>
<DefaultValue>29</DefaultValue>
<Value>8.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>24.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Pass band ripple (dB)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.500000</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>432</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x001a79f8)</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000bfd, 0x00000a7c)</Identifier>
<Source>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00000d01, 0x00005533)</Identifier>
<Source>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00007f96, 0x00002d09)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000023c3, 0x0000335d)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002551, 0x0000620c)</Identifier>
<Source>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002996, 0x00001419)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5045ebd9, 0x67325c0b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000311a, 0x00000602)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00003869, 0x000048f3)</Identifier>
<Source>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004034, 0x000058ef)</Identifier>
<Source>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000043f4, 0x0000072e)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006db7, 0x00007acd)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x000054d7, 0x00005ae2)</Identifier>
<Text>Input Signal
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>256</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x000054d7, 0x00005ae3)</Identifier>
<Text>Signal Processing
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>432</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x05377d7e, 0x41751bb3)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":592,"identifier":"(0x00001f6c, 0x000012a7)","name":"Display","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":1348},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00003bf6, 0x000002ba)","index":0,"name":"Default tab","parentIdentifier":"(0x00001f6c, 0x000012a7)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x00002c10, 0x00007fa3)","index":0,"name":"Empty","parentIdentifier":"(0x00003bf6, 0x000002ba)","type":0}]</Data>
</Entry>
</Metadata>
<Attributes>
<Attribute>
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4c90d4ad, 0x7a2554ec)</Identifier>
<Value>320</Value>
</Attribute>
<Attribute>
<Identifier>(0x60bc58ab, 0x7a1b4d83)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
<Value>Thibaut Monseigne</Value>
</Attribute>
<Attribute>
<Identifier>(0x7a3a1558, 0xf12c63c2)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x7b814cca, 0x271df6dd)</Identifier>
<Value>475</Value>
</Attribute>
<Attribute>
<Identifier>(0x84009d7c, 0x3c4e763b)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
<Value>1.0</Value>
</Attribute>
<Attribute>
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
<Value>Matrix Classification Training Example</Value>
</Attribute>
<Attribute>
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
<Value>bci-examples</Value>
</Attribute>
<Attribute>
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
<Value>Inria</Value>
</Attribute>
</Attributes>
</OpenViBE-Scenario>
@@ -0,0 +1,457 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>Artefact-Amplitude</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x00000700, 0x00003fcf)</Identifier>
<Name>Time signal</Name>
<AlgorithmClassIdentifier>(0x28a5e7ff, 0x530095de)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Generated signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Sampling frequency</Name>
<DefaultValue>512</DefaultValue>
<Value>512</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Generated epoch sample count</Name>
<DefaultValue>32</DefaultValue>
<Value>32</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>208</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x9e5ca01e, 0x30a4d8c3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00001721, 0x00002728)</Identifier>
<Name>Simple DSP</Name>
<AlgorithmClassIdentifier>(0x00e26fa1, 0x1dbab1b2)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input - A</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Equation</Name>
<DefaultValue>x</DefaultValue>
<Value>sin(2*x)</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x21889dc4, 0x1126497e)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000029af, 0x00003a24)</Identifier>
<Name>Artefact Amplitude</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xb68095e4)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Non-artefact signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Max (mV)</Name>
<DefaultValue>100</DefaultValue>
<Value>0.9</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>336</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x3dd557b8, 0xa3fba55d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00002b7b, 0x00002df8)</Identifier>
<Name>After</Name>
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Data</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel Units</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
<Name>Display Mode</Name>
<DefaultValue>Scan</DefaultValue>
<Value>Scan</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
<Name>Auto vertical scale</Name>
<DefaultValue>Per channel</DefaultValue>
<Value>None</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Scale refresh interval (secs)</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Scale</Name>
<DefaultValue>100</DefaultValue>
<Value>1.5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Offset</Name>
<DefaultValue>0</DefaultValue>
<Value>0</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Time Scale</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Bottom ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Left ruler</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Multiview</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00002b7b, 0x00002df9)</Identifier>
<Name>Before</Name>
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Data</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel Units</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
<Name>Display Mode</Name>
<DefaultValue>Scan</DefaultValue>
<Value>Scan</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
<Name>Auto vertical scale</Name>
<DefaultValue>Per channel</DefaultValue>
<Value>None</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Scale refresh interval (secs)</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Scale</Name>
<DefaultValue>100</DefaultValue>
<Value>1.5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Offset</Name>
<DefaultValue>0</DefaultValue>
<Value>0</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Time Scale</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Bottom ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Left ruler</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Multiview</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>864</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x000011b7, 0x00007822)</Identifier>
<Source>
<BoxIdentifier>(0x00001721, 0x00002728)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00002b7b, 0x00002df9)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000243f, 0x000014b5)</Identifier>
<Source>
<BoxIdentifier>(0x00001721, 0x00002728)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000029af, 0x00003a24)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000027fa, 0x000003f7)</Identifier>
<Source>
<BoxIdentifier>(0x00000700, 0x00003fcf)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00001721, 0x00002728)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000499a, 0x00006eed)</Identifier>
<Source>
<BoxIdentifier>(0x000029af, 0x00003a24)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00002b7b, 0x00002df8)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments></Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":582,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":844},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":2,"dividerPosition":266,"identifier":"(0x000028e6, 0x00005ce6)","index":0,"maxDividerPosition":537,"name":"Vertical split","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":4},{"boxIdentifier":"(0x00002b7b, 0x00002df9)","childCount":0,"identifier":"(0x00005d1e, 0x00006cf8)","index":0,"parentIdentifier":"(0x000028e6, 0x00005ce6)","type":3},{"boxIdentifier":"(0x00002b7b, 0x00002df8)","childCount":0,"identifier":"(0x000023a5, 0x0000366a)","index":1,"parentIdentifier":"(0x000028e6, 0x00005ce6)","type":3}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,62 @@
/**
* \page BoxAlgorithm_ASRProcessor ASR Processor
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Description|
Artifact Subspace Reconstruction (ASR) Trainer (see \ref CASR::process).
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Inputs|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Inputs|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Input1|
The input signal on which the Artifact reconstruction is used.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Input1|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Outputs|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Outputs|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Output1|
Send \"OVTK_StimulationId_TrainCompleted\" if signal is reconstructed.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Output1|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Output2|
The reconstructed signal if needed, the input signal otherwise.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Output2|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Settings|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Settings|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Setting1|
ASR model Filename.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Setting1|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Examples|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Miscellaneous|
*/
@@ -0,0 +1,78 @@
/**
* \page BoxAlgorithm_ASRTrainer ASR Trainer
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Description|
Artifact Subspace Reconstruction (ASR) Trainer (see \ref CASR::train).
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Inputs|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Inputs|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Input1|
Stimulation to start the training.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Input1|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Input1|
The input signal.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Input1|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Outputs|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Outputs|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Output1|
Send \"OVTK_StimulationId_TrainCompleted\" when training is completed.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Output1|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Settings|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Settings|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting1|
ASR model Filename.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting1|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting2|
Stimulation that starts the training.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting2|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting3|
The Metric to use : Riemman or Euclidian.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting3|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting4|
The Channel ratio to reconstruct at maximum in [0;1] 0 for no reconstruction, 1 to allow reconstruction of all channels.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting4|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting5|
The Rejection Limit of ASR model.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting5|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Examples|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Miscellaneous|
*/
@@ -0,0 +1,58 @@
/**
* \page BoxAlgorithm_ArtifactAmplitude Artifact Amplitude
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Description|
Check if one element is higher than Max setting.\nThe signal is returned if no element exceeds the defined value.
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Inputs|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Inputs|
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Input1|
The input signal on which the Artifact detection is used.
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Input1|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Outputs|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Outputs|
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Output1|
The input signal if there were no artifacts .
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Output1|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Settings|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Settings|
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Setting1|
The amplitude threshold.
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Setting1|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Examples|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Miscellaneous|
*/
@@ -0,0 +1,101 @@
#include "CBoxAlgorithmASRProcessor.hpp"
//@todo put functions in this file in sdk it's duplication of file in riemann module
#include "utils/misc.hpp" // For conversion Openvibe to Eigen
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::initialize()
{
//***** Codecs *****
m_SignalDecoder.initialize(*this, 0);
m_stimulationEncoder.initialize(*this, 0);
m_signalEncoder.initialize(*this, 1);
m_signalEncoder.getInputSamplingRate().setReferenceTarget(m_SignalDecoder.getOutputSamplingRate()); // Link Sampling
m_signalEncoder.getInputMatrix().setReferenceTarget(m_SignalDecoder.getOutputMatrix()); // Link Matrix
//***** Pointers *****
m_iMatrix = m_SignalDecoder.getOutputMatrix();
m_oStimulation = m_stimulationEncoder.getInputStimulationSet();
m_oMatrix = m_signalEncoder.getInputMatrix();
// Settings
m_filename = CString(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0)).toASCIIString();
OV_ERROR_UNLESS_KRF(!m_filename.empty(), "Invalid empty model filename", Kernel::ErrorType::BadSetting);
OV_ERROR_UNLESS_KRF(m_asr.loadXML(m_filename), "Loading XML Error", Kernel::ErrorType::BadFileRead);
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::uninitialize()
{
m_SignalDecoder.uninitialize();
m_stimulationEncoder.uninitialize();
m_signalEncoder.uninitialize();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::process()
{
Kernel::IBoxIO& boxCtx = this->getDynamicBoxContext();
for (size_t i = 0; i < boxCtx.getInputChunkCount(0); ++i)
{
m_SignalDecoder.decode(i); // Decode the chunk
OV_ERROR_UNLESS_KRF(m_iMatrix->getDimensionCount() == 2, "Invalid Input Signal", Kernel::ErrorType::BadInput);
const uint64_t start = boxCtx.getInputChunkStartTime(0, i), // Time Code Chunk Start
end = boxCtx.getInputChunkEndTime(0, i); // Time Code Chunk End
if (m_SignalDecoder.isHeaderReceived()) // Header received
{
m_signalEncoder.encodeHeader();
m_stimulationEncoder.encodeHeader();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
if (m_SignalDecoder.isBufferReceived()) // Buffer received
{
const bool prevTrivial = m_asr.getTrivial();
Eigen::MatrixXd in, out;
MatrixConvert(*m_iMatrix, in);
OV_ERROR_UNLESS_KRF(m_asr.process(in, out), "ASR Process Error", Kernel::ErrorType::BadProcessing);
MatrixConvert(out, *m_oMatrix);
m_signalEncoder.encodeBuffer();
const bool newTrivial = m_asr.getTrivial();
if (!newTrivial && !prevTrivial) // We have reconstruct signal
{
m_oStimulation->appendStimulation(OVTK_StimulationId_Artifact, start, 0);
m_stimulationEncoder.encodeBuffer();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
}
if (m_SignalDecoder.isEndReceived()) // Buffer received
{
m_signalEncoder.encodeEnd();
m_stimulationEncoder.encodeEnd();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
boxCtx.markOutputAsReadyToSend(1, start, end);
}
return true;
}
//---------------------------------------------------------------------------------------------------
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,88 @@
///-------------------------------------------------------------------------------------------------
///
/// \file CBoxAlgorithmASRProcessor.hpp
/// \brief Classes of the box ASR Processor.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 08/12/2020.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include "defines.hpp"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <geometry/artifacts/CASR.hpp>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//-------------------------------------------------------------------------------------------------
/// <summary> The class CBoxAlgorithmASRProcessor describes the box Artifact Subspace Reconstruction (ASR) Processor. </summary>
class CBoxAlgorithmASRProcessor final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, ClassId_Box_ASR_Processor)
protected:
//***** Codecs *****
Toolkit::TSignalDecoder<CBoxAlgorithmASRProcessor> m_SignalDecoder; ///< Input Signal Decoder
Toolkit::TStimulationEncoder<CBoxAlgorithmASRProcessor> m_stimulationEncoder; ///< Output Stimulation Encoder
Toolkit::TSignalEncoder<CBoxAlgorithmASRProcessor> m_signalEncoder; ///< Output Signal Encoder
//***** Pointers *****
CMatrix *m_iMatrix = nullptr, ///< Input Matrix Pointer
*m_oMatrix = nullptr; ///< Output Matrix Pointer
IStimulationSet* m_oStimulation = nullptr; ///< Output Stimulation Pointer
//***** ASR *****
std::string m_filename; ///< ASR Model Path
Geometry::CASR m_asr; ///< ASR Model
};
//-------------------------------------------------------------------------------------------------
/// <summary> Descriptor of the box Artifact Subspace Reconstruction (ASR) Processor. </summary>
class CBoxAlgorithmASRProcessorDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return "ASR Processor"; }
CString getAuthorName() const override { return "Thibaut Monseigne"; }
CString getAuthorCompanyName() const override { return "Inria"; }
CString getShortDescription() const override { return "Artifact Subspace Reconstruction (ASR) Processor."; }
CString getDetailedDescription() const override { return "Artifact Subspace Reconstruction (ASR) Processor."; }
CString getCategory() const override { return "Artifact"; }
CString getVersion() const override { return "0.1"; }
CString getStockItemName() const override { return "gtk-execute"; }
CIdentifier getCreatedClass() const override { return ClassId_Box_ASR_Processor; }
IPluginObject* create() override { return new CBoxAlgorithmASRProcessor; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Input Signal", OV_TypeId_Signal);
prototype.addOutput("Signal Reconstructed",OV_TypeId_Stimulations);
prototype.addOutput("Output Signal", OV_TypeId_Signal);
prototype.addSetting("Filename to load model", OV_TypeId_Filename, "${Player_ScenarioDirectory}/ASR-model.xml");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, ClassId_Box_ASR_Processor_Desc)
};
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,182 @@
#include "CBoxAlgorithmASRTrainer.hpp"
//@todo put functions in this file in sdk it's duplication of file in riemann module
#include "utils/misc.hpp" // For conversion Openvibe to Eigen
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::initialize()
{
// Stimulations
m_stimulationDecoder.initialize(*this, 0);
m_iStimulation = m_stimulationDecoder.getOutputStimulationSet();
m_stimulationEncoder.initialize(*this, 0);
m_oStimulation = m_stimulationEncoder.getInputStimulationSet();
// Classes
m_signalEncoder.initialize(*this, 1);
m_iMatrix = m_signalEncoder.getOutputMatrix();
// Settings
m_filename = CString(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0)).toASCIIString();
m_stimulationName = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 1);
m_metric = Geometry::EMetric(uint64_t(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 2)));
m_ratio = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 3);
m_rejection = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 4);
OV_ERROR_UNLESS_KRF(!m_filename.empty(), "Invalid empty model filename", Kernel::ErrorType::BadSetting);
OV_ERROR_UNLESS_KRF(Geometry::InRange(m_ratio, 0, 1), "Channel ratio must be in [0;1], actual : " + std::to_string(m_ratio), Kernel::ErrorType::BadSetting);
OV_ERROR_UNLESS_KRF(m_rejection >= 0, "Rejection limit must be positive, actual : " + std::to_string(m_rejection), Kernel::ErrorType::BadSetting);
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::uninitialize()
{
m_stimulationDecoder.uninitialize();
m_signalEncoder.uninitialize();
m_stimulationEncoder.uninitialize();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::process()
{
if (!m_isTrain)
{
Kernel::IBoxIO& boxCtx = this->getDynamicBoxContext();
//***** Stimulations *****
for (size_t i = 0; i < boxCtx.getInputChunkCount(0); ++i)
{
m_stimulationDecoder.decode(i); // Decode the chunk
const uint64_t start = boxCtx.getInputChunkStartTime(0, i), // Time Code Chunk Start
end = boxCtx.getInputChunkEndTime(0, i); // Time Code Chunk End
if (m_stimulationDecoder.isHeaderReceived())
{
m_stimulationEncoder.encodeHeader();
boxCtx.markOutputAsReadyToSend(0, 0, 0);
}
if (m_stimulationDecoder.isBufferReceived()) // Buffer received
{
for (size_t j = 0; j < m_iStimulation->getStimulationCount(); ++j)
{
if (m_iStimulation->getStimulationIdentifier(j) == m_stimulationName)
{
OV_ERROR_UNLESS_KRF(train(), "Train or Save failed", Kernel::ErrorType::BadProcessing);
m_oStimulation->appendStimulation(OVTK_StimulationId_TrainCompleted, m_iStimulation->getStimulationDate(j), 0);
m_isTrain = true;
}
}
m_stimulationEncoder.encodeBuffer();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
if (m_stimulationDecoder.isEndReceived())
{
m_stimulationEncoder.encodeEnd();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
}
//***** Signal *****
for (size_t i = 0; i < boxCtx.getInputChunkCount(1); ++i)
{
m_signalEncoder.decode(i); // Decode the chunk
OV_ERROR_UNLESS_KRF(m_iMatrix->getDimensionCount() == 2, "Invalid Input Signal", Kernel::ErrorType::BadInput);
if (m_signalEncoder.isBufferReceived()) // Buffer received
{
Eigen::MatrixXd m;
MatrixConvert(*m_iMatrix, m);
m_dataset.push_back(m);
}
}
}
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::train()
{
Geometry::CASR asr(m_metric);
asr.setMaxChannel(m_ratio);
this->getLogManager() << Kernel::LogLevel_Info << "Train Beginning...\n";
OV_ERROR_UNLESS_KRF(asr.train(m_dataset, m_rejection), "Train failed", Kernel::ErrorType::BadProcessing);
getLogManager() << Kernel::LogLevel_Info << "Train Finished. Save Beginning...\n";
OV_ERROR_UNLESS_KRF(asr.saveXML(m_filename), "Save failed", Kernel::ErrorType::BadProcessing);
this->getLogManager() << Kernel::LogLevel_Info << "Save Finished.\n";
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainerListener::onSettingValueChanged(Kernel::IBox& box, const size_t index)
{
if (index == 2)
{
CString tmp;
box.getSettingValue(index, tmp);
const Geometry::EMetric m = Geometry::StringToMetric(tmp.toASCIIString());
if (m != Geometry::EMetric::Euclidian && m != Geometry::EMetric::Riemann)
{
const std::string s1 = toString(Geometry::EMetric::Euclidian), s2 = toString(Geometry::EMetric::Riemann);
getLogManager() << Kernel::LogLevel_Warning << "Metric must be " << s1 << " or " << s2 << ". Setting is set to " << s1 << "\n";
box.setSettingValue(index, s1.c_str());
}
}
else if (index == 3)
{
CString tmp;
box.getSettingValue(index, tmp);
double ratio = 0.0;
std::stringstream ss(tmp.toASCIIString());
ss >> ratio;
if (ratio < 0.0)
{
getLogManager() << Kernel::LogLevel_Warning <<
"Channel ratio must be in [0;1] (0 for no reconstruction, 1 for no limit). Setting is set to 0. \n";
box.setSettingValue(index, "0");
}
else if (ratio > 1.0)
{
getLogManager() << Kernel::LogLevel_Warning <<
"Channel ratio must be in [0;1] (0 for no reconstruction, 1 for no limit). Setting is set to 1. \n";
box.setSettingValue(index, "1");
}
}
else if (index == 4)
{
CString tmp;
box.getSettingValue(index, tmp);
double rejection = 0.0;
std::stringstream ss(tmp.toASCIIString());
ss >> rejection;
if (rejection < 0.0)
{
getLogManager() << Kernel::LogLevel_Warning << "Rejection limit must be positive. Setting is set to 0. \n";
box.setSettingValue(index, "0");
}
}
return true;
}
//---------------------------------------------------------------------------------------------------
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,117 @@
///-------------------------------------------------------------------------------------------------
///
/// \file CBoxAlgorithmASRProcessor.hpp
/// \brief Classes of the box ASR Processor.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 08/12/2020.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include "defines.hpp"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <geometry/artifacts/CASR.hpp>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//-------------------------------------------------------------------------------------------------
/// <summary> The class CBoxAlgorithmASRTrainer describes the box Artifact Subspace Reconstruction (ASR) Trainer. </summary>
class CBoxAlgorithmASRTrainer final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, ClassId_Box_ASR_Trainer)
protected:
//***** Codecs *****
Toolkit::TStimulationDecoder<CBoxAlgorithmASRTrainer> m_stimulationDecoder; ///< Input Stimulation Decoder
Toolkit::TSignalDecoder<CBoxAlgorithmASRTrainer> m_signalEncoder; ///< Input Signal Encoder
Toolkit::TStimulationEncoder<CBoxAlgorithmASRTrainer> m_stimulationEncoder; ///< Output Stimulation Encoder
//***** Pointers *****
CMatrix* m_iMatrix = nullptr; ///< Input Matrix pointer
IStimulationSet *m_iStimulation = nullptr, ///< Stimulation receiver
*m_oStimulation = nullptr; ///< Stimulation sender
//***** Settings *****
std::string m_filename; ///< Filename of ASR Model
uint64_t m_stimulationName = OVTK_StimulationId_Train; ///< Name of stimulation to check for train launch
Geometry::EMetric m_metric = Geometry::EMetric::Euclidian; ///< Metric for ASR
double m_ratio = 1.0; ///< Ratio of channel to reconstruct for ASR
double m_rejection = 5.0; ///< Rejection limit of threshold for ASR
//***** Misc *****
std::vector<Eigen::MatrixXd> m_dataset; ///< Dataset stack
bool m_isTrain = false; ///< <c>True</c> if train is already done, <c>False</c> otherwise
bool train();
};
//-------------------------------------------------------------------------------------------------
/// <summary> Listener of the box Artifact Subspace Reconstruction (ASR) Trainer. </summary>
class CBoxAlgorithmASRTrainerListener final : public Toolkit::TBoxListener<IBoxListener>
{
public:
bool onSettingValueChanged(Kernel::IBox& box, const size_t index) override;;
_IsDerivedFromClass_Final_(Toolkit::TBoxListener<IBoxListener>, OV_UndefinedIdentifier)
};
//-------------------------------------------------------------------------------------------------
/// <summary> Descriptor of the box Artifact Subspace Reconstruction (ASR) Trainer. </summary>
class CBoxAlgorithmASRTrainerDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return "ASR Trainer"; }
CString getAuthorName() const override { return "Thibaut Monseigne"; }
CString getAuthorCompanyName() const override { return "Inria"; }
CString getShortDescription() const override { return "Artifact Subspace Reconstruction (ASR) Trainer."; }
CString getDetailedDescription() const override { return "Artifact Subspace Reconstruction (ASR) Trainer."; }
CString getCategory() const override { return "Artifact"; }
CString getVersion() const override { return "0.1"; }
CString getStockItemName() const override { return "gtk-execute"; }
CIdentifier getCreatedClass() const override { return ClassId_Box_ASR_Trainer; }
IPluginObject* create() override { return new CBoxAlgorithmASRTrainer; }
IBoxListener* createBoxListener() const override { return new CBoxAlgorithmASRTrainerListener; }
void releaseBoxListener(IBoxListener* listener) const override { delete listener; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Stimulations",OV_TypeId_Stimulations);
prototype.addInput("Input Signal", OV_TypeId_Signal);
prototype.addOutput("Train-completed Flag",OV_TypeId_Stimulations);
prototype.addSetting("Filename to save model", OV_TypeId_Filename, "${Player_ScenarioDirectory}/ASR-model.xml");
prototype.addSetting("Train trigger", OV_TypeId_Stimulation, "OVTK_StimulationId_Train");
prototype.addSetting("Metric", TypeId_Metric, toString(Geometry::EMetric::Euclidian).c_str());
prototype.addSetting("Channel ratio to reconstruct", OV_TypeId_Float, "1");
prototype.addSetting("Rejection limit", OV_TypeId_Float, "5");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, ClassId_Box_ASR_Trainer_Desc)
};
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,92 @@
#include "CBoxAlgorithmArtifactAmplitude.hpp"
#include <cmath> // Floor
#include <sstream>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::initialize()
{
//***** Codecs *****
m_decoder.initialize(*this, 0);
m_iMatrix = m_decoder.getOutputMatrix();
//***** Settings *****
m_max = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0);
//***** Assert *****
OV_ERROR_UNLESS_KRF(m_max > 0, "Invalid Maximum [" << m_max << "] (expected value > 0)\n", Kernel::ErrorType::BadSetting);
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::uninitialize()
{
m_decoder.uninitialize();
std::stringstream ss;
ss << m_nArtifact << " artifacts detected in " << m_nSamples << " samples (";
ss.precision(2);
ss << std::fixed << 100.0 * double(m_nArtifact) / double(m_nSamples) << "%)" << std::endl;
this->getLogManager() << Kernel::LogLevel_Info << ss.str();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::process()
{
Kernel::IBoxIO& boxContext = this->getDynamicBoxContext();
for (size_t i = 0; i < boxContext.getInputChunkCount(0); ++i)
{
bool artifact = false;
m_decoder.decode(i); // Decode chunk
OV_ERROR_UNLESS_KRF(m_iMatrix->getDimensionCount() == 2, "Invalid Input Signal", Kernel::ErrorType::BadInput);
m_nSamples++;
//if (m_decoder.isHeaderReceived()) {} // Header
if (m_decoder.isBufferReceived()) // Buffer
{
const size_t size = m_iMatrix->getDimensionSize(0) * m_iMatrix->getDimensionSize(1); // get buffer size
const double* iBuffer = m_iMatrix->getBuffer(); // input buffer
for (size_t idx = 0; idx < size; ++idx)
{
if (abs(iBuffer[idx]) >= m_max) // Amplitude comparison
{
this->getLogManager() << Kernel::LogLevel_Trace << "Artifact detected in channel (" << floor(idx / m_iMatrix->getDimensionSize(1)) << ")\n";
artifact = true;
m_nArtifact++;
break;
}
}
}
//if (m_decoder.isEndReceived()) {} // End
// We don't need output codec we copy just the input to the output if there is no amplitude artifact
if (!artifact)
{
uint64_t tStart = 0, tEnd = 0;
size_t size = 0;
const uint8_t* buffer = nullptr;
boxContext.getInputChunk(0, i, tStart, tEnd, size, buffer);
boxContext.appendOutputChunkData(0, buffer, size);
boxContext.markOutputAsReadyToSend(0, tStart, tEnd);
boxContext.markInputAsDeprecated(0, i);
}
}
return true;
}
//---------------------------------------------------------------------------------------------------
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,82 @@
///-------------------------------------------------------------------------------------------------
///
/// \file CBoxAlgorithmArtifactAmplitude.hpp
/// \brief Classes of the box Artifact Amplitude.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 12/08/2019.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include "defines.hpp"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//-------------------------------------------------------------------------------------------------
/// <summary> The class CBoxAlgorithmArtifactAmplitude describes the box Artifact Amplitude. </summary>
class CBoxAlgorithmArtifactAmplitude final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, ClassId_Box_Artifact_Amplitude)
protected:
Toolkit::TSignalDecoder<CBoxAlgorithmArtifactAmplitude> m_decoder; ///< Input Signal decoder
CMatrix* m_iMatrix = nullptr; ///< Input Matrix pointer
double m_max = 0; ///< Amplitude max
size_t m_nSamples = 0, ///< Sample checked
m_nArtifact = 0; ///< Artifact found
};
//-------------------------------------------------------------------------------------------------
/// <summary> Descriptor of the box Artifact Detector. </summary>
class CBoxAlgorithmArtifactAmplitudeDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return "Artifact Amplitude"; }
CString getAuthorName() const override { return "Thibaut Monseigne"; }
CString getAuthorCompanyName() const override { return "Inria"; }
CString getShortDescription() const override { return "Simple Artifact Detection"; }
CString getDetailedDescription() const override
{
return "Check if one element is higher than Max setting.\nThe signal is returned if no element exceeds the defined value.";
}
CString getCategory() const override { return "Artifact"; }
CString getVersion() const override { return "1.0"; }
CString getStockItemName() const override { return "gtk-no"; }
CIdentifier getCreatedClass() const override { return ClassId_Box_Artifact_Amplitude; }
IPluginObject* create() override { return new CBoxAlgorithmArtifactAmplitude; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Signal",OV_TypeId_Signal);
prototype.addOutput("Non-artifact signal",OV_TypeId_Signal);
prototype.addSetting("Max (mV)",OV_TypeId_Float, "100");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, ClassId_Box_Artifact_Amplitude_Desc)
};
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,25 @@
///-------------------------------------------------------------------------------------------------
///
/// \file defines.hpp
/// \brief Defines list for Setting, Shortcut Macro and const.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 08/12/2020.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
// Boxes
//---------------------------------------------------------------------------------------------------
#define ClassId_Box_Artifact_Amplitude OpenViBE::CIdentifier(0x41727469, 0xb68095e4)
#define ClassId_Box_Artifact_Amplitude_Desc OpenViBE::CIdentifier(0x41727469, 0x83596875)
#define ClassId_Box_ASR_Processor OpenViBE::CIdentifier(0x41727469, 0x17f1c6e2)
#define ClassId_Box_ASR_Processor_Desc OpenViBE::CIdentifier(0x41727469, 0x1de22c87)
#define ClassId_Box_ASR_Trainer OpenViBE::CIdentifier(0x41727469, 0xc05f38ff)
#define ClassId_Box_ASR_Trainer_Desc OpenViBE::CIdentifier(0x41727469, 0x966737cb)
#ifndef TypeId_Metric
#define TypeId_Metric OpenViBE::CIdentifier(0x5261636B, 0x4D455452)
#endif
@@ -0,0 +1,37 @@
#include <openvibe/ov_all.h>
#include "defines.hpp"
// Boxes Includes
#include "boxes/CBoxAlgorithmArtifactAmplitude.hpp"
#include "boxes/CBoxAlgorithmASRTrainer.hpp"
#include "boxes/CBoxAlgorithmASRProcessor.hpp"
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
template <typename T>
static void setEnumeration(const Kernel::IPluginModuleContext& context, const CIdentifier& typeID, const std::string& name, const std::vector<T>& enumeration)
{
context.getTypeManager().registerEnumerationType(typeID, name.c_str());
for (const auto& e : enumeration) { context.getTypeManager().registerEnumerationEntry(typeID, toString(e).c_str(), size_t(e)); }
}
OVP_Declare_Begin()
// Register boxes
OVP_Declare_New(CBoxAlgorithmArtifactAmplitudeDesc);
OVP_Declare_New(CBoxAlgorithmASRTrainerDesc);
OVP_Declare_New(CBoxAlgorithmASRProcessorDesc);
// Enumeration Metric
const std::vector<Geometry::EMetric> metrics = {
Geometry::EMetric::Riemann, Geometry::EMetric::Euclidian, Geometry::EMetric::LogEuclidian, Geometry::EMetric::LogDet,
Geometry::EMetric::Kullback, Geometry::EMetric::Harmonic, Geometry::EMetric::Identity
};
setEnumeration(context, TypeId_Metric, "Metric", metrics);
OVP_Declare_End()
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,120 @@
#include "utils/misc.hpp"
//*****************************************************
//******************** CONVERSIONS ********************
//*****************************************************
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::MatrixXd& out)
{
if (in.getDimensionCount() != 2) { return false; }
out.resize(in.getDimensionSize(0), in.getDimensionSize(1));
// double loop to avoid the problem of row major and column major storage
size_t idx = 0;
const double* buffer = in.getBuffer();
for (size_t i = 0, nR = out.rows(); i < nR; ++i) { for (size_t j = 0, nC = out.cols(); j < nC; ++j) { out(i, j) = buffer[idx++]; } }
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const Eigen::MatrixXd& in, OpenViBE::CMatrix& out)
{
if (in.rows() == 0 || in.cols() == 0) { return false; }
const size_t nR = in.rows(), nC = in.cols();
MatrixResize(out, nR, nC);
// double loop to avoid the problem of row major and column major storage
size_t idx = 0;
double* buffer = out.getBuffer();
for (size_t i = 0; i < nR; ++i) { for (size_t j = 0; j < nC; ++j) { buffer[idx++] = in(i, j); } }
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const Eigen::RowVectorXd& in, OpenViBE::CMatrix& out)
{
if (in.size() == 0) { return false; }
VectorResize(out, in.size());
//one row system copy doesn't cause problem
memcpy(out.getBuffer(), in.data(), out.getBufferElementCount() * sizeof(double));
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::RowVectorXd& out)
{
if (in.getDimensionCount() != 1) { return false; }
out.resize(in.getDimensionSize(0));
//one row system copy doesn't cause problem
memcpy(out.data(), in.getBuffer(), in.getBufferElementCount() * sizeof(double));
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const std::vector<double>& in, OpenViBE::CMatrix& out)
{
if (in.empty()) { return false; }
VectorResize(out, in.size());
//one row system copy doesn't cause problem
memcpy(out.getBuffer(), in.data(), out.getBufferElementCount() * sizeof(double));
return true;
}
//---------------------------------------------------------------------------------------------------
//***********************************************************
//******************** MATRIX MANAGEMENT ********************
//***********************************************************
//---------------------------------------------------------------------------------------------------
bool MatrixInit(OpenViBE::CMatrix& m, const size_t rows, size_t columns)
{
if (columns < 1) { columns = rows; }
MatrixResize(m, rows, columns);
m.resetBuffer(); // Set to 0
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixResize(OpenViBE::CMatrix& m, const size_t rows, size_t columns)
{
if (columns < 1) { columns = rows; }
if (m.getDimensionCount() != 2 || m.getDimensionSize(0) != rows || m.getDimensionSize(1) != columns)
{
m.setDimensionCount(2);
m.setDimensionSize(0, rows);
m.setDimensionSize(1, columns);
// CHange label to have 1 to N label on row and column (Square Matrix Feature)
for (size_t i = 0; i < rows; ++i) { m.setDimensionLabel(0, i, std::to_string(i + 1).c_str()); }
}
return true;
}
//---------------------------------------------------------------------------------------------------
//***********************************************************
//******************** VECTOR MANAGEMENT ********************
//***********************************************************
//---------------------------------------------------------------------------------------------------
bool VectorInit(OpenViBE::CMatrix& m, const size_t n)
{
VectorResize(m, n);
m.resetBuffer(); // Set to 0
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool VectorResize(OpenViBE::CMatrix& m, const size_t n)
{
if (m.getDimensionCount() != 1 || m.getDimensionSize(0) != n)
{
m.setDimensionCount(1);
m.setDimensionSize(0, n);
}
return true;
}
//---------------------------------------------------------------------------------------------------
@@ -0,0 +1,71 @@
///-------------------------------------------------------------------------------------------------
///
/// \file misc.hpp
/// \brief All functions to Convert OpenViBE::CMatrix and Eigen::MatrixXd, links to Eigen function, manipulate OpenVibe::CMatrix and more.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 26/10/2018.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include <openvibe/ov_all.h>
#include <Eigen/Dense>
//*****************************************************
//******************** Conversions ********************
//*****************************************************
/// <summary> Convert OpenViBE Matrix to Eigen Matrix. </summary>
/// <param name="in"> The Eigen Matrix. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::MatrixXd& out);
/// <summary> Convert Eigen Matrix to OpenViBE Matrix (It doesn't use Memory::copy because of Eigne store in column major by default). </summary>
/// <param name="in"> The Eigen Matrix. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const Eigen::MatrixXd& in, OpenViBE::CMatrix& out);
/// <summary> Convert Eigen Row Vector to OpenViBE Matrix with one dimension. </summary>
/// <param name="in"> The Eigen Row Vector. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const Eigen::RowVectorXd& in, OpenViBE::CMatrix& out);
/// <summary> Convert OpenViBE Matrix with one dimension to Eigen Row Vector. </summary>
/// <param name="in"> The OpenVibe Matrix. </param>
/// <param name="out"> The Eigen Row Vector. </param>
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::RowVectorXd& out);
/// <summary> Convertvector double to OpenViBE Matrix with one dimension. </summary>
/// <param name="in"> The Vector of double. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const std::vector<double>& in, OpenViBE::CMatrix& out);
//***********************************************************
//******************** Matrix Management ********************
//***********************************************************
/// <summary>Initialize the matrix (do not create objects).</summary>
/// <param name="m">The matrix to initialize.</param>
/// <param name="rows">The number of rows.</param>
/// <param name="columns">The number of columns (if &lt; 1 Init to a Square Matrix) .</param>
bool MatrixInit(OpenViBE::CMatrix& m, size_t rows = 2, size_t columns = 0);
/// <summary>Resize the matrix (do not create objects).</summary>
/// <param name="m">The matrix to resize.</param>
/// <param name="rows">The number of rows.</param>
/// <param name="columns">The number of columns (if &lt; 1 resize to a Square Matrix) .</param>
bool MatrixResize(OpenViBE::CMatrix& m, size_t rows = 2, size_t columns = 0);
//***********************************************************
//******************** Vector Management ********************
//***********************************************************
/// <summary>Initialize the vector (matrix with one dimension) (do not create objects).</summary>
/// <param name="m">The vector to initialize.</param>
/// <param name="n">The number of elements.</param>
bool VectorInit(OpenViBE::CMatrix& m, size_t n = 2);
/// <summary>Resize the vector (matrix with one dimension) (do not create objects).</summary>
/// <param name="m">The vector to resize.</param>
/// <param name="n">The number of elements.</param>
bool VectorResize(OpenViBE::CMatrix& m, size_t n = 2);
@@ -0,0 +1,42 @@
IF(WIN32)
SET(EXT cmd)
SET(OS_FLAGS "--no-pause")
ELSE()
SET(EXT sh)
SET(OS_FLAGS "")
ENDIF()
SET(PATH_TEST scenarios-tests)
############
SET(TEST_NAME Artifact-Amplitude)
ADD_TEST(clean_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" "${PATH_TEST}/${TEST_NAME}-output.csv")
ADD_TEST(run_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--no-session-management" "--invisible" "--play-fast" "${PATH_TEST}/${TEST_NAME}-test.xml")
ADD_TEST(compare_${TEST_NAME} "$ENV{OV_BINARY_PATH}/test_thresholdDataComparison.${EXT}" ${OS_FLAGS} "${PATH_TEST}/${TEST_NAME}-output.csv" "${PATH_TEST}/${TEST_NAME}-ref.csv" 0.0001)
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_CONFIG_SUBDIR})
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL "${PATH_TEST}/${TEST_NAME}-output.csv")
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES DEPENDS run_${TEST_NAME})
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES DEPENDS clean_${TEST_NAME})
############
SET(TEST_NAME ASR-Trainer)
ADD_TEST(clean_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" "${PATH_TEST}/ASR-model-output.xml")
ADD_TEST(run_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--no-session-management" "--invisible" "--play-fast" "${PATH_TEST}/${TEST_NAME}-test.xml")
# No compare between xml
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_CONFIG_SUBDIR})
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES DEPENDS clean_${TEST_NAME})
############
SET(TEST_NAME ASR-Processor)
ADD_TEST(clean_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" "${PATH_TEST}/${TEST_NAME}-output.csv")
ADD_TEST(run_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--no-session-management" "--invisible" "--play-fast" "${PATH_TEST}/${TEST_NAME}-test.xml")
ADD_TEST(compare_${TEST_NAME} "$ENV{OV_BINARY_PATH}/test_thresholdDataComparison.${EXT}" ${OS_FLAGS} "${PATH_TEST}/${TEST_NAME}-output.csv" "${PATH_TEST}/${TEST_NAME}-ref.csv" 0.0001)
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_CONFIG_SUBDIR})
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL "${PATH_TEST}/${TEST_NAME}-output.csv")
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES DEPENDS run_${TEST_NAME})
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES DEPENDS clean_${TEST_NAME})
@@ -0,0 +1,797 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>ASR-Processor</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x00000e25, 0x00003c5e)</Identifier>
<Name>Timeout</Name>
<AlgorithmClassIdentifier>(0x24fcd292, 0x5c8f6aa8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x544a003e, 0x6dcba5f6)</TypeIdentifier>
<Name>Input Stream</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output Stimulations</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Timeout delay</Name>
<DefaultValue>5</DefaultValue>
<Value>30</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Output Stimulation</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_Label_00</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>560</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>944</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x1eaee00e, 0xdb05d34e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00001182, 0x00005e08)</Identifier>
<Name>ASR Processor</Name>
<AlgorithmClassIdentifier>(0x41727469, 0x17f1c6e2)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Signal Reconstructed</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output Signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename to load model</Name>
<DefaultValue>${Player_ScenarioDirectory}/ASR-model.xml</DefaultValue>
<Value>${Player_ScenarioDirectory}/ASR-model-ref.xml</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>528</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x3c89d3cf, 0x83076356)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000026cd, 0x00007e87)</Identifier>
<Name>Simple DSP</Name>
<AlgorithmClassIdentifier>(0x00e26fa1, 0x1dbab1b2)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input - A</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Equation</Name>
<DefaultValue>x</DefaultValue>
<Value>1.5*x</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>480</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x21889dc4, 0x1126497e)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000586a, 0x00001f44)</Identifier>
<Name>Time based epoching</Name>
<AlgorithmClassIdentifier>(0x00777fa0, 0x5dc3f560)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Epoched signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>432</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00007dde, 0x00001445)</Identifier>
<Name>CSV File Writer</Name>
<AlgorithmClassIdentifier>(0x428375e8, 0x325f2db9)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input stream</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations stream</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue>record-[$core{date}-$core{time}].csv</DefaultValue>
<Value>${Player_ScenarioDirectory}/$var{Test Name}-output.csv</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Precision</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Append data</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Only last matrix</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xee4b6d30, 0x788aed29)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>4</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x11a6038b, 0x7157c284)</Identifier>
<Name>Generic stream reader</Name>
<AlgorithmClassIdentifier>(0x6468099f, 0x0370095a)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 2</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 3</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Path_Data}/scenarios/signals/bci-motor-imagery.ov</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>160</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf37b8e7a, 0x1bc33e4e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005e1c11)</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x2b88852d, 0x43d7a773)</Identifier>
<Name>Reference Channel</Name>
<AlgorithmClassIdentifier>(0x444721ad, 0x78342cf5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel</Name>
<DefaultValue>Ref_Nose</DefaultValue>
<Value>Nz</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>224</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x7e39891d, 0x32cf5be7)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x5045ebd9, 0x67325c0b)</Identifier>
<Name>Player Controller</Name>
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Stimulation name</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_Label_00</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
<Name>Action to perform</Name>
<DefaultValue>Pause</DefaultValue>
<Value>Stop</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>944</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x5194b6cb, 0x7e001787)</Identifier>
<Name>C3;C4;FC3;FC4</Name>
<AlgorithmClassIdentifier>(0x361722e8, 0x311574e8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel List</Name>
<DefaultValue>-</DefaultValue>
<Value>C3;C4;FC3;FC4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
<Name>Action</Name>
<DefaultValue>Select</DefaultValue>
<Value>Select</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x277826e1, 0xa30a3bd0)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>3</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x558c587f, 0x223f3b67)</Identifier>
<Name>Temporal filter</Name>
<AlgorithmClassIdentifier>(0xb4f9d042, 0x9d79f2e5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Filtered signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2f2c606c, 0x8512ed68)</TypeIdentifier>
<Name>Filter method</Name>
<DefaultValue>Butterworth</DefaultValue>
<Value>Butterworth</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xfa20178e, 0x4cba62e9)</TypeIdentifier>
<Name>Filter type</Name>
<DefaultValue>Low pass</DefaultValue>
<Value>Band pass</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Filter order</Name>
<DefaultValue>4</DefaultValue>
<Value>4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Low cut frequency (Hz)</Name>
<DefaultValue>29</DefaultValue>
<Value>8.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>24.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Pass band ripple (dB)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.500000</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>384</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x001a79f8)</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000bfd, 0x00000a7c)</Identifier>
<Source>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000017f2, 0x00004d57)</Identifier>
<Source>
<BoxIdentifier>(0x000026cd, 0x00007e87)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00001182, 0x00005e08)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002551, 0x0000620c)</Identifier>
<Source>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004034, 0x000058ef)</Identifier>
<Source>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000043f4, 0x0000072e)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000052e6, 0x00006ead)</Identifier>
<Source>
<BoxIdentifier>(0x00000e25, 0x00003c5e)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5045ebd9, 0x67325c0b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000060a3, 0x00005f0d)</Identifier>
<Source>
<BoxIdentifier>(0x00001182, 0x00005e08)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00007dde, 0x00001445)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006a9f, 0x00004bba)</Identifier>
<Source>
<BoxIdentifier>(0x00001182, 0x00005e08)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00007dde, 0x00001445)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006d07, 0x00002bf8)</Identifier>
<Source>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000026cd, 0x00007e87)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x000054d7, 0x00005ae2)</Identifier>
<Text>Input Signal
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>208</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x000054d7, 0x00005ae3)</Identifier>
<Text>Signal Processing
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>384</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":320,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":480},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x0000420e, 0x000074bb)","index":0,"name":"Empty","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,801 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>ASR-Trainer</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x000015a8, 0x000079e9)</Identifier>
<Name>Player Controller</Name>
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Stimulation name</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_TrainCompleted</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
<Name>Action to perform</Name>
<DefaultValue>Pause</DefaultValue>
<Value>Stop</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>496</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x01165f9f)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000586a, 0x00001f44)</Identifier>
<Name>Time based epoching</Name>
<AlgorithmClassIdentifier>(0x00777fa0, 0x5dc3f560)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Epoched signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>1.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00006bd5, 0x0000489b)</Identifier>
<Name>ASR Trainer</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xc05f38ff)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Tran-completed Flag</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename to save model</Name>
<DefaultValue>${Player_ScenarioDirectory}/ASR-model.xml</DefaultValue>
<Value>${Player_ScenarioDirectory}/ASR-model-output.xml</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Train trigger</Name>
<DefaultValue>OVTK_StimulationId_Train</DefaultValue>
<Value>OVTK_StimulationId_Train</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x5261636b, 0x4d455452)</TypeIdentifier>
<Name>Metric</Name>
<DefaultValue>Euclidian</DefaultValue>
<Value>Euclidian</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Channel ratio to reconstruct</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Rejection limit</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>448</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xe02de2aa, 0x821ba183)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>5</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x11a6038b, 0x7157c284)</Identifier>
<Name>Generic stream reader</Name>
<AlgorithmClassIdentifier>(0x6468099f, 0x0370095a)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 2</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 3</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Path_Data}/scenarios/signals/bci-motor-imagery.ov</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>128</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf37b8e7a, 0x1bc33e4e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005e1c11)</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c649749)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>192</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c64974a)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x2b88852d, 0x43d7a773)</Identifier>
<Name>Reference Channel</Name>
<AlgorithmClassIdentifier>(0x444721ad, 0x78342cf5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel</Name>
<DefaultValue>Ref_Nose</DefaultValue>
<Value>Nz</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>192</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x7e39891d, 0x32cf5be7)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x5045ebd9, 0x67325c0b)</Identifier>
<Name>Player Controller</Name>
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Stimulation name</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_EndOfFile</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
<Name>Action to perform</Name>
<DefaultValue>Pause</DefaultValue>
<Value>Stop</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>192</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>896</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x5194b6cb, 0x7e001787)</Identifier>
<Name>C3;C4;FC3;FC4</Name>
<AlgorithmClassIdentifier>(0x361722e8, 0x311574e8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel List</Name>
<DefaultValue>-</DefaultValue>
<Value>C3;C4;FC3;FC4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
<Name>Action</Name>
<DefaultValue>Select</DefaultValue>
<Value>Select</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>240</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x277826e1, 0xa30a3bd0)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>3</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x558c587f, 0x223f3b67)</Identifier>
<Name>Temporal filter</Name>
<AlgorithmClassIdentifier>(0xb4f9d042, 0x9d79f2e5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Filtered signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2f2c606c, 0x8512ed68)</TypeIdentifier>
<Name>Filter method</Name>
<DefaultValue>Butterworth</DefaultValue>
<Value>Butterworth</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xfa20178e, 0x4cba62e9)</TypeIdentifier>
<Name>Filter type</Name>
<DefaultValue>Low pass</DefaultValue>
<Value>Band pass</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Filter order</Name>
<DefaultValue>4</DefaultValue>
<Value>4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Low cut frequency (Hz)</Name>
<DefaultValue>29</DefaultValue>
<Value>8.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>24.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Pass band ripple (dB)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.500000</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x001a79f8)</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000bfd, 0x00000a7c)</Identifier>
<Source>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002161, 0x00005718)</Identifier>
<Source>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000015a8, 0x000079e9)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000023c3, 0x0000335d)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002551, 0x0000620c)</Identifier>
<Source>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002996, 0x00001419)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5045ebd9, 0x67325c0b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000311a, 0x00000602)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00003869, 0x000048f3)</Identifier>
<Source>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004034, 0x000058ef)</Identifier>
<Source>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000043f4, 0x0000072e)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006db7, 0x00007acd)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x000054d7, 0x00005ae2)</Identifier>
<Text>Input Signal
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>176</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x000054d7, 0x00005ae3)</Identifier>
<Text>Signal Processing
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>352</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":320,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":480},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x0000420e, 0x000074bb)","index":0,"name":"Empty","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,17 @@
<ASR>
<ASR-data metric="Euclidian" nChannel="4" maxChannel="1" trivial="true">
<Median size="4"> 3.64776520261426 1.29023655895292 2.32623534894098 0.971947765103693
1.29023655895292 3.58502947106046 0.935080263836635 2.28024769881738
2.32623534894098 0.935080263836635 3.41566493769342 1.15232554661866
0.971947765103693 2.28024769881738 1.15232554661866 3.46016343202863</Median>
<Threshold size="4">-0.708243887391283 0.667512895061541 0.72870499429868 -0.667988195409754
-1.14363606301638 -1.24139284292518 1.21015772890246 1.29220172963208
3.42229744240393 -3.44412809610297 3.34928062316736 -3.41650295481661
-5.86740559674539 -5.72285798578988 -5.52079337731776 -5.52039255373496</Threshold>
<R size="4">1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1</R>
<Cov size="0"></Cov>
</ASR-data>
</ASR>
@@ -0,0 +1,161 @@
Time:32Hz,Epoch,sinusOsc 1,sinusOsc 2,sinusOsc 3,sinusOsc 4,Event Id,Event Date,Event Duration
0.0000000000,0,0.0000000000,0.0000000000,0.0000000000,0.0000000000,,,
0.0312500000,0,1.3687341120,0.0834505686,1.3965074831,2.3460347303,,,
0.0625000000,0,0.0834505686,3.3460347303,1.6342771847,0.0223674799,,,
0.0937500000,0,1.3965074831,1.6342771847,0.8587778323,0.2862985568,,,
0.1250000000,0,2.3460347303,0.0223674799,0.2862985568,1.2564364343,,,
0.1562500000,0,0.6652579106,1.0605198516,0.7209285523,0.3100244990,,,
0.1875000000,0,1.6342771847,0.2862985568,1.5912609145,0.5189549878,,,
0.2187500000,0,2.0374036140,-0.8460419110,1.6531536145,-1.3302670931,,,
0.2500000000,1,0.0223674799,1.2564364343,0.5189549878,-2.2082337379,,,
0.2812500000,1,0.8587778323,1.5912609145,-0.8135359478,0.7847811254,,,
0.3125000000,1,1.0605198516,0.3100244990,-1.0731867792,-0.2119004478,,,
0.3437500000,1,-0.8527917255,1.3612667999,-0.1597583084,-1.8827722525,,,
0.3750000000,1,0.2862985568,0.5189549878,0.7847811254,0.9814084992,,,
0.4062500000,1,0.6745718556,-2.0249997390,0.7541775274,1.5472144212,,,
0.4375000000,1,-0.8460419110,-1.3302670931,0.0634287720,0.7819705904,,,
0.4687500000,1,0.7209285523,-1.0731867792,-0.0655390377,0.9506913659,,,
0.5000000000,2,1.2564364343,-2.2082337379,0.9814084992,-0.5852777802,,,
0.5312500000,2,-0.0631007468,-0.2987362122,2.4069561396,0.2823791178,,,
0.5625000000,2,1.5912609145,0.7847811254,2.8779488994,0.9030515780,,,
0.5937500000,2,1.8564555014,-0.8355661309,2.0520274556,-2.4793752101,,,
0.6250000000,2,0.3100244990,-0.2119004478,0.9506913659,-1.7310810939,,,
0.6562500000,2,1.6531536145,0.0634287720,0.7412410587,0.9701626979,,,
0.6875000000,2,1.3612667999,-1.8827722525,1.3761889031,-0.4108610506,,,
0.7187500000,2,-3.5404879020,-0.8086493471,1.7027679072,-0.2124145663,,,
0.7500000000,3,0.5189549878,0.9814084992,0.9030515780,0.8068531766,,,
0.7812500000,3,-0.1244988728,0.2724851298,-0.4594717137,0.6869181620,,,
0.8125000000,3,-2.0249997390,1.5472144212,-1.0439874057,2.0694974039,,,
0.8437500000,3,-0.8135359478,2.8779488994,-0.2805237468,0.3641695321,,,
0.8750000000,3,-1.3302670931,0.7819705904,0.9701626979,-1.8389984936,,,
0.9062500000,3,-2.7774418870,0.2993489279,1.4263392704,0.6679934029,,,
0.9375000000,3,-1.0731867792,0.9506913659,0.8667484914,0.1385386313,,,
0.9687500000,3,-1.2560591950,-0.8668315473,0.3301381800,-2.4206456881,,,
1.0000000000,4,-2.2082337379,-0.5852777802,0.8068531766,-0.7723189861,,,
1.0312500000,4,-0.1597583084,1.3761889031,1.9907896528,0.0983659614,,,
1.0625000000,4,-0.2987362122,0.2823791178,2.5877673403,5.4087503374,,,
1.0937500000,4,-1.1495363031,-0.0385524690,1.8235323387,1.3163956500,,,
1.1250000000,4,0.7847811254,0.9030515780,0.3641695321,-0.3034584827,,,
1.1562500000,4,0.2599756842,-1.2879184845,-0.4451458738,0.7048895721,,,
1.1875000000,4,-0.8355661309,-2.4793752101,-0.1234290101,2.5309068373,,,
1.2187500000,4,0.7541775274,-1.0439874057,0.4456384107,-0.8266210987,,,
1.2500000000,5,-0.2119004478,-1.7310810939,0.1385386313,-1.7466375845,,,
1.2812500000,5,-1.4354651966,-1.5706412435,-1.0080375931,0.2727140524,,,
1.3125000000,5,0.0634287720,0.9701626979,-1.7974455953,-0.8262613606,,,
1.3437500000,5,-0.9654362809,0.5424888696,-1.2808655550,-0.9489926046,,,
1.3750000000,5,-1.8827722525,-0.4108610506,0.0983659614,-0.5547380276,,,
1.4062500000,5,-0.0655390377,0.8667484914,0.9871376509,-0.6953344902,,,
1.4375000000,5,-0.8086493471,-0.2124145663,0.6661389185,1.9635447878,,,
1.4687500000,5,-1.1988821934,-1.3394010772,-0.1688100058,1.5699068231,,,
1.5000000000,6,0.9814084992,0.8068531766,-0.3034584827,-1.0425910551,,,
1.5312500000,6,0.4099144509,1.1952068865,0.4983557018,1.1445444315,,,
1.5625000000,6,0.2724851298,0.6869181620,1.1867185475,1.5013198216,,,
1.5937500000,6,2.4069561396,2.5877673403,0.6771519036,-1.2419463750,,,
1.6250000000,6,1.5472144212,2.0694974039,-0.8266210987,-1.0463628150,,,
1.6562500000,6,1.1997027388,-0.1839871598,-2.0168971580,-1.1194784628,,,
1.6875000000,6,2.8779488994,0.3641695321,-1.9643056971,-0.7420012388,,,
1.7187500000,6,1.4563051832,-0.2026887361,-1.1487345134,0.7176546469,,,
1.7500000000,7,0.7819705904,-1.8389984936,-0.8262613606,-1.0909272040,,,
1.7812500000,7,2.0520274556,-0.1234290101,-1.4955637468,-0.3859075051,,,
1.8125000000,7,0.2993489279,0.6679934029,-2.2938779901,2.8650857800,,,
1.8437500000,7,-0.3417921204,-0.7611641008,-2.0424755980,0.8737882447,,,
1.8750000000,7,0.9506913659,0.1385386313,-0.6953344902,-0.6117828212,,,
1.9062500000,7,-0.6688572272,0.0043701116,0.5394431118,0.7816769419,,,
1.9375000000,7,-0.8668315473,-2.4206456881,0.5615308290,-0.1516857685,,,
1.9687500000,7,0.7412410587,-1.7974455953,-0.3822991487,-0.4131300313,,,
2.0000000000,8,-0.5852777802,-0.7723189861,-1.0425910551,-0.9497739372,,,
2.0312500000,8,-0.3568127661,-1.6840958410,-0.6769683658,-2.3559666125,,,
2.0625000000,8,1.3761889031,0.0983659614,0.0737680120,0.4128262271,,,
2.0937500000,8,0.0324007523,1.8606501325,-0.0164610272,1.3211814381,,,
2.1250000000,8,0.2823791178,0.4087503374,-1.2419463750,-1.2291006398,,,
2.1562500000,8,1.7027679072,0.6661389185,-2.5427995283,0.6576534641,,,
2.1875000000,8,-0.0385524690,1.3163956500,-2.6920820881,2.2084155704,,,
2.2187500000,8,-0.0554208172,-0.6897861214,-1.6940570431,0.5039915002,,,
2.2500000000,9,0.9030515780,-0.3034584827,-0.7420012388,0.3243588722,,,
2.2812500000,9,-1.1992994843,1.5710854567,-0.7922659696,-0.7607044707,,,
2.3125000000,9,-1.2879184845,0.7048895721,-1.4509880084,-0.9995277474,,,
2.3437500000,9,-0.4594717137,1.1867185475,-3.4927627539,0.6782850799,,,
2.3750000000,9,-2.4793752101,2.5309068373,-0.3859075051,-1.5904395907,,,
2.4062500000,9,-2.1726756896,0.3807813663,1.0007956907,-2.2268648350,,,
2.4375000000,9,-1.0439874057,-0.8266210987,1.3630557893,1.3784805497,,,
2.4687500000,9,-2.6298261328,-0.1052226362,0.4624831701,0.9541473858,,,
2.5000000000,10,-1.7310810939,-1.7466375845,-0.6117828212,-0.1603763521,,,
2.5312500000,10,-0.2805237468,-1.9643056971,-0.7284838207,1.0964841466,,,
2.5625000000,10,-1.5706412435,0.2727140524,-0.0203749932,0.6291119609,,,
2.5937500000,10,-0.3846152674,-0.2942868426,0.3347196668,1.0644429647,,,
2.6250000000,10,0.9701626979,-0.8262613606,-0.4131300313,0.4825889334,,,
2.6562500000,10,-0.4783392019,0.5368167826,-1.6227881216,-2.4009484456,,,
2.6875000000,10,0.5424888696,-0.9489926046,-1.9662756714,-0.6742923707,,,
2.7187500000,10,1.4263392704,-2.2938779901,-0.9734886565,0.8125103403,,,
2.7500000000,11,-0.4108610506,-0.5547380276,0.4128262271,-1.8494334914,,,
2.7812500000,11,0.3635555387,-0.5968321736,0.9308023856,-0.8971534422,,,
2.8125000000,11,0.8667484914,-0.6953344902,0.4463823054,1.1069949952,,,
2.8437500000,11,-1.1002432968,1.9100213158,0.0426636172,0.7912462530,,,
2.8750000000,11,-0.2124145663,1.9635447878,0.6576534641,1.4702474315,,,
2.9062500000,11,0.3301381800,0.5615308290,1.9028072080,0.2464688260,,,
2.9375000000,11,-1.3394010772,1.5699068231,2.4783674333,-0.4482837744,,,
2.9687500000,11,0.0041022005,0.7251494037,1.6998640384,1.7383508457,,,
3.0000000000,12,0.8068531766,-1.0425910551,0.3243588722,-0.4315280454,,,
3.0312500000,12,-0.4912335635,0.5893078056,-0.3080250331,-2.7643803080,,,
3.0625000000,12,1.1952068865,1.1445444315,0.1958671810,-0.1897743319,,,
3.0937500000,12,1.9907896528,0.0737680120,0.8883208288,0.0114502696,,,
3.1250000000,12,0.6869181620,1.5013198216,0.6782850799,-0.7741952885,,,
3.1562500000,12,2.2564956184,1.3168811607,-0.3157015938,0.2792427283,,,
3.1875000000,12,2.5877673403,-1.2419463750,-0.8753223314,-0.0063782440,,,
3.2187500000,12,0.8953186036,-1.0211462797,-0.1299899339,1.5184145208,,,
3.2500000000,13,2.0694974039,-1.0463628150,1.3784805497,2.2274498842,,,
3.2812500000,13,1.8235323387,-2.6920820881,2.2848351796,-1.0708097558,,,
3.3125000000,13,-0.1839871598,-1.1194784628,1.9524956297,-0.4579413455,,,
3.3437500000,13,0.8200513727,0.4282048889,1.1561678807,1.3246878224,,,
3.3750000000,13,0.3641695321,-0.7420012388,1.0964841466,-1.3229268867,,,
3.4062500000,13,-1.4990336855,0.0949124460,1.9292948033,-1.7358532045,,,
3.4375000000,13,-0.2026887361,0.7176546469,2.5655088240,-0.5956776917,,,
3.4687500000,13,-0.4451458738,-3.4509880084,1.9820311065,-0.5174254152,,,
3.5000000000,14,-1.8389984936,-1.0909272040,0.4825889334,1.1467688435,,,
3.5312500000,14,-0.0912575086,0.4355042258,-0.5981556844,0.3428316999,,,
3.5625000000,14,-0.1234290101,-0.3859075051,-0.4068856788,-0.6407408097,,,
3.5937500000,14,-1.2117474109,0.8702078730,0.4843950700,2.4003691243,,,
3.6250000000,14,0.6679934029,2.8650857800,0.8125103403,1.5387091828,,,
3.6562500000,14,0.4456384107,1.3630557893,0.1532086532,-1.4887291762,,,
3.6875000000,14,-0.7611641008,0.8737882447,-0.5766315153,-0.2453985203,,,
3.7187500000,14,0.8470458326,1.5190458612,-0.2412622290,-0.2134703607,,,
3.7500000000,15,3.1385386313,-0.6117828212,1.1069949952,-1.0133258960,,,
3.7812500000,15,-1.3353997060,-1.0513076674,2.2186267603,-0.5325571084,,,
3.8125000000,15,0.0043701116,0.7816769419,2.0590285388,-1.6244991150,,,
3.8437500000,15,-1.0080375931,-0.0203749932,0.9761195490,0.0997748588,,,
3.8750000000,15,-2.4206456881,-0.1516857685,0.2464688260,2.4269124897,,,
3.9062500000,15,-0.9395340306,1.3451047636,0.5465998956,-0.2036214940,,,
3.9375000000,15,-1.7974455953,-0.4131300313,1.1687187342,-0.1745101669,,,
3.9687500000,15,-2.7180780314,-1.9703264255,0.9097323660,2.1418587490,,,
4.0000000000,16,-0.7723189861,-0.9497739372,-0.4315280454,0.3403443506,,,
4.0312500000,16,-1.2808655550,-1.9662756714,-1.7403637988,-0.7055335942,,,
4.0625000000,16,-1.6840958410,-2.3559666125,-1.8417807445,-0.8776538362,,,
4.0937500000,16,0.5621986200,0.2326467119,-0.8451463680,-1.5934803325,,,
4.1250000000,16,0.0983659614,0.4128262271,0.0114502696,0.3268928833,,,
4.1562500000,16,-0.2036004516,-0.2453224994,-0.1722950538,-0.2224224967,,,
4.1875000000,16,1.8606501325,1.3211814381,-0.9238158916,-1.9913265080,,,
4.2187500000,16,0.9871376509,0.4463823054,-1.0182130516,1.2816197960,,,
4.2500000000,17,0.4087503374,-1.2291006398,-0.0063782440,2.2316009870,,,
4.2812500000,17,2.0306267967,0.3530693071,1.1785364181,-0.1218676333,,,
4.3125000000,17,0.6661389185,0.6576534641,1.2700366680,0.5685098797,,,
4.3437500000,17,-0.0986454486,0.0272639229,0.1363600204,0.5013551605,,,
4.3750000000,17,1.3163956500,2.2084155704,-1.0708097558,-0.0630998880,,,
4.4062500000,17,-0.1688100058,2.4783674333,-1.2623176879,0.2050039337,,,
4.4375000000,17,-0.6897861214,0.5039915002,-0.6561812935,-2.1904913958,,,
4.4687500000,17,0.9355137218,0.9639543981,-0.4500766717,-1.6627065276,,,
4.5000000000,18,-0.3034584827,0.3243588722,-1.3229268867,1.3608217321,,,
4.5312500000,18,-0.3386875992,-1.9062872569,-2.5598552254,-0.4934669717,,,
4.5625000000,18,1.5710854567,-0.7607044707,-2.8525797785,-0.9834341811,,,
4.5937500000,18,0.4983557018,0.1958671810,-1.8324179939,1.6467899274,,,
4.6250000000,18,0.7048895721,-0.9995277474,-0.5174254152,1.2563684948,,,
4.6562500000,18,2.5225353348,0.1897809985,-0.1405557019,0.9485678810,,,
4.6875000000,18,1.1867185475,0.6782850799,-0.7450991679,0.3616207236,,,
4.7187500000,18,1.1942482732,-1.6946984350,-1.2063198145,-3.3141503457,,,
4.7500000000,19,2.5309068373,-1.5904395907,-0.6407408097,0.4598607025,,,
4.7812500000,19,0.6771519036,-0.8753223314,0.4848661573,0.1463891898,,,
4.8125000000,19,0.3807813663,-2.2268648350,0.8733864765,-2.8719383531,,,
4.8437500000,19,1.2989304814,-0.8191135751,-0.0657413107,-0.7095830712,,,
4.8750000000,19,-0.8266210987,1.3784805497,-1.4887291762,1.1618134295,,,
4.9062500000,19,-1.0543215730,0.4731135773,-2.0684361890,-0.1603183729,,,
4.9375000000,19,-0.1052226362,0.9541473858,-1.5028247523,0.6044175730,,,
4.9687500000,19,-2.0168971580,1.9524956297,-0.7998792476,0.6622647617,,,
1 Time:32Hz Epoch sinusOsc 1 sinusOsc 2 sinusOsc 3 sinusOsc 4 Event Id Event Date Event Duration
2 0.0000000000 0 0.0000000000 0.0000000000 0.0000000000 0.0000000000
3 0.0312500000 0 1.3687341120 0.0834505686 1.3965074831 2.3460347303
4 0.0625000000 0 0.0834505686 3.3460347303 1.6342771847 0.0223674799
5 0.0937500000 0 1.3965074831 1.6342771847 0.8587778323 0.2862985568
6 0.1250000000 0 2.3460347303 0.0223674799 0.2862985568 1.2564364343
7 0.1562500000 0 0.6652579106 1.0605198516 0.7209285523 0.3100244990
8 0.1875000000 0 1.6342771847 0.2862985568 1.5912609145 0.5189549878
9 0.2187500000 0 2.0374036140 -0.8460419110 1.6531536145 -1.3302670931
10 0.2500000000 1 0.0223674799 1.2564364343 0.5189549878 -2.2082337379
11 0.2812500000 1 0.8587778323 1.5912609145 -0.8135359478 0.7847811254
12 0.3125000000 1 1.0605198516 0.3100244990 -1.0731867792 -0.2119004478
13 0.3437500000 1 -0.8527917255 1.3612667999 -0.1597583084 -1.8827722525
14 0.3750000000 1 0.2862985568 0.5189549878 0.7847811254 0.9814084992
15 0.4062500000 1 0.6745718556 -2.0249997390 0.7541775274 1.5472144212
16 0.4375000000 1 -0.8460419110 -1.3302670931 0.0634287720 0.7819705904
17 0.4687500000 1 0.7209285523 -1.0731867792 -0.0655390377 0.9506913659
18 0.5000000000 2 1.2564364343 -2.2082337379 0.9814084992 -0.5852777802
19 0.5312500000 2 -0.0631007468 -0.2987362122 2.4069561396 0.2823791178
20 0.5625000000 2 1.5912609145 0.7847811254 2.8779488994 0.9030515780
21 0.5937500000 2 1.8564555014 -0.8355661309 2.0520274556 -2.4793752101
22 0.6250000000 2 0.3100244990 -0.2119004478 0.9506913659 -1.7310810939
23 0.6562500000 2 1.6531536145 0.0634287720 0.7412410587 0.9701626979
24 0.6875000000 2 1.3612667999 -1.8827722525 1.3761889031 -0.4108610506
25 0.7187500000 2 -3.5404879020 -0.8086493471 1.7027679072 -0.2124145663
26 0.7500000000 3 0.5189549878 0.9814084992 0.9030515780 0.8068531766
27 0.7812500000 3 -0.1244988728 0.2724851298 -0.4594717137 0.6869181620
28 0.8125000000 3 -2.0249997390 1.5472144212 -1.0439874057 2.0694974039
29 0.8437500000 3 -0.8135359478 2.8779488994 -0.2805237468 0.3641695321
30 0.8750000000 3 -1.3302670931 0.7819705904 0.9701626979 -1.8389984936
31 0.9062500000 3 -2.7774418870 0.2993489279 1.4263392704 0.6679934029
32 0.9375000000 3 -1.0731867792 0.9506913659 0.8667484914 0.1385386313
33 0.9687500000 3 -1.2560591950 -0.8668315473 0.3301381800 -2.4206456881
34 1.0000000000 4 -2.2082337379 -0.5852777802 0.8068531766 -0.7723189861
35 1.0312500000 4 -0.1597583084 1.3761889031 1.9907896528 0.0983659614
36 1.0625000000 4 -0.2987362122 0.2823791178 2.5877673403 5.4087503374
37 1.0937500000 4 -1.1495363031 -0.0385524690 1.8235323387 1.3163956500
38 1.1250000000 4 0.7847811254 0.9030515780 0.3641695321 -0.3034584827
39 1.1562500000 4 0.2599756842 -1.2879184845 -0.4451458738 0.7048895721
40 1.1875000000 4 -0.8355661309 -2.4793752101 -0.1234290101 2.5309068373
41 1.2187500000 4 0.7541775274 -1.0439874057 0.4456384107 -0.8266210987
42 1.2500000000 5 -0.2119004478 -1.7310810939 0.1385386313 -1.7466375845
43 1.2812500000 5 -1.4354651966 -1.5706412435 -1.0080375931 0.2727140524
44 1.3125000000 5 0.0634287720 0.9701626979 -1.7974455953 -0.8262613606
45 1.3437500000 5 -0.9654362809 0.5424888696 -1.2808655550 -0.9489926046
46 1.3750000000 5 -1.8827722525 -0.4108610506 0.0983659614 -0.5547380276
47 1.4062500000 5 -0.0655390377 0.8667484914 0.9871376509 -0.6953344902
48 1.4375000000 5 -0.8086493471 -0.2124145663 0.6661389185 1.9635447878
49 1.4687500000 5 -1.1988821934 -1.3394010772 -0.1688100058 1.5699068231
50 1.5000000000 6 0.9814084992 0.8068531766 -0.3034584827 -1.0425910551
51 1.5312500000 6 0.4099144509 1.1952068865 0.4983557018 1.1445444315
52 1.5625000000 6 0.2724851298 0.6869181620 1.1867185475 1.5013198216
53 1.5937500000 6 2.4069561396 2.5877673403 0.6771519036 -1.2419463750
54 1.6250000000 6 1.5472144212 2.0694974039 -0.8266210987 -1.0463628150
55 1.6562500000 6 1.1997027388 -0.1839871598 -2.0168971580 -1.1194784628
56 1.6875000000 6 2.8779488994 0.3641695321 -1.9643056971 -0.7420012388
57 1.7187500000 6 1.4563051832 -0.2026887361 -1.1487345134 0.7176546469
58 1.7500000000 7 0.7819705904 -1.8389984936 -0.8262613606 -1.0909272040
59 1.7812500000 7 2.0520274556 -0.1234290101 -1.4955637468 -0.3859075051
60 1.8125000000 7 0.2993489279 0.6679934029 -2.2938779901 2.8650857800
61 1.8437500000 7 -0.3417921204 -0.7611641008 -2.0424755980 0.8737882447
62 1.8750000000 7 0.9506913659 0.1385386313 -0.6953344902 -0.6117828212
63 1.9062500000 7 -0.6688572272 0.0043701116 0.5394431118 0.7816769419
64 1.9375000000 7 -0.8668315473 -2.4206456881 0.5615308290 -0.1516857685
65 1.9687500000 7 0.7412410587 -1.7974455953 -0.3822991487 -0.4131300313
66 2.0000000000 8 -0.5852777802 -0.7723189861 -1.0425910551 -0.9497739372
67 2.0312500000 8 -0.3568127661 -1.6840958410 -0.6769683658 -2.3559666125
68 2.0625000000 8 1.3761889031 0.0983659614 0.0737680120 0.4128262271
69 2.0937500000 8 0.0324007523 1.8606501325 -0.0164610272 1.3211814381
70 2.1250000000 8 0.2823791178 0.4087503374 -1.2419463750 -1.2291006398
71 2.1562500000 8 1.7027679072 0.6661389185 -2.5427995283 0.6576534641
72 2.1875000000 8 -0.0385524690 1.3163956500 -2.6920820881 2.2084155704
73 2.2187500000 8 -0.0554208172 -0.6897861214 -1.6940570431 0.5039915002
74 2.2500000000 9 0.9030515780 -0.3034584827 -0.7420012388 0.3243588722
75 2.2812500000 9 -1.1992994843 1.5710854567 -0.7922659696 -0.7607044707
76 2.3125000000 9 -1.2879184845 0.7048895721 -1.4509880084 -0.9995277474
77 2.3437500000 9 -0.4594717137 1.1867185475 -3.4927627539 0.6782850799
78 2.3750000000 9 -2.4793752101 2.5309068373 -0.3859075051 -1.5904395907
79 2.4062500000 9 -2.1726756896 0.3807813663 1.0007956907 -2.2268648350
80 2.4375000000 9 -1.0439874057 -0.8266210987 1.3630557893 1.3784805497
81 2.4687500000 9 -2.6298261328 -0.1052226362 0.4624831701 0.9541473858
82 2.5000000000 10 -1.7310810939 -1.7466375845 -0.6117828212 -0.1603763521
83 2.5312500000 10 -0.2805237468 -1.9643056971 -0.7284838207 1.0964841466
84 2.5625000000 10 -1.5706412435 0.2727140524 -0.0203749932 0.6291119609
85 2.5937500000 10 -0.3846152674 -0.2942868426 0.3347196668 1.0644429647
86 2.6250000000 10 0.9701626979 -0.8262613606 -0.4131300313 0.4825889334
87 2.6562500000 10 -0.4783392019 0.5368167826 -1.6227881216 -2.4009484456
88 2.6875000000 10 0.5424888696 -0.9489926046 -1.9662756714 -0.6742923707
89 2.7187500000 10 1.4263392704 -2.2938779901 -0.9734886565 0.8125103403
90 2.7500000000 11 -0.4108610506 -0.5547380276 0.4128262271 -1.8494334914
91 2.7812500000 11 0.3635555387 -0.5968321736 0.9308023856 -0.8971534422
92 2.8125000000 11 0.8667484914 -0.6953344902 0.4463823054 1.1069949952
93 2.8437500000 11 -1.1002432968 1.9100213158 0.0426636172 0.7912462530
94 2.8750000000 11 -0.2124145663 1.9635447878 0.6576534641 1.4702474315
95 2.9062500000 11 0.3301381800 0.5615308290 1.9028072080 0.2464688260
96 2.9375000000 11 -1.3394010772 1.5699068231 2.4783674333 -0.4482837744
97 2.9687500000 11 0.0041022005 0.7251494037 1.6998640384 1.7383508457
98 3.0000000000 12 0.8068531766 -1.0425910551 0.3243588722 -0.4315280454
99 3.0312500000 12 -0.4912335635 0.5893078056 -0.3080250331 -2.7643803080
100 3.0625000000 12 1.1952068865 1.1445444315 0.1958671810 -0.1897743319
101 3.0937500000 12 1.9907896528 0.0737680120 0.8883208288 0.0114502696
102 3.1250000000 12 0.6869181620 1.5013198216 0.6782850799 -0.7741952885
103 3.1562500000 12 2.2564956184 1.3168811607 -0.3157015938 0.2792427283
104 3.1875000000 12 2.5877673403 -1.2419463750 -0.8753223314 -0.0063782440
105 3.2187500000 12 0.8953186036 -1.0211462797 -0.1299899339 1.5184145208
106 3.2500000000 13 2.0694974039 -1.0463628150 1.3784805497 2.2274498842
107 3.2812500000 13 1.8235323387 -2.6920820881 2.2848351796 -1.0708097558
108 3.3125000000 13 -0.1839871598 -1.1194784628 1.9524956297 -0.4579413455
109 3.3437500000 13 0.8200513727 0.4282048889 1.1561678807 1.3246878224
110 3.3750000000 13 0.3641695321 -0.7420012388 1.0964841466 -1.3229268867
111 3.4062500000 13 -1.4990336855 0.0949124460 1.9292948033 -1.7358532045
112 3.4375000000 13 -0.2026887361 0.7176546469 2.5655088240 -0.5956776917
113 3.4687500000 13 -0.4451458738 -3.4509880084 1.9820311065 -0.5174254152
114 3.5000000000 14 -1.8389984936 -1.0909272040 0.4825889334 1.1467688435
115 3.5312500000 14 -0.0912575086 0.4355042258 -0.5981556844 0.3428316999
116 3.5625000000 14 -0.1234290101 -0.3859075051 -0.4068856788 -0.6407408097
117 3.5937500000 14 -1.2117474109 0.8702078730 0.4843950700 2.4003691243
118 3.6250000000 14 0.6679934029 2.8650857800 0.8125103403 1.5387091828
119 3.6562500000 14 0.4456384107 1.3630557893 0.1532086532 -1.4887291762
120 3.6875000000 14 -0.7611641008 0.8737882447 -0.5766315153 -0.2453985203
121 3.7187500000 14 0.8470458326 1.5190458612 -0.2412622290 -0.2134703607
122 3.7500000000 15 3.1385386313 -0.6117828212 1.1069949952 -1.0133258960
123 3.7812500000 15 -1.3353997060 -1.0513076674 2.2186267603 -0.5325571084
124 3.8125000000 15 0.0043701116 0.7816769419 2.0590285388 -1.6244991150
125 3.8437500000 15 -1.0080375931 -0.0203749932 0.9761195490 0.0997748588
126 3.8750000000 15 -2.4206456881 -0.1516857685 0.2464688260 2.4269124897
127 3.9062500000 15 -0.9395340306 1.3451047636 0.5465998956 -0.2036214940
128 3.9375000000 15 -1.7974455953 -0.4131300313 1.1687187342 -0.1745101669
129 3.9687500000 15 -2.7180780314 -1.9703264255 0.9097323660 2.1418587490
130 4.0000000000 16 -0.7723189861 -0.9497739372 -0.4315280454 0.3403443506
131 4.0312500000 16 -1.2808655550 -1.9662756714 -1.7403637988 -0.7055335942
132 4.0625000000 16 -1.6840958410 -2.3559666125 -1.8417807445 -0.8776538362
133 4.0937500000 16 0.5621986200 0.2326467119 -0.8451463680 -1.5934803325
134 4.1250000000 16 0.0983659614 0.4128262271 0.0114502696 0.3268928833
135 4.1562500000 16 -0.2036004516 -0.2453224994 -0.1722950538 -0.2224224967
136 4.1875000000 16 1.8606501325 1.3211814381 -0.9238158916 -1.9913265080
137 4.2187500000 16 0.9871376509 0.4463823054 -1.0182130516 1.2816197960
138 4.2500000000 17 0.4087503374 -1.2291006398 -0.0063782440 2.2316009870
139 4.2812500000 17 2.0306267967 0.3530693071 1.1785364181 -0.1218676333
140 4.3125000000 17 0.6661389185 0.6576534641 1.2700366680 0.5685098797
141 4.3437500000 17 -0.0986454486 0.0272639229 0.1363600204 0.5013551605
142 4.3750000000 17 1.3163956500 2.2084155704 -1.0708097558 -0.0630998880
143 4.4062500000 17 -0.1688100058 2.4783674333 -1.2623176879 0.2050039337
144 4.4375000000 17 -0.6897861214 0.5039915002 -0.6561812935 -2.1904913958
145 4.4687500000 17 0.9355137218 0.9639543981 -0.4500766717 -1.6627065276
146 4.5000000000 18 -0.3034584827 0.3243588722 -1.3229268867 1.3608217321
147 4.5312500000 18 -0.3386875992 -1.9062872569 -2.5598552254 -0.4934669717
148 4.5625000000 18 1.5710854567 -0.7607044707 -2.8525797785 -0.9834341811
149 4.5937500000 18 0.4983557018 0.1958671810 -1.8324179939 1.6467899274
150 4.6250000000 18 0.7048895721 -0.9995277474 -0.5174254152 1.2563684948
151 4.6562500000 18 2.5225353348 0.1897809985 -0.1405557019 0.9485678810
152 4.6875000000 18 1.1867185475 0.6782850799 -0.7450991679 0.3616207236
153 4.7187500000 18 1.1942482732 -1.6946984350 -1.2063198145 -3.3141503457
154 4.7500000000 19 2.5309068373 -1.5904395907 -0.6407408097 0.4598607025
155 4.7812500000 19 0.6771519036 -0.8753223314 0.4848661573 0.1463891898
156 4.8125000000 19 0.3807813663 -2.2268648350 0.8733864765 -2.8719383531
157 4.8437500000 19 1.2989304814 -0.8191135751 -0.0657413107 -0.7095830712
158 4.8750000000 19 -0.8266210987 1.3784805497 -1.4887291762 1.1618134295
159 4.9062500000 19 -1.0543215730 0.4731135773 -2.0684361890 -0.1603183729
160 4.9375000000 19 -0.1052226362 0.9541473858 -1.5028247523 0.6044175730
161 4.9687500000 19 -2.0168971580 1.9524956297 -0.7998792476 0.6622647617
@@ -0,0 +1,105 @@
Time:32Hz,Epoch,sinusOsc 1,sinusOsc 2,sinusOsc 3,sinusOsc 4,Event Id,Event Date,Event Duration
0.2500000000,0,0.0223674799,1.2564364343,0.5189549878,-2.2082337379,,,
0.2812500000,0,0.8587778323,1.5912609145,-0.8135359478,0.7847811254,,,
0.3125000000,0,1.0605198516,0.3100244990,-1.0731867792,-0.2119004478,,,
0.3437500000,0,-0.8527917255,1.3612667999,-0.1597583084,-1.8827722525,,,
0.3750000000,0,0.2862985568,0.5189549878,0.7847811254,0.9814084992,,,
0.4062500000,0,0.6745718556,-2.0249997390,0.7541775274,1.5472144212,,,
0.4375000000,0,-0.8460419110,-1.3302670931,0.0634287720,0.7819705904,,,
0.4687500000,0,0.7209285523,-1.0731867792,-0.0655390377,0.9506913659,,,
0.7500000000,1,0.5189549878,0.9814084992,0.9030515780,0.8068531766,,,
0.7812500000,1,-0.1244988728,0.2724851298,-0.4594717137,0.6869181620,,,
0.8125000000,1,-2.0249997390,1.5472144212,-1.0439874057,2.0694974039,,,
0.8437500000,1,-0.8135359478,2.8779488994,-0.2805237468,0.3641695321,,,
0.8750000000,1,-1.3302670931,0.7819705904,0.9701626979,-1.8389984936,,,
0.9062500000,1,-2.7774418870,0.2993489279,1.4263392704,0.6679934029,,,
0.9375000000,1,-1.0731867792,0.9506913659,0.8667484914,0.1385386313,,,
0.9687500000,1,-1.2560591950,-0.8668315473,0.3301381800,-2.4206456881,,,
1.2500000000,2,-0.2119004478,-1.7310810939,0.1385386313,-1.7466375845,,,
1.2812500000,2,-1.4354651966,-1.5706412435,-1.0080375931,0.2727140524,,,
1.3125000000,2,0.0634287720,0.9701626979,-1.7974455953,-0.8262613606,,,
1.3437500000,2,-0.9654362809,0.5424888696,-1.2808655550,-0.9489926046,,,
1.3750000000,2,-1.8827722525,-0.4108610506,0.0983659614,-0.5547380276,,,
1.4062500000,2,-0.0655390377,0.8667484914,0.9871376509,-0.6953344902,,,
1.4375000000,2,-0.8086493471,-0.2124145663,0.6661389185,1.9635447878,,,
1.4687500000,2,-1.1988821934,-1.3394010772,-0.1688100058,1.5699068231,,,
1.5000000000,3,0.9814084992,0.8068531766,-0.3034584827,-1.0425910551,,,
1.5312500000,3,0.4099144509,1.1952068865,0.4983557018,1.1445444315,,,
1.5625000000,3,0.2724851298,0.6869181620,1.1867185475,1.5013198216,,,
1.5937500000,3,2.4069561396,2.5877673403,0.6771519036,-1.2419463750,,,
1.6250000000,3,1.5472144212,2.0694974039,-0.8266210987,-1.0463628150,,,
1.6562500000,3,1.1997027388,-0.1839871598,-2.0168971580,-1.1194784628,,,
1.6875000000,3,2.8779488994,0.3641695321,-1.9643056971,-0.7420012388,,,
1.7187500000,3,1.4563051832,-0.2026887361,-1.1487345134,0.7176546469,,,
1.7500000000,4,0.7819705904,-1.8389984936,-0.8262613606,-1.0909272040,,,
1.7812500000,4,2.0520274556,-0.1234290101,-1.4955637468,-0.3859075051,,,
1.8125000000,4,0.2993489279,0.6679934029,-2.2938779901,2.8650857800,,,
1.8437500000,4,-0.3417921204,-0.7611641008,-2.0424755980,0.8737882447,,,
1.8750000000,4,0.9506913659,0.1385386313,-0.6953344902,-0.6117828212,,,
1.9062500000,4,-0.6688572272,0.0043701116,0.5394431118,0.7816769419,,,
1.9375000000,4,-0.8668315473,-2.4206456881,0.5615308290,-0.1516857685,,,
1.9687500000,4,0.7412410587,-1.7974455953,-0.3822991487,-0.4131300313,,,
2.0000000000,5,-0.5852777802,-0.7723189861,-1.0425910551,-0.9497739372,,,
2.0312500000,5,-0.3568127661,-1.6840958410,-0.6769683658,-2.3559666125,,,
2.0625000000,5,1.3761889031,0.0983659614,0.0737680120,0.4128262271,,,
2.0937500000,5,0.0324007523,1.8606501325,-0.0164610272,1.3211814381,,,
2.1250000000,5,0.2823791178,0.4087503374,-1.2419463750,-1.2291006398,,,
2.1562500000,5,1.7027679072,0.6661389185,-2.5427995283,0.6576534641,,,
2.1875000000,5,-0.0385524690,1.3163956500,-2.6920820881,2.2084155704,,,
2.2187500000,5,-0.0554208172,-0.6897861214,-1.6940570431,0.5039915002,,,
2.5000000000,6,-1.7310810939,-1.7466375845,-0.6117828212,-0.1603763521,,,
2.5312500000,6,-0.2805237468,-1.9643056971,-0.7284838207,1.0964841466,,,
2.5625000000,6,-1.5706412435,0.2727140524,-0.0203749932,0.6291119609,,,
2.5937500000,6,-0.3846152674,-0.2942868426,0.3347196668,1.0644429647,,,
2.6250000000,6,0.9701626979,-0.8262613606,-0.4131300313,0.4825889334,,,
2.6562500000,6,-0.4783392019,0.5368167826,-1.6227881216,-2.4009484456,,,
2.6875000000,6,0.5424888696,-0.9489926046,-1.9662756714,-0.6742923707,,,
2.7187500000,6,1.4263392704,-2.2938779901,-0.9734886565,0.8125103403,,,
2.7500000000,7,-0.4108610506,-0.5547380276,0.4128262271,-1.8494334914,,,
2.7812500000,7,0.3635555387,-0.5968321736,0.9308023856,-0.8971534422,,,
2.8125000000,7,0.8667484914,-0.6953344902,0.4463823054,1.1069949952,,,
2.8437500000,7,-1.1002432968,1.9100213158,0.0426636172,0.7912462530,,,
2.8750000000,7,-0.2124145663,1.9635447878,0.6576534641,1.4702474315,,,
2.9062500000,7,0.3301381800,0.5615308290,1.9028072080,0.2464688260,,,
2.9375000000,7,-1.3394010772,1.5699068231,2.4783674333,-0.4482837744,,,
2.9687500000,7,0.0041022005,0.7251494037,1.6998640384,1.7383508457,,,
3.0000000000,8,0.8068531766,-1.0425910551,0.3243588722,-0.4315280454,,,
3.0312500000,8,-0.4912335635,0.5893078056,-0.3080250331,-2.7643803080,,,
3.0625000000,8,1.1952068865,1.1445444315,0.1958671810,-0.1897743319,,,
3.0937500000,8,1.9907896528,0.0737680120,0.8883208288,0.0114502696,,,
3.1250000000,8,0.6869181620,1.5013198216,0.6782850799,-0.7741952885,,,
3.1562500000,8,2.2564956184,1.3168811607,-0.3157015938,0.2792427283,,,
3.1875000000,8,2.5877673403,-1.2419463750,-0.8753223314,-0.0063782440,,,
3.2187500000,8,0.8953186036,-1.0211462797,-0.1299899339,1.5184145208,,,
3.5000000000,9,-1.8389984936,-1.0909272040,0.4825889334,1.1467688435,,,
3.5312500000,9,-0.0912575086,0.4355042258,-0.5981556844,0.3428316999,,,
3.5625000000,9,-0.1234290101,-0.3859075051,-0.4068856788,-0.6407408097,,,
3.5937500000,9,-1.2117474109,0.8702078730,0.4843950700,2.4003691243,,,
3.6250000000,9,0.6679934029,2.8650857800,0.8125103403,1.5387091828,,,
3.6562500000,9,0.4456384107,1.3630557893,0.1532086532,-1.4887291762,,,
3.6875000000,9,-0.7611641008,0.8737882447,-0.5766315153,-0.2453985203,,,
3.7187500000,9,0.8470458326,1.5190458612,-0.2412622290,-0.2134703607,,,
4.0000000000,10,-0.7723189861,-0.9497739372,-0.4315280454,0.3403443506,,,
4.0312500000,10,-1.2808655550,-1.9662756714,-1.7403637988,-0.7055335942,,,
4.0625000000,10,-1.6840958410,-2.3559666125,-1.8417807445,-0.8776538362,,,
4.0937500000,10,0.5621986200,0.2326467119,-0.8451463680,-1.5934803325,,,
4.1250000000,10,0.0983659614,0.4128262271,0.0114502696,0.3268928833,,,
4.1562500000,10,-0.2036004516,-0.2453224994,-0.1722950538,-0.2224224967,,,
4.1875000000,10,1.8606501325,1.3211814381,-0.9238158916,-1.9913265080,,,
4.2187500000,10,0.9871376509,0.4463823054,-1.0182130516,1.2816197960,,,
4.2500000000,11,0.4087503374,-1.2291006398,-0.0063782440,2.2316009870,,,
4.2812500000,11,2.0306267967,0.3530693071,1.1785364181,-0.1218676333,,,
4.3125000000,11,0.6661389185,0.6576534641,1.2700366680,0.5685098797,,,
4.3437500000,11,-0.0986454486,0.0272639229,0.1363600204,0.5013551605,,,
4.3750000000,11,1.3163956500,2.2084155704,-1.0708097558,-0.0630998880,,,
4.4062500000,11,-0.1688100058,2.4783674333,-1.2623176879,0.2050039337,,,
4.4375000000,11,-0.6897861214,0.5039915002,-0.6561812935,-2.1904913958,,,
4.4687500000,11,0.9355137218,0.9639543981,-0.4500766717,-1.6627065276,,,
4.7500000000,12,2.5309068373,-1.5904395907,-0.6407408097,0.4598607025,,,
4.7812500000,12,0.6771519036,-0.8753223314,0.4848661573,0.1463891898,,,
4.8125000000,12,0.3807813663,-2.2268648350,0.8733864765,-2.8719383531,,,
4.8437500000,12,1.2989304814,-0.8191135751,-0.0657413107,-0.7095830712,,,
4.8750000000,12,-0.8266210987,1.3784805497,-1.4887291762,1.1618134295,,,
4.9062500000,12,-1.0543215730,0.4731135773,-2.0684361890,-0.1603183729,,,
4.9375000000,12,-0.1052226362,0.9541473858,-1.5028247523,0.6044175730,,,
4.9687500000,12,-2.0168971580,1.9524956297,-0.7998792476,0.6622647617,,,
1 Time:32Hz Epoch sinusOsc 1 sinusOsc 2 sinusOsc 3 sinusOsc 4 Event Id Event Date Event Duration
2 0.2500000000 0 0.0223674799 1.2564364343 0.5189549878 -2.2082337379
3 0.2812500000 0 0.8587778323 1.5912609145 -0.8135359478 0.7847811254
4 0.3125000000 0 1.0605198516 0.3100244990 -1.0731867792 -0.2119004478
5 0.3437500000 0 -0.8527917255 1.3612667999 -0.1597583084 -1.8827722525
6 0.3750000000 0 0.2862985568 0.5189549878 0.7847811254 0.9814084992
7 0.4062500000 0 0.6745718556 -2.0249997390 0.7541775274 1.5472144212
8 0.4375000000 0 -0.8460419110 -1.3302670931 0.0634287720 0.7819705904
9 0.4687500000 0 0.7209285523 -1.0731867792 -0.0655390377 0.9506913659
10 0.7500000000 1 0.5189549878 0.9814084992 0.9030515780 0.8068531766
11 0.7812500000 1 -0.1244988728 0.2724851298 -0.4594717137 0.6869181620
12 0.8125000000 1 -2.0249997390 1.5472144212 -1.0439874057 2.0694974039
13 0.8437500000 1 -0.8135359478 2.8779488994 -0.2805237468 0.3641695321
14 0.8750000000 1 -1.3302670931 0.7819705904 0.9701626979 -1.8389984936
15 0.9062500000 1 -2.7774418870 0.2993489279 1.4263392704 0.6679934029
16 0.9375000000 1 -1.0731867792 0.9506913659 0.8667484914 0.1385386313
17 0.9687500000 1 -1.2560591950 -0.8668315473 0.3301381800 -2.4206456881
18 1.2500000000 2 -0.2119004478 -1.7310810939 0.1385386313 -1.7466375845
19 1.2812500000 2 -1.4354651966 -1.5706412435 -1.0080375931 0.2727140524
20 1.3125000000 2 0.0634287720 0.9701626979 -1.7974455953 -0.8262613606
21 1.3437500000 2 -0.9654362809 0.5424888696 -1.2808655550 -0.9489926046
22 1.3750000000 2 -1.8827722525 -0.4108610506 0.0983659614 -0.5547380276
23 1.4062500000 2 -0.0655390377 0.8667484914 0.9871376509 -0.6953344902
24 1.4375000000 2 -0.8086493471 -0.2124145663 0.6661389185 1.9635447878
25 1.4687500000 2 -1.1988821934 -1.3394010772 -0.1688100058 1.5699068231
26 1.5000000000 3 0.9814084992 0.8068531766 -0.3034584827 -1.0425910551
27 1.5312500000 3 0.4099144509 1.1952068865 0.4983557018 1.1445444315
28 1.5625000000 3 0.2724851298 0.6869181620 1.1867185475 1.5013198216
29 1.5937500000 3 2.4069561396 2.5877673403 0.6771519036 -1.2419463750
30 1.6250000000 3 1.5472144212 2.0694974039 -0.8266210987 -1.0463628150
31 1.6562500000 3 1.1997027388 -0.1839871598 -2.0168971580 -1.1194784628
32 1.6875000000 3 2.8779488994 0.3641695321 -1.9643056971 -0.7420012388
33 1.7187500000 3 1.4563051832 -0.2026887361 -1.1487345134 0.7176546469
34 1.7500000000 4 0.7819705904 -1.8389984936 -0.8262613606 -1.0909272040
35 1.7812500000 4 2.0520274556 -0.1234290101 -1.4955637468 -0.3859075051
36 1.8125000000 4 0.2993489279 0.6679934029 -2.2938779901 2.8650857800
37 1.8437500000 4 -0.3417921204 -0.7611641008 -2.0424755980 0.8737882447
38 1.8750000000 4 0.9506913659 0.1385386313 -0.6953344902 -0.6117828212
39 1.9062500000 4 -0.6688572272 0.0043701116 0.5394431118 0.7816769419
40 1.9375000000 4 -0.8668315473 -2.4206456881 0.5615308290 -0.1516857685
41 1.9687500000 4 0.7412410587 -1.7974455953 -0.3822991487 -0.4131300313
42 2.0000000000 5 -0.5852777802 -0.7723189861 -1.0425910551 -0.9497739372
43 2.0312500000 5 -0.3568127661 -1.6840958410 -0.6769683658 -2.3559666125
44 2.0625000000 5 1.3761889031 0.0983659614 0.0737680120 0.4128262271
45 2.0937500000 5 0.0324007523 1.8606501325 -0.0164610272 1.3211814381
46 2.1250000000 5 0.2823791178 0.4087503374 -1.2419463750 -1.2291006398
47 2.1562500000 5 1.7027679072 0.6661389185 -2.5427995283 0.6576534641
48 2.1875000000 5 -0.0385524690 1.3163956500 -2.6920820881 2.2084155704
49 2.2187500000 5 -0.0554208172 -0.6897861214 -1.6940570431 0.5039915002
50 2.5000000000 6 -1.7310810939 -1.7466375845 -0.6117828212 -0.1603763521
51 2.5312500000 6 -0.2805237468 -1.9643056971 -0.7284838207 1.0964841466
52 2.5625000000 6 -1.5706412435 0.2727140524 -0.0203749932 0.6291119609
53 2.5937500000 6 -0.3846152674 -0.2942868426 0.3347196668 1.0644429647
54 2.6250000000 6 0.9701626979 -0.8262613606 -0.4131300313 0.4825889334
55 2.6562500000 6 -0.4783392019 0.5368167826 -1.6227881216 -2.4009484456
56 2.6875000000 6 0.5424888696 -0.9489926046 -1.9662756714 -0.6742923707
57 2.7187500000 6 1.4263392704 -2.2938779901 -0.9734886565 0.8125103403
58 2.7500000000 7 -0.4108610506 -0.5547380276 0.4128262271 -1.8494334914
59 2.7812500000 7 0.3635555387 -0.5968321736 0.9308023856 -0.8971534422
60 2.8125000000 7 0.8667484914 -0.6953344902 0.4463823054 1.1069949952
61 2.8437500000 7 -1.1002432968 1.9100213158 0.0426636172 0.7912462530
62 2.8750000000 7 -0.2124145663 1.9635447878 0.6576534641 1.4702474315
63 2.9062500000 7 0.3301381800 0.5615308290 1.9028072080 0.2464688260
64 2.9375000000 7 -1.3394010772 1.5699068231 2.4783674333 -0.4482837744
65 2.9687500000 7 0.0041022005 0.7251494037 1.6998640384 1.7383508457
66 3.0000000000 8 0.8068531766 -1.0425910551 0.3243588722 -0.4315280454
67 3.0312500000 8 -0.4912335635 0.5893078056 -0.3080250331 -2.7643803080
68 3.0625000000 8 1.1952068865 1.1445444315 0.1958671810 -0.1897743319
69 3.0937500000 8 1.9907896528 0.0737680120 0.8883208288 0.0114502696
70 3.1250000000 8 0.6869181620 1.5013198216 0.6782850799 -0.7741952885
71 3.1562500000 8 2.2564956184 1.3168811607 -0.3157015938 0.2792427283
72 3.1875000000 8 2.5877673403 -1.2419463750 -0.8753223314 -0.0063782440
73 3.2187500000 8 0.8953186036 -1.0211462797 -0.1299899339 1.5184145208
74 3.5000000000 9 -1.8389984936 -1.0909272040 0.4825889334 1.1467688435
75 3.5312500000 9 -0.0912575086 0.4355042258 -0.5981556844 0.3428316999
76 3.5625000000 9 -0.1234290101 -0.3859075051 -0.4068856788 -0.6407408097
77 3.5937500000 9 -1.2117474109 0.8702078730 0.4843950700 2.4003691243
78 3.6250000000 9 0.6679934029 2.8650857800 0.8125103403 1.5387091828
79 3.6562500000 9 0.4456384107 1.3630557893 0.1532086532 -1.4887291762
80 3.6875000000 9 -0.7611641008 0.8737882447 -0.5766315153 -0.2453985203
81 3.7187500000 9 0.8470458326 1.5190458612 -0.2412622290 -0.2134703607
82 4.0000000000 10 -0.7723189861 -0.9497739372 -0.4315280454 0.3403443506
83 4.0312500000 10 -1.2808655550 -1.9662756714 -1.7403637988 -0.7055335942
84 4.0625000000 10 -1.6840958410 -2.3559666125 -1.8417807445 -0.8776538362
85 4.0937500000 10 0.5621986200 0.2326467119 -0.8451463680 -1.5934803325
86 4.1250000000 10 0.0983659614 0.4128262271 0.0114502696 0.3268928833
87 4.1562500000 10 -0.2036004516 -0.2453224994 -0.1722950538 -0.2224224967
88 4.1875000000 10 1.8606501325 1.3211814381 -0.9238158916 -1.9913265080
89 4.2187500000 10 0.9871376509 0.4463823054 -1.0182130516 1.2816197960
90 4.2500000000 11 0.4087503374 -1.2291006398 -0.0063782440 2.2316009870
91 4.2812500000 11 2.0306267967 0.3530693071 1.1785364181 -0.1218676333
92 4.3125000000 11 0.6661389185 0.6576534641 1.2700366680 0.5685098797
93 4.3437500000 11 -0.0986454486 0.0272639229 0.1363600204 0.5013551605
94 4.3750000000 11 1.3163956500 2.2084155704 -1.0708097558 -0.0630998880
95 4.4062500000 11 -0.1688100058 2.4783674333 -1.2623176879 0.2050039337
96 4.4375000000 11 -0.6897861214 0.5039915002 -0.6561812935 -2.1904913958
97 4.4687500000 11 0.9355137218 0.9639543981 -0.4500766717 -1.6627065276
98 4.7500000000 12 2.5309068373 -1.5904395907 -0.6407408097 0.4598607025
99 4.7812500000 12 0.6771519036 -0.8753223314 0.4848661573 0.1463891898
100 4.8125000000 12 0.3807813663 -2.2268648350 0.8733864765 -2.8719383531
101 4.8437500000 12 1.2989304814 -0.8191135751 -0.0657413107 -0.7095830712
102 4.8750000000 12 -0.8266210987 1.3784805497 -1.4887291762 1.1618134295
103 4.9062500000 12 -1.0543215730 0.4731135773 -2.0684361890 -0.1603183729
104 4.9375000000 12 -0.1052226362 0.9541473858 -1.5028247523 0.6044175730
105 4.9687500000 12 -2.0168971580 1.9524956297 -0.7998792476 0.6622647617
@@ -0,0 +1,369 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>Artifact-Amplitude</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x000015a8, 0x000079e9)</Identifier>
<Name>Player Controller</Name>
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Stimulation name</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_Label_00</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
<Name>Action to perform</Name>
<DefaultValue>Pause</DefaultValue>
<Value>Stop</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>304</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x01165f9f)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000029af, 0x00003a23)</Identifier>
<Name>Artefact Amplitude</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xb68095e4)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Non-artefact signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Max (mV)</Name>
<DefaultValue>100</DefaultValue>
<Value>3</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>240</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>688</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x3dd557b8, 0xa3fba55d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000484f, 0x00003eff)</Identifier>
<Name>CSV File Reader</Name>
<AlgorithmClassIdentifier>(0x336a3d9a, 0x753f1ba4)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stimulation</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Player_ScenarioDirectory}/$var{Test Name}-input.csv</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>176</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>688</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa9cdc629, 0xb153eb33)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00004c39, 0x0000096b)</Identifier>
<Name>CSV File Writer</Name>
<AlgorithmClassIdentifier>(0x428375e8, 0x325f2db9)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input stream</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations stream</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue>record-[$core{date}-$core{time}].csv</DefaultValue>
<Value>${Player_ScenarioDirectory}/$var{Test Name}-output.csv</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Precision</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Append data</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Only last matrix</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>304</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>688</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xee4b6d30, 0x788aed29)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>4</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00005b5f, 0x000050b0)</Identifier>
<Name>Timeout</Name>
<AlgorithmClassIdentifier>(0x24fcd292, 0x5c8f6aa8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x544a003e, 0x6dcba5f6)</TypeIdentifier>
<Name>Input Stream</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output Stimulations</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Timeout delay</Name>
<DefaultValue>5</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Output Stimulation</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_Label_00</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>240</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x1eaee00e, 0xdb05d34e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x017178bd)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000492, 0x00005d6b)</Identifier>
<Source>
<BoxIdentifier>(0x000029af, 0x00003a23)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00004c39, 0x0000096b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00001a66, 0x00001ca2)</Identifier>
<Source>
<BoxIdentifier>(0x00005b5f, 0x000050b0)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000015a8, 0x000079e9)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000702c, 0x00002b90)</Identifier>
<Source>
<BoxIdentifier>(0x0000484f, 0x00003eff)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00005b5f, 0x000050b0)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00007556, 0x000015f0)</Identifier>
<Source>
<BoxIdentifier>(0x0000484f, 0x00003eff)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000029af, 0x00003a23)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments></Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":320,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":480},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x0000420e, 0x000074bb)","index":0,"name":"Empty","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,39 @@
PROJECT(openvibe-plugins-classification)
SET(PROJECT_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
SET(PROJECT_VERSION ${OV_GLOBAL_VERSION_STRING})
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.h src/*.inl)
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRC_FILES}
"../../../contrib/packages/libSVM/svm.cpp"
"../../../contrib/packages/libSVM/svm.h")
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER ${PLUGINS_FOLDER}
COMPILE_FLAGS "-DOVP_Exports -DOVP_Shared")
# ---------------------------------
INCLUDE("FindOpenViBE")
INCLUDE("FindOpenViBECommon")
INCLUDE("FindOpenViBEToolkit")
INCLUDE("FindOpenViBEModuleEBML")
INCLUDE("FindOpenViBEModuleXML")
INCLUDE("FindThirdPartyEigen")
# ---------------------------------
# Test applications
# ---------------------------------
IF(OV_COMPILE_TESTS)
ADD_SUBDIRECTORY(test)
ENDIF(OV_COMPILE_TESTS)
# -----------------------------
# Install files
# -----------------------------
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
INSTALL(DIRECTORY box-tutorials/ DESTINATION ${DIST_DATADIR}/openvibe/scenarios/box-tutorials)
@@ -0,0 +1,30 @@
sent = false
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
sent = false;
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() and sent == false do
current_time = box:get_current_time() + 1
box:send_stimulation(1, OVTK_StimulationId_Label_01, current_time, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_02, current_time+10, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_03, current_time+20, 0)
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time+30, 0)
sent = true
box:sleep()
end
end
@@ -0,0 +1,28 @@
<OpenViBE-Classifier-Box FormatVersion="4">
<Strategy-Identifier class-id="(0xffffffff, 0xffffffff)">Native</Strategy-Identifier>
<Algorithm-Identifier class-id="(0x2ba17a3c, 0x1bd46d84)">Linear Discrimimant Analysis (LDA)</Algorithm-Identifier>
<Stimulations>
<Class-Stimulation class-id="0">OVTK_StimulationId_Label_01</Class-Stimulation>
<Class-Stimulation class-id="1">OVTK_StimulationId_Label_02</Class-Stimulation>
<Class-Stimulation class-id="2">OVTK_StimulationId_Label_03</Class-Stimulation>
</Stimulations>
<OpenViBE-Classifier>
<LDA version="1">
<Classes>0 1 2 </Classes>
<Class-config-list>
<Class-config>
<Weights> 1.420580e+002 1.407747e+002 1.515542e+002 1.064545e+002</Weights>
<Bias>-3949.05</Bias>
</Class-config>
<Class-config>
<Weights> 1.396979e+002 1.432478e+002 1.514010e+002 1.063725e+002</Weights>
<Bias>-3947.23</Bias>
</Class-config>
<Class-config>
<Weights> 1.396863e+002 1.410456e+002 1.539364e+002 1.070348e+002</Weights>
<Bias>-3961.82</Bias>
</Class-config>
</Class-config-list>
</LDA>
</OpenViBE-Classifier>
</OpenViBE-Classifier-Box>
@@ -0,0 +1,39 @@
sent = false
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
sent = false;
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() and sent == false do
current_time = box:get_current_time() + 1
box:send_stimulation(1, OVTK_StimulationId_Label_01, current_time, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_02, current_time+4, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_03, current_time+8, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_02, current_time+12, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_01, current_time+16, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_03, current_time+20, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_01, current_time+24, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_02, current_time+28, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_03, current_time+32, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_03, current_time+36, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_02, current_time+40, 0)
box:send_stimulation(1, OVTK_StimulationId_Label_01, current_time+44, 0)
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time+48, 0)
sent = true
box:sleep()
end
end
@@ -0,0 +1,88 @@
/**
* \page BoxAlgorithm_OutlierRemoval Outlier Removal
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Description|
The outlier removal box discards extremal feature vectors. The user can specify the desired quantile limits [min,max].
The algorithm loops through the feature dimensions and computes range r(j)=[quantile(min),quantile(max)] for each dimension j.
If each feature j of example i is inside r(j), the example i is kept. Otherwise it is discarded. The box is intended to
be sent all the vectors of interest before being given the stimulation to start the removal.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Inputs|
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Inputs|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Input1|
The stimulation to start the removal.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Input1|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Input2|
The feature vectors to prune.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Input2|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Outputs|
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Outputs|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Output1|
The stimulation to announce that the removal is complete.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Output1|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Output2|
The kept feature vectors.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Output2|
______________________________________________________
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Settings|
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Settings|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Setting1|
Lower quantile threshold. In [0,1].
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Setting1|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Setting2|
Upper quantile threshold. In [0,1].
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Setting2|
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Setting3|
Stimulation to start the removal at and to pass out after.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Setting3|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Examples|
Choice [0.02,0.95] truncates at 2% of the lowest feature values and at 95% of the highest feature values, per dimension.
If the quantile range is specified as [0,1], the box will pass out the original vector set.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_OutlierRemoval_Miscellaneous|
The box can be attempted to remove artifacts when training classifiers that are sensitive to extremal values, for example LDA. In band-power based Motor Imagery, eye blinks can cause really strong band powers, which can then bias the classifier training. With proper control of the upper quantile of this box, such examples can be pruned from the training set.
An intuitive way to think about the filtering made by the box is to imagine a hypercube (rectangle) in the data space. The boundaries of the cube correspond to the estimated quantiles. Each feature vector that is fully inside the cube is kept.
It may be difficult to choose meaningful quantile limits without looking at the feature values. The latter can be attempted with Signal Display. It is also possible to have outliers that are not in any way extremal. Such outliers can be wrongly placed in the feature space or have a wrong associated class label. This box cannot catch such problems.
* |OVP_DocEnd_BoxAlgorithm_OutlierRemoval_Miscellaneous|
*/
@@ -0,0 +1,476 @@
#if defined TARGET_HAS_ThirdPartyEIGEN
#include "ovpCAlgorithmClassifierMLP.h"
#include "../ovp_defines.h"
#include <map>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <Eigen/Dense>
#include <Eigen/Core>
namespace OpenViBE {
namespace Plugins {
namespace Classification {
//Need to be reachable from outside
const char* const MLP_EVALUATION_FUNCTION_NAME = "Evaluation function";
static const char* const MLP_TYPE_NODE_NAME = "MLP";
static const char* const MLP_NEURON_CONFIG_NODE_NAME = "Neuron-configuration";
static const char* const MLP_INPUT_NEURON_COUNT_NODE_NAME = "Input-neuron-count";
static const char* const MLP_HIDDEN_NEURON_COUNT_NODE_NAME = "Hidden-neuron-count";
static const char* const MLP_MAX_NODE_NAME = "Maximum";
static const char* const MLP_MIN_NODE_NAME = "Minimum";
static const char* const MLP_INPUT_BIAS_NODE_NAME = "Input-bias";
static const char* const MLP_INPUT_WEIGHT_NODE_NAME = "Input-weight";
static const char* const MLP_HIDDEN_BIAS_NODE_NAME = "Hidden-bias";
static const char* const MLP_HIDDEN_WEIGHT_NODE_NAME = "Hidden-weight";
static const char* const MLP_CLASS_LABEL_NODE_NAME = "Class-label";
int MLPClassificationCompare(CMatrix& first, CMatrix& second)
{
//We first need to find the best classification of each.
double* buffer = first.getBuffer();
const double maxFirst = *(std::max_element(buffer, buffer + first.getBufferElementCount()));
buffer = second.getBuffer();
const double maxSecond = *(std::max_element(buffer, buffer + second.getBufferElementCount()));
//Then we just compared them
if (OVFloatEqual(maxFirst, maxSecond)) { return 0; }
if (maxFirst > maxSecond) { return -1; }
return 1;
}
#define MLP_DEBUG 0
#if MLP_DEBUG
void dumpMatrix(Kernel::ILogManager& rMgr, const MatrixXd& mat, const CString& desc)
{
rMgr << Kernel::LogLevel_Info << desc << "\n";
for (int i = 0; i < mat.rows(); ++i) {
rMgr << Kernel::LogLevel_Info << "Row " << i << ": ";
for (int j = 0; j < mat.cols(); ++j) {
rMgr << mat(i, j) << " ";
}
rMgr << "\n";
}
}
#else
void dumpMatrix(Kernel::ILogManager& /*rMgr*/, const Eigen::MatrixXd& /*mat*/, const CString& /*desc*/) { }
#endif
bool CAlgorithmClassifierMLP::initialize()
{
Kernel::TParameterHandler<int64_t> iHidden(this->getInputParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_HiddenNeuronCount));
iHidden = 3;
Kernel::TParameterHandler<XML::IXMLNode*> config(this->getOutputParameter(OVTK_Algorithm_Classifier_OutputParameterId_Config));
config = nullptr;
Kernel::TParameterHandler<double> iAlpha(this->getInputParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_Alpha));
iAlpha = 0.01;
Kernel::TParameterHandler<double> iEpsilon(this->getInputParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_Epsilon));
iEpsilon = 0.000001;
return true;
}
bool CAlgorithmClassifierMLP::uninitialize() { return true; }
bool CAlgorithmClassifierMLP::train(const Toolkit::IFeatureVectorSet& dataset)
{
m_labels.clear();
this->initializeExtraParameterMechanism();
size_t hiddenNeuronCount = size_t(this->getInt64Parameter(OVP_Algorithm_ClassifierMLP_InputParameterId_HiddenNeuronCount));
double alpha = this->getDoubleParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_Alpha);
double epsilon = this->getDoubleParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_Epsilon);
this->uninitializeExtraParameterMechanism();
if (hiddenNeuronCount < 1)
{
this->getLogManager() << Kernel::LogLevel_Error << "Invalid amount of neuron in the hidden layer. Fallback to default value (3)\n";
hiddenNeuronCount = 3;
}
if (alpha <= 0)
{
this->getLogManager() << Kernel::LogLevel_Error << "Invalid value for learning coefficient (" << alpha << "). Fallback to default value (0.01)\n";
alpha = 0.01;
}
if (epsilon <= 0)
{
this->getLogManager() << Kernel::LogLevel_Error << "Invalid value for stop learning condition (" << epsilon << "). Fallback to default value (0.000001)\n";
epsilon = 0.000001;
}
std::map<double, size_t> classCount;
std::map<double, Eigen::VectorXd> targetList;
//We need to compute the min and the max of data in order to normalize and center them
for (size_t i = 0; i < dataset.getFeatureVectorCount(); ++i) { classCount[dataset[i].getLabel()]++; }
size_t validationElementCount = 0;
//We generate the list of class
for (auto iter = classCount.begin(); iter != classCount.end(); ++iter)
{
//We keep 20% percent of the training set for the validation for each class
validationElementCount += size_t(iter->second * 0.2);
m_labels.push_back(iter->first);
iter->second = size_t(iter->second * 0.2);
}
const size_t nbClass = m_labels.size();
const size_t nFeature = dataset.getFeatureVector(0).getSize();
//Generate the target vector for each class. To save time and memory, we compute only one vector per class
//Vector tagret looks like following [0 0 1 0] for class 3 (if 4 classes)
for (size_t i = 0; i < nbClass; ++i)
{
Eigen::VectorXd oTarget = Eigen::VectorXd::Zero(nbClass);
//class 1 is at index 0
oTarget[size_t(m_labels[i])] = 1.;
targetList[m_labels[i]] = oTarget;
}
//We store each normalize vector we get for training. This not optimal in memory but avoid a lot of computation later
//List of the class of the feature vectors store in the same order are they are in validation/training set(to be able to get the target)
std::vector<double> oTrainingSet;
std::vector<double> oValidationSet;
Eigen::MatrixXd oTrainingDataMatrix(nFeature, dataset.getFeatureVectorCount() - validationElementCount);
Eigen::MatrixXd oValidationDataMatrix(nFeature, validationElementCount);
//We don't need to make a shuffle it has already be made by the trainer box
//We store 20% of the feature vectors for validation
int validationIndex = 0, trainingIndex = 0;
for (size_t i = 0; i < dataset.getFeatureVectorCount(); ++i)
{
const Eigen::Map<Eigen::VectorXd> oFeatureVec(const_cast<double*>(dataset.getFeatureVector(i).getBuffer()), nFeature);
Eigen::VectorXd oData = oFeatureVec;
if (classCount[dataset.getFeatureVector(i).getLabel()] > 0)
{
oValidationDataMatrix.col(validationIndex++) = oData;
oValidationSet.push_back(dataset.getFeatureVector(i).getLabel());
--classCount[dataset.getFeatureVector(i).getLabel()];
}
else
{
oTrainingDataMatrix.col(trainingIndex++) = oData;
oTrainingSet.push_back(dataset.getFeatureVector(i).getLabel());
}
}
//We now get the min and the max of the training set for normalization
m_max = oTrainingDataMatrix.maxCoeff();
m_min = oTrainingDataMatrix.minCoeff();
//Normalization of the data. We need to do it to avoid saturation of tanh.
for (size_t i = 0; i < size_t(oTrainingDataMatrix.cols()); ++i)
{
for (size_t j = 0; j < size_t(oTrainingDataMatrix.rows()); ++j)
{
oTrainingDataMatrix(j, i) = 2 * (oTrainingDataMatrix(j, i) - m_min) / (m_max - m_min) - 1;
}
}
for (size_t i = 0; i < size_t(oValidationDataMatrix.cols()); ++i)
{
for (size_t j = 0; j < size_t(oValidationDataMatrix.rows()); ++j)
{
oValidationDataMatrix(j, i) = 2 * (oValidationDataMatrix(j, i) - m_min) / (m_max - m_min) - 1;
}
}
const double featureCount = double(oTrainingSet.size());
const double boundValue = 1. / (nFeature + 1);
double previousError = std::numeric_limits<double>::max();
double cumulativeError = 0;
//Let's generate randomly weights and biases
//We restrain the weight between -1/(fan-in) and 1/(fan-in) to avoid saturation in the worst case
m_inputWeight = Eigen::MatrixXd::Random(hiddenNeuronCount, nFeature) * boundValue;
m_inputBias = Eigen::VectorXd::Random(hiddenNeuronCount) * boundValue;
m_hiddenWeight = Eigen::MatrixXd::Random(nbClass, hiddenNeuronCount) * boundValue;
m_hiddenBias = Eigen::VectorXd::Random(nbClass) * boundValue;
Eigen::MatrixXd oDeltaInputWeight = Eigen::MatrixXd::Zero(hiddenNeuronCount, nFeature);
Eigen::VectorXd oDeltaInputBias = Eigen::VectorXd::Zero(hiddenNeuronCount);
Eigen::MatrixXd oDeltaHiddenWeight = Eigen::MatrixXd::Zero(nbClass, hiddenNeuronCount);
Eigen::VectorXd oDeltaHiddenBias = Eigen::VectorXd::Zero(nbClass);
Eigen::MatrixXd oY1, oA2;
//A1 is the value compute in hidden neuron before applying tanh
//Y1 is the output vector of hidden layer
//A2 is the value compute by output neuron before applying transfer function
//Y2 is the value of output after the transfer function (softmax)
while (true)
{
oDeltaInputWeight.setZero();
oDeltaInputBias.setZero();
oDeltaHiddenWeight.setZero();
oDeltaHiddenBias.setZero();
//The first cast of tanh has to been explicit for windows compilation
oY1.noalias() = ((m_inputWeight * oTrainingDataMatrix).colwise() + m_inputBias).unaryExpr(
std::ptr_fun<double, double>(static_cast<double(*)(double)>(tanh)));
oA2.noalias() = (m_hiddenWeight * oY1).colwise() + m_hiddenBias;
for (size_t i = 0; i < featureCount; ++i)
{
const Eigen::VectorXd& oTarget = targetList[oTrainingSet[i]];
const Eigen::VectorXd& oData = oTrainingDataMatrix.col(i);
//Now we compute all deltas of output layer
Eigen::VectorXd oOutputDelta = oA2.col(i) - oTarget;
for (size_t j = 0; j < nbClass; ++j)
{
for (size_t k = 0; k < hiddenNeuronCount; ++k) { oDeltaHiddenWeight(j, k) -= oOutputDelta[j] * oY1.col(i)[k]; }
}
oDeltaHiddenBias.noalias() -= oOutputDelta;
//Now we take care of the hidden layer
Eigen::VectorXd oHiddenDelta = Eigen::VectorXd::Zero(hiddenNeuronCount);
for (size_t j = 0; j < hiddenNeuronCount; ++j)
{
for (size_t k = 0; k < nbClass; ++k) { oHiddenDelta[j] += oOutputDelta[k] * m_hiddenWeight(k, j); }
oHiddenDelta[j] *= (1 - pow(oY1.col(i)[j], 2));
}
for (size_t j = 0; j < hiddenNeuronCount; ++j) { for (size_t k = 0; k < nFeature; ++k) { oDeltaInputWeight(j, k) -= oHiddenDelta[j] * oData[k]; } }
oDeltaInputBias.noalias() -= oHiddenDelta;
}
//We finish the loop, let's apply deltas
m_hiddenWeight.noalias() += oDeltaHiddenWeight / featureCount * alpha;
m_hiddenBias.noalias() += oDeltaHiddenBias / featureCount * alpha;
m_inputWeight.noalias() += oDeltaInputWeight / featureCount * alpha;
m_inputBias.noalias() += oDeltaInputBias / featureCount * alpha;
dumpMatrix(this->getLogManager(), m_hiddenWeight, "m_hiddenWeight");
dumpMatrix(this->getLogManager(), m_hiddenBias, "m_hiddenBias");
dumpMatrix(this->getLogManager(), m_inputWeight, "m_inputWeight");
dumpMatrix(this->getLogManager(), m_inputBias, "m_inputBias");
//Now we compute the cumulative error in the validation set
cumulativeError = 0;
//We don't compute Y2 because we train on the identity
oA2.noalias() = (m_hiddenWeight * ((m_inputWeight * oValidationDataMatrix).colwise() + m_inputBias).unaryExpr(std::ptr_fun<double, double>(tanh))).
colwise() + m_hiddenBias;
for (size_t i = 0; i < oValidationSet.size(); ++i)
{
const Eigen::VectorXd& oTarget = targetList[oValidationSet[i]];
const Eigen::VectorXd& oIdentityResult = oA2.col(i);
//Now we need to compute the error
for (size_t j = 0; j < nbClass; ++j) { cumulativeError += 0.5 * pow(oIdentityResult[j] - oTarget[j], 2); }
}
cumulativeError /= oValidationSet.size();
//If the delta of error is under Epsilon we consider that the training is over
if (previousError - cumulativeError < epsilon) { break; }
previousError = cumulativeError;
}
dumpMatrix(this->getLogManager(), m_hiddenWeight, "oHiddenWeight");
dumpMatrix(this->getLogManager(), m_hiddenBias, "oHiddenBias");
dumpMatrix(this->getLogManager(), m_inputWeight, "oInputWeight");
dumpMatrix(this->getLogManager(), m_inputBias, "oInputBias");
return true;
}
bool CAlgorithmClassifierMLP::classify(const Toolkit::IFeatureVector& sample, double& classLabel, Toolkit::IVector& distance, Toolkit::IVector& probability)
{
if (sample.getSize() != size_t(m_inputWeight.cols()))
{
this->getLogManager() << Kernel::LogLevel_Error << "Classifier expected " << size_t(m_inputWeight.cols()) << " features, got " << sample.getSize() << "\n";
return false;
}
const Eigen::Map<Eigen::VectorXd> oFeatureVec(const_cast<double*>(sample.getBuffer()), sample.getSize());
Eigen::VectorXd oData = oFeatureVec;
//we normalize and center data on 0 to avoid saturation
for (size_t j = 0; j < sample.getSize(); ++j) { oData[j] = 2 * (oData[j] - m_min) / (m_max - m_min) - 1; }
const size_t classCount = m_labels.size();
Eigen::VectorXd oA2 = m_hiddenBias + (m_hiddenWeight * (m_inputBias + (m_inputWeight * oData)).unaryExpr(std::ptr_fun<double, double>(tanh)));
//The final transfer function is the softmax
Eigen::VectorXd oY2 = oA2.unaryExpr(std::ptr_fun<double, double>(exp));
oY2 /= oY2.sum();
distance.setSize(classCount);
probability.setSize(classCount);
//We use A2 as the classification values output, and the Y2 as the probability
double max = oY2[0];
size_t classFound = 0;
distance[0] = oA2[0];
probability[0] = oY2[0];
for (size_t i = 1; i < classCount; ++i)
{
if (oY2[i] > max)
{
max = oY2[i];
classFound = i;
}
distance[i] = oA2[i];
probability[i] = oY2[i];
}
classLabel = m_labels[classFound];
return true;
}
XML::IXMLNode* CAlgorithmClassifierMLP::saveConfig()
{
XML::IXMLNode* rootNode = XML::createNode(MLP_TYPE_NODE_NAME);
std::stringstream classes;
for (int i = 0; i < m_hiddenBias.size(); ++i) { classes << m_labels[i] << " "; }
XML::IXMLNode* classLabelNode = XML::createNode(MLP_CLASS_LABEL_NODE_NAME);
classLabelNode->setPCData(classes.str().c_str());
rootNode->addChild(classLabelNode);
XML::IXMLNode* configuration = XML::createNode(MLP_NEURON_CONFIG_NODE_NAME);
//The input and output neuron count are not mandatory but they facilitate a lot the loading process
XML::IXMLNode* tempNode = XML::createNode(MLP_INPUT_NEURON_COUNT_NODE_NAME);
dumpData(tempNode, int64_t(m_inputWeight.cols()));
configuration->addChild(tempNode);
tempNode = XML::createNode(MLP_HIDDEN_NEURON_COUNT_NODE_NAME);
dumpData(tempNode, int64_t(m_inputWeight.rows()));
configuration->addChild(tempNode);
rootNode->addChild(configuration);
tempNode = XML::createNode(MLP_MIN_NODE_NAME);
dumpData(tempNode, m_min);
rootNode->addChild(tempNode);
tempNode = XML::createNode(MLP_MAX_NODE_NAME);
dumpData(tempNode, m_max);
rootNode->addChild(tempNode);
tempNode = XML::createNode(MLP_INPUT_WEIGHT_NODE_NAME);
dumpData(tempNode, m_inputWeight);
rootNode->addChild(tempNode);
tempNode = XML::createNode(MLP_INPUT_BIAS_NODE_NAME);
dumpData(tempNode, m_inputBias);
rootNode->addChild(tempNode);
tempNode = XML::createNode(MLP_HIDDEN_BIAS_NODE_NAME);
dumpData(tempNode, m_hiddenBias);
rootNode->addChild(tempNode);
tempNode = XML::createNode(MLP_HIDDEN_WEIGHT_NODE_NAME);
dumpData(tempNode, m_hiddenWeight);
rootNode->addChild(tempNode);
return rootNode;
}
bool CAlgorithmClassifierMLP::loadConfig(XML::IXMLNode* configNode)
{
m_labels.clear();
std::stringstream data(configNode->getChildByName(MLP_CLASS_LABEL_NODE_NAME)->getPCData());
double temp;
while (data >> temp) { m_labels.push_back(temp); }
int64_t featureSize, hiddenNeuronCount;
XML::IXMLNode* neuronConfigNode = configNode->getChildByName(MLP_NEURON_CONFIG_NODE_NAME);
loadData(neuronConfigNode->getChildByName(MLP_HIDDEN_NEURON_COUNT_NODE_NAME), hiddenNeuronCount);
loadData(neuronConfigNode->getChildByName(MLP_INPUT_NEURON_COUNT_NODE_NAME), featureSize);
loadData(configNode->getChildByName(MLP_MAX_NODE_NAME), m_max);
loadData(configNode->getChildByName(MLP_MIN_NODE_NAME), m_min);
loadData(configNode->getChildByName(MLP_INPUT_WEIGHT_NODE_NAME), m_inputWeight, hiddenNeuronCount, featureSize);
loadData(configNode->getChildByName(MLP_INPUT_BIAS_NODE_NAME), m_inputBias);
loadData(configNode->getChildByName(MLP_HIDDEN_WEIGHT_NODE_NAME), m_hiddenWeight, m_labels.size(), hiddenNeuronCount);
loadData(configNode->getChildByName(MLP_HIDDEN_BIAS_NODE_NAME), m_hiddenBias);
return true;
}
void CAlgorithmClassifierMLP::dumpData(XML::IXMLNode* node, Eigen::MatrixXd& matrix)
{
std::stringstream data;
data << std::scientific;
for (size_t i = 0; i < size_t(matrix.rows()); ++i) { for (size_t j = 0; j < size_t(matrix.cols()); ++j) { data << " " << matrix(i, j); } }
node->setPCData(data.str().c_str());
}
void CAlgorithmClassifierMLP::dumpData(XML::IXMLNode* node, Eigen::VectorXd& vector)
{
std::stringstream data;
data << std::scientific;
for (size_t i = 0; i < size_t(vector.size()); ++i) { data << " " << vector[i]; }
node->setPCData(data.str().c_str());
}
void CAlgorithmClassifierMLP::dumpData(XML::IXMLNode* node, const int64_t value)
{
std::stringstream data;
data << value;
node->setPCData(data.str().c_str());
}
void CAlgorithmClassifierMLP::dumpData(XML::IXMLNode* node, const double value)
{
std::stringstream data;
data << std::scientific;
data << value;
node->setPCData(data.str().c_str());
}
void CAlgorithmClassifierMLP::loadData(XML::IXMLNode* node, Eigen::MatrixXd& matrix, const size_t nRow, const size_t nCol)
{
matrix = Eigen::MatrixXd(nRow, nCol);
std::stringstream data(node->getPCData());
std::vector<double> coefs;
double value;
while (data >> value) { coefs.push_back(value); }
size_t index = 0;
for (size_t i = 0; i < nRow; ++i)
{
for (size_t j = 0; j < nCol; ++j)
{
matrix(int(i), int(j)) = coefs[index];
++index;
}
}
}
void CAlgorithmClassifierMLP::loadData(XML::IXMLNode* node, Eigen::VectorXd& vector)
{
std::stringstream data(node->getPCData());
std::vector<double> coefs;
double value;
while (data >> value) { coefs.push_back(value); }
vector = Eigen::VectorXd(coefs.size());
for (size_t i = 0; i < coefs.size(); ++i) { vector[i] = coefs[i]; }
}
void CAlgorithmClassifierMLP::loadData(XML::IXMLNode* node, int64_t& value)
{
std::stringstream data(node->getPCData());
data >> value;
}
void CAlgorithmClassifierMLP::loadData(XML::IXMLNode* node, double& value)
{
std::stringstream data(node->getPCData());
data >> value;
}
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
#endif // TARGET_HAS_ThirdPartyEIGEN
@@ -0,0 +1,102 @@
#pragma once
#if defined TARGET_HAS_ThirdPartyEIGEN
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#define OVP_ClassId_Algorithm_ClassifierMLP CIdentifier(0xF3FAB4BE, 0xDC401260)
#define OVP_ClassId_Algorithm_ClassifierMLP_DecisionAvailable CIdentifier(0xF3FAB4BE, 0xDC401261)
#define OVP_ClassId_Algorithm_ClassifierMLPDesc CIdentifier(0xF3FAB4BE, 0xDC401262)
#define OVP_Algorithm_ClassifierMLP_InputParameterId_HiddenNeuronCount CIdentifier(0xF3FAB4BE, 0xDC401263)
#define OVP_Algorithm_ClassifierMLP_InputParameterId_Epsilon CIdentifier(0xF3FAB4BE, 0xDC401264)
#define OVP_Algorithm_ClassifierMLP_InputParameterId_Alpha CIdentifier(0xF3FAB4BE, 0xDC401265)
#include <Eigen/Dense>
#include <xml/IXMLNode.h>
#include <vector>
namespace OpenViBE {
namespace Plugins {
namespace Classification {
int MLPClassificationCompare(CMatrix& first, CMatrix& second);
class CAlgorithmClassifierMLP final : public Toolkit::CAlgorithmClassifier
{
public:
bool initialize() override;
bool uninitialize() override;
bool train(const Toolkit::IFeatureVectorSet& dataset) override;
bool classify(const Toolkit::IFeatureVector& sample, double& classLabel,
Toolkit::IVector& distance, Toolkit::IVector& probability) override;
XML::IXMLNode* saveConfig() override;
bool loadConfig(XML::IXMLNode* configNode) override;
size_t getNProbabilities() override { return m_labels.size(); }
size_t getNDistances() override { return m_labels.size(); }
_IsDerivedFromClass_Final_(CAlgorithmClassifier, OVP_ClassId_Algorithm_ClassifierMLP)
private:
//Helpers for load or sotre data in XMLNode
static void dumpData(XML::IXMLNode* node, Eigen::MatrixXd& matrix);
static void dumpData(XML::IXMLNode* node, Eigen::VectorXd& vector);
static void dumpData(XML::IXMLNode* node, int64_t value);
static void dumpData(XML::IXMLNode* node, double value);
static void loadData(XML::IXMLNode* node, Eigen::MatrixXd& matrix, size_t nRow, size_t nCol);
static void loadData(XML::IXMLNode* node, Eigen::VectorXd& vector);
static void loadData(XML::IXMLNode* node, int64_t& value);
static void loadData(XML::IXMLNode* node, double& value);
std::vector<double> m_labels;
Eigen::MatrixXd m_inputWeight;
Eigen::VectorXd m_inputBias;
Eigen::MatrixXd m_hiddenWeight;
Eigen::VectorXd m_hiddenBias;
double m_min = 0;
double m_max = 0;
};
class CAlgorithmClassifierMLPDesc final : public Toolkit::CAlgorithmClassifierDesc
{
public:
void release() override { }
CString getName() const override { return CString("MLP Classifier"); }
CString getAuthorName() const override { return CString("Guillaume Serrière"); }
CString getAuthorCompanyName() const override { return CString("Inria / Loria"); }
CString getShortDescription() const override { return CString("Multi-layer perceptron algorithm"); }
CString getDetailedDescription() const override { return CString(""); }
CString getCategory() const override { return CString(""); }
CString getVersion() const override { return CString("0.1"); }
CIdentifier getCreatedClass() const override { return OVP_ClassId_Algorithm_ClassifierMLP; }
IPluginObject* create() override { return new CAlgorithmClassifierMLP; }
bool getAlgorithmPrototype(Kernel::IAlgorithmProto& prototype) const override
{
CAlgorithmClassifierDesc::getAlgorithmPrototype(prototype);
prototype.addInputParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_HiddenNeuronCount, "Number of neurons in hidden layer",
Kernel::ParameterType_Integer);
prototype.addInputParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_Epsilon, "Learning stop condition", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_Algorithm_ClassifierMLP_InputParameterId_Alpha, "Learning coefficient", Kernel::ParameterType_Float);
return true;
}
_IsDerivedFromClass_Final_(CAlgorithmClassifierDesc, OVP_ClassId_Algorithm_ClassifierMLPDesc)
};
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
#endif // TARGET_HAS_ThirdPartyEIGEN
@@ -0,0 +1,757 @@
#include "../ovp_defines.h"
#include "ovpCAlgorithmClassifierSVM.h"
#include <sstream>
#include <iostream>
#include <cstring>
#include <cmath>
namespace OpenViBE {
namespace Plugins {
namespace Classification {
static const char* const TYPE_NODE_NAME = "SVM";
static const char* const PARAM_NODE_NAME = "Param";
static const char* const SVM_TYPE_NODE_NAME = "svm_type";
static const char* const KERNEL_TYPE_NODE_NAME = "kernel_type";
static const char* const DEGREE_NODE_NAME = "degree";
static const char* const GAMMA_NODE_NAME = "gamma";
static const char* const COEF0_NODE_NAME = "coef0";
static const char* const MODEL_NODE_NAME = "Model";
static const char* const NR_CLASS_NODE_NAME = "nr_class";
static const char* const TOTAL_SV_NODE_NAME = "total_sv";
static const char* const RHO_NODE_NAME = "rho";
static const char* const LABEL_NODE_NAME = "label";
static const char* const PROB_A_NODE_NAME = "probA";
static const char* const PROB_B_NODE_NAME = "probB";
static const char* const NR_SV_NODE_NAME = "nr_sv";
static const char* const SVS_NODE_NAME = "SVs";
static const char* const SV_NODE_NAME = "SV";
static const char* const COEF_NODE_NAME = "coef";
static const char* const VALUE_NODE_NAME = "value";
int SVMClassificationCompare(CMatrix& first, CMatrix& second)
{
if (OVFloatEqual(std::fabs(first[0]), std::fabs(second[0]))) { return 0; }
if (std::fabs(first[0]) > std::fabs(second[0])) { return -1; }
return 1;
}
bool CAlgorithmClassifierSVM::initialize()
{
Kernel::TParameterHandler<int64_t> iSVMType(this->getInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMType));
Kernel::TParameterHandler<int64_t> iSVMKernelType(this->getInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMKernelType));
Kernel::TParameterHandler<int64_t> iDegree(this->getInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMDegree));
Kernel::TParameterHandler<double> iGamma(this->getInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMGamma));
Kernel::TParameterHandler<double> iCoef0(this->getInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMCoef0));
Kernel::TParameterHandler<double> iCost(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCost));
Kernel::TParameterHandler<double> iNu(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMNu));
Kernel::TParameterHandler<double> iEpsilon(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMEpsilon));
Kernel::TParameterHandler<double> iCacheSize(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCacheSize));
Kernel::TParameterHandler<double> iEpsilonTolerance(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMTolerance));
Kernel::TParameterHandler<bool> iShrinking(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMShrinking));
//TParameterHandler < bool > iProbabilityEstimate(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMProbabilityEstimate));
Kernel::TParameterHandler<CString*> ip_weight(this->getInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMweight));
Kernel::TParameterHandler<CString*> ip_weightLabel(this->getInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMWeightLabel));
iSVMType = C_SVC;
iSVMKernelType = LINEAR;
iDegree = 3;
iGamma = 0;
iCoef0 = 0;
iCost = 1;
iNu = 0.5;
iEpsilon = 0.1;
iCacheSize = 100;
iEpsilonTolerance = 0.001;
iShrinking = true;
//iProbabilityEstimate=true;
*ip_weight = "";
*ip_weightLabel = "";
Kernel::TParameterHandler<XML::IXMLNode*> config(this->getOutputParameter(OVTK_Algorithm_Classifier_OutputParameterId_Config));
config = nullptr;
m_prob.y = nullptr;
m_prob.x = nullptr;
m_param.weight = nullptr;
m_param.weight_label = nullptr;
m_model = nullptr;
m_modelWasTrained = false;
return CAlgorithmClassifier::initialize();
}
bool CAlgorithmClassifierSVM::uninitialize()
{
if (m_prob.x != nullptr && m_prob.y != nullptr)
{
for (size_t i = 0; i < size_t(m_prob.l); ++i) { delete[] m_prob.x[i]; }
delete[] m_prob.y;
delete[] m_prob.x;
m_prob.y = nullptr;
m_prob.x = nullptr;
}
if (m_param.weight != nullptr)
{
delete[] m_param.weight;
m_param.weight = nullptr;
}
if (m_param.weight_label != nullptr)
{
delete[] m_param.weight_label;
m_param.weight_label = nullptr;
}
deleteModel(m_model, !m_modelWasTrained);
m_model = nullptr;
m_modelWasTrained = false;
return CAlgorithmClassifier::uninitialize();
}
void CAlgorithmClassifierSVM::deleteModel(svm_model* model, const bool freeSupportVectors)
{
if (model != nullptr)
{
delete[] model->rho;
delete[] model->probA;
delete[] model->probB;
delete[] model->label;
delete[] model->nSV;
for (size_t i = 0; i < size_t(model->nr_class - 1); ++i) { delete[] model->sv_coef[i]; }
delete[] model->sv_coef;
// We need the following depending on how the model was allocated. If we got it from svm_train,
// the support vectors are pointers to the problem structure which is freed elsewhere.
// If we loaded the model from disk, we allocated the vectors separately.
if (freeSupportVectors) { for (size_t i = 0; i < size_t(model->l); ++i) { delete[] model->SV[i]; } }
delete[] model->SV;
delete model;
model = nullptr;
}
}
void CAlgorithmClassifierSVM::setParameter()
{
this->initializeExtraParameterMechanism();
m_param.svm_type = int(this->getEnumerationParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMType, OVP_TypeId_SVMType));
m_param.kernel_type = int(this->getEnumerationParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMKernelType, OVP_TypeId_SVMKernelType));
m_param.degree = int(this->getInt64Parameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMDegree));
m_param.gamma = this->getDoubleParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMGamma);
m_param.coef0 = this->getDoubleParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMCoef0);
m_param.C = this->getDoubleParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCost);
m_param.nu = this->getDoubleParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMNu);
m_param.p = this->getDoubleParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMEpsilon);
m_param.cache_size = this->getDoubleParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCacheSize);
m_param.eps = this->getDoubleParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMTolerance);
m_param.shrinking = int(this->getBooleanParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMShrinking));
// m_param.probability = this->getBooleanParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMShrinking);
m_param.probability = 1;
const CString paramWeight = *this->getCStringParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMweight);
const CString paramWeightLabel = *this->getCStringParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMWeightLabel);
this->uninitializeExtraParameterMechanism();
std::vector<double> weights;
std::stringstream ssWeight(paramWeight.toASCIIString());
double value;
while (ssWeight >> value) { weights.push_back(value); }
m_param.nr_weight = weights.size();
double* weight = new double[weights.size()];
for (uint32_t i = 0; i < weights.size(); ++i) { weight[i] = weights[i]; }
m_param.weight = weight;//nullptr;
std::vector<int64_t> labels;
std::stringstream ssLabel(paramWeightLabel.toASCIIString());
int64_t iValue;
while (ssLabel >> iValue) { labels.push_back(iValue); }
//the number of weight label need to be equal to the number of weight
while (labels.size() < weights.size()) { labels.push_back(labels.size() + 1); }
int* label = new int[weights.size()];
for (size_t i = 0; i < weights.size(); ++i) { label[i] = int(labels[i]); }
m_param.weight_label = label;//nullptr;
}
bool CAlgorithmClassifierSVM::train(const Toolkit::IFeatureVectorSet& dataset)
{
if (m_prob.x != nullptr && m_prob.y != nullptr)
{
for (size_t i = 0; i < size_t(m_prob.l); ++i) { delete[] m_prob.x[i]; }
delete[] m_prob.y;
delete[] m_prob.x;
m_prob.y = nullptr;
m_prob.x = nullptr;
}
// default Param values
//std::cout<<"param config"<<std::endl;
this->setParameter();
this->getLogManager() << Kernel::LogLevel_Trace << paramToString(&m_param);
//configure m_prob
//std::cout<<"prob config"<<std::endl;
m_prob.l = dataset.getFeatureVectorCount();
m_nFeatures = dataset[0].getSize();
m_prob.y = new double[m_prob.l];
m_prob.x = new svm_node*[m_prob.l];
//std::cout<< "number vector:"<<l_oProb.l<<" size of vector:"<<m_nFeatures<<std::endl;
for (size_t i = 0; i < size_t(m_prob.l); ++i)
{
m_prob.x[i] = new svm_node[m_nFeatures + 1];
m_prob.y[i] = dataset[i].getLabel();
for (size_t j = 0; j < m_nFeatures; ++j)
{
m_prob.x[i][j].index = int(j + 1);
m_prob.x[i][j].value = dataset[i].getBuffer()[j];
}
m_prob.x[i][m_nFeatures].index = -1;
}
// Gamma of zero is interpreted as a request for automatic selection
if (m_param.gamma == 0) { m_param.gamma = 1.0 / (m_nFeatures > 0 ? m_nFeatures : 1.0); }
if (m_param.kernel_type == PRECOMPUTED)
{
for (size_t i = 0; i < size_t(m_prob.l); ++i)
{
if (m_prob.x[i][0].index != 0)
{
this->getLogManager() << Kernel::LogLevel_Error << "Wrong input format: first column must be 0:sample_serial_number\n";
return false;
}
if (m_prob.x[i][0].value <= 0 || m_prob.x[i][0].value > m_nFeatures)
{
this->getLogManager() << Kernel::LogLevel_Error << "Wrong input format: sample_serial_number out of range\n";
return false;
}
}
}
this->getLogManager() << Kernel::LogLevel_Trace << problemToString(&m_prob);
//make a model
//std::cout<<"svm_train"<<std::endl;
if (m_model != nullptr)
{
//std::cout<<"delete model"<<std::endl;
deleteModel(m_model, !m_modelWasTrained);
m_model = nullptr;
m_modelWasTrained = false;
}
m_model = svm_train(&m_prob, &m_param);
if (m_model == nullptr)
{
this->getLogManager() << Kernel::LogLevel_Error << "the training with SVM had failed\n";
return false;
}
m_modelWasTrained = true;
//std::cout<<"log model"<<std::endl;
this->getLogManager() << Kernel::LogLevel_Trace << modelToString();
return true;
}
bool CAlgorithmClassifierSVM::classify(const Toolkit::IFeatureVector& sample, double& classLabel, Toolkit::IVector& distance, Toolkit::IVector& probability)
{
//std::cout<<"classify"<<std::endl;
if (m_model == nullptr)
{
this->getLogManager() << Kernel::LogLevel_Error << "Classification is impossible with a model equalling nullptr\n";
return false;
}
if (m_model->nr_class == 0 || m_model->rho == nullptr)
{
this->getLogManager() << Kernel::LogLevel_Error << "The model wasn't loaded correctly\n";
return false;
}
if (m_nFeatures != sample.getSize())
{
this->getLogManager() << Kernel::LogLevel_Error << "Classifier expected " << m_nFeatures << " features, got " << sample.getSize() << "\n";
return false;
}
if (m_model->param.gamma == 0 &&
(m_model->param.kernel_type == POLY || m_model->param.kernel_type == RBF || m_model->param.kernel_type == SIGMOID))
{
m_model->param.gamma = 1.0 / (m_nFeatures > 0 ? m_nFeatures : 1.0);
this->getLogManager() << Kernel::LogLevel_Warning << "The SVM model had gamma=0. Setting it to [" << m_model->param.gamma << "].\n";
}
//std::cout<<"create X"<<std::endl;
svm_node* x = new svm_node[sample.getSize() + 1];
//std::cout<<"featureVector.getSize():"<<featureVector.getSize()<<"m_numberOfFeatures"<<m_numberOfFeatures<<std::endl;
for (uint32_t i = 0; i < sample.getSize(); ++i)
{
x[i].index = int(i + 1);
x[i].value = sample.getBuffer()[i];
//std::cout<< X[i].index << ";"<<X[i].value<<" ";
}
x[sample.getSize()].index = -1;
//std::cout<<"create ProbEstimates"<<std::endl;
double* probEstimates = new double[m_model->nr_class];
for (size_t i = 0; i < size_t(m_model->nr_class); ++i) { probEstimates[i] = 0; }
classLabel = svm_predict_probability(m_model, x, probEstimates);
//std::cout<<classLabel<<std::endl;
//std::cout<<"probability"<<std::endl;
//If we are not in these modes, label is nullptr and there is no probability
if (m_model->param.svm_type == C_SVC || m_model->param.svm_type == NU_SVC)
{
probability.setSize(m_model->nr_class);
this->getLogManager() << Kernel::LogLevel_Trace << "Label predict: " << classLabel << "\n";
for (size_t i = 0; i < size_t(m_model->nr_class); ++i)
{
this->getLogManager() << Kernel::LogLevel_Trace << "index:" << i << " label:" << m_model->label[i] << " probability:" << probEstimates[i] << "\n";
probability[(m_model->label[i])] = probEstimates[i];
}
}
else { probability.setSize(0); }
//The hyperplane distance is disabled for SVM
distance.setSize(0);
//std::cout<<";"<<classLabel<<";"<<distance[0] <<";"<<ProbEstimates[0]<<";"<<ProbEstimates[1]<<std::endl;
//std::cout<<"Label predict "<<classLabel<< " proba:"<<distance[0]<<std::endl;
//std::cout<<"end classify"<<std::endl;
delete[] x;
delete[] probEstimates;
return true;
}
XML::IXMLNode* CAlgorithmClassifierSVM::saveConfig()
{
//xml file
//std::cout<<"model save"<<std::endl;
std::vector<CString> coefs;
std::vector<CString> values;
//std::cout<<"model save: rho"<<std::endl;
std::stringstream ssRho;
ssRho << std::scientific << m_model->rho[0];
for (size_t i = 1; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ssRho << " " << m_model->rho[i]; }
//std::cout<<"model save: sv_coef and SV"<<std::endl;
for (size_t i = 0; i < size_t(m_model->l); ++i)
{
std::stringstream ssCoef;
std::stringstream ssValue;
ssCoef << m_model->sv_coef[0][i];
for (int j = 1; j < m_model->nr_class - 1; ++j) { ssCoef << " " << m_model->sv_coef[j][i]; }
const svm_node* p = m_model->SV[i];
if (m_model->param.kernel_type == PRECOMPUTED) { ssValue << "0:" << double(p->value); }
else
{
if (p->index != -1)
{
ssValue << p->index << ":" << p->value;
p++;
}
while (p->index != -1)
{
ssValue << " " << p->index << ":" << p->value;
p++;
}
}
coefs.emplace_back(ssCoef.str().c_str());
values.emplace_back(ssValue.str().c_str());
}
XML::IXMLNode* svmNode = XML::createNode(TYPE_NODE_NAME);
//Param node
XML::IXMLNode* paramNode = XML::createNode(PARAM_NODE_NAME);
XML::IXMLNode* tempNode = XML::createNode(SVM_TYPE_NODE_NAME);
tempNode->setPCData(get_svm_type(m_model->param.svm_type));
paramNode->addChild(tempNode);
tempNode = XML::createNode(KERNEL_TYPE_NODE_NAME);
tempNode->setPCData(get_kernel_type(m_model->param.kernel_type));
paramNode->addChild(tempNode);
if (m_model->param.kernel_type == POLY)
{
std::stringstream ss;
ss << m_model->param.degree;
tempNode = XML::createNode(DEGREE_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
paramNode->addChild(tempNode);
}
if (m_model->param.kernel_type == POLY || m_model->param.kernel_type == RBF || m_model->param.kernel_type == SIGMOID)
{
std::stringstream ss;
ss << m_model->param.gamma;
tempNode = XML::createNode(GAMMA_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
paramNode->addChild(tempNode);
}
if (m_model->param.kernel_type == POLY || m_model->param.kernel_type == SIGMOID)
{
std::stringstream ss;
ss << m_model->param.coef0;
tempNode = XML::createNode(COEF0_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
paramNode->addChild(tempNode);
}
svmNode->addChild(paramNode);
//End param node
//Model Node
XML::IXMLNode* modelNode = XML::createNode(MODEL_NODE_NAME);
{
tempNode = XML::createNode(NR_CLASS_NODE_NAME);
std::stringstream ssNrClass;
ssNrClass << m_model->nr_class;
tempNode->setPCData(ssNrClass.str().c_str());
modelNode->addChild(tempNode);
tempNode = XML::createNode(TOTAL_SV_NODE_NAME);
std::stringstream ssTotalSv;
ssTotalSv << m_model->l;
tempNode->setPCData(ssTotalSv.str().c_str());
modelNode->addChild(tempNode);
tempNode = XML::createNode(RHO_NODE_NAME);
tempNode->setPCData(ssRho.str().c_str());
modelNode->addChild(tempNode);
if (m_model->label != nullptr)
{
std::stringstream ss;
ss << m_model->label[0];
for (size_t i = 1; i < size_t(m_model->nr_class); ++i) { ss << " " << m_model->label[i]; }
tempNode = XML::createNode(LABEL_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
modelNode->addChild(tempNode);
}
if (m_model->probA != nullptr)
{
std::stringstream ss;
ss << std::scientific << m_model->probA[0];
for (size_t i = 1; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss << " " << m_model->probA[i]; }
tempNode = XML::createNode(PROB_A_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
modelNode->addChild(tempNode);
}
if (m_model->probB != nullptr)
{
std::stringstream ss;
ss << std::scientific << m_model->probB[0];
for (size_t i = 1; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss << " " << m_model->probB[i]; }
tempNode = XML::createNode(PROB_B_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
modelNode->addChild(tempNode);
}
if (m_model->nSV != nullptr)
{
std::stringstream ss;
ss << m_model->nSV[0];
for (size_t i = 1; i < size_t(m_model->nr_class); ++i) { ss << " " << m_model->nSV[i]; }
tempNode = XML::createNode(NR_SV_NODE_NAME);
tempNode->setPCData(ss.str().c_str());
modelNode->addChild(tempNode);
}
XML::IXMLNode* svsNode = XML::createNode(SVS_NODE_NAME);
{
for (size_t i = 0; i < size_t(m_model->l); ++i)
{
XML::IXMLNode* svNode = XML::createNode(SV_NODE_NAME);
{
tempNode = XML::createNode(COEF_NODE_NAME);
tempNode->setPCData(coefs[i]);
svNode->addChild(tempNode);
tempNode = XML::createNode(VALUE_NODE_NAME);
tempNode->setPCData(values[i]);
svNode->addChild(tempNode);
}
svsNode->addChild(svNode);
}
}
modelNode->addChild(svsNode);
}
svmNode->addChild(modelNode);
return svmNode;
}
bool CAlgorithmClassifierSVM::loadConfig(XML::IXMLNode* configNode)
{
if (m_model != nullptr)
{
//std::cout<<"delete m_model load config"<<std::endl;
deleteModel(m_model, !m_modelWasTrained);
m_model = nullptr;
m_modelWasTrained = false;
}
//std::cout<<"load config"<<std::endl;
m_model = new svm_model();
m_model->rho = nullptr;
m_model->probA = nullptr;
m_model->probB = nullptr;
m_model->label = nullptr;
m_model->nSV = nullptr;
m_indexSV = -1;
loadParamNodeConfiguration(configNode->getChildByName(PARAM_NODE_NAME));
loadModelNodeConfiguration(configNode->getChildByName(MODEL_NODE_NAME));
this->getLogManager() << Kernel::LogLevel_Trace << modelToString();
return true;
}
void CAlgorithmClassifierSVM::loadParamNodeConfiguration(XML::IXMLNode* paramNode)
{
//svm_type
XML::IXMLNode* tempNode = paramNode->getChildByName(SVM_TYPE_NODE_NAME);
for (size_t i = 0; get_svm_type(i) != nullptr; ++i) { if (strcmp(get_svm_type(i), tempNode->getPCData()) == 0) { m_model->param.svm_type = i; } }
if (get_svm_type(m_model->param.svm_type) == nullptr)
{
this->getLogManager() << Kernel::LogLevel_Error << "load configuration error: bad value for the parameter svm_type\n";
}
//kernel_type
tempNode = paramNode->getChildByName(KERNEL_TYPE_NODE_NAME);
for (size_t i = 0; get_kernel_type(i) != nullptr; ++i) { if (strcmp(get_kernel_type(i), tempNode->getPCData()) == 0) { m_model->param.kernel_type = i; } }
if (get_kernel_type(m_model->param.kernel_type) == nullptr)
{
this->getLogManager() << Kernel::LogLevel_Error << "load configuration error: bad value for the parameter kernel_type\n";
}
//Following parameters aren't required
//degree
tempNode = paramNode->getChildByName(DEGREE_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
ss >> m_model->param.degree;
}
//gamma
tempNode = paramNode->getChildByName(GAMMA_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
ss >> m_model->param.gamma;
}
//coef0
tempNode = paramNode->getChildByName(COEF0_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
ss >> m_model->param.coef0;
}
}
void CAlgorithmClassifierSVM::loadModelNodeConfiguration(XML::IXMLNode* modelNode)
{
//nr_class
XML::IXMLNode* tempNode = modelNode->getChildByName(NR_CLASS_NODE_NAME);
std::stringstream ssNrClass(tempNode->getPCData());
ssNrClass >> m_model->nr_class;
//total_sv
tempNode = modelNode->getChildByName(TOTAL_SV_NODE_NAME);
std::stringstream ssTotalSv(tempNode->getPCData());
ssTotalSv >> m_model->l;
//rho
tempNode = modelNode->getChildByName(RHO_NODE_NAME);
std::stringstream ssRho(tempNode->getPCData());
m_model->rho = new double[m_model->nr_class * (m_model->nr_class - 1) / 2];
for (size_t i = 0; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ssRho >> m_model->rho[i]; }
//label
tempNode = modelNode->getChildByName(LABEL_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
m_model->label = new int[m_model->nr_class];
for (size_t i = 0; i < size_t(m_model->nr_class); ++i) { ss >> m_model->label[i]; }
}
//probA
tempNode = modelNode->getChildByName(PROB_A_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
m_model->probA = new double[m_model->nr_class * (m_model->nr_class - 1) / 2];
for (size_t i = 0; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss >> m_model->probA[i]; }
}
//probB
tempNode = modelNode->getChildByName(PROB_B_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
m_model->probB = new double[m_model->nr_class * (m_model->nr_class - 1) / 2];
for (size_t i = 0; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss >> m_model->probB[i]; }
}
//nr_sv
tempNode = modelNode->getChildByName(NR_SV_NODE_NAME);
if (tempNode != nullptr)
{
std::stringstream ss(tempNode->getPCData());
m_model->nSV = new int[m_model->nr_class];
for (size_t i = 0; i < size_t(m_model->nr_class); ++i) { ss >> m_model->nSV[i]; }
}
loadModelSVsNodeConfiguration(modelNode->getChildByName(SVS_NODE_NAME));
}
void CAlgorithmClassifierSVM::loadModelSVsNodeConfiguration(XML::IXMLNode* svsNodeParam)
{
//Reserve all memory space required
m_model->sv_coef = new double*[m_model->nr_class - 1];
for (size_t i = 0; i < size_t(m_model->nr_class - 1); ++i) { m_model->sv_coef[i] = new double[m_model->l]; }
m_model->SV = new svm_node*[m_model->l];
//Now fill SV
for (size_t i = 0; i < svsNodeParam->getChildCount(); ++i)
{
XML::IXMLNode* tempNode = svsNodeParam->getChild(i);
std::stringstream coefData(tempNode->getChildByName(COEF_NODE_NAME)->getPCData());
for (int j = 0; j < m_model->nr_class - 1; ++j) { coefData >> m_model->sv_coef[j][i]; }
std::stringstream ss(tempNode->getChildByName(VALUE_NODE_NAME)->getPCData());
std::vector<int> svmIdx;
std::vector<double> svmValue;
char separateChar;
while (!ss.eof())
{
int index;
double value;
ss >> index;
ss >> separateChar;
ss >> value;
svmIdx.push_back(index);
svmValue.push_back(value);
}
m_nFeatures = svmIdx.size();
m_model->SV[i] = new svm_node[svmIdx.size() + 1];
for (size_t j = 0; j < svmIdx.size(); ++j)
{
m_model->SV[i][j].index = svmIdx[j];
m_model->SV[i][j].value = svmValue[j];
}
m_model->SV[i][svmIdx.size()].index = -1;
}
}
CString CAlgorithmClassifierSVM::paramToString(svm_parameter* param)
{
if (param == nullptr) { return std::string("Param: nullptr\n").c_str(); }
std::stringstream ss;
ss << "Param:\n";
ss << "\tsvm_type: " << get_svm_type(param->svm_type) << "\n";
ss << "\tkernel_type: " << get_kernel_type(param->kernel_type) << "\n";
ss << "\tdegree: " << param->degree << "\n";
ss << "\tgamma: " << param->gamma << "\n";
ss << "\tcoef0: " << param->coef0 << "\n";
ss << "\tnu: " << param->nu << "\n";
ss << "\tcache_size: " << param->cache_size << "\n";
ss << "\tC: " << param->C << "\n";
ss << "\teps: " << param->eps << "\n";
ss << "\tp: " << param->p << "\n";
ss << "\tshrinking: " << param->shrinking << "\n";
ss << "\tprobability: " << param->probability << "\n";
ss << "\tnr weight: " << param->nr_weight << "\n";
std::stringstream label;
for (size_t i = 0; i < size_t(param->nr_weight); ++i) { label << param->weight_label[i] << ";"; }
ss << "\tweight label: " << label.str() << "\n";
std::stringstream weight;
for (size_t i = 0; i < size_t(param->nr_weight); ++i) { weight << param->weight[i] << ";"; }
ss << "\tweight: " << weight.str() << "\n";
return ss.str().c_str();
}
CString CAlgorithmClassifierSVM::modelToString() const
{
if (m_model == nullptr) { return std::string("Model: nullptr\n").c_str(); }
std::stringstream ss;
ss << paramToString(&m_model->param);
ss << "Model:" << "\n";
ss << "\tnr_class: " << m_model->nr_class << "\n";
ss << "\ttotal_sv: " << m_model->l << "\n";
ss << "\trho: ";
if (m_model->rho != nullptr)
{
ss << m_model->rho[0];
for (size_t i = 1; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss << " " << m_model->rho[i]; }
}
ss << "\n";
ss << "\tlabel: ";
if (m_model->label != nullptr)
{
ss << m_model->label[0];
for (size_t i = 1; i < size_t(m_model->nr_class); ++i) { ss << " " << m_model->label[i]; }
}
ss << "\n";
ss << "\tprobA: ";
if (m_model->probA != nullptr)
{
ss << m_model->probA[0];
for (size_t i = 1; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss << " " << m_model->probA[i]; }
}
ss << "\n";
ss << "\tprobB: ";
if (m_model->probB != nullptr)
{
ss << m_model->probB[0];
for (size_t i = 1; i < size_t(m_model->nr_class * (m_model->nr_class - 1) / 2); ++i) { ss << " " << m_model->probB[i]; }
}
ss << "\n";
ss << "\tnr_sv: ";
if (m_model->nSV != nullptr)
{
ss << m_model->nSV[0];
for (size_t i = 1; i < size_t(m_model->nr_class); ++i) { ss << " " << m_model->nSV[i]; }
}
ss << "\n";
return ss.str().c_str();
}
CString CAlgorithmClassifierSVM::problemToString(svm_problem* prob) const
{
if (prob == nullptr) { return std::string("Problem: nullptr\n").c_str(); }
std::stringstream ss;
ss << "Problem\ttotal sv: " << prob->l << "\n\tnb features: " << m_nFeatures << "\n";
return ss.str().c_str();
}
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,131 @@
#pragma once
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <xml/IXMLNode.h>
#include <stack>
#include "../../../../../contrib/packages/libSVM/svm.h"
#define OVP_ClassId_Algorithm_ClassifierSVM CIdentifier(0x50486EC2, 0x6F2417FC)
#define OVP_ClassId_Algorithm_ClassifierSVM_DecisionAvailable CIdentifier(0x21A61E69, 0xD522CE01)
#define OVP_ClassId_Algorithm_ClassifierSVMDesc CIdentifier(0x272B056E, 0x0C6502AC)
#define OVP_Algorithm_ClassifierSVM_InputParameterId_SVMType CIdentifier(0x0C347BBA, 0x180577F9)
#define OVP_Algorithm_ClassifierSVM_InputParameterId_SVMKernelType CIdentifier(0x1952129C, 0x6BEF38D7)
#define OVP_Algorithm_ClassifierSVM_InputParameterId_SVMDegree CIdentifier(0x0E284608, 0x7323390E)
#define OVP_Algorithm_ClassifierSVM_InputParameterId_SVMGamma CIdentifier(0x5D4A358F, 0x29043846)
#define OVP_Algorithm_ClassifierSVM_InputParameterId_SVMCoef0 CIdentifier(0x724D5EC5, 0x13E56658)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCost CIdentifier(0x353662E8, 0x041D7610)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMNu CIdentifier(0x62334FC3, 0x49594D32)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMEpsilon CIdentifier(0x09896FD2, 0x523775BA)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCacheSize CIdentifier(0x4BCE65A7, 0x6A103468)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMTolerance CIdentifier(0x2658168C, 0x0914687C)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMShrinking CIdentifier(0x63F5286A, 0x6A9D18BF)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMProbabilityEstimate CIdentifier(0x05DC16EA, 0x5DBD51C2)
#define OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMweight CIdentifier(0x0BA132BE, 0x17DD3B8F)
#define OVP_Algorithm_ClassifierSVM_InputParameterId_SVMWeightLabel CIdentifier(0x22C27048, 0x5CC6214A)
#define OVP_TypeId_SVMType CIdentifier(0x2AF426D1, 0x72FB7BAC)
#define OVP_TypeId_SVMKernelType CIdentifier(0x54BB0016, 0x6AA27496)
namespace OpenViBE {
namespace Plugins {
namespace Classification {
int SVMClassificationCompare(CMatrix& first, CMatrix& second);
class CAlgorithmClassifierSVM final : public Toolkit::CAlgorithmClassifier
{
public:
CAlgorithmClassifierSVM() { }
bool initialize() override;
bool uninitialize() override;
bool train(const Toolkit::IFeatureVectorSet& dataset) override;
bool classify(const Toolkit::IFeatureVector& sample, double& classLabel, Toolkit::IVector& distance, Toolkit::IVector& probability) override;
XML::IXMLNode* saveConfig() override;
bool loadConfig(XML::IXMLNode* configNode) override;
static CString paramToString(svm_parameter* param);
CString modelToString() const;
CString problemToString(svm_problem* prob) const;
size_t getNProbabilities() override { return 1; }
size_t getNDistances() override { return 0; }
_IsDerivedFromClass_Final_(CAlgorithmClassifier, OVP_ClassId_Algorithm_ClassifierSVM)
protected:
std::vector<double> m_class;
struct svm_parameter m_param;
//struct svm_parameter *m_param; // set by parse_command_line
struct svm_problem m_prob; // set by read_problem
struct svm_model* m_model = nullptr;
bool m_modelWasTrained = false; // true if from svm_train(), false if loaded
int m_indexSV = 0;
size_t m_nFeatures = 0;
CMemoryBuffer m_config;
//todo a modifier en fonction de svn_save_model
//vector m_coefficients;
private:
void loadParamNodeConfiguration(XML::IXMLNode* paramNode);
void loadModelNodeConfiguration(XML::IXMLNode* modelNode);
void loadModelSVsNodeConfiguration(XML::IXMLNode* svsNodeParam);
void setParameter();
static void deleteModel(svm_model* model, bool freeSupportVectors);
};
class CAlgorithmClassifierSVMDesc : public Toolkit::CAlgorithmClassifierDesc
{
public:
void release() override { }
CString getName() const override { return CString("SVM classifier"); }
CString getAuthorName() const override { return CString("Laurent Bougrain / Baptiste Payan"); }
CString getAuthorCompanyName() const override { return CString("UHP_Nancy1/LORIA INRIA/LORIA"); }
CString getShortDescription() const override { return CString(""); }
CString getDetailedDescription() const override { return CString(""); }
CString getCategory() const override { return CString(""); }
CString getVersion() const override { return CString("1.0"); }
CIdentifier getCreatedClass() const override { return OVP_ClassId_Algorithm_ClassifierSVM; }
IPluginObject* create() override { return new CAlgorithmClassifierSVM; }
bool getAlgorithmPrototype(Kernel::IAlgorithmProto& prototype) const override
{
CAlgorithmClassifierDesc::getAlgorithmPrototype(prototype);
prototype.addInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMType, "SVM type", Kernel::ParameterType_Enumeration,OVP_TypeId_SVMType);
prototype.addInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMKernelType, "Kernel type", Kernel::ParameterType_Enumeration,
OVP_TypeId_SVMKernelType);
prototype.addInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMDegree, "Degree", Kernel::ParameterType_Integer);
prototype.addInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMGamma, "Gamma", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMCoef0, "Coef 0", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCost, "Cost", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMNu, "Nu", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMEpsilon, "Epsilon", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMCacheSize, "Cache size", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMTolerance, "Epsilon tolerance", Kernel::ParameterType_Float);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMShrinking, "Shrinking", Kernel::ParameterType_Boolean);
//prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMProbabilityEstimate,"Probability estimate",Kernel::ParameterType_Boolean);
prototype.addInputParameter(OVP_ALgorithm_ClassifierSVM_InputParameterId_SVMweight, "Weight", Kernel::ParameterType_String);
prototype.addInputParameter(OVP_Algorithm_ClassifierSVM_InputParameterId_SVMWeightLabel, "Weight Label", Kernel::ParameterType_String);
return true;
}
_IsDerivedFromClass_Final_(CAlgorithmClassifierDesc, OVP_ClassId_Algorithm_ClassifierSVMDesc)
};
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,204 @@
#include "ovpCBoxAlgorithmOutlierRemoval.h"
#include <algorithm>
#include <iterator>
namespace OpenViBE {
namespace Plugins {
namespace Classification {
static bool PairLess(const std::pair<double, uint32_t> a, const std::pair<double, uint32_t> b) { return a.first < b.first; }
bool CBoxAlgorithmOutlierRemoval::initialize()
{
m_stimDecoder.initialize(*this, 0);
m_sampleDecoder.initialize(*this, 1);
m_stimEncoder.initialize(*this, 0);
m_sampleEncoder.initialize(*this, 1);
// get the quantile parameters
m_lowerQuantile = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0);
m_upperQuantile = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 1);
m_trigger = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 2);
m_lowerQuantile = std::min<double>(std::max<double>(m_lowerQuantile, 0.0), 1.0);
m_upperQuantile = std::min<double>(std::max<double>(m_upperQuantile, 0.0), 1.0);
m_triggerTime = -1LL;
return true;
}
bool CBoxAlgorithmOutlierRemoval::uninitialize()
{
m_sampleEncoder.uninitialize();
m_stimEncoder.uninitialize();
m_sampleDecoder.uninitialize();
m_stimDecoder.uninitialize();
for (auto& data : m_datasets)
{
delete data.sampleMatrix;
data.sampleMatrix = nullptr;
}
m_datasets.clear();
return true;
}
bool CBoxAlgorithmOutlierRemoval::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
bool CBoxAlgorithmOutlierRemoval::pruneSet(std::vector<feature_vector_t>& pruned)
{
if (m_datasets.empty()) { return true; }
const size_t nSample = m_datasets.size(),
nFeatures = m_datasets[0].sampleMatrix->getDimensionSize(0),
lowerIdx = size_t(m_lowerQuantile * nSample),
upperIdx = size_t(m_upperQuantile * nSample);
this->getLogManager() << Kernel::LogLevel_Trace << "Examined dataset is [" << nSample << "x" << nFeatures << "].\n";
std::vector<size_t> keptIdxs;
keptIdxs.resize(nSample);
for (size_t i = 0; i < nSample; ++i) { keptIdxs[i] = i; }
std::vector<std::pair<double, size_t>> featureValues;
featureValues.resize(nSample);
for (size_t f = 0; f < nFeatures; ++f)
{
for (size_t i = 0; i < nSample; ++i) { featureValues[i] = std::pair<double, uint32_t>(m_datasets[i].sampleMatrix->getBuffer()[f], i); }
std::sort(featureValues.begin(), featureValues.end(), PairLess);
std::vector<size_t> newIdxs;
newIdxs.resize(upperIdx - lowerIdx);
for (size_t j = lowerIdx, cnt = 0; j < upperIdx; j++, cnt++) { newIdxs[cnt] = featureValues[j].second; }
this->getLogManager() << Kernel::LogLevel_Trace << "For feature " << (f + 1) << ", the retained range is [" << featureValues[lowerIdx].first
<< ", " << featureValues[upperIdx - 1].first << "]\n";
std::sort(newIdxs.begin(), newIdxs.end());
std::vector<size_t> intersections;
std::set_intersection(newIdxs.begin(), newIdxs.end(), keptIdxs.begin(), keptIdxs.end(), std::back_inserter(intersections));
keptIdxs = intersections;
this->getLogManager() << Kernel::LogLevel_Debug << "After analyzing feat " << f << ", kept " << keptIdxs.size() << " examples.\n";
}
this->getLogManager() << Kernel::LogLevel_Trace << "Kept " << keptIdxs.size() << " examples in total ("
<< (100.0 * keptIdxs.size() / double(m_datasets.size())) << "% of " << m_datasets.size() << ")\n";
pruned.clear();
for (size_t idx : keptIdxs) { pruned.push_back(m_datasets[idx]); }
return true;
}
bool CBoxAlgorithmOutlierRemoval::process()
{
Kernel::IBoxIO& boxContext = this->getDynamicBoxContext();
// Stimulations
for (uint32_t i = 0; i < boxContext.getInputChunkCount(0); ++i)
{
m_stimDecoder.decode(i);
if (m_stimDecoder.isHeaderReceived())
{
m_stimEncoder.encodeHeader();
boxContext.markOutputAsReadyToSend(0, boxContext.getInputChunkStartTime(0, i), boxContext.getInputChunkEndTime(0, i));
}
if (m_stimDecoder.isBufferReceived())
{
const IStimulationSet* stimSet = m_stimDecoder.getOutputStimulationSet();
for (uint32_t s = 0; s < stimSet->getStimulationCount(); ++s)
{
if (stimSet->getStimulationIdentifier(s) == m_trigger)
{
std::vector<feature_vector_t> pruned;
if (!pruneSet(pruned)) { return false; }
// encode
for (auto& feature : pruned)
{
m_sampleEncoder.getInputMatrix()->copy(*feature.sampleMatrix);
m_sampleEncoder.encodeBuffer();
boxContext.markOutputAsReadyToSend(1, feature.startTime, feature.endTime);
}
const uint64_t halfSecondHack = CTime(0.5).time();
m_triggerTime = stimSet->getStimulationDate(s) + halfSecondHack;
}
}
m_stimEncoder.getInputStimulationSet()->clear();
if (m_triggerTime >= boxContext.getInputChunkStartTime(0, i) && m_triggerTime < boxContext.getInputChunkEndTime(0, i))
{
m_stimEncoder.getInputStimulationSet()->appendStimulation(m_trigger, m_triggerTime, 0);
m_triggerTime = -1LL;
}
m_stimEncoder.encodeBuffer();
boxContext.markOutputAsReadyToSend(0, boxContext.getInputChunkStartTime(0, i), boxContext.getInputChunkEndTime(0, i));
}
if (m_stimDecoder.isEndReceived())
{
m_stimEncoder.encodeEnd();
boxContext.markOutputAsReadyToSend(0, boxContext.getInputChunkStartTime(0, i), boxContext.getInputChunkEndTime(0, i));
}
}
// Feature vectors
for (uint32_t i = 0; i < boxContext.getInputChunkCount(1); ++i)
{
m_sampleDecoder.decode(i);
if (m_sampleDecoder.isHeaderReceived())
{
m_sampleEncoder.getInputMatrix()->copyDescription(*m_sampleDecoder.getOutputMatrix());
m_sampleEncoder.encodeHeader();
boxContext.markOutputAsReadyToSend(1, boxContext.getInputChunkStartTime(1, i), boxContext.getInputChunkEndTime(1, i));
}
// pad feature to set
if (m_sampleDecoder.isBufferReceived())
{
const CMatrix* pFeatureVectorMatrix = m_sampleDecoder.getOutputMatrix();
feature_vector_t tmp;
tmp.sampleMatrix = new CMatrix();
tmp.startTime = boxContext.getInputChunkStartTime(1, i);
tmp.endTime = boxContext.getInputChunkEndTime(1, i);
tmp.sampleMatrix->copy(*pFeatureVectorMatrix);
m_datasets.push_back(tmp);
}
if (m_sampleDecoder.isEndReceived())
{
m_sampleEncoder.encodeEnd();
boxContext.markOutputAsReadyToSend(1, boxContext.getInputChunkStartTime(1, i), boxContext.getInputChunkEndTime(1, i));
}
}
return true;
}
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,90 @@
#pragma once
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <vector>
#include <map>
#define OVP_ClassId_BoxAlgorithm_OutlierRemovalDesc OpenViBE::CIdentifier(0x11DA1C24, 0x4C7A74C0)
#define OVP_ClassId_BoxAlgorithm_OutlierRemoval OpenViBE::CIdentifier(0x09E41B92, 0x4291B612)
namespace OpenViBE {
namespace Plugins {
namespace Classification {
class CBoxAlgorithmOutlierRemoval final : public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, OVP_ClassId_BoxAlgorithm_OutlierRemoval)
protected:
typedef struct
{
CMatrix* sampleMatrix;
uint64_t startTime;
uint64_t endTime;
} feature_vector_t;
bool pruneSet(std::vector<feature_vector_t>& pruned);
Toolkit::TFeatureVectorDecoder<CBoxAlgorithmOutlierRemoval> m_sampleDecoder;
Toolkit::TStimulationDecoder<CBoxAlgorithmOutlierRemoval> m_stimDecoder;
Toolkit::TFeatureVectorEncoder<CBoxAlgorithmOutlierRemoval> m_sampleEncoder;
Toolkit::TStimulationEncoder<CBoxAlgorithmOutlierRemoval> m_stimEncoder;
std::vector<feature_vector_t> m_datasets;
double m_lowerQuantile = 0;
double m_upperQuantile = 0;
uint64_t m_trigger = 0;
uint64_t m_triggerTime = 0;
};
class CBoxAlgorithmOutlierRemovalDesc final : public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return CString("Outlier removal"); }
CString getAuthorName() const override { return CString("Jussi T. Lindgren"); }
CString getAuthorCompanyName() const override { return CString("Inria"); }
CString getShortDescription() const override { return CString("Discards feature vectors with extremal values"); }
CString getDetailedDescription() const override { return CString("Simple outlier removal based on quantile estimation"); }
CString getCategory() const override { return CString("Classification"); }
CString getVersion() const override { return CString("1.0"); }
CIdentifier getCreatedClass() const override { return OVP_ClassId_BoxAlgorithm_OutlierRemoval; }
IPluginObject* create() override { return new CBoxAlgorithmOutlierRemoval; }
CString getStockItemName() const override { return "gtk-cut"; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Input stimulations", OV_TypeId_Stimulations);
prototype.addInput("Input features", OV_TypeId_FeatureVector);
prototype.addOutput("Output stimulations", OV_TypeId_Stimulations);
prototype.addOutput("Output features", OV_TypeId_FeatureVector);
prototype.addSetting("Lower quantile", OV_TypeId_Float, "0.01");
prototype.addSetting("Upper quantile", OV_TypeId_Float, "0.99");
prototype.addSetting("Start trigger", OV_TypeId_Stimulation, "OVTK_StimulationId_Train");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, OVP_ClassId_BoxAlgorithm_OutlierRemovalDesc)
};
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,32 @@
#pragma once
#define OVP_Classification_BoxTrainerFormatVersion 4
#define OVP_Classification_BoxTrainerFormatVersionRequired 4
#ifdef TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
#include "ovp_global_defines.h"
#endif // TARGET_HAS_ThirdPartyOpenViBEPluginsGlobalDefines
#define OVP_TypeId_ClassificationPairwiseStrategy OpenViBE::CIdentifier(0x0DD51C74, 0x3C4E74C9)
#define OVP_TypeId_OneVsOne_DecisionAlgorithms OpenViBE::CIdentifier(0xDEC1510, 0xDEC1510)
extern const char* const FORMAT_VERSION_ATTRIBUTE_NAME;
extern const char* const IDENTIFIER_ATTRIBUTE_NAME;
extern const char* const STRATEGY_NODE_NAME;
extern const char* const ALGORITHM_NODE_NAME;
extern const char* const STIMULATIONS_NODE_NAME;
extern const char* const REJECTED_CLASS_NODE_NAME;
extern const char* const CLASS_STIMULATION_NODE_NAME;
extern const char* const CLASSIFICATION_BOX_ROOT;
extern const char* const CLASSIFIER_ROOT;
extern const char* const PAIRWISE_STRATEGY_ENUMERATION_NAME;
extern const char* const MLP_EVALUATION_FUNCTION_NAME;
extern const char* const MLP_TRANSFERT_FUNCTION_NAME;
bool OVFloatEqual(double first, double second);
@@ -0,0 +1,75 @@
#include <vector>
#include "ovp_defines.h"
#include "toolkit/algorithms/classification/ovtkCAlgorithmPairingStrategy.h" //For comparision mecanism
#include "algorithms/ovpCAlgorithmClassifierSVM.h"
#include "box-algorithms/ovpCBoxAlgorithmOutlierRemoval.h"
#if defined TARGET_HAS_ThirdPartyEIGEN
#include "algorithms/ovpCAlgorithmClassifierMLP.h"
#endif // TARGET_HAS_ThirdPartyEIGEN
#include<cmath>
const char* const PAIRWISE_STRATEGY_ENUMERATION_NAME = "Pairwise Decision Strategy";
namespace OpenViBE {
namespace Plugins {
namespace Classification {
OVP_Declare_Begin()
// SVM related
context.getTypeManager().registerEnumerationEntry(OVTK_TypeId_ClassificationAlgorithm, "Support Vector Machine (SVM)",
OVP_ClassId_Algorithm_ClassifierSVM.id());
Toolkit::registerClassificationComparisonFunction(OVP_ClassId_Algorithm_ClassifierSVM, SVMClassificationCompare);
OVP_Declare_New(CAlgorithmClassifierSVMDesc);
context.getTypeManager().registerEnumerationType(OVP_TypeId_SVMType, "SVM Type");
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_SVMType, "C-SVC", C_SVC);
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_SVMType, "Nu-SVC", NU_SVC);
context.getTypeManager().registerEnumerationType(OVP_TypeId_SVMKernelType, "SVM Kernel Type");
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_SVMKernelType, "Linear", LINEAR);
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_SVMKernelType, "Polinomial", POLY);
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_SVMKernelType, "Radial basis function", RBF);
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_SVMKernelType, "Sigmoid", SIGMOID);
context.getTypeManager().registerEnumerationType(OVP_TypeId_ClassificationPairwiseStrategy, PAIRWISE_STRATEGY_ENUMERATION_NAME);
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_ClassificationPairwiseStrategy, "Support Vector Machine (SVM)",
OVP_ClassId_Algorithm_ClassifierSVM.id());
context.getTypeManager().registerEnumerationType(OVP_TypeId_OneVsOne_DecisionAlgorithms, "One vs One Decision Algorithms");
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_OneVsOne_DecisionAlgorithms, "SVM Kernel Type", OVP_TypeId_SVMType.id());
#if defined TARGET_HAS_ThirdPartyEIGEN
//MLP section
OVP_Declare_New(CAlgorithmClassifierMLPDesc);
context.getTypeManager().registerEnumerationEntry(OVTK_TypeId_ClassificationAlgorithm, "Multi-layer Perceptron",
OVP_ClassId_Algorithm_ClassifierMLP.id());
Toolkit::registerClassificationComparisonFunction(OVP_ClassId_Algorithm_ClassifierMLP, MLPClassificationCompare);
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_ClassificationPairwiseStrategy, "Multi-layer Perceptron",
OVP_ClassId_Algorithm_ClassifierMLP.id());
context.getTypeManager().registerEnumerationEntry(OVP_TypeId_OneVsOne_DecisionAlgorithms, "Multi-layer Perceptron",
OVP_ClassId_Algorithm_ClassifierMLP.id());
#endif // TARGET_HAS_ThirdPartyEIGEN
// Register boxes
OVP_Declare_New(CBoxAlgorithmOutlierRemovalDesc);
OVP_Declare_End()
} // namespace Classification
} // namespace Plugins
} // namespace OpenViBE
bool OVFloatEqual(const double first, const double second)
{
const double epsilon = 0.000001;
return epsilon > fabs(first - second);
}
@@ -0,0 +1,27 @@
PROJECT(test_accuracy)
IF(WIN32)
ADD_DEFINITIONS(-DTARGET_OS_Windows)
ENDIF(WIN32)
IF(UNIX)
ADD_DEFINITIONS(-DTARGET_OS_Linux)
ENDIF(UNIX)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
ADD_DEFINITIONS(-DTARGET_ARCHITECTURE_i386)
INCLUDE_DIRECTORIES(../src)
ADD_EXECUTABLE(${PROJECT_NAME} test_accuracy.cpp)
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${TESTS_FOLDER}) # Place project in folder unit-test (for some IDE)
#INCLUDE("FindOpenViBE")
# Unfortunately we need to install the tests as any application to find .dll/.so files
# on both Windows and Linux.
OV_INSTALL_LAUNCH_SCRIPT(SCRIPT_PREFIX "${PROJECT_NAME}" EXECUTABLE_NAME "${PROJECT_NAME}")
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
#Install the signal file required for testing
INSTALL(DIRECTORY ../../../../applications/demos/ssvep-demo/signals DESTINATION ${DIST_DATADIR}/openvibe/scenarios/)
@@ -0,0 +1,66 @@
#blabla
# @FIXME there is a problem of using the global log, this will cause interference if any tests are run in parallel
IF(WIN32)
SET(EXT cmd)
SET(OS_FLAGS "--no-pause")
ELSE()
SET(EXT sh)
SET(OS_FLAGS "")
ENDIF()
# Misc classifier tests
SET(TEST_SCENARIOS LDA-Native-Test LDA-OneVsOne-HT-Test LDA-OneVsOne-PKPD-Test LDA-OneVsOne-Voting-Test LDA-OneVsAll-Test sLDA-Native-Test sLDA-OneVsOne-HT-Test sLDA-OneVsOne-PKPD-Test sLDA-OneVsOne-Voting-Test sLDA-OneVsAll-Test SVM-Native-Test SVM-OneVsOne-Voting-Test SVM-OneVsOne-HT-Test SVM-OneVsOne-PKPD-Test SVM-OneVsAll-Test MLP-Native-Test MLP-OneVsOne-Voting-Test MLP-OneVsOne-HT-Test MLP-OneVsOne-PKPD-Test MLP-OneVsAll-Test)
FOREACH(TEST_NAME ${TEST_SCENARIOS})
SET(SCENARIO_TO_TEST "${TEST_NAME}.xml")
ADD_TEST(clean_Classification_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" ${OV_LOGFILE} classifiers/multiclass.xml)
ADD_TEST(run_Classification_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--invisible" "--no-session-management" --define Plugin_Classification_RandomizeKFoldTestData true "--play-fast" ${SCENARIO_TO_TEST})
ADD_TEST(compare_Classification_${TEST_NAME} "$ENV{OV_BINARY_PATH}/test_accuracy.${EXT}" "${OS_FLAGS}" "${OV_LOGFILE}")
ADD_TEST(run_Classification_${TEST_NAME}_ProcessorBox "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--invisible" "--no-session-management" --define Plugin_Classification_RandomizeKFoldTestData true "--play-fast" "ProcessorBox-Test.xml")
# It would be better to clean last, but we can't do this as it will delete the
# output we wish to include, and we can't prevent clean from running if a prev. test fails
# We need the clean to be sure that the comparator stage is not getting data from a previous run.
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME} PROPERTIES DEPENDS clean_Classification_${TEST_NAME})
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_LOGFILE})
SET_TESTS_PROPERTIES(compare_Classification_${TEST_NAME} PROPERTIES DEPENDS run_Classification_${TEST_NAME})
SET_TESTS_PROPERTIES(compare_Classification_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_LOGFILE})
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME}_ProcessorBox PROPERTIES DEPENDS run_Classification_${TEST_NAME})
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME}_ProcessorBox PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_LOGFILE})
ENDFOREACH(TEST_NAME)
# Shrinkage LDA tests. These are in a different block as they use different data (and miss ProcessorBox part)
SET(TEST_SCENARIOS shrinkage_lda shrinkage_lda_rot)
SET(TEST_THRESHOLD 80)
FOREACH(TEST_NAME ${TEST_SCENARIOS})
SET(SCENARIO_TO_TEST "shrinkageLDA/${TEST_NAME}.xml")
ADD_TEST(clean_Classification_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" ${OV_LOGFILE})
ADD_TEST(run_Classification_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--invisible" "--no-session-management" --define Plugin_Classification_RandomizeKFoldTestData true "--play-fast" ${SCENARIO_TO_TEST})
ADD_TEST(compare_Classification_${TEST_NAME} "$ENV{OV_BINARY_PATH}/test_accuracy.${EXT}" "${OS_FLAGS}" "${OV_LOGFILE}" "${TEST_THRESHOLD}")
# It would be better to clean last, but we can't do this as it will delete the
# output we wish to include, and we can't prevent clean from running if a prev. test fails
# We need the clean to be sure that the comparator stage is not getting data from a previous run.
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME} PROPERTIES DEPENDS clean_Classification_${TEST_NAME})
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_LOGFILE})
SET_TESTS_PROPERTIES(compare_Classification_${TEST_NAME} PROPERTIES DEPENDS run_Classification_${TEST_NAME})
SET_TESTS_PROPERTIES(compare_Classification_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_LOGFILE})
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME}_ProcessorBox PROPERTIES DEPENDS run_Classification_${TEST_NAME})
SET_TESTS_PROPERTIES(run_Classification_${TEST_NAME}_ProcessorBox PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_LOGFILE})
ENDFOREACH(TEST_NAME)
@@ -0,0 +1,5 @@
<OpenViBE-SettingsOverride>
<SettingValue>3.710409e-01 6.657479e-01 -1.042486e-01 7.402487e-02 -4.998371e-01 -3.910547e-01 -4.640642e-01 3.905098e-01 -3.351870e-01 -1.548908e-01 6.889251e-01 -1.455582e-01 </SettingValue>
<SettingValue>2</SettingValue>
<SettingValue>6</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,5 @@
<OpenViBE-SettingsOverride>
<SettingValue>3.650117e-01 2.806841e-01 4.808358e-01 1.014923e-02 -7.237455e-01 -1.812988e-01 -3.742728e-01 5.225129e-01 -2.793061e-01 3.121540e-01 5.283969e-01 -3.636546e-01 </SettingValue>
<SettingValue>2</SettingValue>
<SettingValue>6</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,5 @@
<OpenViBE-SettingsOverride>
<SettingValue>-5.343845e-01 1.369963e-02 3.678158e-01 -6.578927e-01 3.275904e-01 1.970249e-01 4.196543e-01 -5.389358e-01 3.383975e-01 5.559860e-02 -5.922296e-01 2.551440e-01 </SettingValue>
<SettingValue>2</SettingValue>
<SettingValue>6</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,5 @@
<OpenViBE-SettingsOverride>
<SettingValue>7</SettingValue>
<SettingValue>1</SettingValue>
<SettingValue>OVTK_StimulationId_Target</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,8 @@
<OpenViBE-SettingsOverride>
<SettingValue>Butterworth</SettingValue>
<SettingValue>Band pass</SettingValue>
<SettingValue>4</SettingValue>
<SettingValue>19.75</SettingValue>
<SettingValue>20.25</SettingValue>
<SettingValue>0.500000</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,8 @@
<OpenViBE-SettingsOverride>
<SettingValue>Butterworth</SettingValue>
<SettingValue>Band pass</SettingValue>
<SettingValue>4</SettingValue>
<SettingValue>14.75</SettingValue>
<SettingValue>15.25</SettingValue>
<SettingValue>0.500000</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,8 @@
<OpenViBE-SettingsOverride>
<SettingValue>Butterworth</SettingValue>
<SettingValue>Band pass</SettingValue>
<SettingValue>4</SettingValue>
<SettingValue>11.75</SettingValue>
<SettingValue>12.25</SettingValue>
<SettingValue>0.500000</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,4 @@
<OpenViBE-SettingsOverride>
<SettingValue>0.5</SettingValue>
<SettingValue>0.1</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,62 @@
targets = {}
non_targets = {}
sent_stimulation = 0
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
-- read the parameters of the box
s_targets = box:get_setting(2)
for t in s_targets:gmatch("%d+") do
targets[t + 0] = true
end
s_non_targets = box:get_setting(3)
for t in s_non_targets:gmatch("%d+") do
non_targets[t + 0] = true
end
sent_stimulation = _G[box:get_setting(4)]
end
function uninitialize(box)
end
function process(box)
finished = false
while box:keep_processing() and not finished do
time = box:get_current_time()
while box:get_stimulation_count(1) > 0 do
s_code, s_date, s_duration = box:get_stimulation(1, 1)
box:remove_stimulation(1, 1)
if s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F then
received_stimulation = s_code - OVTK_StimulationId_Label_00
if targets[received_stimulation] ~= nil then
box:send_stimulation(1, sent_stimulation, time)
elseif non_targets[received_stimulation] ~= nil then
box:send_stimulation(2, sent_stimulation, time)
end
elseif s_code == OVTK_StimulationId_ExperimentStop then
finished = true
end
end
box:sleep()
end
end
@@ -0,0 +1,9 @@
Some (toy) materials to test the shrinkage LDA.
The data were created by createData.R
Running the example scenarios in Designer should illustrate how the shrinkage LDA behaves better in a situations where there's too few training examples for accurate covariance estimation.
Todo: proper automatic tests, e.g. verify that accuracy in some real-data scenario stays above a threshold.
@@ -0,0 +1,30 @@
Time:1x50,End Time,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,Event Id,Event Date,Event Duration
0.1,0.2,-1.77233830755434,-0.236827251592077,1.46919909228546,1.77215815513424,-0.506267686281275,-1.51953712478023,1.21926844675747,-0.591336201883905,0.810793892940092,-0.0478351524521654,-1.07795341398774,1.04901825661264,0.290957678674044,1.13979936881618,0.173211780905492,-0.784805991192958,0.687022984726741,1.27668771671656,-0.477600037966964,1.07180555201423,0.662293452335553,0.72269911407146,-1.02250250717064,-0.528905944325278,3.59972319160266,-0.698655925414516,-0.870816336958357,-1.86830514291458,0.102628294986787,0.730214877977463,1.58392297876495,-0.184792411750226,-0.521677930225734,0.632881884596409,-0.758686850714144,-0.282183317841164,2.01338729793665,0.259570955722691,0.236797786923556,0.0063118555176279,0.341959434312799,0.830818003713969,-0.21410802873012,0.0890005001856433,1.09341162189432,0.346395457608115,-0.139910909240344,-1.67861512918353,-0.43165719962675,1.79020262175456,,,
0.2,0.3,-1.84606867265548,0.391990239663702,0.264997941836784,-1.34722509967576,-1.44756131640788,-1.47073158350782,-0.172875064506289,-0.508381528023055,0.667066261460272,-0.486728966589707,1.35935857182339,0.294102062812508,1.26240447360024,-0.706411886980103,-1.98153732109541,-0.666274660672812,-0.324676533580154,-1.34944985149662,0.642290035316992,-0.0658277874749391,-0.668311724925967,0.377983358583464,-0.0650165799849114,-0.808947051287604,0.378791095274704,-0.438853903495148,0.128720306499055,-0.676193785278865,-0.859260575094699,-0.448409101403276,1.10791246770839,-0.370116295343959,0.962442327287394,1.78727943629502,-0.585974434161261,1.37340523472128,0.478725873282862,-0.285222490010332,-0.344132711407871,-1.39615102264855,-0.041689311831386,0.747850847366967,1.9166268887971,-1.0226763945532,-0.192783789854472,-0.531362953553267,1.05865794858109,-0.505532040344319,0.0629551176360539,-1.15992871917437,,,
0.3,0.4,-2.49332533548487,1.64409749416937,0.285645369721553,-1.14532555306981,-0.367842010009751,0.889564732867821,0.902042445399143,-0.479509583638291,-0.403361444997069,1.02694383797405,-0.848993411267516,-0.975248366803951,-0.268861969752326,1.02713379098879,-1.45754459594992,1.74028420775379,0.98372459913046,0.692933224611794,0.321110966455445,-0.0436112465411973,0.526018910770931,-0.241847911053705,-0.595516014524317,-0.331585203599734,-0.760752181009177,0.206508150525299,-0.394642384347293,0.407995613700545,1.44231841313081,1.49540198041276,0.0215532601393211,-0.775072535037915,1.16103481714688,1.64769834294968,-0.287162546801277,-0.818966182436235,0.70835625526849,-0.669831237747049,-0.434648073958831,-1.01585838221087,-0.395541781732566,0.289189332438686,1.3341684522212,0.0134047395380486,0.773604766122364,0.701127516516158,0.841741052522346,-1.83128613295486,-0.0246511108994746,0.294720307354779,,,
0.4,0.5,-2.52499988807365,0.527501220434984,0.97156939662727,-0.637213490174128,-0.354994075323081,-0.745014144258316,-1.21842947507402,-0.331920661880045,-1.19124415803104,0.975903495573172,-0.249597671810458,-0.00939059557927655,0.844201228502543,1.30277300274817,-1.87865915519727,1.25389747263313,-1.5652198477258,1.04897773099458,0.902064536138848,-1.94163561677897,-1.25107351174543,1.1575206731627,0.547764946794999,0.191380498627734,-0.503248172544535,0.855745482972341,0.442492152610449,1.88240828455809,-1.01801218822784,-0.570930259426521,-0.80063210672233,0.105326611459969,-0.352559624804854,0.123826916309908,0.656982714082648,-1.83943913691478,-0.230713358494733,0.619725768853545,-2.23195126444731,-0.0342518400322894,2.16643862640049,-0.790097359634875,0.73936477715902,0.979025947077225,1.02883817581993,0.191311766158682,3.5125755903309,-0.172830577468843,1.13638386199638,0.449415434248763,,,
0.5,0.6,-2.4371996996854,-0.199762163143325,-1.66412064115944,1.32209383657703,1.78564808467757,-2.4841632180253,-0.0413739866403881,-1.84399075960103,-1.0630168927679,0.747782305764574,-0.59877556126373,1.00517471083475,-0.95820773957635,0.879504473737644,0.446123315813148,-1.96198514565717,-0.0108819510492637,-0.487353380475919,-0.207961619182551,0.0131011081827504,0.828421906272808,-1.20032945601014,0.225538212304263,1.28470060387135,-0.290121102088802,0.412876421212137,-0.763403474395873,0.0401559259511038,-0.314976740657898,0.124394805554818,-1.33184767770709,1.76659175055496,0.213153581937775,-0.124365036113027,0.337072558576539,2.55224327581814,-0.0241814435233937,-0.139778764718498,1.35388309283917,0.487634179934281,-0.709676528019773,-0.681813968533813,-2.29986097092805,-1.46971925217763,-0.725585249890308,0.329178548531522,-0.44558196076003,1.77560311952576,0.49967867998446,-0.530980731671024,,,
0.6,0.7,-1.93849912979167,0.861397778707997,-1.2452326372904,-0.0607259633500062,0.935059706269999,-0.157345974529202,1.36919107938006,-0.259620642461268,0.801260702566358,-1.0722632775712,-0.631842607777485,0.405810093906153,-0.328198810307636,-0.812771037789669,-0.792895889997469,-0.0679581527852328,0.771611375578924,1.35400923122275,2.89965611507454,-1.73827174484685,0.00346343909790884,0.796031396687008,1.87566288659025,1.01633163119628,2.29403948090692,0.629757373786624,0.792443385689405,0.895193616699357,-0.673182057230165,-0.26435621334367,-1.06300665789059,-0.292767792806413,1.33312025105921,-0.872720812321334,0.819544696704868,1.28201785161169,0.393992181070491,-0.77442908477424,-2.44049053359049,0.858494129344435,-0.25023526774339,-0.0618877341108,-0.988740291550961,-0.0739872230807312,-0.552534738897729,-1.62200295119109,-0.0880826904503559,-0.664695381005107,0.355978324679464,0.927432000495081,,,
0.7,0.8,-3.34684672140526,-1.26497793354093,-1.16666704428218,-0.780385840997041,0.0470739145971587,-0.605642340825465,0.945587408381604,-1.18126075190584,2.20328717668555,-0.531089179504808,0.201762811766242,-0.584209829626112,0.989899029221811,-0.212533541879578,1.44148304883411,0.00429125290958928,-0.21688568091344,0.909911885569311,-0.533485924810609,-0.220018565796853,-1.33429944720633,1.93287125392024,0.981381645673963,-0.466938397358383,0.170148127053635,-0.27938724823399,-0.778711059848325,-0.32886669555033,-1.06135570930341,1.13476644789916,0.733578755479842,-0.542526637610404,-0.224990428177821,-0.267924453922976,-1.08670312862221,-0.119159342356234,-0.142084166616695,-0.814458646531745,-0.235567135467998,-1.2732800223355,0.285530058673434,-0.483299969473905,0.855165375924984,-0.602204571777015,0.583407634150875,-0.411289622327927,-0.12665450861076,-2.03830175110953,-0.112053964894063,-0.827535602476982,,,
0.8,0.9,-3.55989888905074,-0.634059705872217,-0.558120631489627,-0.0418754010266019,1.28680024265942,1.21221922245683,-0.611048728676769,0.957834760817381,-0.844482328959705,0.766673075055981,-0.030934714413184,0.0362884816349346,0.983046328277927,-1.11364782712676,-0.510890038959101,-0.791997369952067,0.0593454735299368,1.06352039878449,0.140439522991638,-1.59429902500644,0.434101232678913,1.38726371611854,1.23211248454009,-1.90705039732404,-1.61529765128843,-1.67728770168705,-0.173536259867967,1.1394470025958,-0.94668039917753,-0.159478059315696,1.18481106763709,0.509593145230726,0.223848028545494,-0.888110063272082,2.18764575481975,1.96946486165186,2.09662648828097,1.7941254408658,1.19925480288416,-0.618560083251035,0.212357198789346,0.0641730637906699,0.292256698626024,-0.370664045570373,0.135009399239684,-2.27491997321184,0.143495396810159,0.262601199604499,0.201438823482189,-0.35520204591383,,,
0.9,1.0,-4.44774030679586,-1.11275749388428,0.507366692631453,0.468550525914631,0.843409924450063,0.414280505855425,0.367914640879673,-0.0577851382478128,-1.22726870960233,-1.09819710691446,-0.464505901680104,1.84871519571589,0.265276441889633,-1.31158079172016,0.712224135204576,0.100510353152504,-0.643517623763363,-0.951878314639593,0.350363706301863,-0.976652062169023,0.475285596160765,-0.79133848742369,-0.0150662484609962,-0.801567753668075,1.40360526910113,-0.585922680523054,-0.354246667522073,1.05968312635924,-0.478696160094725,-1.18762712568568,0.13032251587019,-1.31338117331829,-1.37683533578805,-0.415242723427493,0.287002767287016,0.519446561615298,0.507784977222456,-1.21775283862233,0.596969584534787,-1.09103745197065,-0.188026141054213,-0.539574607790159,-0.0267049724022197,0.985234967105008,-0.0121637953667821,-0.289343790077273,0.327801788546679,0.699013959334725,1.0507772042841,1.06381547894067,,,
1.0,1.1,-3.09909090168284,-0.359659659892329,-0.12749543385773,0.0622887876624331,-0.860619457274199,0.432094735622488,-0.609981669720907,0.0639099707864614,0.71775040542059,-2.24915557008654,-0.165856156539402,-0.950303021513061,0.0656750471171471,0.758981750209037,0.948229456853139,0.122742557170879,-1.30170649111395,-0.117717471446721,2.31892773448122,0.496869451937333,0.0631715517104231,-1.04088228315997,0.348651895145636,0.277377856805705,-0.527340753898461,-0.96188662382932,-0.736239266993153,-1.63835364530386,-0.0719209782666559,0.970770321960414,0.274203363515058,-0.284515346876542,-1.24310305588837,-0.815182204543421,1.29841206516442,2.25762754300289,-1.33797487751071,-2.39232726554899,0.0602891581081039,-0.632722864132576,-0.381380674267328,1.08467301597097,0.343659227147748,0.896896049042744,-1.46506091422012,-0.41763537978796,0.191286527582262,-0.468464363834216,-1.09892741923733,-0.391740225452495,,,
1.1,1.2,-3.23802049326389,1.74596554721976,-0.499540280575761,-0.843266359194183,0.573232774026051,-0.713900576181787,-1.01901854468152,0.145538742231609,1.36825506560525,0.249028977435512,-2.46295229308899,1.66652457591327,-0.198615690717076,-0.263385204486557,-1.10521035548769,-0.734121299064804,-0.0229783754545948,0.0506840308453182,0.0113112445149267,-0.232951781013076,0.8133440309898,0.788243285045267,-0.356270965183636,1.292547804447,0.0646992755668471,-1.18031609339379,-0.980296876246065,0.256282517705126,0.803914801562479,-0.751495033745804,0.981149907729045,-0.218071038366991,0.665941831057366,-1.29621525136853,-1.1315337185554,0.67324249885459,0.331420850707798,0.853789310822153,-0.387209285971316,-0.0617473807402586,-1.93892715623836,-1.79489758161487,-0.47320101114311,-0.96654353623563,-1.2562143127768,-0.0014335058494865,-0.670128660468449,1.98605312333715,0.155033281607601,0.44551846807408,,,
1.2,1.3,-0.971273433953891,-0.868345934416637,0.525360395096701,-0.232597422322256,-1.49601379893642,-2.52908668132291,0.291107229457754,0.216753524716416,-0.961402923979911,0.232884908650992,1.33497405956156,0.185974162869079,1.0819664783459,-0.683211977341269,-0.0934249609722174,-1.94210519332242,0.876783253159539,-1.27882840637407,2.03294200453347,0.286838582976075,1.42283712316724,-0.323100316805324,0.201814501530754,-0.898363784626655,-0.522562418589968,1.41867825157879,-0.974730135201073,-1.11760089937304,0.824620917859167,-0.423862364857514,-0.619400480877842,-0.529399534279475,0.991986600554311,0.583331428519991,-0.211006241723627,0.821435708131965,0.138342791590999,-0.403542777463114,1.06464765714606,-0.789060097014565,-0.102395197252538,-0.552297480477896,0.259669506929517,1.00031484962009,1.25326497422323,-0.741706107221702,0.716317949428723,0.638207825629194,1.28595639165337,0.0879702349290783,,,
1.3,1.4,-2.86248692076582,0.347890538416066,-1.27278549801312,-0.291262617102902,2.36838805394921,0.464807495400011,1.08687090634751,1.7832729004785,0.727591185856305,1.00011602975499,-0.197069897467726,-1.59253654229969,-1.64298561684632,1.49831743106751,-0.597772192484045,0.534515335680498,0.0147234393366317,0.205012890150111,-0.559613169455437,-1.27252520194646,-0.105259587819075,0.49919375150749,-0.0593172762281228,-1.2613346568111,-0.706536925074285,0.589008747567681,-1.82492862669336,1.02376845413314,-1.23239646747825,0.543736988061945,-1.00654350266696,-2.77981804434358,0.152840164690063,-0.569119801165209,-1.4765816373035,-0.836364979594367,0.947475048136282,-0.124377979840782,-0.56598077703248,0.640581016214566,1.05668713246614,1.17188350874907,-0.455197255050525,-1.08127895925572,-1.39520562119579,1.71350013442997,0.169194774895656,-1.74996304423433,-0.559784363697703,-2.41031769108155,,,
1.4,1.5,-1.61101017216006,-0.933884563317575,1.77639273280316,-1.22203590775144,0.173117535987142,0.130395618992478,-0.229938731031663,-0.828432541105236,-0.65746443653727,-0.296129659235114,0.162498175403568,1.29392008320793,1.29282600686564,-0.896980042419235,0.507126153194601,0.203043147539653,0.0262655034896133,-0.726980024285828,-0.471118173096727,0.578424279342402,-0.494577652134584,0.585113326390058,0.266905931745185,1.06619468640444,-0.226461756216445,0.153805224449896,0.884667797835743,-0.73145034358127,0.883383448678899,-0.245424268895577,1.21322261487307,-0.612067222292678,1.13627205183641,0.663131024262672,-0.189002307247342,1.53096473041284,-0.240151295433385,1.63123088303574,0.823185628496508,0.563026841296833,1.7121295131197,1.74225139594617,0.273741789403298,-1.21564752302175,-0.394465389843137,0.27139832154876,0.0079851620072709,0.673908463250784,0.581259050717442,0.239130338326016,,,
1.5,1.6,-1.47427082496119,0.880755954362544,0.742140486863105,-0.679923565750302,2.23474813364379,0.0831968758265776,0.921053927597004,-0.336904428023005,0.231647401537525,2.24282268035046,-0.201960134649665,1.05175879662423,0.934015462626019,-0.277109705767538,-0.92559175175182,-0.688993962906492,1.34672176799686,0.101930814133559,-0.875125700863262,-1.1427133721363,-0.0724775204102265,0.265296514759947,-0.112800263354246,0.34020759264344,-1.73072177388175,1.63516677283923,0.432011635283091,2.96879223508065,-0.230962539625279,0.318801361467567,-0.442616565484198,0.418444835558832,-0.657491006481548,-0.745899492310761,0.336188254349959,0.15854548301566,0.326894288956611,-0.251516391189098,-0.313611323506182,0.508390499905596,-0.352375131081077,-0.166613664863456,-0.435997664997284,-0.963397485442238,-0.395454331546453,-2.35273763662371,0.107904851761832,-0.760076049292479,0.516168120330722,1.2123522342855,,,
1.6,1.7,-2.09878977951197,0.639592539001515,0.160859420829667,-0.68061632337174,-1.73228975812342,0.664737146144949,-0.644974944394484,-0.811542394703354,-1.37945183248634,1.75860825213751,0.916485573328238,0.81897185806978,-0.693589826320362,0.681099395272082,-0.289784693839316,2.14907331402146,2.84667680062198,-0.714098980306512,1.64022490599201,-0.274462053774466,-0.172631276449679,-2.62301402007093,-0.665881807160798,0.610794240026294,-0.766810027481317,-1.19704396547744,-0.964983796291884,-0.192824843413811,0.098091768309394,1.00785659850046,0.463936909180991,-1.17757024503215,0.0443283083305587,1.28602855352551,-0.377532722965945,0.247163046230049,-0.383194459654412,0.404788347682512,-2.13005637167212,-2.18846271817293,2.02469036169784,0.338833981163382,-0.193979627063926,-0.142272817736529,-0.0790912393453113,0.710852443746004,2.08857309582745,-2.55286755746463,-0.421403230578765,0.467182390084249,,,
1.7,1.8,1.00925391275254,1.37474656008589,-0.0090970278399998,-0.346412275426031,0.960628573252543,1.07715536792327,-2.00475436597727,-1.56685475297392,0.527744554627656,0.350121171283212,-1.20761742136517,-0.640978005425133,0.976684464214235,0.136880206616241,0.419116030133855,-1.23663547845226,0.494175779354801,-1.60180256913862,1.00282279389971,-1.09222642056937,-0.676949249802419,-0.856909319000302,0.584890561606453,0.320699369767227,0.420736666081711,0.145759861726765,-0.696584372073265,2.59648777138279,0.80272534126436,0.91425151103223,1.75310992646248,0.0157181701985221,1.14176165460167,0.057867979669775,0.907452340987986,0.541366292230641,-1.20531301851502,0.523890687372466,-0.690749190269591,0.86128754855452,0.937471982293557,-0.76863066919468,0.390041647440194,0.377747647050882,-0.0925261167039724,-1.45200143918822,0.0588267317099769,1.00687365185681,1.30765171155742,-0.669801305308203,,,
1.8,1.9,-1.449594453978,1.17139932899863,0.0750821226143516,0.402334066842221,-0.434053740121578,1.46229623677783,-0.40822810695267,-0.200212655188883,-1.41941880026543,-0.0947556282723024,0.878117342976929,-1.67925230891458,0.964932430177351,0.105044968428406,-0.163666571018362,0.315634284221749,0.595423854338757,-0.558239445944123,0.748599974931374,-0.143875921205212,-0.298259487797806,1.61886661049491,1.69376135816157,-0.081411744009167,-0.589388792134599,0.326106176383826,-1.84071182220167,-0.544133226268706,-1.00339762061913,-1.77315717289631,-2.09299090118694,-0.0907615334930632,0.105712304395261,-2.43334806412051,2.08155204494469,0.486160023717119,0.822201198399303,-0.718711825930808,0.688447292167804,1.16279100339109,-1.48346426111682,-0.483079916972782,0.900034333224391,-0.458946285539368,-0.570485909385145,0.064255910039447,-0.746295416149551,1.40704506258393,-0.0337277371081988,-0.376358937143787,,,
1.9,2.0,-1.85125066455972,0.66028943384553,0.0139229187456611,0.0104477116502975,-0.717761311325679,-0.077370000264326,0.141068435366493,-1.14732631185047,0.547388940976638,-1.69487405911705,0.875876393720465,0.65637835416811,-1.16189641270829,-1.45244309288448,-1.07714046115485,-1.8495144551776,-1.27563561931607,-1.7835008631496,2.26131600509309,-0.215594069788061,0.660982537636236,0.507831783381489,0.0756562183288402,0.0303060196596953,-0.251522354647413,1.9035082759663,0.679440511558685,-0.120825055617998,1.57153193878004,-0.674754137724121,-0.685970198592187,0.48160460978278,-0.675817358494143,-0.757187469307967,1.64516172371811,0.0328976045088034,-1.85362372620806,0.157436894672794,0.50208354031508,0.241095341962767,-0.118239094477677,1.18842861973302,-0.126251241771557,-1.38899127317018,0.408141933895154,-0.404688150439642,-1.0048437133398,0.748231276199803,0.837737301889623,-0.560698942261964,,,
2.0,2.1,-1.60601535923233,0.669143816704662,0.143810896251667,-0.815482700549905,1.45004996217576,1.48594020039215,-0.0267442432670983,0.549738822168395,0.136195893534055,1.76053186383306,-0.250904539200862,0.414756564478482,-0.437014625251531,-1.21508289877814,0.729413806183881,0.646634130867828,2.12882757172237,-1.20727255876545,-0.290014674271168,0.625562846141297,-0.142092235155255,1.13604222523948,-0.472366514145488,-0.536686593371494,-0.765157580097147,-0.354361814801958,0.392700341865491,-1.13375277944537,-0.57922946388263,-1.17090850044028,-0.403554130111788,1.98681181743454,1.83226342549388,0.330101205662862,0.918958964478383,-0.230415239782638,-1.05825458415651,0.440372530007424,-1.81209642037741,0.621457180575732,-0.522960148313009,-0.473494045615778,-0.150850398309924,-1.87121101604963,-0.194111875340998,-1.08040209110534,-1.99421926943775,-1.06970982913185,0.38256984977095,-0.499435538752386,,,
2.1,2.2,-1.37691918932328,-1.88854092758226,-1.01045232254161,-2.46073542709708,2.96314659086332,-1.40812220494217,0.700873530768047,-0.569588091543524,0.910217643518832,-0.00505673948620012,-0.860408038052145,0.0699061321527326,-1.0887764238652,0.89234390981033,-1.844415455218,-0.0949612097519673,0.429075075031871,-0.0861284502880812,0.718162675940565,-1.65893736229242,-0.0504488664062409,-0.293958967283765,0.729135489869696,0.121905982046074,-1.11866670633372,0.719576754670144,0.131709051338085,-0.515902505202922,-0.0788055596524318,0.89294545648814,-1.41054922202298,-0.397909765898704,0.985505790375688,-1.22365632525866,-2.50174502444724,0.557537529414053,0.638935746143102,1.39907915785192,0.766138588211053,-1.39238254210462,-1.08607601020725,0.779388358390366,-2.17603247266285,-0.480889968851674,-2.38613179112004,-1.83628807369454,-0.961519057282883,1.68374338449346,2.1145273233512,-0.597602227196933,,,
2.2,2.3,-0.38485346976322,1.71441742542603,0.862630467549317,-0.38033261179794,-0.489618746025318,0.0591983154344916,-0.596753298343392,0.72371617762678,0.307130803493028,0.229723466533615,1.36217923270807,-0.0976142284614124,-0.516148530800558,0.180752605358601,-0.826935513982694,0.364143346070747,2.55486560475664,0.453046914065365,0.701704298729262,-0.235450982734894,-1.0940257936463,-0.500459110672278,0.728549142164805,1.55433138279028,0.432181919838667,0.225275871831435,-0.560135650986184,-0.231570867766364,-0.885142044952308,-0.558604971294484,-1.82459833477448,0.152679415051044,-0.125541765002843,-1.44085634510553,0.87827690281758,1.03732438955034,-1.05131048011142,-0.273626319864078,0.398383142429682,1.24853761129889,-0.23406343149014,0.730678604180361,0.225644042490417,1.15011530488428,0.306140418894449,-0.764800139388062,-0.924377070043919,-0.906311349980566,0.154097326038458,2.04525910094737,,,
2.3,2.4,-1.28953743425881,0.593602699110775,2.28235083814812,1.89089006844817,1.41913375564524,-0.0376542089295913,0.959291492150015,0.800192364266494,-0.495746741284409,-0.98359094713131,0.199432824975916,-0.697445523136789,-0.0798953477697274,-0.612534884940749,0.443031050594771,-0.845466308111129,0.304773223207354,1.20220052501968,-1.41724461142755,-0.535825571756851,-0.139249120602771,0.743431046015611,0.291707162253733,0.407436706748691,-2.45042392696164,0.66568793227417,1.98724448888319,-0.242180462441927,-1.29080554014862,-1.7644259703506,-0.226250118490315,-0.286473135967021,0.87066607626009,-0.0454371001278132,-0.717027434930964,-2.35620436046941,-1.28761888215381,1.43827166511107,0.854679947898158,0.242906490252199,-0.252577293411509,-1.2014577983329,0.342176439541731,0.581907722507583,-0.309393537463487,0.247393152243891,-2.28076596723148,-2.33534043885578,-0.211655718745541,1.54353757434573,,,
2.4,2.5,-0.653467900262419,-0.4963479578044,1.34873552106367,0.140149504864691,0.497634043092993,0.982318308333538,-0.826889515884245,0.617397236813882,-0.910038168697828,-0.107244212651211,-0.119806078457305,0.598141199247828,0.147492056696988,-0.276606629015641,0.535388471247822,-2.06786965619509,0.925946856266965,1.40859693946566,-0.806256213703648,0.697914132932985,1.98377488724377,1.3529800010859,0.851109881666436,-0.187952626360489,-0.823303448246129,0.570003128501322,-0.272345848190497,-0.218644079368752,0.296511558256157,0.945466889273468,-1.41315823448521,0.787752559162959,0.0868721808757943,0.25469902919241,0.850835715705959,0.692932459340385,1.32808310265405,2.16679915504799,0.820491555238031,0.354603164292584,0.917115025480176,1.25492386535447,-0.40484396218625,0.441931463949241,-1.25163888923188,-1.02571105855879,1.2985824606236,-1.06012379597561,0.505781873560172,1.31644108760808,,,
2.5,2.6,-1.54163213914593,0.485718053589599,-1.52127302211832,-0.186093807125215,1.2385646382438,1.68353722385926,-1.34629358758577,2.39226430970994,-1.46624078818285,-1.38239862125204,0.838861770549575,-0.778476350568663,0.594631532225217,0.940078976781259,-0.502948166867935,-1.07483152075934,0.224941156270868,0.787674340996857,-1.879681953764,-0.0952589756004587,1.64347220367494,-1.29972845714763,-0.675189839885044,1.71339294384532,-1.6327536941499,-0.639897645620297,1.75141899880403,0.587444804993354,1.39107000629944,0.146981604351645,0.625188076694792,0.212038108387411,0.792899026779549,-0.698394053222702,1.74301239955783,0.692738384625026,-0.216369491109795,0.489231855098492,-0.573088134753217,-0.233511723120165,-1.50575411603236,0.130816691092331,0.538649062428657,-2.06428227766601,-0.513328244956785,-0.652124424972041,0.725442646365652,-2.19521189057892,0.767383981948306,0.518928362028896,,,
2.6,2.7,-0.404164810533275,0.102274692088978,-1.08449618505089,2.09120909855889,-1.11917775235596,1.45097833771738,0.472911649999107,-0.828369240740054,0.785002577610665,0.414678613589617,0.199880405625152,-0.459821332878392,-0.909044084453528,-0.20578644825676,-0.341583188023587,0.782588866071394,-1.00847019061368,-0.691400981543019,-0.936096623208734,1.76530172830329,-0.501773287936934,-0.59919079156968,-0.065960895964635,0.956384308331524,0.671657382647727,1.68458953985207,0.0578286678859909,1.51891459959947,-0.544925308287521,-0.997252253975146,-0.89037363257251,1.36046314798829,-1.2793402221833,0.968538961419931,0.339608576710708,0.521992311995813,-0.257562532745493,-1.53988194336016,0.0644864952819011,-1.05527339556824,-0.565676268382917,1.20003602131403,-1.89571329172304,-1.98168191343,-0.593378676096049,1.27445879451447,0.862152277941382,0.0328038178449537,-1.43096570122999,-1.36017771437072,,,
2.7,2.8,-3.56797705751825,1.09881194979225,-1.16831493597144,0.520983425027833,1.66749976766568,-0.0712834678280598,-0.638360247864907,-1.08051765792604,0.410719825157519,0.557510193799553,-0.511652979040744,0.995594990713032,0.816075238131488,0.88144246148645,-1.01680198833235,0.346174298538861,1.96905166966619,-0.735663903508833,2.32584847448696,-0.645145416990287,-0.84755524555166,-0.0284009610648053,1.21701891050411,1.88489226576535,-0.921828385172571,0.885798458807903,2.63083698314068,0.302745787563594,-1.42894475273606,-1.15584495989824,-0.100107869379229,-0.575279817044032,-0.314382673734126,-0.846617862679996,1.53277218248083,-0.66636411626898,-1.33864745977004,-0.72607207779172,-1.2987258124462,0.991971138905104,0.234719066783197,-1.42403749517274,-0.280562003087986,-0.240745897998986,-0.201106126547365,-0.0904003897201168,0.826545621980961,-1.2922743016258,-0.837884142081378,0.64380255904924,,,
2.8,2.9,-0.988262968181082,0.418037719544605,1.04568410951798,-0.318713751270629,0.0188084459047177,0.96559234262152,0.334954418508725,-0.898917032840481,-0.638666684250415,0.180112703828211,2.00537827140566,1.390614788546,-0.943091895589548,0.933749406472778,0.448753970569277,1.34981987477594,0.951964997738819,-2.3005656213913,2.46873873656557,-0.70411151718615,-1.17081741958248,-1.30309836890683,0.497336105348077,2.19835328570869,0.276001894721499,1.190950526532,-0.763423017036248,-1.2560434290105,1.79284551512437,-0.312315924182818,-0.740192502628443,-0.847316266032773,-0.582484908106787,-0.319241508047501,-0.181283696126251,0.850896972462388,2.38909196491941,0.409117949690621,-0.881198976461458,-0.90303180161685,-0.334475351110278,0.586634767430369,-0.874811521187844,0.621486109769527,0.584669008122476,-0.744766894881111,-0.864900302918206,1.34009908917876,-1.02186219137494,0.392832361133756,,,
2.9,3.0,-1.61005461936525,-1.1498200138669,0.121323143019759,-1.55103143054491,-1.00079445648052,1.67717800323898,0.262355004435243,0.475624933029085,-0.0267365775761464,1.64952299721817,0.965516586287597,-1.18419488848939,2.25378360734499,-0.922028013165381,-0.64637684456314,-0.990505334606425,-0.124163448381048,-1.69486189330993,0.271925005428862,1.22873770978493,0.305907426366617,0.875467367403968,0.588791614961203,0.427098588933039,-1.15696099332683,-0.346455014574285,-0.830310509840663,0.754478112837592,1.07622127929693,-0.52791318770056,1.36584478582221,0.0698614444643175,0.107833627896301,0.187859731925132,1.3713634192136,-2.16969187615497,-0.0230684927188355,0.524184182040186,0.860954882028488,-0.683571728503834,0.712840566573534,0.314542576183367,0.644421820807391,-1.15144187414628,-1.68359919846919,0.304745480696108,1.15615485096293,-1.24076669807937,-0.451694284250098,-0.785002603819057,,,
1 Time:1x50 End Time V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: Event Id Event Date Event Duration
2 0.1 0.2 -1.77233830755434 -0.236827251592077 1.46919909228546 1.77215815513424 -0.506267686281275 -1.51953712478023 1.21926844675747 -0.591336201883905 0.810793892940092 -0.0478351524521654 -1.07795341398774 1.04901825661264 0.290957678674044 1.13979936881618 0.173211780905492 -0.784805991192958 0.687022984726741 1.27668771671656 -0.477600037966964 1.07180555201423 0.662293452335553 0.72269911407146 -1.02250250717064 -0.528905944325278 3.59972319160266 -0.698655925414516 -0.870816336958357 -1.86830514291458 0.102628294986787 0.730214877977463 1.58392297876495 -0.184792411750226 -0.521677930225734 0.632881884596409 -0.758686850714144 -0.282183317841164 2.01338729793665 0.259570955722691 0.236797786923556 0.0063118555176279 0.341959434312799 0.830818003713969 -0.21410802873012 0.0890005001856433 1.09341162189432 0.346395457608115 -0.139910909240344 -1.67861512918353 -0.43165719962675 1.79020262175456
3 0.2 0.3 -1.84606867265548 0.391990239663702 0.264997941836784 -1.34722509967576 -1.44756131640788 -1.47073158350782 -0.172875064506289 -0.508381528023055 0.667066261460272 -0.486728966589707 1.35935857182339 0.294102062812508 1.26240447360024 -0.706411886980103 -1.98153732109541 -0.666274660672812 -0.324676533580154 -1.34944985149662 0.642290035316992 -0.0658277874749391 -0.668311724925967 0.377983358583464 -0.0650165799849114 -0.808947051287604 0.378791095274704 -0.438853903495148 0.128720306499055 -0.676193785278865 -0.859260575094699 -0.448409101403276 1.10791246770839 -0.370116295343959 0.962442327287394 1.78727943629502 -0.585974434161261 1.37340523472128 0.478725873282862 -0.285222490010332 -0.344132711407871 -1.39615102264855 -0.041689311831386 0.747850847366967 1.9166268887971 -1.0226763945532 -0.192783789854472 -0.531362953553267 1.05865794858109 -0.505532040344319 0.0629551176360539 -1.15992871917437
4 0.3 0.4 -2.49332533548487 1.64409749416937 0.285645369721553 -1.14532555306981 -0.367842010009751 0.889564732867821 0.902042445399143 -0.479509583638291 -0.403361444997069 1.02694383797405 -0.848993411267516 -0.975248366803951 -0.268861969752326 1.02713379098879 -1.45754459594992 1.74028420775379 0.98372459913046 0.692933224611794 0.321110966455445 -0.0436112465411973 0.526018910770931 -0.241847911053705 -0.595516014524317 -0.331585203599734 -0.760752181009177 0.206508150525299 -0.394642384347293 0.407995613700545 1.44231841313081 1.49540198041276 0.0215532601393211 -0.775072535037915 1.16103481714688 1.64769834294968 -0.287162546801277 -0.818966182436235 0.70835625526849 -0.669831237747049 -0.434648073958831 -1.01585838221087 -0.395541781732566 0.289189332438686 1.3341684522212 0.0134047395380486 0.773604766122364 0.701127516516158 0.841741052522346 -1.83128613295486 -0.0246511108994746 0.294720307354779
5 0.4 0.5 -2.52499988807365 0.527501220434984 0.97156939662727 -0.637213490174128 -0.354994075323081 -0.745014144258316 -1.21842947507402 -0.331920661880045 -1.19124415803104 0.975903495573172 -0.249597671810458 -0.00939059557927655 0.844201228502543 1.30277300274817 -1.87865915519727 1.25389747263313 -1.5652198477258 1.04897773099458 0.902064536138848 -1.94163561677897 -1.25107351174543 1.1575206731627 0.547764946794999 0.191380498627734 -0.503248172544535 0.855745482972341 0.442492152610449 1.88240828455809 -1.01801218822784 -0.570930259426521 -0.80063210672233 0.105326611459969 -0.352559624804854 0.123826916309908 0.656982714082648 -1.83943913691478 -0.230713358494733 0.619725768853545 -2.23195126444731 -0.0342518400322894 2.16643862640049 -0.790097359634875 0.73936477715902 0.979025947077225 1.02883817581993 0.191311766158682 3.5125755903309 -0.172830577468843 1.13638386199638 0.449415434248763
6 0.5 0.6 -2.4371996996854 -0.199762163143325 -1.66412064115944 1.32209383657703 1.78564808467757 -2.4841632180253 -0.0413739866403881 -1.84399075960103 -1.0630168927679 0.747782305764574 -0.59877556126373 1.00517471083475 -0.95820773957635 0.879504473737644 0.446123315813148 -1.96198514565717 -0.0108819510492637 -0.487353380475919 -0.207961619182551 0.0131011081827504 0.828421906272808 -1.20032945601014 0.225538212304263 1.28470060387135 -0.290121102088802 0.412876421212137 -0.763403474395873 0.0401559259511038 -0.314976740657898 0.124394805554818 -1.33184767770709 1.76659175055496 0.213153581937775 -0.124365036113027 0.337072558576539 2.55224327581814 -0.0241814435233937 -0.139778764718498 1.35388309283917 0.487634179934281 -0.709676528019773 -0.681813968533813 -2.29986097092805 -1.46971925217763 -0.725585249890308 0.329178548531522 -0.44558196076003 1.77560311952576 0.49967867998446 -0.530980731671024
7 0.6 0.7 -1.93849912979167 0.861397778707997 -1.2452326372904 -0.0607259633500062 0.935059706269999 -0.157345974529202 1.36919107938006 -0.259620642461268 0.801260702566358 -1.0722632775712 -0.631842607777485 0.405810093906153 -0.328198810307636 -0.812771037789669 -0.792895889997469 -0.0679581527852328 0.771611375578924 1.35400923122275 2.89965611507454 -1.73827174484685 0.00346343909790884 0.796031396687008 1.87566288659025 1.01633163119628 2.29403948090692 0.629757373786624 0.792443385689405 0.895193616699357 -0.673182057230165 -0.26435621334367 -1.06300665789059 -0.292767792806413 1.33312025105921 -0.872720812321334 0.819544696704868 1.28201785161169 0.393992181070491 -0.77442908477424 -2.44049053359049 0.858494129344435 -0.25023526774339 -0.0618877341108 -0.988740291550961 -0.0739872230807312 -0.552534738897729 -1.62200295119109 -0.0880826904503559 -0.664695381005107 0.355978324679464 0.927432000495081
8 0.7 0.8 -3.34684672140526 -1.26497793354093 -1.16666704428218 -0.780385840997041 0.0470739145971587 -0.605642340825465 0.945587408381604 -1.18126075190584 2.20328717668555 -0.531089179504808 0.201762811766242 -0.584209829626112 0.989899029221811 -0.212533541879578 1.44148304883411 0.00429125290958928 -0.21688568091344 0.909911885569311 -0.533485924810609 -0.220018565796853 -1.33429944720633 1.93287125392024 0.981381645673963 -0.466938397358383 0.170148127053635 -0.27938724823399 -0.778711059848325 -0.32886669555033 -1.06135570930341 1.13476644789916 0.733578755479842 -0.542526637610404 -0.224990428177821 -0.267924453922976 -1.08670312862221 -0.119159342356234 -0.142084166616695 -0.814458646531745 -0.235567135467998 -1.2732800223355 0.285530058673434 -0.483299969473905 0.855165375924984 -0.602204571777015 0.583407634150875 -0.411289622327927 -0.12665450861076 -2.03830175110953 -0.112053964894063 -0.827535602476982
9 0.8 0.9 -3.55989888905074 -0.634059705872217 -0.558120631489627 -0.0418754010266019 1.28680024265942 1.21221922245683 -0.611048728676769 0.957834760817381 -0.844482328959705 0.766673075055981 -0.030934714413184 0.0362884816349346 0.983046328277927 -1.11364782712676 -0.510890038959101 -0.791997369952067 0.0593454735299368 1.06352039878449 0.140439522991638 -1.59429902500644 0.434101232678913 1.38726371611854 1.23211248454009 -1.90705039732404 -1.61529765128843 -1.67728770168705 -0.173536259867967 1.1394470025958 -0.94668039917753 -0.159478059315696 1.18481106763709 0.509593145230726 0.223848028545494 -0.888110063272082 2.18764575481975 1.96946486165186 2.09662648828097 1.7941254408658 1.19925480288416 -0.618560083251035 0.212357198789346 0.0641730637906699 0.292256698626024 -0.370664045570373 0.135009399239684 -2.27491997321184 0.143495396810159 0.262601199604499 0.201438823482189 -0.35520204591383
10 0.9 1.0 -4.44774030679586 -1.11275749388428 0.507366692631453 0.468550525914631 0.843409924450063 0.414280505855425 0.367914640879673 -0.0577851382478128 -1.22726870960233 -1.09819710691446 -0.464505901680104 1.84871519571589 0.265276441889633 -1.31158079172016 0.712224135204576 0.100510353152504 -0.643517623763363 -0.951878314639593 0.350363706301863 -0.976652062169023 0.475285596160765 -0.79133848742369 -0.0150662484609962 -0.801567753668075 1.40360526910113 -0.585922680523054 -0.354246667522073 1.05968312635924 -0.478696160094725 -1.18762712568568 0.13032251587019 -1.31338117331829 -1.37683533578805 -0.415242723427493 0.287002767287016 0.519446561615298 0.507784977222456 -1.21775283862233 0.596969584534787 -1.09103745197065 -0.188026141054213 -0.539574607790159 -0.0267049724022197 0.985234967105008 -0.0121637953667821 -0.289343790077273 0.327801788546679 0.699013959334725 1.0507772042841 1.06381547894067
11 1.0 1.1 -3.09909090168284 -0.359659659892329 -0.12749543385773 0.0622887876624331 -0.860619457274199 0.432094735622488 -0.609981669720907 0.0639099707864614 0.71775040542059 -2.24915557008654 -0.165856156539402 -0.950303021513061 0.0656750471171471 0.758981750209037 0.948229456853139 0.122742557170879 -1.30170649111395 -0.117717471446721 2.31892773448122 0.496869451937333 0.0631715517104231 -1.04088228315997 0.348651895145636 0.277377856805705 -0.527340753898461 -0.96188662382932 -0.736239266993153 -1.63835364530386 -0.0719209782666559 0.970770321960414 0.274203363515058 -0.284515346876542 -1.24310305588837 -0.815182204543421 1.29841206516442 2.25762754300289 -1.33797487751071 -2.39232726554899 0.0602891581081039 -0.632722864132576 -0.381380674267328 1.08467301597097 0.343659227147748 0.896896049042744 -1.46506091422012 -0.41763537978796 0.191286527582262 -0.468464363834216 -1.09892741923733 -0.391740225452495
12 1.1 1.2 -3.23802049326389 1.74596554721976 -0.499540280575761 -0.843266359194183 0.573232774026051 -0.713900576181787 -1.01901854468152 0.145538742231609 1.36825506560525 0.249028977435512 -2.46295229308899 1.66652457591327 -0.198615690717076 -0.263385204486557 -1.10521035548769 -0.734121299064804 -0.0229783754545948 0.0506840308453182 0.0113112445149267 -0.232951781013076 0.8133440309898 0.788243285045267 -0.356270965183636 1.292547804447 0.0646992755668471 -1.18031609339379 -0.980296876246065 0.256282517705126 0.803914801562479 -0.751495033745804 0.981149907729045 -0.218071038366991 0.665941831057366 -1.29621525136853 -1.1315337185554 0.67324249885459 0.331420850707798 0.853789310822153 -0.387209285971316 -0.0617473807402586 -1.93892715623836 -1.79489758161487 -0.47320101114311 -0.96654353623563 -1.2562143127768 -0.0014335058494865 -0.670128660468449 1.98605312333715 0.155033281607601 0.44551846807408
13 1.2 1.3 -0.971273433953891 -0.868345934416637 0.525360395096701 -0.232597422322256 -1.49601379893642 -2.52908668132291 0.291107229457754 0.216753524716416 -0.961402923979911 0.232884908650992 1.33497405956156 0.185974162869079 1.0819664783459 -0.683211977341269 -0.0934249609722174 -1.94210519332242 0.876783253159539 -1.27882840637407 2.03294200453347 0.286838582976075 1.42283712316724 -0.323100316805324 0.201814501530754 -0.898363784626655 -0.522562418589968 1.41867825157879 -0.974730135201073 -1.11760089937304 0.824620917859167 -0.423862364857514 -0.619400480877842 -0.529399534279475 0.991986600554311 0.583331428519991 -0.211006241723627 0.821435708131965 0.138342791590999 -0.403542777463114 1.06464765714606 -0.789060097014565 -0.102395197252538 -0.552297480477896 0.259669506929517 1.00031484962009 1.25326497422323 -0.741706107221702 0.716317949428723 0.638207825629194 1.28595639165337 0.0879702349290783
14 1.3 1.4 -2.86248692076582 0.347890538416066 -1.27278549801312 -0.291262617102902 2.36838805394921 0.464807495400011 1.08687090634751 1.7832729004785 0.727591185856305 1.00011602975499 -0.197069897467726 -1.59253654229969 -1.64298561684632 1.49831743106751 -0.597772192484045 0.534515335680498 0.0147234393366317 0.205012890150111 -0.559613169455437 -1.27252520194646 -0.105259587819075 0.49919375150749 -0.0593172762281228 -1.2613346568111 -0.706536925074285 0.589008747567681 -1.82492862669336 1.02376845413314 -1.23239646747825 0.543736988061945 -1.00654350266696 -2.77981804434358 0.152840164690063 -0.569119801165209 -1.4765816373035 -0.836364979594367 0.947475048136282 -0.124377979840782 -0.56598077703248 0.640581016214566 1.05668713246614 1.17188350874907 -0.455197255050525 -1.08127895925572 -1.39520562119579 1.71350013442997 0.169194774895656 -1.74996304423433 -0.559784363697703 -2.41031769108155
15 1.4 1.5 -1.61101017216006 -0.933884563317575 1.77639273280316 -1.22203590775144 0.173117535987142 0.130395618992478 -0.229938731031663 -0.828432541105236 -0.65746443653727 -0.296129659235114 0.162498175403568 1.29392008320793 1.29282600686564 -0.896980042419235 0.507126153194601 0.203043147539653 0.0262655034896133 -0.726980024285828 -0.471118173096727 0.578424279342402 -0.494577652134584 0.585113326390058 0.266905931745185 1.06619468640444 -0.226461756216445 0.153805224449896 0.884667797835743 -0.73145034358127 0.883383448678899 -0.245424268895577 1.21322261487307 -0.612067222292678 1.13627205183641 0.663131024262672 -0.189002307247342 1.53096473041284 -0.240151295433385 1.63123088303574 0.823185628496508 0.563026841296833 1.7121295131197 1.74225139594617 0.273741789403298 -1.21564752302175 -0.394465389843137 0.27139832154876 0.0079851620072709 0.673908463250784 0.581259050717442 0.239130338326016
16 1.5 1.6 -1.47427082496119 0.880755954362544 0.742140486863105 -0.679923565750302 2.23474813364379 0.0831968758265776 0.921053927597004 -0.336904428023005 0.231647401537525 2.24282268035046 -0.201960134649665 1.05175879662423 0.934015462626019 -0.277109705767538 -0.92559175175182 -0.688993962906492 1.34672176799686 0.101930814133559 -0.875125700863262 -1.1427133721363 -0.0724775204102265 0.265296514759947 -0.112800263354246 0.34020759264344 -1.73072177388175 1.63516677283923 0.432011635283091 2.96879223508065 -0.230962539625279 0.318801361467567 -0.442616565484198 0.418444835558832 -0.657491006481548 -0.745899492310761 0.336188254349959 0.15854548301566 0.326894288956611 -0.251516391189098 -0.313611323506182 0.508390499905596 -0.352375131081077 -0.166613664863456 -0.435997664997284 -0.963397485442238 -0.395454331546453 -2.35273763662371 0.107904851761832 -0.760076049292479 0.516168120330722 1.2123522342855
17 1.6 1.7 -2.09878977951197 0.639592539001515 0.160859420829667 -0.68061632337174 -1.73228975812342 0.664737146144949 -0.644974944394484 -0.811542394703354 -1.37945183248634 1.75860825213751 0.916485573328238 0.81897185806978 -0.693589826320362 0.681099395272082 -0.289784693839316 2.14907331402146 2.84667680062198 -0.714098980306512 1.64022490599201 -0.274462053774466 -0.172631276449679 -2.62301402007093 -0.665881807160798 0.610794240026294 -0.766810027481317 -1.19704396547744 -0.964983796291884 -0.192824843413811 0.098091768309394 1.00785659850046 0.463936909180991 -1.17757024503215 0.0443283083305587 1.28602855352551 -0.377532722965945 0.247163046230049 -0.383194459654412 0.404788347682512 -2.13005637167212 -2.18846271817293 2.02469036169784 0.338833981163382 -0.193979627063926 -0.142272817736529 -0.0790912393453113 0.710852443746004 2.08857309582745 -2.55286755746463 -0.421403230578765 0.467182390084249
18 1.7 1.8 1.00925391275254 1.37474656008589 -0.0090970278399998 -0.346412275426031 0.960628573252543 1.07715536792327 -2.00475436597727 -1.56685475297392 0.527744554627656 0.350121171283212 -1.20761742136517 -0.640978005425133 0.976684464214235 0.136880206616241 0.419116030133855 -1.23663547845226 0.494175779354801 -1.60180256913862 1.00282279389971 -1.09222642056937 -0.676949249802419 -0.856909319000302 0.584890561606453 0.320699369767227 0.420736666081711 0.145759861726765 -0.696584372073265 2.59648777138279 0.80272534126436 0.91425151103223 1.75310992646248 0.0157181701985221 1.14176165460167 0.057867979669775 0.907452340987986 0.541366292230641 -1.20531301851502 0.523890687372466 -0.690749190269591 0.86128754855452 0.937471982293557 -0.76863066919468 0.390041647440194 0.377747647050882 -0.0925261167039724 -1.45200143918822 0.0588267317099769 1.00687365185681 1.30765171155742 -0.669801305308203
19 1.8 1.9 -1.449594453978 1.17139932899863 0.0750821226143516 0.402334066842221 -0.434053740121578 1.46229623677783 -0.40822810695267 -0.200212655188883 -1.41941880026543 -0.0947556282723024 0.878117342976929 -1.67925230891458 0.964932430177351 0.105044968428406 -0.163666571018362 0.315634284221749 0.595423854338757 -0.558239445944123 0.748599974931374 -0.143875921205212 -0.298259487797806 1.61886661049491 1.69376135816157 -0.081411744009167 -0.589388792134599 0.326106176383826 -1.84071182220167 -0.544133226268706 -1.00339762061913 -1.77315717289631 -2.09299090118694 -0.0907615334930632 0.105712304395261 -2.43334806412051 2.08155204494469 0.486160023717119 0.822201198399303 -0.718711825930808 0.688447292167804 1.16279100339109 -1.48346426111682 -0.483079916972782 0.900034333224391 -0.458946285539368 -0.570485909385145 0.064255910039447 -0.746295416149551 1.40704506258393 -0.0337277371081988 -0.376358937143787
20 1.9 2.0 -1.85125066455972 0.66028943384553 0.0139229187456611 0.0104477116502975 -0.717761311325679 -0.077370000264326 0.141068435366493 -1.14732631185047 0.547388940976638 -1.69487405911705 0.875876393720465 0.65637835416811 -1.16189641270829 -1.45244309288448 -1.07714046115485 -1.8495144551776 -1.27563561931607 -1.7835008631496 2.26131600509309 -0.215594069788061 0.660982537636236 0.507831783381489 0.0756562183288402 0.0303060196596953 -0.251522354647413 1.9035082759663 0.679440511558685 -0.120825055617998 1.57153193878004 -0.674754137724121 -0.685970198592187 0.48160460978278 -0.675817358494143 -0.757187469307967 1.64516172371811 0.0328976045088034 -1.85362372620806 0.157436894672794 0.50208354031508 0.241095341962767 -0.118239094477677 1.18842861973302 -0.126251241771557 -1.38899127317018 0.408141933895154 -0.404688150439642 -1.0048437133398 0.748231276199803 0.837737301889623 -0.560698942261964
21 2.0 2.1 -1.60601535923233 0.669143816704662 0.143810896251667 -0.815482700549905 1.45004996217576 1.48594020039215 -0.0267442432670983 0.549738822168395 0.136195893534055 1.76053186383306 -0.250904539200862 0.414756564478482 -0.437014625251531 -1.21508289877814 0.729413806183881 0.646634130867828 2.12882757172237 -1.20727255876545 -0.290014674271168 0.625562846141297 -0.142092235155255 1.13604222523948 -0.472366514145488 -0.536686593371494 -0.765157580097147 -0.354361814801958 0.392700341865491 -1.13375277944537 -0.57922946388263 -1.17090850044028 -0.403554130111788 1.98681181743454 1.83226342549388 0.330101205662862 0.918958964478383 -0.230415239782638 -1.05825458415651 0.440372530007424 -1.81209642037741 0.621457180575732 -0.522960148313009 -0.473494045615778 -0.150850398309924 -1.87121101604963 -0.194111875340998 -1.08040209110534 -1.99421926943775 -1.06970982913185 0.38256984977095 -0.499435538752386
22 2.1 2.2 -1.37691918932328 -1.88854092758226 -1.01045232254161 -2.46073542709708 2.96314659086332 -1.40812220494217 0.700873530768047 -0.569588091543524 0.910217643518832 -0.00505673948620012 -0.860408038052145 0.0699061321527326 -1.0887764238652 0.89234390981033 -1.844415455218 -0.0949612097519673 0.429075075031871 -0.0861284502880812 0.718162675940565 -1.65893736229242 -0.0504488664062409 -0.293958967283765 0.729135489869696 0.121905982046074 -1.11866670633372 0.719576754670144 0.131709051338085 -0.515902505202922 -0.0788055596524318 0.89294545648814 -1.41054922202298 -0.397909765898704 0.985505790375688 -1.22365632525866 -2.50174502444724 0.557537529414053 0.638935746143102 1.39907915785192 0.766138588211053 -1.39238254210462 -1.08607601020725 0.779388358390366 -2.17603247266285 -0.480889968851674 -2.38613179112004 -1.83628807369454 -0.961519057282883 1.68374338449346 2.1145273233512 -0.597602227196933
23 2.2 2.3 -0.38485346976322 1.71441742542603 0.862630467549317 -0.38033261179794 -0.489618746025318 0.0591983154344916 -0.596753298343392 0.72371617762678 0.307130803493028 0.229723466533615 1.36217923270807 -0.0976142284614124 -0.516148530800558 0.180752605358601 -0.826935513982694 0.364143346070747 2.55486560475664 0.453046914065365 0.701704298729262 -0.235450982734894 -1.0940257936463 -0.500459110672278 0.728549142164805 1.55433138279028 0.432181919838667 0.225275871831435 -0.560135650986184 -0.231570867766364 -0.885142044952308 -0.558604971294484 -1.82459833477448 0.152679415051044 -0.125541765002843 -1.44085634510553 0.87827690281758 1.03732438955034 -1.05131048011142 -0.273626319864078 0.398383142429682 1.24853761129889 -0.23406343149014 0.730678604180361 0.225644042490417 1.15011530488428 0.306140418894449 -0.764800139388062 -0.924377070043919 -0.906311349980566 0.154097326038458 2.04525910094737
24 2.3 2.4 -1.28953743425881 0.593602699110775 2.28235083814812 1.89089006844817 1.41913375564524 -0.0376542089295913 0.959291492150015 0.800192364266494 -0.495746741284409 -0.98359094713131 0.199432824975916 -0.697445523136789 -0.0798953477697274 -0.612534884940749 0.443031050594771 -0.845466308111129 0.304773223207354 1.20220052501968 -1.41724461142755 -0.535825571756851 -0.139249120602771 0.743431046015611 0.291707162253733 0.407436706748691 -2.45042392696164 0.66568793227417 1.98724448888319 -0.242180462441927 -1.29080554014862 -1.7644259703506 -0.226250118490315 -0.286473135967021 0.87066607626009 -0.0454371001278132 -0.717027434930964 -2.35620436046941 -1.28761888215381 1.43827166511107 0.854679947898158 0.242906490252199 -0.252577293411509 -1.2014577983329 0.342176439541731 0.581907722507583 -0.309393537463487 0.247393152243891 -2.28076596723148 -2.33534043885578 -0.211655718745541 1.54353757434573
25 2.4 2.5 -0.653467900262419 -0.4963479578044 1.34873552106367 0.140149504864691 0.497634043092993 0.982318308333538 -0.826889515884245 0.617397236813882 -0.910038168697828 -0.107244212651211 -0.119806078457305 0.598141199247828 0.147492056696988 -0.276606629015641 0.535388471247822 -2.06786965619509 0.925946856266965 1.40859693946566 -0.806256213703648 0.697914132932985 1.98377488724377 1.3529800010859 0.851109881666436 -0.187952626360489 -0.823303448246129 0.570003128501322 -0.272345848190497 -0.218644079368752 0.296511558256157 0.945466889273468 -1.41315823448521 0.787752559162959 0.0868721808757943 0.25469902919241 0.850835715705959 0.692932459340385 1.32808310265405 2.16679915504799 0.820491555238031 0.354603164292584 0.917115025480176 1.25492386535447 -0.40484396218625 0.441931463949241 -1.25163888923188 -1.02571105855879 1.2985824606236 -1.06012379597561 0.505781873560172 1.31644108760808
26 2.5 2.6 -1.54163213914593 0.485718053589599 -1.52127302211832 -0.186093807125215 1.2385646382438 1.68353722385926 -1.34629358758577 2.39226430970994 -1.46624078818285 -1.38239862125204 0.838861770549575 -0.778476350568663 0.594631532225217 0.940078976781259 -0.502948166867935 -1.07483152075934 0.224941156270868 0.787674340996857 -1.879681953764 -0.0952589756004587 1.64347220367494 -1.29972845714763 -0.675189839885044 1.71339294384532 -1.6327536941499 -0.639897645620297 1.75141899880403 0.587444804993354 1.39107000629944 0.146981604351645 0.625188076694792 0.212038108387411 0.792899026779549 -0.698394053222702 1.74301239955783 0.692738384625026 -0.216369491109795 0.489231855098492 -0.573088134753217 -0.233511723120165 -1.50575411603236 0.130816691092331 0.538649062428657 -2.06428227766601 -0.513328244956785 -0.652124424972041 0.725442646365652 -2.19521189057892 0.767383981948306 0.518928362028896
27 2.6 2.7 -0.404164810533275 0.102274692088978 -1.08449618505089 2.09120909855889 -1.11917775235596 1.45097833771738 0.472911649999107 -0.828369240740054 0.785002577610665 0.414678613589617 0.199880405625152 -0.459821332878392 -0.909044084453528 -0.20578644825676 -0.341583188023587 0.782588866071394 -1.00847019061368 -0.691400981543019 -0.936096623208734 1.76530172830329 -0.501773287936934 -0.59919079156968 -0.065960895964635 0.956384308331524 0.671657382647727 1.68458953985207 0.0578286678859909 1.51891459959947 -0.544925308287521 -0.997252253975146 -0.89037363257251 1.36046314798829 -1.2793402221833 0.968538961419931 0.339608576710708 0.521992311995813 -0.257562532745493 -1.53988194336016 0.0644864952819011 -1.05527339556824 -0.565676268382917 1.20003602131403 -1.89571329172304 -1.98168191343 -0.593378676096049 1.27445879451447 0.862152277941382 0.0328038178449537 -1.43096570122999 -1.36017771437072
28 2.7 2.8 -3.56797705751825 1.09881194979225 -1.16831493597144 0.520983425027833 1.66749976766568 -0.0712834678280598 -0.638360247864907 -1.08051765792604 0.410719825157519 0.557510193799553 -0.511652979040744 0.995594990713032 0.816075238131488 0.88144246148645 -1.01680198833235 0.346174298538861 1.96905166966619 -0.735663903508833 2.32584847448696 -0.645145416990287 -0.84755524555166 -0.0284009610648053 1.21701891050411 1.88489226576535 -0.921828385172571 0.885798458807903 2.63083698314068 0.302745787563594 -1.42894475273606 -1.15584495989824 -0.100107869379229 -0.575279817044032 -0.314382673734126 -0.846617862679996 1.53277218248083 -0.66636411626898 -1.33864745977004 -0.72607207779172 -1.2987258124462 0.991971138905104 0.234719066783197 -1.42403749517274 -0.280562003087986 -0.240745897998986 -0.201106126547365 -0.0904003897201168 0.826545621980961 -1.2922743016258 -0.837884142081378 0.64380255904924
29 2.8 2.9 -0.988262968181082 0.418037719544605 1.04568410951798 -0.318713751270629 0.0188084459047177 0.96559234262152 0.334954418508725 -0.898917032840481 -0.638666684250415 0.180112703828211 2.00537827140566 1.390614788546 -0.943091895589548 0.933749406472778 0.448753970569277 1.34981987477594 0.951964997738819 -2.3005656213913 2.46873873656557 -0.70411151718615 -1.17081741958248 -1.30309836890683 0.497336105348077 2.19835328570869 0.276001894721499 1.190950526532 -0.763423017036248 -1.2560434290105 1.79284551512437 -0.312315924182818 -0.740192502628443 -0.847316266032773 -0.582484908106787 -0.319241508047501 -0.181283696126251 0.850896972462388 2.38909196491941 0.409117949690621 -0.881198976461458 -0.90303180161685 -0.334475351110278 0.586634767430369 -0.874811521187844 0.621486109769527 0.584669008122476 -0.744766894881111 -0.864900302918206 1.34009908917876 -1.02186219137494 0.392832361133756
30 2.9 3.0 -1.61005461936525 -1.1498200138669 0.121323143019759 -1.55103143054491 -1.00079445648052 1.67717800323898 0.262355004435243 0.475624933029085 -0.0267365775761464 1.64952299721817 0.965516586287597 -1.18419488848939 2.25378360734499 -0.922028013165381 -0.64637684456314 -0.990505334606425 -0.124163448381048 -1.69486189330993 0.271925005428862 1.22873770978493 0.305907426366617 0.875467367403968 0.588791614961203 0.427098588933039 -1.15696099332683 -0.346455014574285 -0.830310509840663 0.754478112837592 1.07622127929693 -0.52791318770056 1.36584478582221 0.0698614444643175 0.107833627896301 0.187859731925132 1.3713634192136 -2.16969187615497 -0.0230684927188355 0.524184182040186 0.860954882028488 -0.683571728503834 0.712840566573534 0.314542576183367 0.644421820807391 -1.15144187414628 -1.68359919846919 0.304745480696108 1.15615485096293 -1.24076669807937 -0.451694284250098 -0.785002603819057
@@ -0,0 +1,30 @@
Time:1x50,End Time,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,Event Id,Event Date,Event Duration
0.1,0.2,-2.8105715330572,1.97044458445776,-2.25117345900302,-2.77675325596564,-4.22282858289576,-0.728730107287751,-0.131732851290365,3.23812046801923,1.87194312096294,0.0509042820995466,-2.90935563390039,3.43795625693612,-1.32743202763949,3.8467147199148,-1.82018863917555,-1.36195423261369,0.593938250540402,-2.54952409351015,-0.175868239114684,0.50401883279692,-0.716112709508492,-4.10682380182668,0.0882455175640278,1.570217526566,1.6746016187139,2.13928318875744,0.132878113953894,4.41237860071733,2.3168155047397,-2.21781976501155,-2.44112900600351,-0.104452294200763,-0.773750302848905,1.65799007451332,-4.54910403234098,-3.18987869603497,-0.643838919963144,6.03278566607531,3.81082112670311,1.52019407424606,-1.66503431554912,-4.67716077003471,-0.307195357516731,-2.79758638051557,1.35403525166371,1.41842144044514,1.59365203345603,-3.91180899655509,2.61716637984177,2.7363702888213,,,
0.2,0.3,2.25856479866076,-3.49853226072837,-0.204747634265671,-3.123651935946,1.32269874452053,-0.045246441431997,0.826989491779179,3.57231405076905,0.157685681320851,-0.785867067767291,3.98778104233212,0.47721614309732,-0.273763205878514,0.824947712507762,-0.727107039939137,0.509710542052856,0.432551955289065,1.53328644287134,-2.2172295385466,-1.14765359725631,0.185969502641448,-2.39861199956817,1.38897527789934,2.06245070219219,1.80779257171327,-1.93473494853549,-1.98187339671248,-4.30650653667619,2.45822371424924,-1.3921074151963,0.0372807168892847,0.246795943961955,-1.29489560034757,-2.98251767778177,1.0344437952679,4.48603532474317,-1.72960192058539,0.461554531572219,0.721970839888233,-1.02068312273811,0.963181417175223,-3.79292757071271,0.761099359957011,-1.55491887600319,-0.452570408436559,-0.146906581768742,-1.93106207104724,-0.457600143698669,1.07622796765881,-0.554860828645116,,,
0.3,0.4,3.98271705203809,-2.19811608631682,-2.1272346934832,-4.15505507189997,-1.06351972345606,0.156350653104381,3.10390611504748,3.4577709548516,1.36596164016536,-0.876084740407852,2.03353697983148,1.6203122010471,-2.20077388312022,1.81588733006304,-1.1236658015585,1.74698940603952,1.41380534324175,-1.03472179830907,-5.01422644462888,-2.34951517958835,3.66846562862928,-1.64138661588594,-0.389487814237493,-0.77351281712287,-2.13397549783302,-2.21313548827122,1.89385059590299,-2.62307428860125,2.33581002613165,-0.683017994176775,2.30054191521104,-0.993874634899022,-1.23055222002998,-4.84295369928031,1.50317829886755,0.797955787551626,-2.91779452963703,2.18382394900967,-0.211129040842678,-2.20480379998498,1.05807079707262,0.442964608661533,-0.894842081976626,-1.68766394511601,0.636103400816211,2.05854951816596,1.19045045798009,-2.11288470560948,-3.0233443960854,-2.23276966075083,,,
0.4,0.5,-1.17123394261144,1.56266409361991,-5.75684621310878,-3.27311883849878,-1.49936701447769,1.67428766519967,-0.751928437348566,-1.59207698422662,-0.913676313905993,-5.80665618290006,-1.31335302117651,-6.08103845207449,0.883650223159432,-1.44746163612749,-0.984476573506612,1.90935067132634,0.547599462132903,-1.35089088234226,-1.18914071103552,-1.23626613899387,0.540308505900391,-1.5652666538784,3.10367078122746,1.27949840246372,-0.725315728611452,4.41371403560844,-0.0941457384539908,-5.60478407683596,0.266378731150281,1.8900311024272,-0.941983647969998,2.26301522311613,1.2668601814492,0.533375859527004,0.713642842458907,2.84239664303946,2.0904637170955,2.99967287920232,-0.061431830618343,-2.49172764650727,-0.44792560342362,-1.50500892753702,3.29497898594663,1.33328104708473,1.38389613749,-2.36872695837441,1.95739718108967,0.112831906968402,0.0875822236921859,-1.26059900856129,,,
0.5,0.6,-0.691247835099285,0.35996239578975,3.72856536111607,1.3095821399835,-0.192335263199433,-1.74440017537381,-5.2325370637816,-4.5354085867458,-0.289846498200247,2.75928482075316,-3.81463586270434,0.238113238131077,-2.94192509811481,-1.14056121237894,2.4696485347111,-3.55346297492856,-2.77505338982254,0.377538094414719,2.04356990495184,-0.476353207374357,2.06180654461382,0.785941061962911,4.16103196784365,0.649447629480342,4.55573479309417,-0.70719113064945,-1.16211165037149,2.14789207417241,-4.26600318248493,-3.08023629234495,-1.72775893942949,1.0349789891197,2.25218453237596,0.568962494959985,0.204608890163155,-3.8260925894879,4.2583197972008,-2.03384851730742,-0.7835817765404,-0.947556618147915,-1.76778945090148,0.12159982825841,-2.75734737864209,3.17774885950749,2.41334219641258,-6.06417185221909,-1.8454115223381,1.65243260991619,1.13925836274113,3.11635886675106,,,
0.6,0.7,-0.75469594624195,0.277343480909411,-3.1636484573233,0.269002296814459,1.23823363844859,0.0930367535985796,-3.9845686942331,0.99730312897028,0.174687065123597,-1.38723558312686,-3.15866226239419,-0.111147547774084,-0.646508789590673,3.26908929138036,-2.10374571303398,-0.129499535867985,0.00920667326941993,1.8441735131152,-1.16913550437466,1.48330673764097,2.54663374176198,2.57550509917293,2.49665653618342,-2.02027283311533,2.68460899674504,1.77754912007238,2.1977518373163,-0.756515811157936,-0.752451827155607,0.778742298490477,-5.00762792946691,0.236043923049721,4.27956735453061,-2.41057475241384,-0.768662997319675,-2.04401085234801,2.75855960423778,-0.340242190891457,1.82678981424863,2.20565473039744,-2.96994068191173,-3.62966732095131,-2.76300680262596,-0.815348420401293,0.996291282202418,-5.08422721374475,2.75835523156865,-2.59055871406729,1.54681587683948,-0.6755499067224,,,
0.7,0.8,0.65651046080783,-0.426811813020632,-1.27303253891505,-3.00885024186743,-1.1946822047483,2.029884867178,-1.78260059201804,1.31070297837884,0.858616942720236,1.27851484579747,-0.088707743833295,-0.0913789344242943,1.15074849398106,2.79518758083919,-3.41755619582524,0.912217609339767,1.52089973412281,1.48236340692864,-1.98030834507565,-1.49778400009765,4.09357289038769,0.503035444580094,-1.08678696370095,-0.900368815495746,-0.66528273447498,-1.02244076034782,-0.684245024852757,1.35853819221209,1.28055291730888,0.17381734572867,-5.72824052807078,-1.51247653309703,2.51443335786332,-1.67631850267937,0.304470774157041,0.291468141091596,0.159318948794085,1.46952680188977,-0.430479543495719,-1.43442327098508,-2.53171639182582,-1.50103059883364,2.80143890875172,-1.23149564747545,-0.200945108374293,-1.47865850182882,3.40999800364323,-0.189847162108051,1.31516281465757,1.86243645208503,,,
0.8,0.9,1.46460867610958,-1.49477111598966,-1.97071051223149,3.34503243843136,0.216045380474084,-1.38054836097643,-1.18926155021276,1.58280716598142,-3.2522551983989,-1.33570609580013,-0.199585777875705,1.30739319220861,1.22307437656635,1.28456382308241,-0.725947804108099,3.31571671019217,-1.22737032728076,-0.868881508621964,-1.2422592721294,-3.28637889860691,2.14064522726149,1.57975502572686,2.15190758666344,4.82350344346956,1.82477255827722,-2.57428674502732,1.61505914955868,0.312213335313871,-1.49465280461993,3.34818297213971,-4.75605714075815,-0.0404034610890573,4.0977040381511,-3.51520295138231,1.79291040966315,3.20783033440413,0.15782207398605,1.61426471927668,-2.24059831228095,-0.496650417379842,-3.0925896828248,-2.66799338104973,1.13571372821778,-0.950916872411329,-2.95087780744659,-2.17630449777817,0.70079437125197,0.534384220843388,3.35852849234982,-0.608448198074922,,,
0.9,1.0,1.54648622091098,0.610416710732742,-0.655157807669775,-1.8563415221732,1.20697381422682,2.4480340290493,-0.907959644908824,0.129307677878469,-0.485060975837386,2.1272760657214,-0.206233760269315,-2.88013869657892,-3.59465500044503,3.63597265491814,2.55951651783495,2.52421128422679,-1.06147013867897,-0.116388265092203,-1.90813701607482,-2.67647157136635,1.58848760158363,-1.99741579574876,3.10060717795274,3.75032660151804,2.1853235444508,2.88227131411482,-1.77009490361947,0.955234614316146,-2.1212687388531,-0.144629256010725,-2.99577734771928,-0.941715199200326,4.86893875570262,-2.29249542879953,0.387089555877114,-0.152259516980132,-2.34828961030103,0.447723687352788,-1.47945473788336,-1.16806190686824,-3.10152625351283,1.35588786835852,-0.0672166407663362,1.14045322745097,0.949832763087217,0.134050690965881,1.13113588581846,3.26950687798222,1.46910013398604,2.88185352313814,,,
1.0,1.1,0.412548674966722,-1.75352041257501,-1.21841087637463,-0.00210429161672981,2.29633195111569,2.20448449548543,0.580557159447253,0.678191658712035,0.730977484381622,0.685330294197169,1.27484902309455,0.353892132669408,-3.70642431577221,3.86252449424315,1.05600212010077,1.01293777656738,1.76203544350132,-0.628319406461999,1.02450800039242,-3.22326390613028,5.85097588704723,0.537030130000432,0.837903044217678,-1.39299644137185,-1.69305324354949,-0.221998000343763,-3.72463422965969,0.630340258140646,-3.44505148366852,-3.77203469072097,-5.58125415389162,-3.45229159846523,0.29308788400517,-2.86879803398118,4.50973229119948,-0.905414610529336,-3.43044863553659,-0.699749644515564,-4.29491049577396,-0.9266611339983,-0.443119083279365,-0.196604547740539,1.76413028876312,3.80476887958539,-2.34947666703353,-0.621479397013964,0.462227210772041,2.70108740966535,-0.724827507896309,2.39883673765848,,,
1.1,1.2,1.7158474115172,-1.11407359505675,-0.867814052370603,-0.185779264871818,-4.48822812275538,-2.56596517645758,-5.63320279778413,-0.338065796354731,1.58715856491674,-0.919645420360434,1.83921061064595,0.341252980343316,-2.02140258523139,0.265722874969387,1.87576029732289,1.35709498003436,-0.474780548059455,0.0639095616887276,-2.14450483371912,-1.11734898176555,3.16152385534152,-2.20181856663677,0.244723112338881,2.37250829851378,-0.835498556833158,0.109746453938632,-2.69948485904786,2.52241582576951,-4.10300368587047,-1.7082843774407,-2.43644996269643,-2.53281845444085,1.92051391993592,-0.0765474035060689,1.60287818999326,-0.484901720024071,3.75083238626015,1.14727072767643,-0.0301685611034201,-1.66854303056552,-5.52581959182569,-3.03478842787926,-1.44016366655733,0.898863931163821,0.150936913411882,-2.84415766058223,1.41309641807674,-2.19249169987643,-0.62988660432605,4.5278577326279,,,
1.2,1.3,2.83869893875188,-4.10907238130391,2.09574727390126,0.606857359697584,3.49239284220778,3.30456550602594,0.546672902910804,-1.44254872491866,1.24184645982262,1.44693360483477,0.599338208233538,1.57645377635247,-2.50143646969459,-0.243935769825188,-0.223406358455314,0.216377460237278,-2.03156658039766,1.66365679078492,-0.770769965581541,1.78289590722595,-2.30484790168524,-4.08385133217365,1.71014075191883,1.97464009882288,2.46124729571871,2.77208305150849,1.07295296288269,-2.04231410601069,2.62795861579049,-1.78239075603147,1.87633825065428,0.529538705968275,0.453620570662779,-2.40147617168371,-2.71752861171083,0.200625727951212,-2.17597746621015,0.516259286356495,1.19966048702541,1.57952390309727,-0.27102194928997,-0.931738839560132,-2.14619202807606,-0.707153693060139,1.84677933563161,0.760001180227281,-1.9830791581216,0.702052828271839,0.238177144117116,-0.622493459299261,,,
1.3,1.4,0.555751358439945,-2.38202472767864,-2.5374263593009,-0.668202304854171,0.460100676574187,-0.468381646864945,-3.14175970014952,2.59508399671427,-2.1636104727435,3.2015653434026,0.996379591348406,1.29034980481803,-1.01449313948565,4.13101071641878,0.746477773437528,2.67476274247404,1.64519247767868,0.368970054327677,-4.07664230697739,-1.83764605017084,9.18832855645467,5.16014230624288,1.45248686878921,-0.776861944410294,1.32987372892995,0.439452988986878,1.02452951447159,5.22593777208589,-0.304641461822068,-0.986507095790607,0.0981512605340924,-1.35029669565622,0.0099829983298233,-1.47368672538286,4.25421420892833,1.05443042597449,-1.65613790933755,2.98531820395854,-1.61579611561761,-1.61584959582512,-3.05915206957465,0.171499849562224,3.18424620169122,1.67412084797257,0.493112633827945,-2.53382502823378,3.36003748293486,1.68616378568491,-4.62782463244664,-5.06452631747941,,,
1.4,1.5,0.725609180412714,2.15340088045979,0.312438496055849,-2.79541909155967,0.266136430579753,-0.296658418348459,1.25094970669959,1.98841534699095,-0.20356849893254,-1.01301516249052,0.14658543837751,1.55728052430123,2.14359139714842,-0.924509335865053,2.57332163112923,0.841364857115575,1.74952560279345,-0.798187414539234,-1.58230032535238,1.12690198287515,-4.48092799955653,-1.56496320500463,1.04759575280675,3.93739240958469,2.48962138973262,-0.322621445521173,-1.11320984336191,-3.43070160902344,0.647523942010786,-3.43098882142036,-0.184620378606986,1.83250535956895,0.946799389445305,-1.22878351100888,-1.55605224522125,0.891889919197199,-1.60547887211236,1.11724886038631,-0.990609385659061,-1.6435084128692,0.536852399226953,1.11404523700155,0.987738670119397,0.759006399041441,-1.73816815681788,0.92951475199042,-0.105823241600692,0.274242055837412,1.22289414504949,-0.653786799794155,,,
1.5,1.6,0.651725771835592,2.79369621485552,-1.37687441806266,-0.407487663410837,1.62489500501172,1.2203757596244,-1.84909310478014,-1.24107264872941,-0.880668115945116,-2.94584540053303,-0.0799874045010337,1.6562651670194,2.22229929432724,-0.0454283749717774,0.4360705392719,0.438710836310926,0.548796483100254,-0.209581665775903,-2.67667297251137,-1.68993432209153,0.449957629732672,-1.5715535560288,2.8493908122811,0.38551226507793,1.3392989543818,-3.4408083716611,2.25423993707932,-3.31090080586337,-2.47061164324379,2.22703096525324,-2.17637284653793,3.60066284954513,1.78645711931948,0.0592741235546194,-1.06488789593085,1.29491418427606,4.26288588784497,1.62340178464192,-2.67013193416794,2.7416015538228,-0.170232652373118,0.0338503654648348,1.23148477084599,-1.42045160925335,-1.64494945478888,-1.3710753937353,1.26227327101454,2.37569192804425,-0.241378082718342,-0.94141566584387,,,
1.6,1.7,7.39921973166246,-0.695323549222931,-1.29022376196738,-2.46132709002258,2.60794080383602,4.16004576975047,2.61058144706203,-0.305688389239895,1.37970040402818,-1.93487009859452,5.51417622490348,2.00519019723876,-0.118353364826195,-0.0453841153231959,0.007609924278713,5.44662603392165,0.543699734132417,2.28939840621075,-2.07516963857466,-4.84259659482211,1.59314698493873,-3.44267186897438,3.28670840577811,2.72752969322703,1.20215577661964,1.28109449622157,-0.153558241469811,-2.25831181023467,-0.401765452800865,-2.40258042778156,-2.34908665568599,-0.0227078048695048,2.03449114924152,-4.32010175839527,3.96501438479819,2.54423985445574,-1.64189946684155,2.0845653373771,-5.50125722921213,-2.6875591289533,-0.163407238610649,-1.4322659342638,-1.81300446632046,0.766094802683155,-2.84656208836804,-2.8301943914545,0.81803966540716,1.63212174935272,0.642463660458146,-1.31059906341514,,,
1.7,1.8,2.40588037434168,1.33039783843917,-0.676884441898234,3.9034250403503,0.026080009366245,-1.41498941047684,-1.52539331129802,-0.136692793413889,1.78515476396359,-0.272110467927108,-1.03913869112042,-3.95328513920296,3.54706744419001,-3.07232325418042,1.03550145860662,-1.30510608569039,0.0831224719320189,0.230952532086129,0.61680831948405,-0.468731010887522,-1.13055337796658,-1.73055994221095,-3.63352006608614,-0.663598602388298,-1.24460303435534,-1.51121672205882,-1.52637907376702,-1.02550969078375,-2.73998732974856,-3.02420915791703,-0.489561390404151,1.03685012920996,1.87847392838446,0.142937530346172,1.58136094353528,0.389288448399853,2.10611093909263,0.998352265479031,-1.1842648634099,-0.399779712744055,0.755589774348053,-3.18101225183453,-1.19040645637607,2.88257675019185,-2.24674176658863,-1.70109418681355,0.469551110969173,-1.86120280800877,0.200420492491152,-0.170969679382766,,,
1.8,1.9,-3.20274463724113,0.773874222718237,1.64614599552711,0.721835333507736,3.93709924623571,-2.00023478310303,-1.95375661600176,-1.40683949305642,-1.49533716890984,1.33742901373974,1.68128149808239,-1.48225142349032,-2.82335564183784,0.33677294148062,-0.0705610715199127,-0.654777732293916,-0.588031998074302,1.40917242926869,0.192535954883576,-1.9426264972193,1.54892554113787,1.28606653159581,-1.36745206825355,-2.4752302749925,1.48071387511901,2.49142625711704,-1.24276734358494,2.09266549042474,-0.315042987645562,0.210091625977274,1.81097950695311,0.66454498571702,-0.342790813760022,-2.71740630384103,3.33146589076221,1.06768335060535,-2.86953251056654,-3.82573821243968,-1.90898599885506,0.423860982618232,1.68913491433077,2.43051491805584,2.79440401778651,3.22274031254474,-3.59971157971169,-0.886168034310385,-1.70783582660157,-0.495986090369399,-1.91792586186559,-2.94314750152996,,,
1.9,2.0,-2.17482790458379,0.974048986992111,2.50720655506521,0.310344029426504,3.029771535603,2.32155605830909,0.48961003088954,-0.530501467196968,-2.08815679535763,-0.350817701462446,-3.31879706220302,-0.150101146644014,-1.36761020237915,0.329564642269529,0.151859484582866,-0.731743935703456,1.165150611636,-0.126659476331722,-1.58210143912405,2.40029974000982,-0.419009236387041,0.0205680067575303,1.57698784982093,-1.55636961438757,0.84089664128493,-0.293581864211237,-3.63053421071102,-4.04858738998121,-1.12185579908497,-0.407284882949091,1.02837701828957,0.743307386021124,-1.64124938614129,-2.08445761807348,-0.341657317246554,-1.5775959407046,-3.82624192764141,-3.40074062736046,-0.69097617117135,-1.5099611868015,3.11317230406707,0.944927613389534,-0.369232833938974,-0.267999119835704,-1.75306554143873,-1.34422869796015,-1.65184063468003,0.818604975237236,0.481712426628555,-0.39126962740233,,,
2.0,2.1,1.28588026785764,0.242055191722788,1.83495626173443,-1.22584325351487,-1.86138484726045,-0.334380034388681,0.8602625790677,0.731133600188683,-1.81742354075479,-0.670131845522926,0.565289104407008,2.68240079386625,1.49619270042143,-0.499753614504373,-0.00593603689844963,0.873817777556575,1.1799683982929,0.0149184268034789,-2.74589133068304,0.0552461621863612,-0.364950444572966,1.02773865740661,0.248011258589835,4.58260468125937,-0.372391779435783,-2.46818518706614,-0.321481964868768,0.501854875773063,-0.637713909521712,1.88655870462753,-1.2345376271931,2.37026253643203,0.308162625012256,-1.50321242593588,3.10209565387954,0.84510820105889,-0.0227992859728542,-2.21521586711323,-2.45789968289505,1.13422839398902,-0.358324633085681,1.46115530424515,-1.45661915719781,1.06386101731876,-3.75119702585009,-2.77901860024965,2.57606428491255,-1.85322048316374,0.935566536866204,-4.16964723600851,,,
2.1,2.2,-1.45595302791712,-3.57203754805573,-0.815506112758829,0.86142150987229,-0.988717272063613,-0.222193792429366,-3.246909231049,2.27503038255254,-0.800514907940624,0.549338669325995,-1.05066184625963,2.2746754238737,0.363543280947518,1.40414308206969,1.69945377853004,4.50774994874455,1.20223959405357,1.85909907336244,-3.24469307180972,0.855690588091828,4.21134125625123,3.07879848931523,5.32896722938934,1.21308307493136,3.30547180724902,-0.645243835491161,-1.25337919163304,0.656934943302804,-4.52429465197901,-3.91428393500123,-1.7765716293542,1.20932991970504,-0.916065734657072,0.387133798593019,0.300669078071486,-2.4194646539746,3.36804299408804,-2.70507039359375,-1.36113004172581,-2.6446624915564,-1.1197854645974,-1.15097220537407,-5.33015585932497,-1.29985921367422,0.911327331646307,-0.748876375591805,1.56240555543428,2.16907844970491,-0.879581760650955,-0.210638601845813,,,
2.2,2.3,-0.695316721718133,2.50580067026623,0.342352306956665,2.33122928942166,1.60760484543937,1.02138008510811,0.730546441424613,-2.53420597397529,-1.32657870349675,-1.13265789579094,1.96618304860504,0.872422646185038,0.940954498758207,2.24378699479052,0.900437254658936,-1.85703510573607,1.63183714350095,1.62167299551082,-2.42860493973049,-0.143964202917475,-1.52340629061167,-0.776991798845568,1.59619942360886,-1.63246865731022,1.75258907821379,0.704937339267046,0.719425792854076,0.664391979753537,-3.55102105869637,1.26364997650117,-1.12794438600857,2.53082753575905,0.965734661711472,2.68712386519609,1.9077439192026,0.281828211637222,1.10630018764366,-0.8920498543118,-3.57624944910106,4.38946217311561,1.45722022222272,-0.059683808577177,-0.0477368750044317,0.549688270212891,-3.38423461405594,-2.05080706578523,1.46925421347341,0.454535362381171,0.318459970864058,-1.6960031613442,,,
2.3,2.4,-1.48218346248402,3.46125195708384,-0.492540950627984,0.544057939822881,0.441588335565786,3.0614104944499,2.68628311500204,-0.0609205366504261,-1.34816730109857,0.586755785487694,-2.12285001733083,-1.29086600230877,2.19676698440496,1.73215488305539,-2.01960009109088,-0.147653140741244,3.32641159068301,-2.63336963803951,-4.06356464775544,3.96559046760408,-1.09689674487257,3.33222137623058,1.96872332977963,-2.7590273516545,3.91011613437886,0.86488570904271,2.96669860814855,1.69518563572462,-4.50462178108515,1.83214299806079,-2.58671989049746,0.926054162472394,0.290080416872772,0.432157453004865,1.77388988736588,-1.42785426872192,0.39562249550647,2.93836505217524,-0.212929193357425,3.45185149013537,-1.6509881585105,2.38247652421273,5.33752639489644,2.4995348870182,1.86459611915521,-0.278614333324306,-0.346787033955834,1.31568306109716,-1.81117567687268,-2.25646538895242,,,
2.4,2.5,0.121196347609945,-0.108058453229338,-1.3666297709267,1.3892607096631,1.34190009763646,1.12502341813738,-0.296618515251649,0.27879411233236,-0.816439153232276,-1.96949993946581,-2.42747831788924,4.7028315044458,-1.46991728421293,-0.427530429842848,0.0334335738897268,0.690259265012689,-1.17855121711516,-1.80953763674345,2.66940357202808,0.248849540737759,-0.436439838991066,-0.164186270492,1.86888985765844,2.23653385611028,4.49797980722596,0.12562140059158,1.84491658206054,-0.800392272296285,-1.97833407142157,-0.549403080053561,-1.02855491676895,1.36142389318909,0.66518185389273,-0.592651963070647,0.516351315343134,-2.30678657498335,0.563760065966653,0.74199760084777,-0.384324496484074,3.58348600543669,-0.460634439449161,-0.476830571512249,2.4166886084528,-1.78011883548886,-2.39448292644583,-1.7111715521367,1.14180574890064,0.908482436809666,-2.01868172029746,-3.16647407435079,,,
2.5,2.6,2.87546766905874,-1.30621499151423,-1.34661732751893,-1.36477619357409,-1.14264820521448,-2.76989640927341,1.75272335939491,-1.42290480691446,3.44702211675669,1.63575852594528,-0.219423869291532,2.95260236961516,-1.52950658409964,1.49781395101231,-0.236524245808489,-0.130862990057083,3.51966699095968,-0.760070063174663,-0.834352893691635,-2.4472013266978,3.01089708386508,3.07663634302213,0.752187570783965,2.13915330505701,1.66827897714483,-4.248919790756,3.49420800023391,-2.87734173773384,-1.94597630889998,3.14981680240701,0.329600611802459,-1.36025568469886,3.3539302366922,-1.83370150017945,4.12060945090974,2.03738381934561,-0.629698384798938,-0.874529807846123,-0.282191544097119,2.49092623890012,3.05137031056639,-1.86297566587833,2.23949538329493,1.61619728021969,-1.41911081102793,-2.81122776182811,-0.666640273773287,2.11188821571898,-1.72807196192256,0.534916148176379,,,
2.6,2.7,-2.58291541319657,2.05575680453866,3.64848138591017,-3.73352121598204,2.2721524226842,-1.67855353426209,-2.13432596021327,-1.45831823264329,0.267296279878805,3.24220577672824,-0.876541076455338,-1.06872394889996,-2.54121051975109,-1.04476560014838,1.26399824950922,-4.32479028809923,-0.423320959939235,2.4181007249442,0.4129004490422,-2.85007271867082,2.52086714873968,2.66432472631436,2.54842559392743,-2.40185417451743,0.739285109692632,-2.56275345143781,-3.29173741829593,-1.22457811421248,0.0585742373572882,-1.1726843274996,2.19035019714661,2.08526827075641,-1.60798078443537,-0.584378392553168,0.697340757464979,-3.1631673300676,1.35766554627518,-4.40113543117786,-1.39745361783941,-3.28078913191396,0.382828683839479,4.45045035917699,1.09593532158843,0.399900943441046,2.35216869758084,-2.33962412450393,-2.92480688421603,1.60065194914302,0.93781145842988,0.753682873805719,,,
2.7,2.8,0.932683340169992,1.47837502134545,-2.56389985042069,-0.440880535582118,0.475992112863668,2.21235932891905,-1.90444022064287,-3.21361622547755,0.482668890801513,-2.45602656825286,-0.505301555242597,-3.49049163558378,1.92799486795625,0.997938162955951,0.0599281719905099,-1.34507967471535,3.82189376781025,0.331007670209716,-2.15741572597535,-1.75784318568333,2.81608741183253,0.630516851311377,0.831992923949784,-0.188173170589422,2.26677323326173,2.27376676907206,-0.460479070446479,0.169525480609984,-4.21932639654056,0.751329606664413,-6.80415308223362,2.23935803109211,-0.018765074753383,-3.26038991970702,2.66257612320678,0.854879371150657,3.80768716172088,-0.569740539684696,-2.05031634316988,1.14116335233794,-0.0624477988921045,-1.66043953096112,2.11647821477234,6.31731006084865,0.282713522222256,-3.88822044598149,-1.06386227797414,-1.07341330181575,1.24947512857584,-2.01099874124951,,,
2.8,2.9,-0.190764871534067,-0.832683595775219,4.48165218241009,-0.691791576828947,1.18005190384955,2.70038942918774,0.607385090498741,1.07954507259054,-3.16675865840481,0.243219872351482,3.31759476703298,2.98499171203703,-1.59474356678471,1.98261676185004,1.33239950083889,2.09045293925977,0.165482827752169,3.27115733639514,-1.75444622984331,-2.88058232695821,-1.8091418529978,-4.04848130509037,1.75778297768681,-1.5540361341628,0.283874786720228,3.14614180738661,-1.35698609171216,-0.232826073905957,-1.59728751176671,-4.13432866851944,2.69735945545562,2.10283068399961,1.56835473170226,-3.09600323401495,0.373272038971625,-0.368765506251781,-3.61270397621319,0.398525474873015,-3.1488522568666,-4.15482879074718,1.48371969785945,1.25791651679408,-3.31853535809201,1.88390872396579,-6.66250342209356,1.1141688428176,-1.98675173049563,0.0550567031742593,1.17527707100265,-0.408929415222566,,,
2.9,3.0,2.07584718231275,1.22002900362819,-0.793861217166859,-4.33305743455819,1.80364355654205,1.2054011245442,0.617079862963498,0.702664451418367,2.46513448392998,0.373017728171608,2.36993975046339,2.32330921888993,1.44658011375259,-3.68352563077178,0.0455222200288473,2.00322824264919,1.84810694421118,0.608164656295271,-0.966256589288504,-2.80295614627345,0.826259418959985,1.2844076291427,-1.85315405559947,1.02958262198594,-0.82285382584283,-1.32888373681357,-3.03466250664774,-2.2169339817719,4.88651727184018,0.00293327338421558,-0.615234856142122,1.82602515752514,-0.986413208404311,-3.98866340832859,2.09078820555829,2.01987007944622,-4.36533631131179,-0.772240437726864,-2.73586097516928,-3.38593133263736,2.42187603572045,0.435091844412334,4.01268645130089,0.413454620799435,-3.23150779238356,-0.121342130699243,-2.67511289867455,0.146342750015175,-1.26366106590203,-3.25548100559938,,,
1 Time:1x50 End Time V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: Event Id Event Date Event Duration
2 0.1 0.2 -2.8105715330572 1.97044458445776 -2.25117345900302 -2.77675325596564 -4.22282858289576 -0.728730107287751 -0.131732851290365 3.23812046801923 1.87194312096294 0.0509042820995466 -2.90935563390039 3.43795625693612 -1.32743202763949 3.8467147199148 -1.82018863917555 -1.36195423261369 0.593938250540402 -2.54952409351015 -0.175868239114684 0.50401883279692 -0.716112709508492 -4.10682380182668 0.0882455175640278 1.570217526566 1.6746016187139 2.13928318875744 0.132878113953894 4.41237860071733 2.3168155047397 -2.21781976501155 -2.44112900600351 -0.104452294200763 -0.773750302848905 1.65799007451332 -4.54910403234098 -3.18987869603497 -0.643838919963144 6.03278566607531 3.81082112670311 1.52019407424606 -1.66503431554912 -4.67716077003471 -0.307195357516731 -2.79758638051557 1.35403525166371 1.41842144044514 1.59365203345603 -3.91180899655509 2.61716637984177 2.7363702888213
3 0.2 0.3 2.25856479866076 -3.49853226072837 -0.204747634265671 -3.123651935946 1.32269874452053 -0.045246441431997 0.826989491779179 3.57231405076905 0.157685681320851 -0.785867067767291 3.98778104233212 0.47721614309732 -0.273763205878514 0.824947712507762 -0.727107039939137 0.509710542052856 0.432551955289065 1.53328644287134 -2.2172295385466 -1.14765359725631 0.185969502641448 -2.39861199956817 1.38897527789934 2.06245070219219 1.80779257171327 -1.93473494853549 -1.98187339671248 -4.30650653667619 2.45822371424924 -1.3921074151963 0.0372807168892847 0.246795943961955 -1.29489560034757 -2.98251767778177 1.0344437952679 4.48603532474317 -1.72960192058539 0.461554531572219 0.721970839888233 -1.02068312273811 0.963181417175223 -3.79292757071271 0.761099359957011 -1.55491887600319 -0.452570408436559 -0.146906581768742 -1.93106207104724 -0.457600143698669 1.07622796765881 -0.554860828645116
4 0.3 0.4 3.98271705203809 -2.19811608631682 -2.1272346934832 -4.15505507189997 -1.06351972345606 0.156350653104381 3.10390611504748 3.4577709548516 1.36596164016536 -0.876084740407852 2.03353697983148 1.6203122010471 -2.20077388312022 1.81588733006304 -1.1236658015585 1.74698940603952 1.41380534324175 -1.03472179830907 -5.01422644462888 -2.34951517958835 3.66846562862928 -1.64138661588594 -0.389487814237493 -0.77351281712287 -2.13397549783302 -2.21313548827122 1.89385059590299 -2.62307428860125 2.33581002613165 -0.683017994176775 2.30054191521104 -0.993874634899022 -1.23055222002998 -4.84295369928031 1.50317829886755 0.797955787551626 -2.91779452963703 2.18382394900967 -0.211129040842678 -2.20480379998498 1.05807079707262 0.442964608661533 -0.894842081976626 -1.68766394511601 0.636103400816211 2.05854951816596 1.19045045798009 -2.11288470560948 -3.0233443960854 -2.23276966075083
5 0.4 0.5 -1.17123394261144 1.56266409361991 -5.75684621310878 -3.27311883849878 -1.49936701447769 1.67428766519967 -0.751928437348566 -1.59207698422662 -0.913676313905993 -5.80665618290006 -1.31335302117651 -6.08103845207449 0.883650223159432 -1.44746163612749 -0.984476573506612 1.90935067132634 0.547599462132903 -1.35089088234226 -1.18914071103552 -1.23626613899387 0.540308505900391 -1.5652666538784 3.10367078122746 1.27949840246372 -0.725315728611452 4.41371403560844 -0.0941457384539908 -5.60478407683596 0.266378731150281 1.8900311024272 -0.941983647969998 2.26301522311613 1.2668601814492 0.533375859527004 0.713642842458907 2.84239664303946 2.0904637170955 2.99967287920232 -0.061431830618343 -2.49172764650727 -0.44792560342362 -1.50500892753702 3.29497898594663 1.33328104708473 1.38389613749 -2.36872695837441 1.95739718108967 0.112831906968402 0.0875822236921859 -1.26059900856129
6 0.5 0.6 -0.691247835099285 0.35996239578975 3.72856536111607 1.3095821399835 -0.192335263199433 -1.74440017537381 -5.2325370637816 -4.5354085867458 -0.289846498200247 2.75928482075316 -3.81463586270434 0.238113238131077 -2.94192509811481 -1.14056121237894 2.4696485347111 -3.55346297492856 -2.77505338982254 0.377538094414719 2.04356990495184 -0.476353207374357 2.06180654461382 0.785941061962911 4.16103196784365 0.649447629480342 4.55573479309417 -0.70719113064945 -1.16211165037149 2.14789207417241 -4.26600318248493 -3.08023629234495 -1.72775893942949 1.0349789891197 2.25218453237596 0.568962494959985 0.204608890163155 -3.8260925894879 4.2583197972008 -2.03384851730742 -0.7835817765404 -0.947556618147915 -1.76778945090148 0.12159982825841 -2.75734737864209 3.17774885950749 2.41334219641258 -6.06417185221909 -1.8454115223381 1.65243260991619 1.13925836274113 3.11635886675106
7 0.6 0.7 -0.75469594624195 0.277343480909411 -3.1636484573233 0.269002296814459 1.23823363844859 0.0930367535985796 -3.9845686942331 0.99730312897028 0.174687065123597 -1.38723558312686 -3.15866226239419 -0.111147547774084 -0.646508789590673 3.26908929138036 -2.10374571303398 -0.129499535867985 0.00920667326941993 1.8441735131152 -1.16913550437466 1.48330673764097 2.54663374176198 2.57550509917293 2.49665653618342 -2.02027283311533 2.68460899674504 1.77754912007238 2.1977518373163 -0.756515811157936 -0.752451827155607 0.778742298490477 -5.00762792946691 0.236043923049721 4.27956735453061 -2.41057475241384 -0.768662997319675 -2.04401085234801 2.75855960423778 -0.340242190891457 1.82678981424863 2.20565473039744 -2.96994068191173 -3.62966732095131 -2.76300680262596 -0.815348420401293 0.996291282202418 -5.08422721374475 2.75835523156865 -2.59055871406729 1.54681587683948 -0.6755499067224
8 0.7 0.8 0.65651046080783 -0.426811813020632 -1.27303253891505 -3.00885024186743 -1.1946822047483 2.029884867178 -1.78260059201804 1.31070297837884 0.858616942720236 1.27851484579747 -0.088707743833295 -0.0913789344242943 1.15074849398106 2.79518758083919 -3.41755619582524 0.912217609339767 1.52089973412281 1.48236340692864 -1.98030834507565 -1.49778400009765 4.09357289038769 0.503035444580094 -1.08678696370095 -0.900368815495746 -0.66528273447498 -1.02244076034782 -0.684245024852757 1.35853819221209 1.28055291730888 0.17381734572867 -5.72824052807078 -1.51247653309703 2.51443335786332 -1.67631850267937 0.304470774157041 0.291468141091596 0.159318948794085 1.46952680188977 -0.430479543495719 -1.43442327098508 -2.53171639182582 -1.50103059883364 2.80143890875172 -1.23149564747545 -0.200945108374293 -1.47865850182882 3.40999800364323 -0.189847162108051 1.31516281465757 1.86243645208503
9 0.8 0.9 1.46460867610958 -1.49477111598966 -1.97071051223149 3.34503243843136 0.216045380474084 -1.38054836097643 -1.18926155021276 1.58280716598142 -3.2522551983989 -1.33570609580013 -0.199585777875705 1.30739319220861 1.22307437656635 1.28456382308241 -0.725947804108099 3.31571671019217 -1.22737032728076 -0.868881508621964 -1.2422592721294 -3.28637889860691 2.14064522726149 1.57975502572686 2.15190758666344 4.82350344346956 1.82477255827722 -2.57428674502732 1.61505914955868 0.312213335313871 -1.49465280461993 3.34818297213971 -4.75605714075815 -0.0404034610890573 4.0977040381511 -3.51520295138231 1.79291040966315 3.20783033440413 0.15782207398605 1.61426471927668 -2.24059831228095 -0.496650417379842 -3.0925896828248 -2.66799338104973 1.13571372821778 -0.950916872411329 -2.95087780744659 -2.17630449777817 0.70079437125197 0.534384220843388 3.35852849234982 -0.608448198074922
10 0.9 1.0 1.54648622091098 0.610416710732742 -0.655157807669775 -1.8563415221732 1.20697381422682 2.4480340290493 -0.907959644908824 0.129307677878469 -0.485060975837386 2.1272760657214 -0.206233760269315 -2.88013869657892 -3.59465500044503 3.63597265491814 2.55951651783495 2.52421128422679 -1.06147013867897 -0.116388265092203 -1.90813701607482 -2.67647157136635 1.58848760158363 -1.99741579574876 3.10060717795274 3.75032660151804 2.1853235444508 2.88227131411482 -1.77009490361947 0.955234614316146 -2.1212687388531 -0.144629256010725 -2.99577734771928 -0.941715199200326 4.86893875570262 -2.29249542879953 0.387089555877114 -0.152259516980132 -2.34828961030103 0.447723687352788 -1.47945473788336 -1.16806190686824 -3.10152625351283 1.35588786835852 -0.0672166407663362 1.14045322745097 0.949832763087217 0.134050690965881 1.13113588581846 3.26950687798222 1.46910013398604 2.88185352313814
11 1.0 1.1 0.412548674966722 -1.75352041257501 -1.21841087637463 -0.00210429161672981 2.29633195111569 2.20448449548543 0.580557159447253 0.678191658712035 0.730977484381622 0.685330294197169 1.27484902309455 0.353892132669408 -3.70642431577221 3.86252449424315 1.05600212010077 1.01293777656738 1.76203544350132 -0.628319406461999 1.02450800039242 -3.22326390613028 5.85097588704723 0.537030130000432 0.837903044217678 -1.39299644137185 -1.69305324354949 -0.221998000343763 -3.72463422965969 0.630340258140646 -3.44505148366852 -3.77203469072097 -5.58125415389162 -3.45229159846523 0.29308788400517 -2.86879803398118 4.50973229119948 -0.905414610529336 -3.43044863553659 -0.699749644515564 -4.29491049577396 -0.9266611339983 -0.443119083279365 -0.196604547740539 1.76413028876312 3.80476887958539 -2.34947666703353 -0.621479397013964 0.462227210772041 2.70108740966535 -0.724827507896309 2.39883673765848
12 1.1 1.2 1.7158474115172 -1.11407359505675 -0.867814052370603 -0.185779264871818 -4.48822812275538 -2.56596517645758 -5.63320279778413 -0.338065796354731 1.58715856491674 -0.919645420360434 1.83921061064595 0.341252980343316 -2.02140258523139 0.265722874969387 1.87576029732289 1.35709498003436 -0.474780548059455 0.0639095616887276 -2.14450483371912 -1.11734898176555 3.16152385534152 -2.20181856663677 0.244723112338881 2.37250829851378 -0.835498556833158 0.109746453938632 -2.69948485904786 2.52241582576951 -4.10300368587047 -1.7082843774407 -2.43644996269643 -2.53281845444085 1.92051391993592 -0.0765474035060689 1.60287818999326 -0.484901720024071 3.75083238626015 1.14727072767643 -0.0301685611034201 -1.66854303056552 -5.52581959182569 -3.03478842787926 -1.44016366655733 0.898863931163821 0.150936913411882 -2.84415766058223 1.41309641807674 -2.19249169987643 -0.62988660432605 4.5278577326279
13 1.2 1.3 2.83869893875188 -4.10907238130391 2.09574727390126 0.606857359697584 3.49239284220778 3.30456550602594 0.546672902910804 -1.44254872491866 1.24184645982262 1.44693360483477 0.599338208233538 1.57645377635247 -2.50143646969459 -0.243935769825188 -0.223406358455314 0.216377460237278 -2.03156658039766 1.66365679078492 -0.770769965581541 1.78289590722595 -2.30484790168524 -4.08385133217365 1.71014075191883 1.97464009882288 2.46124729571871 2.77208305150849 1.07295296288269 -2.04231410601069 2.62795861579049 -1.78239075603147 1.87633825065428 0.529538705968275 0.453620570662779 -2.40147617168371 -2.71752861171083 0.200625727951212 -2.17597746621015 0.516259286356495 1.19966048702541 1.57952390309727 -0.27102194928997 -0.931738839560132 -2.14619202807606 -0.707153693060139 1.84677933563161 0.760001180227281 -1.9830791581216 0.702052828271839 0.238177144117116 -0.622493459299261
14 1.3 1.4 0.555751358439945 -2.38202472767864 -2.5374263593009 -0.668202304854171 0.460100676574187 -0.468381646864945 -3.14175970014952 2.59508399671427 -2.1636104727435 3.2015653434026 0.996379591348406 1.29034980481803 -1.01449313948565 4.13101071641878 0.746477773437528 2.67476274247404 1.64519247767868 0.368970054327677 -4.07664230697739 -1.83764605017084 9.18832855645467 5.16014230624288 1.45248686878921 -0.776861944410294 1.32987372892995 0.439452988986878 1.02452951447159 5.22593777208589 -0.304641461822068 -0.986507095790607 0.0981512605340924 -1.35029669565622 0.0099829983298233 -1.47368672538286 4.25421420892833 1.05443042597449 -1.65613790933755 2.98531820395854 -1.61579611561761 -1.61584959582512 -3.05915206957465 0.171499849562224 3.18424620169122 1.67412084797257 0.493112633827945 -2.53382502823378 3.36003748293486 1.68616378568491 -4.62782463244664 -5.06452631747941
15 1.4 1.5 0.725609180412714 2.15340088045979 0.312438496055849 -2.79541909155967 0.266136430579753 -0.296658418348459 1.25094970669959 1.98841534699095 -0.20356849893254 -1.01301516249052 0.14658543837751 1.55728052430123 2.14359139714842 -0.924509335865053 2.57332163112923 0.841364857115575 1.74952560279345 -0.798187414539234 -1.58230032535238 1.12690198287515 -4.48092799955653 -1.56496320500463 1.04759575280675 3.93739240958469 2.48962138973262 -0.322621445521173 -1.11320984336191 -3.43070160902344 0.647523942010786 -3.43098882142036 -0.184620378606986 1.83250535956895 0.946799389445305 -1.22878351100888 -1.55605224522125 0.891889919197199 -1.60547887211236 1.11724886038631 -0.990609385659061 -1.6435084128692 0.536852399226953 1.11404523700155 0.987738670119397 0.759006399041441 -1.73816815681788 0.92951475199042 -0.105823241600692 0.274242055837412 1.22289414504949 -0.653786799794155
16 1.5 1.6 0.651725771835592 2.79369621485552 -1.37687441806266 -0.407487663410837 1.62489500501172 1.2203757596244 -1.84909310478014 -1.24107264872941 -0.880668115945116 -2.94584540053303 -0.0799874045010337 1.6562651670194 2.22229929432724 -0.0454283749717774 0.4360705392719 0.438710836310926 0.548796483100254 -0.209581665775903 -2.67667297251137 -1.68993432209153 0.449957629732672 -1.5715535560288 2.8493908122811 0.38551226507793 1.3392989543818 -3.4408083716611 2.25423993707932 -3.31090080586337 -2.47061164324379 2.22703096525324 -2.17637284653793 3.60066284954513 1.78645711931948 0.0592741235546194 -1.06488789593085 1.29491418427606 4.26288588784497 1.62340178464192 -2.67013193416794 2.7416015538228 -0.170232652373118 0.0338503654648348 1.23148477084599 -1.42045160925335 -1.64494945478888 -1.3710753937353 1.26227327101454 2.37569192804425 -0.241378082718342 -0.94141566584387
17 1.6 1.7 7.39921973166246 -0.695323549222931 -1.29022376196738 -2.46132709002258 2.60794080383602 4.16004576975047 2.61058144706203 -0.305688389239895 1.37970040402818 -1.93487009859452 5.51417622490348 2.00519019723876 -0.118353364826195 -0.0453841153231959 0.007609924278713 5.44662603392165 0.543699734132417 2.28939840621075 -2.07516963857466 -4.84259659482211 1.59314698493873 -3.44267186897438 3.28670840577811 2.72752969322703 1.20215577661964 1.28109449622157 -0.153558241469811 -2.25831181023467 -0.401765452800865 -2.40258042778156 -2.34908665568599 -0.0227078048695048 2.03449114924152 -4.32010175839527 3.96501438479819 2.54423985445574 -1.64189946684155 2.0845653373771 -5.50125722921213 -2.6875591289533 -0.163407238610649 -1.4322659342638 -1.81300446632046 0.766094802683155 -2.84656208836804 -2.8301943914545 0.81803966540716 1.63212174935272 0.642463660458146 -1.31059906341514
18 1.7 1.8 2.40588037434168 1.33039783843917 -0.676884441898234 3.9034250403503 0.026080009366245 -1.41498941047684 -1.52539331129802 -0.136692793413889 1.78515476396359 -0.272110467927108 -1.03913869112042 -3.95328513920296 3.54706744419001 -3.07232325418042 1.03550145860662 -1.30510608569039 0.0831224719320189 0.230952532086129 0.61680831948405 -0.468731010887522 -1.13055337796658 -1.73055994221095 -3.63352006608614 -0.663598602388298 -1.24460303435534 -1.51121672205882 -1.52637907376702 -1.02550969078375 -2.73998732974856 -3.02420915791703 -0.489561390404151 1.03685012920996 1.87847392838446 0.142937530346172 1.58136094353528 0.389288448399853 2.10611093909263 0.998352265479031 -1.1842648634099 -0.399779712744055 0.755589774348053 -3.18101225183453 -1.19040645637607 2.88257675019185 -2.24674176658863 -1.70109418681355 0.469551110969173 -1.86120280800877 0.200420492491152 -0.170969679382766
19 1.8 1.9 -3.20274463724113 0.773874222718237 1.64614599552711 0.721835333507736 3.93709924623571 -2.00023478310303 -1.95375661600176 -1.40683949305642 -1.49533716890984 1.33742901373974 1.68128149808239 -1.48225142349032 -2.82335564183784 0.33677294148062 -0.0705610715199127 -0.654777732293916 -0.588031998074302 1.40917242926869 0.192535954883576 -1.9426264972193 1.54892554113787 1.28606653159581 -1.36745206825355 -2.4752302749925 1.48071387511901 2.49142625711704 -1.24276734358494 2.09266549042474 -0.315042987645562 0.210091625977274 1.81097950695311 0.66454498571702 -0.342790813760022 -2.71740630384103 3.33146589076221 1.06768335060535 -2.86953251056654 -3.82573821243968 -1.90898599885506 0.423860982618232 1.68913491433077 2.43051491805584 2.79440401778651 3.22274031254474 -3.59971157971169 -0.886168034310385 -1.70783582660157 -0.495986090369399 -1.91792586186559 -2.94314750152996
20 1.9 2.0 -2.17482790458379 0.974048986992111 2.50720655506521 0.310344029426504 3.029771535603 2.32155605830909 0.48961003088954 -0.530501467196968 -2.08815679535763 -0.350817701462446 -3.31879706220302 -0.150101146644014 -1.36761020237915 0.329564642269529 0.151859484582866 -0.731743935703456 1.165150611636 -0.126659476331722 -1.58210143912405 2.40029974000982 -0.419009236387041 0.0205680067575303 1.57698784982093 -1.55636961438757 0.84089664128493 -0.293581864211237 -3.63053421071102 -4.04858738998121 -1.12185579908497 -0.407284882949091 1.02837701828957 0.743307386021124 -1.64124938614129 -2.08445761807348 -0.341657317246554 -1.5775959407046 -3.82624192764141 -3.40074062736046 -0.69097617117135 -1.5099611868015 3.11317230406707 0.944927613389534 -0.369232833938974 -0.267999119835704 -1.75306554143873 -1.34422869796015 -1.65184063468003 0.818604975237236 0.481712426628555 -0.39126962740233
21 2.0 2.1 1.28588026785764 0.242055191722788 1.83495626173443 -1.22584325351487 -1.86138484726045 -0.334380034388681 0.8602625790677 0.731133600188683 -1.81742354075479 -0.670131845522926 0.565289104407008 2.68240079386625 1.49619270042143 -0.499753614504373 -0.00593603689844963 0.873817777556575 1.1799683982929 0.0149184268034789 -2.74589133068304 0.0552461621863612 -0.364950444572966 1.02773865740661 0.248011258589835 4.58260468125937 -0.372391779435783 -2.46818518706614 -0.321481964868768 0.501854875773063 -0.637713909521712 1.88655870462753 -1.2345376271931 2.37026253643203 0.308162625012256 -1.50321242593588 3.10209565387954 0.84510820105889 -0.0227992859728542 -2.21521586711323 -2.45789968289505 1.13422839398902 -0.358324633085681 1.46115530424515 -1.45661915719781 1.06386101731876 -3.75119702585009 -2.77901860024965 2.57606428491255 -1.85322048316374 0.935566536866204 -4.16964723600851
22 2.1 2.2 -1.45595302791712 -3.57203754805573 -0.815506112758829 0.86142150987229 -0.988717272063613 -0.222193792429366 -3.246909231049 2.27503038255254 -0.800514907940624 0.549338669325995 -1.05066184625963 2.2746754238737 0.363543280947518 1.40414308206969 1.69945377853004 4.50774994874455 1.20223959405357 1.85909907336244 -3.24469307180972 0.855690588091828 4.21134125625123 3.07879848931523 5.32896722938934 1.21308307493136 3.30547180724902 -0.645243835491161 -1.25337919163304 0.656934943302804 -4.52429465197901 -3.91428393500123 -1.7765716293542 1.20932991970504 -0.916065734657072 0.387133798593019 0.300669078071486 -2.4194646539746 3.36804299408804 -2.70507039359375 -1.36113004172581 -2.6446624915564 -1.1197854645974 -1.15097220537407 -5.33015585932497 -1.29985921367422 0.911327331646307 -0.748876375591805 1.56240555543428 2.16907844970491 -0.879581760650955 -0.210638601845813
23 2.2 2.3 -0.695316721718133 2.50580067026623 0.342352306956665 2.33122928942166 1.60760484543937 1.02138008510811 0.730546441424613 -2.53420597397529 -1.32657870349675 -1.13265789579094 1.96618304860504 0.872422646185038 0.940954498758207 2.24378699479052 0.900437254658936 -1.85703510573607 1.63183714350095 1.62167299551082 -2.42860493973049 -0.143964202917475 -1.52340629061167 -0.776991798845568 1.59619942360886 -1.63246865731022 1.75258907821379 0.704937339267046 0.719425792854076 0.664391979753537 -3.55102105869637 1.26364997650117 -1.12794438600857 2.53082753575905 0.965734661711472 2.68712386519609 1.9077439192026 0.281828211637222 1.10630018764366 -0.8920498543118 -3.57624944910106 4.38946217311561 1.45722022222272 -0.059683808577177 -0.0477368750044317 0.549688270212891 -3.38423461405594 -2.05080706578523 1.46925421347341 0.454535362381171 0.318459970864058 -1.6960031613442
24 2.3 2.4 -1.48218346248402 3.46125195708384 -0.492540950627984 0.544057939822881 0.441588335565786 3.0614104944499 2.68628311500204 -0.0609205366504261 -1.34816730109857 0.586755785487694 -2.12285001733083 -1.29086600230877 2.19676698440496 1.73215488305539 -2.01960009109088 -0.147653140741244 3.32641159068301 -2.63336963803951 -4.06356464775544 3.96559046760408 -1.09689674487257 3.33222137623058 1.96872332977963 -2.7590273516545 3.91011613437886 0.86488570904271 2.96669860814855 1.69518563572462 -4.50462178108515 1.83214299806079 -2.58671989049746 0.926054162472394 0.290080416872772 0.432157453004865 1.77388988736588 -1.42785426872192 0.39562249550647 2.93836505217524 -0.212929193357425 3.45185149013537 -1.6509881585105 2.38247652421273 5.33752639489644 2.4995348870182 1.86459611915521 -0.278614333324306 -0.346787033955834 1.31568306109716 -1.81117567687268 -2.25646538895242
25 2.4 2.5 0.121196347609945 -0.108058453229338 -1.3666297709267 1.3892607096631 1.34190009763646 1.12502341813738 -0.296618515251649 0.27879411233236 -0.816439153232276 -1.96949993946581 -2.42747831788924 4.7028315044458 -1.46991728421293 -0.427530429842848 0.0334335738897268 0.690259265012689 -1.17855121711516 -1.80953763674345 2.66940357202808 0.248849540737759 -0.436439838991066 -0.164186270492 1.86888985765844 2.23653385611028 4.49797980722596 0.12562140059158 1.84491658206054 -0.800392272296285 -1.97833407142157 -0.549403080053561 -1.02855491676895 1.36142389318909 0.66518185389273 -0.592651963070647 0.516351315343134 -2.30678657498335 0.563760065966653 0.74199760084777 -0.384324496484074 3.58348600543669 -0.460634439449161 -0.476830571512249 2.4166886084528 -1.78011883548886 -2.39448292644583 -1.7111715521367 1.14180574890064 0.908482436809666 -2.01868172029746 -3.16647407435079
26 2.5 2.6 2.87546766905874 -1.30621499151423 -1.34661732751893 -1.36477619357409 -1.14264820521448 -2.76989640927341 1.75272335939491 -1.42290480691446 3.44702211675669 1.63575852594528 -0.219423869291532 2.95260236961516 -1.52950658409964 1.49781395101231 -0.236524245808489 -0.130862990057083 3.51966699095968 -0.760070063174663 -0.834352893691635 -2.4472013266978 3.01089708386508 3.07663634302213 0.752187570783965 2.13915330505701 1.66827897714483 -4.248919790756 3.49420800023391 -2.87734173773384 -1.94597630889998 3.14981680240701 0.329600611802459 -1.36025568469886 3.3539302366922 -1.83370150017945 4.12060945090974 2.03738381934561 -0.629698384798938 -0.874529807846123 -0.282191544097119 2.49092623890012 3.05137031056639 -1.86297566587833 2.23949538329493 1.61619728021969 -1.41911081102793 -2.81122776182811 -0.666640273773287 2.11188821571898 -1.72807196192256 0.534916148176379
27 2.6 2.7 -2.58291541319657 2.05575680453866 3.64848138591017 -3.73352121598204 2.2721524226842 -1.67855353426209 -2.13432596021327 -1.45831823264329 0.267296279878805 3.24220577672824 -0.876541076455338 -1.06872394889996 -2.54121051975109 -1.04476560014838 1.26399824950922 -4.32479028809923 -0.423320959939235 2.4181007249442 0.4129004490422 -2.85007271867082 2.52086714873968 2.66432472631436 2.54842559392743 -2.40185417451743 0.739285109692632 -2.56275345143781 -3.29173741829593 -1.22457811421248 0.0585742373572882 -1.1726843274996 2.19035019714661 2.08526827075641 -1.60798078443537 -0.584378392553168 0.697340757464979 -3.1631673300676 1.35766554627518 -4.40113543117786 -1.39745361783941 -3.28078913191396 0.382828683839479 4.45045035917699 1.09593532158843 0.399900943441046 2.35216869758084 -2.33962412450393 -2.92480688421603 1.60065194914302 0.93781145842988 0.753682873805719
28 2.7 2.8 0.932683340169992 1.47837502134545 -2.56389985042069 -0.440880535582118 0.475992112863668 2.21235932891905 -1.90444022064287 -3.21361622547755 0.482668890801513 -2.45602656825286 -0.505301555242597 -3.49049163558378 1.92799486795625 0.997938162955951 0.0599281719905099 -1.34507967471535 3.82189376781025 0.331007670209716 -2.15741572597535 -1.75784318568333 2.81608741183253 0.630516851311377 0.831992923949784 -0.188173170589422 2.26677323326173 2.27376676907206 -0.460479070446479 0.169525480609984 -4.21932639654056 0.751329606664413 -6.80415308223362 2.23935803109211 -0.018765074753383 -3.26038991970702 2.66257612320678 0.854879371150657 3.80768716172088 -0.569740539684696 -2.05031634316988 1.14116335233794 -0.0624477988921045 -1.66043953096112 2.11647821477234 6.31731006084865 0.282713522222256 -3.88822044598149 -1.06386227797414 -1.07341330181575 1.24947512857584 -2.01099874124951
29 2.8 2.9 -0.190764871534067 -0.832683595775219 4.48165218241009 -0.691791576828947 1.18005190384955 2.70038942918774 0.607385090498741 1.07954507259054 -3.16675865840481 0.243219872351482 3.31759476703298 2.98499171203703 -1.59474356678471 1.98261676185004 1.33239950083889 2.09045293925977 0.165482827752169 3.27115733639514 -1.75444622984331 -2.88058232695821 -1.8091418529978 -4.04848130509037 1.75778297768681 -1.5540361341628 0.283874786720228 3.14614180738661 -1.35698609171216 -0.232826073905957 -1.59728751176671 -4.13432866851944 2.69735945545562 2.10283068399961 1.56835473170226 -3.09600323401495 0.373272038971625 -0.368765506251781 -3.61270397621319 0.398525474873015 -3.1488522568666 -4.15482879074718 1.48371969785945 1.25791651679408 -3.31853535809201 1.88390872396579 -6.66250342209356 1.1141688428176 -1.98675173049563 0.0550567031742593 1.17527707100265 -0.408929415222566
30 2.9 3.0 2.07584718231275 1.22002900362819 -0.793861217166859 -4.33305743455819 1.80364355654205 1.2054011245442 0.617079862963498 0.702664451418367 2.46513448392998 0.373017728171608 2.36993975046339 2.32330921888993 1.44658011375259 -3.68352563077178 0.0455222200288473 2.00322824264919 1.84810694421118 0.608164656295271 -0.966256589288504 -2.80295614627345 0.826259418959985 1.2844076291427 -1.85315405559947 1.02958262198594 -0.82285382584283 -1.32888373681357 -3.03466250664774 -2.2169339817719 4.88651727184018 0.00293327338421558 -0.615234856142122 1.82602515752514 -0.986413208404311 -3.98866340832859 2.09078820555829 2.01987007944622 -4.36533631131179 -0.772240437726864 -2.73586097516928 -3.38593133263736 2.42187603572045 0.435091844412334 4.01268645130089 0.413454620799435 -3.23150779238356 -0.121342130699243 -2.67511289867455 0.146342750015175 -1.26366106590203 -3.25548100559938
@@ -0,0 +1,30 @@
Time:1x50,End Time,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,Event Id,Event Date,Event Duration
0.1,0.2,2.41756423308863,-1.70401239595644,0.791729847451285,0.645613889707579,1.11917441900686,-0.177752798768,-0.502323231129607,2.27946077930473,-0.620097027979108,0.237200592861211,0.0614235140029632,-1.17348720105883,-0.357925117766627,-1.63796061515849,0.917322979592683,-0.37833171872684,-0.946119121861523,-0.0503651450477355,-0.409013192293217,-2.04614769290604,-0.399654044524648,-1.14109064360204,0.989314861039603,0.495639145844508,-1.13685436997172,-0.626825600799964,2.50922453214131,1.53860969964381,-0.725461590878397,-1.28921524286806,-1.25706071230653,-3.03884011510721,1.47410400452375,0.0819561326981504,-0.0726196267672344,-1.50559081777541,1.74664432671996,-0.794270918369097,0.047953240677887,1.73699254493474,-2.62826713575325,1.01534561048104,-0.803431439823553,-0.71471177906596,1.18060299534523,-0.794322346919578,0.786606149688323,2.21317519625281,0.285011727658921,-0.850868910204617,,,
0.2,0.3,1.80188889404418,0.315552223608854,-0.262557343411401,1.50045825269355,1.09064026780364,-0.121730539970911,0.43812652908932,-0.523034229650523,-2.24084439581267,0.830347937150517,1.13562332595139,0.500494429219252,2.7482349340849,-2.04509150717098,0.747749245376466,0.909745017984892,-0.11757130812107,0.34959788740953,-1.23615166703237,-0.962361521724509,-0.316579482791706,-2.15681891438129,0.217396498323689,1.14963077925616,0.45710847937624,-0.8491784768972,-0.199441196263061,-0.463154271272553,-0.780671078974483,0.927772277443112,2.22085753515201,0.173035255914104,0.0466857464951015,-2.23192589786752,0.156802490410574,-1.24385666850783,0.994065197710682,-1.1310557055715,1.19025094222507,0.837362802103179,0.074635180422496,-1.9382936377041,-1.73623206073621,0.350917204209175,0.581364553631124,-2.11549024802639,0.075091310820531,-1.59987906951638,0.0804263264426524,-0.903175045614212,,,
0.3,0.4,0.134053583211802,0.0736801397485045,1.35381433181395,0.222143313225455,-0.75615540652887,0.585896104848566,-1.25487765942792,0.0618414485259265,1.12136347313419,1.15103586902857,-2.47540474891527,-0.0267486987367018,2.38995759188258,1.22420774775832,0.350169519590248,0.614336199725246,0.164327360348982,0.706118648266181,0.017764527876496,-2.45963606734507,0.408266243351976,0.499192662808535,-0.154965880654383,0.407760603757424,-1.12462097112783,0.733355721866381,0.0825686379798897,-0.0172780002074716,-1.05483478155031,0.961605145031084,0.504011431147704,-0.23031362553634,0.715156030740589,0.491340264675297,0.870910633389063,-1.38576760545291,1.38532666311733,0.600341172100502,-0.569899583962448,-1.37604736692897,-0.576111195613606,0.486881201184612,-1.78599173287689,0.973587613719928,-2.79205436913732,0.824791999063363,2.69283120653806,0.0885622445383038,-0.55454569217847,0.0419115553038687,,,
0.4,0.5,3.90115375281321,-0.576843586677304,-1.22322026530138,2.2393112250765,0.453301595875585,-0.947102724052319,-0.00634279476540103,1.02464991682588,-0.280551482291064,0.528251543160952,1.09696987922838,0.441769695436964,1.3606920172692,-0.143379233801836,-0.220345613536676,0.858622330768882,1.1254595004879,-1.40443570509893,-0.833433599180464,-0.386850253103523,-1.09025758540741,-0.0511331048601226,-1.700690045554,0.850097256319639,0.956316330592468,-1.10214629428405,0.656517748854216,-0.0273847042090798,0.680440019977418,-0.329551663768347,-1.69547266144089,-0.217295520359744,-0.361747049327876,-0.806967833979068,-0.144567005025595,0.515712914667356,1.23407811678742,0.00121636506162939,0.514447404322184,-0.640932521250631,-1.00452312124515,0.687568802825433,0.51765138915709,0.107761745506942,0.508235191756896,-0.210951431667897,-1.33803212964343,0.336138128677005,-0.52523247628906,0.508716885104579,,,
0.5,0.6,2.26390217116451,-1.11463592272539,1.92580963388041,-0.459159911520928,0.885822481928998,0.278584038590067,-0.846951437744313,-0.506883849690481,0.883766555166351,0.950918475131371,-0.241239682802772,-0.41734585303162,0.221022811563535,0.271093819366761,0.493949741422186,0.00328354898697439,-1.39527802298993,0.164774504765728,1.2418703063445,0.519520494733933,-1.28749439877126,0.36102828532919,-0.566770014589174,-0.328233925354516,0.660468829346089,-0.0548298205374033,-0.447993806816061,-1.46872800617216,0.466328029312081,-1.00473991515938,1.45687239177829,1.08409591929311,-0.420261551755275,-1.29127008779562,1.30273374540705,-0.103175281479033,-0.600428434711648,-0.775686160702368,-0.967953544940887,0.465842846859284,2.06030085775973,-1.69420952713817,1.91444788712457,2.19963525743073,-0.447592829097785,0.125523618774679,-2.68795734330282,0.312151306862779,-0.129740420682068,1.01856191637845,,,
0.6,0.7,1.28681920398356,-1.73554129729895,-0.197041094065271,1.23260541291538,0.25942640448246,-0.247257463789772,-0.429863925040663,-0.879770176316215,-1.59061156135753,1.57407287022937,0.950144580297151,-1.13013947143077,0.316832232415441,0.0350104505182429,-0.198904683103634,1.2080507210976,-0.633695774000356,1.17785905881309,2.99481707872686,0.348473904965908,0.887456350739495,-0.0280041788075179,-1.70696967612494,-0.215893371515469,-0.634744466860558,0.668115688647831,-0.0875239839984323,-0.390153017637281,1.7813682669371,1.26933780643966,0.179719027234534,0.576675269856259,0.162452560452856,1.97061540006131,0.709455669205445,1.71279592251747,0.757308119186768,-0.415474760353766,-0.0711510430153657,-0.909962183354922,1.3518334698559,0.176589282814468,-1.05789139292939,-1.60417030737624,2.24555069710889,0.3147718036389,0.511316053526405,-0.092583472608371,0.215447449060973,0.276938935894284,,,
0.7,0.8,1.7143878588671,0.318553319550764,0.7105413822878,1.53929387721496,1.17219403804553,0.914321111147704,0.445074348035177,0.864040919966386,-1.30955461943129,-0.38192639010032,-1.63356859757793,-0.0578335431210713,-0.705976590644803,1.48879996667957,0.906412378740496,1.00635243733724,-0.860068560811214,0.25157523868098,-0.700285646636355,1.63742514597695,-1.44597174367909,-0.334068790556961,0.369935570208775,-2.06508288737651,1.34297495735268,0.509447063069645,0.170816044092557,0.226714523719044,0.745181779363815,-0.969225705128717,-0.177438715283015,0.822982782642091,1.0371944602826,0.577685327764532,1.70813554580091,2.39356091163575,-0.346884726302522,-1.42225821911172,0.500597355279659,0.524234693802535,0.729733076217236,0.47456515128138,-0.660405774073152,0.267060538646901,0.000426531833439704,0.715069562151028,-0.868863424039719,1.48823661679146,-2.31786866819867,-1.45294959225448,,,
0.8,0.9,0.697057441008775,0.698790009807599,0.867820323427383,0.0811664846339576,-1.4472231601051,0.997767154622138,0.76618207296053,0.878651658684913,1.71080398924943,0.929524691395211,-1.44876807504741,0.839031972695844,-1.48805829633174,-0.50845406468288,-0.304523720289152,0.351577492189797,-0.791474627573446,-0.0731064149233324,0.0118503183356555,-0.94940960665759,0.222997198912361,-1.7254389034402,1.36115001780592,1.41274470145576,-2.00017992853741,-0.404570800129302,0.0410800836576833,0.794815690704137,0.93598122103314,-0.0391567604442919,-1.97149287295885,0.101864284607686,-0.550151672011335,-1.36443082486966,-0.225199678538552,-0.439947140031294,-0.435924408967588,-0.692718679506362,0.805440351782625,-0.169890876199317,1.38782563973323,2.92735443147801,0.524445171344603,1.66054859338096,0.402666015005784,0.424174309807325,-0.66521968800587,0.01738015871613,0.361867157614173,-1.37457037615209,,,
0.9,1.0,3.52897644396081,0.422128745354343,1.25248286681702,-0.950703924432279,2.51811470021927,0.187631658327211,0.0294973585186574,1.69556178117789,0.405807897438738,-1.64177540546277,0.275407803221126,-0.11671417338093,0.0581305705766578,0.274108570345926,0.791124732212224,0.172462582908223,-1.14215257394054,0.423134416176203,1.32629897532172,-0.23939890190641,0.011552509015188,0.393634403403334,1.61597385031162,1.25862095079157,1.27679363991336,-0.261622116935512,-0.475755662418219,0.236200319452776,-0.31328170702761,1.02359375302955,-0.221950005364121,-1.34862373561157,0.110497607966458,1.5354393778831,2.10234202132854,0.344538220593261,1.60485808855624,-1.97233422609305,-0.766832367234666,0.480155254082462,-0.324478218471555,-0.376564743260814,1.8236538168715,0.0511160324888412,-0.844828893457091,-0.34538568446893,0.314551576353477,-1.10815772973927,-1.11731920702865,0.46420549167493,,,
1.0,1.1,2.2349303919686,0.574218989497726,-1.27507776210747,-0.691893048210729,1.23889754707696,1.09136200313909,0.903178957417063,-0.0383450493306883,-1.87599757865119,0.507501274578597,-0.443368706120003,-0.378281077195736,0.490810167526783,-0.771969296893111,0.831225714056053,0.547306569799624,-1.34018685039238,-0.334519169731117,0.506179096791726,1.09903254737982,-1.64437042216723,-1.41065404332665,-0.551204541436527,-1.66049829709579,1.11959912640833,0.70196278086534,0.114890097276731,0.495064598951083,-0.849710879875456,-1.39290937328785,-2.20914476764139,-0.414585999149955,-0.0685079983959239,0.201207480854693,0.368934977351352,-0.560360686563783,1.22607205658501,0.41929577282257,0.393460393461204,-0.961312552821879,1.25172263455976,-0.81826950295172,-1.04633627939148,-0.746109258253462,0.352254610503885,-0.867627639226765,-2.6375353545019,1.46592226213751,1.01698508619519,0.107564981881061,,,
1.1,1.2,1.90905608282086,0.16215602902349,-0.35655805663903,-0.523178514593638,0.964899194189744,1.6222753959523,0.219085663684405,1.15426264371121,-1.24502181738719,-0.866076969231395,0.505721545064514,0.715912175667961,-0.987807527481338,0.286521572827326,-0.652235567554811,1.54688229235656,1.52479834913992,0.261306722767349,-0.287643387358626,0.588966783068548,-1.01860474742667,-0.272490554703533,-2.54293342449673,0.663603748421948,-1.90793856071731,0.892296010475099,1.2677764947497,0.102244295534873,-0.192134963445369,1.68534811369718,1.17723504139249,-0.761940422354176,0.0761991779137232,2.16735803291766,0.4448566545144,1.03485896087065,0.227702285072451,-0.563369979998674,-2.04111698127948,-0.143561213814264,1.2523436946126,1.48262069225916,-0.496833366155436,-2.67088622136062,0.213467760508286,0.656874752811013,-0.163930500814305,0.503368907434312,-1.15649235180276,-0.326602268574231,,,
1.2,1.3,1.82817174278505,-0.915740723481944,-1.03397774676955,-0.0393381784441342,-0.786463555009029,-0.491849260938815,1.11102671071298,0.628932722019228,0.200299617640272,1.28377449540738,-0.253027772897481,0.255562390948539,-1.28031501733204,-1.19585660531198,0.586857023188176,-0.400961177593881,-1.17244918888821,-1.0213245830234,-1.27155342814585,-0.792598648327314,-0.493647891138553,-1.06161347607627,0.179951616570891,-1.51078529195779,-0.760922980284442,0.394460954386319,-1.15724508546002,-0.293104407076505,0.434954857926243,1.15827516527076,-2.0390862403136,-0.866199826749087,0.342186941946617,-1.35222657540178,-0.337872950381222,0.90850056534597,-0.617078219759492,-0.02729832872889,0.00600052372204561,-0.770688409385996,-0.822658332586892,-0.785053794646164,-0.326984528190858,-0.191059445623554,-0.169054704183838,0.649927127346464,-0.323827478609514,-0.214716977074725,-0.682253620558535,1.22397511430413,,,
1.3,1.4,2.32236853223443,0.427806931249306,0.0402703488023772,0.113862885576774,0.0754927902472402,2.70406468195407,1.04096994307005,0.64771066009713,-1.85695063630025,1.69570239206156,0.491082605773716,-0.123025225831437,-0.0354374776650886,1.92113962370778,-1.2590573313434,0.00875643793143263,0.376386004283907,0.174125611303642,2.15149411768753,1.65926366577081,-0.487098654381922,-1.7100674664531,0.764500072760924,-0.567933253038316,0.987495990460228,0.00949996883680931,-1.25855902616332,0.809357345422902,-1.62511020616499,0.42269146211559,-0.070708576022989,-0.487328175670994,0.164900621002674,-0.683617816803271,-1.04542000052847,0.724483495811625,-0.228120180148957,-0.115000975380967,0.826195913275038,0.442365448092266,0.135587213557908,-0.109488943016988,0.0309216082549297,-0.698165360098408,0.612867470522679,1.19806990644916,1.38542920455704,-0.379494251426188,-0.731897155098474,-1.35668649190231,,,
1.4,1.5,1.45439547273008,-0.929810951541978,-0.591944576136757,-0.411474639985248,0.289652928461575,-0.253764704019275,2.03654647389044,-0.936592370293857,1.62902125089821,-1.01506182826729,-0.158378237807025,-0.299168462814882,0.508691096423908,-1.41615001234424,0.331446304693132,0.960927520369855,-0.0188706880668929,0.832655068862004,-0.650859111020964,0.679972642521691,0.393631169376017,1.61308504239881,1.3498864827501,0.817367048913504,-1.07304883617417,-0.747468195211896,-0.365260632211411,0.485667789172747,-1.7150830945153,0.587471134281994,-0.859472136779999,1.85745130601475,1.16221951542599,0.427722140784601,0.263307588505152,-0.217164070073997,1.33534523533395,-0.600663931025257,-0.15425051251824,1.61929892116195,-1.84832764639647,-0.675788199193317,-0.803409264963564,-0.437313747732349,-0.765909210679953,-1.30827477420875,2.14311433473649,1.31143432968157,-1.4266078787346,1.65668499033972,,,
1.5,1.6,0.595521266870661,0.670827444340013,0.822349032920016,1.48671063767886,-0.20591879343225,0.583029392512904,-0.484613644765427,-0.614161729978392,-0.679100407713575,1.76315303217649,-1.17014896754858,-0.86726463730375,-1.33529480977493,-1.21221300830339,2.58447799745804,-0.248351350386802,-1.98327524911415,0.568963822015204,1.49249573377712,-0.72091582182537,1.81381156530344,-3.01314816868743,0.152853800008917,0.117622027015652,0.278507598597378,-0.0184210704865948,0.183121169493893,-0.575401221633333,0.427227245715667,0.49782259523041,0.0121123765173689,0.0605642365961841,-0.714177967040767,0.634344450459318,-1.87727132746797,0.0952605631767785,0.231143650290242,-0.641723073845394,1.23774853664246,-0.65590732710293,-0.0412916456639285,0.679248067992509,-0.38198476499436,0.526950080954531,1.89759407362439,-2.31203317081741,-1.42377201016702,-0.689755443820253,-0.18622422267855,0.965931525511026,,,
1.6,1.7,1.89979409534188,0.114201731029458,2.11093333569011,0.462634950869365,0.802017284993703,0.45514125342449,-0.741147770239103,0.301082308780641,1.09083469426141,0.679739573634555,-1.30511622720764,-1.12831998478253,-0.709779255952854,0.786495319085328,-1.32696869643567,0.279463547951855,-0.253466304734537,0.252930796714509,1.05907750468596,-0.298027494330392,0.183088883093571,0.779773656314397,-0.158195417336922,1.79688605194308,-1.3838126103276,0.308120164886491,0.606905014035848,0.085984830734963,0.356346802002905,-1.22769019162751,0.373144957964786,-1.87713470192505,-0.171542630218531,0.10405010428406,-0.134565397882384,-1.40524107297725,-0.489312450251409,-0.422137504979368,-0.505231646825649,0.588717173734515,1.05117859910455,0.907752266022308,0.962844639182917,-0.946294028300419,-0.98306249307748,-1.38635130884037,-1.62446697801481,-1.25639807547798,-0.900244784331326,-0.313335627738682,,,
1.7,1.8,0.326093856462409,0.0718318053141033,-0.780989120529917,0.637204898155618,-0.910877969410234,-0.639233538433986,0.0774259505879961,-0.113492051110571,-1.89804390654581,1.56708966843491,0.202586104969294,-1.30215934609719,0.447191335524953,0.00263359948905052,-0.183162806239416,-1.69534204409441,-0.0999978083298749,-0.551192660276627,-0.361905518259104,-0.670312262837318,-1.87386246016378,0.316208011441323,-0.00256785804749727,0.178342041493682,-1.40822528162159,1.04326994172408,-0.292480406483948,-1.47127673416754,-0.0599809240520088,-0.214670559294986,-0.032534147093615,-0.825317796231491,0.717711471846127,-0.202824366243721,0.208381005095076,0.456347108459851,0.164122164540019,-0.377421649056397,-0.453920115194515,0.0955023622260769,-1.79249664781062,-0.583047306936519,-0.270493627569649,-2.04017251810275,0.388453344865416,1.6092844666269,-1.06114066894118,1.26616548498011,0.595967473989876,-0.491718736512471,,,
1.8,1.9,2.49850607542732,-0.0260826570912244,0.0700077723592852,0.32604773433282,-0.337215828267252,-1.47078362042724,-1.27195080354675,0.12978088784109,-3.03846808346853,-0.971348447288014,0.274289225628083,0.162120486399879,-1.66513885211497,-0.305161314181406,0.629718567018265,0.57872289230021,1.18813766954819,-0.503338569277094,0.81626217765867,-0.584970486977983,-1.34298310710332,0.111566420141956,-0.948592939426938,-2.62770679654794,0.335001574178879,-0.467151181788328,0.345335492044936,-1.06596135937543,-1.15411840762396,0.759080521827426,0.188628959777562,1.80321198870907,1.40570504545831,0.50475428027401,0.261269132151034,-1.18302501013173,0.819429246309387,0.135359951198624,-1.68396068163217,1.06503229465112,0.967037280889348,1.42663508424886,0.405490271188921,0.81881808633476,-0.738100260180903,-0.470512553560968,1.90696635564439,0.240714186472695,-0.616643676792083,0.0183787390087662,,,
1.9,2.0,2.06665141514131,0.589269784283709,0.410861099476856,0.239607023122536,-0.428429902516973,-1.32387867673835,-0.436342217523423,-1.31177357968924,-0.57166336986993,0.766187042598625,1.85715937580771,-0.0646796789020885,-0.131612570633307,0.156344942430573,-0.292498182364307,-0.605901957216522,1.80288902912815,0.107614436799477,1.01545574953744,0.235458117756115,-0.560286444234255,1.40477760148376,-0.178458068629514,-0.306794936438191,-0.626652381817584,-0.762817604120119,-1.58336895381413,-0.267099064013039,-1.23405298471095,1.17914343200233,0.337035821835839,-0.0152210799009971,1.22133229367176,2.01715392601076,0.134127095325089,0.0573181658213635,-0.555011540914146,1.30874794052678,-0.280379176326033,1.48128495901716,-1.87613965794929,-0.0844195837827267,-0.0865570974259608,-0.498074760737799,0.249241068349945,-0.634249582641167,-0.912077870193607,1.52322784942974,0.34946589163777,0.60884773848211,,,
2.0,2.1,1.25072038831056,0.884511094884224,-2.53005978943368,-0.594147504273335,-1.22455094600989,0.8088980792455,-1.1559076709631,-0.313456180075642,-2.33992485126947,0.414859193544999,-1.18566295764187,0.28667090137156,0.0021803291889954,-1.19398936831679,0.927042879338312,0.886711571360871,1.13422062049977,-0.106101059019173,0.200656552743109,-0.265776897059496,-0.380337268430462,-0.366182542407946,0.34614171816554,1.08098970984179,-0.811909505752476,-1.24261374129163,-1.48559581576313,0.115605019107189,-0.186868208961315,-0.310212300747893,-0.647715518796204,2.07188521487881,-1.76171640025885,0.596309901468307,1.32136522112511,0.866199375352612,-0.792865310935251,-1.47466956895915,-1.97470970595862,0.481210882834296,0.701222093740299,-0.50039714712929,-1.12549432940301,1.30696947198215,0.0692254628482164,0.766280297070935,1.33796279501695,0.898354220407461,-1.2698773801033,-0.956425880143152,,,
2.1,2.2,3.24233817634079,0.611332941669357,0.553565138294653,0.740912626542948,0.160484851636472,0.966306683799727,0.0157197654763288,-0.418906835967379,-0.993467023338004,0.952855403270322,-0.0507862328568682,-1.16062067771541,-0.955485158439478,-0.271225065632924,-0.180715228496015,0.298769684325482,-0.113150877809225,0.674209250471744,-0.115937280452863,0.713839866310203,-0.157143374717018,-0.803984616852196,1.03618721076386,-1.22666095182436,0.304425016446541,0.535110611330054,1.13853902418258,0.999367974696372,1.48896681303053,1.42882431838821,-0.191451670763673,1.06738547316907,-1.27084041318144,-0.330614109159349,-0.318905931995561,-0.0639034589228693,-0.350445049432439,0.162081666508749,0.701550573521023,-0.269222796283582,-0.945463021692602,-0.240843103522553,-0.592389210337589,-0.32454427810745,1.02319337504888,-0.266539115563354,0.743055660073062,-0.777314120810054,-1.13555364579478,1.77335238095689,,,
2.2,2.3,1.78052390402475,0.665637714587631,-0.648997178120195,0.954128799797641,1.41385204828449,-0.502812403466289,0.968310287502695,0.91101467821115,-0.572199674137244,0.912254039997721,-1.09754904538959,0.147228911090131,0.0383776154710461,0.320546273692963,1.12977707295365,1.06134531673029,0.602512235233535,-0.297055970641868,-0.336964274729707,-1.86103603615554,0.503710255101245,1.32202116631243,-1.32992339608002,1.46537132363442,0.685250787399239,0.17004623788851,-0.042790270206702,0.944091774113867,-0.336345967584359,-1.11582812548653,-3.20376697872025,0.358617024868947,0.466359430505646,0.63021584154174,1.58981213564031,-0.598604346535196,-0.194186670167715,0.160252896078136,0.755976391028381,0.526185943444232,0.351952584397874,2.10812258597098,1.17952247562452,0.181872981618181,1.19487790332494,0.196802219270225,-0.795725040107823,-0.0813670628146194,-0.161018343450083,0.235357092559411,,,
2.3,2.4,1.66110887942948,-0.669171282639242,0.238791082981945,0.0576994998190187,-0.97045739524025,-0.625648713558978,-0.392040947398715,0.47912679319728,-1.15954530463293,-0.444723564393173,1.51017154458763,-0.884904326863893,0.0505720293967651,-0.303309636250349,-1.82967782137182,0.387245958771402,-2.13812872160708,0.072839052284346,0.0921060823917312,-0.0911599285979533,0.898380471999799,-0.526249926112628,1.19558698015037,0.969765680705507,-0.192868137727943,-1.51635603693505,-1.92422846979144,1.89635828012013,0.624560518950448,-0.246221011762433,-1.54400325325503,-0.137298773758103,0.421647397408932,0.492821551830173,1.3870877899599,-0.590327781524724,1.27611725199891,-1.59339914985378,-0.282554109608869,-0.655996567521023,0.713209895985469,-0.52303567728746,-0.0924481354977824,1.12424704252145,-1.63045814634044,0.258267356486971,-0.554897666380704,0.16136328446575,-0.124360476328799,-0.549251050056783,,,
2.4,2.5,4.2144129802884,1.15898984987893,-0.0844153450190744,-0.415923956983743,-0.177865843083346,0.805532603528472,0.660962307500386,0.769279245139492,0.30274257091051,2.2384881947132,-0.204404715593324,-0.907373757346249,0.0815032706101724,0.549679069629391,0.0153941242673955,0.0316799229228484,-1.31237420042331,-0.848387326916689,0.12566078951003,0.294025729524649,-1.78368059321223,1.53834255027231,-0.32417845149616,0.573747951412659,0.0563033506143221,-0.45843759977199,-0.0659690318608789,-0.762778707863747,0.0465531117516997,0.843511199293728,0.998400993784405,0.12534453477303,0.665143050267884,-2.01125189725731,0.0165900260888228,0.230619309995715,-0.097760200327044,-0.8739763196608,-0.498505472658232,-0.78016319216843,0.0541555843231652,-0.487035806332951,0.325982358570861,-0.529373162591848,1.05252157316922,1.37956010954273,1.81126597562892,1.63851281677777,1.3415173869553,-0.395835128133719,,,
2.5,2.6,1.64945509303401,-0.943806283002299,0.518442408130331,-1.86758987159609,0.563419517709897,1.98880849454813,0.167822442506707,0.939696795995567,0.957763670018228,0.960397965214072,0.674303186177436,0.646109771358858,-1.45706939809679,-1.09270022459707,1.12414813658601,-0.0548237364380222,0.342970589673467,-1.18525568151988,-0.675482305011838,1.62729267632758,-0.291640531599325,-0.47840349262149,0.457483054641541,0.870577313214227,-0.721224674333584,-0.211421172433712,0.106876393679008,-0.719604590553536,1.28437850162297,0.589983443821127,-0.502935041331622,0.288891110097736,-1.09949782151984,0.285138781326583,0.23221497065685,0.0244430722130607,-0.369613395128652,1.48523871641508,-0.401019247232261,-0.201210463412771,-0.799169232524,0.441214035498657,0.150811602503801,-0.689976172263641,1.27124947577614,1.07938635876632,0.74629311413399,-0.629628032288343,0.623020619345286,-0.554008269580513,,,
2.6,2.7,2.74267095821661,0.105328987636752,-0.396652597752965,-1.17520661147774,-0.0920467556319642,0.499021818079761,1.17621837900761,-0.0511456831345421,0.234026363651286,2.08275367409868,-1.6625168393052,0.0304967639095206,1.10773653213436,-0.212429385610628,-0.149985303022734,-1.07752592911075,-0.380523025075435,0.770899987294562,-0.0539998960961163,-0.110282138852179,0.864326522573728,-0.174194827211763,-0.291475882506444,-0.0162377291336753,-1.17835573282497,0.951712346336096,0.391718062267479,-1.73933567256628,0.144549816691083,0.0745948834215085,-1.32807861476269,-0.256265565244772,-0.176818563119596,-0.37585623353079,-0.00496330052164495,0.591117464132105,0.107386092347437,0.256027134157681,0.133555757775967,1.96139700569588,-2.37082732509051,0.275216717079046,-0.487104342274867,1.35625023660206,0.526932865956488,0.538355956868382,-0.883022071885734,-1.27433359665672,1.70343797719687,0.344580833665085,,,
2.7,2.8,1.10599819482375,0.237686255846713,0.389575810089312,-0.42357314693201,-1.5697127920899,-1.18130344829903,-0.474537353410163,0.21754092125466,0.756115468071972,2.41509704931181,-1.63628828754697,1.3024635233633,-1.52399652503083,0.061368969725903,-2.1890136434063,-1.70507987925561,0.00331165686672664,0.0741319526982085,0.721220937977569,0.0265753026951838,-0.638723152733768,-1.31123192949694,1.31303801156959,0.192062225960722,-1.18094929526039,0.262928271104671,-0.139079336118455,-1.80673965081279,-0.581312905582967,0.132667092003635,-0.305509290511996,0.0422474468859502,-0.0622162430143679,-0.0818912919901172,0.0795471459755263,-1.53503922671932,-1.09568190861783,-0.478083259453381,1.07430885815161,-0.926219815267994,-0.979514541691635,2.82062839696617,-1.80974199682299,-0.727729198249089,-1.04255250763512,-1.08426631652103,-1.39661976827106,0.363835609024638,-2.08799866608004,-0.0703183201969761,,,
2.8,2.9,3.23628638516357,-0.524234451568147,0.357667308557918,0.226220896928561,0.228399918268658,-1.39852263854515,-2.85926196102661,0.287948519947749,0.234972759232946,-0.15751905583906,-0.126263813909429,0.393895889734945,-1.59995691732761,0.821950331886864,0.942984216497974,-1.34939928982119,-0.317975140563889,-1.88453080321454,1.61781787045376,-3.19935100536208,-0.72779542665994,1.40163022950578,-0.881671115674016,-2.5937032724123,-1.6294249814381,1.97735867406683,-0.28841888620391,0.138567992185448,-0.208531413485633,2.35174016965935,-0.212575934186355,1.20033459199205,-0.809834121624679,-0.814571086128561,-0.804256508506296,0.486135360016604,-1.38226305141847,0.488812788692303,2.07070275715958,-0.127237250550859,0.214354832595851,0.65845721303472,2.01756523803506,0.357082435071566,2.2600868489938,0.699568890561675,0.346368826321668,-0.0750746044920143,-1.53383571481332,0.223863784801219,,,
2.9,3.0,0.379596496393281,-0.445807282790103,-0.181181655990299,-2.1290714394348,1.0047830962631,-0.862784781268212,0.339212363564143,0.504844509995135,0.130668088226239,0.255920303674645,-0.0797566577461414,-0.650352862835467,0.530666970519608,1.54024666448574,0.0580229399848478,-1.05283397579991,1.51267922226895,-0.712964510711093,-1.70352662244298,1.22623513633027,-0.927269105123236,0.615835182518445,2.20892273231957,-0.0726308362325351,-0.266315624357186,-1.02098821580133,0.199836806404051,0.664043859159181,0.997514218296064,-0.52791373286299,-1.2072954979183,-0.31849279568277,-0.381189684390601,-0.949856501813098,-0.340319634467726,-0.231545343146002,0.231219459130344,0.876616515272772,1.42976090587133,-0.0339603499085388,-2.20355494273046,-0.131839907176857,-0.0559721527756556,0.56882218677041,1.27168044162329,2.5792700875897,0.355753148367243,-0.193920486746723,-0.995100829461892,0.573162251370111,,,
1 Time:1x50 End Time V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: Event Id Event Date Event Duration
2 0.1 0.2 2.41756423308863 -1.70401239595644 0.791729847451285 0.645613889707579 1.11917441900686 -0.177752798768 -0.502323231129607 2.27946077930473 -0.620097027979108 0.237200592861211 0.0614235140029632 -1.17348720105883 -0.357925117766627 -1.63796061515849 0.917322979592683 -0.37833171872684 -0.946119121861523 -0.0503651450477355 -0.409013192293217 -2.04614769290604 -0.399654044524648 -1.14109064360204 0.989314861039603 0.495639145844508 -1.13685436997172 -0.626825600799964 2.50922453214131 1.53860969964381 -0.725461590878397 -1.28921524286806 -1.25706071230653 -3.03884011510721 1.47410400452375 0.0819561326981504 -0.0726196267672344 -1.50559081777541 1.74664432671996 -0.794270918369097 0.047953240677887 1.73699254493474 -2.62826713575325 1.01534561048104 -0.803431439823553 -0.71471177906596 1.18060299534523 -0.794322346919578 0.786606149688323 2.21317519625281 0.285011727658921 -0.850868910204617
3 0.2 0.3 1.80188889404418 0.315552223608854 -0.262557343411401 1.50045825269355 1.09064026780364 -0.121730539970911 0.43812652908932 -0.523034229650523 -2.24084439581267 0.830347937150517 1.13562332595139 0.500494429219252 2.7482349340849 -2.04509150717098 0.747749245376466 0.909745017984892 -0.11757130812107 0.34959788740953 -1.23615166703237 -0.962361521724509 -0.316579482791706 -2.15681891438129 0.217396498323689 1.14963077925616 0.45710847937624 -0.8491784768972 -0.199441196263061 -0.463154271272553 -0.780671078974483 0.927772277443112 2.22085753515201 0.173035255914104 0.0466857464951015 -2.23192589786752 0.156802490410574 -1.24385666850783 0.994065197710682 -1.1310557055715 1.19025094222507 0.837362802103179 0.074635180422496 -1.9382936377041 -1.73623206073621 0.350917204209175 0.581364553631124 -2.11549024802639 0.075091310820531 -1.59987906951638 0.0804263264426524 -0.903175045614212
4 0.3 0.4 0.134053583211802 0.0736801397485045 1.35381433181395 0.222143313225455 -0.75615540652887 0.585896104848566 -1.25487765942792 0.0618414485259265 1.12136347313419 1.15103586902857 -2.47540474891527 -0.0267486987367018 2.38995759188258 1.22420774775832 0.350169519590248 0.614336199725246 0.164327360348982 0.706118648266181 0.017764527876496 -2.45963606734507 0.408266243351976 0.499192662808535 -0.154965880654383 0.407760603757424 -1.12462097112783 0.733355721866381 0.0825686379798897 -0.0172780002074716 -1.05483478155031 0.961605145031084 0.504011431147704 -0.23031362553634 0.715156030740589 0.491340264675297 0.870910633389063 -1.38576760545291 1.38532666311733 0.600341172100502 -0.569899583962448 -1.37604736692897 -0.576111195613606 0.486881201184612 -1.78599173287689 0.973587613719928 -2.79205436913732 0.824791999063363 2.69283120653806 0.0885622445383038 -0.55454569217847 0.0419115553038687
5 0.4 0.5 3.90115375281321 -0.576843586677304 -1.22322026530138 2.2393112250765 0.453301595875585 -0.947102724052319 -0.00634279476540103 1.02464991682588 -0.280551482291064 0.528251543160952 1.09696987922838 0.441769695436964 1.3606920172692 -0.143379233801836 -0.220345613536676 0.858622330768882 1.1254595004879 -1.40443570509893 -0.833433599180464 -0.386850253103523 -1.09025758540741 -0.0511331048601226 -1.700690045554 0.850097256319639 0.956316330592468 -1.10214629428405 0.656517748854216 -0.0273847042090798 0.680440019977418 -0.329551663768347 -1.69547266144089 -0.217295520359744 -0.361747049327876 -0.806967833979068 -0.144567005025595 0.515712914667356 1.23407811678742 0.00121636506162939 0.514447404322184 -0.640932521250631 -1.00452312124515 0.687568802825433 0.51765138915709 0.107761745506942 0.508235191756896 -0.210951431667897 -1.33803212964343 0.336138128677005 -0.52523247628906 0.508716885104579
6 0.5 0.6 2.26390217116451 -1.11463592272539 1.92580963388041 -0.459159911520928 0.885822481928998 0.278584038590067 -0.846951437744313 -0.506883849690481 0.883766555166351 0.950918475131371 -0.241239682802772 -0.41734585303162 0.221022811563535 0.271093819366761 0.493949741422186 0.00328354898697439 -1.39527802298993 0.164774504765728 1.2418703063445 0.519520494733933 -1.28749439877126 0.36102828532919 -0.566770014589174 -0.328233925354516 0.660468829346089 -0.0548298205374033 -0.447993806816061 -1.46872800617216 0.466328029312081 -1.00473991515938 1.45687239177829 1.08409591929311 -0.420261551755275 -1.29127008779562 1.30273374540705 -0.103175281479033 -0.600428434711648 -0.775686160702368 -0.967953544940887 0.465842846859284 2.06030085775973 -1.69420952713817 1.91444788712457 2.19963525743073 -0.447592829097785 0.125523618774679 -2.68795734330282 0.312151306862779 -0.129740420682068 1.01856191637845
7 0.6 0.7 1.28681920398356 -1.73554129729895 -0.197041094065271 1.23260541291538 0.25942640448246 -0.247257463789772 -0.429863925040663 -0.879770176316215 -1.59061156135753 1.57407287022937 0.950144580297151 -1.13013947143077 0.316832232415441 0.0350104505182429 -0.198904683103634 1.2080507210976 -0.633695774000356 1.17785905881309 2.99481707872686 0.348473904965908 0.887456350739495 -0.0280041788075179 -1.70696967612494 -0.215893371515469 -0.634744466860558 0.668115688647831 -0.0875239839984323 -0.390153017637281 1.7813682669371 1.26933780643966 0.179719027234534 0.576675269856259 0.162452560452856 1.97061540006131 0.709455669205445 1.71279592251747 0.757308119186768 -0.415474760353766 -0.0711510430153657 -0.909962183354922 1.3518334698559 0.176589282814468 -1.05789139292939 -1.60417030737624 2.24555069710889 0.3147718036389 0.511316053526405 -0.092583472608371 0.215447449060973 0.276938935894284
8 0.7 0.8 1.7143878588671 0.318553319550764 0.7105413822878 1.53929387721496 1.17219403804553 0.914321111147704 0.445074348035177 0.864040919966386 -1.30955461943129 -0.38192639010032 -1.63356859757793 -0.0578335431210713 -0.705976590644803 1.48879996667957 0.906412378740496 1.00635243733724 -0.860068560811214 0.25157523868098 -0.700285646636355 1.63742514597695 -1.44597174367909 -0.334068790556961 0.369935570208775 -2.06508288737651 1.34297495735268 0.509447063069645 0.170816044092557 0.226714523719044 0.745181779363815 -0.969225705128717 -0.177438715283015 0.822982782642091 1.0371944602826 0.577685327764532 1.70813554580091 2.39356091163575 -0.346884726302522 -1.42225821911172 0.500597355279659 0.524234693802535 0.729733076217236 0.47456515128138 -0.660405774073152 0.267060538646901 0.000426531833439704 0.715069562151028 -0.868863424039719 1.48823661679146 -2.31786866819867 -1.45294959225448
9 0.8 0.9 0.697057441008775 0.698790009807599 0.867820323427383 0.0811664846339576 -1.4472231601051 0.997767154622138 0.76618207296053 0.878651658684913 1.71080398924943 0.929524691395211 -1.44876807504741 0.839031972695844 -1.48805829633174 -0.50845406468288 -0.304523720289152 0.351577492189797 -0.791474627573446 -0.0731064149233324 0.0118503183356555 -0.94940960665759 0.222997198912361 -1.7254389034402 1.36115001780592 1.41274470145576 -2.00017992853741 -0.404570800129302 0.0410800836576833 0.794815690704137 0.93598122103314 -0.0391567604442919 -1.97149287295885 0.101864284607686 -0.550151672011335 -1.36443082486966 -0.225199678538552 -0.439947140031294 -0.435924408967588 -0.692718679506362 0.805440351782625 -0.169890876199317 1.38782563973323 2.92735443147801 0.524445171344603 1.66054859338096 0.402666015005784 0.424174309807325 -0.66521968800587 0.01738015871613 0.361867157614173 -1.37457037615209
10 0.9 1.0 3.52897644396081 0.422128745354343 1.25248286681702 -0.950703924432279 2.51811470021927 0.187631658327211 0.0294973585186574 1.69556178117789 0.405807897438738 -1.64177540546277 0.275407803221126 -0.11671417338093 0.0581305705766578 0.274108570345926 0.791124732212224 0.172462582908223 -1.14215257394054 0.423134416176203 1.32629897532172 -0.23939890190641 0.011552509015188 0.393634403403334 1.61597385031162 1.25862095079157 1.27679363991336 -0.261622116935512 -0.475755662418219 0.236200319452776 -0.31328170702761 1.02359375302955 -0.221950005364121 -1.34862373561157 0.110497607966458 1.5354393778831 2.10234202132854 0.344538220593261 1.60485808855624 -1.97233422609305 -0.766832367234666 0.480155254082462 -0.324478218471555 -0.376564743260814 1.8236538168715 0.0511160324888412 -0.844828893457091 -0.34538568446893 0.314551576353477 -1.10815772973927 -1.11731920702865 0.46420549167493
11 1.0 1.1 2.2349303919686 0.574218989497726 -1.27507776210747 -0.691893048210729 1.23889754707696 1.09136200313909 0.903178957417063 -0.0383450493306883 -1.87599757865119 0.507501274578597 -0.443368706120003 -0.378281077195736 0.490810167526783 -0.771969296893111 0.831225714056053 0.547306569799624 -1.34018685039238 -0.334519169731117 0.506179096791726 1.09903254737982 -1.64437042216723 -1.41065404332665 -0.551204541436527 -1.66049829709579 1.11959912640833 0.70196278086534 0.114890097276731 0.495064598951083 -0.849710879875456 -1.39290937328785 -2.20914476764139 -0.414585999149955 -0.0685079983959239 0.201207480854693 0.368934977351352 -0.560360686563783 1.22607205658501 0.41929577282257 0.393460393461204 -0.961312552821879 1.25172263455976 -0.81826950295172 -1.04633627939148 -0.746109258253462 0.352254610503885 -0.867627639226765 -2.6375353545019 1.46592226213751 1.01698508619519 0.107564981881061
12 1.1 1.2 1.90905608282086 0.16215602902349 -0.35655805663903 -0.523178514593638 0.964899194189744 1.6222753959523 0.219085663684405 1.15426264371121 -1.24502181738719 -0.866076969231395 0.505721545064514 0.715912175667961 -0.987807527481338 0.286521572827326 -0.652235567554811 1.54688229235656 1.52479834913992 0.261306722767349 -0.287643387358626 0.588966783068548 -1.01860474742667 -0.272490554703533 -2.54293342449673 0.663603748421948 -1.90793856071731 0.892296010475099 1.2677764947497 0.102244295534873 -0.192134963445369 1.68534811369718 1.17723504139249 -0.761940422354176 0.0761991779137232 2.16735803291766 0.4448566545144 1.03485896087065 0.227702285072451 -0.563369979998674 -2.04111698127948 -0.143561213814264 1.2523436946126 1.48262069225916 -0.496833366155436 -2.67088622136062 0.213467760508286 0.656874752811013 -0.163930500814305 0.503368907434312 -1.15649235180276 -0.326602268574231
13 1.2 1.3 1.82817174278505 -0.915740723481944 -1.03397774676955 -0.0393381784441342 -0.786463555009029 -0.491849260938815 1.11102671071298 0.628932722019228 0.200299617640272 1.28377449540738 -0.253027772897481 0.255562390948539 -1.28031501733204 -1.19585660531198 0.586857023188176 -0.400961177593881 -1.17244918888821 -1.0213245830234 -1.27155342814585 -0.792598648327314 -0.493647891138553 -1.06161347607627 0.179951616570891 -1.51078529195779 -0.760922980284442 0.394460954386319 -1.15724508546002 -0.293104407076505 0.434954857926243 1.15827516527076 -2.0390862403136 -0.866199826749087 0.342186941946617 -1.35222657540178 -0.337872950381222 0.90850056534597 -0.617078219759492 -0.02729832872889 0.00600052372204561 -0.770688409385996 -0.822658332586892 -0.785053794646164 -0.326984528190858 -0.191059445623554 -0.169054704183838 0.649927127346464 -0.323827478609514 -0.214716977074725 -0.682253620558535 1.22397511430413
14 1.3 1.4 2.32236853223443 0.427806931249306 0.0402703488023772 0.113862885576774 0.0754927902472402 2.70406468195407 1.04096994307005 0.64771066009713 -1.85695063630025 1.69570239206156 0.491082605773716 -0.123025225831437 -0.0354374776650886 1.92113962370778 -1.2590573313434 0.00875643793143263 0.376386004283907 0.174125611303642 2.15149411768753 1.65926366577081 -0.487098654381922 -1.7100674664531 0.764500072760924 -0.567933253038316 0.987495990460228 0.00949996883680931 -1.25855902616332 0.809357345422902 -1.62511020616499 0.42269146211559 -0.070708576022989 -0.487328175670994 0.164900621002674 -0.683617816803271 -1.04542000052847 0.724483495811625 -0.228120180148957 -0.115000975380967 0.826195913275038 0.442365448092266 0.135587213557908 -0.109488943016988 0.0309216082549297 -0.698165360098408 0.612867470522679 1.19806990644916 1.38542920455704 -0.379494251426188 -0.731897155098474 -1.35668649190231
15 1.4 1.5 1.45439547273008 -0.929810951541978 -0.591944576136757 -0.411474639985248 0.289652928461575 -0.253764704019275 2.03654647389044 -0.936592370293857 1.62902125089821 -1.01506182826729 -0.158378237807025 -0.299168462814882 0.508691096423908 -1.41615001234424 0.331446304693132 0.960927520369855 -0.0188706880668929 0.832655068862004 -0.650859111020964 0.679972642521691 0.393631169376017 1.61308504239881 1.3498864827501 0.817367048913504 -1.07304883617417 -0.747468195211896 -0.365260632211411 0.485667789172747 -1.7150830945153 0.587471134281994 -0.859472136779999 1.85745130601475 1.16221951542599 0.427722140784601 0.263307588505152 -0.217164070073997 1.33534523533395 -0.600663931025257 -0.15425051251824 1.61929892116195 -1.84832764639647 -0.675788199193317 -0.803409264963564 -0.437313747732349 -0.765909210679953 -1.30827477420875 2.14311433473649 1.31143432968157 -1.4266078787346 1.65668499033972
16 1.5 1.6 0.595521266870661 0.670827444340013 0.822349032920016 1.48671063767886 -0.20591879343225 0.583029392512904 -0.484613644765427 -0.614161729978392 -0.679100407713575 1.76315303217649 -1.17014896754858 -0.86726463730375 -1.33529480977493 -1.21221300830339 2.58447799745804 -0.248351350386802 -1.98327524911415 0.568963822015204 1.49249573377712 -0.72091582182537 1.81381156530344 -3.01314816868743 0.152853800008917 0.117622027015652 0.278507598597378 -0.0184210704865948 0.183121169493893 -0.575401221633333 0.427227245715667 0.49782259523041 0.0121123765173689 0.0605642365961841 -0.714177967040767 0.634344450459318 -1.87727132746797 0.0952605631767785 0.231143650290242 -0.641723073845394 1.23774853664246 -0.65590732710293 -0.0412916456639285 0.679248067992509 -0.38198476499436 0.526950080954531 1.89759407362439 -2.31203317081741 -1.42377201016702 -0.689755443820253 -0.18622422267855 0.965931525511026
17 1.6 1.7 1.89979409534188 0.114201731029458 2.11093333569011 0.462634950869365 0.802017284993703 0.45514125342449 -0.741147770239103 0.301082308780641 1.09083469426141 0.679739573634555 -1.30511622720764 -1.12831998478253 -0.709779255952854 0.786495319085328 -1.32696869643567 0.279463547951855 -0.253466304734537 0.252930796714509 1.05907750468596 -0.298027494330392 0.183088883093571 0.779773656314397 -0.158195417336922 1.79688605194308 -1.3838126103276 0.308120164886491 0.606905014035848 0.085984830734963 0.356346802002905 -1.22769019162751 0.373144957964786 -1.87713470192505 -0.171542630218531 0.10405010428406 -0.134565397882384 -1.40524107297725 -0.489312450251409 -0.422137504979368 -0.505231646825649 0.588717173734515 1.05117859910455 0.907752266022308 0.962844639182917 -0.946294028300419 -0.98306249307748 -1.38635130884037 -1.62446697801481 -1.25639807547798 -0.900244784331326 -0.313335627738682
18 1.7 1.8 0.326093856462409 0.0718318053141033 -0.780989120529917 0.637204898155618 -0.910877969410234 -0.639233538433986 0.0774259505879961 -0.113492051110571 -1.89804390654581 1.56708966843491 0.202586104969294 -1.30215934609719 0.447191335524953 0.00263359948905052 -0.183162806239416 -1.69534204409441 -0.0999978083298749 -0.551192660276627 -0.361905518259104 -0.670312262837318 -1.87386246016378 0.316208011441323 -0.00256785804749727 0.178342041493682 -1.40822528162159 1.04326994172408 -0.292480406483948 -1.47127673416754 -0.0599809240520088 -0.214670559294986 -0.032534147093615 -0.825317796231491 0.717711471846127 -0.202824366243721 0.208381005095076 0.456347108459851 0.164122164540019 -0.377421649056397 -0.453920115194515 0.0955023622260769 -1.79249664781062 -0.583047306936519 -0.270493627569649 -2.04017251810275 0.388453344865416 1.6092844666269 -1.06114066894118 1.26616548498011 0.595967473989876 -0.491718736512471
19 1.8 1.9 2.49850607542732 -0.0260826570912244 0.0700077723592852 0.32604773433282 -0.337215828267252 -1.47078362042724 -1.27195080354675 0.12978088784109 -3.03846808346853 -0.971348447288014 0.274289225628083 0.162120486399879 -1.66513885211497 -0.305161314181406 0.629718567018265 0.57872289230021 1.18813766954819 -0.503338569277094 0.81626217765867 -0.584970486977983 -1.34298310710332 0.111566420141956 -0.948592939426938 -2.62770679654794 0.335001574178879 -0.467151181788328 0.345335492044936 -1.06596135937543 -1.15411840762396 0.759080521827426 0.188628959777562 1.80321198870907 1.40570504545831 0.50475428027401 0.261269132151034 -1.18302501013173 0.819429246309387 0.135359951198624 -1.68396068163217 1.06503229465112 0.967037280889348 1.42663508424886 0.405490271188921 0.81881808633476 -0.738100260180903 -0.470512553560968 1.90696635564439 0.240714186472695 -0.616643676792083 0.0183787390087662
20 1.9 2.0 2.06665141514131 0.589269784283709 0.410861099476856 0.239607023122536 -0.428429902516973 -1.32387867673835 -0.436342217523423 -1.31177357968924 -0.57166336986993 0.766187042598625 1.85715937580771 -0.0646796789020885 -0.131612570633307 0.156344942430573 -0.292498182364307 -0.605901957216522 1.80288902912815 0.107614436799477 1.01545574953744 0.235458117756115 -0.560286444234255 1.40477760148376 -0.178458068629514 -0.306794936438191 -0.626652381817584 -0.762817604120119 -1.58336895381413 -0.267099064013039 -1.23405298471095 1.17914343200233 0.337035821835839 -0.0152210799009971 1.22133229367176 2.01715392601076 0.134127095325089 0.0573181658213635 -0.555011540914146 1.30874794052678 -0.280379176326033 1.48128495901716 -1.87613965794929 -0.0844195837827267 -0.0865570974259608 -0.498074760737799 0.249241068349945 -0.634249582641167 -0.912077870193607 1.52322784942974 0.34946589163777 0.60884773848211
21 2.0 2.1 1.25072038831056 0.884511094884224 -2.53005978943368 -0.594147504273335 -1.22455094600989 0.8088980792455 -1.1559076709631 -0.313456180075642 -2.33992485126947 0.414859193544999 -1.18566295764187 0.28667090137156 0.0021803291889954 -1.19398936831679 0.927042879338312 0.886711571360871 1.13422062049977 -0.106101059019173 0.200656552743109 -0.265776897059496 -0.380337268430462 -0.366182542407946 0.34614171816554 1.08098970984179 -0.811909505752476 -1.24261374129163 -1.48559581576313 0.115605019107189 -0.186868208961315 -0.310212300747893 -0.647715518796204 2.07188521487881 -1.76171640025885 0.596309901468307 1.32136522112511 0.866199375352612 -0.792865310935251 -1.47466956895915 -1.97470970595862 0.481210882834296 0.701222093740299 -0.50039714712929 -1.12549432940301 1.30696947198215 0.0692254628482164 0.766280297070935 1.33796279501695 0.898354220407461 -1.2698773801033 -0.956425880143152
22 2.1 2.2 3.24233817634079 0.611332941669357 0.553565138294653 0.740912626542948 0.160484851636472 0.966306683799727 0.0157197654763288 -0.418906835967379 -0.993467023338004 0.952855403270322 -0.0507862328568682 -1.16062067771541 -0.955485158439478 -0.271225065632924 -0.180715228496015 0.298769684325482 -0.113150877809225 0.674209250471744 -0.115937280452863 0.713839866310203 -0.157143374717018 -0.803984616852196 1.03618721076386 -1.22666095182436 0.304425016446541 0.535110611330054 1.13853902418258 0.999367974696372 1.48896681303053 1.42882431838821 -0.191451670763673 1.06738547316907 -1.27084041318144 -0.330614109159349 -0.318905931995561 -0.0639034589228693 -0.350445049432439 0.162081666508749 0.701550573521023 -0.269222796283582 -0.945463021692602 -0.240843103522553 -0.592389210337589 -0.32454427810745 1.02319337504888 -0.266539115563354 0.743055660073062 -0.777314120810054 -1.13555364579478 1.77335238095689
23 2.2 2.3 1.78052390402475 0.665637714587631 -0.648997178120195 0.954128799797641 1.41385204828449 -0.502812403466289 0.968310287502695 0.91101467821115 -0.572199674137244 0.912254039997721 -1.09754904538959 0.147228911090131 0.0383776154710461 0.320546273692963 1.12977707295365 1.06134531673029 0.602512235233535 -0.297055970641868 -0.336964274729707 -1.86103603615554 0.503710255101245 1.32202116631243 -1.32992339608002 1.46537132363442 0.685250787399239 0.17004623788851 -0.042790270206702 0.944091774113867 -0.336345967584359 -1.11582812548653 -3.20376697872025 0.358617024868947 0.466359430505646 0.63021584154174 1.58981213564031 -0.598604346535196 -0.194186670167715 0.160252896078136 0.755976391028381 0.526185943444232 0.351952584397874 2.10812258597098 1.17952247562452 0.181872981618181 1.19487790332494 0.196802219270225 -0.795725040107823 -0.0813670628146194 -0.161018343450083 0.235357092559411
24 2.3 2.4 1.66110887942948 -0.669171282639242 0.238791082981945 0.0576994998190187 -0.97045739524025 -0.625648713558978 -0.392040947398715 0.47912679319728 -1.15954530463293 -0.444723564393173 1.51017154458763 -0.884904326863893 0.0505720293967651 -0.303309636250349 -1.82967782137182 0.387245958771402 -2.13812872160708 0.072839052284346 0.0921060823917312 -0.0911599285979533 0.898380471999799 -0.526249926112628 1.19558698015037 0.969765680705507 -0.192868137727943 -1.51635603693505 -1.92422846979144 1.89635828012013 0.624560518950448 -0.246221011762433 -1.54400325325503 -0.137298773758103 0.421647397408932 0.492821551830173 1.3870877899599 -0.590327781524724 1.27611725199891 -1.59339914985378 -0.282554109608869 -0.655996567521023 0.713209895985469 -0.52303567728746 -0.0924481354977824 1.12424704252145 -1.63045814634044 0.258267356486971 -0.554897666380704 0.16136328446575 -0.124360476328799 -0.549251050056783
25 2.4 2.5 4.2144129802884 1.15898984987893 -0.0844153450190744 -0.415923956983743 -0.177865843083346 0.805532603528472 0.660962307500386 0.769279245139492 0.30274257091051 2.2384881947132 -0.204404715593324 -0.907373757346249 0.0815032706101724 0.549679069629391 0.0153941242673955 0.0316799229228484 -1.31237420042331 -0.848387326916689 0.12566078951003 0.294025729524649 -1.78368059321223 1.53834255027231 -0.32417845149616 0.573747951412659 0.0563033506143221 -0.45843759977199 -0.0659690318608789 -0.762778707863747 0.0465531117516997 0.843511199293728 0.998400993784405 0.12534453477303 0.665143050267884 -2.01125189725731 0.0165900260888228 0.230619309995715 -0.097760200327044 -0.8739763196608 -0.498505472658232 -0.78016319216843 0.0541555843231652 -0.487035806332951 0.325982358570861 -0.529373162591848 1.05252157316922 1.37956010954273 1.81126597562892 1.63851281677777 1.3415173869553 -0.395835128133719
26 2.5 2.6 1.64945509303401 -0.943806283002299 0.518442408130331 -1.86758987159609 0.563419517709897 1.98880849454813 0.167822442506707 0.939696795995567 0.957763670018228 0.960397965214072 0.674303186177436 0.646109771358858 -1.45706939809679 -1.09270022459707 1.12414813658601 -0.0548237364380222 0.342970589673467 -1.18525568151988 -0.675482305011838 1.62729267632758 -0.291640531599325 -0.47840349262149 0.457483054641541 0.870577313214227 -0.721224674333584 -0.211421172433712 0.106876393679008 -0.719604590553536 1.28437850162297 0.589983443821127 -0.502935041331622 0.288891110097736 -1.09949782151984 0.285138781326583 0.23221497065685 0.0244430722130607 -0.369613395128652 1.48523871641508 -0.401019247232261 -0.201210463412771 -0.799169232524 0.441214035498657 0.150811602503801 -0.689976172263641 1.27124947577614 1.07938635876632 0.74629311413399 -0.629628032288343 0.623020619345286 -0.554008269580513
27 2.6 2.7 2.74267095821661 0.105328987636752 -0.396652597752965 -1.17520661147774 -0.0920467556319642 0.499021818079761 1.17621837900761 -0.0511456831345421 0.234026363651286 2.08275367409868 -1.6625168393052 0.0304967639095206 1.10773653213436 -0.212429385610628 -0.149985303022734 -1.07752592911075 -0.380523025075435 0.770899987294562 -0.0539998960961163 -0.110282138852179 0.864326522573728 -0.174194827211763 -0.291475882506444 -0.0162377291336753 -1.17835573282497 0.951712346336096 0.391718062267479 -1.73933567256628 0.144549816691083 0.0745948834215085 -1.32807861476269 -0.256265565244772 -0.176818563119596 -0.37585623353079 -0.00496330052164495 0.591117464132105 0.107386092347437 0.256027134157681 0.133555757775967 1.96139700569588 -2.37082732509051 0.275216717079046 -0.487104342274867 1.35625023660206 0.526932865956488 0.538355956868382 -0.883022071885734 -1.27433359665672 1.70343797719687 0.344580833665085
28 2.7 2.8 1.10599819482375 0.237686255846713 0.389575810089312 -0.42357314693201 -1.5697127920899 -1.18130344829903 -0.474537353410163 0.21754092125466 0.756115468071972 2.41509704931181 -1.63628828754697 1.3024635233633 -1.52399652503083 0.061368969725903 -2.1890136434063 -1.70507987925561 0.00331165686672664 0.0741319526982085 0.721220937977569 0.0265753026951838 -0.638723152733768 -1.31123192949694 1.31303801156959 0.192062225960722 -1.18094929526039 0.262928271104671 -0.139079336118455 -1.80673965081279 -0.581312905582967 0.132667092003635 -0.305509290511996 0.0422474468859502 -0.0622162430143679 -0.0818912919901172 0.0795471459755263 -1.53503922671932 -1.09568190861783 -0.478083259453381 1.07430885815161 -0.926219815267994 -0.979514541691635 2.82062839696617 -1.80974199682299 -0.727729198249089 -1.04255250763512 -1.08426631652103 -1.39661976827106 0.363835609024638 -2.08799866608004 -0.0703183201969761
29 2.8 2.9 3.23628638516357 -0.524234451568147 0.357667308557918 0.226220896928561 0.228399918268658 -1.39852263854515 -2.85926196102661 0.287948519947749 0.234972759232946 -0.15751905583906 -0.126263813909429 0.393895889734945 -1.59995691732761 0.821950331886864 0.942984216497974 -1.34939928982119 -0.317975140563889 -1.88453080321454 1.61781787045376 -3.19935100536208 -0.72779542665994 1.40163022950578 -0.881671115674016 -2.5937032724123 -1.6294249814381 1.97735867406683 -0.28841888620391 0.138567992185448 -0.208531413485633 2.35174016965935 -0.212575934186355 1.20033459199205 -0.809834121624679 -0.814571086128561 -0.804256508506296 0.486135360016604 -1.38226305141847 0.488812788692303 2.07070275715958 -0.127237250550859 0.214354832595851 0.65845721303472 2.01756523803506 0.357082435071566 2.2600868489938 0.699568890561675 0.346368826321668 -0.0750746044920143 -1.53383571481332 0.223863784801219
30 2.9 3.0 0.379596496393281 -0.445807282790103 -0.181181655990299 -2.1290714394348 1.0047830962631 -0.862784781268212 0.339212363564143 0.504844509995135 0.130668088226239 0.255920303674645 -0.0797566577461414 -0.650352862835467 0.530666970519608 1.54024666448574 0.0580229399848478 -1.05283397579991 1.51267922226895 -0.712964510711093 -1.70352662244298 1.22623513633027 -0.927269105123236 0.615835182518445 2.20892273231957 -0.0726308362325351 -0.266315624357186 -1.02098821580133 0.199836806404051 0.664043859159181 0.997514218296064 -0.52791373286299 -1.2072954979183 -0.31849279568277 -0.381189684390601 -0.949856501813098 -0.340319634467726 -0.231545343146002 0.231219459130344 0.876616515272772 1.42976090587133 -0.0339603499085388 -2.20355494273046 -0.131839907176857 -0.0559721527756556 0.56882218677041 1.27168044162329 2.5792700875897 0.355753148367243 -0.193920486746723 -0.995100829461892 0.573162251370111
@@ -0,0 +1,30 @@
Time:1x50,End Time,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,V 1:,Event Id,Event Date,Event Duration
0.1,0.2,-1.41232437907546,-4.38221566333654,-0.589097699064319,0.217372153255027,1.27685520628543,-0.756778481698309,-0.543962016747266,-0.187181516773856,-1.58507038797054,3.13563802128473,1.91172848200559,-3.86922895374677,4.12192248984278,1.45303296714151,-0.656269348110641,2.37407036184574,2.58975534728869,-2.40859466417441,-0.617070760407336,-0.304654607987442,0.984240355760732,6.97482380197961,-1.11771787282909,-0.86525116147396,-3.23825575513482,-0.538260960885557,5.49599735857233,-0.164809703737508,-1.27860257610813,4.01751415924776,4.74927678631869,1.88634276049864,2.12067929110647,0.399126112513965,-3.10239276974533,1.0629811449084,-2.60833706563185,0.284012867924059,5.49759259653058,6.58112241867482,-0.192683715345061,4.44602723389523,-3.07100252473818,-1.6052712435052,4.00766074970893,5.78511623305967,0.634161961205727,3.12744389732379,1.42603298182921,-3.16319555524887,,,
0.2,0.3,1.23025167728829,2.55042197348026,-0.996797522796963,3.11806930521677,0.399136455645935,0.56095615427698,4.59284506207901,-1.84567236703288,1.8816965753032,0.750729173641131,-0.829389368162276,-0.487405081904131,4.91804790857892,-2.1543740276208,0.26684094368407,2.67856896870312,0.691289502023455,0.987665148165264,3.78934998772079,-3.34374902882119,-5.44868781295565,-2.02522881313808,1.46967805316524,-0.404231945768228,1.36218718246369,2.32809332192605,3.46211643962893,-0.0935594029982055,2.55546097585287,1.8285128290357,-3.33242202454528,-0.81647528277583,4.78109928979897,1.31043910420667,-4.26628298568948,4.28910480462471,0.530555688570553,-0.474160971125616,0.53544116203418,3.56379070526742,0.0519593475829907,-3.03383843699085,-0.345415155244719,1.34779086652161,-0.593473775123416,-2.14076326226118,-1.00822931767497,-3.22067324001478,1.29926372514046,3.04170584248838,,,
0.3,0.4,-1.27952659735789,-0.678694034794376,-7.82905738068359,-0.453899386644462,-0.753031099492228,0.979661086218665,-0.145265745943201,3.3305149026421,1.40553600310107,-2.71025217679511,1.91691429643109,-1.66337966276611,0.491278647558013,-0.217054613705415,1.30642053034477,4.42155452174562,-1.20798772143527,-3.99764898858139,1.16793671123473,-4.00477404985,2.85824304874785,0.0389253585144361,-0.561022996231375,0.953884500494647,-0.581119570114544,3.66788193041374,0.937030386226416,-1.85477673926392,-3.50829167417705,-2.29384068911566,-3.01630266121275,3.70404305303742,-2.99212185026577,-0.805293998539477,-0.197505568250145,-4.06364555944777,2.20829484109197,2.21595280420013,1.46393840866214,0.463084322420088,-0.0925093216843882,-2.03260255466236,1.18708012237896,1.21157092378972,0.362154361384203,1.39296797924311,-1.04406256191426,-1.62062237565984,0.351120592419513,-1.00927590927613,,,
0.4,0.5,-2.09063898202145,-0.885281257588577,2.95731628011309,1.00726807670656,1.18387334367457,-2.55830621315147,0.328466116650074,2.70320901698313,1.97284271456488,0.81107860874752,2.09099386575403,0.3555519090344,2.37598172887946,0.66818278902417,-0.190371511963837,-3.343388865518,1.21793902737849,0.0984098117557504,1.11595575053085,1.36701904711547,-2.28258562180032,-0.560253392047431,-1.59159179981677,0.56780414999771,1.33190662675105,0.639266075327812,3.70709664830959,-0.507385000728346,0.475155225763881,3.10663479560096,2.25207747584878,3.4745549102939,-1.44545077904603,5.65483928695995,-2.25683275445989,1.68259107985316,0.661591836783155,-0.457201675623602,2.05726753879515,3.16098266017121,2.04449928381376,-2.19163282650609,-3.50026559979492,-1.53775220398596,-3.73802650641534,1.62864227404371,-3.78922329429375,-1.82410237974745,2.288643534796,3.24115982383583,,,
0.5,0.6,-2.98522799710803,4.36673455162735,-0.913239491117599,3.37091298095012,-2.85566029410916,-0.240479200085136,-0.0912376280480195,1.91082754809618,-2.21321531259226,-2.05032531808526,-0.40695956382635,-1.27738678943432,1.73181147069958,-1.33457987938084,0.641156726971704,-2.34938281658383,-1.35937565189658,-0.115081669604994,0.442052347494917,4.82608960749163,-4.77444037931449,-2.00083972335266,-1.99839808817676,-1.97880121135913,-4.0278099493376,0.45826619586843,-2.86175180125398,3.003887735408,2.08768815172436,-0.175604692890707,-3.89226036160365,-1.66556725296722,-1.75134329758897,2.15598722351507,0.408689902307966,-0.595924197768275,0.638198078041635,2.36876727660785,-1.55762956391767,-1.06095325198528,1.50573831504874,-2.04130812607458,0.660258593931511,3.4896733702911,-3.32855687979512,1.24703499718318,1.19952647235344,-3.10247346356164,1.24474651415173,1.67934846815462,,,
0.6,0.7,-1.15658088905979,-2.23235830634288,1.50436241827814,0.0526692213027273,2.0198785602985,0.10578780244313,0.189999063495495,1.47025665787305,1.38649214334925,-1.93419764299863,-0.918027002619115,2.59694632721724,0.30028812139129,-2.53964587566085,0.0370193604133886,-1.33547475687044,-2.98158175293884,-0.31318076115017,-1.16007483686783,2.93468359379349,-0.937165509062934,0.0895422263395593,3.12715890376222,2.0152844514168,-1.77056204656165,-2.23384358328873,1.91737015795644,-4.69067255566191,5.71707274836576,-0.622744985301739,0.92941364429288,1.01513193551207,-2.17831879408022,-1.45710660800518,-5.98274644022098,-1.79283910736022,-1.0662345980025,1.22595128536558,2.42167427418027,-1.48194213486215,2.18829385078776,0.198953449834362,-4.72694901068695,-1.29902767589321,0.804746364108259,-0.686429215723727,-0.83291212587698,-1.24093394299829,3.27279310614253,1.7478608376101,,,
0.7,0.8,-1.25358500769904,1.35794652211513,2.56427712370512,0.331694030331151,-0.610145896441222,-5.06185443991055,1.62811621493617,0.166683579229065,-0.991576105509301,2.49436818212971,-5.05822778553097,-1.19484897136277,-1.80096731156371,1.00965637987569,1.48637877798285,-3.25243735341964,0.7602695903532,-1.55570913957909,0.803710614119578,2.20270892356598,0.271082479820789,2.67826597331098,-0.167156401034695,-1.0189606868846,0.698173219597948,-0.553865581931714,-2.07028897360437,1.66540144781335,1.33019904765178,-2.86659170314343,2.55644987075593,0.332285698926189,-1.08163157358189,-0.0664648801325007,1.26660556815642,-2.28412146640259,0.109061078243492,-0.764479323044105,-2.00358010348985,-1.86275645195572,-1.82398665296699,4.24123772073239,0.53850492318425,1.22178375019037,0.138526415183611,-0.0864866024316983,-1.80822412833675,0.846863936662275,-0.25957287145996,-0.755333141671768,,,
0.8,0.9,0.0400239009034142,0.31877160410125,0.772324632442131,2.04794057956307,1.66442407777497,2.43184966430293,1.11512625379363,1.84801178709294,-3.41957677452621,0.893293180458025,0.977108503724518,-0.634949907966531,1.20658952859773,2.15951702360555,0.257475150245731,0.549636118504802,-0.408784522780224,-1.45843672790158,-1.32949286448782,-2.23800289360708,0.390721576507646,1.89140133442457,-1.10736057581823,-3.657168147283,-2.76062421568351,0.0597087776668026,0.577691945950767,0.232170836044584,-3.77523472579614,2.986557137518,1.07605846302119,0.114010759463974,0.856826264183817,1.97154579006937,2.30060876816591,-1.94551170510611,-0.943304530791566,0.867919966889015,-2.68715114322971,0.0147172973718559,-0.615790646620068,2.20137399584509,-0.952862526341853,-0.691051938273551,-0.708546423768488,4.56359712401853,1.03046342125096,-1.08013320119103,0.567239139230345,-0.650774391296837,,,
0.9,1.0,-1.46503679137344,-1.49213241036758,-0.99320737892599,1.6244749375569,1.35225824287811,-0.657725478908601,-0.0450954076330051,2.48378605775998,0.945999913983723,1.94296108399823,1.63625088609024,1.99593756618544,-0.0320278617168418,1.77802523558196,-0.0604864808228987,-0.274496590416412,-0.0198818245146311,-1.36886516477305,1.61964372472403,0.732472141160006,2.39337757792445,3.72602731849955,-2.57768731426988,-3.68714735730894,-2.36053394479404,-0.65158842351975,2.59757289348601,-0.298075334143069,2.7152734126952,1.41470919393573,1.03091218814005,0.620929744990655,-1.05007917964554,-1.58464385779122,1.16235950298532,-1.28801628865518,-1.26706415660331,1.99656577214933,2.79492268601702,3.69527352720757,1.80217382050355,1.29722077369995,2.27910850195407,0.142482417103059,-3.75204527653695,1.03229407502558,0.877277456867889,-1.69995155354368,-2.67786462947105,-3.329591798966,,,
1.0,1.1,-3.31763380566697,2.39203616550534,3.45822524468127,0.707536878709489,-0.196790989720546,-1.65136648162632,1.38420796359217,-0.870229631454724,-2.77591770862265,1.78954903070472,-3.52388381888171,-2.25825414194062,-2.41385824035081,-2.92887971112554,4.22629706785009,-1.34162907002301,-4.17892038006087,2.97083755394025,1.27393531600851,3.5629509726942,-3.95979478720083,3.5736487779145,1.04052703866236,-1.13032019431616,2.42975870536696,1.96710725632097,0.484374050055673,0.269765192726298,3.14043085744899,0.59092120740701,3.24016804205636,2.01896113901305,-3.63252419365971,-0.870377620904804,1.73695765871405,1.22568720810474,-2.2857952346332,-0.951517315251112,-0.815608303222192,-3.71122564975411,0.566161527775791,4.43986756329715,-3.38023306933696,1.72497791801079,-1.39959140291067,-0.701878951276849,-0.788386244254526,0.187838240305984,1.36323750776444,-0.0517027805738488,,,
1.1,1.2,0.00294251269778084,-0.228599613389657,-1.23427211548751,-0.191181971944222,1.6041558310856,1.66836823762611,3.69995309783192,-0.234482805840524,-0.214455559533649,-1.78743324878138,3.09245627785752,6.08583811847784,-0.23650277847394,-0.327005658625549,2.17109141838304,0.794061650181908,-0.0282302573042368,1.39100521799944,0.689400652808229,0.302108937613976,0.571736577620463,1.09787785309722,0.218553665007896,2.34796958033908,-1.96620903664443,-5.55043155867659,1.34141348171962,-5.19920537673989,1.71439165968605,-2.51206533605387,2.08304646886491,0.597952651756358,-0.709847636643395,-2.98602762315499,-0.226510993485331,1.09401815694868,-0.925219523831217,0.671545098856139,-0.728688357271658,-2.02528701480992,4.0031863413811,3.61672973367981,-1.18455320924896,-0.813437963326547,-1.35048175492362,-0.690953206301008,-2.00039504385881,3.10102214061032,0.0429218250142522,-1.21434706883531,,,
1.2,1.3,1.84958201367322,-1.00481108086674,3.08780803669978,0.0296988303804707,2.44759575996005,0.0034027154071001,-1.21495711483478,-0.71193003205416,-1.51482916652321,2.09989741763963,1.25281538022842,0.460287897859289,-1.38930725666937,0.726731324074365,1.02715302835589,1.55977542589838,-1.1048958969477,3.2925250939511,-0.646936882463826,1.26900162104335,0.953368239365401,0.677720370299007,1.07970244577731,-2.09388671690298,0.650490771778257,0.434918917674436,2.13235507969008,1.00174064320083,0.449892677398025,1.14304722864807,-0.684002851445322,-2.58437391853044,0.753222622753823,1.10885193485282,-0.494308828491774,-0.0360895391041974,-0.33304224917097,-0.0927606892121839,-1.24300315438234,0.91411708803711,-0.936753693307299,3.42198952136922,-1.15082992450971,-4.34234945597692,0.178846293671331,1.6160852052275,2.21631527901358,3.80187567688086,-2.36968240231566,1.81203633517944,,,
1.3,1.4,0.56660644776425,-0.0271230021080172,4.43310066549021,1.09613235217935,2.99186990209512,-1.08631811992788,-0.772793861352253,-1.47260513142128,1.00778854071732,2.5280581478466,0.657603420306527,0.632076978992156,-1.46284144459844,0.996180032441916,1.07079743515669,-0.536993699243975,-2.57159938279999,3.36399733584398,-1.74013840754709,-0.766955737425094,1.61145659399616,3.29766522554713,1.26923475994324,-3.1825762310479,2.63224093595566,0.722463029887448,-3.17371485850347,1.81159309517182,3.14169342900623,-2.42622980860964,2.6328555123511,-0.752313157323256,-2.69469059643352,-1.27495427353956,0.247655278036003,0.0445661153797095,-1.44591633219888,-1.05610612775835,-1.25503523033866,-1.45633172667776,2.71201689412899,1.64600107063596,0.746398736023923,-0.735808163797691,0.725745262556987,-0.318530018656508,-0.154649782968684,0.267183053799668,-0.951154510576489,-4.24360665935723,,,
1.4,1.5,-3.3185886967884,-0.76691156951287,-1.76762226282636,-2.3313814360203,0.990354081415756,-0.499567621999231,-2.45781909589062,-3.01774207261569,-0.869335061361338,-1.77929549105591,1.11348984399329,1.5920059460526,0.491991214618287,-1.56178947748258,-2.7409203420492,-0.840128318821629,-1.03051552746483,2.03683225856635,4.09431992205192,-1.54990142639776,1.26818146608216,3.18665778106475,-1.27504415799283,-1.43719056147623,-0.776689365041736,-3.02207982719896,1.5314427842767,-0.323042625317928,1.47042429871633,2.16345164447118,-1.04753391793687,-0.712379856494644,2.36767700396589,0.119191902385424,-4.41287148750215,-1.46406521693758,3.3836865734087,-2.15517623199179,2.89935581135562,3.19400039911001,-2.31514106835062,2.782825000743,1.12838641260009,-3.7994169520939,3.37034689638179,0.605619706707026,1.22351285318196,0.296780812019547,-2.01200487292807,-1.42337275915205,,,
1.5,1.6,1.51121177930002,-0.468153149892247,4.79621881641431,2.15282049256067,1.36000831895153,1.76461888875732,1.03222347694678,0.646095282626219,-0.802694752287815,-0.151848120127994,-1.29763769415122,-1.19582116862269,0.292078938845926,1.12052845666294,1.05980354314239,-0.222680486647928,-2.94026152325142,-2.34589941743966,-1.38620632144066,-1.06825962413843,-3.02020634017001,-1.47364362486126,1.39833701738049,-2.06651370098612,-3.21539722748519,-0.0802052408204153,3.2664377116934,2.33387514345511,-1.48837266028941,-0.0929710542565618,-0.553619747879515,-0.389516447679783,-1.69644208037309,-0.255359141833334,-1.41719160078737,-2.09144249761817,-1.42546166259595,3.34341916424844,1.55316101221632,2.16297385671399,-1.73176061173602,1.78400745223146,-3.94654132491128,0.357944442986356,1.20550737036747,3.66213203292596,3.91998029002927,-0.804156105341732,1.99727326786523,3.19329695523194,,,
1.6,1.7,-2.77318492310507,1.30127588425824,-1.17671067832355,0.382990853975427,2.12076124111223,1.06910861031852,-1.24187293035933,2.52580927376997,1.25057970086451,-1.41421797803869,1.64960160736037,1.76526785000459,3.99433902973274,0.209237703287374,-0.437649523412842,-0.242346770775713,4.23972254017372,-3.41066656430198,-1.88746153755346,1.38626872395904,0.837088538977375,2.35358453055453,-0.876969294180495,-2.75773199738558,-4.36612766651864,-1.25701670648561,0.548810492648368,0.432597609701371,-1.07663558048454,-1.12579545156523,-0.823239311271533,2.43783245482838,-4.51670104679146,0.411440190589157,2.64663542886705,-1.5002300985206,1.4862225806374,3.37428364348244,-0.161900927454004,1.39604422571105,0.994496861275975,-0.363648150051651,1.50597340197581,1.51854811620162,-0.98293570356039,2.39090297130017,0.635835880055919,-1.65326330162276,-1.36407235177857,-2.05144541966198,,,
1.7,1.8,-1.37956416751984,-0.0195674146216682,2.23265516009393,-0.258705713944022,1.33373683263979,-1.62855452122211,-1.18985493483261,-0.648076731558928,0.706670861441087,1.80753065725883,1.69538928333015,-0.367144522208532,-1.32969006729146,-1.85443872184972,0.865544584170506,-0.106527270263076,-1.5583859920028,1.71799187438944,-0.39205601098304,1.14305287469714,-0.398503758068568,0.763849087010321,-0.688670318523366,-1.45466384955709,0.12563329896557,0.00470472496464156,0.830340963919348,-0.610215658805861,1.28603825559476,-2.68401980688577,0.962085063837756,-0.302804796370285,-0.420205078685492,-1.67591717320937,-0.416010842491834,0.513847546434064,-2.02218374671912,0.156465691490543,1.95252284987379,-1.07024115411877,3.75328579537804,2.24672478343153,-0.930914149121089,0.761001433620736,0.948064206672273,0.406374258701911,-3.74709839139581,0.530462182954344,0.888379711482461,0.630065677054879,,,
1.8,1.9,1.54694877841666,-0.847823334702446,-3.76968708744548,2.3448506546552,1.14606108268797,0.374643319372579,5.86764477191342,-2.09939703937804,-1.28750530969492,-5.3037918545851,-2.45380047334452,-0.260076791256238,1.07683129920361,-1.76978186721982,-2.12839619509946,3.84227782428045,0.961646084423603,-2.00217523089889,5.67096521048264,1.26045695149155,-1.36717343148684,-0.684436710914471,1.25315244337001,2.40677908375336,1.37950772243836,1.81136985471315,0.559169652967571,-1.69873047103125,2.42842137130187,-0.852701958637376,1.1645637132616,-0.0929904937968398,0.0802355538008128,0.213487033080293,-0.377925229261292,3.25272997333102,-2.8379898305251,-0.425302037842293,1.36067842014039,0.758598554561745,2.2909675487736,-1.68123838102379,-0.800688843608186,-2.44557914020732,-1.58435638274633,-2.59658895981263,-1.65759052294503,0.473730310219512,-1.24085571535322,-3.71010952766359,,,
1.9,2.0,-1.22082506564589,-0.497338882505742,1.32074608444538,2.50204940754068,1.22355108646505,-0.223747709466705,-1.29903826236884,-0.776214386781921,-0.869292634200802,-1.39368761174202,1.57072616553869,1.76632079215019,1.96488421257976,-3.13788402021873,-1.48732326794496,0.107737385980569,-0.452735194797825,-1.0235245022967,1.91664445196357,0.869088262800819,-2.25438754359147,-0.926588812084567,-1.30534895407157,-0.231066756337278,-1.47134681589392,-2.25875973891762,0.269798180715215,-1.64807635996559,0.370329611762003,-1.94914930701637,2.59870428865079,1.872881204141,-1.21291157388318,0.868256004274856,-1.75976752568427,-0.152740673861283,1.15850450707281,-0.081505341478509,2.19947862016223,2.69132682922351,1.95669473360073,-0.261615218703724,-2.80603507444815,-2.1625902053865,-0.776019717215764,-0.137477839722539,-1.21880508824945,-1.1310034827153,0.639458777494653,-2.33763961409578,,,
2.0,2.1,2.97682103159632,0.6637140745606,-0.171246714518869,1.78118161753372,1.42971089741128,1.21322144784784,-0.337156035891973,-6.37217212692342,-0.107169166200335,-3.52650997379181,2.6613610585236,-0.531735158719905,-0.575845429664075,-5.81999952036502,2.06616840611659,0.563273770293763,-5.0739196537086,1.91628468806411,7.6178727717803,-4.48273533469124,-0.05973725159027,-0.929764351705911,-2.28640224137518,4.06146544705906,-3.25356792421827,1.39491986299245,-1.44270701561409,-0.263905053942344,-0.508713086352647,0.173478094095145,-2.41613816466446,-2.01634345926973,3.7917836534071,0.188440363711339,4.24927579304243,1.62435822095484,1.83068308249619,-4.01401607018206,-2.31755014196848,-2.25456581351344,-0.135258920097315,2.12853169751258,-1.21382552024341,2.41486231616609,-1.85747887951972,-4.6636570064605,-2.21071529052012,-0.533756910476013,-0.0186583034918115,0.910351723421371,,,
2.1,2.2,0.588846073485853,1.19602205999125,2.70810712036,0.831386412814,1.83093545202126,-2.14027537177742,1.96010700949098,-0.886830278659494,1.64721049327601,-2.36176100099554,-2.09165930665075,-0.830893661036872,2.35583540764596,-2.27782133924736,-1.87093956597154,-0.0242347183995278,1.02665760994215,0.392422113169452,-0.666206933154701,1.63775677668632,-0.749262976184406,0.0111246674287723,0.532988161523799,-3.56658105263342,0.476882709052065,-2.21183032290678,0.600723809698169,-0.77938109579893,0.902018212241312,1.35125935098703,1.44957541690666,-0.242690523237852,-3.06710692364147,1.13879802976562,-3.49146152278356,0.0927441390592058,0.524061483991716,-1.92698854877169,-0.491911217126778,1.65744121338439,1.86609313043487,3.13129690099302,-0.0517538683188628,-4.14443518707577,-0.793033613594441,2.22087669233407,-0.326310749094584,2.00759981178538,-1.28032083035844,0.15948486849958,,,
2.2,2.3,-3.38568356387666,2.03477565940673,1.26998567426876,-0.611960142198271,0.854631568568371,-0.664076332375726,0.178130196776701,0.803290032145864,-0.758903309013727,0.0835379883108125,-1.3483867877042,-0.635201153363848,0.898468982416352,2.80131320329932,0.572447911995825,-3.92727992847732,-1.03632340695166,-4.73067469695904,-0.71716919925457,0.894201156962548,-1.08745999142748,2.85569279102193,-2.29551544369771,1.80870797768336,-1.20248105884086,1.94046425522815,5.83472310467492,-1.17217761141632,-0.209134870713454,4.46056834982749,3.21039521462341,6.95145666192604,-2.1999983832633,4.18409136049878,0.759472200547565,-3.15556210903395,-0.149957644994364,1.44555265724796,3.41767152095492,2.72717917495781,1.81743146992586,2.04645242113262,-1.90939006755421,-0.283607025409339,-1.95904975974213,0.0393427114585407,1.26777581206735,-3.32550464822513,0.989870077761044,-2.4501294195438,,,
2.3,2.4,-0.488198592624695,-1.09254712691361,-1.32228710895179,-0.606907075002112,2.85388559859612,0.218202616488629,-1.63897896152918,0.575150041859665,0.332533518879666,2.36028157651246,0.755716148145986,0.533852075219828,-0.900812477131349,-3.97730550017679,-0.339745321692641,-0.252976691270395,-0.466849449636295,0.815110684326396,3.62693898633812,-1.29983249663371,1.5706496761355,2.67446195442727,0.755777803867609,-3.88319565260341,-1.54793753100892,-0.181372925213423,-0.673153867750792,-2.01996503825753,3.26148068480058,1.76798432580635,2.92194843483694,-0.144258970086289,2.21646972211498,-0.28735536300575,3.13649910605972,0.342111101114112,-0.0576749910988138,-2.19579095362317,-1.03773792885122,-1.73266640580466,-0.208102014787992,0.140591231512377,-0.652950085011339,-0.182458132134831,-0.448539290312923,-1.11077781538217,-3.25661036951738,0.298742657140007,-2.90603968139518,1.23778277137667,,,
2.4,2.5,-2.15616386953233,-1.33290795915105,-0.557059335774373,0.339951114852152,-0.563733461702318,-2.28853971255126,0.516912138214922,3.11239609193249,2.89459048370558,-0.58382756269164,2.37843875782424,-1.9465415396898,0.178480224102955,-0.337222683261412,-0.536147078286055,0.236404204634036,-2.94015374783926,3.43308769757597,0.0783730745712926,1.02452363082663,-1.63833401862295,-0.37754522690096,-3.71427363184686,-1.56768211139015,-1.58126090995035,0.35700991362944,0.00835129455646182,-1.70804837241887,2.83189624931246,-0.562202174380604,1.69740319747029,0.371537977973951,-1.64109915453121,2.75301861553217,-3.75624723825591,0.935106025763558,-0.376050115589752,0.741772993495607,2.31980584994586,-0.48179954023363,2.12401167834398,0.95643758423328,-1.08008990753712,-1.13661064540939,-0.924179562618883,1.82165472441751,0.735168431591556,-2.4869834321712,-0.410542732285207,-0.551625773999562,,,
2.5,2.6,1.37881296061145,-1.12914415664187,4.7758841055428,-0.136501855561357,-2.04927775420084,0.211728298887886,1.08877077520669,0.220850415254667,-2.07719035779118,2.25985244843422,3.35775657756306,2.64376084838762,1.35848609459951,-0.686816499907193,0.815818841707736,1.93315278514834,-0.213793653630425,2.27270157783792,-1.10086098246545,-0.366636677079596,-0.62742633956824,1.48066716399762,-0.997929740806428,2.18373137555264,-2.0157409963734,-2.13233486433797,-0.774990201258137,0.336727407015108,-0.526170993671044,1.97193608205678,2.79633738099436,-0.93930201152594,0.0493858891360088,0.704588765216077,0.518427483018597,0.184342880606744,-3.04653018271994,-1.93001848923548,-1.60902344388626,-0.0337993154813671,2.24483484094204,4.76376353373781,-0.602664215487312,-1.96549789560035,-4.0013876150368,2.37504570758208,2.6638596332302,0.541782527135,0.0380511191766738,-4.16424548251387,,,
2.6,2.7,-1.3329959701647,-1.18883802893281,0.560686680689653,2.12838566891993,-1.72826297660466,-1.47573712641656,-0.529400742178531,1.95199596166756,-2.61264403010361,0.058008696847583,0.509044040721609,1.2069432724943,-0.483995828831695,-0.847697450869864,3.10816193376628,-0.846540966624373,-3.6337988961162,-1.2394880741945,0.995963402213537,1.41958397060607,-2.91162001343447,1.22533412259867,-1.35171621449816,0.783412916721203,-1.46120423404449,1.03426698606251,3.93281118222532,0.987472874345992,-0.241856742234803,2.23337929619378,0.362529607431243,-2.13529227782332,-3.43959686240657,2.29826097570196,-1.3296066070049,-0.881038673309384,0.34133576670169,0.0287484638451527,3.94802608286607,4.06767664745933,3.56051485207831,0.47455853601654,-2.45320593567447,-0.800554127545072,2.45513137004464,5.39687720939536,1.34001090508905,-4.96858725220808,-0.894968766925007,-3.16570419725118,,,
2.7,2.8,-1.88031953510677,1.08273742502546,0.289096226186868,0.145442968351952,0.840005415092104,1.62217493278532,0.439479269304948,-1.70091727510146,-1.63862280728423,-1.62022878351422,-0.835354535882028,3.50367835226417,2.26631918545743,-0.445512550837549,1.41280140659686,2.53506482093936,2.798295795401,-1.83915296130029,-0.484995151124497,-2.60304021792617,0.557821899682088,1.81434082934347,1.60635932454516,-1.91409589083802,-2.62086186932772,-0.969964225780648,-3.7339674125233,0.354753396626877,-1.49512297512331,-2.63656250448595,-2.5903194092648,3.10438709079862,-6.2840082271021,0.0955553256654889,2.07253177710775,-3.83953381431878,1.75738799012675,-0.801417604398757,-1.2199005804177,0.542999021690137,2.25563232832019,1.77447944089314,-2.91550509519634,-3.77081899323202,-0.21100977834489,2.43657671269048,-1.77221947025634,-0.0110825738723026,1.87794630096308,0.214687098906287,,,
2.8,2.9,0.887297082996313,-2.98320378743449,2.9928511278737,6.78204774526589,3.32840930827169,3.40549253368447,1.65617552414324,-2.41635347548855,-1.7436179599396,-3.72273092079473,-0.231783232475308,-1.29429084285747,4.28436105903319,1.84107283325842,-0.280869343591292,-0.228307163277049,-0.657884021974231,-2.75724758408696,-2.67989886086249,2.84935665597603,1.92378770822667,-1.91987729012316,-1.7331414962177,-0.232113221169467,-1.8427199560257,0.0705790707590537,-0.949689569467352,-0.253576192866496,-1.95468846615996,1.08025449994452,0.429449652157862,2.14334880861348,-5.56355396724729,4.03173406805506,-2.79465914024831,-0.870818234610577,-0.671051903499333,0.944317732177208,1.05030006790658,0.677226234574206,5.48815639900187,0.305304178613231,2.24419422180127,-4.36391219394466,-3.83695718903544,1.90663421245902,0.112376343535206,2.84732141005798,-0.573021738179849,-0.0149907763591499,,,
2.9,3.0,0.998064176968434,-1.14973366903289,1.83976122422861,-2.85683916955725,-2.85966339505963,-2.94074424162789,-1.27050108286986,-2.60104662006269,0.696816132825509,2.80529156470863,0.516780865160611,-0.583761148071988,2.75198431550269,-0.56886907769016,-1.34360919908592,-0.629229295679807,3.16683411945325,1.57823058453391,-2.35940632365108,-0.241013836344989,3.48188419823192,3.21613458019436,-3.71401529146625,0.255398147149734,2.46816949123091,0.12021953833055,-2.1728488261266,4.61660248893364,-1.13519660356753,1.69130597349401,2.54997349492956,0.470184758609311,-1.29553526038967,2.08648663420679,1.59280173455874,0.533450391850695,-0.368246157075794,-2.41228341183792,-1.03706268207785,0.149123758242417,1.02350465346359,3.78710781674726,1.89465489141229,-1.4585107455624,-1.94916767105757,2.59893995597665,-1.52616094249858,1.76309349603794,-2.24243015050549,-3.06566699250248,,,
1 Time:1x50 End Time V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: V 1: Event Id Event Date Event Duration
2 0.1 0.2 -1.41232437907546 -4.38221566333654 -0.589097699064319 0.217372153255027 1.27685520628543 -0.756778481698309 -0.543962016747266 -0.187181516773856 -1.58507038797054 3.13563802128473 1.91172848200559 -3.86922895374677 4.12192248984278 1.45303296714151 -0.656269348110641 2.37407036184574 2.58975534728869 -2.40859466417441 -0.617070760407336 -0.304654607987442 0.984240355760732 6.97482380197961 -1.11771787282909 -0.86525116147396 -3.23825575513482 -0.538260960885557 5.49599735857233 -0.164809703737508 -1.27860257610813 4.01751415924776 4.74927678631869 1.88634276049864 2.12067929110647 0.399126112513965 -3.10239276974533 1.0629811449084 -2.60833706563185 0.284012867924059 5.49759259653058 6.58112241867482 -0.192683715345061 4.44602723389523 -3.07100252473818 -1.6052712435052 4.00766074970893 5.78511623305967 0.634161961205727 3.12744389732379 1.42603298182921 -3.16319555524887
3 0.2 0.3 1.23025167728829 2.55042197348026 -0.996797522796963 3.11806930521677 0.399136455645935 0.56095615427698 4.59284506207901 -1.84567236703288 1.8816965753032 0.750729173641131 -0.829389368162276 -0.487405081904131 4.91804790857892 -2.1543740276208 0.26684094368407 2.67856896870312 0.691289502023455 0.987665148165264 3.78934998772079 -3.34374902882119 -5.44868781295565 -2.02522881313808 1.46967805316524 -0.404231945768228 1.36218718246369 2.32809332192605 3.46211643962893 -0.0935594029982055 2.55546097585287 1.8285128290357 -3.33242202454528 -0.81647528277583 4.78109928979897 1.31043910420667 -4.26628298568948 4.28910480462471 0.530555688570553 -0.474160971125616 0.53544116203418 3.56379070526742 0.0519593475829907 -3.03383843699085 -0.345415155244719 1.34779086652161 -0.593473775123416 -2.14076326226118 -1.00822931767497 -3.22067324001478 1.29926372514046 3.04170584248838
4 0.3 0.4 -1.27952659735789 -0.678694034794376 -7.82905738068359 -0.453899386644462 -0.753031099492228 0.979661086218665 -0.145265745943201 3.3305149026421 1.40553600310107 -2.71025217679511 1.91691429643109 -1.66337966276611 0.491278647558013 -0.217054613705415 1.30642053034477 4.42155452174562 -1.20798772143527 -3.99764898858139 1.16793671123473 -4.00477404985 2.85824304874785 0.0389253585144361 -0.561022996231375 0.953884500494647 -0.581119570114544 3.66788193041374 0.937030386226416 -1.85477673926392 -3.50829167417705 -2.29384068911566 -3.01630266121275 3.70404305303742 -2.99212185026577 -0.805293998539477 -0.197505568250145 -4.06364555944777 2.20829484109197 2.21595280420013 1.46393840866214 0.463084322420088 -0.0925093216843882 -2.03260255466236 1.18708012237896 1.21157092378972 0.362154361384203 1.39296797924311 -1.04406256191426 -1.62062237565984 0.351120592419513 -1.00927590927613
5 0.4 0.5 -2.09063898202145 -0.885281257588577 2.95731628011309 1.00726807670656 1.18387334367457 -2.55830621315147 0.328466116650074 2.70320901698313 1.97284271456488 0.81107860874752 2.09099386575403 0.3555519090344 2.37598172887946 0.66818278902417 -0.190371511963837 -3.343388865518 1.21793902737849 0.0984098117557504 1.11595575053085 1.36701904711547 -2.28258562180032 -0.560253392047431 -1.59159179981677 0.56780414999771 1.33190662675105 0.639266075327812 3.70709664830959 -0.507385000728346 0.475155225763881 3.10663479560096 2.25207747584878 3.4745549102939 -1.44545077904603 5.65483928695995 -2.25683275445989 1.68259107985316 0.661591836783155 -0.457201675623602 2.05726753879515 3.16098266017121 2.04449928381376 -2.19163282650609 -3.50026559979492 -1.53775220398596 -3.73802650641534 1.62864227404371 -3.78922329429375 -1.82410237974745 2.288643534796 3.24115982383583
6 0.5 0.6 -2.98522799710803 4.36673455162735 -0.913239491117599 3.37091298095012 -2.85566029410916 -0.240479200085136 -0.0912376280480195 1.91082754809618 -2.21321531259226 -2.05032531808526 -0.40695956382635 -1.27738678943432 1.73181147069958 -1.33457987938084 0.641156726971704 -2.34938281658383 -1.35937565189658 -0.115081669604994 0.442052347494917 4.82608960749163 -4.77444037931449 -2.00083972335266 -1.99839808817676 -1.97880121135913 -4.0278099493376 0.45826619586843 -2.86175180125398 3.003887735408 2.08768815172436 -0.175604692890707 -3.89226036160365 -1.66556725296722 -1.75134329758897 2.15598722351507 0.408689902307966 -0.595924197768275 0.638198078041635 2.36876727660785 -1.55762956391767 -1.06095325198528 1.50573831504874 -2.04130812607458 0.660258593931511 3.4896733702911 -3.32855687979512 1.24703499718318 1.19952647235344 -3.10247346356164 1.24474651415173 1.67934846815462
7 0.6 0.7 -1.15658088905979 -2.23235830634288 1.50436241827814 0.0526692213027273 2.0198785602985 0.10578780244313 0.189999063495495 1.47025665787305 1.38649214334925 -1.93419764299863 -0.918027002619115 2.59694632721724 0.30028812139129 -2.53964587566085 0.0370193604133886 -1.33547475687044 -2.98158175293884 -0.31318076115017 -1.16007483686783 2.93468359379349 -0.937165509062934 0.0895422263395593 3.12715890376222 2.0152844514168 -1.77056204656165 -2.23384358328873 1.91737015795644 -4.69067255566191 5.71707274836576 -0.622744985301739 0.92941364429288 1.01513193551207 -2.17831879408022 -1.45710660800518 -5.98274644022098 -1.79283910736022 -1.0662345980025 1.22595128536558 2.42167427418027 -1.48194213486215 2.18829385078776 0.198953449834362 -4.72694901068695 -1.29902767589321 0.804746364108259 -0.686429215723727 -0.83291212587698 -1.24093394299829 3.27279310614253 1.7478608376101
8 0.7 0.8 -1.25358500769904 1.35794652211513 2.56427712370512 0.331694030331151 -0.610145896441222 -5.06185443991055 1.62811621493617 0.166683579229065 -0.991576105509301 2.49436818212971 -5.05822778553097 -1.19484897136277 -1.80096731156371 1.00965637987569 1.48637877798285 -3.25243735341964 0.7602695903532 -1.55570913957909 0.803710614119578 2.20270892356598 0.271082479820789 2.67826597331098 -0.167156401034695 -1.0189606868846 0.698173219597948 -0.553865581931714 -2.07028897360437 1.66540144781335 1.33019904765178 -2.86659170314343 2.55644987075593 0.332285698926189 -1.08163157358189 -0.0664648801325007 1.26660556815642 -2.28412146640259 0.109061078243492 -0.764479323044105 -2.00358010348985 -1.86275645195572 -1.82398665296699 4.24123772073239 0.53850492318425 1.22178375019037 0.138526415183611 -0.0864866024316983 -1.80822412833675 0.846863936662275 -0.25957287145996 -0.755333141671768
9 0.8 0.9 0.0400239009034142 0.31877160410125 0.772324632442131 2.04794057956307 1.66442407777497 2.43184966430293 1.11512625379363 1.84801178709294 -3.41957677452621 0.893293180458025 0.977108503724518 -0.634949907966531 1.20658952859773 2.15951702360555 0.257475150245731 0.549636118504802 -0.408784522780224 -1.45843672790158 -1.32949286448782 -2.23800289360708 0.390721576507646 1.89140133442457 -1.10736057581823 -3.657168147283 -2.76062421568351 0.0597087776668026 0.577691945950767 0.232170836044584 -3.77523472579614 2.986557137518 1.07605846302119 0.114010759463974 0.856826264183817 1.97154579006937 2.30060876816591 -1.94551170510611 -0.943304530791566 0.867919966889015 -2.68715114322971 0.0147172973718559 -0.615790646620068 2.20137399584509 -0.952862526341853 -0.691051938273551 -0.708546423768488 4.56359712401853 1.03046342125096 -1.08013320119103 0.567239139230345 -0.650774391296837
10 0.9 1.0 -1.46503679137344 -1.49213241036758 -0.99320737892599 1.6244749375569 1.35225824287811 -0.657725478908601 -0.0450954076330051 2.48378605775998 0.945999913983723 1.94296108399823 1.63625088609024 1.99593756618544 -0.0320278617168418 1.77802523558196 -0.0604864808228987 -0.274496590416412 -0.0198818245146311 -1.36886516477305 1.61964372472403 0.732472141160006 2.39337757792445 3.72602731849955 -2.57768731426988 -3.68714735730894 -2.36053394479404 -0.65158842351975 2.59757289348601 -0.298075334143069 2.7152734126952 1.41470919393573 1.03091218814005 0.620929744990655 -1.05007917964554 -1.58464385779122 1.16235950298532 -1.28801628865518 -1.26706415660331 1.99656577214933 2.79492268601702 3.69527352720757 1.80217382050355 1.29722077369995 2.27910850195407 0.142482417103059 -3.75204527653695 1.03229407502558 0.877277456867889 -1.69995155354368 -2.67786462947105 -3.329591798966
11 1.0 1.1 -3.31763380566697 2.39203616550534 3.45822524468127 0.707536878709489 -0.196790989720546 -1.65136648162632 1.38420796359217 -0.870229631454724 -2.77591770862265 1.78954903070472 -3.52388381888171 -2.25825414194062 -2.41385824035081 -2.92887971112554 4.22629706785009 -1.34162907002301 -4.17892038006087 2.97083755394025 1.27393531600851 3.5629509726942 -3.95979478720083 3.5736487779145 1.04052703866236 -1.13032019431616 2.42975870536696 1.96710725632097 0.484374050055673 0.269765192726298 3.14043085744899 0.59092120740701 3.24016804205636 2.01896113901305 -3.63252419365971 -0.870377620904804 1.73695765871405 1.22568720810474 -2.2857952346332 -0.951517315251112 -0.815608303222192 -3.71122564975411 0.566161527775791 4.43986756329715 -3.38023306933696 1.72497791801079 -1.39959140291067 -0.701878951276849 -0.788386244254526 0.187838240305984 1.36323750776444 -0.0517027805738488
12 1.1 1.2 0.00294251269778084 -0.228599613389657 -1.23427211548751 -0.191181971944222 1.6041558310856 1.66836823762611 3.69995309783192 -0.234482805840524 -0.214455559533649 -1.78743324878138 3.09245627785752 6.08583811847784 -0.23650277847394 -0.327005658625549 2.17109141838304 0.794061650181908 -0.0282302573042368 1.39100521799944 0.689400652808229 0.302108937613976 0.571736577620463 1.09787785309722 0.218553665007896 2.34796958033908 -1.96620903664443 -5.55043155867659 1.34141348171962 -5.19920537673989 1.71439165968605 -2.51206533605387 2.08304646886491 0.597952651756358 -0.709847636643395 -2.98602762315499 -0.226510993485331 1.09401815694868 -0.925219523831217 0.671545098856139 -0.728688357271658 -2.02528701480992 4.0031863413811 3.61672973367981 -1.18455320924896 -0.813437963326547 -1.35048175492362 -0.690953206301008 -2.00039504385881 3.10102214061032 0.0429218250142522 -1.21434706883531
13 1.2 1.3 1.84958201367322 -1.00481108086674 3.08780803669978 0.0296988303804707 2.44759575996005 0.0034027154071001 -1.21495711483478 -0.71193003205416 -1.51482916652321 2.09989741763963 1.25281538022842 0.460287897859289 -1.38930725666937 0.726731324074365 1.02715302835589 1.55977542589838 -1.1048958969477 3.2925250939511 -0.646936882463826 1.26900162104335 0.953368239365401 0.677720370299007 1.07970244577731 -2.09388671690298 0.650490771778257 0.434918917674436 2.13235507969008 1.00174064320083 0.449892677398025 1.14304722864807 -0.684002851445322 -2.58437391853044 0.753222622753823 1.10885193485282 -0.494308828491774 -0.0360895391041974 -0.33304224917097 -0.0927606892121839 -1.24300315438234 0.91411708803711 -0.936753693307299 3.42198952136922 -1.15082992450971 -4.34234945597692 0.178846293671331 1.6160852052275 2.21631527901358 3.80187567688086 -2.36968240231566 1.81203633517944
14 1.3 1.4 0.56660644776425 -0.0271230021080172 4.43310066549021 1.09613235217935 2.99186990209512 -1.08631811992788 -0.772793861352253 -1.47260513142128 1.00778854071732 2.5280581478466 0.657603420306527 0.632076978992156 -1.46284144459844 0.996180032441916 1.07079743515669 -0.536993699243975 -2.57159938279999 3.36399733584398 -1.74013840754709 -0.766955737425094 1.61145659399616 3.29766522554713 1.26923475994324 -3.1825762310479 2.63224093595566 0.722463029887448 -3.17371485850347 1.81159309517182 3.14169342900623 -2.42622980860964 2.6328555123511 -0.752313157323256 -2.69469059643352 -1.27495427353956 0.247655278036003 0.0445661153797095 -1.44591633219888 -1.05610612775835 -1.25503523033866 -1.45633172667776 2.71201689412899 1.64600107063596 0.746398736023923 -0.735808163797691 0.725745262556987 -0.318530018656508 -0.154649782968684 0.267183053799668 -0.951154510576489 -4.24360665935723
15 1.4 1.5 -3.3185886967884 -0.76691156951287 -1.76762226282636 -2.3313814360203 0.990354081415756 -0.499567621999231 -2.45781909589062 -3.01774207261569 -0.869335061361338 -1.77929549105591 1.11348984399329 1.5920059460526 0.491991214618287 -1.56178947748258 -2.7409203420492 -0.840128318821629 -1.03051552746483 2.03683225856635 4.09431992205192 -1.54990142639776 1.26818146608216 3.18665778106475 -1.27504415799283 -1.43719056147623 -0.776689365041736 -3.02207982719896 1.5314427842767 -0.323042625317928 1.47042429871633 2.16345164447118 -1.04753391793687 -0.712379856494644 2.36767700396589 0.119191902385424 -4.41287148750215 -1.46406521693758 3.3836865734087 -2.15517623199179 2.89935581135562 3.19400039911001 -2.31514106835062 2.782825000743 1.12838641260009 -3.7994169520939 3.37034689638179 0.605619706707026 1.22351285318196 0.296780812019547 -2.01200487292807 -1.42337275915205
16 1.5 1.6 1.51121177930002 -0.468153149892247 4.79621881641431 2.15282049256067 1.36000831895153 1.76461888875732 1.03222347694678 0.646095282626219 -0.802694752287815 -0.151848120127994 -1.29763769415122 -1.19582116862269 0.292078938845926 1.12052845666294 1.05980354314239 -0.222680486647928 -2.94026152325142 -2.34589941743966 -1.38620632144066 -1.06825962413843 -3.02020634017001 -1.47364362486126 1.39833701738049 -2.06651370098612 -3.21539722748519 -0.0802052408204153 3.2664377116934 2.33387514345511 -1.48837266028941 -0.0929710542565618 -0.553619747879515 -0.389516447679783 -1.69644208037309 -0.255359141833334 -1.41719160078737 -2.09144249761817 -1.42546166259595 3.34341916424844 1.55316101221632 2.16297385671399 -1.73176061173602 1.78400745223146 -3.94654132491128 0.357944442986356 1.20550737036747 3.66213203292596 3.91998029002927 -0.804156105341732 1.99727326786523 3.19329695523194
17 1.6 1.7 -2.77318492310507 1.30127588425824 -1.17671067832355 0.382990853975427 2.12076124111223 1.06910861031852 -1.24187293035933 2.52580927376997 1.25057970086451 -1.41421797803869 1.64960160736037 1.76526785000459 3.99433902973274 0.209237703287374 -0.437649523412842 -0.242346770775713 4.23972254017372 -3.41066656430198 -1.88746153755346 1.38626872395904 0.837088538977375 2.35358453055453 -0.876969294180495 -2.75773199738558 -4.36612766651864 -1.25701670648561 0.548810492648368 0.432597609701371 -1.07663558048454 -1.12579545156523 -0.823239311271533 2.43783245482838 -4.51670104679146 0.411440190589157 2.64663542886705 -1.5002300985206 1.4862225806374 3.37428364348244 -0.161900927454004 1.39604422571105 0.994496861275975 -0.363648150051651 1.50597340197581 1.51854811620162 -0.98293570356039 2.39090297130017 0.635835880055919 -1.65326330162276 -1.36407235177857 -2.05144541966198
18 1.7 1.8 -1.37956416751984 -0.0195674146216682 2.23265516009393 -0.258705713944022 1.33373683263979 -1.62855452122211 -1.18985493483261 -0.648076731558928 0.706670861441087 1.80753065725883 1.69538928333015 -0.367144522208532 -1.32969006729146 -1.85443872184972 0.865544584170506 -0.106527270263076 -1.5583859920028 1.71799187438944 -0.39205601098304 1.14305287469714 -0.398503758068568 0.763849087010321 -0.688670318523366 -1.45466384955709 0.12563329896557 0.00470472496464156 0.830340963919348 -0.610215658805861 1.28603825559476 -2.68401980688577 0.962085063837756 -0.302804796370285 -0.420205078685492 -1.67591717320937 -0.416010842491834 0.513847546434064 -2.02218374671912 0.156465691490543 1.95252284987379 -1.07024115411877 3.75328579537804 2.24672478343153 -0.930914149121089 0.761001433620736 0.948064206672273 0.406374258701911 -3.74709839139581 0.530462182954344 0.888379711482461 0.630065677054879
19 1.8 1.9 1.54694877841666 -0.847823334702446 -3.76968708744548 2.3448506546552 1.14606108268797 0.374643319372579 5.86764477191342 -2.09939703937804 -1.28750530969492 -5.3037918545851 -2.45380047334452 -0.260076791256238 1.07683129920361 -1.76978186721982 -2.12839619509946 3.84227782428045 0.961646084423603 -2.00217523089889 5.67096521048264 1.26045695149155 -1.36717343148684 -0.684436710914471 1.25315244337001 2.40677908375336 1.37950772243836 1.81136985471315 0.559169652967571 -1.69873047103125 2.42842137130187 -0.852701958637376 1.1645637132616 -0.0929904937968398 0.0802355538008128 0.213487033080293 -0.377925229261292 3.25272997333102 -2.8379898305251 -0.425302037842293 1.36067842014039 0.758598554561745 2.2909675487736 -1.68123838102379 -0.800688843608186 -2.44557914020732 -1.58435638274633 -2.59658895981263 -1.65759052294503 0.473730310219512 -1.24085571535322 -3.71010952766359
20 1.9 2.0 -1.22082506564589 -0.497338882505742 1.32074608444538 2.50204940754068 1.22355108646505 -0.223747709466705 -1.29903826236884 -0.776214386781921 -0.869292634200802 -1.39368761174202 1.57072616553869 1.76632079215019 1.96488421257976 -3.13788402021873 -1.48732326794496 0.107737385980569 -0.452735194797825 -1.0235245022967 1.91664445196357 0.869088262800819 -2.25438754359147 -0.926588812084567 -1.30534895407157 -0.231066756337278 -1.47134681589392 -2.25875973891762 0.269798180715215 -1.64807635996559 0.370329611762003 -1.94914930701637 2.59870428865079 1.872881204141 -1.21291157388318 0.868256004274856 -1.75976752568427 -0.152740673861283 1.15850450707281 -0.081505341478509 2.19947862016223 2.69132682922351 1.95669473360073 -0.261615218703724 -2.80603507444815 -2.1625902053865 -0.776019717215764 -0.137477839722539 -1.21880508824945 -1.1310034827153 0.639458777494653 -2.33763961409578
21 2.0 2.1 2.97682103159632 0.6637140745606 -0.171246714518869 1.78118161753372 1.42971089741128 1.21322144784784 -0.337156035891973 -6.37217212692342 -0.107169166200335 -3.52650997379181 2.6613610585236 -0.531735158719905 -0.575845429664075 -5.81999952036502 2.06616840611659 0.563273770293763 -5.0739196537086 1.91628468806411 7.6178727717803 -4.48273533469124 -0.05973725159027 -0.929764351705911 -2.28640224137518 4.06146544705906 -3.25356792421827 1.39491986299245 -1.44270701561409 -0.263905053942344 -0.508713086352647 0.173478094095145 -2.41613816466446 -2.01634345926973 3.7917836534071 0.188440363711339 4.24927579304243 1.62435822095484 1.83068308249619 -4.01401607018206 -2.31755014196848 -2.25456581351344 -0.135258920097315 2.12853169751258 -1.21382552024341 2.41486231616609 -1.85747887951972 -4.6636570064605 -2.21071529052012 -0.533756910476013 -0.0186583034918115 0.910351723421371
22 2.1 2.2 0.588846073485853 1.19602205999125 2.70810712036 0.831386412814 1.83093545202126 -2.14027537177742 1.96010700949098 -0.886830278659494 1.64721049327601 -2.36176100099554 -2.09165930665075 -0.830893661036872 2.35583540764596 -2.27782133924736 -1.87093956597154 -0.0242347183995278 1.02665760994215 0.392422113169452 -0.666206933154701 1.63775677668632 -0.749262976184406 0.0111246674287723 0.532988161523799 -3.56658105263342 0.476882709052065 -2.21183032290678 0.600723809698169 -0.77938109579893 0.902018212241312 1.35125935098703 1.44957541690666 -0.242690523237852 -3.06710692364147 1.13879802976562 -3.49146152278356 0.0927441390592058 0.524061483991716 -1.92698854877169 -0.491911217126778 1.65744121338439 1.86609313043487 3.13129690099302 -0.0517538683188628 -4.14443518707577 -0.793033613594441 2.22087669233407 -0.326310749094584 2.00759981178538 -1.28032083035844 0.15948486849958
23 2.2 2.3 -3.38568356387666 2.03477565940673 1.26998567426876 -0.611960142198271 0.854631568568371 -0.664076332375726 0.178130196776701 0.803290032145864 -0.758903309013727 0.0835379883108125 -1.3483867877042 -0.635201153363848 0.898468982416352 2.80131320329932 0.572447911995825 -3.92727992847732 -1.03632340695166 -4.73067469695904 -0.71716919925457 0.894201156962548 -1.08745999142748 2.85569279102193 -2.29551544369771 1.80870797768336 -1.20248105884086 1.94046425522815 5.83472310467492 -1.17217761141632 -0.209134870713454 4.46056834982749 3.21039521462341 6.95145666192604 -2.1999983832633 4.18409136049878 0.759472200547565 -3.15556210903395 -0.149957644994364 1.44555265724796 3.41767152095492 2.72717917495781 1.81743146992586 2.04645242113262 -1.90939006755421 -0.283607025409339 -1.95904975974213 0.0393427114585407 1.26777581206735 -3.32550464822513 0.989870077761044 -2.4501294195438
24 2.3 2.4 -0.488198592624695 -1.09254712691361 -1.32228710895179 -0.606907075002112 2.85388559859612 0.218202616488629 -1.63897896152918 0.575150041859665 0.332533518879666 2.36028157651246 0.755716148145986 0.533852075219828 -0.900812477131349 -3.97730550017679 -0.339745321692641 -0.252976691270395 -0.466849449636295 0.815110684326396 3.62693898633812 -1.29983249663371 1.5706496761355 2.67446195442727 0.755777803867609 -3.88319565260341 -1.54793753100892 -0.181372925213423 -0.673153867750792 -2.01996503825753 3.26148068480058 1.76798432580635 2.92194843483694 -0.144258970086289 2.21646972211498 -0.28735536300575 3.13649910605972 0.342111101114112 -0.0576749910988138 -2.19579095362317 -1.03773792885122 -1.73266640580466 -0.208102014787992 0.140591231512377 -0.652950085011339 -0.182458132134831 -0.448539290312923 -1.11077781538217 -3.25661036951738 0.298742657140007 -2.90603968139518 1.23778277137667
25 2.4 2.5 -2.15616386953233 -1.33290795915105 -0.557059335774373 0.339951114852152 -0.563733461702318 -2.28853971255126 0.516912138214922 3.11239609193249 2.89459048370558 -0.58382756269164 2.37843875782424 -1.9465415396898 0.178480224102955 -0.337222683261412 -0.536147078286055 0.236404204634036 -2.94015374783926 3.43308769757597 0.0783730745712926 1.02452363082663 -1.63833401862295 -0.37754522690096 -3.71427363184686 -1.56768211139015 -1.58126090995035 0.35700991362944 0.00835129455646182 -1.70804837241887 2.83189624931246 -0.562202174380604 1.69740319747029 0.371537977973951 -1.64109915453121 2.75301861553217 -3.75624723825591 0.935106025763558 -0.376050115589752 0.741772993495607 2.31980584994586 -0.48179954023363 2.12401167834398 0.95643758423328 -1.08008990753712 -1.13661064540939 -0.924179562618883 1.82165472441751 0.735168431591556 -2.4869834321712 -0.410542732285207 -0.551625773999562
26 2.5 2.6 1.37881296061145 -1.12914415664187 4.7758841055428 -0.136501855561357 -2.04927775420084 0.211728298887886 1.08877077520669 0.220850415254667 -2.07719035779118 2.25985244843422 3.35775657756306 2.64376084838762 1.35848609459951 -0.686816499907193 0.815818841707736 1.93315278514834 -0.213793653630425 2.27270157783792 -1.10086098246545 -0.366636677079596 -0.62742633956824 1.48066716399762 -0.997929740806428 2.18373137555264 -2.0157409963734 -2.13233486433797 -0.774990201258137 0.336727407015108 -0.526170993671044 1.97193608205678 2.79633738099436 -0.93930201152594 0.0493858891360088 0.704588765216077 0.518427483018597 0.184342880606744 -3.04653018271994 -1.93001848923548 -1.60902344388626 -0.0337993154813671 2.24483484094204 4.76376353373781 -0.602664215487312 -1.96549789560035 -4.0013876150368 2.37504570758208 2.6638596332302 0.541782527135 0.0380511191766738 -4.16424548251387
27 2.6 2.7 -1.3329959701647 -1.18883802893281 0.560686680689653 2.12838566891993 -1.72826297660466 -1.47573712641656 -0.529400742178531 1.95199596166756 -2.61264403010361 0.058008696847583 0.509044040721609 1.2069432724943 -0.483995828831695 -0.847697450869864 3.10816193376628 -0.846540966624373 -3.6337988961162 -1.2394880741945 0.995963402213537 1.41958397060607 -2.91162001343447 1.22533412259867 -1.35171621449816 0.783412916721203 -1.46120423404449 1.03426698606251 3.93281118222532 0.987472874345992 -0.241856742234803 2.23337929619378 0.362529607431243 -2.13529227782332 -3.43959686240657 2.29826097570196 -1.3296066070049 -0.881038673309384 0.34133576670169 0.0287484638451527 3.94802608286607 4.06767664745933 3.56051485207831 0.47455853601654 -2.45320593567447 -0.800554127545072 2.45513137004464 5.39687720939536 1.34001090508905 -4.96858725220808 -0.894968766925007 -3.16570419725118
28 2.7 2.8 -1.88031953510677 1.08273742502546 0.289096226186868 0.145442968351952 0.840005415092104 1.62217493278532 0.439479269304948 -1.70091727510146 -1.63862280728423 -1.62022878351422 -0.835354535882028 3.50367835226417 2.26631918545743 -0.445512550837549 1.41280140659686 2.53506482093936 2.798295795401 -1.83915296130029 -0.484995151124497 -2.60304021792617 0.557821899682088 1.81434082934347 1.60635932454516 -1.91409589083802 -2.62086186932772 -0.969964225780648 -3.7339674125233 0.354753396626877 -1.49512297512331 -2.63656250448595 -2.5903194092648 3.10438709079862 -6.2840082271021 0.0955553256654889 2.07253177710775 -3.83953381431878 1.75738799012675 -0.801417604398757 -1.2199005804177 0.542999021690137 2.25563232832019 1.77447944089314 -2.91550509519634 -3.77081899323202 -0.21100977834489 2.43657671269048 -1.77221947025634 -0.0110825738723026 1.87794630096308 0.214687098906287
29 2.8 2.9 0.887297082996313 -2.98320378743449 2.9928511278737 6.78204774526589 3.32840930827169 3.40549253368447 1.65617552414324 -2.41635347548855 -1.7436179599396 -3.72273092079473 -0.231783232475308 -1.29429084285747 4.28436105903319 1.84107283325842 -0.280869343591292 -0.228307163277049 -0.657884021974231 -2.75724758408696 -2.67989886086249 2.84935665597603 1.92378770822667 -1.91987729012316 -1.7331414962177 -0.232113221169467 -1.8427199560257 0.0705790707590537 -0.949689569467352 -0.253576192866496 -1.95468846615996 1.08025449994452 0.429449652157862 2.14334880861348 -5.56355396724729 4.03173406805506 -2.79465914024831 -0.870818234610577 -0.671051903499333 0.944317732177208 1.05030006790658 0.677226234574206 5.48815639900187 0.305304178613231 2.24419422180127 -4.36391219394466 -3.83695718903544 1.90663421245902 0.112376343535206 2.84732141005798 -0.573021738179849 -0.0149907763591499
30 2.9 3.0 0.998064176968434 -1.14973366903289 1.83976122422861 -2.85683916955725 -2.85966339505963 -2.94074424162789 -1.27050108286986 -2.60104662006269 0.696816132825509 2.80529156470863 0.516780865160611 -0.583761148071988 2.75198431550269 -0.56886907769016 -1.34360919908592 -0.629229295679807 3.16683411945325 1.57823058453391 -2.35940632365108 -0.241013836344989 3.48188419823192 3.21613458019436 -3.71401529146625 0.255398147149734 2.46816949123091 0.12021953833055 -2.1728488261266 4.61660248893364 -1.13519660356753 1.69130597349401 2.54997349492956 0.470184758609311 -1.29553526038967 2.08648663420679 1.59280173455874 0.533450391850695 -0.368246157075794 -2.41228341183792 -1.03706268207785 0.149123758242417 1.02350465346359 3.78710781674726 1.89465489141229 -1.4585107455624 -1.94916767105757 2.59893995597665 -1.52616094249858 1.76309349603794 -2.24243015050549 -3.06566699250248
@@ -0,0 +1,43 @@
flip_count = 0
switched_flip_count = 0
flips = {}
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
flip_count = box:get_input_count()
for i = 1, flip_count do
flips[i] = false
end
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() and switched_flip_count < flip_count do
for i = 1, flip_count do
if box:get_stimulation_count(i) > 0 then
box:remove_stimulation(i, 1)
if not flips[i] then
switched_flip_count = switched_flip_count + 1
flips[i] = true
-- io.write("Flip ", i, " of ", flip_count, " switched\n")
end
end
end
box:sleep()
end
box:send_stimulation(1, OVTK_StimulationId_Label_00, box:get_current_time())
end
@@ -0,0 +1,42 @@
# Creates some toy test data
# note that for openvibe .csv you need to manually add the freq value as the last item of the two first lines.
# its not done by this script.
nExamples<-30;
nDim<-50;
# Gaussian data
a<-matrix(data=rnorm(nExamples*nDim),nrow=nExamples);
b<-matrix(data=rnorm(nExamples*nDim),nrow=nExamples);
# slightly overlapping classes, dimension 1 is the only one that matters
a[,1]<-a[,1]-2;
b[,1]<-b[,1]+2;
# transform the data a little with a full rank matrix
tol<-0.1;go<-TRUE;
while(go) {
r<-matrix(runif(nDim*nDim)-0.5,nrow=nDim);
if(min(svd(r)$d)>tol) {
go<-FALSE;
}
}
# add the time column required by openvibe csv reader
aPad<-cbind(matrix(data=seq(1,nExamples),ncol=1),a);
bPad<-cbind(matrix(data=seq(1,nExamples),ncol=1),b);
write.table(aPad,file="class1.csv",row.names=FALSE,sep=",");
write.table(bPad,file="class2.csv",row.names=FALSE,sep=",");
a<-a%*%r;
b<-b%*%r;
aPad<-cbind(matrix(data=seq(1,nExamples),ncol=1),a);
bPad<-cbind(matrix(data=seq(1,nExamples),ncol=1),b);
write.table(aPad,file="class1rot.csv",row.names=FALSE,sep=",");
write.table(bPad,file="class2rot.csv",row.names=FALSE,sep=",");
@@ -0,0 +1,58 @@
#include <fstream>
#include <sstream>
#include <string>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cerrno>
double threshold = 72;
int main(int argc, char** argv)
{
if (argc != 2 && argc != 3)
{
std::cout << "Usage: test_accuracy <filename> <threshold>\n";
return 3;
}
if (argc == 3) { threshold = atof(argv[2]); }
std::ifstream file(argv[1], std::ios::in);
if (file.good() && !file.bad() && file.is_open()) // ...
{
std::string line;
while (getline(file, line))
{
size_t pos;
if ((pos = line.find("Cross-validation")) != std::string::npos)
{
std::string cutline = line.substr(pos);
pos = cutline.find("is") + 3;//We need to cut the coloration
cutline = cutline.substr(pos);
pos = cutline.find('%');
cutline = cutline.substr(0, pos);
std::stringstream ss(cutline);
double percentage;
ss >> percentage;
if (percentage < threshold)
{
std::cout << "Accuracy too low ( " << percentage << " % )" << std::endl;
return 1;
}
std::cout << "Test ok ( " << percentage << " % )" << std::endl;
return 0;
}
}
std::cout << "Error: EOF of log file reached without finding the cross-validation accuracy string.\n";
return 4;
}
std::cout << "Error: Problem opening [" << argv[1] << "]\n";
std::cerr << "Error: Code is " << strerror(errno) << "\n";
return 5;
//return 2; // shouldn't happen
}
@@ -0,0 +1,35 @@
PROJECT(openvibe-plugins-data-generation)
SET(PROJECT_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
SET(PROJECT_VERSION ${OV_GLOBAL_VERSION_STRING})
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.h src/*.inl)
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRC_FILES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER ${PLUGINS_FOLDER}
COMPILE_FLAGS "-DOVP_Exports -DOVP_Shared")
INCLUDE("FindOpenViBE")
INCLUDE("FindOpenViBECommon")
INCLUDE("FindOpenViBEToolkit")
INCLUDE("FindOpenViBEModuleEBML")
INCLUDE("FindOpenViBEModuleSystem")
INCLUDE("FindOpenViBEModuleXML")
# ---------------------------------
# ---------------------------------
# -----------------------------
# Install files
# -----------------------------
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
@@ -0,0 +1,58 @@
/**
* \page BoxAlgorithm_NoiseGenerator Noise generator
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Description|
* The Noise Generator outputs random signals with a configurable number of channels. The sampling frequency and epoch size can be configured as well. The data is sampled from a pseudorandom distribution.
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Description|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Outputs|
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Outputs|
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Output1|
* Random signal generated.
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Output1|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Settings|
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Settings|
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Setting1|
* Number of channels generated.
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Setting1|
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Setting2|
* Sampling frequency of generated signals.
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Setting2|
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Setting3|
* Number of samples per epoch
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Setting3|
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Setting4|
* Noise type (used distribution)
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Setting4|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_NoiseGenerator_Miscellaneous|
* Uniform noise is drawn from the range \f$ ( 0,1 ( \f$. Gaussian noise has parameters
* mean = 0, variance = 1.0. You can effectively change these parameters by using
* the Simple DSP box on the resulting stream. For example, the mean and variance of
* the resulting \f$ x \f$ from the Gaussian generator can be changed
* by a formula like \f$ x*\sqrt{v} + m \f$ for new variance and mean, respectively.
* |OVP_DocEnd_BoxAlgorithm_NoiseGenerator_Miscellaneous|
*/
@@ -0,0 +1,69 @@
/**
* \page BoxAlgorithm_SinusOscillator Sinus oscillator
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Description|
The Sinus Oscillator generates sinusoidal signals on a configurable number of channels, and allows for configuring the sampling frequency and epoch size settings.
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Description|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Outputs|
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Outputs|
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Output1|
Sinusoidal signal generated.
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Output1|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Settings|
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Settings|
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Setting1|
Number of channels for which to generated sinusoidal signals.
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Setting1|
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Setting2|
Sampling frequency of generated signals.
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Setting2|
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Setting3|
Number of samples per epoch
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Setting3|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Examples|
Practical example :
Let's create a simple signal processing scenario using the Signal Generator box and a display plugin to watch the generated signals. First, we add a Signal Generator box by drag and dropping it from the Samples category. A double click on it will display its configurable settings. Let's generate signals for 4 channels at a rate of 512 samples per second (sampling frequency) and send them down the processing line in blocks of 32 samples (epoch sample count). This means there will be 512/32 = 16 data blocks emitted by this box every second.
Now we want to visualize the generated signals. Let's add a Signal Display box. We can set its Time Scale(i.e. the time span that will be displayed) by double clicking on it.
Finally, we forward signals from the Signal Oscillator to the Signal Display box by linking the output of the former to the first input of the latter.
The scenario may be launched by clicking the 'Play' button in the Player toolbar. Random combinations of sinusoidal signals should be displayed in a Signal Display window, along with default channel names. Press the Player 'Stop' button to go back to scenario edition mode.
\image html sinussignalgenerator_scenario.png "A simple sinus oscillator scenario."
\image html sinussignalgenerator_online.png "Visualizing sinus oscillator signals."
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_SinusOscillator_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_SinusOscillator_Miscellaneous|
*/
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,66 @@
/*
* Generates a channel units stream with user-specified unit and factor
*/
#include "ovpCBoxAlgorithmChannelUnitsGenerator.h"
namespace OpenViBE {
namespace Plugins {
namespace DataGeneration {
bool CChannelUnitsGenerator::initialize()
{
m_headerSent = false;
m_nChannel = size_t(uint64_t(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0)));
m_unit = size_t(uint64_t(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 1)));
m_factor = size_t(uint64_t(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 2)));
m_encoder.initialize(*this, 0);
return true;
}
bool CChannelUnitsGenerator::uninitialize()
{
m_encoder.uninitialize();
return true;
}
bool CChannelUnitsGenerator::processClock(Kernel::CMessageClock& /*msg*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
bool CChannelUnitsGenerator::process()
{
Kernel::IBoxIO* boxContext = getBoxAlgorithmContext()->getDynamicBoxContext();
if (!m_headerSent)
{
CMatrix* units = m_encoder.getInputMatrix();
units->resize(m_nChannel, 2);
units->setDimensionLabel(1, 0, "Unit");
units->setDimensionLabel(1, 1, "Factor");
for (size_t i = 0; i < m_nChannel; ++i)
{
units->getBuffer()[i * 2 + 0] = double(m_unit);
units->getBuffer()[i * 2 + 1] = double(m_factor);
units->setDimensionLabel(0, i, ("Channel " + std::to_string(i + 1)).c_str());
}
m_encoder.encodeHeader();
boxContext->markOutputAsReadyToSend(0, 0, 0);
m_encoder.encodeBuffer();
boxContext->markOutputAsReadyToSend(0, 0, 0);
m_headerSent = true;
}
return true;
}
} // namespace DataGeneration
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,70 @@
#pragma once
#include "../ovp_defines.h"
#include <toolkit/ovtk_all.h>
namespace OpenViBE {
namespace Plugins {
namespace DataGeneration {
class CChannelUnitsGenerator final : public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
uint64_t getClockFrequency() override { return 1LL << 32; }
bool initialize() override;
bool uninitialize() override;
bool processClock(Kernel::CMessageClock& /*msg*/) override;
bool process() override;
_IsDerivedFromClass_Final_(IBoxAlgorithm, OVP_ClassId_ChannelUnitsGenerator)
protected:
bool m_headerSent = false;
size_t m_nChannel = 0;
size_t m_unit = 0;
size_t m_factor = 0;
Toolkit::TChannelUnitsEncoder<CChannelUnitsGenerator> m_encoder;
};
class CChannelUnitsGeneratorDesc final : public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return CString("Channel units generator"); }
CString getAuthorName() const override { return CString("Jussi T. Lindgren"); }
CString getAuthorCompanyName() const override { return CString("Inria"); }
CString getShortDescription() const override { return CString("Generates channel units"); }
CString getDetailedDescription() const override
{
return CString(
"This box can generate a channel unit stream if specific measurement units are needed. The box is mainly provided for completeness.");
}
CString getCategory() const override { return CString("Data generation"); }
CString getVersion() const override { return CString("1.0"); }
CString getStockItemName() const override { return CString("gtk-execute"); }
CIdentifier getCreatedClass() const override { return OVP_ClassId_ChannelUnitsGenerator; }
IPluginObject* create() override { return new CChannelUnitsGenerator(); }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addSetting("Number of channels", OV_TypeId_Integer, "4");
prototype.addSetting("Unit", OV_TypeId_MeasurementUnit, "V");
prototype.addSetting("Factor", OV_TypeId_Factor, "1e-06");
prototype.addOutput("Channel units", OV_TypeId_ChannelUnits);
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, OVP_ClassId_ChannelUnitsGeneratorDesc)
};
} // namespace DataGeneration
} // namespace Plugins
} // namespace OpenViBE

Some files were not shown because too many files have changed in this diff Show More