3.a – INI file structure

SciScan INI files

SciScan software uses INI files to store variables and values that are needed to execute the different actions. These files will be used and/or modified by the program, depending on the hardware configuration. All Scientifica multiphoton systems are therefore driven by the same software.

If you want to drive your own hardware, you can get in touch with Scientifica and we will be happy to advise on the best approach for setting up your system.

Standalone Hardware using that file
File Galvos Resos GG RG RGG GG-GG RG-GG RGG-GG
settings_galvo  x  x
settings_reso  x  x
settings_hyperscope  x  x  x  x  x  x
settings_hyperscope_common_photostimulation  x  x  x
settings_hyperscope_galvo imaging path  x  x  x
settings_hyperscope_galvo stimulation path  x  x  x
settings_hyperscope_reso imaging path  x  x  x  x

The SciScan .ini files can be found in the INI folder in the SciScan Project folder. The .ini file is a general settings file that stores all information about:

  • How SciScan should communicate with the data acquisition system and peripheral devices
  • Which software modules are active
  • Any settings changed by the user during the last session.

A copy of the .ini file is saved alongside any image taken with the software, so that a user can look back at what settings were being used during analysis. Some sections below relate to configuring the system, while others are simply referenced after the acquisition. A basic list of rules for the .ini file are listed below:

; INI-file supports numeric, string and boolean keys

; sections are specified using: [section name]

; keys are specified using: key name = key value

; keys will be read as numeric values (double float), except:

; if “Read Key (Double).vi” returns an error, the key will be read as a string

; if key name contains the expression “name”, the key will be read as a string

; if key name ends with “path”, the key will be read as a path

; if key value contains any of the expressions “FALSE”,”False”,”false”,”TRUE”,”True”,”true”, the key will be read as a boolean

; if key value is numeric and key name contains the expression “boolean”, then key will be read as a boolean

; for comments, start line with a semicolon

SciScan includes a small program to help set up the .ini file for first use or when upgrading to a new version. This is called confirmINIsettings.vi and is located in the INI folder of the LabVIEW Project File. Please refer to the following page for instructions on setting up SciScan for the first time:

Confirm INI settings. 

settings_galvo

Standalone Galvo systems and GG HyperScope

INI file sections

Basic Settings

The .ini file’s basic settings are those which are most commonly adjusted. If using confirmINIsettings.vi  and using our wiring guide you should not need to adjust any settings other those located in this section of the .ini file.

Peripheral Settings

The Peripheral Settings section of the .ini file allows you to tell the software where it should attempt to communicate with various pieces of peripheral equipment including the XYZ stage port, intensity control options and PMT gain control. The COM Port settings listed below will be system specific but the DAQ output lines should be correct if following our Wiring Guide.

[peripheral.settings]

stage.port = “COM8”

MIC.port = “COM7”

PMT12.port = “COM6”

PMT34.port = “COM1”

MM.port = “COM1”

FPGA.device = “PXI1Slot6”

pockels.cell.ao.samples.per.s = 616979.999999999999

pixel.clock.over.pockels.cell.rate = 60.000000000000

fpga.pixels = 1560.000000000000

lasersync.enable = FALSE

external.start.trigger.enable = FALSE

aocard.model = “PXIe6341”

digitizer.model = “NI5734”

FPGA.model = “PXIe7961R”

shutter.DO = “PXI1Slot3/port0/line0”

Modules

The module sections list the optional and required modules that will run when SciScan opens. The two lists are populated by confirmINIsettings.vi. Any user-written modules can be added to SciScan’s start-up procedure by saving them in the project file and adding them to this list.

[modules]

required.modules = “z.stack.configure_crMD.vi,resonant.calculation vi_rrMD.vi,resonant.display queue to fp display_rrMD.vi,resonant.image queue to disk and to display queue_rrMD.vi,resonant.raw queue to image queue_rrMD.vi,resonant.scan.engine_1.0_rrMD.vi,resonant.z.stack.run_rrMD.vi,start_delay_autocorrect_rrMD.vi,fp button handler_crMD.vi”

