Mercurial > hg > chourdakisreiss2016
changeset 1:144fbd1d29c3
added c++ class Parameter
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 "${INPUTS}"" 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 "${INPUTS}"" 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:
--- /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:
--- /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:
--- /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∈ + }; + + 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
--- 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
--- 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()
--- /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