File MIES_Configuration.ipf

CONF Import user settings to configure paramters for Ephys experiments

Module brief description

The Configuration module allows to save and load the GUI state of complete windows including its subwindows

The main functions are CONF_SaveWindow and CONF_RestoreWindow. CONF_SaveWindow automatically detects if the current window is a DA_Ephys panel and uses the DA_Ephys GUI state savig configuration settings and saves additional information. CONF_RestoreWindow also detects if the current window is of DA_Ephys type and handles that specific for this case. CONF_RestoreDAEphys can be called directly as well if there is no panel open. It will open a new DA_Ephys panel automatically if no other viable candidate panel was found.

The GUI state is saved in a text file in json format. In the basic structure of the file the main blocks are the windows and subwindows and within are the control blocks. For notebook windows the content of the notebook is saved as plain text and restored as plain text. A bitmask parameter allows to configure which control information is saved. See WindowControlSavingMask Currently supported is Value, Position/Size, Userdata, Disabled state and Type of a control. Not implemented is e.g. Color/Background Color As Value only the V_Value and/or S_Value and/or S_DataFolder is saved. Special control properties for e.g. ListBox like V_SelCol are currently not implemented.

How GUI controls are handled can be controlled through userdata settings of each control. The following userdata settings are supported:

  • Config_NiceName: sets a human readable name of the control used in the configuration file This name may not be a duplicate of another controls name or ControlArray name. Also suffixing with “ ControlGroup” is not allowed.

  • Config_GroupPath: Sets a group path in which the control appears in the configuration file. If not set then “Generic” is used. The group path elements can not contain the ‘/’ character. Several levels can be separated by “;”, e.g. “level1;level2;”. In the configuration file the group path elements are suffixed by “ ControlGroup” which identifies them as path compared to actual control names.

  • Config_DontSave: When set to 1 the control is ignored on saving the window.

  • Config_DontRestore: When set to 1 the control is ignored on restoring the window.

  • Config_PushButtonOnRestore: Only valid with Button controls. When the button is restored a button press is issued.

  • Config_RestorePriority: Sets a double precision number that defines the order in which controls get restored. Lower numbers correspond to earlier restore. If not set a priority of Inf is used. If multiple controls have the same priority the order of restore is not defined.

  • Config_RadioCouplingFunc: A function name of a function that returns a text wave with lists of coupled CheckBoxes (aka RadioButtons). It is assumed that only one CheckBox of the group is in enabled state at the same time. See DAP_GetRadioButtonCoupling for example.

  • ControlArray: Stores a name of a group of controls. All controls with the same ControlArray name are saved as group with that name in the configuration file. ControlArrays save only values and nothing is saved if the configured WindowControlSavingMask does not include values.

  • ControlArrayIndex: Only valid if also ControlArray is set. Stores the index number of the control in its ControlArray. All member of the same ControlArray must have different indices. Currently not more than 100 controls are allowed for each ControlArray.

The function WindowtoJSON allows to give optional a list of control types that should be excluded.

If the type of the control was saved, it is checked against the GUI controls type on restore.

CheckBoxes are saved with true/false values.

For the DA_Ephys panel: The function CONF_DefaultSettings sets default values for parameters not present in the GUI.

Special mask flags:

  • EXPCONFIG_SAVE_ONLY_RELEVANT: Saves only most relevant value data of a control. It is configured in EXPCONFIG_GUI_PREFERRED

  • EXPCONFIG_SAVE_POPUPMENU_AS_STRING_ONLY: Saves value for PopupMenu only as string

  • EXPCONFIG_SAVE_POPUPMENU_AS_INDEX_ONLY: Saves value for PopupMenu only as index value

  • EXPCONFIG_MINIMIZE_ON_RESTORE: Minimize window while restoring it.

  • EXPCONFIG_SAVE_BUTTONS_ONLY_PRESSED: Saves Buttons only when its userdata Config_PushButtonOnRestore is “1”

Handling of window names on restore: The currently selected windows main window is used as reference. The main window name in the configuration file is internally replaced with the current main window. This allows to save from “DataBrowser” and load to “DataBrowser2”.

Handling of errors in input data: If input data is of unexpected format an ASSERTion or RTE is issued. The wrapping function converts the RTE to an ASSERT. The panel restore is aborted and the panel stays in its state. It gets unhided.