optional.modules = “PositionSave_coMD.vi,shutter vi_coMD.vi,XYZ stage handler_coMD.vi,SciScript_coMD.vi,XYZ stage communication_coMD.vi,PMT communication_coMD.vi,pockelscontrol_w_blanking_1.0_roMD”

Objectives

Different objectives require different scanning parameters to obtain their optimal field of view. The Objectives section of the INI file stores this information and adds them to the drop-down list on the general settings tab. To add an objective to the software simply copy the three repeated lines of code and change the objective number. The values can be measured and calibrated while imaging and are adjusted from the AO tab. The parameters must be entered while SciScan is not running as the values get over-written every time the software is exited. Therefore, it is best to make a note of the values while setting up the objectives, exit the software and then update the INI file with the correct voltages for the objective.

[objectives]

obj1.name = “Olympus 10x”

obj1.max.field.of.view = 0.000300000000

obj1.voltage.for.max.field.of.view = 1.600000000000

obj2.name = “Nikon 20x”

obj2.max.field.of.view = 0.000740000000

obj2.voltage.for.max.field.of.view = 2.900000000000

active.objective = 2.000000000000

In the above example, two objectives are configured: a 10x and a 20x lens. To add an additional objective to the list simply duplicate the three repeated lines of code and change the objective number to the next consecutive digit. For example, to add a 16 Nikon objective to the list the following would need to be added to the objectives section:

bj3.name = “Nikon 16x”

obj3.max.field.of.view = 0.000820000000

obj3.voltage.for.max.field.of.view = 3.200000000000

Only the first line of the five is important for now, do not worry about what values are entered for the voltage values or for the field of view measurements as these will be set while imaging.

Advanced Settings

The settings in the following sections of the INI file do not need to be adjusted regularly and are, in most cases, updated through the user-interface based on the last acquisition. It is advised that the settings below are not adjusted unless confident of the effects it would have.

General Settings

The general settings section contains information entered in the general settings tab as well as information required by SciScan for image saving.

[general.settings]

root.path = “E:\\Munich”

experiment.name = “Pollen Stack Day2”

experiment.type = “XYT”

file.path = “E:\\Munich\\2014_12_02\\(20141202_04_01_24)\\(20141202_04_01_24)_Pollen_Stack_Day2_XYTZ.raw”

tiffset.exe.path = “C:\\Program Files (x86)\\GnuWin32\\bin\\tiffset.exe”

file.format = 0.000000000000

ImageJ.path = “C:\\Program Files (x86)\\ImageJ\\ImageJ.exe”

DAQ Settings

Most of the DAQ settings for the resonant scanning system are hard-coded so cannot be specified as they can in the Galvo System. Instead, the section below contains information on which channels should be recorded from and their respective inversions as well as the current start delay value.

[daq.settings]

Start.Delay = 706.000000000000

no.of.channels = 2.000000000000

frames.p.queue.item = 4.000000000000

save.ch.1 = TRUE

save.ch.2 = TRUE

save.ch.3 = FALSE

save.ch.4 = FALSE

invert.ch.1 = TRUE

invert.ch.2 = TRUE

invert.ch.3 = TRUE

invert.ch.4 = TRUE

Frame Scan Settings

Contain information regarding the last acquired image, this section can be useful for analysis. These also store values for the field of view voltages set in the AO Tab.

frames.p.sec = 30.898437500000

ZOOM = 2.400000000000

x.pixels = 512.000000000000

y.pixels = 512.000000000000

x.pixel.sz = 0.000000325521

y.pixel.sz = 0.000000325521

x.voltage = 2.005555555556

y.voltage = 0.708333333333

x.fov = 0.000166666667

y.fov = 0.000166666667

max.field.of.view = 0.000400000000

voltage.for.max.field.of.view = 1.700000000000

max.field.of.view.resonant = 0.000400000000

voltage.for.max.field.of.view.resonant = 5.000000000000

voltage.for.min.field.of.view.resonant = 3.000000000000

no..of.frames.to.acquire = 328.000000000000

x.correction = 0.000000000000

pixel.resolution = 3.000000000000

LineScan settings

Contains information for the LineScan parameters

