changeset 1:144fbd1d29c3

added c++ class Parameter
author Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk>
date Wed, 28 Dec 2016 17:22:49 +0000
parents 246d5546657c
children c87a9505f294
files cpp/chourdakisreiss2016cpp/.cproject cpp/chourdakisreiss2016cpp/.gitignore cpp/chourdakisreiss2016cpp/.project cpp/chourdakisreiss2016cpp/.pydevproject cpp/chourdakisreiss2016cpp/.settings/language.settings.xml cpp/chourdakisreiss2016cpp/.settings/org.eclipse.core.resources.prefs cpp/chourdakisreiss2016cpp/Debug/Parameter.d cpp/chourdakisreiss2016cpp/Debug/Parameter.o cpp/chourdakisreiss2016cpp/Debug/Parameter_test.d cpp/chourdakisreiss2016cpp/Debug/Parameter_test.o cpp/chourdakisreiss2016cpp/Debug/chourdakisreiss2016cpp cpp/chourdakisreiss2016cpp/Debug/makefile cpp/chourdakisreiss2016cpp/Debug/mapping.d cpp/chourdakisreiss2016cpp/Debug/mapping.o cpp/chourdakisreiss2016cpp/Debug/objects.mk cpp/chourdakisreiss2016cpp/Debug/sources.mk cpp/chourdakisreiss2016cpp/Debug/subdir.mk cpp/chourdakisreiss2016cpp/Parameter.cpp cpp/chourdakisreiss2016cpp/Parameter.h cpp/chourdakisreiss2016cpp/Parameter_test.cpp cpp/chourdakisreiss2016cpp/csv.h cpp/chourdakisreiss2016cpp/limits.hpp cpp/chourdakisreiss2016cpp/mapping.cpp cpp/chourdakisreiss2016cpp/mapping.py cpp/chourdakisreiss2016cpp/scmapping.csv experiment-reverb/code/mapping.pyc experiment-reverb/code/model_gnb.dat experiment-reverb/code/model_svm.dat experiment-reverb/code/models.pyc experiment-reverb/code/pca.py experiment-reverb/code/pca.pyc experiment-reverb/code/results.txt
diffstat 32 files changed, 3340 insertions(+), 2077 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/.cproject	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1173526981">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1173526981" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1173526981" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
+					<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1173526981." name="/" resourcePath="">
+						<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1989701229" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
+							<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.2107613198" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
+							<builder buildPath="${workspace_loc:/chourdakisreiss2016cpp}/Debug" id="cdt.managedbuild.target.gnu.builder.exe.debug.877798345" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
+							<tool id="cdt.managedbuild.tool.gnu.archiver.base.130600954" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.988645622" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+								<option id="gnu.cpp.compiler.exe.debug.option.optimization.level.940919165" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1251050227" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.option.include.paths.403401483" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+									<listOptionValue builtIn="false" value="/usr/include/eigen3"/>
+								</option>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.539388378" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1043278668" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
+								<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1310342699" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+								<option id="gnu.c.compiler.exe.debug.option.debugging.level.148098583" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.742231777" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.2032824705" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.41122631" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1112107932" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.1551532973" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1907495481" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+		<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.476575219">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.476575219" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.476575219" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
+					<folderInfo id="cdt.managedbuild.config.gnu.exe.release.476575219." name="/" resourcePath="">
+						<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.1897999868" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
+							<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.432088107" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
+							<builder buildPath="${workspace_loc:/chourdakisreiss2016cpp}/Release" id="cdt.managedbuild.target.gnu.builder.exe.release.1665027133" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
+							<tool id="cdt.managedbuild.tool.gnu.archiver.base.1440512756" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1525116054" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
+								<option id="gnu.cpp.compiler.exe.release.option.optimization.level.787981644" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+								<option id="gnu.cpp.compiler.exe.release.option.debugging.level.634450802" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1613586117" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.500161653" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
+								<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.40535989" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+								<option id="gnu.c.compiler.exe.release.option.debugging.level.682067236" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.679789973" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.584837700" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
+							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.1593850691" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
+								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.407617976" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.1208867503" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.887880202" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="chourdakisreiss2016cpp.cdt.managedbuild.target.gnu.exe.1760020665" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1173526981;cdt.managedbuild.config.gnu.exe.debug.1173526981.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.988645622;cdt.managedbuild.tool.gnu.cpp.compiler.input.539388378">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.476575219;cdt.managedbuild.config.gnu.exe.release.476575219.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.500161653;cdt.managedbuild.tool.gnu.c.compiler.input.679789973">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.1173526981;cdt.managedbuild.config.gnu.exe.debug.1173526981.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1043278668;cdt.managedbuild.tool.gnu.c.compiler.input.742231777">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.476575219;cdt.managedbuild.config.gnu.exe.release.476575219.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.1525116054;cdt.managedbuild.tool.gnu.cpp.compiler.input.1613586117">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="refreshScope" versionNumber="2">
+		<configuration configurationName="Debug">
+			<resource resourceType="PROJECT" workspacePath="/chourdakisreiss2016cpp"/>
+		</configuration>
+		<configuration configurationName="Release">
+			<resource resourceType="PROJECT" workspacePath="/chourdakisreiss2016cpp"/>
+		</configuration>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/.gitignore	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,1 @@
+/Debug/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/.project	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>chourdakisreiss2016cpp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/.pydevproject	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse-pydev version="1.0"?><pydev_project>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
+</pydev_project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/.settings/language.settings.xml	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+	<configuration id="cdt.managedbuild.config.gnu.exe.debug.1173526981" name="Debug">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="366572138560311450" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+	<configuration id="cdt.managedbuild.config.gnu.exe.release.476575219" name="Release">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="366572138560311450" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/.settings/org.eclipse.core.resources.prefs	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/mapping.py=utf-8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/Parameter.d	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,5 @@
+Parameter.o: ../Parameter.cpp ../Parameter.h ../limits.hpp
+
+../Parameter.h:
+
+../limits.hpp:
Binary file cpp/chourdakisreiss2016cpp/Debug/Parameter.o has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/Parameter_test.d	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,5 @@
+Parameter_test.o: ../Parameter_test.cpp ../Parameter.h ../limits.hpp
+
+../Parameter.h:
+
+../limits.hpp:
Binary file cpp/chourdakisreiss2016cpp/Debug/Parameter_test.o has changed
Binary file cpp/chourdakisreiss2016cpp/Debug/chourdakisreiss2016cpp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/makefile	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,58 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+-include ../makefile.init
+
+RM := rm -rf
+
+# All of the sources participating in the build are defined here
+-include sources.mk
+-include subdir.mk
+-include objects.mk
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(strip $(CC_DEPS)),)
+-include $(CC_DEPS)
+endif
+ifneq ($(strip $(C++_DEPS)),)
+-include $(C++_DEPS)
+endif
+ifneq ($(strip $(C_UPPER_DEPS)),)
+-include $(C_UPPER_DEPS)
+endif
+ifneq ($(strip $(CXX_DEPS)),)
+-include $(CXX_DEPS)
+endif
+ifneq ($(strip $(CPP_DEPS)),)
+-include $(CPP_DEPS)
+endif
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
+endif
+
+-include ../makefile.defs
+
+# Add inputs and outputs from these tool invocations to the build variables 
+
+# All Target
+all: chourdakisreiss2016cpp
+
+# Tool invocations
+chourdakisreiss2016cpp: $(OBJS) $(USER_OBJS)
+	@echo 'Building target: $@'
+	@echo 'Invoking: GCC C++ Linker'
+	g++  -o "chourdakisreiss2016cpp" $(OBJS) $(USER_OBJS) $(LIBS)
+	@echo 'Finished building target: $@'
+	@echo ' '
+
+# Other Targets
+clean:
+	-$(RM) $(CC_DEPS)$(C++_DEPS)$(EXECUTABLES)$(C_UPPER_DEPS)$(CXX_DEPS)$(OBJS)$(CPP_DEPS)$(C_DEPS) chourdakisreiss2016cpp
+	-@echo ' '
+
+.PHONY: all clean dependents
+.SECONDARY:
+
+-include ../makefile.targets
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/mapping.d	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,5 @@
+mapping.o: ../mapping.cpp ../Parameter.h ../limits.hpp
+
+../Parameter.h:
+
+../limits.hpp:
Binary file cpp/chourdakisreiss2016cpp/Debug/mapping.o has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/objects.mk	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,8 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+USER_OBJS :=
+
+LIBS :=
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/sources.mk	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+C_UPPER_SRCS := 
+CXX_SRCS := 
+C++_SRCS := 
+OBJ_SRCS := 
+CC_SRCS := 
+ASM_SRCS := 
+CPP_SRCS := 
+C_SRCS := 
+O_SRCS := 
+S_UPPER_SRCS := 
+CC_DEPS := 
+C++_DEPS := 
+EXECUTABLES := 
+C_UPPER_DEPS := 
+CXX_DEPS := 
+OBJS := 
+CPP_DEPS := 
+C_DEPS := 
+
+# Every subdirectory with source files must be described here
+SUBDIRS := \
+. \
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Debug/subdir.mk	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,30 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables 
+CPP_SRCS += \
+../Parameter.cpp \
+../Parameter_test.cpp \
+../mapping.cpp 
+
+OBJS += \
+./Parameter.o \
+./Parameter_test.o \
+./mapping.o 
+
+CPP_DEPS += \
+./Parameter.d \
+./Parameter_test.d \
+./mapping.d 
+
+
+# Each subdirectory must supply rules for building sources it contributes
+%.o: ../%.cpp
+	@echo 'Building file: $<'
+	@echo 'Invoking: GCC C++ Compiler'
+	g++ -I/usr/include/eigen3 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
+	@echo 'Finished building: $<'
+	@echo ' '
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Parameter.cpp	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,630 @@
+/*
+ * Parameter.cpp
+ *
+ *  Created on: Dec 14, 2016
+ *      Author: mmxgn
+ */
+
+#include <cmath>
+#include "Parameter.h"
+//#include "csv.h"
+
+
+/*
+ * Given a k, return g_k and d_k based on
+ * g_1 and d_1 respectively.
+ *
+ */
+
+#define GK(k) powf(G1, powf(1.5, 1-k))
+#define _GK(k) powf(_G1, powf(1.5, 1-k))
+
+#define DK(k) (D1*powf(1.5, 1-k))
+#define _DK(k) (_D1*powf(1.5, 1-k))
+
+/*
+ * The parameter class
+ */
+
+Parameter::Parameter(double _SR,
+					 double _D1,
+					 double _DA,
+					 double _G1,
+					 double _GC,
+					 double _G,
+					 double _T60,
+					 double _ED,
+					 double _C,
+					 double _TC,
+					 double _SC)
+:
+	D1(_D1),
+	DA(_DA),
+	G1(_G1),
+	GC(_GC),
+	G(_G),
+	T60(_T60),
+	ED(_ED),
+	C(_C),
+	TC(_TC),
+	SC(_SC),
+	SC_MAX(_SR/4.0),
+	SampleRate(_SR)
+{
+	// pass
+}
+
+double Parameter::getC() const {
+	return C;
+}
+
+void Parameter::setC(double c) {
+	C = c;
+}
+
+double Parameter::getD1() const {
+	return D1;
+}
+
+void Parameter::setD1(double d1) {
+	/* Dependency for:
+	 * 	T60, ED, TC
+	 */
+
+	T60 = compute_T60(d1, G1, GC, G);
+	ED = compute_ED(d1, DA);
+	TC = compute_TC(d1, G1, DA);
+
+}
+
+double Parameter::getDa() const {
+	return DA;
+
+}
+
+void Parameter::setDa(double da) {
+	/* Dependency for:
+	 * 	ED, TC
+	 */
+
+	ED = compute_ED(D1, da);
+	TC = compute_TC(D1, G1, da);
+
+}
+
+double Parameter::getEd() const {
+	return ED;
+}
+
+void Parameter::setEd(double ed) {
+	matrix <double,5,1> est_param = inverse_mapping(T60, ed, C, TC, SC, SampleRate,G1);
+	D1 = est_param(0);
+	DA = est_param(1);
+	G1 = est_param(2);
+	GC = est_param(3);
+	G = est_param(4);
+	T60 = compute_T60(D1, G1, GC, G);
+	ED = compute_ED(D1, DA);
+	C = compute_C(G1, GC, G);
+	TC = compute_TC(D1, G1, DA);
+	SC = compute_SC(GC, SampleRate);
+}
+
+double Parameter::getG() const {
+	return G;
+}
+
+void Parameter::setG(double g) {
+	/*
+	 * Dependency for:
+	 * 	T60, C
+	 */
+
+	T60 = compute_T60(D1, G1, GC, g);
+	C = compute_C(G1, GC, g);
+
+}
+
+double Parameter::getG1() const {
+	return G1;
+}
+
+void Parameter::setG1(double g1) {
+	/*
+	 * Dependency for:
+	 * 	T60, C, TC
+	 */
+
+	T60 = compute_T60(D1, g1, GC, G);
+	C = compute_C(g1, GC, G);
+	TC = compute_TC(D1, g1, DA);
+
+}
+
+double Parameter::getGc() const {
+	return GC;
+}
+
+void Parameter::setGc(double gc) {
+	/*
+	 * Dependency for:
+	 * 	SC
+	 */
+
+	SC = compute_SC(gc, SampleRate);
+}
+
+double Parameter::getSampleRate() const {
+	return SampleRate;
+}
+
+void Parameter::setSampleRate(double sampleRate) {
+	SampleRate = sampleRate;
+	set_low_and_compute(D1, DA, G1, GC, G);
+	matrix <double,5,1> est_param = inverse_mapping(T60, ED, C, TC, SC, SampleRate,G1);
+	D1 = est_param(0);
+	DA = est_param(1);
+	G1 = est_param(2);
+	GC = est_param(3);
+	G = est_param(4);
+	T60 = compute_T60(D1, G1, GC, G);
+	ED = compute_ED(D1, DA);
+	C = compute_C(G1, GC, G);
+	TC = compute_TC(D1, G1, DA);
+	SC = compute_SC(GC, SampleRate);
+}
+
+double Parameter::getSc() const {
+	return SC;
+}
+
+void Parameter::setSc(double sc) {
+	matrix <double,5,1> est_param = inverse_mapping(T60, ED, C, TC, sc, SampleRate,G1);
+	D1 = est_param(0);
+	DA = est_param(1);
+	G1 = est_param(2);
+	GC = est_param(3);
+	G = est_param(4);
+	T60 = compute_T60(D1, G1, GC, G);
+	ED = compute_ED(D1, DA);
+	C = compute_C(G1, GC, G);
+	TC = compute_TC(D1, G1, DA);
+	SC = compute_SC(GC, SampleRate);
+}
+
+double Parameter::getT60() const {
+	return T60;
+}
+
+void Parameter::setT60(double t60) {
+	matrix <double,5,1> est_param = inverse_mapping(t60, ED, C, TC, SC, SampleRate,G1);
+	D1 = est_param(0);
+	DA = est_param(1);
+	G1 = est_param(2);
+	GC = est_param(3);
+	G = est_param(4);
+	T60 = compute_T60(D1, G1, GC, G);
+	ED = compute_ED(D1, DA);
+	C = compute_C(G1, GC, G);
+	TC = compute_TC(D1, G1, DA);
+	SC = compute_SC(GC, SampleRate);
+}
+
+double Parameter::getTc() const {
+	return TC;
+}
+
+void Parameter::setTc(double tc) {
+	matrix <double,5,1> est_param = inverse_mapping(T60, ED, C, tc, SC, SampleRate,G1);
+	D1 = est_param(0);
+	DA = est_param(1);
+	G1 = est_param(2);
+	GC = est_param(3);
+	G = est_param(4);
+	T60 = compute_T60(D1, G1, GC, G);
+	ED = compute_ED(D1, DA);
+	C = compute_C(G1, GC, G);
+	TC = compute_TC(D1, G1, DA);
+	SC = compute_SC(GC, SampleRate);
+}
+
+Parameter::~Parameter() {
+	// TODO Auto-generated destructor stub
+}
+
+std::ostream& operator<<(std::ostream &s, const Parameter &p) {
+  return s << "Parameter({High:<" <<
+		  p.T60 << ", " <<
+		  p.ED << ", " <<
+		  p.C << ", " <<
+		  p.TC << ", " <<
+		  p.SC << ">}, " <<
+		  "{Low: <" <<
+		  p.D1 << ", " <<
+		  p.DA << ", " <<
+		  p.G1 << ", " <<
+		  p.GC << ", " <<
+		  p.G  << ">}).";
+
+}
+
+int Parameter::set_low_and_compute(double D1, double DA, double G1, double GC,
+		double G) {
+
+	/* Temporary values */
+
+	double _T60, _ED, _C, _TC, _SC;
+
+	_T60 = compute_T60(D1, G1, GC, G);
+	if (_T60 < T60_MIN || _T60 > T60_MAX)
+		return -1;
+
+	_ED = compute_ED(D1, DA);
+	if (_ED < ED_MIN || _ED > ED_MAX)
+		return -1;
+
+	_C = compute_C(G1, GC, G);
+
+	if (_C < C_MIN || _C > C_MAX)
+		return -1;
+
+	_TC = compute_TC(D1, G1, DA);
+
+	if (_TC < TC_MIN || _TC > TC_MAX)
+		return -1;
+
+	_SC = compute_SC(GC, SampleRate);
+
+	if (_SC < SC_MIN || _SC > SC_MAX)
+		return -1;
+
+	T60 = _T60;
+	ED = _ED;
+	C = _C;
+	TC = _TC;
+	SC = _SC;
+
+	return 0;
+
+}
+
+double Parameter::compute_T60(double _D1, double _G1, double _GC, double _G) {
+	return -_D1/log(_G1)*(log(_G)+log(1-_GC)+log(GA)+3*log(10));
+}
+
+double Parameter::compute_ED(double _D1, double _DA) {
+	return 2.078125/_D1/_DA;
+}
+
+double Parameter::compute_C(double _G1, double _GC, double _G) {
+	double sum1 = 0;
+	for (int k=1; k<7; k++){
+		sum1 += powf(_G1, 2*powf(1.5, 1-k))/(1-powf(_G1, 2*powf(1.5, 1-k)));
+	}
+	return -10*log10(_G*_G*(1-_GC)/(1+_GC)*sum1);
+}
+
+double Parameter::compute_TC(double _D1, double _G1, double _DA) {
+	double sum1 = 0, sum2 = 0, s1 = 0;
+	for (int k=1; k<7; k++){
+		s1 = powf(_GK(k), 2.0)/(1-powf(_GK(k), 2.0));
+		sum2 += s1;
+		sum1 += _DK(k)*s1/(1-powf(_GK(k),2.0));
+	}
+
+	return sum1/sum2 + _DA;
+}
+
+double Parameter::compute_SC(double _GC, double _SR) {
+	double sum1 = 0, sum2 = 0;
+
+	for (int k=0; k < int(_SR/2.0); k++){
+		double lut = 1.0-2.0*_GC*cos(2.0*M_PI*k/_SR)+_GC*_GC;
+		sum1 += k/lut;
+		sum2 += 1/lut;
+	}
+
+	return sum1/sum2;
+}
+
+int Parameter::get_low_and_computer() {
+	return 0;
+}
+
+int Parameter::set_high_and_compute(double T60, double ED, double C, double TC,
+		double SC) {
+	return 0;
+}
+
+double Parameter::TC_G1_D1_ED(double _D1, double _G1, double _ED, double t) {
+	double sum1 = 0, sum2 = 0;
+
+	for (int k=1; k<7; k++){
+		sum1 += powf(1.5, -k+1)*_D1*
+				powf(_G1, 2*powf(1.5, -k+1))/
+				powf((-powf(_G1, 2*powf(1.5, -k+1))+1),2);
+		sum2 += powf(_G1,2*powf(1.5,-k+1))/
+				(-powf(_G1, 2*powf(1.5,-k+1))+1);
+	}
+
+	return sum1/sum2 + 20.78125*t/(_ED*_D1);
+}
+
+double Parameter::T60_D1_G1_C(double _D1, double _G1, double _GC, double _C) {
+	double sum1 = 0;
+
+	for (int k=1; k<7; k++){
+		sum1 += powf(_G1, 2*powf(1.5, 1-k))/(1-powf(_G1,2*powf(1.5,1-k)));
+	}
+
+	return _D1*log(0.001/GA*exp(_C*log(10)/20)/
+			(sqrt((1+_GC)/((1-_GC)*sum1))*(1-_GC)))/log(_G1);
+}
+
+double Parameter::D1_G1_T60_C(double _G1, double _GC, double _T60, double _C) {
+	double sum1 = 0;
+
+	for (int k=1; k<7; k++){
+		sum1 += powf(_G1,(2*powf(1.5,1-k)))/(1-powf(_G1,2*powf(1.5,1-k)));
+	}
+
+	return _T60*log(_G1)/log(0.001/GA*exp(_C*log(10)/20)/(sqrt((1+_GC)/((1-_GC)*sum1))*(1-_GC)));
+}
+
+double Parameter::G_G1_C(double _G1, double _GC, double _C) {
+	double sum1 = 0;
+	for (int k=1; k<7; k++){
+		sum1 += powf(_G1, 2*powf(1.5, 1-k))/(1-powf(_G1, 2*powf(1.5, 1-k)));
+	}
+
+	return sqrt(exp(-_C/10*log(10))/(1-_GC)*(1+_GC)/sum1);
+}
+
+double Parameter::DA_D1_ED(double _D1, double _ED, double t) {
+	return 20.78125*t/_D1/_ED;
+}
+
+
+double Parameter::GC_SC(double _SC, double SR) {
+	double p0 = 1.0,
+			p1 = 1.0,
+			p2 = 1.0,
+			p3 = 1.0,
+			p4 = 1.0;
+
+	switch (int(SR)){
+	case 8000:
+		p0 = -7.545401867799958007e-15;
+		p1 = 6.605438530163032344e-11;
+		p2 = -2.339787304666883204e-07;
+		p3 = -2.380996920823082359e-04;
+		p4 = 1.003686549974644349e+00;
+	break;
+	case 11025:
+		p0 = -2.090495384250846006e-15;
+		p1 = 2.523110858472787412e-11;
+		p2 = -1.232004017234833354e-07;
+		p3 = -1.727859517219043628e-04;
+		p4 = 1.003773048218970398e+00;
+	break;
+	case 16000:
+		p0 = -4.707928872668820147e-16;
+		p1 = 8.250344830381294683e-12;
+		p2 = -5.847797160444276075e-08;
+		p3 = -1.190647306137786752e-04;
+		p4 = 1.003845141060948354e+00;
+	break;
+	case 21000:
+		p0 = -1.585759862171924958e-16;
+		p1 = 3.648228536317020713e-12;
+		p2 = -3.394367375513113085e-08;
+		p3 = -9.071942141117647239e-05;
+		p4 = 1.003883355464454619e+00;
+	break;
+	case 22050:
+		p0 = -1.304517046624577766e-16;
+		p1 = 3.151372288676199373e-12;
+		p2 = -3.078752354037690531e-08;
+		p3 = -8.639997174340922025e-05;
+		p4 = 1.003889194220798364e+00;
+	break;
+	case 32000:
+		p0 = -2.939615050414309854e-17;
+		p1 = 1.030821612883252373e-12;
+		p2 = -1.461695000370224873e-08;
+		p3 = -5.953732000720860076e-05;
+		p4 = 1.003925597252757207e+00;
+	break;
+	case 37800:
+		p0 = -1.509578131570550335e-17;
+		p1 = 6.253538622497773237e-13;
+		p2 = -1.047516110428303656e-08;
+		p3 = -5.040267062802067523e-05;
+		p4 = 1.003938012276286873e+00;
+	break;
+	case 44056:
+		p0 = -8.179918755257568798e-18;
+		p1 = 3.949666985075376660e-13;
+		p2 = -7.711241596699441441e-09;
+		p3 = -4.324592160336278773e-05;
+		p4 = 1.003947751979878067e+00;
+	break;
+	case 44100:
+		p0 = -8.147316012596786372e-18;
+		p1 = 3.937855238616550567e-13;
+		p2 = -7.695860699409773702e-09;
+		p3 = -4.320277669373632828e-05;
+		p4 = 1.003947810730627443e+00;
+	break;
+	case 47250:
+		p0 = -6.182156102335834534e-18;
+		p1 = 3.201545709180980074e-13;
+		p2 = -6.703887839395126650e-09;
+		p3 = -4.032277597168298445e-05;
+		p4 = 1.003951733380953559e+00;
+	break;
+	case 48000:
+		p0 = -5.804669671441499519e-18;
+		p1 = 3.053789928757690291e-13;
+		p2 = -6.496014866101249794e-09;
+		p3 = -3.969277247952757479e-05;
+		p4 = 1.003952591709977415e+00;
+	break;
+	case 50000:
+		p0 = -4.930039877651698485e-18;
+		p1 = 2.701762164752109105e-13;
+		p2 = -5.986696651033372113e-09;
+		p3 = -3.810515833478767255e-05;
+		p4 = 1.003954755096216900e+00;
+	break;
+	case 50400:
+		p0 = -4.775358854140600092e-18;
+		p1 = 2.637937027466497354e-13;
+		p2 = -5.892041055138477995e-09;
+		p3 = -3.780275477003837485e-05;
+		p4 = 1.003955167234265478e+00;
+	break;
+	case 88200:
+		p0 = -5.090139768480031043e-19;
+		p1 = 4.921424693356908116e-14;
+		p2 = -1.923829523675108346e-09;
+		p3 = -2.160214687014651151e-05;
+		p4 = 1.003977276279834019e+00;
+	break;
+	case 96000:
+		p0 = -3.626648836744412987e-19;
+		p1 = 3.816597595693573777e-14;
+		p2 = -1.623898000952206408e-09;
+		p3 = -1.984703070895103917e-05;
+		p4 = 1.003979674995812754e+00;
+	break;
+	case 176400:
+		p0 = -3.180720104052761169e-20;
+		p1 = 6.151207927460715513e-15;
+		p2 = -4.809399117661735116e-10;
+		p3 = -1.080127073758081756e-05;
+		p4 = 1.003992048707243789e+00;
+	break;
+	case 192000:
+		p0 = -2.266250752087159745e-20;
+		p1 = 4.770337959813220317e-15;
+		p2 = -4.059609201723455372e-10;
+		p3 = -9.923682425709201677e-06;
+		p4 = 1.003993250132436454e+00;
+	break;
+	case 352800:
+		p0 = -1.987755090799793513e-21;
+		p1 = 7.688647436953224411e-16;
+		p2 = -1.202327621003883834e-10;
+		p3 = -5.400685657755166908e-06;
+		p4 = 1.003999444875642189e+00;
+	break;
+	case 2822400:
+		p0 = -4.852498403591686415e-25;
+		p1 = 1.501626536939688520e-18;
+		p2 = -1.878606337281021417e-12;
+		p3 = -6.750912735944337505e-07;
+		p4 = 1.004005921979573834e+00;
+	break;
+	case 5644800:
+		p0 = -3.032792721276874507e-26;
+		p1 = 1.877027577372803603e-19;
+		p2 = -4.696510359527020341e-13;
+		p3 = -3.375458367765195566e-07;
+		p4 = 1.004006384824945863e+00;
+	break;
+	}
+
+	return p0*pow(_SC,4) +
+			p1*pow(_SC,3)+
+			p2*pow(_SC,2)+
+			p3*pow(_SC,1)+
+			p4;
+}
+
+int Parameter::get_high_and_compute() {
+}
+
+double Parameter::errorfunc(double _G1, double _GC, const matrix<double, 4, 1> &Target) {
+	double kT60 = Target(0),
+			kED = Target(1),
+			kC  = Target(2),
+			kTC = Target(3);
+
+	double G = G_G1_C(_G1, _GC, kC);
+	double D1 = D1_G1_T60_C(_G1, _GC, kT60, kC);
+	double DA = DA_D1_ED(D1, kED, 0.1);
+	double T60est = compute_T60(D1, _G1, _GC, G);
+	double EDest = compute_ED(D1, DA);
+	double Cest = compute_C(_G1, _GC, G);
+	double TCest = compute_TC(D1, _G1, DA);
+
+	matrix <double, 4, 1> est_vec, orig_vec, err_vec;
+
+	float w0 = 1.0, w1=1.0, w2=1.0, w3=1.0; // Weights for errors.
+
+	est_vec(0) = w0*_N(T60est, T60_MIN, T60_MAX);
+	est_vec(1) = w1*_N(EDest, ED_MIN, ED_MAX);
+	est_vec(2) = w2*_N(Cest, C_MIN, C_MAX);
+	est_vec(3) = w3*_N(TCest, TC_MIN, TC_MAX);
+
+	orig_vec(0) = w0*_N(Target(0), T60_MIN, T60_MAX);
+	orig_vec(1) = w1*_N(Target(1), ED_MIN, ED_MAX);
+	orig_vec(2) = w2*_N(Target(2), C_MIN, C_MAX);
+	orig_vec(3) = w3*_N(Target(3), TC_MIN, TC_MAX);
+
+	err_vec = dlib::abs(est_vec-orig_vec);
+
+	return mean(pow(err_vec,2)) + variance(pow(err_vec,2));
+
+}
+
+matrix<double, 5, 1> Parameter::inverse_mapping(double _T60, double _ED,
+		double _C, double _TC, double _SC, double SampleRate, double _G1) {
+    /*
+     * _G1 is a starting point for the search of G1
+     */
+
+	matrix<double, 5, 1> result;
+	for (int i=0; i<5; i++) result(i) = 0.0;
+
+	double GC = GC_SC(_SC, SampleRate);
+	result(3) = GC;
+
+	matrix<double,1,1> starting_point;
+	matrix<double,4,1> Target;
+
+	Target(0) = _T60;
+	Target(1) = _ED;
+	Target(2) = _C;
+	Target(3) = _TC;
+
+	starting_point = _G1; // Starting point is current G1, for faster convergence
+
+	// Lambda function for objective function to minimize.
+
+	auto func = [&] (const matrix<double, 0, 1> &x) { float g1 = x(0); return errorfunc(g1, GC, Target); };
+
+    find_min_box_constrained(bfgs_search_strategy(),
+                             objective_delta_stop_strategy(1e-9),
+							 func, derivative(func), starting_point, G1_MIN, G1_MAX);
+
+    double G1 = starting_point(0);
+
+    result(2) = G1;
+
+    double G = G_G1_C(G1,GC,_C);
+
+
+    result(4) = G;
+
+    double D1 = D1_G1_T60_C(G1, GC, _T60, _C);
+
+
+    result(0) = D1;
+
+    double DA = DA_D1_ED(D1, _ED);
+    result(1) = DA;
+
+	return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Parameter.h	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,154 @@
+/*
+ * Parameter.h
+ *
+ *  Created on: Dec 14, 2016
+ *      Author: Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk>
+ *
+ *  For using that code in research please cite:
+ *
+ *
+@Article{dlib09,
+  author = {Davis E. King},
+  title = {Dlib-ml: A Machine Learning Toolkit},
+  journal = {Journal of Machine Learning Research},
+  year = {2009},
+  volume = {10},
+  pages = {1755-1758},
+}
+ *
+ *
+ */
+
+#ifndef PARAMETER_H_
+#define PARAMETER_H_
+
+#include "limits.hpp"
+#include <dlib/optimization.h>
+#include <iostream>
+
+/*
+ * Normalization function
+ */
+
+#define _N(f, fmin, fmax) ((f-fmin) / (fmax-fmin))
+
+using namespace dlib;
+using namespace std;
+
+typedef matrix<double,0,1> column_vector;
+
+class Parameter {
+private:
+
+	/*
+	 * D1: First Comb Filter Delay
+	 * G1: First Comb Filter Gain
+	 * DA: All-pass Filter Delay
+	 * GA (in limits.hpp): All-pass Filter gain
+	 * GC: Low-pass Filter Gain
+	 * G:  Dry/Wet Mix
+	 *
+	 */
+
+	double D1, DA, G1, GC, G;
+
+	/*
+	 * T60: Reverberation Time
+	 * ED:  Echo Density
+	 * C:   Clarity
+	 * TC:  Central Time
+	 * SC:  Spectral Centroid
+	 * SC_MAX: Maximum Spectral Centroid (depends on sample rate)
+	 *
+	 */
+
+	double T60, ED, C, TC, SC, SC_MAX;
+
+	double SampleRate;
+
+	friend std::ostream& operator<<(std::ostream &s, const Parameter &p);
+
+	static double compute_T60(double _D1, double _G1, double _GC, double _G);
+	static double compute_ED(double _D1, double _DA);
+	static double compute_C(double _G1, double _GC, double _G);
+	static double compute_TC(double _D1, double _G1, double _DA);
+	static double compute_SC(double _GC, double _SR);
+
+	/*
+	 * Functions used in computing the inverse mapping/
+	 */
+
+	static double TC_G1_D1_ED(double _D1, double _G1, double _ED, double t=0.1);
+	static double T60_D1_G1_C(double _D1, double _G1, double _GC, double _C);
+	static double D1_G1_T60_C(double _G1, double _GC, double _T60, double _C);
+	static double G_G1_C(double _G1, double _GC, double _C);
+	static double DA_D1_ED(double _D1, double _ED, double t=0.1);
+
+	/*
+	 * Function to minimize.
+	 */
+
+	static double GC_SC(double _SC, double SR);
+	static double errorfunc(double _G1, double _GC, const matrix<double, 4, 1> &Target);
+	static matrix <double, 5, 1> inverse_mapping(double _T60, double _ED, double _C, double _TC, double _SC, double SampleRate, double _G1);
+
+
+public:
+	Parameter(double SR=44100.0,
+			  double _D1 = 0.05,
+			  double _DA = 0.006,
+			  double _G1 = 0.5,
+			  double _GC = 0.5,
+			  double _G  = 0.5,
+			  double _T60 = 0.423289,
+			  double _ED  = 6927.08,
+			  double _C   = -0.107798,
+			  double _TC  = 0.0490677,
+			  double _SC  = 6419.15
+			  );
+	virtual ~Parameter();
+	double getC() const;
+	void setC(double c);
+	double getD1() const;
+	void setD1(double d1);
+	double getDa() const;
+	void setDa(double da);
+	double getEd() const;
+	void setEd(double ed);
+	double getG() const;
+	void setG(double g);
+	double getG1() const;
+	void setG1(double g1);
+	double getGc() const;
+	void setGc(double gc);
+	double getSampleRate() const;
+	void setSampleRate(double sampleRate);
+	double getSc() const;
+	void setSc(double sc);
+	double getT60() const;
+	void setT60(double t60);
+	double getTc() const;
+	void setTc(double tc);
+
+	/* compute functions */
+
+	/*
+	 *  Low level -> High level
+	 */
+
+	int set_low_and_compute(double D1, double DA, double G1, double GC, double G);
+	int get_low_and_computer();
+
+	/*
+	 *  High level -> Low level
+	 */
+
+	int set_high_and_compute(double T60, double ED, double C, double TC, double SC);
+	int get_high_and_compute();
+
+
+};
+
+
+
+#endif /* PARAMETER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/Parameter_test.cpp	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,11 @@
+/*
+ * Parameter_test.cpp
+ *
+ *  Created on: Dec 14, 2016
+ *      Author: mmxgn
+ */
+
+#include "Parameter.h"
+#include <gtest/gtest.h>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/csv.h	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,1258 @@
+// Copyright: (2012-2015) Ben Strasser <code@ben-strasser.net>
+// License: BSD-3
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice,
+//    this list of conditions and the following disclaimer.
+//
+//2. Redistributions in binary form must reproduce the above copyright notice,
+//   this list of conditions and the following disclaimer in the documentation
+//   and/or other materials provided with the distribution.
+//
+//3. Neither the name of the copyright holder nor the names of its contributors
+//   may be used to endorse or promote products derived from this software
+//   without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CSV_H
+#define CSV_H
+
+#include <vector>
+#include <string>
+#include <cstring>
+#include <algorithm>
+#include <utility>
+#include <cstdio>
+#include <exception>
+#ifndef CSV_IO_NO_THREAD
+#include <mutex>
+#include <thread>
+#include <condition_variable>
+#endif
+#include <memory>
+#include <cassert>
+#include <cerrno>
+#include <istream>
+
+namespace io{
+        ////////////////////////////////////////////////////////////////////////////
+        //                                 LineReader                             //
+        ////////////////////////////////////////////////////////////////////////////
+
+        namespace error{
+                struct base : std::exception{
+                        virtual void format_error_message()const = 0;                          
+                       
+                        const char*what()const throw(){
+                                format_error_message();
+                                return error_message_buffer;
+                        }
+
+                        mutable char error_message_buffer[256];
+                };
+
+                const int max_file_name_length = 255;
+
+                struct with_file_name{
+                        with_file_name(){
+                                std::memset(file_name, 0, max_file_name_length+1);
+                        }
+                       
+                        void set_file_name(const char*file_name){
+                                std::strncpy(this->file_name, file_name, max_file_name_length);
+                                this->file_name[max_file_name_length] = '\0';
+                        }
+
+                        char file_name[max_file_name_length+1];
+                };
+
+                struct with_file_line{
+                        with_file_line(){
+                                file_line = -1;
+                        }
+                       
+                        void set_file_line(int file_line){
+                                this->file_line = file_line;
+                        }
+
+                        int file_line;
+                };
+
+                struct with_errno{
+                        with_errno(){
+                                errno_value = 0;
+                        }
+                       
+                        void set_errno(int errno_value){
+                                this->errno_value = errno_value;
+                        }
+
+                        int errno_value;
+                };
+
+                struct can_not_open_file :
+                        base,
+                        with_file_name,
+                        with_errno{
+                        void format_error_message()const{
+                                if(errno_value != 0)
+                                        std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                                "Can not open file \"%s\" because \"%s\"."
+                                                , file_name, std::strerror(errno_value));
+                                else
+                                        std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                                "Can not open file \"%s\"."
+                                                , file_name);
+                        }
+                };
+
+                struct line_length_limit_exceeded :
+                        base,
+                        with_file_name,
+                        with_file_line{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Line number %d in file \"%s\" exceeds the maximum length of 2^24-1."
+                                        , file_line, file_name);
+                        }
+                };
+        }
+
+        class ByteSourceBase{
+        public:
+                virtual int read(char*buffer, int size)=0;
+                virtual ~ByteSourceBase(){}
+        };
+
+        namespace detail{
+
+                class OwningStdIOByteSourceBase : public ByteSourceBase{
+                public:
+                        explicit OwningStdIOByteSourceBase(FILE*file):file(file){
+                                // Tell the std library that we want to do the buffering ourself.
+                                std::setvbuf(file, 0, _IONBF, 0);
+                        }
+
+                        int read(char*buffer, int size){
+                                return std::fread(buffer, 1, size, file);
+                        }
+
+                        ~OwningStdIOByteSourceBase(){
+                                std::fclose(file);
+                        }
+
+                private:
+                        FILE*file;
+                };
+
+                class NonOwningIStreamByteSource : public ByteSourceBase{
+                public:
+                        explicit NonOwningIStreamByteSource(std::istream&in):in(in){}
+
+                        int read(char*buffer, int size){
+                                in.read(buffer, size);
+                                return in.gcount();
+                        }
+
+                        ~NonOwningIStreamByteSource(){}
+
+                private:
+                       std::istream&in;
+                };
+
+                class NonOwningStringByteSource : public ByteSourceBase{
+                public:
+                        NonOwningStringByteSource(const char*str, long long size):str(str), remaining_byte_count(size){}
+
+                        int read(char*buffer, int desired_byte_count){
+                                int to_copy_byte_count = desired_byte_count;
+                                if(remaining_byte_count < to_copy_byte_count)
+                                        to_copy_byte_count = remaining_byte_count;
+                                std::memcpy(buffer, str, to_copy_byte_count);
+                                remaining_byte_count -= to_copy_byte_count;
+                                str += to_copy_byte_count;
+                                return to_copy_byte_count;
+                        }
+
+                        ~NonOwningStringByteSource(){}
+
+                private:
+                        const char*str;
+                        long long remaining_byte_count;
+                };
+
+                #ifndef CSV_IO_NO_THREAD
+                class AsynchronousReader{
+                public:
+                        void init(std::unique_ptr<ByteSourceBase>arg_byte_source){
+                                std::unique_lock<std::mutex>guard(lock);
+                                byte_source = std::move(arg_byte_source);
+                                desired_byte_count = -1;
+                                termination_requested = false;
+                                worker = std::thread(
+                                        [&]{
+                                                std::unique_lock<std::mutex>guard(lock);
+                                                try{
+                                                        for(;;){
+                                                                read_requested_condition.wait(
+                                                                        guard, 
+                                                                        [&]{
+                                                                                return desired_byte_count != -1 || termination_requested;
+                                                                        }
+                                                                );
+                                                                if(termination_requested)
+                                                                        return;
+
+                                                                read_byte_count = byte_source->read(buffer, desired_byte_count);
+                                                                desired_byte_count = -1;
+                                                                if(read_byte_count == 0)
+                                                                        break;
+                                                                read_finished_condition.notify_one();
+                                                        }
+                                                }catch(...){
+                                                        read_error = std::current_exception();
+                                                }
+                                                read_finished_condition.notify_one();
+                                        }
+                                );
+                        }
+
+                        bool is_valid()const{
+                                return byte_source != 0;
+                        }
+
+                        void start_read(char*arg_buffer, int arg_desired_byte_count){
+                                std::unique_lock<std::mutex>guard(lock);
+                                buffer = arg_buffer;
+                                desired_byte_count = arg_desired_byte_count;
+                                read_byte_count = -1;
+                                read_requested_condition.notify_one();
+                        }
+
+                        int finish_read(){
+                                std::unique_lock<std::mutex>guard(lock);
+                                read_finished_condition.wait(
+                                        guard, 
+                                        [&]{
+                                                return read_byte_count != -1 || read_error;
+                                        }
+                                );
+                                if(read_error)
+                                        std::rethrow_exception(read_error);
+                                else
+                                        return read_byte_count;
+                        }
+
+                        ~AsynchronousReader(){
+                                if(byte_source != 0){
+                                        {
+                                                std::unique_lock<std::mutex>guard(lock);
+                                                termination_requested = true;
+                                        }
+                                        read_requested_condition.notify_one();
+                                        worker.join();
+                                }
+                        }
+
+                private:           
+                        std::unique_ptr<ByteSourceBase>byte_source;
+
+                        std::thread worker;
+
+                        bool termination_requested;
+                        std::exception_ptr read_error;
+                        char*buffer;
+                        int desired_byte_count;
+                        int read_byte_count;
+
+                        std::mutex lock;
+                        std::condition_variable read_finished_condition;
+                        std::condition_variable read_requested_condition;  
+                };
+                #endif
+
+                class SynchronousReader{
+                public:
+                        void init(std::unique_ptr<ByteSourceBase>arg_byte_source){
+                                byte_source = std::move(arg_byte_source);
+                        }
+
+                        bool is_valid()const{
+                                return byte_source != 0;
+                        }
+
+                        void start_read(char*arg_buffer, int arg_desired_byte_count){
+                                buffer = arg_buffer;
+                                desired_byte_count = arg_desired_byte_count;
+                        }
+
+                        int finish_read(){
+                                return byte_source->read(buffer, desired_byte_count);
+                        }
+                private:
+                        std::unique_ptr<ByteSourceBase>byte_source;
+                        char*buffer;
+                        int desired_byte_count;
+                };
+        }
+
+        class LineReader{
+        private:
+                static const int block_len = 1<<24;
+                #ifdef CSV_IO_NO_THREAD
+                detail::SynchronousReader reader;
+                #else
+                detail::AsynchronousReader reader;
+                #endif
+                char*buffer;
+                int data_begin;
+                int data_end;
+
+                char file_name[error::max_file_name_length+1];
+                unsigned file_line;
+
+                static std::unique_ptr<ByteSourceBase> open_file(const char*file_name){
+                        // We open the file in binary mode as it makes no difference under *nix
+                        // and under Windows we handle \r\n newlines ourself.
+                        FILE*file = std::fopen(file_name, "rb");
+                        if(file == 0){
+                                int x = errno; // store errno as soon as possible, doing it after constructor call can fail.
+                                error::can_not_open_file err;
+                                err.set_errno(x);
+                                err.set_file_name(file_name);
+                                throw err;
+                        }
+                        return std::unique_ptr<ByteSourceBase>(new detail::OwningStdIOByteSourceBase(file));
+                }
+
+                void init(std::unique_ptr<ByteSourceBase>byte_source){
+                        file_line = 0;
+
+                        buffer = new char[3*block_len];
+                        try{
+                                data_begin = 0;
+                                data_end = byte_source->read(buffer, 2*block_len);
+
+                                // Ignore UTF-8 BOM
+                                if(data_end >= 3 && buffer[0] == '\xEF' && buffer[1] == '\xBB' && buffer[2] == '\xBF')
+                                        data_begin = 3;
+
+                                if(data_end == 2*block_len){
+                                        reader.init(std::move(byte_source));
+                                        reader.start_read(buffer + 2*block_len, block_len);
+                                }
+                        }catch(...){
+                                delete[]buffer;
+                                throw;
+                        }
+                }
+
+        public:
+                LineReader() = delete;
+                LineReader(const LineReader&) = delete;
+                LineReader&operator=(const LineReader&) = delete;
+
+                explicit LineReader(const char*file_name){
+                        set_file_name(file_name);
+                        init(open_file(file_name));
+                }
+
+                explicit LineReader(const std::string&file_name){
+                        set_file_name(file_name.c_str());
+                        init(open_file(file_name.c_str()));
+                }
+
+                LineReader(const char*file_name, std::unique_ptr<ByteSourceBase>byte_source){
+                        set_file_name(file_name);
+                        init(std::move(byte_source));
+                }
+
+                LineReader(const std::string&file_name, std::unique_ptr<ByteSourceBase>byte_source){
+                        set_file_name(file_name.c_str());
+                        init(std::move(byte_source));
+                }
+
+                LineReader(const char*file_name, const char*data_begin, const char*data_end){
+                        set_file_name(file_name);
+                        init(std::unique_ptr<ByteSourceBase>(new detail::NonOwningStringByteSource(data_begin, data_end-data_begin)));
+                }
+
+                LineReader(const std::string&file_name, const char*data_begin, const char*data_end){
+                        set_file_name(file_name.c_str());
+                        init(std::unique_ptr<ByteSourceBase>(new detail::NonOwningStringByteSource(data_begin, data_end-data_begin)));
+                }
+
+                LineReader(const char*file_name, FILE*file){
+                        set_file_name(file_name);
+                        init(std::unique_ptr<ByteSourceBase>(new detail::OwningStdIOByteSourceBase(file)));
+                }
+
+                LineReader(const std::string&file_name, FILE*file){
+                        set_file_name(file_name.c_str());
+                        init(std::unique_ptr<ByteSourceBase>(new detail::OwningStdIOByteSourceBase(file)));
+                }
+
+                LineReader(const char*file_name, std::istream&in){
+                        set_file_name(file_name);
+                        init(std::unique_ptr<ByteSourceBase>(new detail::NonOwningIStreamByteSource(in)));
+                }
+
+                LineReader(const std::string&file_name, std::istream&in){
+                        set_file_name(file_name.c_str());
+                        init(std::unique_ptr<ByteSourceBase>(new detail::NonOwningIStreamByteSource(in)));
+                }
+
+                void set_file_name(const std::string&file_name){
+                        set_file_name(file_name.c_str());
+                }
+
+                void set_file_name(const char*file_name){
+                        strncpy(this->file_name, file_name, error::max_file_name_length);
+                        this->file_name[error::max_file_name_length] = '\0';
+                }
+
+                const char*get_truncated_file_name()const{
+                        return file_name;
+                }
+
+                void set_file_line(unsigned file_line){
+                        this->file_line = file_line;
+                }
+
+                unsigned get_file_line()const{
+                        return file_line;
+                }
+
+                char*next_line(){
+                        if(data_begin == data_end)
+                                return 0;
+
+                        ++file_line;
+
+                        assert(data_begin < data_end);
+                        assert(data_end <= block_len*2);
+
+                        if(data_begin >= block_len){
+                                std::memcpy(buffer, buffer+block_len, block_len);
+                                data_begin -= block_len;
+                                data_end -= block_len;
+                                if(reader.is_valid())
+                                {
+                                        data_end += reader.finish_read();
+                                        std::memcpy(buffer+block_len, buffer+2*block_len, block_len);
+                                        reader.start_read(buffer + 2*block_len, block_len);
+                                }
+                        }
+
+                        int line_end = data_begin;
+                        while(buffer[line_end] != '\n' && line_end != data_end){
+                                ++line_end;
+                        }
+
+                        if(line_end - data_begin + 1 > block_len){
+                                error::line_length_limit_exceeded err;
+                                err.set_file_name(file_name);
+                                err.set_file_line(file_line);
+                                throw err;
+                        }
+
+                        if(buffer[line_end] == '\n'){
+                                buffer[line_end] = '\0';
+                        }else{
+                                // some files are missing the newline at the end of the
+                                // last line
+                                ++data_end;
+                                buffer[line_end] = '\0';
+                        }
+
+                        // handle windows \r\n-line breaks
+                        if(line_end != data_begin && buffer[line_end-1] == '\r')
+                                buffer[line_end-1] = '\0';
+
+                        char*ret = buffer + data_begin;
+                        data_begin = line_end+1;
+                        return ret;
+                }
+
+                ~LineReader(){
+                        delete[] buffer;
+                }
+        };
+
+
+        ////////////////////////////////////////////////////////////////////////////
+        //                                 CSV                                    //
+        ////////////////////////////////////////////////////////////////////////////
+
+        namespace error{
+                const int max_column_name_length = 63;
+                struct with_column_name{
+                        with_column_name(){
+                                std::memset(column_name, 0, max_column_name_length+1);
+                        }
+                       
+                        void set_column_name(const char*column_name){
+                                std::strncpy(this->column_name, column_name, max_column_name_length);
+                                this->column_name[max_column_name_length] = '\0';
+                        }
+
+                        char column_name[max_column_name_length+1];
+                };
+
+
+                const int max_column_content_length = 63;
+
+                struct with_column_content{
+                        with_column_content(){
+                                std::memset(column_content, 0, max_column_content_length+1);
+                        }
+                       
+                        void set_column_content(const char*column_content){
+                                std::strncpy(this->column_content, column_content, max_column_content_length);
+                                this->column_content[max_column_content_length] = '\0';
+                        }
+
+                        char column_content[max_column_content_length+1];
+                };
+
+
+                struct extra_column_in_header :
+                        base,
+                        with_file_name,
+                        with_column_name{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Extra column \"%s\" in header of file \"%s\"."
+                                        , column_name, file_name);
+                        }
+                };
+
+                struct missing_column_in_header :
+                        base,
+                        with_file_name,
+                        with_column_name{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Missing column \"%s\" in header of file \"%s\"."
+                                        , column_name, file_name);
+                        }
+                };
+
+                struct duplicated_column_in_header :
+                        base,
+                        with_file_name,
+                        with_column_name{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Duplicated column \"%s\" in header of file \"%s\"."
+                                        , column_name, file_name);
+                        }
+                };
+
+                struct header_missing :
+                        base,
+                        with_file_name{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Header missing in file \"%s\"."
+                                        , file_name);
+                        }
+                };
+
+                struct too_few_columns :
+                        base,
+                        with_file_name,
+                        with_file_line{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Too few columns in line %d in file \"%s\"."
+                                        , file_line, file_name);
+                        }
+                };
+
+                struct too_many_columns :
+                        base,
+                        with_file_name,
+                        with_file_line{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Too many columns in line %d in file \"%s\"."
+                                        , file_line, file_name);
+                        }
+                };
+
+                struct escaped_string_not_closed :
+                        base,
+                        with_file_name,
+                        with_file_line{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "Escaped string was not closed in line %d in file \"%s\"."
+                                        , file_line, file_name);
+                        }
+                };
+
+                struct integer_must_be_positive :
+                        base,
+                        with_file_name,
+                        with_file_line,
+                        with_column_name,
+                        with_column_content{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "The integer \"%s\" must be positive or 0 in column \"%s\" in file \"%s\" in line \"%d\"."
+                                        , column_content, column_name, file_name, file_line);
+                        }
+                };
+
+                struct no_digit :
+                        base,
+                        with_file_name,
+                        with_file_line,
+                        with_column_name,
+                        with_column_content{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "The integer \"%s\" contains an invalid digit in column \"%s\" in file \"%s\" in line \"%d\"."
+                                        , column_content, column_name, file_name, file_line);
+                        }
+                };
+
+                struct integer_overflow :
+                        base,
+                        with_file_name,
+                        with_file_line,
+                        with_column_name,
+                        with_column_content{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "The integer \"%s\" overflows in column \"%s\" in file \"%s\" in line \"%d\"."
+                                        , column_content, column_name, file_name, file_line);
+                        }
+                };
+
+                struct integer_underflow :
+                        base,
+                        with_file_name,
+                        with_file_line,
+                        with_column_name,
+                        with_column_content{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "The integer \"%s\" underflows in column \"%s\" in file \"%s\" in line \"%d\"."
+                                        , column_content, column_name, file_name, file_line);
+                        }
+                };
+
+                struct invalid_single_character :
+                        base,
+                        with_file_name,
+                        with_file_line,
+                        with_column_name,
+                        with_column_content{
+                        void format_error_message()const{
+                                std::snprintf(error_message_buffer, sizeof(error_message_buffer),
+                                        "The content \"%s\" of column \"%s\" in file \"%s\" in line \"%d\" is not a single character."
+                                        , column_content, column_name, file_name, file_line);
+                        }
+                };
+        }
+
+        typedef unsigned ignore_column;
+        static const ignore_column ignore_no_column = 0;
+        static const ignore_column ignore_extra_column = 1;
+        static const ignore_column ignore_missing_column = 2;
+
+        template<char ... trim_char_list>
+        struct trim_chars{
+        private:
+                constexpr static bool is_trim_char(char){
+                        return false;
+                }
+       
+                template<class ...OtherTrimChars>
+                constexpr static bool is_trim_char(char c, char trim_char, OtherTrimChars...other_trim_chars){
+                        return c == trim_char || is_trim_char(c, other_trim_chars...);
+                }
+
+        public:
+                static void trim(char*&str_begin, char*&str_end){
+                        while(is_trim_char(*str_begin, trim_char_list...) && str_begin != str_end)
+                                ++str_begin;
+                        while(is_trim_char(*(str_end-1), trim_char_list...) && str_begin != str_end)
+                                --str_end;
+                        *str_end = '\0';
+                }
+        };
+
+
+        struct no_comment{
+                static bool is_comment(const char*){
+                        return false;
+                }
+        };
+
+        template<char ... comment_start_char_list>
+        struct single_line_comment{
+        private:
+                constexpr static bool is_comment_start_char(char){
+                        return false;
+                }
+       
+                template<class ...OtherCommentStartChars>
+                constexpr static bool is_comment_start_char(char c, char comment_start_char, OtherCommentStartChars...other_comment_start_chars){
+                        return c == comment_start_char || is_comment_start_char(c, other_comment_start_chars...);
+                }
+
+        public:
+
+                static bool is_comment(const char*line){
+                        return is_comment_start_char(*line, comment_start_char_list...);
+                }
+        };
+
+        struct empty_line_comment{
+                static bool is_comment(const char*line){
+                        if(*line == '\0')
+                                return true;
+                        while(*line == ' ' || *line == '\t'){
+                                ++line;
+                                if(*line == 0)
+                                        return true;
+                        }
+                        return false;
+                }
+        };
+
+        template<char ... comment_start_char_list>
+        struct single_and_empty_line_comment{
+                static bool is_comment(const char*line){
+                        return single_line_comment<comment_start_char_list...>::is_comment(line) || empty_line_comment::is_comment(line);
+                }
+        };
+
+        template<char sep>
+        struct no_quote_escape{
+                static const char*find_next_column_end(const char*col_begin){
+                        while(*col_begin != sep && *col_begin != '\0')
+                                ++col_begin;
+                        return col_begin;
+                }
+
+                static void unescape(char*&, char*&){
+
+                }
+        };
+
+        template<char sep, char quote>
+        struct double_quote_escape{
+                static const char*find_next_column_end(const char*col_begin){
+                        while(*col_begin != sep && *col_begin != '\0')
+                                if(*col_begin != quote)
+                                        ++col_begin;
+                                else{
+                                        do{
+                                                ++col_begin;
+                                                while(*col_begin != quote){
+                                                        if(*col_begin == '\0')
+                                                                throw error::escaped_string_not_closed();
+                                                        ++col_begin;
+                                                }
+                                                ++col_begin;
+                                        }while(*col_begin == quote);
+                                }      
+                        return col_begin;      
+                }
+
+                static void unescape(char*&col_begin, char*&col_end){
+                        if(col_end - col_begin >= 2){
+                                if(*col_begin == quote && *(col_end-1) == quote){
+                                        ++col_begin;
+                                        --col_end;
+                                        char*out = col_begin;
+                                        for(char*in = col_begin; in!=col_end; ++in){
+                                                if(*in == quote && (in+1) != col_end && *(in+1) == quote){
+                                                         ++in;
+                                                }
+                                                *out = *in;
+                                                ++out;
+                                        }
+                                        col_end = out;
+                                        *col_end = '\0';
+                                }
+                        }
+                       
+                }
+        };
+
+        struct throw_on_overflow{
+                template<class T>
+                static void on_overflow(T&){
+                        throw error::integer_overflow();
+                }
+               
+                template<class T>
+                static void on_underflow(T&){
+                        throw error::integer_underflow();
+                }
+        };
+
+        struct ignore_overflow{
+                template<class T>
+                static void on_overflow(T&){}
+               
+                template<class T>
+                static void on_underflow(T&){}
+        };
+
+        struct set_to_max_on_overflow{
+                template<class T>
+                static void on_overflow(T&x){
+                        x = std::numeric_limits<T>::max();
+                }
+               
+                template<class T>
+                static void on_underflow(T&x){
+                        x = std::numeric_limits<T>::min();
+                }
+        };
+
+
+        namespace detail{
+                template<class quote_policy>
+                void chop_next_column(
+                        char*&line, char*&col_begin, char*&col_end
+                ){
+                        assert(line != nullptr);
+
+                        col_begin = line;
+                        // the col_begin + (... - col_begin) removes the constness
+                        col_end = col_begin + (quote_policy::find_next_column_end(col_begin) - col_begin);
+                       
+                        if(*col_end == '\0'){
+                                line = nullptr;
+                        }else{
+                                *col_end = '\0';
+                                line = col_end + 1;    
+                        }
+                }
+
+                template<class trim_policy, class quote_policy>
+                void parse_line(
+                        char*line,
+                        char**sorted_col,
+                        const std::vector<int>&col_order
+                ){
+                        for(std::size_t i=0; i<col_order.size(); ++i){
+                                if(line == nullptr)
+                                        throw ::io::error::too_few_columns();
+                                char*col_begin, *col_end;
+                                chop_next_column<quote_policy>(line, col_begin, col_end);
+
+                                if(col_order[i] != -1){
+                                        trim_policy::trim(col_begin, col_end);
+                                        quote_policy::unescape(col_begin, col_end);
+                                                               
+                                        sorted_col[col_order[i]] = col_begin;
+                                }
+                        }
+                        if(line != nullptr)
+                                throw ::io::error::too_many_columns();
+                }
+
+                template<unsigned column_count, class trim_policy, class quote_policy>
+                void parse_header_line(
+                        char*line,
+                        std::vector<int>&col_order,
+                        const std::string*col_name,
+                        ignore_column ignore_policy
+                ){
+                        col_order.clear();
+
+                        bool found[column_count];
+                        std::fill(found, found + column_count, false);
+                        while(line){
+                                char*col_begin,*col_end;
+                                chop_next_column<quote_policy>(line, col_begin, col_end);
+
+                                trim_policy::trim(col_begin, col_end);
+                                quote_policy::unescape(col_begin, col_end);
+                               
+                                for(unsigned i=0; i<column_count; ++i)
+                                        if(col_begin == col_name[i]){
+                                                if(found[i]){
+                                                        error::duplicated_column_in_header err;
+                                                        err.set_column_name(col_begin);
+                                                        throw err;
+                                                }
+                                                found[i] = true;
+                                                col_order.push_back(i);
+                                                col_begin = 0;
+                                                break;
+                                        }
+                                if(col_begin){
+                                        if(ignore_policy & ::io::ignore_extra_column)
+                                                col_order.push_back(-1);
+                                        else{
+                                                error::extra_column_in_header err;
+                                                err.set_column_name(col_begin);
+                                                throw err;
+                                        }
+                                }
+                        }
+                        if(!(ignore_policy & ::io::ignore_missing_column)){
+                                for(unsigned i=0; i<column_count; ++i){
+                                        if(!found[i]){
+                                                error::missing_column_in_header err;
+                                                err.set_column_name(col_name[i].c_str());
+                                                throw err;
+                                        }
+                                }
+                        }
+                }
+
+                template<class overflow_policy>
+                void parse(char*col, char &x){
+                        if(!*col)
+                                throw error::invalid_single_character();
+                        x = *col;
+                        ++col;
+                        if(*col)
+                                throw error::invalid_single_character();
+                }
+               
+                template<class overflow_policy>
+                void parse(char*col, std::string&x){
+                        x = col;
+                }
+
+                template<class overflow_policy>
+                void parse(char*col, const char*&x){
+                        x = col;
+                }
+
+                template<class overflow_policy>
+                void parse(char*col, char*&x){
+                        x = col;
+                }
+
+                template<class overflow_policy, class T>
+                void parse_unsigned_integer(const char*col, T&x){
+                        x = 0;
+                        while(*col != '\0'){
+                                if('0' <= *col && *col <= '9'){
+                                        T y = *col - '0';
+                                        if(x > (std::numeric_limits<T>::max()-y)/10){
+                                                overflow_policy::on_overflow(x);
+                                                return;
+                                        }
+                                        x = 10*x+y;
+                                }else
+                                        throw error::no_digit();
+                                ++col;
+                        }
+                }
+
+                template<class overflow_policy>void parse(char*col, unsigned char &x)
+                        {parse_unsigned_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, unsigned short &x)
+                        {parse_unsigned_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, unsigned int &x)
+                        {parse_unsigned_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, unsigned long &x)
+                        {parse_unsigned_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, unsigned long long &x)
+                        {parse_unsigned_integer<overflow_policy>(col, x);}
+               
+                template<class overflow_policy, class T>
+                void parse_signed_integer(const char*col, T&x){
+                        if(*col == '-'){
+                                ++col;
+
+                                x = 0;
+                                while(*col != '\0'){
+                                        if('0' <= *col && *col <= '9'){
+                                                T y = *col - '0';
+                                                if(x < (std::numeric_limits<T>::min()+y)/10){
+                                                        overflow_policy::on_underflow(x);
+                                                        return;
+                                                }
+                                                x = 10*x-y;
+                                        }else
+                                                throw error::no_digit();
+                                        ++col;
+                                }
+                                return;
+                        }else if(*col == '+')
+                                ++col;
+                        parse_unsigned_integer<overflow_policy>(col, x);
+                }      
+
+                template<class overflow_policy>void parse(char*col, signed char &x)
+                        {parse_signed_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, signed short &x)
+                        {parse_signed_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, signed int &x)
+                        {parse_signed_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, signed long &x)
+                        {parse_signed_integer<overflow_policy>(col, x);}
+                template<class overflow_policy>void parse(char*col, signed long long &x)
+                        {parse_signed_integer<overflow_policy>(col, x);}
+
+                template<class T>
+                void parse_float(const char*col, T&x){
+                        bool is_neg = false;
+                        if(*col == '-'){
+                                is_neg = true;
+                                ++col;
+                        }else if(*col == '+')
+                                ++col;
+
+                        x = 0;
+                        while('0' <= *col && *col <= '9'){
+                                int y = *col - '0';
+                                x *= 10;
+                                x += y;
+                                ++col;
+                        }
+                       
+                        if(*col == '.'|| *col == ','){
+                                ++col;
+                                T pos = 1;
+                                while('0' <= *col && *col <= '9'){
+                                        pos /= 10;
+                                        int y = *col - '0';
+                                        ++col;
+                                        x += y*pos;
+                                }
+                        }
+
+                        if(*col == 'e' || *col == 'E'){
+                                ++col;
+                                int e;
+
+                                parse_signed_integer<set_to_max_on_overflow>(col, e);
+                               
+                                if(e != 0){
+                                        T base;
+                                        if(e < 0){
+                                                base = 0.1;
+                                                e = -e;
+                                        }else{
+                                                base = 10;
+                                        }
+       
+                                        while(e != 1){
+                                                if((e & 1) == 0){
+                                                        base = base*base;
+                                                        e >>= 1;
+                                                }else{
+                                                        x *= base;
+                                                        --e;
+                                                }
+                                        }
+                                        x *= base;
+                                }
+                        }else{
+                                if(*col != '\0')
+                                        throw error::no_digit();
+                        }
+
+                        if(is_neg)
+                                x = -x;
+                }
+
+                template<class overflow_policy> void parse(char*col, float&x) { parse_float(col, x); }
+                template<class overflow_policy> void parse(char*col, double&x) { parse_float(col, x); }
+                template<class overflow_policy> void parse(char*col, long double&x) { parse_float(col, x); }
+
+                template<class overflow_policy, class T>
+                void parse(char*col, T&x){
+                        // GCC evalutes "false" when reading the template and
+                        // "sizeof(T)!=sizeof(T)" only when instantiating it. This is why
+                        // this strange construct is used.
+                        static_assert(sizeof(T)!=sizeof(T),
+                                "Can not parse this type. Only buildin integrals, floats, char, char*, const char* and std::string are supported");
+                }
+
+        }
+
+        template<unsigned column_count,
+                class trim_policy = trim_chars<' ', '\t'>,
+                class quote_policy = no_quote_escape<','>,
+                class overflow_policy = throw_on_overflow,
+                class comment_policy = no_comment
+        >
+        class CSVReader{
+        private:
+                LineReader in;
+
+                char*(row[column_count]);
+                std::string column_names[column_count];
+
+                std::vector<int>col_order;
+
+                template<class ...ColNames>
+                void set_column_names(std::string s, ColNames...cols){
+                        column_names[column_count-sizeof...(ColNames)-1] = std::move(s);
+                        set_column_names(std::forward<ColNames>(cols)...);
+                }
+
+                void set_column_names(){}
+
+
+        public:
+                CSVReader() = delete;
+                CSVReader(const CSVReader&) = delete;
+                CSVReader&operator=(const CSVReader&);
+
+                template<class ...Args>
+                explicit CSVReader(Args&&...args):in(std::forward<Args>(args)...){
+                        std::fill(row, row+column_count, nullptr);
+                        col_order.resize(column_count);
+                        for(unsigned i=0; i<column_count; ++i)
+                                col_order[i] = i;
+                        for(unsigned i=1; i<=column_count; ++i)
+                                column_names[i-1] = "col"+std::to_string(i);
+                }
+
+		char*next_line(){
+			return in.next_line();
+		}
+
+                template<class ...ColNames>
+                void read_header(ignore_column ignore_policy, ColNames...cols){
+                        static_assert(sizeof...(ColNames)>=column_count, "not enough column names specified");
+                        static_assert(sizeof...(ColNames)<=column_count, "too many column names specified");
+                        try{
+                                set_column_names(std::forward<ColNames>(cols)...);
+
+                                char*line;
+                                do{
+                                        line = in.next_line();
+                                        if(!line)
+                                                throw error::header_missing();
+                                }while(comment_policy::is_comment(line));
+
+                                detail::parse_header_line
+                                        <column_count, trim_policy, quote_policy>
+                                        (line, col_order, column_names, ignore_policy);
+                        }catch(error::with_file_name&err){
+                                err.set_file_name(in.get_truncated_file_name());
+                                throw;
+                        }
+                }
+
+                template<class ...ColNames>
+                void set_header(ColNames...cols){
+                        static_assert(sizeof...(ColNames)>=column_count,
+                                "not enough column names specified");
+                        static_assert(sizeof...(ColNames)<=column_count,
+                                "too many column names specified");
+                        set_column_names(std::forward<ColNames>(cols)...);
+                        std::fill(row, row+column_count, nullptr);
+                        col_order.resize(column_count);
+                        for(unsigned i=0; i<column_count; ++i)
+                                col_order[i] = i;
+                }
+
+                bool has_column(const std::string&name) const {
+                        return col_order.end() != std::find(
+                                col_order.begin(), col_order.end(),
+                                        std::find(std::begin(column_names), std::end(column_names), name)
+                                - std::begin(column_names));
+                }
+
+                void set_file_name(const std::string&file_name){
+                        in.set_file_name(file_name);
+                }
+
+                void set_file_name(const char*file_name){
+                        in.set_file_name(file_name);
+                }
+
+                const char*get_truncated_file_name()const{
+                        return in.get_truncated_file_name();
+                }
+
+                void set_file_line(unsigned file_line){
+                        in.set_file_line(file_line);
+                }
+
+                unsigned get_file_line()const{
+                        return in.get_file_line();
+                }
+
+        private:
+                void parse_helper(std::size_t){}
+
+                template<class T, class ...ColType>
+                void parse_helper(std::size_t r, T&t, ColType&...cols){                        
+                        if(row[r]){
+                                try{
+                                        try{
+                                                ::io::detail::parse<overflow_policy>(row[r], t);
+                                        }catch(error::with_column_content&err){
+                                                err.set_column_content(row[r]);
+                                                throw;
+                                        }
+                                }catch(error::with_column_name&err){
+                                        err.set_column_name(column_names[r].c_str());
+                                        throw;
+                                }
+                        }
+                        parse_helper(r+1, cols...);
+                }
+
+       
+        public:
+                template<class ...ColType>
+                bool read_row(ColType& ...cols){
+                        static_assert(sizeof...(ColType)>=column_count,
+                                "not enough columns specified");
+                        static_assert(sizeof...(ColType)<=column_count,
+                                "too many columns specified");
+                        try{
+                                try{
+       
+                                        char*line;
+                                        do{
+                                                line = in.next_line();
+                                                if(!line)
+                                                        return false;
+                                        }while(comment_policy::is_comment(line));
+                                       
+                                        detail::parse_line<trim_policy, quote_policy>
+                                                (line, row, col_order);
+               
+                                        parse_helper(0, cols...);
+                                }catch(error::with_file_name&err){
+                                        err.set_file_name(in.get_truncated_file_name());
+                                        throw;
+                                }
+                        }catch(error::with_file_line&err){
+                                err.set_file_line(in.get_file_line());
+                                throw;
+                        }
+
+                        return true;
+                }
+        };
+}
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/limits.hpp	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,43 @@
+/*
+ * limits.hpp
+ *
+ *  Created on: Dec 14, 2016
+ *      Author: mmxgn
+ */
+
+#ifndef LIMITS_HPP_
+#define LIMITS_HPP_
+
+
+/*
+ *  Low level parameter limits
+ */
+
+#define GA sqrt(2)
+#define G1_MIN 0.001
+#define G1_MAX 0.999
+#define D1_MIN 0.010
+#define D1_MAX 0.900
+#define DA_MIN 0.006
+#define DA_MAX 0.012
+#define GC_MIN 0.001
+#define GC_MAX 0.999
+#define G_MIN  0.001
+#define G_MAX  0.999
+
+/*
+ * High level parameter limits
+ */
+
+#define T60_MIN 0.2
+#define T60_MAX 4.0
+#define ED_MIN 1000.0
+#define ED_MAX 10000.0
+#define C_MIN -20.0
+#define C_MAX 10.0
+#define TC_MIN 0.01
+#define TC_MAX 2.0
+#define SC_MIN 200.0
+
+
+#endif /* LIMITS_HPP_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/mapping.cpp	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,51 @@
+/*
+ * mapping.cpp
+ *
+ *  Created on: Dec 14, 2016
+ *      Author: Emmanouil Theofanis Chourdakis
+ */
+
+#include<iostream>
+// #include<nlopt.hpp>
+#include"Parameter.h"
+#include <dlib/optimization.h>
+
+using namespace dlib;
+
+
+int main(int argc, char *argv[])
+{
+	std::cout << "Parameters:" << std::endl;
+	Parameter p;
+
+	std::cout << "Setting g1 to 0.3" << std::endl;
+	p.setG1(0.3);
+	std::cout << p << std::endl;
+
+	std::cout << "Setting d1 to 0.04" << std::endl;
+	p.setD1(0.04);
+	std::cout << p << std::endl;
+
+	std::cout << "Storing parameters:" << std::endl;
+	double t60 = p.getT60(), ed = p.getEd(), sc = p.getSc(), tc = p.getTc(), c = p.getC();
+
+	Parameter p2;
+
+	std::cout << "New parameter object:" << std::endl;
+	std::cout << p2 << std::endl;
+
+	std::cout << "Setting the new parameters to the old object values: " << std::endl;
+	p2.setT60(t60);
+	p2.setEd(ed);
+	p2.setSc(sc);
+	p2.setTc(tc);
+	p2.setC(c);
+	std::cout << p2 << std::endl;
+
+
+	return 0;
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/mapping.py	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,349 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Mon Mar  7 13:03:01 2016
+
+@author: Emmanouil Theofanis Chourdakis
+"""
+
+#from numpy import *
+from scipy.optimize import *
+from numpy import sqrt,array,polyval,exp,log,log10,mean,sum,cos,pi,arange,var,loadtxt
+
+ga = sqrt(2)
+g1_min = 0.001
+g1_max = 0.999
+
+d1_min = 0.010
+d1_max = 0.900
+
+da_min = 0.006
+da_max = 0.012
+
+gc_min = 0.001
+gc_max = 0.999
+
+G_min = 0.001
+G_max = 0.999
+
+# Limits are defined by the variables minima and maxima
+
+T60_min = 0.2
+T60_max = 4
+#
+D_min = 1000
+D_max = 10000
+#
+C_min = -20
+C_max = 10
+#
+Tc_min = 0.01 
+Tc_max = 2.0
+#
+SC_min = 200
+SC_max = 11025
+def normalize(f,fmin,fmax):
+    return (f - fmin)/(fmax - fmin) 
+
+def normalize_param(p):
+    return array([
+            normalize(p[0],T60_min,T60_max),
+            normalize(p[1],D_min,D_max),
+            normalize(p[2],C_min,C_max),
+            normalize(p[3],Tc_min,Tc_max)
+            ])    
+
+def get_high_param_norm(x):
+    return array([
+            normalize(T60(x),T60_min,T60_max),
+            normalize(D(x),D_min,D_max),
+            normalize(C(x),C_min,C_max),
+            normalize(Tc(x),Tc_min,Tc_max)
+            ])
+def T601d(d1,g1,gc,G):
+    g1 = abs(g1)
+    return -d1/log(g1)*(log(G)+log(1-gc)+log(ga)+3*log(10))
+    
+    
+
+def D1d(d1,da,t=0.1):
+    kS = 20.78125
+    
+    return kS*t/d1/da
+        
+        
+def C1d(g1,gc, G):
+    s_ = 0
+    for k in range(1, 7):
+        s_ += g1**(2*1.5**(1-k))/(1-g1**(2*1.5**(1-k)))
+        
+    return -10 * log10(G**2*(1-gc)/(1+gc)*s_)      
+    
+def Tc1d(d1,da,g1):
+    gk = lambda k: g1**(1.5)**(1-k)
+    dk = lambda k: d1*1.5**(1-k)
+
+    sum1 = 0 
+    sum2 = 0
+    
+    for k in range(1, 7):
+        s1 = gk(k)**2/(1-gk(k)**2)
+        sum2 += s1
+        sum1 += dk(k)*s1/(1-gk(k)**2)
+        
+    return sum1/sum2 + da        
+    
+def Tc_g1_d1_D(d1,g1,D, t=0.1):
+    S1 = sum([1.5**(-k + 1)*d1*g1**(2*1.5**(-k + 1))/(-g1**(2*1.5**(-k + 1)) + 1)**2 for k in range(1, 7)])
+    S2 = sum([g1**(2*1.5**(-k + 1))/(-g1**(2*1.5**(-k + 1)) + 1) for k in range(1, 7)])
+    Tc = S1/S2 + 20.78125*t/(D*d1)
+    return Tc
+
+def T60_d1_g1_C(d1,g1,gc,C):
+#    S1 = sum([g1**(2*1.5**(-k + 1))/(-g1**(2*1.5**(-k + 1)) + 1) for k in range(1, 7)])
+    g1 = abs(g1)
+    s_ = 0
+    for k in range(1, 7):
+        s_ += g1**(2*1.5**(1-k))/(1-g1**(2*1.5**(1-k)))    
+      
+    T60 = d1*log(0.001/ga*exp(C*log(10)/20)/(sqrt((gc + 1)/((-gc + 1)*s_))*(-gc + 1)))/log(g1)
+    
+    return T60 
+    
+def d1_g1_T60_C(g1,gc,T60,C):
+    g1 = abs(g1)
+    s_ = 0
+    for k in range(1, 7):
+        s_ += g1**(2*1.5**(1-k))/(1-g1**(2*1.5**(1-k)))      
+    #S1 = sum([g1**(2*1.5**(-k + 1))/(-g1**(2*1.5**(-k + 1)) + 1) for k in range(1, 7)])
+    
+    
+    d1 = T60*log(g1)/log(0.001/ga*exp(C*log(10)/20)/(sqrt((gc + 1)/((-gc + 1)*s_))*(-gc + 1)))
+    return d1
+    
+def G_g1_C(g1,gc, C):
+    
+    s_ = 0
+    for k in range(1, 7):
+        s_ += g1**(2*1.5**(1-k))/(1-g1**(2*1.5**(1-k)))
+    
+    G = sqrt(exp(-C/10*log(10))/(1-gc)*(1+gc)/s_)
+    return G
+    
+def da_d1_D(d1, D,t=0.1):
+    return 20.78125*t/d1/D
+    
+    
+def Tc_g1_T60_D_C(g1,gc, T60, D, C,SR=44100.0,t=0.1):
+    S1 = sum([g1**(2*1.5**(-k + 1))/(-g1**(2*1.5**(-k + 1)) + 1) for k in range(1, 7)])
+    L1 = log(0.001*exp(C*log(10)/20)/(ga*sqrt((gc + 1)/((-gc + 1)*S1))*(-gc + 1)))
+    S2 = sum([1.5**(-k + 1)*T60*g1**(2*1.5**(-k + 1))*log(g1)/((-g1**(2*1.5**(-k + 1)) + 1)**2*L1) for k in range(1, 7)])
+    Tc = S2/S1 + 20.78125*t*log(0.001*exp(C*log(10)/20)/(ga*sqrt((gc + 1)/((-gc + 1)*S1))*(-gc + 1)))/(D*T60*log(g1))
+    
+    return Tc
+
+def sc_csv_to_c():
+    T = loadtxt('scmapping.csv')
+    SampleRates = T[:,0]
+    P = T[:,1:]
+    
+    str_ = ""
+    
+    for SR in SampleRates:
+        p = P[SampleRates == SR][0]
+        str_ += "case %d:\n" % SR
+        str_ += "\tp0 = %1.18e;\n\tp1 = %1.18e;\n\tp2 = %1.18e;\n\tp3 = %1.18e;\n\tp4 = %1.18e;\n" % (p[0], p[1], p[2], p[3], p[4])
+        str_ += "break;\n" 
+    
+    return str_
+
+def f_gc(sc,SR=44100):
+    T = loadtxt('scmapping.csv')
+    SampleRates = T[:,0]
+    P = T[:,1:]
+    p = P[SampleRates == SR][0]
+    return polyval(p, sc)
+    
+    
+def errorfunc(g1, Target, gc, weights=(1.0, 1.0, 1.0, 1.0),SR=44100.0):
+    
+    (kT60, kD, kC, kTc) = Target
+    G = G_g1_C(g1, gc, kC)
+#     print "G1: ", g1
+#     print "G: ", G
+    
+    
+    # Check bounds
+
+    if G>G_max:
+        G = G_max
+    if G<G_min:
+        G = G_min
+        
+
+    d1 = d1_g1_T60_C(g1,gc, kT60, kC)
+    
+#     print "D1: ", d1
+    
+    if d1>d1_max:
+        d1 = d1_max
+    if d1<d1_min:
+        d1 = d1_min
+        
+    da = da_d1_D(d1, kD)
+    
+#     print "DA: ", da
+    
+    if da>da_max:
+        da = da_max
+    if da<da_min:
+       da = da_min
+    
+    T_60_est = T601d(d1,g1,gc,G)
+    D_est = D1d(d1,da)
+    C_est = C1d(g1,gc,G)
+    Tc_est = Tc1d(d1,da,g1)
+  #  print "TCEST:", Tc_est
+  
+#     print "T_60_est", T_60_est
+#     print "D_est", D_est
+#     print "C_est", C_est
+#     print "Tc_est", Tc_est
+#     
+
+    est_vect = normalize_param([T_60_est, D_est, C_est, Tc_est])
+    orig_vect = normalize_param([kT60, kD, kC, kTc])
+    
+    errvec = abs(est_vect-orig_vect)
+#     print "ESTVEC: ", est_vect
+#     print "ORIVEC: ", orig_vect
+# 
+#     print "ERRVEC: ", errvec
+    w1 = weights[0]
+    w2 = weights[1]
+    w3 = weights[2]
+    w4 = weights[3]
+
+    errvec = array([w1*errvec[0],w2*errvec[1],w3*errvec[2],w4*errvec[3]])
+    
+    return mean(errvec**2) + var(errvec**2)**2 #+ skew(abs(est_vect-orig_vect)**2)
+    
+def SC1d(gc,SR=44100):
+    
+    lut = 1-2*gc*cos(2*pi*arange(0,int(SR/2)+1)/SR)+gc**2
+    
+    fgcn = lambda  n: 1/lut[n]
+
+    sum1 = 0
+    sum2 = 0
+    
+    for n in range(0, int(SR/2)):
+        fgcn_ = fgcn(n)
+        sum1 += n*fgcn_
+        sum2 += fgcn_
+        
+    return sum1/sum2    
+
+
+def forward_mapping(d1, da, g1, gc, G):
+    SC = SC1d(gc)    
+    T60 = T601d(d1,g1,gc,G)
+    D = D1d(d1,da)
+    C = C1d(g1,gc,G)
+    Tc = Tc1d(d1,da,g1)
+    
+    return (T60, D, C, Tc, SC)
+    
+def inverse_mapping(T60, D, C, Tc, SC, SR=44100):
+    """ returns a vector (d1, da, g1, gc, G) of filter coefficients """
+        
+    #1. Estimate gc from spectral centroid 
+    gc = f_gc(SC, SR)
+#     print "GC: ",gc
+    
+    #2. Estimate g1
+    g1 = minimize_scalar(lambda x: errorfunc(x, (T60,D,C,Tc), gc), bounds=(g1_min,g1_max), method='bounded').x
+#     print "G1: ", g1
+    
+    #4. a. Estimate G from G_g1_C
+    G = G_g1_C(g1, gc, C)
+    if G > G_max:
+        G = G_max
+    elif G < G_min:
+        G = G_min
+
+#     print "G: ", G
+
+    #4. b. Estimate d1 from d1_g1_T60_C
+    d1 = d1_g1_T60_C(g1,gc,T60,C)
+    if d1 > d1_max:
+        d1 = d1_max
+    elif d1 < d1_min:
+        d1 = d1_min
+        
+#     print "D1: ", d1
+    #4. c. Estimate da from da_d1_D
+    da = da_d1_D(d1,gc, D)
+    if da > da_max:
+        da = da_max
+    elif da < da_min:
+        da = da_min
+
+#     print "DA: ", da
+    return (d1, da, g1, gc, G)
+
+#print forward_mapping(0.1, 0.006, 0.5, 0.5, 0.5)
+
+#print forward_mapping(0.05, 0.006, 0.5, 0.5, 0.5)
+
+#print Tc_g1_d1_D(0.1,0.5,1000, t=0.1)
+#print T60_d1_g1_C(0.01, 0.9, 0.9, -5.0)
+#print d1_g1_T60_C(0.9, 0.8, 4.2, -10.0)
+#0.447907
+#0.0788184
+#0.945694
+#print G_g1_C(0.2, 0.4, -2.0)
+#print da_d1_D(0.05, 0.1, 100)
+#print f_gc(11025, 44100)
+#0.415625
+#print sc_csv_to_c()
+#-0.000462180326584
+
+#0.980471
+
+print "--"
+#print
+
+v= inverse_mapping(0.8465784284662089, 3463.5416666666665, -0.10779739192724623, 0.09213541733941949, 6419.2075162127485)
+#v =  inverse_mapping(0.7, 3000, -5, 0.9, 5000)
+print v
+print forward_mapping(*v)
+#print forward_mapping(0.15437302257477994, 0.012, 0.22280866837217597, 0.63966852775153527, 0.999)
+# EST_VEC: 
+# 0.170152218017423446 
+# 0.27372685185185186 
+# 0.663073420269091773 
+# 0.0412740845527812192 
+# 
+# ORI_VEC: 
+# 0.17015221801742339 
+# 0.27372685185185186 
+# 0.663073420269091773 
+# 0.0412740790650349201 
+# 
+# ERR_VEC: 
+# 5.5511151231257827e-17 
+#           0 
+#           0 
+# 5.48774629904880129e-09 
+
+# inverse mapping:
+# 0.100257463495416962 
+# 0.00299229593030461835 
+# 0.498999999999999999 
+# 0.499829818494971656 
+# 0.500748281620112645 
+
+#print "---"
+#print errorfunc(0.4, (0.8465784284662089, 3463.5416666666665, -0.10779739192724623, 0.09213541733941949), 0.3)
+#print T601d(0.30876416353,0.1,0.8,1.9511185262)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpp/chourdakisreiss2016cpp/scmapping.csv	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,20 @@
+8.000000000000000000e+03 -7.545401867799958007e-15 6.605438530163032344e-11 -2.339787304666883204e-07 -2.380996920823082359e-04 1.003686549974644349e+00
+1.102500000000000000e+04 -2.090495384250846006e-15 2.523110858472787412e-11 -1.232004017234833354e-07 -1.727859517219043628e-04 1.003773048218970398e+00
+1.600000000000000000e+04 -4.707928872668820147e-16 8.250344830381294683e-12 -5.847797160444276075e-08 -1.190647306137786752e-04 1.003845141060948354e+00
+2.100000000000000000e+04 -1.585759862171924958e-16 3.648228536317020713e-12 -3.394367375513113085e-08 -9.071942141117647239e-05 1.003883355464454619e+00
+2.205000000000000000e+04 -1.304517046624577766e-16 3.151372288676199373e-12 -3.078752354037690531e-08 -8.639997174340922025e-05 1.003889194220798364e+00
+3.200000000000000000e+04 -2.939615050414309854e-17 1.030821612883252373e-12 -1.461695000370224873e-08 -5.953732000720860076e-05 1.003925597252757207e+00
+3.780000000000000000e+04 -1.509578131570550335e-17 6.253538622497773237e-13 -1.047516110428303656e-08 -5.040267062802067523e-05 1.003938012276286873e+00
+4.405600000000000000e+04 -8.179918755257568798e-18 3.949666985075376660e-13 -7.711241596699441441e-09 -4.324592160336278773e-05 1.003947751979878067e+00
+4.410000000000000000e+04 -8.147316012596786372e-18 3.937855238616550567e-13 -7.695860699409773702e-09 -4.320277669373632828e-05 1.003947810730627443e+00
+4.725000000000000000e+04 -6.182156102335834534e-18 3.201545709180980074e-13 -6.703887839395126650e-09 -4.032277597168298445e-05 1.003951733380953559e+00
+4.800000000000000000e+04 -5.804669671441499519e-18 3.053789928757690291e-13 -6.496014866101249794e-09 -3.969277247952757479e-05 1.003952591709977415e+00
+5.000000000000000000e+04 -4.930039877651698485e-18 2.701762164752109105e-13 -5.986696651033372113e-09 -3.810515833478767255e-05 1.003954755096216900e+00
+5.040000000000000000e+04 -4.775358854140600092e-18 2.637937027466497354e-13 -5.892041055138477995e-09 -3.780275477003837485e-05 1.003955167234265478e+00
+8.820000000000000000e+04 -5.090139768480031043e-19 4.921424693356908116e-14 -1.923829523675108346e-09 -2.160214687014651151e-05 1.003977276279834019e+00
+9.600000000000000000e+04 -3.626648836744412987e-19 3.816597595693573777e-14 -1.623898000952206408e-09 -1.984703070895103917e-05 1.003979674995812754e+00
+1.764000000000000000e+05 -3.180720104052761169e-20 6.151207927460715513e-15 -4.809399117661735116e-10 -1.080127073758081756e-05 1.003992048707243789e+00
+1.920000000000000000e+05 -2.266250752087159745e-20 4.770337959813220317e-15 -4.059609201723455372e-10 -9.923682425709201677e-06 1.003993250132436454e+00
+3.528000000000000000e+05 -1.987755090799793513e-21 7.688647436953224411e-16 -1.202327621003883834e-10 -5.400685657755166908e-06 1.003999444875642189e+00
+2.822400000000000000e+06 -4.852498403591686415e-25 1.501626536939688520e-18 -1.878606337281021417e-12 -6.750912735944337505e-07 1.004005921979573834e+00
+5.644800000000000000e+06 -3.032792721276874507e-26 1.877027577372803603e-19 -4.696510359527020341e-13 -3.375458367765195566e-07 1.004006384824945863e+00
Binary file experiment-reverb/code/mapping.pyc has changed
--- a/experiment-reverb/code/model_gnb.dat	Wed Dec 14 13:15:48 2016 +0000
+++ b/experiment-reverb/code/model_gnb.dat	Wed Dec 28 17:22:49 2016 +0000
@@ -37,7 +37,7 @@
 I0
 tp15
 bI01
-S"\x8av\x8dU5\x97\xd7?\x87|\xbf\x16\x0e-\xd4?\xd6\xab\xa5>y(\xe0\xbf\xf4\xd2U\xdc\xe9\xb9\xd2\xbfEy\xd0\xc3n#\xd1\xbf\xd4\xc4\x7f3\x83\x8b\xe2?\x89\x90i\xc0\x00[\xc0?\x91+D3\x94\x10\x91?\x9a\x05\x97\x86\x0bC\xe1?\x82\xb7\xe5A\x8e\xe6\xce\xbfF\xdeQi\x93\xd4\xb1\xbf1\xean\x04\xdc\xdf\xd6?\x91\x0e\xb8\xf2\xbe\xcc\xce?\x150\t\xf2n:\xbc\xbf*\x8b\x80\x93\xf7\xd6\xe3?\x18C\x9cn\xc5&\xd0\xbf$\xa0\xa8\x85\xf3\x01\xc3\xbf5Y\x0c\xc2\xc6\x87\xd3\xbf\xce3\x10\xda'\x12\xd2?\xc8\xdc\xe7\xd2a4\xda\xbfh5\xea\xf3\xda\xb4\xe1\xbf\xd4t,u\x06Mv\xbf8\xe9{\x08\xe2\x85\xd2?w\x8d>\x1a\xb6\xd6\xdf\xbf\xd3\x1d\x06\xf5\x16\x80\xc8?i.\x9b-\xa8\x9d\xe2\xbf\xb4\xa4\xc8\xf5\xbc\x8f\xc0\xbf}7\xb6I\x8a\xeb\xd7\xbf \x01%\xb8\xb2\xe5\xb1\xbfH\xd5\x83\x04\xce2\xc6\xbf\xf1\xb6k\xb6\x92\x14\xb2?\x16>\x0el\xcd\xf2\xe4?\xbc*\rJ\x87\xac\xcb?\xb58\xe0a\xaef\xe0?\xf2\x8e\xe0\xc9V1\xe0?- H\x8aM|\xb4?t\x8b(\x7f_\x07\xd7\xbf\x1ab\xe9\x15^\xfe\xc6\xbfm\xdb\xe8\xfe\x8f=\xd3??\xb9f-\x0f\xd9\xda?s0p2y\xf0i?a\x0c8\xb7\x81\x97\xd0\xbf\xde\xa9\xe9\x1d\xdd)\xca\xbf\xc2\xcf\xf0`\x90\x13\xe5?\x10\xe1dm%=\xe4\xbf\xdag\x9961\xa4\xa8?S8O\x92\xa5w\xcc\xbf\x0e\xf1\xbd|\xdd\xd2\xb2?\x88\xc8\x8f\xfbw\x9e\xb2\xbf\x04\xfa\xf3\xef\xcf\x95\xd1\xbf\x02^\xfd&\x9c\x95\xdf?c\xd3\xc0\x00\xd6\x06\xc4?\x9fS\xb9\xe1f\x11\xc6?KDZ\xfeB}\xe8?e\xac\xc4\xec\x844\xb0?N;Z\x94\xdd\xd1\xc6?\xc2\xe05N\x9e\xc2\xe5\xbf\x04\xe7\x90\xc5\xab\xca\xb2?\xa7\xd4\x9d\xfe\ry\xd4\xbf56m\x8d\xc9\xf3\xbe?r\xb7!\xbf\xb0\xb6\x86?\xa0\xe4\xba\xf1\xfc\xa1\xa4?\xffSW\xc9\x9a`\xe3?\x166\xb3v\xc4\xb2\xcb?"
+S"\xa6/a\xbdh\x9f\xaa\xbf\x1e\xdbSws\xa5\xdf\xbfv\xa9p\xb5\xf7T\xd2\xbfe\xe8\x8a\xd7\xf4\x8a\xe0?\x0edi\x04.\x81\xde?\x05\x9a\xb2\x9d\xf7\xa1\xc8?\x82Q\xc8rI\x86\xb9?\x94+5\x96V\x04\xd7\xbf\x1c>\x8b\xa2#\xce\xd8\xbf0i\xc336\xfe\xbc\xbf\x06q\xbe\xef\xb6\x96\xe1\xbf\xc4\xea\xc7\x1c\x01\xf6\xc9?9\x1d_\xcc\r\x1f\xd4\xbf\xd8S\xc8\xbc\x0c\x01\xc6\xbf\x95\x99\xee\xf8'\x10\xe1\xbf*3\x10\x1fz6\xd2?(\xfb\rq\xfa\xd4\xd0\xbf1\t\x087v)\xc4\xbf\xe4\xaeF\xb1\xf83\xc3\xbf\xf4\x9d\xfb#\x8eq\xc4\xbf\x12\x86S!u\x9d\xa0\xbf\xec\xaf\xbf6\xf3t\xe3?\x8edp\xa7\xc8\xbf\xdb?\x8a\xbePGn\x81\xe1?'tj\xf9\xf5j\xde?YN-\x8a\x80\n\xdb?\x12y`YOK\xb6\xbf\xaa\xa0\x9e\x98Qv\xd0?^\x93\x08,P\x96\xc0?\x8f\xfe\xa1\x02\x07\x9c\xe1?55\xc1C\xfdi\xdb\xbf<\x03ey{\x86\xc1?Z\x8d\xe4\x97Jo\xe6\xbf\xc49 \xa0\x99\xab\xd6?O\xc7\x9c\xa86\x7f\xdc?w\xfe\x83\x1f\x97\x96\xd2?\x00\xd4\xbc[\xddC\x9e?\xd1\x07.\xe6[\xe7\xcc?\xd4\xed\x91\x11\x1dk\xbb\xbf\xe7\xb9\xb0\x11\x96\xa3\xc8\xbfkh\xf3V?\xa6\xc9?J\x17\x1a\x9f\xd9\x98\xc5\xbf^\xf2mk\x17U\xb9?\xd3#\xa61,$\xd7?\xaa&$j\x16\xb0\xe9\xbf.\xbeP\xa1\x8e\xa5\xca?R\xa3\xa4\x98\x03 \xc9?\xc0,\x02\xf0sC\xd0\xbf\x02\xdb\x97\xe0!h\xbd\xbf\xbf\x1c\xac\xf2\x94u\xe0?\x7fp;#[\x9b\xe3\xbf4a\xec\xb6kE\xc9\xbf\xb2\xa4V\xe0R\xd3\xb0\xbf\xa7\xd3\xc9\x93\x14\xf6\xb0?U\xe1\xb94\x9e\x9a\xd3?(\x05<m\xcc\xff\xdc\xbf\x1b\x9d8O\xdd\xa4\xb5?\xa7\x97\xbc\xd9S?\xd6?\x14\xc4\xe4\x96\x84q\xa8\xbfR\xe4\xafu\xbc\xd1\xe2?P\xbc(\xe8f\xb2\xb4?\xaa\x02(\x17\xf9\xc5\xd9\xbfV_\xe9\xac\xc7\xed\xdb?\xfb\x1e\xe8*\xb4\xf9\xd9?"
 p16
 tp17
 bsS'name'
@@ -61,7 +61,7 @@
 tp25
 g13
 I00
-S'\xdf\xa1\x18\x0cL\xfb\xff?\x8d\x0e\xa2\xc8\x9bo\xf3?\x12$\xbdcJ\x86\x89\xc0:/\xd2lF\xbaY@\x00\x00\xe0\xbd\x8e]b@#\n\t\xae\x0c\xe7P@\x89L\xf1\x90CR\x1a\xc0\x8e\x06\xd8N\xfc\xe7$@Q\x0c\xa6BU1\xe5\xbf\x89\xd72H\xbfc\'@\x93S\xa3\xd6\xcb\xfd\r\xc0\xbf\xce=u\x11\x16%@\xd5\x9aP\']\xee)@\x90\xc2\x92\x93\xf6,B@\xde,p\x8ek\xc4"@\x1eV#<\x80-<@\x14\x83\xf9E\x1e\x83\x0b\xc0\x98\x85\x8c|\xd1\r>@\x8e\x95\xb2 UP\x9c?D\x99M\xb2S\x143@Tk\xd2a\xd9\x0b\x11\xc0\x19\x04\xd3\xb3\x1bb+@c0\xa7\xc1\xde\x0c\x15\xc0\xe95\xeay\x90|,@\xbb\xe4j\xac\xed<\x19\xc0pk\xf4\x140\x9b)@z\x07\x8aq\xbe\x1d\x08\xc0\xd6\xa09\x99\xf7M)@{\xfc7\xeb8V\xab?\xcf\xd2\xa4\xaa\x90\x96\xa4?\xa8KN\xe9\x04=\x93@\xe9P\x9b\x80N\x9a\x88@{\xfc+\xae\x89L\xe7\xbf\xe4\xa6_\xc8\x91F\xc0?\x12$\xbdG:O\xe6\xbf\x1fh\xe5S\x04\x90\xc2?q\xf5\x83\xde.w"\xc0#D\x15D{>\xf3?\x99\x86\xedf\x8c\x88$\xc06\xe7m\x86\x835\xf3?V\xca\x1e\x8f\x91\xdd\xe7\xbf\xa5|UG\x80q\xbe?O"\xd3@^\xc0\xe8\xbfk\xb3Y5\x8c\xb4\xba?=\x89L\x17F\x1b\xea\xbf\xcasd\x89\x10\xcf\xb1?6\xe1\x00\x9d\xdcU\xeb\xbf\xfb\x00j\xe0\xadX\xaf?\xa2\x18\xcc\xa0\xc2\xb3\x19\xc0\x0b\xf9\x91g\x19\x0b\xfd?Hz\x87\x06tL\x1a\xc0\xf0n\r\x8a\xf6\xf0\xf5?]rj\xfd\x18|\x1d\xc0bN\xda\x91\xe3u\xf3?\x0eP\x97D\x08Q \xc0\xa9\x11\xcdc\xc6\xe6\xf4?\xb4\xb1\xd2\xdbP\x8e\x92@\x7frV\x85?S\x94@\xb4\xb1\xd2\xdbP\x8e\x92@\x7frV\x85?S\x94@\xd8\xf9L@\x1a1\xb3?\x13\x02\xa8U3\xd8\xb3?'
+S'\x92\x8dKy\x1a+\x04@\xaf\xd5$\xae:\xec\x00@\x83\xb1f\x0c\xda4\x8c\xc0\x0b\x84\xbd\xb9WEX@\xda\xc3q9\xe07a@{\x81g\x13\xa1\xf7Q@A\xc8{\xd8\xef\xc2\n\xc0\xf9\x89UO\x8d\xbf#@ \xe4\xd9\xf8L\x93\xf6\xbfO\x1a\x1b!=\xdb#@_\xcb\xb6"\x0cU\xfa\xbf\xae\xe3f_\xe0\x9c"@;p\x83\x84N\xb55@Ltm\xf2z\xcfD@\x1b\x97\x1a\x1b=\x07"@\rs\x14<\xe6*>@\xee\xf78\xc4\xc3\xb0\r\xc0\xc2?\xb5&\xe9\xec4@\x9eHah<\xe5\x0b\xc0\xd5J7o\xfa\xde1@JWM\xe7\xfb\x84\x15\xc0\r\\\x9a\x9d\x07\x97+@\xd0)\xdbuc\x06\x01\xc0\x9d\x84\xcd\x8b\xdb\x97&@\xc4y\xf6@L\x13\x06\xc0@\xd6P\x11\xa5\x8a&@\x8fa\xd7\xd9\x04\xcb\xd2?\xc9yOU\xa1U&@}N\xe9lS[\x98?\xabnV\x12\xe5\xca\x98?\xf5ZT\xbf\x1c\xa5\x93@S\x9dr\xbf\xe8\x8c\x89@\xd0)s\xc3\xa6=\xe8\xbf\x1a]\x95\x10\xbaD\xb9?\xf7{Cp\xf2Y\xe9\xbf\x9fis\xaa\xc0D\xb2?%1\xe1q\x0f\x93$\xc0\x98\xb5\x8b\xb7\x92\x17\xfb?\xb0P\xbari\x85&\xc0%\xda\xdbU\x0f\x15\xfb?%1\xe1\x81\xdat\xe8\xbf\xfd3\xf8\x88\xb0g\xbb?ILxl\xf7]\xe9\xbf\x8a\xf9@\xcdu\xb9\xb6?\xa8\xd7\xa2Z\x8a\x82\xea\xbfT\xc0\x98\x96""\xb3?\x96\xcf)3e\xe9\xeb\xbf\xffr\x17\xe6\xb4\xfc\xa9?\xc2X3\xd2\xee\x12\x1d\xc0d=\x1e\xeb\x89\xc4\x00@+\x89\t\x0b\xf4\xbf\x1c\xc0%N+\xb2\xa8\x8b\x01@\xca\xd1JrF} \xc0u\xe0\xc8\x1a1G\x01@\xb7\xbe,\xf3)\x9a"\xc0\xf9\xe7/\x9b\xfa\xf7\xfd?\xc4y"\xdeHG\x95@\x1fy\xcd#\xd1\x8e\x95@\xc4y"\xdeHG\x95@\x1fy\xcd#\xd1\x8e\x95@\xdd\xef\r\xf5TU\xb6?\xdeE\xfb\x9f\x1b&\xb5?'
 p26
 tp27
 bsS'q'
@@ -75,31 +75,31 @@
 scalar
 p31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S"\xd2'}\x12\x11\x11\xb1?"
 p32
 tp33
 Rp34
 g31
 (g13
-S'c\xfb\x1d\xbd\x1f\xdc\xe3?'
+S'\xcf\xba\xc1\x14[\xdb\xc8?'
 p35
 tp36
 Rp37
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xba\xff\xff\xcf?'
 p38
 tp39
 Rp40
 g31
 (g13
-S'\n?f\xe7$\x10\xa7?'
+S'\xb9y\x13,\xf4\xa1\xe8?'
 p41
 tp42
 Rp43
 g31
 (g13
-S'.\xfd<\x1e_k\xbb?'
+S'\xe3\xbd\xad\x96\xc6\x1f\xdc?'
 p44
 tp45
 Rp46
@@ -107,31 +107,31 @@
 sI1
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\x88\x88\x88\x08\x11\x11\xa1?'
 p48
 tp49
 Rp50
 g31
 (g13
-S'g\x8b W\xbe\xff\xe6?'
+S'\xe7\x1a\xd1\xb0\x80f\xb0?'
 p51
 tp52
 Rp53
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xa2UU\xb5?'
 p54
 tp55
 Rp56
 g31
 (g13
-S'\x08I\xa5M\xeb\x06\xe3?'
+S'\xd0\xe3a.bW\xcd?'
 p57
 tp58
 Rp59
 g31
 (g13
-S'\x9a\x18`\x0f)\xa0\xb9?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p60
 tp61
 Rp62
@@ -139,31 +139,31 @@
 sI2
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\xdd\xdd\xdd\x1dl\xc1\xa6?'
 p64
 tp65
 Rp66
 g31
 (g13
-S'\xed\xfc\x13~\x1f\xb3\xe3?'
+S'\x9b`a\xdcX\x93\xc7?'
 p67
 tp68
 Rp69
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'UUU\x99UU\xc5?'
 p70
 tp71
 Rp72
 g31
 (g13
-S'!Wt\xb6cM\xde?'
+S'\t\xc4\x85\x9a\xc5{\xdb?'
 p73
 tp74
 Rp75
 g31
 (g13
-S'\xca]\x9e\xfa\xc2\xe1\xb9?'
+S'\xe2\x19-0\xb7\x83\xd2?'
 p76
 tp77
 Rp78
@@ -171,31 +171,31 @@
 sI3
 (g31
 (g13
-S'\xdd\xdd\xdd\x1dl\xc1\xa6?'
+S'\x0c\xb6`\x8b>\xe9\xb3?'
 p80
 tp81
 Rp82
 g31
 (g13
-S'=\x1e\xe6\xd2\xed\xa0\xd4?'
+S'\xcf\xba\xc1\x14[\xdb\xc8?'
 p83
 tp84
 Rp85
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xba\xff\xff\xcf?'
 p86
 tp87
 Rp88
 g31
 (g13
-S'Q\xee\xf2\xd4T\x03\xe5?'
+S'\xb9y\x13,\xf4\xa1\xe8?'
 p89
 tp90
 Rp91
 g31
 (g13
-S'!\x80\x14\xd0\x85\x9a\xd3?'
+S'\xe3\xbd\xad\x96\xc6\x1f\xdc?'
 p92
 tp93
 Rp94
@@ -203,31 +203,31 @@
 sI4
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\x88\x88\x88\x08\x11\x11\xa1?'
 p96
 tp97
 Rp98
 g31
 (g13
-S'n\xde\x04\x0bV\xd0\xe5?'
+S'\xe7\x1a\xd1\xb0\x80f\xb0?'
 p99
 tp100
 Rp101
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xa2UU\xb5?'
 p102
 tp103
 Rp104
 g31
 (g13
-S'\x8b Wt\xe9\xe7\xe1?'
+S'\x83\xd7\xb1&d\x9f\xce?'
 p105
 tp106
 Rp107
 g31
 (g13
-S'\xca]\x9e\xfa\xc2\xe1\xb9?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p108
 tp109
 Rp110
@@ -235,31 +235,31 @@
 sI5
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S"\xd2'}\x12\x11\x11\xb1?"
 p112
 tp113
 Rp114
 g31
 (g13
-S'9eC\x1f\x82\\\xe1?'
+S'\x82\xae\x11\r]#\xca?'
 p115
 tp116
 Rp117
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xba\xff\xff\xcf?'
 p118
 tp119
 Rp120
 g31
 (g13
-S'!Wt\xb6cM\xde?'
+S'\xb9y\x13,\xf4\xa1\xe8?'
 p121
 tp122
 Rp123
 g31
 (g13
-S'v\xd5i%\x97~\xbe?'
+S'\xe3\xbd\xad\x96\xc6\x1f\xdc?'
 p124
 tp125
 Rp126
@@ -267,1115 +267,321 @@
 sI6
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\x88\x88\x88\x08\x11\x11\xa1?'
 p128
 tp129
 Rp130
 g31
 (g13
-S'\x1b#\xf1\xb5\xe7\xc8\xe0?'
+S'\xe7\x1a\xd1\xb0\x80f\xb0?'
 p131
 tp132
 Rp133
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xa2UU\xb5?'
 p134
 tp135
 Rp136
 g31
 (g13
-S'N+\x11\xbb\xb8y\x93?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p137
 tp138
 Rp139
 g31
 (g13
-S'\x0c\xb0\x07\xce \x80\xb4?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p140
 tp141
 Rp142
 tp143
-sI7
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
+ssS'classifier'
 p144
-tp145
-Rp146
-g31
-(g13
-S'Lh/\xa1\x81\n\xe1?'
-p147
-tp148
-Rp149
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p150
-tp151
-Rp152
-g31
-(g13
-S'v\xd5i%\x97~\xbe?'
-p153
-tp154
-Rp155
-g31
-(g13
-S'\x8f^\x19\xdb\x88\x86\xb5?'
-p156
-tp157
-Rp158
-tp159
-sI8
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p160
-tp161
-Rp162
-g31
-(g13
-S'\x16\xc6\xcd\x9b\x8bI\xe7?'
-p163
-tp164
-Rp165
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p166
-tp167
-Rp168
-g31
-(g13
-S'!Wt\xb6cM\xde?'
-p169
-tp170
-Rp171
-g31
-(g13
-S'\x9a\x18`\x0f)\xa0\xb9?'
-p172
-tp173
-Rp174
-tp175
-sI9
-(g31
-(g13
-S'I\x9f\xf4\tl\xc1\x96?'
-p176
-tp177
-Rp178
-g31
-(g13
-S'\xee\xc94\xfeP\x9c\xe2?'
-p179
-tp180
-Rp181
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p182
-tp183
-Rp184
-g31
-(g13
-S'\x0f!\xa9\xb4\x95\x88\xdd?'
-p185
-tp186
-Rp187
-g31
-(g13
-S'Ri\xd3!\xfb\xf4\xbc?'
-p188
-tp189
-Rp190
-tp191
-sI10
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p192
-tp193
-Rp194
-g31
-(g13
-S'\xd5i%b\x81\xe1\xe0?'
-p195
-tp196
-Rp197
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p198
-tp199
-Rp200
-g31
-(g13
-S'y\xea\x8br\x1b#\xe1?'
-p201
-tp202
-Rp203
-g31
-(g13
-S'&\x8b\xf7\xb6\xebX\xc3?'
-p204
-tp205
-Rp206
-tp207
-sI11
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p208
-tp209
-Rp210
-g31
-(g13
-S'\x84\xa4\xd2\xa6N+\xe1?'
-p211
-tp212
-Rp213
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p214
-tp215
-Rp216
-g31
-(g13
-S'\xc5\x00{\xe0\xf2\xd4\xb7?'
-p217
-tp218
-Rp219
-g31
-(g13
-S'\x8a\x01\xf6\xc0\xb8y\xb3?'
-p220
-tp221
-Rp222
-tp223
-sI12
-(g31
-(g13
-S'O\xfa\xa4\x0f\xc7q\xac?'
-p224
-tp225
-Rp226
-g31
-(g13
-S'\x96\xda\x9d\xa8\x1c\xf0\xe1?'
-p227
-tp228
-Rp229
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p230
-tp231
-Rp232
-g31
-(g13
-S'\xe9\xe7\xf10\xc8\x15\xdd?'
-p233
-tp234
-Rp235
-g31
-(g13
-S'Z\x0e\xf8\x08\xf8\x08\xcb?'
-p236
-tp237
-Rp238
-tp239
-sI13
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p240
-tp241
-Rp242
-g31
-(g13
-S'\x96\xb1\xfd\x8e\x86\x15\xe4?'
-p243
-tp244
-Rp245
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p246
-tp247
-Rp248
-g31
-(g13
-S'\xbe\xad\x96,\x94\x92\xcc?'
-p249
-tp250
-Rp251
-g31
-(g13
-S'\x84\xcdr\xc0\xb7\xd5\xc2?'
-p252
-tp253
-Rp254
-tp255
-sI14
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p256
-tp257
-Rp258
-g31
-(g13
-S'C\x1f\x8aS"v\xe5?'
-p259
-tp260
-Rp261
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p262
-tp263
-Rp264
-g31
-(g13
-S'\x92J\x9b\x0e\xc5)\xcb?'
-p265
-tp266
-Rp267
-g31
-(g13
-S'\xfay<\xccR\xbb\xb3?'
-p268
-tp269
-Rp270
-tp271
-sI15
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p272
-tp273
-Rp274
-g31
-(g13
-S'\x8f\x87\xb9\xf4\x84\x1f\xe3?'
-p275
-tp276
-Rp277
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p278
-tp279
-Rp280
-g31
-(g13
-S'\x07S\xe4\xb3\x84\xf6\xd2?'
-p281
-tp282
-Rp283
-g31
-(g13
-S'\x12\r+\xe8\xf0\x8c\xb6?'
-p284
-tp285
-Rp286
-tp287
-sI16
-(g31
-(g13
-S'\xdd\xdd\xdd\x1dl\xc1\xa6?'
-p288
-tp289
-Rp290
-g31
-(g13
-S'\xc4\\\xfay\xf4\xca\xd8?'
-p291
-tp292
-Rp293
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p294
-tp295
-Rp296
-g31
-(g13
-S'w\'\xaaX"v\xe5?'
-p297
-tp298
-Rp299
-g31
-(g13
-S'\x14\xd0\x0c\x02\x92J\xdb?'
-p300
-tp301
-Rp302
-tp303
-sI17
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p304
-tp305
-Rp306
-g31
-(g13
-S'j%bW!\xd2\xe4?'
-p307
-tp308
-Rp309
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p310
-tp311
-Rp312
-g31
-(g13
-S'v\xd5i%\x97~\xbe?'
-p313
-tp314
-Rp315
-g31
-(g13
-S'\xd1\xb0\x82\xae\xe6$\xb0?'
-p316
-tp317
-Rp318
-tp319
-sI18
-(g31
-(g13
-S'O\xfa\xa4\x0f\xc7q\xac?'
-p320
-tp321
-Rp322
-g31
-(g13
-S'\x03\x15"M\xef\x96\xd5?'
-p323
-tp324
-Rp325
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p326
-tp327
-Rp328
-g31
-(g13
-S'M^\xf0:\xb6\xdf\xe1?'
-p329
-tp330
-Rp331
-g31
-(g13
-S'\xc2=\x99\xc6\xcc\xf7\xef?'
-p332
-tp333
-Rp334
-tp335
-sI19
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p336
-tp337
-Rp338
-g31
-(g13
-S'\x13,\x8c\x9b\xb4\xe9\xe0?'
-p339
-tp340
-Rp341
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p342
-tp343
-Rp344
-g31
-(g13
-S'W"v\xd5\xef\xe8\xd5?'
-p345
-tp346
-Rp347
-g31
-(g13
-S'X\xc6\xf6;\xcb\x01\xbf?'
-p348
-tp349
-Rp350
-tp351
-sI20
-(g31
-(g13
-S'\x88\x88\x88\x08\x11\x11\xa1?'
-p352
-tp353
-Rp354
-g31
-(g13
-S'\x8dhXA\xfd<\xce?'
-p355
-tp356
-Rp357
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p358
-tp359
-Rp360
-g31
-(g13
-S'\xa9\xdd\x89*\xfd<\xee?'
-p361
-tp362
-Rp363
-g31
-(g13
-S'\xc2=\x99\xc6\xcc\xf7\xef?'
-p364
-tp365
-Rp366
-tp367
-sI21
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p368
-tp369
-Rp370
-g31
-(g13
-S'\xadD\xec\xaa$\xe7\xe6?'
-p371
-tp372
-Rp373
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p374
-tp375
-Rp376
-g31
-(g13
-S'\xc8>=GeC\xbf?'
-p377
-tp378
-Rp379
-g31
-(g13
-S'>\xc2f91\xc0\xae?'
-p380
-tp381
-Rp382
-tp383
-sI22
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p384
-tp385
-Rp386
-g31
-(g13
-S"\x04gb\x80'\xaa\xe8?"
-p387
-tp388
-Rp389
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p390
-tp391
-Rp392
-g31
-(g13
-S'\x0f!\xa9\xb4\x95\x88\xdd?'
-p393
-tp394
-Rp395
-g31
-(g13
-S'\x17jN\x02\xc1\x99\xb8?'
-p396
-tp397
-Rp398
-tp399
-sI23
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p400
-tp401
-Rp402
-g31
-(g13
-S'\xccS_\x94\xf0c\xe6?'
-p403
-tp404
-Rp405
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p406
-tp407
-Rp408
-g31
-(g13
-S"T\xb1\xd4\xee'\xfc\xc8?"
-p409
-tp410
-Rp411
-g31
-(g13
-S'\xda"\xc8\x15\x956\xad?'
-p412
-tp413
-Rp414
-tp415
-sI24
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p416
-tp417
-Rp418
-g31
-(g13
-S'\xf2Y7\x98\xef\xbf\xe5?'
-p419
-tp420
-Rp421
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p422
-tp423
-Rp424
-g31
-(g13
-S'\xe8Cq\xca\xb8y\xd3?'
-p425
-tp426
-Rp427
-g31
-(g13
-S'\xe3\xe6M\xb0\xb4\xe9\xb0?'
-p428
-tp429
-Rp430
-tp431
-sI25
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p432
-tp433
-Rp434
-g31
-(g13
-S'j%bW!\xd2\xe4?'
-p435
-tp436
-Rp437
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p438
-tp439
-Rp440
-g31
-(g13
-S'\x1b#\xf1\xb5\xb5\x8d\xd1?'
-p441
-tp442
-Rp443
-g31
-(g13
-S'\xadm\x8c\xc4T\x03\xb5?'
-p444
-tp445
-Rp446
-tp447
-sI26
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p448
-tp449
-Rp450
-g31
-(g13
-S':\t\xc4\x85\x1dk\xe2?'
-p451
-tp452
-Rp453
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p454
-tp455
-Rp456
-g31
-(g13
-S'\x07S\xe4\xb3\x84\xf6\xd2?'
-p457
-tp458
-Rp459
-g31
-(g13
-S'\xc5\x00{\xe0\xf2\xd4\xb7?'
-p460
-tp461
-Rp462
-tp463
-sI27
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p464
-tp465
-Rp466
-g31
-(g13
-S'&\x06\xd8\x03\x1e\xbd\xe2?'
-p467
-tp468
-Rp469
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p470
-tp471
-Rp472
-g31
-(g13
-S'\xe48\x8e\xe3\xb3n\xe0?'
-p473
-tp474
-Rp475
-g31
-(g13
-S'F\x90+:\xfd<\xbe?'
-p476
-tp477
-Rp478
-tp479
-sI28
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p480
-tp481
-Rp482
-g31
-(g13
-S'\xc9\x90}z\x83)\xe2?'
-p483
-tp484
-Rp485
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p486
-tp487
-Rp488
-g31
-(g13
-S'\x92J\x9b\x0e\xc5)\xcb?'
-p489
-tp490
-Rp491
-g31
-(g13
-S'5y\xc1\xeb\x8c\x16\xb8?'
-p492
-tp493
-Rp494
-tp495
-sI29
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p496
-tp497
-Rp498
-g31
-(g13
-S'>\x99\xc6\x1f\xbc\x8e\xe5?'
-p499
-tp500
-Rp501
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p502
-tp503
-Rp504
-g31
-(g13
-S"T\xb1\xd4\xee'\xfc\xc8?"
-p505
-tp506
-Rp507
-g31
-(g13
-S'\xe3\xe6M\xb0\xb4\xe9\xb0?'
-p508
-tp509
-Rp510
-tp511
-sI30
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p512
-tp513
-Rp514
-g31
-(g13
-S'\xcd \x80\x14"M\xe5?'
-p515
-tp516
-Rp517
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p518
-tp519
-Rp520
-g31
-(g13
-S'W"v\xd5\xef\xe8\xd5?'
-p521
-tp522
-Rp523
-g31
-(g13
-S'\xf9\x83{2\xff\x84\xbf?'
-p524
-tp525
-Rp526
-tp527
-sI31
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p528
-tp529
-Rp530
-g31
-(g13
-S'\x08 \x054\xe8\x1a\xe1?'
-p531
-tp532
-Rp533
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p534
-tp535
-Rp536
-g31
-(g13
-S'\x07S\xe4\xb3\x84\xf6\xd2?'
-p537
-tp538
-Rp539
-g31
-(g13
-S'\xca]\x9e\xfa\xc2\xe1\xb9?'
-p540
-tp541
-Rp542
-tp543
-ssS'classifier'
-p544
 (i__main__
 NBClassifier
-p545
-(dp546
+p145
+(dp146
 S'gnb'
-p547
+p147
 ccopy_reg
 _reconstructor
-p548
+p148
 (csklearn.naive_bayes
 GaussianNB
-p549
+p149
 c__builtin__
 object
-p550
-Ntp551
-Rp552
-(dp553
-S'sigma_'
-p554
+p150
+Ntp151
+Rp152
+(dp153
+S'class_prior_'
+p154
 g3
 (g21
 (I0
-tp555
+tp155
 g6
-tp556
-Rp557
+tp156
+Rp157
 (I1
-(I32
-I8
-tp558
+(I7
+tp158
 g13
 I00
-S'\xf4\x99DD~\xe4\xbd?#\xb4\x04\x12J\xcd\xb6?\x8d(~a\xd2i\xa5?\t<g\x8e,T\xa4?\x88c\xed7$\xc6\xa3?R\xe3\x15umS\x92?@K@<\xea\xa5\x8e?\xa3\xbc\x94-\xd99\x85?\xfd\xce7\x89u\xc5\xd0?o\xa5L\xa5\x07\xd8\xe0?\x91YU}b\x1a\x9f?\xf0\xc0\xf1\xb2B\xef\x9e?\xff\x0c\xa9\xdd1\x9e\xa6?\x08\xb1\x86\xe8\xdd\xd3\x84?/\xf0\x08\xe6E\xa2\x92?f\\\xf7y\x7f\x90\xa8?\xcdns\xf4vb\xc3?\xc9\xaf\x90@\xc2(\xd0?*t(*\x8fP\xc7?\xc1U\xaf\xa6C\x1a\xa2?/\x06\xba\xb0\xa7S\xaf?\x9eEnp\xd2-\xa7?\x0b\xb9\x0b\x7f\xbd\x8b\xa9?\xc5(\x1a\x7fn\xe2l?\xafmC8M\xe5\xd0?/X\xfd`+m\xb2?\xed\xc1t\xf3\xc1\xf2\xc2?\x1d\x8a\xc1\xba\xa1?\xc6?\x06ZR\xaeD\x81\xb4?\xe1\x06\xdd\x13\x90\x95\xa1?\x13\xda\x03\xb4\xd1\x06x?\x98(\xbbUL\x00\x84??\x15\xb9\xb9\xf9\xae\x9c?\xb7 \x8e\xd4\x94\xdb\x88?\xdc\x8c\x19R\\q\x9b?\xe4\x84\x1c\xf9\xb1\x01\x96?\x1e\xa7\xd3n \x9a\x8b?\x0b;_\xf1y\x16\x91?\x1c\xaa$?\x16\xbfx?\xf2\x8f\x121\xa6!I?M\x11\xf0D|I\x8f?q5\xc6\xab\xbd{\xaa?zJ\x1e\xcdE\xfb\x97?\xf0\x94D\xe77\xc0\x93?Q\xcf\xb3V\xc33\xa0?\xb6\x8c\x8a\x94\xdf\xfbx?\x8a\xd5G^\x8cBx?\xbfP=\x8a\x9b\xe7V?\x8d\xa5\xe01\x84\x98\xa2?E\xfc7\xacO\x90\xaa?\xabP\xd9\t\x0cV\xb1?\xd2Y!J\xbe]\xc8?\x05-\xbe<\x7f\x95\xaa?a7R2\x1c\x01z?U-\x9dZ\xbe\x0f\x89?\xcd\xe0+\xf6{<H?b1\xe7\xc2\xb3\xb3k?\x9c\xe7\xc4\xa0\x14\x13\xb0?\xa1\xb5\xa7\xe2\x0b\xa2\xa9?\x91\xb7A\xa4\xa82\x9f?w\xb9\xfe\xebm\xc5\x99?\xcfg\x88F\x12K]?\xb7V\xdb\xdf\xc7d`?\xbd\x085\xf0\xc2\xc7^?%\x0cYe\x15k\xb2?\x94\x86@\xf4!V\xb7??\x1f\xca\xb9\xe1K\xbd?=c\x92\xfadV{?0\x98T\xb1hx\x92?UC\x7f\xdbe\x1ai?}o\xbeW\x90\xaa\x89?\x93o\xc7^m\xe5m?\xe3 ?\x8c5\xb9\xa0?\x04\xf9v\xca\x8b\x00\xaa?\x87p$L\xe2\xdd\xb9?\x1f\xef\xa6\x11\r\xda\x93?QC\x1b>e\x90\xb2?\xb4\xffI\xc9\xe8\xce\xa3?\x97_\x83\x020r\x95?\xccY\x139 \xefy?\xf0b\x10\xebu\x19\xa2?IY\x89\xa1\x9b"\xa8?\xb7nt\xff\xcb\xd2\x98?}\x08\x06>\xf0\x13\xaa?\xbd\x90)\x01\x8e\xe2\x9c?\xf6\xe8Ip\xf5\xf4m?\xf2^\xb4\x12\x9f\x1fe?\xf8N\xe4\xa0\x96\xb4f?"\x87-C\x8c\x10p?\xa4\xcf?C\x8aU\x90?\x97\xbc\x1f\xd1.V\x8e?..\x9f\xd9s\xb7\xb2?4\xb5j\xe0`\xda\xae?\x02@ \xe2\x9a\x86\x85?\xb7\x8f5\xf0\x00\xe3\x90?\x8dQy\xa7\xady\x84?\x92f\x10\xb1@\x8d\xcb?\xf3\x0b\xdcvC\x8f\xc6?U\xb2\x0fW\xf8\xd1\xc7?.\xfbQ\xd9\x8a\xf4\xb2?\xf8\x9ea\xa7\xc6\xf3\xf0?\x83\xff\xf8\xe8\xe8\xef\xb6?\xb6df\xb7\xe9/\xd5?\x89\xa2wg\xa0U\xa8?7&\xad\xcbGq\xd8?\x9eK4\xc8\x98\n\xb0?L\xf88v\xc7z\xdc?.s~Q\x0b4\xae?\x00oB\xa1\x06\x1c\xb0?\xed\xdf\x92\x0e\x17\xb8\x98?\x83\x8e\x0f\x81s\xcd\xad?"F\x80m\xf1\xfa\x85?g\x82\xa3\x83\x97\x8f\xd6?]5\xebH\xb4\x83\xbe?\x05\x06\xd7\xa8\xf0\xd4\xc8?\x11r\x0f\xad]\xc2\xa2?\x15tg^\xac\x19\xa1?_\xd0\x12\xdc"9\xa2?\x97\xbc\x13l\xa6\x05p?\x8b\x14\x8bT\xd9\x9d{?\xed\xcf$\xf4:f\xb8?\xa8\xf3\x88\xfcc\xb7\xc5?\x0e\xa7\x82\x94j\'\xbb?UV\xda\x12\t\xd5\x96?W\x91\xc4\xc8T\xfd\x8f?\x1d\x02+\\\xa8o\x92?\xa8\xdf\xb0\x90\x08\xcdz?w\x95vF\x98@y?\xc2-\xacq\\\xff\xcd?9$o\x8f\x9f\xc2\xc6?`\xe4\x7fv\x1b\xdc\xb2?\x98+Z\xea\x1e\x91\xaa??\xde?\xe2\x7f\xa8\xc2?\x19gz\x8d\x16\x93\xbb?\x12X\x8c\xb3\xe8\xf4\xa5?\xa3Yw\x95w\x0f\x7f?\x06H\x04\xd2\xbe:\xa6?;\x10O\x10zc\xa7?\x1f\x8d3\x84\x88\xdf\xbc?\xc5bA\xe85\xf9\xb7?g\xa5\xa7\x1d\xee\xae\xb9?\xa1\xd6V2\xca7|?\x0b\xe7$\xe1u:\x7f?\xffF\xfeO\x93J\x82?\xbat&@\x07\x0f\xcd?\x86Q\xe0\x1c\xd7\xad\xc6?\x03\x9c\xac\xad\xf5\xc2\xa5?\x07\xee\x04\x851Y\xb0?\x9f\\U*\xcb\x9a\xb2?\xda\x92\xec.\x07L\xa5?In\xee\x06\x9b\xb0}?\x0b\xd0\'D,z\x80?\x88\x1d\xe4\x94\x9bz\x93?U9\xbd\x1c\x00\xc0\x93?\xaf(\xaf\x8d\x80\xf7G?`\xbc.\xfb\xbb>\x8d?xoV\x1b5S\x8b?\xcd?\x95\x02"w\x82?\x05\xbe`\x88\xea6\x83?cJ%\xb2J\xcbv?\xcc@\xfdM54\xb9?\x81,\x06\x0f\x904\xc3?\x1bh$\xe3\x0c`\xb0?\xda\xce\x855\x8e\xb4\xa5?\x93\xd6f\x83\x0e\xce\xa5?=,\x7f\xe8\xb3R\x82?_s\xc7\xf9o3\x81?\x07Dp\xb4[\xf0j?\x03s\xee\x03\xc0\xb0\xb7?2\x04\x16\x80*\x02\xd2?\xd3\xa8%\x1f]\xc8\xb2?\xe3h\x1d\xadh\x04\xba?\xfc)\xe6\xe2J\xf1\x9b?q\x93\x07\x16\xa8\xfe\xa2?\xb8\xb5\x8b\xfa\x14\xcc\xa0?5\xe6\x99\xdf\xc5\x1e\x81?\xab\\\xf0AZ,\xb9?g\x1c\x80\xa9\xa9D\xdc?\xb9\x04#\x1a/\x8a\xaf?\x08\xed otD\xbe?,\x80\x94\xebo\xcc\xc2?\xd1O\xe0\xfa\x8e\xc7\xcb?M\x90\x87\xe2\x05\x9b\x8f?\x9aI\x85\xd4\x90*\xa1?\x06\xca\xb4\xd9\x96\x8d\xd3?\x13\x8b:\xd1\t^\xaa?\xd82\xebC\xb1\xe5\xb3?iZ\xf0\x0b\xa8\x9c\xb7?\\\xe6K5\xf2U\xa6?\xda\x80\t@]\xec\xb6?%\xd6\x1f\xfc\x80}\xb0?b\xef\xc0\xd4\xd1\x89E?r1\x9e\xb5LNt?\xd5tV\xfbr\xe6\x8f?a\xe7.h\xb5@\xc1?g\xa3\x1c\r\xe9u\x90?>\xff\xe6\xf2[p\xae?\xeb\xb5\xa9\xf8kly?\xb0\xd56:\xd5!I?\x98\xdf\xfb`\x8f\xbb\x82?\x97\xa5;\t\xf3\xba\xc7?\x9b\xc5\x11\xa4\x042\xcd?\x93\xaf\x13\x8bTM\xae?-`\xb2?\xe9\xc2\xbf?F\xb2d\xdd\xf4\xc6\xb7?E\x06\xe1\x8dm\xf3\x95? \xea}\xad\xe6\x0f\x95?A\xb9\xbb\xe8\xf7 u?\xe3\xf6\xc6\x8c=\xd9\xd8?BU"\xc8q\x1a\xa3?*REb\xbd[\x9d?\xb2\x91/\xba\x9a\xbb\xc6?\xf7\xd8k"\x1eI\xc4?\xcc\xe3\x08\xc7ID\x93?t\xd3\x03\xf6>\'\x96?\xce\xb6\xeb\xf6\x18\x17\x92?)\xe1d\xa7\xdea\x9e?\x06h\xb0L\xdf\xf7\xc7?\xa4y\xdd#\xbf\xab\xb6?\xdd\ne\xb9v\xec\xa7?\x953M\xefC\xda\x96?]\xf1\x92,7%\x9f?[\xee\xe1\xb3\xa6\x02\xa5?\xf8u[\x8c\xb9\x84O??\xcdm\x84-\xd6\xc8?\xe6\x8c\xcb\x9f\xb4\x02\xd9?\xb7\x9b\xad\xae#~\xa8?\xc1\xd4s\xab\x8d\x81\xca?\xad\x1e\x80\xd8z\xdb\xc4?\xc1=\xd8\x83\x85>\x84?\xc1\x7f\xde\xd9\xda\xb8\x90?\xed~9d=V\x8e?\x04\x16H\x9d{\xd7\xae?\x0eW\xb9\xf5\xd9a\xad?Nb\x8e#\xeaJ\xd4?\x91\x0b-~\xe5t\xb9?Z\xf4t\t((\xbd?\x11\xd8N#o\x15\xa9?D\xbe\x88\xdc\xebU\x85?\x08%\x1fh\xc4\xad~?\xeau=_\xea\xfe\xcb?\x98\xfc\xc5,\xb4\xfb\xbc?5\x18@1+\xa5\xb1?:`\x98\xc8\x99\xe5\xbe?+e\x1e\xff\x81<\xbb?\xb4\xc9k\x81\xa5\x9c\xa7?W(92\x8bw\xa7?c\x13\xb9i\xa9N\x80?\x83\x02\xe1\x16\xfeg\xb8?\n\xfb\xc2a\xfb\xc4\x99?m\xf9sn?\xb9\xa1?\x08>\xbdLH\x16\xba?\xd90\xef\xce\xf9\x16\xae?N\xef\xdak|ep?\xdaV\xbba\xf0\xad\x8e?qS2,\xc5Y]?'
-p559
-tp560
-bsS'classes_'
-p561
+S'o\x88\xfe\xe9\xb5\xa8\xe2?\xfc\xbd!\xfa\xa7\xd7\xd2?nr\xb4\x92\x98\xf0\x98?Lmg\x0f\xe7\x89\x94?\xdd\xef\r\xd1?\xbd\xa6?|C\xf4O\xafE\x95?\xcf\x1e\xce\x13)h\x8a?'
+p159
+tp160
+bsS'priors'
+p161
+NsS'classes_'
+p162
 g3
 (g21
 (I0
-tp562
+tp163
 g6
-tp563
-Rp564
+tp164
+Rp165
 (I1
-(I32
-tp565
+(I7
+tp166
 g10
 (S'i8'
-p566
+p167
 I0
 I1
-tp567
-Rp568
+tp168
+Rp169
 (I3
 S'<'
-p569
+p170
 NNNI-1
 I-1
 I0
-tp570
+tp171
 bI00
-S'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00'
-p571
-tp572
-bsS'class_prior_'
-p573
+S'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00'
+p172
+tp173
+bsS'theta_'
+p174
 g3
 (g21
 (I0
-tp574
+tp175
 g6
-tp575
-Rp576
+tp176
+Rp177
 (I1
-(I32
-tp577
+(I7
+I8
+tp178
 g13
 I00
-S"\x1d\x15\xf8\xe2\xea\x07\x9d?\x14\x83\x19A\xd2;\x94?\x92\xde\xa1\x18\xcc\x08\xa2?\x12$\xbdC1\x98\xa1?\x16m\xac\x94=\xfe\x95?\x19\xcc\x08\x92\xde\xa1\xa8?\x1aA\xd2;\x14\x83\x99?\x14\x83\x19A\xd2;\x94?\x19\xcc\x08\x92\xde\xa1\x98?\x1e\x8a\xc1\x8c \xe9\x9d?\x1aA\xd2;\x14\x83\x99?\x12$\xbdC1\x98\xa1?S\xf6\xf8W\xb4\xb1\xb2?\x1e\x8a\xc1\x8c \xe9\x9d?\x1a\xb6\x9b\xe5Id\x9a?\x1e\x8a\xc1\x8c \xe9\x9d?\x99\x86\xedfy\x12\xa9?\x1c\xa0.9\xb5&\x9c?\x96'\x91i\xd8n\xa6?\x17\xe2u>s\xdf\x96?\x91i\xd8n\x96'\xa1?\x11\xaf\xf3\x99\xfb\xb6\xa0?\x12$\xbdC1\x98\xa1?\x97\x9cZ\x13\x0eP\xa7?\x12$\xbdC1\x98\x81?\x13\x0eP\x97\x9cZ\x93?\x1b+e\x8f\x7fE\x9b?\x12\x99\x86\xedfy\xa2?\x17\xe2u>s\xdf\x96?\x1d\x15\xf8\xe2\xea\x07\x9d?\x1e\x8a\xc1\x8c \xe9\x9d?\x14\x83\x19A\xd2;\xa4?"
-p578
-tp579
-bsS'theta_'
-p580
+S'cQ\xaa\xc9v7\xe7?\x93\xd6\x03>\x88\xd9\xcc\xbfc;\xc9\xba\xc4`\x9e\xbfa\xd66T\t2\xc9\xbf\xb2\xa3\xc6c2\x1e\x93\xbf\xe2?#?\xb0\xb8\xb7?\x8d\x88\x9d\x0f\xbf\xad\x98?\x11Ut\xf0\x9e\x89\x97?ys7\x95:j\xf2\xbf6\xe4n\x99\xe1<\xdc?1\r\xd0ch\xd4\xc0?\xf4}\xddH\xeb#\xd5?\x02\xbf\x0ce\xb0\xd4\xa5?-XBVes\xca\xbf\x11f\xfd\x99\xb5\x84\x9b?\xdb\xfe\x9bO\xc1,\xa3\xbf\x91\x80\xa6}\xfbL\xdb\xbf\x15\x93\xb3\x99\xfe\x9a\xa7\xbf0+@]\xa0J\xf6\xbfw\x1a\xa9\x0bJ\xf5\xe0?\x9f\x9f\xd8\xb7\x166\xe5?\x7f7\xaf\x07\xa2\xe9\xc5?\x03\xf4uz\x0f\xc3\xc6?\xd7?.\x84\x94\x05\xa7?\x07\xdc\xe0\x00\xa9\x9b\xe2\xbf\xc5\x89\xc08]\x08\xee\xbf;|J\x15\x8c\x9c\xba\xbfX\x84X\xcd\xc1M\xee\xbf\xf8\xb9\xf8\xc83M\xe3?\x138\x15\xe1\x0b#\xbd?}\xf6\x1f,\x7f\xf7\xd2\xbf\x0e \x00\x11(\xfc\xc7\xbfc\x8b\xea\x8b"\xf1\xeb\xbfy\x05O8}\x93\xf0?\x11\xc4X,\x98\xca\xe3?\x7f\r=\xb31\x0f\xd1?4\xb2\x91m\x83T\xc4\xbf\xd9\xab}\xa9\\4\xd1\xbf6\xf1\xa6\x12\xa6\x92v\xbfDn\xfb\xad\x7fn\xb7?\xe8\xf1C\x99?\xf1\xd5\xbf\xcb\n\xec\xe6\nA\xf8\xbf\x91\x89\x81k\xd7`\xec\xbfZ0\x9f\x88\x03\xe8\xd7?\xf2\xde&bH\x93\xee\xbf\x80\x13U\x9d\xda\xbe\xe0?\x9c\xe4\xb4z\x1f\x04\xef\xbf\x93\xdd\xdah\xf90\xbf\xbfn\xc4\xbd\x8as\xef\xf7\xbf5\x0b\xa9,\xb0\xc1\xd7?%R\x1f\x9ay\xd9\xd2?w\xca\x9d!\r,\xde?)\x87/\xd4\xcc9\xa9\xbf\x0e\xc8\xe8\x89\xcbt\xa3\xbf\xfc5;V]\x0e\xb1\xbf&\xff5\xcdT\xc3\x9b\xbf'
+p179
+tp180
+bsS'sigma_'
+p181
 g3
 (g21
 (I0
-tp581
+tp182
 g6
-tp582
-Rp583
+tp183
+Rp184
 (I1
-(I32
+(I7
 I8
-tp584
+tp185
 g13
 I00
-S'!\x8cE\xbb\x87w\xe3\xbfm\t\xbfe]\xd5\xe9?0J\x15\xf8C\xf5\xe5?*\x1bH\x0e\x1c\xc7\xd6\xbf\x83\x14\xf4\x07\xfdr\xd0?\x84\xfbMe\xd2\xb2\xc5?\xb1*\x07\x8ano\xa5?v\xbe/\xc2o\xd7\xb4?\xe7\xbe\xd36\xe0\x13\xe3\xbf$i-\xfa\xf5\xd8\xfc\xbf\x97\x05\x96Il\xe1\xf1?\x85\xea\xcfh~%\xe2?\xc8\x97\xf8S\x06\'\xf1\xbf\xcfu\xbc\xc1C\xb9\xd0\xbf\xdc\x8f\xc6\x97\x0b\t\xde\xbf\xbf \x1f\x08\xe1\x8d\xd4?x=\x85`\xab\xdf\xc7\xbf,\xf7\xdb\xf1@\x01\xf4\xbf\xa4\xe9\x87\xf1\x94\x8f\xee?\xd3`\xb0\xc1s/\xea?~\xab\rBJ\xe9\xdc\xbf[SN\xd6\xb9\xc6\xd9\xbfE\x02a]\ro\xbf\xbf\x83\xd3\x9e\xecgB\xc9\xbf\xbe<\x02\x98\x95\x87\xd6\xbfg&$\x82Q!\xd3?5U\x89\x13\x1c\x14\x01@\xf1\xde\x7f\xad\xd1/\xc6?\x9b~\xb4*\xe9`\xef?\xbb\xcc\xaf\xb3\xc9\xaa\xee\xbf\x0fI0j\xd3\x9c\xe5?\xfe\x18\x03\xf5c\xc9\xcd?\x13\xb3@\xdf\x11\xb5\xeb\xbf\xc1A\x81\xc55I\xf2?;Z\x93Jh|\xef?\x7f\xec\xb3\x85*T\xd8\xbf\xe7\xeb\x98q\xc0g\xe2?.\x7f\xeb\xac\xf4\x02\xc7\xbf\xf66\xb9\n\xb2\x92\xdd?\n\x10\xf0VTv\xc4?\x7f\x11O\xd0\x83@\xd9\xbf\xd9?dF"\x86\xf7?*\xc5\x96\xf6`\xfc\xb2\xbf\x01}\x15t\xd5\xf0\xd8\xbfgg\xc11YF\xc6\xbf#\xdf/\x0c0W\xcf?\x0f\xc0\xe2\x04\xc9\x0b\xb4?\x13;{0\xb62\xb3\xbf\x9e(\x906y?\xe7\xbf\x1a\xfc\xcd\x14\xf2\xab\xe5\xbf\xe0_\x9fw#\x17\xee\xbf\x0cRSU\xc3>\xf3?\xbcJ\xb7\xa2\xc8&\xef?\xa15u\xb6>\xc5\xba\xbf\xbd\x12\xd3\xa4\x18\x93\xcc?\xbc\xc0\xac\xda\x07\x9b\x92\xbfA!\xe3\xcb\xe0\xac\xf3\xbf\xe6.\xe4"\xbb\xb4\xb5?\x86\xab\x8d\xc7X\xf0\xe1\xbf_\xf85\x17\x9e\xc4\xbc\xbf\x0bt\x80\xa3\xf6\xac\xbd?\x8f=7\xdbx\xb9\xcd?\x08k\x8b\x99\xcf\x96\x89\xbf\xef\x9b\x1fU]\xb2\xca\xbf2\xfcrgPc\xf2\xbf\x87\xbb\t\xcaPY\xeb\xbf\xc5\xea\xa7\xca\\\xaa\x00\xc0G\xd3\t\xa3\xf6\'\xd6?\xa8\xc9\xb3\x9a\xfe\xcd\xe6?\x9d\xa4%\xb0b\xad\xad?*\xe1k\xb8\xcd\x8c\xc7?\xed\x8c\x8c\xf4^\xc1\xb3?q{B\xb5\x06\xe3\xd8\xbf\x8b\x08o\xeaRy\xe1?~\xb4\x94\x03jL\xc1?\x1b\xee\x0c\xa1\xe2\xf2\xc2\xbf\x97\x840S\xd5*\xbe\xbf\xc2L\xb2\x7fND\xd4?\x1aAj0\x06*\xc7\xbf\xde\xc9W\x92\x90\n\xd0?T\x11\xf2\x1e7~\xf0\xbf4\xec\xe9\xeb\x14t\xd6?1\xde\xdb~eY\xe1\xbf\xeaf\xce\x94LZ\xc1?,|8\x95\xc7\xca\xc6?o\x92\xad\xd7\xef\xc7\xc9?\x98"\x80:\x0c\xa4\xa7?o\xc3A\xd9\xfa\x8c\xd1\xbfxj\x1d\xb3`k\xeb\xbfm\xbc\xe5\xe5\xe9L\xf2?\xb2\x19\x03/\xc9\xfb\xd2\xbf\xee{\xb0!l\xd7\xe6\xbf\x89\xd2\x99\x02O\xb6\x93\xbf\xad\xd7n\xdc6\x1f\x9d\xbf]\xe6\xcb\xad\xd1\xe4\xaa?\xb6Qr:\xde~\xbd\xbf\xb6\x059IdY\xe7\xbfiX<\xae\xff|\xb6\xbf\xe6a\xf6h\x87\xa0\xe3\xbf\xbf:=\x9c-\xda\xd8?\xca\x1aK\xfe\xbb\x9a\xda\xbf\xf39\x12b\xa9\xd2\x82\xbf\x9a\x96K\x9aT\t\xc8?\x8e\x8e\x8c\xda\xbe&\xa6\xbf\xb4o\xfe\xb7\xfaG\x07@\x9e&d&*\xbe\xb1\xbfH4OE\x9fe\xeb\xbf\xef\x9eD\x9f\xbcU\xc1\xbfo\xeb3\xfcW\xcc\xca\xbfyJ\xcfs\x7f\xc7\xdc?\xd1\xe9\xcc,\xef\xc0\xa6?\x12\x82\x08\xce\xd42\xc0?i\xa3\xe7dA\x93\xee\xbf>:\x8d\x01U\xe7\xfe\xbf)c\x87m\x8d\xb3\xe3\xbf\x9d\xc0{\x1eiA\xf2?\xa3\x05\xf4\x05v\xbd\xd6?_\xe8w\xea=\xd8\xe8?\xe5oL\x82\x1d\xe2\xc2?\xf4\x15\xee"G\x8e\xd4?}E#\x83\x97\xe5\xd1\xbf.\xfcDh\xc5\xbf\xd7?!\x82\xda\x07\xb7Z\xe6?U\xc2\xe2~\x9e\xe0\xc6?1\x7f\x981\x18\r\xdb\xbf\xaan\xaa\xbd\xe4W\xe4?K\xedY#\x94\xf6\x7f\xbfb\x90]e\xac\xa3\xb6?a\xea\xc1\x86N\x01\xe3?\xc4\xdcd\x98s\x02\xfa?\x01\xc2\xcd\x19\\\x1b\xa7\xbf\x153{t\xe9S\xc9?x \xd0A\xa6\xef\xbb\xbf\x88\xacf\xaf\xed\xd8\xb6\xbf\x01\xcfD\x84\x0fo\xcb\xbf8\xc4\xe4q\xfco\xc4?B\xef\xf4\xb4\x07\xf0\xe9?\xbf\xf8\xee7\xb2\xa6\xdf\xbf\xf8\x87\xf4~\xc4\xe4\xb5?\\\xa0\xc2\xa6x\x1c\xee?U\x94t\x16 \xf2\xd2??\xcdz\xafT\xf5\xd5\xbf\xdcw\x03\x92\xe5\xf5\xd3\xbf\x89\xc6\x1e\xf1@\x00\xd7\xbfrE-1v\x8b\xdf?\xff{=\xea\xe5\x8a\xf2?@OG\xeb\xb9\xc9\xca?\x1d\xdcf\xef\xfdb\xb3?3\'\xbac4\xc2\xa0?\x0f=\xf7VZ\xaa\xd4?\x06KK\x80Kv\xdb\xbf\xe3\x846~\x8d\xd4\xc5?p3KC\xa5\xa0\xe9\xbf\x19\xb3\xeb\xd62\xae\xe2?\x85d e\x86N\xdc\xbf[^\xda*\xd9 \xce\xbf|\xfe\xb6\xdd\xce_\xaa?\xe5\xbeo\x8b\x85\xb9\xc9?t\xd9 \xec \xff\xc0\xbfkA\x86\xa5\xb4\t\xd0\xbf\xcaI%m~ \xfd\xbf\xcb\x00\xc0v\xc8o\xbd\xbf\x16}\xcf\xce@\xea\xd2\xbfk\xe8(\x06\xaci\xf4\xbf\x90[\r\xce\x1a\xbf\xbb\xbf]\xa7!K\x05\xaa\xc6\xbf\xdcr\xe8\xd9\xf2\x17\xb1\xbfM\x83{:\x9f\xa6\xaf\xbf\x18\xf6\xe7\x93\x8f\xc4\xf6\xbf\x8d\x0cA8\xb54\xde\xbf\x9b\xa5\x85\xc7\x95\x8d\xdd?X+\xd5\xf9Z\xb4\xed\xbfl\x0fX\xf9\xd8\x91\xb4?\x1c\xca\xcd\xc6\xaa\x93\xa4?O^\xf3\x83my\xab?E`\xe0\xc2>\xf4\xa8?\xda\x8a{A\x8e\xad\xd6\xbf&\xb9\x95\xf9\x05\x90\xd2\xbf\x04!\xcfr\xc7b\xf8?{B\xd49\xfc\xc8\xea?\x90\xc3l\xa5Q\xdc\xe4\xbf\\\xef\xb4o\x04O\xe5\xbf\x17"\x88J\x1e6\xb6\xbf\x90?B\xf7\xaaC\xba\xbf%6\td\xd5\xf0\xfb?*v\xbcg\x00\xa9\x00\xc0\x90\xd6Z\xb9dE\xfb?\xc8n\x8eL@\x8c\xe6\xbfg8\x9bBP\xa6\xdc?S\x9b\xc9iM\xd4\xe1?\xf8\xedY\xf1\xb6T\xda?u\xa6&j\xee\xc6\xbf\xbfPE\xcfA\xb1|\xef?\x8eF\x92\x9a\xe5w\xea\xbf\xa6\xacO\xa4\x90\x1c\xe7\xbf\xda\x93\xd22\xd5\x18\xb2?\xba\xe5\x1a\xe9Q8\xe7\xbfC= \x82;O\xc1\xbf\x94\xb1\x1f@\xc2\x84\xb9\xbf-\x06\xc5\x8d\x9au\xc1\xbf\n\xb6\x88\x12\x1f\xc3\xfb?\x91q\xbf0\x1d\xb4\xd6\xbf\xaeWJ z\xde\xf3\xbf\xa9\xe05"\x93v\xc2\xbf\xc9\xa9%S\xa4\x18\xf2\xbf\n\xc9Z\x8f;J\xd7\xbf$\xa3\x1fu\xb8\x9f\xc9?F\xb1\x9d\x16\x9e\x17\xca?\xc4\x00\x03\xb9\xfc$\xcc\xbf\xc2\x18W:e6\xf4?\xc3\xc2\x8fX:t\xcf\xbf\xd9r\xe5\xcc\xd3\x8a\xd5\xbfO\x8a\xe66h\xb9\xdc\xbf\xa5\xaa\xc0\x16\x80;\xc5?\xc80\x18\xca\xa6\xc5\x9a?\xbb@\x94\xfa\x9f\xcd\xae\xbf~\x9a\x8b\r\x12&\xf2?\x94\xedz\x92\x03<\xfb?\x06`5\xa3K\x17\xba\xbf:\xa0\xa5\xab\xe1\xec\xa4\xbf5\xe3\xff\x94\xd3Y\xbe?\xe8\xf7\xaf\xbf\x06\xc3\xb0\xbfn\xb6\xa8\xef\xe3\x94\xd3\xbf\x0e\x1b\r\x8d\x8de\xcb?\x92\x9a\xfc\x9cz\x8a\x00@\xe9\x8fB\xba\xad\xd7\xf8\xbf\xe6\xd7^\x16p\xbe\xfb\xbf0\x9e1L\xc2\x83\xeb\xbf\xd5Kl\xfde&\xe7\xbf\xa5\x96\xcdAE\xbd\xe3\xbfd\xdf\xdc\x9e\xb6M\xc9?\xd0\x82\xacx\xddv\xa5\xbf\xc7\x14&*\x9e;\xfe?V_.\x81]/\xfc\xbf\x14\xb5\xd0+H_\xa1\xbf\x99\xa2` \xe1\x9b\xf0\xbf\xb3\xf8}\xef\xc6T\xd3?\xd0\xd1\xf1\xa2\xadj\xd2\xbf+\xa6\xaf\xc8s`\xbe\xbf\xe3\x96\x01u\xf3\x9f\xb8?\x8db\xabT\x83\x94\x00@VN\xe7\xb2\x92"\xf6\xbf\xbe\xbc\xb0\x8a\xc5\n\xd3\xbfj7[\xee\x998\xdb?:[6%\xd5M\xd8?\xe9\xd43PW\xfd\xc9\xbf-\xca\xff3\xf93\xdc\xbff\x92\xf95TX\xc8\xbf\x04\xe1\x94,X\x82\xe5\xbf\x11\xac4[\xc0=\xc6?\xac\xcf\xea\xd7\x8c\x04\xf1\xbf3\xc6{BwE\xd5?\x16\xac\x94\x1a\xde\xfa\xda?\r\n\x7fd\x07\xbc\xb1?\xbf\xda\x02yH\x19\xc2\xbf&&#\xb1\x14U\xcf\xbf'
-p585
-tp586
-bsS'class_count_'
-p587
+S'\x1c@\xf8\xff\xfb\xf6\xe8?\x9a\xd5\x03\xf6\x03z\xf4?F\xa6\xb4\xbeo\x0b\xde?CV\xf9!}\x89\xe1?\xa6|\xfb\xdet\x87\xd7?\x12\xc3\x94\xd7\x90B\xce?\xfc\x14\xb1[M\x95\xc0?T\xaa\x8c\x1bm/\xbe?vD\xf3\xc94\x10\xd7?\xbe\x94\x82\x98?\x98\xd9?\x96a\x8d\xa5\xa7i\xde?&\x9e\xddc\x80\xeb\xb6?\x8e\xea\xddWLY\xc9?p\xa7\xf6\x06c\xcd\xa3?\x0fN\xfaU\x82\xdb\xbf?z]\x02oRg\xa4?\xf3.M6\x90\x16\x82?\xfd\xecp\x13\x96W\x80?\xa3O\x00\xf2\xbf\xb0\xb3?\xf3\x97\x81\xfa\xd9\x02\x84?\xe7\xdax\xfcoA\x85?{\x9f\x81\xf1v\xc3\x82?L\xcb\x00D\x19N\x83?\xa5"\\\xe1\x90\xa2\x91?M$~\x1d=l\xb4?\xfa^\xb1\xec\xbc\x90\xbd?\x17\x11\x07\xb0\x11\x90\x9a?\xfd\x1b\xba\x99\x93\x15\xc2?\xa7y\xd1\xd0\t\xeb\x9a? \xbd\x06\xb1\xdd\x10\xa1?U\xb1GO\x1d<\x9d?\xa9g\x1a\x04\xb1\x1b\x93?\x1dM8\xfc\xec\x0c\xc3?\xf6j\xbd\x91D\xf2\xe2?\xc2\x815\x8b\xab\x03\xe0?J\xf7\xd6T\xd7\x8b\xa4?\xe1~\x88\x14\xa8\xcc\xb4?\x8e\xa9\xed\xe3\x93\x85\xb0?\x7f\xfcI\xec\xa3\xfc\xa7?9A\x0c{\x88\x7f\x9f?M\xd5\xa5hP7\xe5?\xa1L \xc3\xbdA\xaf?t\xbe\xa7t\xcf\x14\xc3?\xf7\x83\xdc-z?\x85?|7\x9a\xd9\xbeW\x9e?\xce!5\xd9|K\xc7??\xca_7ni\xc4?\xfa\x8c\x97rL\x12g?\t\xa6\xad\x7f\x87\xc9\xbb?p\xf8\xaeg\xbbI\xad?\xdfq\xc6\xff\x0e\x9b\xb9?9\x17\xce\xb9f\xd2\x9f?\x15a\xd6\xf6M\xc1\x9a?\x95\xee\xf8\xad\xafP\x91?j\xe9\xb4\x9cf\xfe\xaa?UO\x04\x9c\xf1\x1e\x86?'
+p186
+tp187
+bsS'_sklearn_version'
+p188
+S'0.18'
+p189
+sS'class_count_'
+p190
 g3
 (g21
 (I0
-tp588
+tp191
 g6
-tp589
-Rp590
+tp192
+Rp193
 (I1
-(I32
-tp591
+(I7
+tp194
 g13
 I00
-S'\x00\x00\x00\x00\x00\x80@@\x00\x00\x00\x00\x00\x007@\x00\x00\x00\x00\x00\x80D@\x00\x00\x00\x00\x00\x00D@\x00\x00\x00\x00\x00\x009@\x00\x00\x00\x00\x00\x00L@\x00\x00\x00\x00\x00\x00=@\x00\x00\x00\x00\x00\x007@\x00\x00\x00\x00\x00\x00<@\x00\x00\x00\x00\x00\x00A@\x00\x00\x00\x00\x00\x00=@\x00\x00\x00\x00\x00\x00D@\x00\x00\x00\x00\x00@U@\x00\x00\x00\x00\x00\x00A@\x00\x00\x00\x00\x00\x00>@\x00\x00\x00\x00\x00\x00A@\x00\x00\x00\x00\x00\x80L@\x00\x00\x00\x00\x00\x00@@\x00\x00\x00\x00\x00\x80I@\x00\x00\x00\x00\x00\x00:@\x00\x00\x00\x00\x00\x80C@\x00\x00\x00\x00\x00\x00C@\x00\x00\x00\x00\x00\x00D@\x00\x00\x00\x00\x00\x80J@\x00\x00\x00\x00\x00\x00$@\x00\x00\x00\x00\x00\x006@\x00\x00\x00\x00\x00\x00?@\x00\x00\x00\x00\x00\x00E@\x00\x00\x00\x00\x00\x00:@\x00\x00\x00\x00\x00\x80@@\x00\x00\x00\x00\x00\x00A@\x00\x00\x00\x00\x00\x00G@'
-p592
-tp593
+S'\x00\x00\x00\x00\x00p\x89@\x00\x00\x00\x00\x00\xb0y@\x00\x00\x00\x00\x00\x00A@\x00\x00\x00\x00\x00\x00<@\x00\x00\x00\x00\x00\x00O@\x00\x00\x00\x00\x00\x00=@\x00\x00\x00\x00\x00\x002@'
+p195
+tp196
 bsbsg18
 S'Naive Bayes'
-p594
+p197
 sS'smallname'
-p595
+p198
 S'gnbc'
-p596
+p199
 sbsS'feature_list'
-p597
-(lp598
+p200
+(lp201
 g31
 (g10
-(S'S6'
-p599
+(S'S7'
+p202
 I0
 I1
-tp600
-Rp601
+tp203
+Rp204
 (I3
 S'|'
-p602
+p205
+NNNI7
+I1
+I0
+tp206
+bS'mfcc_12'
+p207
+tp208
+Rp209
+ag31
+(g10
+(S'S6'
+p210
+I0
+I1
+tp211
+Rp212
+(I3
+S'|'
+p213
 NNNI6
 I1
 I0
-tp603
-bS'mfcc_0'
-p604
-tp605
-Rp606
-ag31
-(g10
-(S'S7'
-p607
-I0
-I1
-tp608
-Rp609
-(I3
-S'|'
-p610
-NNNI7
-I1
-I0
-tp611
-bS'mfcc_11'
-p612
-tp613
-Rp614
+tp214
+bS'mfcc_5'
+p215
+tp216
+Rp217
 ag31
 (g10
 (S'S6'
-p615
+p218
 I0
 I1
-tp616
-Rp617
+tp219
+Rp220
 (I3
 S'|'
-p618
+p221
 NNNI6
 I1
 I0
-tp619
-bS'mfcc_2'
-p620
-tp621
-Rp622
-ag31
-(g10
-(S'S6'
-p623
-I0
-I1
-tp624
-Rp625
-(I3
-S'|'
-p626
-NNNI6
-I1
-I0
-tp627
-bS'mfcc_5'
-p628
-tp629
-Rp630
-ag31
-(g10
-(S'S6'
-p631
-I0
-I1
-tp632
-Rp633
-(I3
-S'|'
-p634
-NNNI6
-I1
-I0
-tp635
-bS'mfcc_9'
-p636
-tp637
-Rp638
+tp222
+bS'mfcc_8'
+p223
+tp224
+Rp225
 ag31
 (g10
 (S'S18'
-p639
+p226
 I0
 I1
-tp640
-Rp641
+tp227
+Rp228
 (I3
 S'|'
-p642
+p229
 NNNI18
 I1
 I0
-tp643
-bS'spectralcontrast_3'
-p644
-tp645
-Rp646
+tp230
+bS'spectralcontrast_0'
+p231
+tp232
+Rp233
 ag31
 (g10
 (S'S18'
-p647
+p234
 I0
 I1
-tp648
-Rp649
+tp235
+Rp236
 (I3
 S'|'
-p650
+p237
 NNNI18
 I1
 I0
-tp651
-bS'spectralcontrast_7'
-p652
-tp653
-Rp654
+tp238
+bS'spectralcontrast_1'
+p239
+tp240
+Rp241
 ag31
 (g10
-(S'S3'
-p655
+(S'S19'
+p242
 I0
 I1
-tp656
-Rp657
+tp243
+Rp244
 (I3
 S'|'
-p658
-NNNI3
+p245
+NNNI19
 I1
 I0
-tp659
-bS'zcr'
-p660
-tp661
-Rp662
+tp246
+bS'spectralcontrast_10'
+p247
+tp248
+Rp249
+ag31
+(g10
+(S'S18'
+p250
+I0
+I1
+tp251
+Rp252
+(I3
+S'|'
+p253
+NNNI18
+I1
+I0
+tp254
+bS'spectralcontrast_4'
+p255
+tp256
+Rp257
+ag31
+(g10
+(S'S12'
+p258
+I0
+I1
+tp259
+Rp260
+(I3
+S'|'
+p261
+NNNI12
+I1
+I0
+tp262
+bS'spectralflux'
+p263
+tp264
+Rp265
 asb.
\ No newline at end of file
--- a/experiment-reverb/code/model_svm.dat	Wed Dec 14 13:15:48 2016 +0000
+++ b/experiment-reverb/code/model_svm.dat	Wed Dec 28 17:22:49 2016 +0000
@@ -37,7 +37,7 @@
 I0
 tp15
 bI01
-S"\x8av\x8dU5\x97\xd7?\x87|\xbf\x16\x0e-\xd4?\xd6\xab\xa5>y(\xe0\xbf\xf4\xd2U\xdc\xe9\xb9\xd2\xbfEy\xd0\xc3n#\xd1\xbf\xd4\xc4\x7f3\x83\x8b\xe2?\x89\x90i\xc0\x00[\xc0?\x91+D3\x94\x10\x91?\x9a\x05\x97\x86\x0bC\xe1?\x82\xb7\xe5A\x8e\xe6\xce\xbfF\xdeQi\x93\xd4\xb1\xbf1\xean\x04\xdc\xdf\xd6?\x91\x0e\xb8\xf2\xbe\xcc\xce?\x150\t\xf2n:\xbc\xbf*\x8b\x80\x93\xf7\xd6\xe3?\x18C\x9cn\xc5&\xd0\xbf$\xa0\xa8\x85\xf3\x01\xc3\xbf5Y\x0c\xc2\xc6\x87\xd3\xbf\xce3\x10\xda'\x12\xd2?\xc8\xdc\xe7\xd2a4\xda\xbfh5\xea\xf3\xda\xb4\xe1\xbf\xd4t,u\x06Mv\xbf8\xe9{\x08\xe2\x85\xd2?w\x8d>\x1a\xb6\xd6\xdf\xbf\xd3\x1d\x06\xf5\x16\x80\xc8?i.\x9b-\xa8\x9d\xe2\xbf\xb4\xa4\xc8\xf5\xbc\x8f\xc0\xbf}7\xb6I\x8a\xeb\xd7\xbf \x01%\xb8\xb2\xe5\xb1\xbfH\xd5\x83\x04\xce2\xc6\xbf\xf1\xb6k\xb6\x92\x14\xb2?\x16>\x0el\xcd\xf2\xe4?\xbc*\rJ\x87\xac\xcb?\xb58\xe0a\xaef\xe0?\xf2\x8e\xe0\xc9V1\xe0?- H\x8aM|\xb4?t\x8b(\x7f_\x07\xd7\xbf\x1ab\xe9\x15^\xfe\xc6\xbfm\xdb\xe8\xfe\x8f=\xd3??\xb9f-\x0f\xd9\xda?s0p2y\xf0i?a\x0c8\xb7\x81\x97\xd0\xbf\xde\xa9\xe9\x1d\xdd)\xca\xbf\xc2\xcf\xf0`\x90\x13\xe5?\x10\xe1dm%=\xe4\xbf\xdag\x9961\xa4\xa8?S8O\x92\xa5w\xcc\xbf\x0e\xf1\xbd|\xdd\xd2\xb2?\x88\xc8\x8f\xfbw\x9e\xb2\xbf\x04\xfa\xf3\xef\xcf\x95\xd1\xbf\x02^\xfd&\x9c\x95\xdf?c\xd3\xc0\x00\xd6\x06\xc4?\x9fS\xb9\xe1f\x11\xc6?KDZ\xfeB}\xe8?e\xac\xc4\xec\x844\xb0?N;Z\x94\xdd\xd1\xc6?\xc2\xe05N\x9e\xc2\xe5\xbf\x04\xe7\x90\xc5\xab\xca\xb2?\xa7\xd4\x9d\xfe\ry\xd4\xbf56m\x8d\xc9\xf3\xbe?r\xb7!\xbf\xb0\xb6\x86?\xa0\xe4\xba\xf1\xfc\xa1\xa4?\xffSW\xc9\x9a`\xe3?\x166\xb3v\xc4\xb2\xcb?"
+S"\xa6/a\xbdh\x9f\xaa\xbf\x1e\xdbSws\xa5\xdf\xbfv\xa9p\xb5\xf7T\xd2\xbfe\xe8\x8a\xd7\xf4\x8a\xe0?\x0edi\x04.\x81\xde?\x05\x9a\xb2\x9d\xf7\xa1\xc8?\x82Q\xc8rI\x86\xb9?\x94+5\x96V\x04\xd7\xbf\x1c>\x8b\xa2#\xce\xd8\xbf0i\xc336\xfe\xbc\xbf\x06q\xbe\xef\xb6\x96\xe1\xbf\xc4\xea\xc7\x1c\x01\xf6\xc9?9\x1d_\xcc\r\x1f\xd4\xbf\xd8S\xc8\xbc\x0c\x01\xc6\xbf\x95\x99\xee\xf8'\x10\xe1\xbf*3\x10\x1fz6\xd2?(\xfb\rq\xfa\xd4\xd0\xbf1\t\x087v)\xc4\xbf\xe4\xaeF\xb1\xf83\xc3\xbf\xf4\x9d\xfb#\x8eq\xc4\xbf\x12\x86S!u\x9d\xa0\xbf\xec\xaf\xbf6\xf3t\xe3?\x8edp\xa7\xc8\xbf\xdb?\x8a\xbePGn\x81\xe1?'tj\xf9\xf5j\xde?YN-\x8a\x80\n\xdb?\x12y`YOK\xb6\xbf\xaa\xa0\x9e\x98Qv\xd0?^\x93\x08,P\x96\xc0?\x8f\xfe\xa1\x02\x07\x9c\xe1?55\xc1C\xfdi\xdb\xbf<\x03ey{\x86\xc1?Z\x8d\xe4\x97Jo\xe6\xbf\xc49 \xa0\x99\xab\xd6?O\xc7\x9c\xa86\x7f\xdc?w\xfe\x83\x1f\x97\x96\xd2?\x00\xd4\xbc[\xddC\x9e?\xd1\x07.\xe6[\xe7\xcc?\xd4\xed\x91\x11\x1dk\xbb\xbf\xe7\xb9\xb0\x11\x96\xa3\xc8\xbfkh\xf3V?\xa6\xc9?J\x17\x1a\x9f\xd9\x98\xc5\xbf^\xf2mk\x17U\xb9?\xd3#\xa61,$\xd7?\xaa&$j\x16\xb0\xe9\xbf.\xbeP\xa1\x8e\xa5\xca?R\xa3\xa4\x98\x03 \xc9?\xc0,\x02\xf0sC\xd0\xbf\x02\xdb\x97\xe0!h\xbd\xbf\xbf\x1c\xac\xf2\x94u\xe0?\x7fp;#[\x9b\xe3\xbf4a\xec\xb6kE\xc9\xbf\xb2\xa4V\xe0R\xd3\xb0\xbf\xa7\xd3\xc9\x93\x14\xf6\xb0?U\xe1\xb94\x9e\x9a\xd3?(\x05<m\xcc\xff\xdc\xbf\x1b\x9d8O\xdd\xa4\xb5?\xa7\x97\xbc\xd9S?\xd6?\x14\xc4\xe4\x96\x84q\xa8\xbfR\xe4\xafu\xbc\xd1\xe2?P\xbc(\xe8f\xb2\xb4?\xaa\x02(\x17\xf9\xc5\xd9\xbfV_\xe9\xac\xc7\xed\xdb?\xfb\x1e\xe8*\xb4\xf9\xd9?"
 p16
 tp17
 bsS'name'
@@ -61,7 +61,7 @@
 tp25
 g13
 I00
-S'\xdf\xa1\x18\x0cL\xfb\xff?\x8d\x0e\xa2\xc8\x9bo\xf3?\x12$\xbdcJ\x86\x89\xc0:/\xd2lF\xbaY@\x00\x00\xe0\xbd\x8e]b@#\n\t\xae\x0c\xe7P@\x89L\xf1\x90CR\x1a\xc0\x8e\x06\xd8N\xfc\xe7$@Q\x0c\xa6BU1\xe5\xbf\x89\xd72H\xbfc\'@\x93S\xa3\xd6\xcb\xfd\r\xc0\xbf\xce=u\x11\x16%@\xd5\x9aP\']\xee)@\x90\xc2\x92\x93\xf6,B@\xde,p\x8ek\xc4"@\x1eV#<\x80-<@\x14\x83\xf9E\x1e\x83\x0b\xc0\x98\x85\x8c|\xd1\r>@\x8e\x95\xb2 UP\x9c?D\x99M\xb2S\x143@Tk\xd2a\xd9\x0b\x11\xc0\x19\x04\xd3\xb3\x1bb+@c0\xa7\xc1\xde\x0c\x15\xc0\xe95\xeay\x90|,@\xbb\xe4j\xac\xed<\x19\xc0pk\xf4\x140\x9b)@z\x07\x8aq\xbe\x1d\x08\xc0\xd6\xa09\x99\xf7M)@{\xfc7\xeb8V\xab?\xcf\xd2\xa4\xaa\x90\x96\xa4?\xa8KN\xe9\x04=\x93@\xe9P\x9b\x80N\x9a\x88@{\xfc+\xae\x89L\xe7\xbf\xe4\xa6_\xc8\x91F\xc0?\x12$\xbdG:O\xe6\xbf\x1fh\xe5S\x04\x90\xc2?q\xf5\x83\xde.w"\xc0#D\x15D{>\xf3?\x99\x86\xedf\x8c\x88$\xc06\xe7m\x86\x835\xf3?V\xca\x1e\x8f\x91\xdd\xe7\xbf\xa5|UG\x80q\xbe?O"\xd3@^\xc0\xe8\xbfk\xb3Y5\x8c\xb4\xba?=\x89L\x17F\x1b\xea\xbf\xcasd\x89\x10\xcf\xb1?6\xe1\x00\x9d\xdcU\xeb\xbf\xfb\x00j\xe0\xadX\xaf?\xa2\x18\xcc\xa0\xc2\xb3\x19\xc0\x0b\xf9\x91g\x19\x0b\xfd?Hz\x87\x06tL\x1a\xc0\xf0n\r\x8a\xf6\xf0\xf5?]rj\xfd\x18|\x1d\xc0bN\xda\x91\xe3u\xf3?\x0eP\x97D\x08Q \xc0\xa9\x11\xcdc\xc6\xe6\xf4?\xb4\xb1\xd2\xdbP\x8e\x92@\x7frV\x85?S\x94@\xb4\xb1\xd2\xdbP\x8e\x92@\x7frV\x85?S\x94@\xd8\xf9L@\x1a1\xb3?\x13\x02\xa8U3\xd8\xb3?'
+S'\x92\x8dKy\x1a+\x04@\xaf\xd5$\xae:\xec\x00@\x83\xb1f\x0c\xda4\x8c\xc0\x0b\x84\xbd\xb9WEX@\xda\xc3q9\xe07a@{\x81g\x13\xa1\xf7Q@A\xc8{\xd8\xef\xc2\n\xc0\xf9\x89UO\x8d\xbf#@ \xe4\xd9\xf8L\x93\xf6\xbfO\x1a\x1b!=\xdb#@_\xcb\xb6"\x0cU\xfa\xbf\xae\xe3f_\xe0\x9c"@;p\x83\x84N\xb55@Ltm\xf2z\xcfD@\x1b\x97\x1a\x1b=\x07"@\rs\x14<\xe6*>@\xee\xf78\xc4\xc3\xb0\r\xc0\xc2?\xb5&\xe9\xec4@\x9eHah<\xe5\x0b\xc0\xd5J7o\xfa\xde1@JWM\xe7\xfb\x84\x15\xc0\r\\\x9a\x9d\x07\x97+@\xd0)\xdbuc\x06\x01\xc0\x9d\x84\xcd\x8b\xdb\x97&@\xc4y\xf6@L\x13\x06\xc0@\xd6P\x11\xa5\x8a&@\x8fa\xd7\xd9\x04\xcb\xd2?\xc9yOU\xa1U&@}N\xe9lS[\x98?\xabnV\x12\xe5\xca\x98?\xf5ZT\xbf\x1c\xa5\x93@S\x9dr\xbf\xe8\x8c\x89@\xd0)s\xc3\xa6=\xe8\xbf\x1a]\x95\x10\xbaD\xb9?\xf7{Cp\xf2Y\xe9\xbf\x9fis\xaa\xc0D\xb2?%1\xe1q\x0f\x93$\xc0\x98\xb5\x8b\xb7\x92\x17\xfb?\xb0P\xbari\x85&\xc0%\xda\xdbU\x0f\x15\xfb?%1\xe1\x81\xdat\xe8\xbf\xfd3\xf8\x88\xb0g\xbb?ILxl\xf7]\xe9\xbf\x8a\xf9@\xcdu\xb9\xb6?\xa8\xd7\xa2Z\x8a\x82\xea\xbfT\xc0\x98\x96""\xb3?\x96\xcf)3e\xe9\xeb\xbf\xffr\x17\xe6\xb4\xfc\xa9?\xc2X3\xd2\xee\x12\x1d\xc0d=\x1e\xeb\x89\xc4\x00@+\x89\t\x0b\xf4\xbf\x1c\xc0%N+\xb2\xa8\x8b\x01@\xca\xd1JrF} \xc0u\xe0\xc8\x1a1G\x01@\xb7\xbe,\xf3)\x9a"\xc0\xf9\xe7/\x9b\xfa\xf7\xfd?\xc4y"\xdeHG\x95@\x1fy\xcd#\xd1\x8e\x95@\xc4y"\xdeHG\x95@\x1fy\xcd#\xd1\x8e\x95@\xdd\xef\r\xf5TU\xb6?\xdeE\xfb\x9f\x1b&\xb5?'
 p26
 tp27
 bsS'q'
@@ -75,31 +75,31 @@
 scalar
 p31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S"\xd2'}\x12\x11\x11\xb1?"
 p32
 tp33
 Rp34
 g31
 (g13
-S'c\xfb\x1d\xbd\x1f\xdc\xe3?'
+S'\xcf\xba\xc1\x14[\xdb\xc8?'
 p35
 tp36
 Rp37
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xba\xff\xff\xcf?'
 p38
 tp39
 Rp40
 g31
 (g13
-S'\n?f\xe7$\x10\xa7?'
+S'\xb9y\x13,\xf4\xa1\xe8?'
 p41
 tp42
 Rp43
 g31
 (g13
-S'.\xfd<\x1e_k\xbb?'
+S'\xe3\xbd\xad\x96\xc6\x1f\xdc?'
 p44
 tp45
 Rp46
@@ -107,31 +107,31 @@
 sI1
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\x88\x88\x88\x08\x11\x11\xa1?'
 p48
 tp49
 Rp50
 g31
 (g13
-S'g\x8b W\xbe\xff\xe6?'
+S'\xe7\x1a\xd1\xb0\x80f\xb0?'
 p51
 tp52
 Rp53
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xa2UU\xb5?'
 p54
 tp55
 Rp56
 g31
 (g13
-S'\x08I\xa5M\xeb\x06\xe3?'
+S'\xd0\xe3a.bW\xcd?'
 p57
 tp58
 Rp59
 g31
 (g13
-S'\x9a\x18`\x0f)\xa0\xb9?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p60
 tp61
 Rp62
@@ -139,31 +139,31 @@
 sI2
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\xdd\xdd\xdd\x1dl\xc1\xa6?'
 p64
 tp65
 Rp66
 g31
 (g13
-S'\xed\xfc\x13~\x1f\xb3\xe3?'
+S'\x9b`a\xdcX\x93\xc7?'
 p67
 tp68
 Rp69
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'UUU\x99UU\xc5?'
 p70
 tp71
 Rp72
 g31
 (g13
-S'!Wt\xb6cM\xde?'
+S'\t\xc4\x85\x9a\xc5{\xdb?'
 p73
 tp74
 Rp75
 g31
 (g13
-S'\xca]\x9e\xfa\xc2\xe1\xb9?'
+S'\xe2\x19-0\xb7\x83\xd2?'
 p76
 tp77
 Rp78
@@ -171,31 +171,31 @@
 sI3
 (g31
 (g13
-S'\xdd\xdd\xdd\x1dl\xc1\xa6?'
+S'\x0c\xb6`\x8b>\xe9\xb3?'
 p80
 tp81
 Rp82
 g31
 (g13
-S'=\x1e\xe6\xd2\xed\xa0\xd4?'
+S'\xcf\xba\xc1\x14[\xdb\xc8?'
 p83
 tp84
 Rp85
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xba\xff\xff\xcf?'
 p86
 tp87
 Rp88
 g31
 (g13
-S'Q\xee\xf2\xd4T\x03\xe5?'
+S'\xb9y\x13,\xf4\xa1\xe8?'
 p89
 tp90
 Rp91
 g31
 (g13
-S'!\x80\x14\xd0\x85\x9a\xd3?'
+S'\xe3\xbd\xad\x96\xc6\x1f\xdc?'
 p92
 tp93
 Rp94
@@ -203,31 +203,31 @@
 sI4
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\x88\x88\x88\x08\x11\x11\xa1?'
 p96
 tp97
 Rp98
 g31
 (g13
-S'n\xde\x04\x0bV\xd0\xe5?'
+S'\xe7\x1a\xd1\xb0\x80f\xb0?'
 p99
 tp100
 Rp101
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xa2UU\xb5?'
 p102
 tp103
 Rp104
 g31
 (g13
-S'\x8b Wt\xe9\xe7\xe1?'
+S'\x83\xd7\xb1&d\x9f\xce?'
 p105
 tp106
 Rp107
 g31
 (g13
-S'\xca]\x9e\xfa\xc2\xe1\xb9?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p108
 tp109
 Rp110
@@ -235,31 +235,31 @@
 sI5
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S"\xd2'}\x12\x11\x11\xb1?"
 p112
 tp113
 Rp114
 g31
 (g13
-S'9eC\x1f\x82\\\xe1?'
+S'\x82\xae\x11\r]#\xca?'
 p115
 tp116
 Rp117
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xba\xff\xff\xcf?'
 p118
 tp119
 Rp120
 g31
 (g13
-S'!Wt\xb6cM\xde?'
+S'\xb9y\x13,\xf4\xa1\xe8?'
 p121
 tp122
 Rp123
 g31
 (g13
-S'v\xd5i%\x97~\xbe?'
+S'\xe3\xbd\xad\x96\xc6\x1f\xdc?'
 p124
 tp125
 Rp126
@@ -267,1129 +267,329 @@
 sI6
 (g31
 (g13
-S'\x05[\xb0\x05l\xc1\x86?'
+S'\x88\x88\x88\x08\x11\x11\xa1?'
 p128
 tp129
 Rp130
 g31
 (g13
-S'\x1b#\xf1\xb5\xe7\xc8\xe0?'
+S'\xe7\x1a\xd1\xb0\x80f\xb0?'
 p131
 tp132
 Rp133
 g31
 (g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'\xaa\xaa\xaa\xa2UU\xb5?'
 p134
 tp135
 Rp136
 g31
 (g13
-S'N+\x11\xbb\xb8y\x93?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p137
 tp138
 Rp139
 g31
 (g13
-S'\x0c\xb0\x07\xce \x80\xb4?'
+S'\x9c`a\xdcU\xa7\xc5?'
 p140
 tp141
 Rp142
 tp143
-sI7
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
+ssS'classifier'
 p144
-tp145
-Rp146
+ccopy_reg
+_reconstructor
+p145
+(c__main__
+SVMClassifier
+p146
+c__builtin__
+object
+p147
+Ntp148
+Rp149
+(dp150
+S'loss'
+p151
+S'squared_hinge'
+p152
+sS'C'
+p153
+F1.0
+sS'max_iter'
+p154
+I1000
+sS'verbose'
+p155
+I0
+sS'fit_intercept'
+p156
+I01
+sS'classes_'
+p157
+g3
+(g21
+(I0
+tp158
+g6
+tp159
+Rp160
+(I1
+(I7
+tp161
+g10
+(S'i8'
+p162
+I0
+I1
+tp163
+Rp164
+(I3
+S'<'
+p165
+NNNI-1
+I-1
+I0
+tp166
+bI00
+S'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00'
+p167
+tp168
+bsS'class_weight'
+p169
+NsS'n_iter_'
+p170
 g31
-(g13
-S'Lh/\xa1\x81\n\xe1?'
-p147
-tp148
-Rp149
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p150
-tp151
-Rp152
-g31
-(g13
-S'v\xd5i%\x97~\xbe?'
-p153
-tp154
-Rp155
-g31
-(g13
-S'\x8f^\x19\xdb\x88\x86\xb5?'
-p156
-tp157
-Rp158
-tp159
-sI8
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p160
-tp161
-Rp162
-g31
-(g13
-S'\x16\xc6\xcd\x9b\x8bI\xe7?'
-p163
-tp164
-Rp165
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p166
-tp167
-Rp168
-g31
-(g13
-S'!Wt\xb6cM\xde?'
-p169
-tp170
-Rp171
-g31
-(g13
-S'\x9a\x18`\x0f)\xa0\xb9?'
-p172
-tp173
-Rp174
+(g10
+(S'i4'
+p171
+I0
+I1
+tp172
+Rp173
+(I3
+S'<'
+p174
+NNNI-1
+I-1
+I0
 tp175
-sI9
-(g31
-(g13
-S'I\x9f\xf4\tl\xc1\x96?'
+bS'\x0b\x00\x00\x00'
 p176
 tp177
 Rp178
-g31
-(g13
-S'\xee\xc94\xfeP\x9c\xe2?'
+sS'penalty'
 p179
-tp180
-Rp181
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
+S'l2'
+p180
+sS'multi_class'
+p181
+S'ovr'
 p182
-tp183
-Rp184
-g31
-(g13
-S'\x0f!\xa9\xb4\x95\x88\xdd?'
+sS'random_state'
+p183
+NsS'smallname'
+p184
+S'svmc'
 p185
-tp186
-Rp187
-g31
-(g13
-S'Ri\xd3!\xfb\xf4\xbc?'
+sS'dual'
+p186
+I00
+sS'tol'
+p187
+F0.0001
+sS'coef_'
 p188
-tp189
-Rp190
-tp191
-sI10
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p192
-tp193
-Rp194
-g31
-(g13
-S'\xd5i%b\x81\xe1\xe0?'
-p195
-tp196
-Rp197
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p198
-tp199
-Rp200
-g31
-(g13
-S'y\xea\x8br\x1b#\xe1?'
-p201
-tp202
-Rp203
-g31
-(g13
-S'&\x8b\xf7\xb6\xebX\xc3?'
-p204
-tp205
-Rp206
-tp207
-sI11
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p208
-tp209
-Rp210
-g31
-(g13
-S'\x84\xa4\xd2\xa6N+\xe1?'
-p211
-tp212
-Rp213
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p214
-tp215
-Rp216
-g31
-(g13
-S'\xc5\x00{\xe0\xf2\xd4\xb7?'
-p217
-tp218
-Rp219
-g31
-(g13
-S'\x8a\x01\xf6\xc0\xb8y\xb3?'
-p220
-tp221
-Rp222
-tp223
-sI12
-(g31
-(g13
-S'O\xfa\xa4\x0f\xc7q\xac?'
-p224
-tp225
-Rp226
-g31
-(g13
-S'\x96\xda\x9d\xa8\x1c\xf0\xe1?'
-p227
-tp228
-Rp229
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p230
-tp231
-Rp232
-g31
-(g13
-S'\xe9\xe7\xf10\xc8\x15\xdd?'
-p233
-tp234
-Rp235
-g31
-(g13
-S'Z\x0e\xf8\x08\xf8\x08\xcb?'
-p236
-tp237
-Rp238
-tp239
-sI13
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p240
-tp241
-Rp242
-g31
-(g13
-S'\x96\xb1\xfd\x8e\x86\x15\xe4?'
-p243
-tp244
-Rp245
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p246
-tp247
-Rp248
-g31
-(g13
-S'\xbe\xad\x96,\x94\x92\xcc?'
-p249
-tp250
-Rp251
-g31
-(g13
-S'\x84\xcdr\xc0\xb7\xd5\xc2?'
-p252
-tp253
-Rp254
-tp255
-sI14
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p256
-tp257
-Rp258
-g31
-(g13
-S'C\x1f\x8aS"v\xe5?'
-p259
-tp260
-Rp261
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p262
-tp263
-Rp264
-g31
-(g13
-S'\x92J\x9b\x0e\xc5)\xcb?'
-p265
-tp266
-Rp267
-g31
-(g13
-S'\xfay<\xccR\xbb\xb3?'
-p268
-tp269
-Rp270
-tp271
-sI15
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p272
-tp273
-Rp274
-g31
-(g13
-S'\x8f\x87\xb9\xf4\x84\x1f\xe3?'
-p275
-tp276
-Rp277
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p278
-tp279
-Rp280
-g31
-(g13
-S'\x07S\xe4\xb3\x84\xf6\xd2?'
-p281
-tp282
-Rp283
-g31
-(g13
-S'\x12\r+\xe8\xf0\x8c\xb6?'
-p284
-tp285
-Rp286
-tp287
-sI16
-(g31
-(g13
-S'\xdd\xdd\xdd\x1dl\xc1\xa6?'
-p288
-tp289
-Rp290
-g31
-(g13
-S'\xc4\\\xfay\xf4\xca\xd8?'
-p291
-tp292
-Rp293
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p294
-tp295
-Rp296
-g31
-(g13
-S'w\'\xaaX"v\xe5?'
-p297
-tp298
-Rp299
-g31
-(g13
-S'\x14\xd0\x0c\x02\x92J\xdb?'
-p300
-tp301
-Rp302
-tp303
-sI17
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p304
-tp305
-Rp306
-g31
-(g13
-S'j%bW!\xd2\xe4?'
-p307
-tp308
-Rp309
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p310
-tp311
-Rp312
-g31
-(g13
-S'v\xd5i%\x97~\xbe?'
-p313
-tp314
-Rp315
-g31
-(g13
-S'\xd1\xb0\x82\xae\xe6$\xb0?'
-p316
-tp317
-Rp318
-tp319
-sI18
-(g31
-(g13
-S'O\xfa\xa4\x0f\xc7q\xac?'
-p320
-tp321
-Rp322
-g31
-(g13
-S'\x03\x15"M\xef\x96\xd5?'
-p323
-tp324
-Rp325
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p326
-tp327
-Rp328
-g31
-(g13
-S'M^\xf0:\xb6\xdf\xe1?'
-p329
-tp330
-Rp331
-g31
-(g13
-S'\xc2=\x99\xc6\xcc\xf7\xef?'
-p332
-tp333
-Rp334
-tp335
-sI19
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p336
-tp337
-Rp338
-g31
-(g13
-S'\x13,\x8c\x9b\xb4\xe9\xe0?'
-p339
-tp340
-Rp341
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p342
-tp343
-Rp344
-g31
-(g13
-S'W"v\xd5\xef\xe8\xd5?'
-p345
-tp346
-Rp347
-g31
-(g13
-S'X\xc6\xf6;\xcb\x01\xbf?'
-p348
-tp349
-Rp350
-tp351
-sI20
-(g31
-(g13
-S'\x88\x88\x88\x08\x11\x11\xa1?'
-p352
-tp353
-Rp354
-g31
-(g13
-S'\x8dhXA\xfd<\xce?'
-p355
-tp356
-Rp357
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p358
-tp359
-Rp360
-g31
-(g13
-S'\xa9\xdd\x89*\xfd<\xee?'
-p361
-tp362
-Rp363
-g31
-(g13
-S'\xc2=\x99\xc6\xcc\xf7\xef?'
-p364
-tp365
-Rp366
-tp367
-sI21
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p368
-tp369
-Rp370
-g31
-(g13
-S'\xadD\xec\xaa$\xe7\xe6?'
-p371
-tp372
-Rp373
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p374
-tp375
-Rp376
-g31
-(g13
-S'\xc8>=GeC\xbf?'
-p377
-tp378
-Rp379
-g31
-(g13
-S'>\xc2f91\xc0\xae?'
-p380
-tp381
-Rp382
-tp383
-sI22
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p384
-tp385
-Rp386
-g31
-(g13
-S"\x04gb\x80'\xaa\xe8?"
-p387
-tp388
-Rp389
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p390
-tp391
-Rp392
-g31
-(g13
-S'\x0f!\xa9\xb4\x95\x88\xdd?'
-p393
-tp394
-Rp395
-g31
-(g13
-S'\x17jN\x02\xc1\x99\xb8?'
-p396
-tp397
-Rp398
-tp399
-sI23
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p400
-tp401
-Rp402
-g31
-(g13
-S'\xccS_\x94\xf0c\xe6?'
-p403
-tp404
-Rp405
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p406
-tp407
-Rp408
-g31
-(g13
-S"T\xb1\xd4\xee'\xfc\xc8?"
-p409
-tp410
-Rp411
-g31
-(g13
-S'\xda"\xc8\x15\x956\xad?'
-p412
-tp413
-Rp414
-tp415
-sI24
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p416
-tp417
-Rp418
-g31
-(g13
-S'\xf2Y7\x98\xef\xbf\xe5?'
-p419
-tp420
-Rp421
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p422
-tp423
-Rp424
-g31
-(g13
-S'\xe8Cq\xca\xb8y\xd3?'
-p425
-tp426
-Rp427
-g31
-(g13
-S'\xe3\xe6M\xb0\xb4\xe9\xb0?'
-p428
-tp429
-Rp430
-tp431
-sI25
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p432
-tp433
-Rp434
-g31
-(g13
-S'j%bW!\xd2\xe4?'
-p435
-tp436
-Rp437
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p438
-tp439
-Rp440
-g31
-(g13
-S'\x1b#\xf1\xb5\xb5\x8d\xd1?'
-p441
-tp442
-Rp443
-g31
-(g13
-S'\xadm\x8c\xc4T\x03\xb5?'
-p444
-tp445
-Rp446
-tp447
-sI26
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p448
-tp449
-Rp450
-g31
-(g13
-S':\t\xc4\x85\x1dk\xe2?'
-p451
-tp452
-Rp453
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p454
-tp455
-Rp456
-g31
-(g13
-S'\x07S\xe4\xb3\x84\xf6\xd2?'
-p457
-tp458
-Rp459
-g31
-(g13
-S'\xc5\x00{\xe0\xf2\xd4\xb7?'
-p460
-tp461
-Rp462
-tp463
-sI27
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p464
-tp465
-Rp466
-g31
-(g13
-S'&\x06\xd8\x03\x1e\xbd\xe2?'
-p467
-tp468
-Rp469
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p470
-tp471
-Rp472
-g31
-(g13
-S'\xe48\x8e\xe3\xb3n\xe0?'
-p473
-tp474
-Rp475
-g31
-(g13
-S'F\x90+:\xfd<\xbe?'
-p476
-tp477
-Rp478
-tp479
-sI28
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p480
-tp481
-Rp482
-g31
-(g13
-S'\xc9\x90}z\x83)\xe2?'
-p483
-tp484
-Rp485
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p486
-tp487
-Rp488
-g31
-(g13
-S'\x92J\x9b\x0e\xc5)\xcb?'
-p489
-tp490
-Rp491
-g31
-(g13
-S'5y\xc1\xeb\x8c\x16\xb8?'
-p492
-tp493
-Rp494
-tp495
-sI29
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p496
-tp497
-Rp498
-g31
-(g13
-S'>\x99\xc6\x1f\xbc\x8e\xe5?'
-p499
-tp500
-Rp501
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p502
-tp503
-Rp504
-g31
-(g13
-S"T\xb1\xd4\xee'\xfc\xc8?"
-p505
-tp506
-Rp507
-g31
-(g13
-S'\xe3\xe6M\xb0\xb4\xe9\xb0?'
-p508
-tp509
-Rp510
-tp511
-sI30
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p512
-tp513
-Rp514
-g31
-(g13
-S'\xcd \x80\x14"M\xe5?'
-p515
-tp516
-Rp517
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p518
-tp519
-Rp520
-g31
-(g13
-S'W"v\xd5\xef\xe8\xd5?'
-p521
-tp522
-Rp523
-g31
-(g13
-S'\xf9\x83{2\xff\x84\xbf?'
-p524
-tp525
-Rp526
-tp527
-sI31
-(g31
-(g13
-S'\x05[\xb0\x05l\xc1\x86?'
-p528
-tp529
-Rp530
-g31
-(g13
-S'\x08 \x054\xe8\x1a\xe1?'
-p531
-tp532
-Rp533
-g31
-(g13
-S'\xaa\xaa\xaa\x04\x00\x00\xe0?'
-p534
-tp535
-Rp536
-g31
-(g13
-S'\x07S\xe4\xb3\x84\xf6\xd2?'
-p537
-tp538
-Rp539
-g31
-(g13
-S'\xca]\x9e\xfa\xc2\xe1\xb9?'
-p540
-tp541
-Rp542
-tp543
-ssS'classifier'
-p544
-ccopy_reg
-_reconstructor
-p545
-(c__main__
-SVMClassifier
-p546
-c__builtin__
-object
-p547
-Ntp548
-Rp549
-(dp550
-S'loss'
-p551
-S'squared_hinge'
-p552
-sS'C'
-p553
-F1.0
-sS'classes_'
-p554
 g3
 (g21
 (I0
-tp555
+tp189
 g6
-tp556
-Rp557
+tp190
+Rp191
 (I1
-(I32
-tp558
-g10
-(S'i8'
-p559
-I0
-I1
-tp560
-Rp561
-(I3
-S'<'
-p562
-NNNI-1
-I-1
-I0
-tp563
-bI00
-S'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00'
-p564
-tp565
-bsS'verbose'
-p566
-I0
-sS'intercept_scaling'
-p567
-I1
-sS'dual'
-p568
-I00
-sS'fit_intercept'
-p569
+(I7
+I8
+tp192
+g13
 I01
-sS'max_iter'
-p570
-I1000
-sS'n_iter_'
-p571
-g31
-(g10
-(S'i4'
-p572
-I0
-I1
-tp573
-Rp574
-(I3
-S'<'
-p575
-NNNI-1
-I-1
-I0
-tp576
-bS'\r\x00\x00\x00'
-p577
-tp578
-Rp579
-sS'penalty'
-p580
-S'l2'
-p581
-sS'multi_class'
-p582
-S'ovr'
-p583
-sS'random_state'
-p584
-NsS'smallname'
-p585
-S'svmc'
-p586
-sS'tol'
-p587
-F0.0001
-sS'coef_'
-p588
+S'>\xa9\xa8\xaaf\x82\xf3?y\xbd9M\xa0\xd7\xe9\xbf\xb1\x8cd\xde\xff\xbc\xe5\xbf\xb1\xaf~\xde\xefF\xf6\xbf<\xef\x03\xa0h,\xaf\xbfF\xee2w@\xe2\xb2\xbf\xa0\x05\xc0BD\x83\xd8\xbf\xd5D\xe6\x97R\xe0\xd6\xbfX!=\xe0\xda\xf4\xc7?sp\xd6\x7f\x16\x04\xce\xbfg{\xcd.|\xc5\xea\xbfV\xa1N\xecz\xe5\xcc?\xf5\xbe\x19RAL\xed\xbfl\xa2\xb4\n\xbfQ\xcc?\x94\x96&\xb4\x92\xd0\xa8\xbfa\xf1u\xcd4\xf2\xb8?\xb9e\x97\xd2\x83\xcc\xf4\xbfL&\x11D\x85\xd9\x9d\xbfT\xe8\x97\xbal\xa0\xc7?Y\x82\x90\x9f\x1f*\xe2\xbf\x95\t\x96nS\xe9\x97?\xfaH\xac\tz\xfb\xdf\xbfS\xacT\xd9\xe3x\xe0?\x89\xef\xdf^d\xd4\xc5\xbfrK(\xfb};\xf8\xbf\xc3(\xbf\xfa\x8b\n\xcc?\x9b\x1d\xf4\xbam[\xe3?\x96Dk\xa9\xbeX\xe0?Y\xe4\xb9\x97AZ\xd9?\x13\xf0\x12;\xb16\xab\xbfv\xde\xf7=\xd7\xd8\xf2?g\x0b\xe8\xf7T\x82\xf1?\x1c\xe3%?\xf1\x9d\xbf\xbf\xeb\xf57\xd2\n\xd5\xdc\xbf$\xc5c$G"\xaf\xbf\r\'iQ\xa7P\xd0?\xe9\xbf\x19H;m\xea\xbfa\xa1@+P}\x00@\xd1\x7f\x99\xa1\x88(\xf4?G\xa3F\xe7\xca;\x9b\xbf\x98\xeb\xf4\xbd\xb2\xb6\xcc?ro\xa4\x05e\x82\xe3?\x11O\xfa3^|\xe7?nZ\xca\xb2T\xc8\xe3?\x8b\xd5\xed\x8a\xcd\x99\xf1?\xf8\x83\xb5\xcc\xa2\xc8\xd7?\xbakm;\xc7c\xd1?mv0\xaa;\x0e\xe1\xbf\x15\x92\xd1\n\x8e\xfe\xcd??ef+\x9a\xab\xd3?\x8bW6A<\x9f\xeb\xbf\xe0h9\xc6L\xf6\xcd\xbf\xa9\xb3T\xf5`\xe2\xd5\xbf\x0e\xfc@S0W\x8a\xbf;\xa2\xd8#or\xff\xbfH\xe4\xff\x12Jo\x9e\xbf'
+p193
+tp194
+bsS'intercept_'
+p195
 g3
 (g21
 (I0
-tp589
+tp196
 g6
-tp590
-Rp591
+tp197
+Rp198
 (I1
-(I32
-I8
-tp592
-g13
-I01
-S'\xe4\x9a\x9d\x87*\xa3\xe2\xbf\x1bR,\\)\xdd\xa1?\x89\x95&\xf8$\x1e\xc4\xbf\x7f\x04>q\xd9\x06\xd4?\xe1j\xa5\xc3t\xf6\xf0\xbf\xa0\xfeD|\xa3\x85\xe5\xbfH\x0bw\xaa\x16V\xf0\xbf]\x0f\x1a~\x12\xa3\xeb\xbf\xa4\xdbyY5\xcd\xe3\xbf-6\xb4WZ\x9c\xdb\xbf\xda\xcc\xe4EW\xc9\xf4\xbfA\xebn\x8b\xeaz\xde\xbf\xa0\xe2\xd3i\xa8\x13\xe3\xbf\x1d(w\xe8\xc4\xa2\xed?dX\x04\x134N\xb3?\xf8\xf7\xd2I\xf7\x0b\xd8\xbf\xd7\xf5\xd8\xf2P\xea\xc8\xbf\x1a^\x06\xb8!c\xbf?<\xa9\xf1\x050\x00\xcd\xbf\xfc\x0c\xc5\x9f1\x1a\xb9\xbf\x05\x1e\xcf;\x7f\x8d\xf9\xbf\x17\x86y\x81v|\xf5\xbfx\x84\x1d\x1c+\x1f\xc0?\x0c\x98\x8d\xc2\xc0r\xb2?b,xj\xe2\xb7L\xbf\xc6\xa8(yyb\xba?\x9a\xec\xb0\xbaS7\xa4\xbfP^\x16\xa2\x15\xeb\xef?>1Dl\t\xb3\xb7?D6\xac\x84;E\xe9?\xbdj\xf3u\x1bL\xe4?\x0fI\xfb\xa3\x01\x85\xd1\xbf\xd6\x0e\x91\x0b+g\xd7?\xb4!i\x11i9\xd2\xbf\x90/\xf0\xefM\xb4\xea\xbfO\xbfN\xb3\xf5N\xc5?\xca\xa6y:Q\xc8\xf7?\x80\x97\xd7\xfc!\x89\xfa?\xbcI\xd2~U\xd6\x87?G\x1aZqwX\xd0?\xfa\xaaK\x19\xc0M\xd1?z\xc8\xc4\x83\xeb\xa8\xd9?U(H#\x976\xda?\xf4\xd5\xe0\xd1\xfe\xbd\xfd?\xa1\xb7\x1e\xcc\x9e-\xd0?*\xbbv\x0bHv\xc3?\x1b\xb8\xe7\x07\x8a\x97\xe2\xbf#\xb6J\xff\x86e\xcf?jn\x96L\xd0\n\xf8?T\t~n\x8a\xfb\xe0?y\xbc^\xb6\x93c\xd1?\xe4\x08\x07\xc27\x9f\xcb?\xb7\xda&\xdb\xc3\x9f\xd6?\x92\xe8\xff\xf4\xed\xd0\xcd\xbfZ\xec{\x9a\x85\xff\xeb?\xd2\xbc\xd62\x11\xe1\xd5\xbf\x01Jij\x18\xfb\xbb\xbf\xe6\x9b\xa8$\xcc\xff\xd0?\xb4\x91\xe4\x91l\x04\xe4?\xc5\x8c\xc5r\xdfs\xfa?G\x92\xba@\xf4\xe8\xd2\xbf\xc7\xb3j\xf6\xa8\xd3Z?W\xbc\xdfem1\xec\xbfz\xad\x83Q\x15\x95\xe4?\nn\xbcj\x1c\xad\xe2?\x96\\\xcc\xc4#{\xdd?\x7f\xf0?\x85vn\xbb?\xfb\x19k}\x8e\xae\xe1?\x05\xcdf\xdd\x05A\xba\xbf\x01\xea\xad\x87.\xde\xe0\xbf\x8e\xe1\xdb)\xfd\xa6\xa0\xbf\xcafQ\x14\x82=\xba\xbf\x89\xd8\xef\x9a.\xac\xf8\xbfC\xcdF>~\x12\xcf\xbf\xca\x13u3\x01\xf1\xc5?F\xd3s\xd27\x1f\xfb\xbf\xbf\xda\x00\x82R\x85\xe6\xbf\x17\xda\x10Yr\xbd\xda\xbf?\x96\x1aaDh\xd2\xbf\x8b`\xab\x8d\x0er\xeb?\x8d\xe0\xdbF\xf8h\xe6\xbf\x1aI{\\\x19=\xba\xbf\xc6\x80\x18L\x88\xe1\xaa?{#*m|\x86\xc7? \xffn\xb1\xc4\x1f\xdd\xbf\xfai\xee\xb2\'\xed\xf6?\x9d\xa5\x7fC\x16\xe2\xfd?\xba\x99!\x9e\xb7\xa8\xe2?6Q\x99l\x81u\xc8\xbf\xab\xf32\xc0$\xdd\xec\xbfx9\xdb\xef|0\xd6\xbf\x89\x03\xab\xce8A\xd5?\xff\xff\xd6&\x14I\xee\xbf+\xcdz/@\xaf\xef?E\x9a\xfb\xe8\x94\x0f\xd8\xbf+\xc1\xf9\xdc\xb0C\xef\xbf!9;\n\xd3\x8d\xae\xbf\xca\x18Ts\xf6\xbb\xd1\xbf\xdc&0\x1c\xb2\x80\xdf?U@qX\xf2\x8d\xd4?\x9f\x9c\x9e\xd1\xbb\xfc\xe4?6\xc5\x08\x12\x03\xac\xba\xbfw\xee@\xed\x98\x9a\xf7?\x120\x9c\x11\xc0\x01\xc7?\xb8B\xb4\xf0\xfc\x12\xcb\xbfs\x10R\x0c\xf0\x0c\xe6\xbf\x98t\xb8\xf0v\xab\xe4?\xa3\x1a\x04\x8f\xa6|\xf4\xbf\xaa\xb4\xd0\xd3H\xf3\xea?\x88\x19\xa7X\xfaK\xd8?\xd7\xbc\x9e\xc7\\\xcc\xe7?\'\x8f\xdae\x9c7\xbf\xbfa\xd49\xaf\xe1M\xf2?\xdf4%*R\x10\xeb?\xe1\xaf\xebL=\x92\xbf?\x97\x00\xa9\x82\x98|\xd7\xbf\xd5\x9bI\xa7lS\xe3\xbf,\xc26\xf9\x06\x96\xf1\xbf\x99\xdc:\xe6fa\xf2\xbf\xee_A\x87\xa1\xcb\xc2\xbf&+\x9f\xb4\xb2\xa9x\xbf\xf1\x7f\x1a{\x9f\xdd\xd9\xbfz\xc03\x10\']\xe6\xbf==\x917\x0b\x81\xff\xbf\xe5\x1e\xec\x02%\x19\xe3\xbfQ!j\xd2B\xac\xf9\xbfeUwJv\xd0\xe3?\xcc;\t\xbf\xd8\xb8\xb2?\xd3`\x8bA\xd4\x19\xe6?\xecUY\xb1\xbeO\xea\xbf\x8c C\x00\xcf\xa7\x94\xbfYKX\x8b\x0f\x90\xf3?\xe2\xa6\x02\x94\x9fg\xe5?j 5\xed&\xe2\xc6\xbf\xf9/\x92\x96\x8a\xa6\xe7?&8\xa8\xbf\x9f\xf7\x7f\xbf\x10BT&k&\xd4?U\xab \xc8\xc3\xcc\xbe\xbf\xdd_>\x95u \xd4?\xc7jJ\x7f\xc1A\xea?\x00\xdaYi\xb7\xf5\xf0\xbf^\x1e\x8eP\x88q\xd3\xbf\xae\x1a+\x86\xb4K\xd3\xbfC\xbc\x81\xe2\xbf\xf5\xf2\xbf\x0b\x18p\xe9\xe0O\xcb\xbf\x18>R\xca\xd3\x8a\xe3?\x9cGh\x19Kx\xb6?^j\xdf\xa50\xf5\x92\xbf\xdf\x93s$\xd6\xde\xb8?\xb2\xa5\xdd2^\x00\xd3\xbf)\xf4\x99\x1cG\xbd\x00\xc0E\r\x17BN\xc3\xe0?\x15\'\xac^\xfe\x17\xdd\xbfZ?\x9an\xb6b\xf8\xbf\xca\xbeQ\xcbB?\xf6\xbfm\x100\xf8\xdfd\xd3\xbf\x88q.}\xd5\xff\xd6\xbf\xcf\xdco\xf8\x83,\xe2\xbf\xe1U\xd31r/\xdc?\x93\xbe\xbe\xc4\xccy\xec?\xee{\x90\xb3#\x0e\xec?_u\x8b\x11\x97\xc7\xba?\n1lx\xae\xdf\xf0\xbf\x17\x1a\xf4\xf5\xf1\xca\xe5\xbfA\x18\x91TU\n\xf0?\xe7\x12\x02\'Vt\x02@oK0cp\xe5\xea\xbfZ5y\xa4O\xdc\xea?\x8ar\x98\x02Q\x0b\xc0\xbf\xd0F\xca\xf8c\xc0\xf6?a\x11\x0f\xfc\xad)\xe5?"\xd4\xc0\xb1"e\x00\xc0a\xff\x81\xdfe\x0b\xc7?!\xd4\x8ev\xeb\xf7\xff?:}\xc6\xb6\x9f"\xf7?\xb6.(\xfe\x9a\xe9\x04@\xb5\x00\x1b\xfe\xd0)\xf3\xbf(\x9bt\xc7uX\xf4\xbfF\x08sI\xb0\xe9\xfe?+\xc1\xe4y\xfcN\xec?\x7fI\xb9\xdc\xb3j\xf9\xbf\xf2\xd2k\xd5J:\xfa?\x83Vu\xbf\xb1\xcd\xf1\xbf!\x0e\xfa)\x15{\xea?NE\t\xeb\xb5\xfe\xdc?U3\x13\x8a]\xcc\x9c?\xa5\xc5@\xc9\xcc\x9e\xe9?oeF\x11\xf1~\x01\xc0\x07}\x9a\x97/\x1e\xe5\xbf+\xbej],\x0f\xf6\xbf$\x07fB\xde\xfb\xdf?(\xe1\xff\xf9\xd0=\xf5\xbf\x81\xeeB\xaf\xa2\x0c\xee\xbf\x92\x07\x19\x9aEn\xef\xbf~\x1bJ\xe9\x1b\xbe\xe6?\xbe\xc5\xfa\'\xbf\xd0\xe5?\x02;\xf5\xdd\xcc&\xfe?$\x14H\xbfdR\xf7?\x91ag\xbf\xa0\x16\xa8\xbf\x10\xd1\x1a\x9d\x18!\xc2?+\xc1XP\xbeS\xc1\xbf\x0f\xf5\x9c\x8c\xa1,\xd0\xbf]&?[\xee`\xef?t"9\xd5\x12\xa0\xfa?\xa8+\x07\r\xc4\xd5\xe4\xbf\x88\x15\'\x83R7\x89\xbf\xf0\x8b\xe0.n\xbf\xdb?\xefU\xeb[\x9bjb?\x031\x85z\xb2\xce\xbe\xbf\xafXhn\x81c\xfb\xbf/b\xad|\xab\xcf\n\xc0\x1cKe\x08\x19f\xf7\xbfz\xb5\xd3\xb3\x19\x01\xda\xbf\xbd\xaf36\xd2\x02\xea?\x9a+\x04\xad0;\xe9\xbf\xd0pN\xa70\xbc\xda?\xda\xc6:\x18.\xf6\xd5\xbfT\xf08\xf57\x9b\xf1\xbf\xb6\xda\x96\xbe\xb6~\xe9\xbf\xa6\x91>\xe4\x11\x7f\xdb\xbf#l\xc7E\xfcP\xb1?\x8fh\x94[\x9a\x94\xfe\xbfl\x9dU\xc4\xa4v\xf0\xbf\xc6|\xba\x93\x06i\xfc\xbf\n/<1\x87~\xa1\xbf\xcc\xe9IG\xecF\x01@\xbb\xe8>eK\x03\x00\xc0?9\x8b\x9f|i\xd4?\xe6vi\x11\xc0\x13\x07@3\x97\xcd<\x11]\xde?\xe5\xd0\x8e\x08\xd7\xfd\xf1\xbf\x8a&\xb0\xd7\x1f4\xf1\xbf\xed\xc3\x059\x94\xfb\xf9?\x0eb\xd9\x94\\K\x10@L\xb09\xcf\xdf\xf6\x07\xc0\xc1\x82\x10\x8aJ\xa2\xf9\xbf\tf\xfb\xec~\xf5\xdd\xbf\xd3\x9c"Iue\xf4?s;p\x99SP\xee?\xed\xf5\xac\x18m\'\xdb?\x11\xbd\x7f\xea\xd9\x84\xd4\xbf\x15G\x04\xba\x11\x07\x0b\xc0e\xf9(2\xbd\x9e\xd1?\xb2\xb6\x01\x16\xd4\xf1\x07\xc0W\xfe<\xf27v\xf3\xbf\xe74\xb4Ovl\xfe?s)\xe9\x92\xc4\xec\xfe\xbfO64\x14\x89\xed\xf9\xbf8\xd1\x83;C\xa9\xea\xbfv\xcc\x97B(5\n@q\x82\xf2tR\xb7\xe6\xbf\xb2YnJc\xf6\xf2?e\xc7\xce\xc1\xa9y\x01\xc0t\xa73\xa8\xd1C\xf6?\x92\xefQ\xe5\x1d"\xf6\xbf\x82T\xab\x88\xb67\x04\xc0'
-p593
-tp594
-bsS'intercept_'
-p595
-g3
-(g21
-(I0
-tp596
-g6
-tp597
-Rp598
-(I1
-(I32
-tp599
+(I7
+tp199
 g13
 I00
-S'@R\xa9\xe9uA\xfd\xbf}\x88\xe1\xb3\xfd\xa9\x00\xc0#\x8c\x96w\xd3\xa5\x03\xc0\x0c\xf3\xc6=gq\x04\xc0&y`9\xa0t\x0b\xc0\x98\xb7\xcc\x13\xbc\xf7\n\xc0\xffH\xb5\xfc\xaf\x84\x08\xc0i7dN\x177\x01\xc0\x8b$Fk\xc5\x11\x08\xc0\x02\x08\x026\xa9\xaf\x01\xc0\xe8\xf0\xf2\x8f\xbf^\x06\xc0\x8b\xdc8w\xeff\x10\xc0\x9f\xc3\xc05\xf8?\xfc\xbf[\x8dau\x85\x86\x07\xc0\xed\xcfp"Wx\x03\xc0V2\x00;\xab\x88\x05\xc0\xf9\x1f\xbc\xd9M\x8b\x05\xc0!\x9e\x1b\x1d\xa4\xfc\x04\xc0\x81x\x83\xae-\xae\x02\xc0\x1e\x1a\x1c\xcc+\xb4\xfd\xbf39\xe8\x89\xf0\x10\x0b\xc0Bb\xc8\xca\xf1\xa8\r\xc0X\x1d\xecR\x93\xfd\x08\xc0\xfe\xe4\x8e\x05\x0f\x88\xfd\xbf\xad\\\x94\xc4 \xe4\xf5\xbf@\xa7\xabE\x97j\t\xc0\xf5\xb9\xab\xb9nF\x02\xc0\x9b4\x86nj\xd7\x10\xc0\xed\xc0\xa1\xc7\x97\x14\x06\xc0\x03\xd9\x0f\xaftP\t\xc0\xaf\xea\x1a\xe5\x97h\t\xc0\x92\xbcd\xe1G\x1e\x05\xc0'
-p600
-tp601
-bsS'class_weight'
-p602
-NsbsS'feature_list'
-p603
-(lp604
+S'\x8c5o9\xc5\xe2\xc8?NPY\x16g\xb6\xeb\xbf\xf4\x84=\xa4\xc0\xf8\x08\xc0\xcb\xc4\xda\xa8\xbf\x91\x0c\xc0>\xda\x02~\xcfV\xf1\xbf\xce\xeb\xcb\xc3\xb6\xbd\x03\xc0 h\xcd\x1d%*\xfa\xbf'
+p200
+tp201
+bsS'intercept_scaling'
+p202
+I1
+sbsS'feature_list'
+p203
+(lp204
 g31
 (g10
-(S'S6'
-p605
+(S'S7'
+p205
 I0
 I1
-tp606
-Rp607
+tp206
+Rp207
 (I3
 S'|'
-p608
+p208
+NNNI7
+I1
+I0
+tp209
+bS'mfcc_12'
+p210
+tp211
+Rp212
+ag31
+(g10
+(S'S6'
+p213
+I0
+I1
+tp214
+Rp215
+(I3
+S'|'
+p216
 NNNI6
 I1
 I0
-tp609
-bS'mfcc_0'
-p610
-tp611
-Rp612
-ag31
-(g10
-(S'S7'
-p613
-I0
-I1
-tp614
-Rp615
-(I3
-S'|'
-p616
-NNNI7
-I1
-I0
-tp617
-bS'mfcc_11'
-p618
-tp619
-Rp620
+tp217
+bS'mfcc_5'
+p218
+tp219
+Rp220
 ag31
 (g10
 (S'S6'
-p621
+p221
 I0
 I1
-tp622
-Rp623
+tp222
+Rp223
 (I3
 S'|'
-p624
+p224
 NNNI6
 I1
 I0
-tp625
-bS'mfcc_2'
-p626
-tp627
-Rp628
-ag31
-(g10
-(S'S6'
-p629
-I0
-I1
-tp630
-Rp631
-(I3
-S'|'
-p632
-NNNI6
-I1
-I0
-tp633
-bS'mfcc_5'
-p634
-tp635
-Rp636
-ag31
-(g10
-(S'S6'
-p637
-I0
-I1
-tp638
-Rp639
-(I3
-S'|'
-p640
-NNNI6
-I1
-I0
-tp641
-bS'mfcc_9'
-p642
-tp643
-Rp644
+tp225
+bS'mfcc_8'
+p226
+tp227
+Rp228
 ag31
 (g10
 (S'S18'
-p645
+p229
 I0
 I1
-tp646
-Rp647
+tp230
+Rp231
 (I3
 S'|'
-p648
+p232
 NNNI18
 I1
 I0
-tp649
-bS'spectralcontrast_3'
-p650
-tp651
-Rp652
+tp233
+bS'spectralcontrast_0'
+p234
+tp235
+Rp236
 ag31
 (g10
 (S'S18'
-p653
+p237
 I0
 I1
-tp654
-Rp655
+tp238
+Rp239
 (I3
 S'|'
-p656
+p240
 NNNI18
 I1
 I0
-tp657
-bS'spectralcontrast_7'
-p658
-tp659
-Rp660
+tp241
+bS'spectralcontrast_1'
+p242
+tp243
+Rp244
 ag31
 (g10
-(S'S3'
-p661
+(S'S19'
+p245
 I0
 I1
-tp662
-Rp663
+tp246
+Rp247
 (I3
 S'|'
-p664
-NNNI3
+p248
+NNNI19
 I1
 I0
-tp665
-bS'zcr'
-p666
-tp667
-Rp668
+tp249
+bS'spectralcontrast_10'
+p250
+tp251
+Rp252
+ag31
+(g10
+(S'S18'
+p253
+I0
+I1
+tp254
+Rp255
+(I3
+S'|'
+p256
+NNNI18
+I1
+I0
+tp257
+bS'spectralcontrast_4'
+p258
+tp259
+Rp260
+ag31
+(g10
+(S'S12'
+p261
+I0
+I1
+tp262
+Rp263
+(I3
+S'|'
+p264
+NNNI12
+I1
+I0
+tp265
+bS'spectralflux'
+p266
+tp267
+Rp268
 asb.
\ No newline at end of file
Binary file experiment-reverb/code/models.pyc has changed
--- a/experiment-reverb/code/pca.py	Wed Dec 14 13:15:48 2016 +0000
+++ b/experiment-reverb/code/pca.py	Wed Dec 28 17:22:49 2016 +0000
@@ -14,7 +14,7 @@
 from numpy.linalg.linalg import eig
 from matplotlib.mlab import find
 from numpy.random import randn
-from empca import *
+#from empca import *
 
 mse = lambda A,B: ((array(A)-array(B)) ** 2).mean()
 
Binary file experiment-reverb/code/pca.pyc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/experiment-reverb/code/results.txt	Wed Dec 28 17:22:49 2016 +0000
@@ -0,0 +1,11 @@
+[II] Results (F1-Scores):
+[II] Estimator	Mean
+[II] GaussianNB	0.86	0.00495
+[II] O-V-R SVM	0.84	0.00387
+[II] Total time: 0m:1s
+[GNBC] Testing against full data:
+[II] f1-weighted: 0.893180116369
+[II] mse: 0.00311336404158
+[OVRC ] Testing against full data:
+[II] f1-weighted: 0.860462674028
+[II] mse: 0.00302753693396