Default configuration for generic windows: By default only the Value property is saved and controls from EXPCONFIG_EXCLUDE_CTRLTYPES excluded.

Default configuration for DA_Ephys panel:

  • By default only the Value property is saved

  • Controls from DAEPHYS_EXCLUDE_CTRLTYPES are excluded.

  • The window is minimized while restoring

  • PopupMenu values are saved as string only

  • Buttons are only saved if its userdata Config_PushButtonOnRestore is “1”

  • Only most relevant data of a control is saved.

*_rig.json configuration files store settings that are specific to a rig. When restoring a DAEphys panel the settings from the rig file are joined with the settings in the DAEphys configuration file. Having entries for the same setting in both files is invalid and an assertion will be thrown.

Saving a DAEphys panel that was originally restored from a configuration file:

  • entries from the “Common configuration data” block are updated with the values from the previous configuration, if they already existed. New entries are set at default values.

  • entries defined in an associated rig file are removed from the DAEphys panel configuration because they would appear in both files

  • the previously used rig file is copied to the new location

  • By default for both files (DAEphys configuration and rig file) new file names are generated. If the new files already exist a save dialog is opened to allow the user to modify the path/name.

Unnamed Group

static const double CONF_AUTO_LOADER_GLOBAL = 0x0

Parameters for CONF_GetSettingsPath()

static const double CONF_AUTO_LOADER_USER = 0x1

Functions

static variable CONF_DefaultSettings()

Creates a json with default experiment configuration block.

Returns:

json with default experiment configuration

variable CONF_OpenConfigInNotebook()

Open all configuration files in plain text notebooks.

Existing notebooks with the files are brought to the front.

static wave CONF_GetConfigFiles(string customIPath = defaultValue)

Return a text wave with absolute paths to the JSON configuration files.

variable CONF_AutoLoader(string customIPath = defaultValue)

Automatically loads all *.json files from MIES Settings folder and opens and restores the corresponding windows Files are restored in case-insensitive alphanumeric order. Associated *_rig.json files are taken into account.

static string CONF_GetSettingsPath(variable type)

Returns a symbolic path to the settings folder.

Parameters:

type – One of CONF_AUTO_LOADER_GLOBAL or CONF_AUTO_LOADER_USER

Returns:

name of an igor symbolic path to the settings folder

variable CONF_SaveWindow(string fName)

Saves the GUI state of a window and all of its subwindows to a configuration file.

Parameters:

fName – file name of configuration file to save configuration

variable CONF_RestoreWindow(string fName, string rigFile = defaultValue)

Restores the GUI state of window and all of its subwindows from a configuration file. If the configuration file contains a panel type string then a new window of that type is opened and restored.

Parameters:
  • fName – file name of configuration file to read configuration

  • rigFile – [optional, default = “”] name of secondary rig configuration file with complementary data. This parameter is valid when loading for a DA_Ephys panel

static variable CONF_SaveDAEphys(string fName)

Saves the GUI state of a DA_Ephys panel to a configuration file.

Parameters:

fName – file name of configuration file to store DA_Ephys configuration

variable CONF_PrimeDeviceLists(string device)
string CONF_RestoreDAEphys(variable jsonID, string fullFilePath, variable middleOfExperiment = defaultValue, variable forceNewPanel = defaultValue)

Restores the GUI state of a DA_Ephys panel from a configuration file.

Parameters:
  • jsonID – json ID of json object to restore DA_Ephys panel from

  • fullFilePath – full file path of the file where the json object was parsed from

  • middleOfExperiment – [optional, default = 0] Allows MIES config in the middle of experiment. Instead of setting MCC parameters they are pulled from actively recording MCCs to configure MIES]

  • forceNewPanel – [optional, default = 0] When set opens always a fresh DA_Ephys panel, otherwise follows this priority order:

    • Reuses locked DA_Ephys panel with same device as saved in configuration

    • Uses open unlocked DA_Ephys panel

    • Opens new DA_Ephys panel

Returns:

name of the created DAEphys panel

static variable CONF_AddConfigFileUserData(string win, string fullFilePath, string rigFile)

Add the config file paths and SHA-256 hashes to the panel as user data.