[line.scan.settings]
max.lines.p.sec = 1000.000000000000
fill.fraction.line = 100.000000000000

Pockels Cell Control

Contains calibration information for the Pockels cell as well as the last used laser power.

[Pockels.Cell.control]
pockels.maxpower = 2.000000000000
Laser.Power = 0.000000000000
blanking.percentage = 10.000000000000

MIC Settings

Contains calibration information for the motorised intensity controller.

[MIC.settings]
MIC.maxpower = 1073.000000000000
MIC.minpower = 0.000000000000

Stage Control

Stores information about the absolute position calibration, stage speed, step size and off-axis imaging settings.

[stage.control]
step.size.xy = 50.000000000000
step.size.z = 20.000000000000
stage.speed.fast = 55005.000000000000
stage.speed.slow = 50000.000000000000
rot.horiz = 45.000000000000
rot.vert = 45.000000000000
Xoffset = -5512.500000000000
Yoffset = -9745.200000000001
Zoffset = 3101.000000000000

Slow Z Settings

Stores information regarding the last acquired Z-Stack.

[slowZ.settings]
z.spacing = 1.000000000000
no.of.planes = 41.000000000000
stack.duration = 10.574720000000
frames.per.plane = 8.000000000000

Fast Z Settings

Stores information about the last acquired piezo scan as well as scale factor selection between different types of piezo drive. See Piezo tab for more information.

[fastZ.settings]
frames.per.z.cycle = 6.000000000000
no.of.cycles.to.scan = 120.000000000000
% for P725.4 use piezo.select = TRUE
% for P725.1 use piezo.select = FALSE
piezo.select = TRUE
% to enable arbitrary scale factor for piezo, use piezo.arbitrary.enable = TRUE
piezo.arbitrary.enable = FALSE
piezo.arbitrary.val = 0.100000000000

Slider Tab Settings

Records the last known state of the slider pin tabs so that the interface starts up as you left it.

[slider tab PIN buttons]
PIN.Button.XYZ.stage.settings.slider.tab = TRUE
PIN.Button.advanced.settings.slider.tab = TRUE
PIN.Button.hist/ref.slider.tab = TRUE
PIN.Button.laser.power.slider.tab = TRUE
PIN.Button.PMT.slider.tab = TRUE

settings_reso

Basic Settings

The .ini file’s basic settings are those which are most commonly adjusted. If using confirmINIsettings.vi  and using our wiring guide you should not need to adjust any settings other those located in this section of the .ini file.

Peripheral Settings

The Peripheral Settings section of the .ini file allows you to tell the software where it should attempt to communicate with various pieces of peripheral equipment including the XYZ stage port, intensity control options and PMT gain control. The COM Port settings listed below will be system specific but the DAQ output lines should be correct if following our Wiring Guide.

[peripheral.settings]
stage.port = “COM8”
MIC.port = “COM7”
PMT12.port = “COM6”
PMT34.port = “COM1”
MM.port = “COM1”
FPGA.device = “PXI1Slot6”
pockels.cell.ao.samples.per.s = 616979.999999999999
pixel.clock.over.pockels.cell.rate = 60.000000000000
fpga.pixels = 1560.000000000000
lasersync.enable = FALSE
external.start.trigger.enable = FALSE
aocard.model = “PXIe6341”
digitizer.model = “NI5734”
FPGA.model = “PXIe7961R”
shutter.DO = “PXI1Slot3/port0/line0”

Modules

The modules sections lists the optional and required modules that will run when SciScan opens. The two lists are populated by confirmINIsettings.vi. Any user-written modules can be added to SciScan’s start-up procedure by saving them in the project file and adding them to this list.

[modules]
required.modules = “z.stack.configure_crMD.vi,resonant.calculation vi_rrMD.vi,resonant.display queue to fp display_rrMD.vi,resonant.image queue to disk and to display queue_rrMD.vi,resonant.raw queue to image queue_rrMD.vi,resonant.scan.engine_1.0_rrMD.vi,resonant.z.stack.run_rrMD.vi,start_delay_autocorrect_rrMD.vi,fp button handler_crMD.vi”
optional.modules = “PositionSave_coMD.vi,shutter vi_coMD.vi,XYZ stage handler_coMD.vi,SciScript_coMD.vi,XYZ stage communication_coMD.vi,PMT communication_coMD.vi,pockelscontrol_w_blanking_1.0_roMD”