static variable CONF_ParseJSON(string str)

Parses a json formatted string to a json object. This function shows a helpful error message if the parse fails.

Parameters:

str[in] string in json format

Returns:

jsonID of the json object

static string CONF_GetDAEphysActiveHeadstages(variable jsonID)

Retrieves list of active headstages saved in a DA_Ephys configuration file.

Parameters:

jsonID – ID of existing json

Returns:

List of active head stages

static variable CONF_RequireConfigBlockExists(variable jsonID)

Checks if EXPCONFIG_RESERVED_DATABLOCK exists in json; ASSERTion is thrown if not found.

Parameters:

jsonID – ID of existing json

static string CONF_GetStringFromSettings(variable jsonID, string keyName)

Retrieves a string value from a setting.

Parameters:
  • jsonID – ID of existing json

  • keyName – key name of setting

Returns:

string from member with keyname in the EXPCONFIG_RESERVED_DATABLOCK

static variable CONF_GetVariableFromSettings(variable jsonID, string keyName, variable defaultValue = defaultValue)

Retrieves a variable/boolean/null value from a saved control note: boolean control property values are also saved in the EXPCONFIG_FIELD_CTRLVVALUE field.

Parameters:
  • jsonID – ID of existing json

  • keyName – key name of setting

  • defaultValue – [optional, defaults to off] allows to query optional entries, if the value could not be found this is returned instead

Returns:

value of the EXPCONFIG_FIELD_CTRLVVALUE field of the control

static string CONF_FindControl(variable jsonID, string niceName)

Returns the path to the first control named nicename found in the json in all saved windows This might as well be a ControlArray.

Parameters:
  • jsonID – ID of existing json

  • niceName – nice name of control

Returns:

Path to control in json, empty string if not found

static string CONF_TraversalFinder(variable jsonID, string basePath, string niceName)

Returns the path to the first control named nicename found traversing the json starting at basePath This might as well be a ControlArray. This function runs recursively.

Parameters:
  • jsonID – ID of existing json

  • basePath – root of traversal start

  • niceName – nice name of control

Returns:

Path to control in json, empty string if not found

static wave CONF_GetWaveFromSavedControlArray(variable jsonID, string arrayName)

Retrieves a wave from a saved ControlArray It is REQUIRED that ALL ELEMENTS of the ControlArray are of NUMERIC type.

Parameters:
  • jsonID – ID of existing json

  • arrayName – name of ControlArray

Returns:

text wave with data from ControlArray

static string CONF_GetStringFromSavedControl(variable jsonID, string niceName)

Retrieves a string value from a saved control.

Parameters:
  • jsonID – ID of existing json

  • niceName – nice name of control

Returns:

value of the EXPCONFIG_FIELD_CTRLSVALUE field of the control

static variable CONF_GetVariableFromSavedControl(variable jsonID, string niceName)

Retrieves a variable value from a saved control.

Parameters:
  • jsonID – ID of existing json

  • niceName – nice name of control

Returns:

value of the EXPCONFIG_FIELD_CTRLVVALUE field of the control

static wave CONF_GetWindowNames(variable jsonID)

Returns a wave with all configuration sections ( aka control groups). This equals the top level keys without the EXPCONFIG_RESERVED_DATABLOCK key.

Parameters:

jsonID[in] ID of existing json

Returns:

Text wave with all named configuration sections

static wave CONF_GetControlArrayList(string wName)

Returns a two column free wave with ControlArrayName and associated control list from a window.

Parameters:

wName[in] Name of window

Returns:

Text wave with two columns and in each row ControlArray name (column ARRAYNAME) and control list (column CTRLNAMELIST)

static variable CONF_GatherControlsFromJSON(WaveText ctrlData, variable jsonID, string basePath)

Gathers recursively all control nice names and control paths from a configuration json by traversing all sub objects.

Parameters:
  • ctrlData[in] ctrlData wave, 2d four column text wave as created in CONF_JSONToWindow(). This wave is updated by this function.

  • jsonID[in] json object to traverse

  • basePath[in] root path for traversal

string CONF_JSONToWindow(string wName, variable restoreMask, variable jsonID)