Objectives

Different objectives require different scanning parameters to obtain their optimal field of view. The Objectives section of the INI file stores this information and adds them to the drop-down list on the general settings tab. To add an objective to the software simply copy the six repeated lines of code and change the objective number. The values can be measured and calibrated while imaging and are adjusted from the AO tab. The parameters must be entered while SciScan is not running as the values get over-written every time the software is exited. Therefore, it is best to make note of the values while setting up the objectives, exit the software and then update the INI file with the correct voltages for the objective.

[objectives]
obj1.name = “40x Olympus”
obj1.max.field.of.view = 0.000300
obj1.voltage.for.max.field.of.view = 1.600000
obj1.max.field.of.view.resonant = 0.000300
obj1.voltage.for.max.field.of.view.resonant = 5.000000
obj1.voltage.for.min.field.of.view.resonant = 6.000000
obj2.name = “60x Olympus”
obj2.max.field.of.view = 0.000280
obj2.voltage.for.max.field.of.view = 1.700000
obj2.max.field.of.view.resonant = 0.000280
obj2.voltage.for.max.field.of.view.resonant = 5.000000
obj2.voltage.for.min.field.of.view.resonant = 7.000000
active.objective = 0.000000

In the above example, two objectives are configured, a 40x and a 60x lens. To add an additional objective to the list simply duplicate the six repeated lines of code and change the objective number to the next consecutive digit. For example, to add a 20x Leica objective to the list the following would need to be added to the objectives section:

obj3.name = “20x Leica”
obj3.max.field.of.view = 0.0007000
obj3.voltage.for.max.field.of.view = 1.700000
obj3.max.field.of.view.resonant = 0.00070000
obj3.voltage.for.max.field.of.view.resonant = 3.000000
obj3.voltage.for.min.field.of.view.resonant = 5.000000

Only the first line of the five is important for now, do not worry about what values are entered for the voltage values or for the field of view measurements as these will be set while imaging.

Advanced Settings

The settings in the following sections of the INI file do not need to be adjusted regularly and are, in most cases, updated through the user-interface based on the last acquisition. It is advised that the settings below are not adjusted unless confident of the effects it would have.

General Settings

The general settings section contains information entered in the general settings tab as well as information required by SciScan for image saving.

[general.settings]
root.path = “E:\\Munich”
experiment.name = “Pollen Stack Day2”
experiment.type = “XYT”
file.path = “E:\\Munich\\2014_12_02\\(20141202_04_01_24)\\(20141202_04_01_24)_Pollen_Stack_Day2_XYTZ.raw”
tiffset.exe.path = “C:\\Program Files (x86)\\GnuWin32\\bin\\tiffset.exe”
file.format = 0.000000000000
ImageJ.path = “C:\\Program Files (x86)\\ImageJ\\ImageJ.exe”

DAQ Settings

Most of the DAQ settings for the resonant scanning system are hard-coded so cannot be specified as they can in the Galvo System. Instead, the section below contains information on which channels should be recorded from and their respective inversions, as well as the current start delay value.

[daq.settings]
Start.Delay = 706.000000000000
no.of.channels = 2.000000000000
frames.p.queue.item = 4.000000000000
save.ch.1 = TRUE
save.ch.2 = TRUE
save.ch.3 = FALSE
save.ch.4 = FALSE
invert.ch.1 = TRUE
invert.ch.2 = TRUE
invert.ch.3 = TRUE
invert.ch.4 = TRUE

Frame Scan Settings

Contains information regarding the last acquired image, this section can be useful for analysis. These also store values for the field of view voltages set in the AO Tab.

frames.p.sec = 30.898437500000
ZOOM = 2.400000000000
x.pixels = 512.000000000000
y.pixels = 512.000000000000
x.pixel.sz = 0.000000325521
y.pixel.sz = 0.000000325521
x.voltage = 2.005555555556
y.voltage = 0.708333333333
x.fov = 0.000166666667
y.fov = 0.000166666667
max.field.of.view = 0.000400000000
voltage.for.max.field.of.view = 1.700000000000
max.field.of.view.resonant = 0.000400000000
voltage.for.max.field.of.view.resonant = 5.000000000000
voltage.for.min.field.of.view.resonant = 3.000000000000
no..of.frames.to.acquire = 328.000000000000
x.correction = 0.000000000000
pixel.resolution = 3.000000000000

Pockels Cell Control

Contains calibration information for the Pockels cell as well as the last used laser power.

[Pockels.Cell.control]
pockels.maxpower = 2.000000000000
Laser.Power = 0.000000000000
blanking.percentage = 10.000000000000

MIC Settings

Contains calibration information for the motorised intensity controller.

[MIC.settings]
MIC.maxpower = 1073.000000000000
MIC.minpower = 0.000000000000

Stage Control

Stores information about the absolute position calibration, stage speed, step size and off-axis imaging settings.

[stage.control]
step.size.xy = 50.000000000000
step.size.z = 20.000000000000
stage.speed.fast = 55005.000000000000
stage.speed.slow = 50000.000000000000
rot.horiz = 45.000000000000
rot.vert = 45.000000000000
Xoffset = -5512.500000000000
Yoffset = -9745.200000000001
Zoffset = 3101.000000000000

Slow Z Settings

Stores information regarding the last acquired Z-Stack.

[slowZ.settings]
z.spacing = 1.000000000000
no.of.planes = 41.000000000000
stack.duration = 10.574720000000
frames.per.plane = 8.000000000000

Fast Z Settings

Stores information about the last acquired piezo scan as well as scale factor selection between different types of piezo drive. See Piezo tab for more information.

[fastZ.settings]
frames.per.z.cycle = 6.000000000000
no.of.cycles.to.scan = 120.000000000000
% for P725.4 use piezo.select = TRUE
% for P725.1 use piezo.select = FALSE
piezo.select = TRUE
% to enable arbitrary scale factor for piezo, use piezo.arbitrary.enable = TRUE
piezo.arbitrary.enable = FALSE
piezo.arbitrary.val = 0.100000000000

Slider Tab Settings

Records the last known state of the slider pin tabs so that the interface starts up as you left it.

[slider tab PIN buttons]
PIN.Button.XYZ.stage.settings.slider.tab = TRUE
PIN.Button.advanced.settings.slider.tab = TRUE
PIN.Button.hist/ref.slider.tab = TRUE
PIN.Button.laser.power.slider.tab = TRUE
PIN.Button.PMT.slider.tab = TRUE

settings_hyperscope

These define if the hardware is a HyperScope or not, including the type of hardware/light path in the system. They also contain the definition of the Linkbone switch COM port when required.

[hyperscope.settings]
Hyperscope = TRUE
version = “v1.3.0”
Hyperscope.type = “RGG_GG”
;Hyperscope.type can be: RGG_GG, RG_GG, GG_GG, RGG, RG (standalone), GG (standalone)
linkbone.port = “”

settings_hyperscope_common_photostimulation

Define the specific DAQ settings for the photostimulation path

[daq.settings]
;**** XY Mirrors ****
photostim.ao_XYscan.device.name = “PXI1Slot4”
photostim.ao_XYscan.ext.trigger.terminal = “PFI3”
photostim.ao_XYscan.timebase.source = “PXI_Clk10”;**** Pockels Cell ****
photostim.ao_pockels.device.name = “PXI1Slot5”
photostim.ao_pockels.channel.name = “ao1”
photostim.ao_pockels.trigger.source = “PXI_Trig5”
photostim.ao_pockels.timebase.source = “PXI_Clk10”; **** Shutter ****
photostim.do_shutter.path = “PXI1Slot4/port0/line0”;**** Gate ****
photostim.do_gate.device.name = “PXI1Slot5”;single gate digital output line (not currently used):
;photostim.do_gate.terminal = “port0/line0”;multiple lines can be used as well:
photostim.do_gate.terminal = “port0/line0:3”; **** New timebase entries for Gate ****
photostim.do_gate.timebase.source = “PXI_Clk10”
photostim.do_gate.trigger.source = “PXI_Trig5”