Restores GUI state of a window from a json The following userdata properties are considered: EXPCONFIG_UDATA_EXCLUDE_RESTORE, EXPCONFIG_UDATA_RESTORE_PRIORITY It is supported that the current main reference window in the GUI changes its name. It is not supported that a not yet restored subwindow of it changes its name.

Parameters:
  • wName – main reference window name in GUI

  • restoreMask – Bit mask which properties are restored from WindowControlSavingMask constants

  • jsonID – ID of existing json

Returns:

name of main window after restore

static variable CONF_RestoreNotebookWindow(string wName, string srcWin, variable jsonID)

Restores a notebook window content.

Parameters:
  • wName – Name of notebook window in Igor

  • srcWin – Name of window in JSON

  • jsonID – Id of JSON

static string CONF_FindWindow(string winHandle, string uKey = defaultValue)

Returns the window with the set window handle.

Parameters:
  • winHandle – window handle

  • uKey – [optional, default = EXPCONFIG_UDATA_WINHANDLE] userdata key that stores the handle value

Returns:

Window name of the window with the given handle; empty string if not found.

static variable CONF_RestoreControl(string wName, variable restoreMask, variable jsonID, string ctrlName, string jsonPath = defaultValue)

Restores properties of a control from a json The following control userdata properties are considered: EXPCONFIG_UDATA_EXCLUDE_RESTORE; EXPCONFIG_UDATA_BUTTONPRESS (for Buttons)

Parameters:
  • wName – Window name

  • restoreMask – Bit mask which properties are restored from WindowControlSavingMask constants

  • jsonID – ID of existing json

  • ctrlName – Control name

  • jsonPath – [optional, default = n/a] When given: the control is expected to be a named json object (with the control nice name) If not given: the jsons second level (assuming default format) is searched for the associated object. This is slower.

variable CONF_AllWindowsToJSON(string wName, variable saveMask, string excCtrlTypes = defaultValue)

Serializes all controls of a window and its subwindows into a json object.

See also

WindowControlSavingMask

Parameters:
  • wName[in] name of main window

  • saveMask[in] bit pattern based configuration setting for saving

  • excCtrlTypes[in] [optional, default = “”], list of control type codes for excluded control types for saving e.g. “1;6;” to exclude all buttons and charts

Returns:

json ID of object where all controls where serialized into

wave CONF_GetRadioButtonCouplingProtoFunc()
variable CONF_WindowToJSON(string wName, variable saveMask, string excCtrlTypes = defaultValue)

Saves complete GUI state of a window in a json For coupled CheckBoxes aka (radio buttons) the enabled radio button is saved, the disabled is not saved. For three or more coupled CheckBoxes the first enabled radio button is saved, the disabled are not saved. For three or more coupled CheckBoxes an assertion is thrown if no CheckBox is set.

Parameters:
  • wName – Window name

  • saveMask – Bit mask which properties are saved from WindowControlSavingMask constants

  • excCtrlTypes – [optional, default = “”] List of excluded control types that are ignored

Returns:

jsonID ID of json containing the serialized GUI data

static string CONF_GetCompleteJSONCtrlPath(string path)
static variable CONF_NotebookToJSON(string wName, variable jsonID)

Adds a notebook window including content to a json.

Parameters:
  • wName – Window name

  • jsonID – ID of existing json

static variable CONF_ControlToJSON(string wName, string ctrlName, variable saveMask, variable jsonID, string excCtrlTypes, string excUserKeys)

Adds properties of a control to a json.

Parameters:
  • wName – Window name

  • ctrlName – Control name

  • saveMask – Bit mask which properties are saved from WindowControlSavingMask constants

  • jsonID – ID of existing json

  • excCtrlTypes – List of excluded control types that are ignored

  • excUserKeys – List of excluded keys of userdata fields that are ignored

static variable CONF_RestoreHeadstageAssociation(string device, variable jsonID, variable midExp)

Opens MCCs and restores Headstage Association from configuration data to DA_Ephys panel.

Parameters:
  • device[in] panel title of DA_Ephys panel

  • jsonID[in] ID of json object with configuration data

  • midExp[in] middle of experiment - uploads MCC relevant settings from panel to MCC instead

static variable CONF_OnExistSetAndActivateControlVar(string win, string ctrl, variable jsonId, string jsonPath)
static variable CONF_OnExistSetAndActivateControlStr(string win, string ctrl, variable jsonId, string jsonPath)
static variable CONF_SetDAEPhysChannelPopup(string device, string ctrl, variable jsonId, string jsonPath)
static variable CONF_GetUserPressure(string device)

Retrieves current User Pressure settings to json.

Parameters:

device[in] panel title of DA_Ephys panel

Returns:

jsonID ID of json object with user pressure configuration data

static variable CONF_RestoreUserPressure(string device, variable jsonID)

Restore User Pressure settings.

Parameters:
  • device[in] panel title of DA_Ephys panel

  • jsonID[in] ID of json object with configuration data

static variable CONF_GetAmplifierSettings(string device)

Retrieves current amplifier and pressure settings to json.

Parameters:

device[in] device

Returns:

jsonID ID of json object with user pressure configuration data

static variable CONF_RestoreAmplifierSettings(string device, variable headStage, variable jsonID, string basePath)

Restore the per headstage amplifier settings.

Parameters:
  • device[in] device

  • headStage[in] MIES headstage number, must be in the range [0, NUM_HEADSTAGES]

  • jsonID[in] ID of json object with configuration data

  • basePath[in] absolute path in the json file to search the entries

static variable CONF_FindAmpInList(variable ampSerialRef, variable ampChannelIDRef)

Find the list index of a connected amplifier serial number.

Parameters:
  • ampSerialRef – Amplifier Serial Number to search for

  • ampChannelIDRef – Headstage reference number

static variable CONF_MCC_MidExp(string device, variable headStage, variable jsonID)
variable CONF_Position_MCC_Win(string serialNum, string winTitle, string winPosition)

Position MCC windows to upper right monitor using nircmd.exe.

Parameters:
  • serialNum – Serial number of MCC

  • winTitle – Name of MCC window

  • winPosition – One of 4 monitors to position MCCs in

static variable CONF_JoinRigFile(variable jsonID, string rigFileName)

Loads, parses and joins a *_rig.json file to a main configuration file.

Parameters:
  • jsonID[in] jsonID of main configuration

  • rigFileName[in] full file path of rig file

static std::tuple<variable, string> CONF_LoadConfigUsedForDAEphysPanel(string wName, variable loadRigFile = defaultValue)

Retrieves the JSON original used to restore the DAEphys panel from the disk.

Parameters:
  • wName[in] name of DAEphys panel

  • loadRigFile[in] [optional, default 0] when set, load the rig file instead

Returns:

jsonId or NaN if data was not present

static variable CONF_TransferPreviousDAEphysJson(variable jsonId, variable prevJsonId)
static variable CONF_RemoveRigElementsFromDAEphysJson(variable jsonId, variable rigJsonId, string jsonPath = defaultValue)
static string CONF_GetDAEphysConfigurationFileNameSuggestion(string wName)
variable CONF_UpdatePackageSettingsFromConfigFiles(variable jsonIdPkg)

Loads through all config json files and synchronizes global package settings in config files (if present) to user package settings with overwrite.

Variables