settings_hyperscope_galvo imaging path

Contains the same sections as the Settings_Galvo Ini files (values of the variables can be different) but includes a HyperScope section with the specific variables for the HyperScope.

; **** HyperScope ****
H.trigger.timebase.device.name = “PXI1Slot3”
H.trigger.PXI_backplane.line = “PXI_Trig4”
H.trigger.PXI_export.terminal = “PFI6”
H.trigger.PCI_import.terminal = “PFI6”
H.timebase.PXI_backplane.line = “PXI_Trig6”
H.timebase.PXI_export.terminal = “PFI0”
H.timebase.PCI_import.terminal = “PFI0”
H.ai.device.name = “Dev1”
H.ai.sampleClkOut.terminal = “PFI7”
H.ao_XYscan.device.name = “PXI1Slot3”
H.ao_pockels.device.name = “Dev1”
H.ao_pockels.channel.name = “ao0”
H.ao_pockels.trigger.source = “PFI6”
H.ao_pockels.timebase.source = “PFI0”
H.ao_piezo.device.name = “Dev1”
H.ao_piezo.channel.name = “ao1”
H.ao_piezo.trigger.source = “PFI6”
H.ao_piezo.timebase.source = “PFI0”
; **** HyperScope ****

settings_hyperscope_galvo stimulation path

Contains the same sections as the Settings_Galvo Ini files (values of the variables can be different) but includes a HyperScope section with the specific variables for the HyperScope.

; **** HyperScope ****
H.trigger.timebase.device.name = “PXI1Slot3”
H.trigger.PXI_backplane.line = “PXI_Trig4”
H.trigger.PXI_export.terminal = “PFI6”
H.trigger.PCI_import.terminal = “PFI6”
H.timebase.PXI_backplane.line = “PXI_Trig6”
H.timebase.PXI_export.terminal = “PFI0”
H.timebase.PCI_import.terminal = “PFI0”
H.ai.device.name = “Dev1”
H.ai.sampleClkOut.terminal = “PFI7”
H.ao_XYscan.device.name = “PXI1Slot3”
H.ao_pockels.device.name = “Dev1”
H.ao_pockels.channel.name = “ao0”
H.ao_pockels.trigger.source = “PFI6”
H.ao_pockels.timebase.source = “PFI0”
H.ao_piezo.device.name = “Dev1”
H.ao_piezo.channel.name = “ao1”
H.ao_piezo.trigger.source = “PFI6”
H.ao_piezo.timebase.source = “PFI0”
; **** HyperScope ****

settings_hyperscope_reso imaging path

Contains the same sections as the Settings_Reso Ini files (values of the variables can be different) but includes a HyperScope section with the specific variables for the HyperScope.

; **** HyperScope ****
H.trigger.timebase.device.name = “PXI1Slot3”
H.trigger.PXI_backplane.line = “PXI_Trig4”
H.trigger.PXI_export.terminal = “PFI6”
H.trigger.PCI_import.terminal = “PFI6”
H.timebase.PXI_backplane.line = “PXI_Clk10”
H.timebase.PXI_export.terminal = “PFI0”
H.timebase.PCI_import.terminal = “PFI0”
H.ao_Xscan.device.name = “PXI1Slot5”
H.ao_Xscan.channel.name = “ao0”
H.ao_Yscan.device.name = “PXI1Slot3”
H.ao_Yscan.channel.name = “ao1”
H.ao_Yscan.trigger.source = “PXI_Trig2”
H.ao_Yscan.timebase.source = “PXI_Trig0”
H.ao_pockels.device.name = “Dev1”
H.ao_pockels.channel.name = “ao0”
H.ao_pockels.trigger.source = “PFI6”
H.ao_pockels.timebase.source = “PFI0”
H.ao_piezo.device.name = “Dev1”
H.ao_piezo.channel.name = “ao1”
H.ao_piezo.trigger.source = “PFI6”
H.ao_piezo.timebase.source = “PFI0”
; **** HyperScope ****

Was this article helpful?

Related Articles