static const string EXPCONFIG_FIELD_CTRLTYPE = "Type"
static const string EXPCONFIG_FIELD_CTRLVVALUE = "NumValue"
static const string EXPCONFIG_FIELD_CTRLSVALUE = "StrValue"
static const string EXPCONFIG_FIELD_CTRLSDF = "DataSource"
static const string EXPCONFIG_FIELD_CTRLDISABLED = "Disabled"
static const string EXPCONFIG_FIELD_CTRLPOSHEIGHT = "Height"
static const string EXPCONFIG_FIELD_CTRLPOSWIDTH = "Width"
static const string EXPCONFIG_FIELD_CTRLPOSTOP = "Top"
static const string EXPCONFIG_FIELD_CTRLPOSLEFT = "Left"
static const string EXPCONFIG_FIELD_CTRLPOSRIGHT = "Right"
static const string EXPCONFIG_FIELD_CTRLPOSPOS = "Pos"
static const string EXPCONFIG_FIELD_CTRLPOSALIGN = "Align"
static const string EXPCONFIG_FIELD_CTRLUSERDATA = "Userdata"
static const string EXPCONFIG_FIELD_BASE64PREFIX = "Base64 "
static const string EXPCONFIG_FIELD_CTRLARRAYVALUES = "Values"
static const string EXPCONFIG_FIELD_NOTEBOOKTEXT = "NotebookText"
static const string EXPCONFIG_UDATA_NICENAME = "Config_NiceName"
static const string EXPCONFIG_UDATA_JSONPATH = "Config_GroupPath"
static const string EXPCONFIG_UDATA_BUTTONPRESS = "Config_PushButtonOnRestore"
static const string EXPCONFIG_UDATA_RESTORE_PRIORITY = "Config_RestorePriority"
static const string EXPCONFIG_UDATA_WINHANDLE = "Config_WindowHandle"
static const string EXPCONFIG_UDATA_RADIOCOUPLING = "Config_RadioCouplingFunc"
static const string EXPCONFIG_UDATA_CTRLARRAY = "ControlArray"
static const string EXPCONFIG_UDATA_CTRLARRAYINDEX = "ControlArrayIndex"
static const double EXPCONFIG_UDATA_MAXCTRLARRAYINDEX = 100
static const double EXPCONFIG_JSON_INDENT = 4
static const string EXPCONFIG_FILEFILTER = "Configuration Files (*.json):.json;All Files:.*;"
static const string EXPCONFIG_CTRLGROUP_SUFFIX = " ControlGroup"
static const string EXPCONFIG_SETTINGS_FOLDER = "Settings"
static const string DAEPHYS_UDATA_WINHANDLE = "DAEphys_WindowHandle"
static const string DAEPHYS_HEADSTAGECTRLARRAYPREFIX = "Check_DataAcqHS"
static const string DAEPHYS_EXCLUDE_CTRLTYPES = "12;9;10;4;"
static const string EXPCONFIG_DEFAULT_CTRL_JSONPATH = "Generic"
static const string EXPCONFIG_RESERVED_DATABLOCK = "Common configuration data"
static const string EXPCONFIG_RESERVED_TAGENTRY = "Target Window Type"
static const string EXPCONFIG_EXCLUDE_USERDATA = "ResizeControlsInfo;"
static const string EXPCONFIG_EXCLUDE_CTRLTYPES = "12;9;10;"
static const string EXPCONFIG_SETTINGS_AMPTITLE = "0,1;2,3;4,5;6,7"
static const string EXPCONFIG_JSON_GLOBALPACKAGESETTINGBLOCK = "Global Package Settings"
static const string EXPCONFIG_JSON_HSASSOCBLOCK = "Headstage Association"
static const string EXPCONFIG_JSON_AMPBLOCK = "Amplifier"
static const string EXPCONFIG_JSON_ICBLOCK = "IC"
static const string EXPCONFIG_JSON_VCBLOCK = "VC"
static const string EXPCONFIG_JSON_PRESSUREBLOCK = "Pressure"
static const string EXPCONFIG_JSON_AMPSERIAL = "Serial"
static const string EXPCONFIG_JSON_AMPTITLE = "Title"
static const string EXPCONFIG_JSON_AMPCHANNEL = "Channel"
static const string EXPCONFIG_JSON_AMPVCDA = "DA"
static const string EXPCONFIG_JSON_AMPVCDAGAIN = "DA gain"
static const string EXPCONFIG_JSON_AMPVCDAUNIT = "DA unit"
static const string EXPCONFIG_JSON_AMPVCAD = "AD"
static const string EXPCONFIG_JSON_AMPVCADGAIN = "AD gain"
static const string EXPCONFIG_JSON_AMPVCADUNIT = "AD unit"
static const string EXPCONFIG_JSON_AMPICDA = "DA"
static const string EXPCONFIG_JSON_AMPICDAGAIN = "DA gain"
static const string EXPCONFIG_JSON_AMPICDAUNIT = "DA unit"
static const string EXPCONFIG_JSON_AMPICAD = "AD"
static const string EXPCONFIG_JSON_AMPICADGAIN = "AD gain"
static const string EXPCONFIG_JSON_AMPICADUNIT = "AD unit"
static const string EXPCONFIG_JSON_PRESSDEV = "Device"
static const string EXPCONFIG_JSON_PRESSDA = "DA"
static const string EXPCONFIG_JSON_PRESSAD = "AD"
static const string EXPCONFIG_JSON_PRESSDAGAIN = "DA Gain"
static const string EXPCONFIG_JSON_PRESSADGAIN = "AD Gain"
static const string EXPCONFIG_JSON_PRESSDAUNIT = "DA Unit"
static const string EXPCONFIG_JSON_PRESSADUNIT = "AD Unit"
static const string EXPCONFIG_JSON_PRESSTTLA = "TTLA"
static const string EXPCONFIG_JSON_PRESSTTLB = "TTLB"
static const string EXPCONFIG_JSON_PRESSCONSTNEG = "const double Negative"
static const string EXPCONFIG_JSON_PRESSCONSTPOS = "const double Positive"
static const string EXPCONFIG_JSON_SAVE_PATH = "Save data to"
static const string EXPCONFIG_JSON_STIMSET_NAME = "Stim set file name"
static const string EXPCONFIG_JSON_POSITION_MCC = "Position MCCs"
static const string EXPCONFIG_JSON_LOGFILE_UPLOAD = "Automatic logfile upload"
static const double EXPCONFIG_JSON_LOGFILE_UPLOAD_DEFAULT = 0
static const string EXPCONFIG_JSON_USERPRESSBLOCK = "User Pressure Devices"
static const string EXPCONFIG_JSON_USERPRESSDEV = "DAC Device"
static const string EXPCONFIG_JSON_USERPRESSDA = "DA"
static const string EXPCONFIG_JSON_AMP_HOLD_VC = "Holding"
static const string EXPCONFIG_JSON_AMP_HOLD_ENABLE_VC = "Holding Enable"
static const string EXPCONFIG_JSON_AMP_LPF = "LPF primary output"
static const string EXPCONFIG_JSON_AMP_GAIN = "Gain primary output"
static const string EXPCONFIG_JSON_AMP_PIPETTE_OFFSET_VC = "Pipette Offset"
static const string EXPCONFIG_JSON_AMP_WHOLE_CELL_CAPACITANCE = "Whole Cell Capacitance"
static const string EXPCONFIG_JSON_AMP_WHOLE_CELL_RESISTANCE = "Whole Cell Resistance"
static const string EXPCONFIG_JSON_AMP_WHOLE_CELL_ENABLE = "Whole Cell Enable"
static const string EXPCONFIG_JSON_AMP_RS_COMP_CORRECTION = "RS Compensation Correction"
static const string EXPCONFIG_JSON_AMP_RS_COMP_PREDICTION = "RS Compensation Prediction"
static const string EXPCONFIG_JSON_AMP_RS_COMP_ENABLE = "RS Compensation Enable"
static const string EXPCONFIG_JSON_AMP_COMP_CHAIN = "RS Compensation Chain"
static const string EXPCONFIG_JSON_AMP_HOLD_IC = "Holding"
static const string EXPCONFIG_JSON_AMP_HOLD_ENABLE_IC = "Holding Enable"
static const string EXPCONFIG_JSON_AMP_BRIDGE_BALANCE = "Bridge Balance"
static const string EXPCONFIG_JSON_AMP_BRIDGE_BALANCE_ENABLE = "Bridge Balance Enable"
static const string EXPCONFIG_JSON_AMP_CAP_NEUTRALIZATION = "Capacitance Neutralization"
static const string EXPCONFIG_JSON_AMP_CAP_NEUTRALIZATION_ENABLE = "Capacitance Neutralization Enable"
static const string EXPCONFIG_JSON_AMP_AUTOBIAS_V = "Autobias Voltage"
static const string EXPCONFIG_JSON_AMP_AUTOBIAS_V_RANGE = "Autobias Voltage Range"
static const string EXPCONFIG_JSON_AMP_AUTOBIAS_I_BIAS_MAX = "Autobias Current Max"
static const string EXPCONFIG_JSON_AMP_AUTOBIAS = "Autobias Enable"
static const string EXPCONFIG_JSON_AMP_PIPETTE_OFFSET_IC = "Pipette Offset"
static const string EXPCONFIG_RIGFILESUFFIX = "_rig.json"
static const double EXPCONFIG_MIDDLEEXP_OFF = 0
static const double EXPCONFIG_MIDDLEEXP_ON = 1
static const string CONF_AUTO_LOADER_USER_PATH = "C:ProgramData:AllenInstitute:MIES:Settings"