From a115a34824610cfdcef39c421659d9ad88d99405 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:06:29 +0200 Subject: [PATCH 01/35] ParseUnit: Prefer constants and move documentation The reference was also updated to refer to the latest version, no changes though. --- Packages/MIES/MIES_Constants.ipf | 34 +++++++++++++++++++++++++++++++ Packages/MIES/MIES_Utilities.ipf | 35 ++------------------------------ 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/Packages/MIES/MIES_Constants.ipf b/Packages/MIES/MIES_Constants.ipf index 7f89867b76..b22d101a54 100644 --- a/Packages/MIES/MIES_Constants.ipf +++ b/Packages/MIES/MIES_Constants.ipf @@ -1745,3 +1745,37 @@ Constant DECIMATION_MINMAX = 0x1 StrConstant DEFAULT_KEY_SEP = ":" StrConstant DEFAULT_LIST_SEP = ";" + +/// \rst +/// +/// ===== ====== =============== +/// Name Symbol Numerical value +/// ===== ====== =============== +/// yotta Y 1e24 +/// zetta Z 1e21 +/// exa E 1e18 +/// peta P 1e15 +/// tera T 1e12 +/// giga G 1e9 +/// mega M 1e6 +/// kilo k 1e3 +/// hecto h 1e2 +/// deca da 1e1 +/// deci d 1e-1 +/// centi c 1e-2 +/// milli m 1e-3 +/// micro mu 1e-6 +/// nano n 1e-9 +/// pico p 1e-12 +/// femto f 1e-15 +/// atto a 1e-18 +/// zepto z 1e-21 +/// yocto y 1e-24 +/// ===== ====== =============== +/// +/// \endrst +/// +/// From: 9th edition of the SI Brochure (2019), https://www.bipm.org/en/publications/si-brochure +StrConstant PREFIX_SHORT_LIST = ";Y;Z;E;P;T;G;M;k;h;da;d;c;m;mu;n;p;f;a;z;y" +StrConstant PREFIX_LONG_LIST = "one;yotta;zetta;exa;peta;tera;giga;mega;kilo;hecto;deca;deci;centi;milli;micro;nano;pico;femto;atto;zepto;yocto" +StrConstant PREFIX_VALUE_LIST = "1;1e24;1e21;1e18;1e15;1e12;1e9;1e6;1e3;1e2;1e1;1e-1;1e-2;1e-3;1e-6;1e-9;1e-12;1e-15;1e-18;1e-21;1e-24" diff --git a/Packages/MIES/MIES_Utilities.ipf b/Packages/MIES/MIES_Utilities.ipf index 6bfd21976f..b6bd59a769 100644 --- a/Packages/MIES/MIES_Utilities.ipf +++ b/Packages/MIES/MIES_Utilities.ipf @@ -2625,37 +2625,6 @@ End /// see below or [1] chapter 3 for the full list /// @param[out] numPrefix numerical value of the decimal multiplier /// @param[out] unit unit -/// -/// \rst -/// -/// ===== ====== =============== -/// Name Symbol Numerical value -/// ===== ====== =============== -/// yotta Y 1e24 -/// zetta Z 1e21 -/// exa E 1e18 -/// peta P 1e15 -/// tera T 1e12 -/// giga G 1e9 -/// mega M 1e6 -/// kilo k 1e3 -/// hecto h 1e2 -/// deca da 1e1 -/// deci d 1e-1 -/// centi c 1e-2 -/// milli m 1e-3 -/// micro mu 1e-6 -/// nano n 1e-9 -/// pico p 1e-12 -/// femto f 1e-15 -/// atto a 1e-18 -/// zepto z 1e-21 -/// yocto y 1e-24 -/// ===== ====== =============== -/// -/// \endrst -/// -/// [1]: 8th edition of the SI Brochure (2014), http://www.bipm.org/en/publications/si-brochure threadsafe Function ParseUnit(unitWithPrefix, prefix, numPrefix, unit) string unitWithPrefix string &prefix @@ -2691,8 +2660,8 @@ threadsafe Function GetDecimalMultiplierValue(prefix) return 1 endif - Make/FREE/T prefixes = {"Y", "Z", "E", "P", "T", "G", "M", "k", "h", "da", "d", "c", "m", "mu", "n", "p", "f", "a", "z", "y"} - Make/FREE/D values = {1e24, 1e21, 1e18, 1e15, 1e12, 1e9, 1e6, 1e3, 1e2, 1e1, 1e-1, 1e-2, 1e-3, 1e-6, 1e-9, 1e-12, 1e-15, 1e-18, 1e-21, 1e-24} + WAVE/T prefixes = ListToTextWave(PREFIX_SHORT_LIST, ";") + WAVE/D values = ListToNumericWave(PREFIX_VALUE_LIST, ";") FindValue/Z/TXOP=(1 + 4)/TEXT=(prefix) prefixes ASSERT_TS(V_Value != -1, "Could not find prefix") From 110108473b0a9328df2a41eba180f0ba0eaf0a91 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:09:12 +0200 Subject: [PATCH 02/35] Add constants for SI prefix conversion Time has shown that too many bugs result from wrong conversion factors between things like pA and A. We now therefore define constants for all possible variants via GenerateMultiplierConstants(). --- Packages/MIES/MIES_ConversionConstants.ipf | 451 +++++++++++++++++++++ Packages/MIES/MIES_Utilities.ipf | 25 ++ Packages/MIES_Include.ipf | 1 + Packages/Testing-MIES/UTF_Utils.ipf | 13 + tools/check-code.sh | 4 +- 5 files changed, 492 insertions(+), 2 deletions(-) create mode 100644 Packages/MIES/MIES_ConversionConstants.ipf diff --git a/Packages/MIES/MIES_ConversionConstants.ipf b/Packages/MIES/MIES_ConversionConstants.ipf new file mode 100644 index 0000000000..b846aeecf1 --- /dev/null +++ b/Packages/MIES/MIES_ConversionConstants.ipf @@ -0,0 +1,451 @@ +#pragma TextEncoding = "UTF-8" +#pragma rtGlobals=3 // Use modern global access method and strict wave access. +#pragma rtFunctionErrors=1 + +#ifdef AUTOMATED_TESTING +#pragma ModuleName=MIES_CONV +#endif + +/// @name Conversion constants for decimal multiples +/// +/// These must be used only with `*` to avoid confusion, the inverse exists +/// as well, so this is no limitation. +/// +/// Example: +/// +/// \rst +/// .. code-block:: igorpro +/// +/// // pA -> A +/// value_A = value_pA * PICO_TO_ONE +/// +/// // V -> mV +/// value_mV = value_V * ONE_TO_MILLI +/// \endrst +/// +/// Generated code from GenerateMultiplierConstants(). +/// @{ +Constant ONE_TO_YOTTA = 1e-24 +Constant ONE_TO_ZETTA = 1e-21 +Constant ONE_TO_EXA = 1e-18 +Constant ONE_TO_PETA = 1e-15 +Constant ONE_TO_TERA = 1e-12 +Constant ONE_TO_GIGA = 1e-09 +Constant ONE_TO_MEGA = 1e-06 +Constant ONE_TO_KILO = 1e-03 +Constant ONE_TO_HECTO = 1e-02 +Constant ONE_TO_DECA = 1e-01 +Constant ONE_TO_DECI = 1e+01 +Constant ONE_TO_CENTI = 1e+02 +Constant ONE_TO_MILLI = 1e+03 +Constant ONE_TO_MICRO = 1e+06 +Constant ONE_TO_NANO = 1e+09 +Constant ONE_TO_PICO = 1e+12 +Constant ONE_TO_FEMTO = 1e+15 +Constant ONE_TO_ATTO = 1e+18 +Constant ONE_TO_ZEPTO = 1e+21 +Constant ONE_TO_YOCTO = 1e+24 +Constant YOTTA_TO_ONE = 1e+24 +Constant YOTTA_TO_ZETTA = 1e+03 +Constant YOTTA_TO_EXA = 1e+06 +Constant YOTTA_TO_PETA = 1e+09 +Constant YOTTA_TO_TERA = 1e+12 +Constant YOTTA_TO_GIGA = 1e+15 +Constant YOTTA_TO_MEGA = 1e+18 +Constant YOTTA_TO_KILO = 1e+21 +Constant YOTTA_TO_HECTO = 1e+22 +Constant YOTTA_TO_DECA = 1e+23 +Constant YOTTA_TO_DECI = 1e+25 +Constant YOTTA_TO_CENTI = 1e+26 +Constant YOTTA_TO_MILLI = 1e+27 +Constant YOTTA_TO_MICRO = 1e+30 +Constant YOTTA_TO_NANO = 1e+33 +Constant YOTTA_TO_PICO = 1e+36 +Constant YOTTA_TO_FEMTO = 1e+39 +Constant YOTTA_TO_ATTO = 1e+42 +Constant YOTTA_TO_ZEPTO = 1e+45 +Constant YOTTA_TO_YOCTO = 1e+48 +Constant ZETTA_TO_ONE = 1e+21 +Constant ZETTA_TO_YOTTA = 1e-03 +Constant ZETTA_TO_EXA = 1e+03 +Constant ZETTA_TO_PETA = 1e+06 +Constant ZETTA_TO_TERA = 1e+09 +Constant ZETTA_TO_GIGA = 1e+12 +Constant ZETTA_TO_MEGA = 1e+15 +Constant ZETTA_TO_KILO = 1e+18 +Constant ZETTA_TO_HECTO = 1e+19 +Constant ZETTA_TO_DECA = 1e+20 +Constant ZETTA_TO_DECI = 1e+22 +Constant ZETTA_TO_CENTI = 1e+23 +Constant ZETTA_TO_MILLI = 1e+24 +Constant ZETTA_TO_MICRO = 1e+27 +Constant ZETTA_TO_NANO = 1e+30 +Constant ZETTA_TO_PICO = 1e+33 +Constant ZETTA_TO_FEMTO = 1e+36 +Constant ZETTA_TO_ATTO = 1e+39 +Constant ZETTA_TO_ZEPTO = 1e+42 +Constant ZETTA_TO_YOCTO = 1e+45 +Constant EXA_TO_ONE = 1e+18 +Constant EXA_TO_YOTTA = 1e-06 +Constant EXA_TO_ZETTA = 1e-03 +Constant EXA_TO_PETA = 1e+03 +Constant EXA_TO_TERA = 1e+06 +Constant EXA_TO_GIGA = 1e+09 +Constant EXA_TO_MEGA = 1e+12 +Constant EXA_TO_KILO = 1e+15 +Constant EXA_TO_HECTO = 1e+16 +Constant EXA_TO_DECA = 1e+17 +Constant EXA_TO_DECI = 1e+19 +Constant EXA_TO_CENTI = 1e+20 +Constant EXA_TO_MILLI = 1e+21 +Constant EXA_TO_MICRO = 1e+24 +Constant EXA_TO_NANO = 1e+27 +Constant EXA_TO_PICO = 1e+30 +Constant EXA_TO_FEMTO = 1e+33 +Constant EXA_TO_ATTO = 1e+36 +Constant EXA_TO_ZEPTO = 1e+39 +Constant EXA_TO_YOCTO = 1e+42 +Constant PETA_TO_ONE = 1e+15 +Constant PETA_TO_YOTTA = 1e-09 +Constant PETA_TO_ZETTA = 1e-06 +Constant PETA_TO_EXA = 1e-03 +Constant PETA_TO_TERA = 1e+03 +Constant PETA_TO_GIGA = 1e+06 +Constant PETA_TO_MEGA = 1e+09 +Constant PETA_TO_KILO = 1e+12 +Constant PETA_TO_HECTO = 1e+13 +Constant PETA_TO_DECA = 1e+14 +Constant PETA_TO_DECI = 1e+16 +Constant PETA_TO_CENTI = 1e+17 +Constant PETA_TO_MILLI = 1e+18 +Constant PETA_TO_MICRO = 1e+21 +Constant PETA_TO_NANO = 1e+24 +Constant PETA_TO_PICO = 1e+27 +Constant PETA_TO_FEMTO = 1e+30 +Constant PETA_TO_ATTO = 1e+33 +Constant PETA_TO_ZEPTO = 1e+36 +Constant PETA_TO_YOCTO = 1e+39 +Constant TERA_TO_ONE = 1e+12 +Constant TERA_TO_YOTTA = 1e-12 +Constant TERA_TO_ZETTA = 1e-09 +Constant TERA_TO_EXA = 1e-06 +Constant TERA_TO_PETA = 1e-03 +Constant TERA_TO_GIGA = 1e+03 +Constant TERA_TO_MEGA = 1e+06 +Constant TERA_TO_KILO = 1e+09 +Constant TERA_TO_HECTO = 1e+10 +Constant TERA_TO_DECA = 1e+11 +Constant TERA_TO_DECI = 1e+13 +Constant TERA_TO_CENTI = 1e+14 +Constant TERA_TO_MILLI = 1e+15 +Constant TERA_TO_MICRO = 1e+18 +Constant TERA_TO_NANO = 1e+21 +Constant TERA_TO_PICO = 1e+24 +Constant TERA_TO_FEMTO = 1e+27 +Constant TERA_TO_ATTO = 1e+30 +Constant TERA_TO_ZEPTO = 1e+33 +Constant TERA_TO_YOCTO = 1e+36 +Constant GIGA_TO_ONE = 1e+09 +Constant GIGA_TO_YOTTA = 1e-15 +Constant GIGA_TO_ZETTA = 1e-12 +Constant GIGA_TO_EXA = 1e-09 +Constant GIGA_TO_PETA = 1e-06 +Constant GIGA_TO_TERA = 1e-03 +Constant GIGA_TO_MEGA = 1e+03 +Constant GIGA_TO_KILO = 1e+06 +Constant GIGA_TO_HECTO = 1e+07 +Constant GIGA_TO_DECA = 1e+08 +Constant GIGA_TO_DECI = 1e+10 +Constant GIGA_TO_CENTI = 1e+11 +Constant GIGA_TO_MILLI = 1e+12 +Constant GIGA_TO_MICRO = 1e+15 +Constant GIGA_TO_NANO = 1e+18 +Constant GIGA_TO_PICO = 1e+21 +Constant GIGA_TO_FEMTO = 1e+24 +Constant GIGA_TO_ATTO = 1e+27 +Constant GIGA_TO_ZEPTO = 1e+30 +Constant GIGA_TO_YOCTO = 1e+33 +Constant MEGA_TO_ONE = 1e+06 +Constant MEGA_TO_YOTTA = 1e-18 +Constant MEGA_TO_ZETTA = 1e-15 +Constant MEGA_TO_EXA = 1e-12 +Constant MEGA_TO_PETA = 1e-09 +Constant MEGA_TO_TERA = 1e-06 +Constant MEGA_TO_GIGA = 1e-03 +Constant MEGA_TO_KILO = 1e+03 +Constant MEGA_TO_HECTO = 1e+04 +Constant MEGA_TO_DECA = 1e+05 +Constant MEGA_TO_DECI = 1e+07 +Constant MEGA_TO_CENTI = 1e+08 +Constant MEGA_TO_MILLI = 1e+09 +Constant MEGA_TO_MICRO = 1e+12 +Constant MEGA_TO_NANO = 1e+15 +Constant MEGA_TO_PICO = 1e+18 +Constant MEGA_TO_FEMTO = 1e+21 +Constant MEGA_TO_ATTO = 1e+24 +Constant MEGA_TO_ZEPTO = 1e+27 +Constant MEGA_TO_YOCTO = 1e+30 +Constant KILO_TO_ONE = 1e+03 +Constant KILO_TO_YOTTA = 1e-21 +Constant KILO_TO_ZETTA = 1e-18 +Constant KILO_TO_EXA = 1e-15 +Constant KILO_TO_PETA = 1e-12 +Constant KILO_TO_TERA = 1e-09 +Constant KILO_TO_GIGA = 1e-06 +Constant KILO_TO_MEGA = 1e-03 +Constant KILO_TO_HECTO = 1e+01 +Constant KILO_TO_DECA = 1e+02 +Constant KILO_TO_DECI = 1e+04 +Constant KILO_TO_CENTI = 1e+05 +Constant KILO_TO_MILLI = 1e+06 +Constant KILO_TO_MICRO = 1e+09 +Constant KILO_TO_NANO = 1e+12 +Constant KILO_TO_PICO = 1e+15 +Constant KILO_TO_FEMTO = 1e+18 +Constant KILO_TO_ATTO = 1e+21 +Constant KILO_TO_ZEPTO = 1e+24 +Constant KILO_TO_YOCTO = 1e+27 +Constant HECTO_TO_ONE = 1e+02 +Constant HECTO_TO_YOTTA = 1e-22 +Constant HECTO_TO_ZETTA = 1e-19 +Constant HECTO_TO_EXA = 1e-16 +Constant HECTO_TO_PETA = 1e-13 +Constant HECTO_TO_TERA = 1e-10 +Constant HECTO_TO_GIGA = 1e-07 +Constant HECTO_TO_MEGA = 1e-04 +Constant HECTO_TO_KILO = 1e-01 +Constant HECTO_TO_DECA = 1e+01 +Constant HECTO_TO_DECI = 1e+03 +Constant HECTO_TO_CENTI = 1e+04 +Constant HECTO_TO_MILLI = 1e+05 +Constant HECTO_TO_MICRO = 1e+08 +Constant HECTO_TO_NANO = 1e+11 +Constant HECTO_TO_PICO = 1e+14 +Constant HECTO_TO_FEMTO = 1e+17 +Constant HECTO_TO_ATTO = 1e+20 +Constant HECTO_TO_ZEPTO = 1e+23 +Constant HECTO_TO_YOCTO = 1e+26 +Constant DECA_TO_ONE = 1e+01 +Constant DECA_TO_YOTTA = 1e-23 +Constant DECA_TO_ZETTA = 1e-20 +Constant DECA_TO_EXA = 1e-17 +Constant DECA_TO_PETA = 1e-14 +Constant DECA_TO_TERA = 1e-11 +Constant DECA_TO_GIGA = 1e-08 +Constant DECA_TO_MEGA = 1e-05 +Constant DECA_TO_KILO = 1e-02 +Constant DECA_TO_HECTO = 1e-01 +Constant DECA_TO_DECI = 1e+02 +Constant DECA_TO_CENTI = 1e+03 +Constant DECA_TO_MILLI = 1e+04 +Constant DECA_TO_MICRO = 1e+07 +Constant DECA_TO_NANO = 1e+10 +Constant DECA_TO_PICO = 1e+13 +Constant DECA_TO_FEMTO = 1e+16 +Constant DECA_TO_ATTO = 1e+19 +Constant DECA_TO_ZEPTO = 1e+22 +Constant DECA_TO_YOCTO = 1e+25 +Constant DECI_TO_ONE = 1e-01 +Constant DECI_TO_YOTTA = 1e-25 +Constant DECI_TO_ZETTA = 1e-22 +Constant DECI_TO_EXA = 1e-19 +Constant DECI_TO_PETA = 1e-16 +Constant DECI_TO_TERA = 1e-13 +Constant DECI_TO_GIGA = 1e-10 +Constant DECI_TO_MEGA = 1e-07 +Constant DECI_TO_KILO = 1e-04 +Constant DECI_TO_HECTO = 1e-03 +Constant DECI_TO_DECA = 1e-02 +Constant DECI_TO_CENTI = 1e+01 +Constant DECI_TO_MILLI = 1e+02 +Constant DECI_TO_MICRO = 1e+05 +Constant DECI_TO_NANO = 1e+08 +Constant DECI_TO_PICO = 1e+11 +Constant DECI_TO_FEMTO = 1e+14 +Constant DECI_TO_ATTO = 1e+17 +Constant DECI_TO_ZEPTO = 1e+20 +Constant DECI_TO_YOCTO = 1e+23 +Constant CENTI_TO_ONE = 1e-02 +Constant CENTI_TO_YOTTA = 1e-26 +Constant CENTI_TO_ZETTA = 1e-23 +Constant CENTI_TO_EXA = 1e-20 +Constant CENTI_TO_PETA = 1e-17 +Constant CENTI_TO_TERA = 1e-14 +Constant CENTI_TO_GIGA = 1e-11 +Constant CENTI_TO_MEGA = 1e-08 +Constant CENTI_TO_KILO = 1e-05 +Constant CENTI_TO_HECTO = 1e-04 +Constant CENTI_TO_DECA = 1e-03 +Constant CENTI_TO_DECI = 1e-01 +Constant CENTI_TO_MILLI = 1e+01 +Constant CENTI_TO_MICRO = 1e+04 +Constant CENTI_TO_NANO = 1e+07 +Constant CENTI_TO_PICO = 1e+10 +Constant CENTI_TO_FEMTO = 1e+13 +Constant CENTI_TO_ATTO = 1e+16 +Constant CENTI_TO_ZEPTO = 1e+19 +Constant CENTI_TO_YOCTO = 1e+22 +Constant MILLI_TO_ONE = 1e-03 +Constant MILLI_TO_YOTTA = 1e-27 +Constant MILLI_TO_ZETTA = 1e-24 +Constant MILLI_TO_EXA = 1e-21 +Constant MILLI_TO_PETA = 1e-18 +Constant MILLI_TO_TERA = 1e-15 +Constant MILLI_TO_GIGA = 1e-12 +Constant MILLI_TO_MEGA = 1e-09 +Constant MILLI_TO_KILO = 1e-06 +Constant MILLI_TO_HECTO = 1e-05 +Constant MILLI_TO_DECA = 1e-04 +Constant MILLI_TO_DECI = 1e-02 +Constant MILLI_TO_CENTI = 1e-01 +Constant MILLI_TO_MICRO = 1e+03 +Constant MILLI_TO_NANO = 1e+06 +Constant MILLI_TO_PICO = 1e+09 +Constant MILLI_TO_FEMTO = 1e+12 +Constant MILLI_TO_ATTO = 1e+15 +Constant MILLI_TO_ZEPTO = 1e+18 +Constant MILLI_TO_YOCTO = 1e+21 +Constant MICRO_TO_ONE = 1e-06 +Constant MICRO_TO_YOTTA = 1e-30 +Constant MICRO_TO_ZETTA = 1e-27 +Constant MICRO_TO_EXA = 1e-24 +Constant MICRO_TO_PETA = 1e-21 +Constant MICRO_TO_TERA = 1e-18 +Constant MICRO_TO_GIGA = 1e-15 +Constant MICRO_TO_MEGA = 1e-12 +Constant MICRO_TO_KILO = 1e-09 +Constant MICRO_TO_HECTO = 1e-08 +Constant MICRO_TO_DECA = 1e-07 +Constant MICRO_TO_DECI = 1e-05 +Constant MICRO_TO_CENTI = 1e-04 +Constant MICRO_TO_MILLI = 1e-03 +Constant MICRO_TO_NANO = 1e+03 +Constant MICRO_TO_PICO = 1e+06 +Constant MICRO_TO_FEMTO = 1e+09 +Constant MICRO_TO_ATTO = 1e+12 +Constant MICRO_TO_ZEPTO = 1e+15 +Constant MICRO_TO_YOCTO = 1e+18 +Constant NANO_TO_ONE = 1e-09 +Constant NANO_TO_YOTTA = 1e-33 +Constant NANO_TO_ZETTA = 1e-30 +Constant NANO_TO_EXA = 1e-27 +Constant NANO_TO_PETA = 1e-24 +Constant NANO_TO_TERA = 1e-21 +Constant NANO_TO_GIGA = 1e-18 +Constant NANO_TO_MEGA = 1e-15 +Constant NANO_TO_KILO = 1e-12 +Constant NANO_TO_HECTO = 1e-11 +Constant NANO_TO_DECA = 1e-10 +Constant NANO_TO_DECI = 1e-08 +Constant NANO_TO_CENTI = 1e-07 +Constant NANO_TO_MILLI = 1e-06 +Constant NANO_TO_MICRO = 1e-03 +Constant NANO_TO_PICO = 1e+03 +Constant NANO_TO_FEMTO = 1e+06 +Constant NANO_TO_ATTO = 1e+09 +Constant NANO_TO_ZEPTO = 1e+12 +Constant NANO_TO_YOCTO = 1e+15 +Constant PICO_TO_ONE = 1e-12 +Constant PICO_TO_YOTTA = 1e-36 +Constant PICO_TO_ZETTA = 1e-33 +Constant PICO_TO_EXA = 1e-30 +Constant PICO_TO_PETA = 1e-27 +Constant PICO_TO_TERA = 1e-24 +Constant PICO_TO_GIGA = 1e-21 +Constant PICO_TO_MEGA = 1e-18 +Constant PICO_TO_KILO = 1e-15 +Constant PICO_TO_HECTO = 1e-14 +Constant PICO_TO_DECA = 1e-13 +Constant PICO_TO_DECI = 1e-11 +Constant PICO_TO_CENTI = 1e-10 +Constant PICO_TO_MILLI = 1e-09 +Constant PICO_TO_MICRO = 1e-06 +Constant PICO_TO_NANO = 1e-03 +Constant PICO_TO_FEMTO = 1e+03 +Constant PICO_TO_ATTO = 1e+06 +Constant PICO_TO_ZEPTO = 1e+09 +Constant PICO_TO_YOCTO = 1e+12 +Constant FEMTO_TO_ONE = 1e-15 +Constant FEMTO_TO_YOTTA = 1e-39 +Constant FEMTO_TO_ZETTA = 1e-36 +Constant FEMTO_TO_EXA = 1e-33 +Constant FEMTO_TO_PETA = 1e-30 +Constant FEMTO_TO_TERA = 1e-27 +Constant FEMTO_TO_GIGA = 1e-24 +Constant FEMTO_TO_MEGA = 1e-21 +Constant FEMTO_TO_KILO = 1e-18 +Constant FEMTO_TO_HECTO = 1e-17 +Constant FEMTO_TO_DECA = 1e-16 +Constant FEMTO_TO_DECI = 1e-14 +Constant FEMTO_TO_CENTI = 1e-13 +Constant FEMTO_TO_MILLI = 1e-12 +Constant FEMTO_TO_MICRO = 1e-09 +Constant FEMTO_TO_NANO = 1e-06 +Constant FEMTO_TO_PICO = 1e-03 +Constant FEMTO_TO_ATTO = 1e+03 +Constant FEMTO_TO_ZEPTO = 1e+06 +Constant FEMTO_TO_YOCTO = 1e+09 +Constant ATTO_TO_ONE = 1e-18 +Constant ATTO_TO_YOTTA = 1e-42 +Constant ATTO_TO_ZETTA = 1e-39 +Constant ATTO_TO_EXA = 1e-36 +Constant ATTO_TO_PETA = 1e-33 +Constant ATTO_TO_TERA = 1e-30 +Constant ATTO_TO_GIGA = 1e-27 +Constant ATTO_TO_MEGA = 1e-24 +Constant ATTO_TO_KILO = 1e-21 +Constant ATTO_TO_HECTO = 1e-20 +Constant ATTO_TO_DECA = 1e-19 +Constant ATTO_TO_DECI = 1e-17 +Constant ATTO_TO_CENTI = 1e-16 +Constant ATTO_TO_MILLI = 1e-15 +Constant ATTO_TO_MICRO = 1e-12 +Constant ATTO_TO_NANO = 1e-09 +Constant ATTO_TO_PICO = 1e-06 +Constant ATTO_TO_FEMTO = 1e-03 +Constant ATTO_TO_ZEPTO = 1e+03 +Constant ATTO_TO_YOCTO = 1e+06 +Constant ZEPTO_TO_ONE = 1e-21 +Constant ZEPTO_TO_YOTTA = 1e-45 +Constant ZEPTO_TO_ZETTA = 1e-42 +Constant ZEPTO_TO_EXA = 1e-39 +Constant ZEPTO_TO_PETA = 1e-36 +Constant ZEPTO_TO_TERA = 1e-33 +Constant ZEPTO_TO_GIGA = 1e-30 +Constant ZEPTO_TO_MEGA = 1e-27 +Constant ZEPTO_TO_KILO = 1e-24 +Constant ZEPTO_TO_HECTO = 1e-23 +Constant ZEPTO_TO_DECA = 1e-22 +Constant ZEPTO_TO_DECI = 1e-20 +Constant ZEPTO_TO_CENTI = 1e-19 +Constant ZEPTO_TO_MILLI = 1e-18 +Constant ZEPTO_TO_MICRO = 1e-15 +Constant ZEPTO_TO_NANO = 1e-12 +Constant ZEPTO_TO_PICO = 1e-09 +Constant ZEPTO_TO_FEMTO = 1e-06 +Constant ZEPTO_TO_ATTO = 1e-03 +Constant ZEPTO_TO_YOCTO = 1e+03 +Constant YOCTO_TO_ONE = 1e-24 +Constant YOCTO_TO_YOTTA = 1e-48 +Constant YOCTO_TO_ZETTA = 1e-45 +Constant YOCTO_TO_EXA = 1e-42 +Constant YOCTO_TO_PETA = 1e-39 +Constant YOCTO_TO_TERA = 1e-36 +Constant YOCTO_TO_GIGA = 1e-33 +Constant YOCTO_TO_MEGA = 1e-30 +Constant YOCTO_TO_KILO = 1e-27 +Constant YOCTO_TO_HECTO = 1e-26 +Constant YOCTO_TO_DECA = 1e-25 +Constant YOCTO_TO_DECI = 1e-23 +Constant YOCTO_TO_CENTI = 1e-22 +Constant YOCTO_TO_MILLI = 1e-21 +Constant YOCTO_TO_MICRO = 1e-18 +Constant YOCTO_TO_NANO = 1e-15 +Constant YOCTO_TO_PICO = 1e-12 +Constant YOCTO_TO_FEMTO = 1e-09 +Constant YOCTO_TO_ATTO = 1e-06 +Constant YOCTO_TO_ZEPTO = 1e-03 +/// @} + +Constant ONE_TO_PERCENT = 1e+02 +Constant PERCENT_TO_ONE = 1e-02 diff --git a/Packages/MIES/MIES_Utilities.ipf b/Packages/MIES/MIES_Utilities.ipf index b6bd59a769..c69a137c3d 100644 --- a/Packages/MIES/MIES_Utilities.ipf +++ b/Packages/MIES/MIES_Utilities.ipf @@ -6144,3 +6144,28 @@ Function StoreWaveOnDisk(WAVE wv, string name) KillOrMoveToTrash(wv = storedWave) RemoveEmptyDataFolder(dfr) End + +Function GenerateMultiplierConstants() + variable numElements, i, j, maxLength + string str + + WAVE/T prefixes = ListToTextWave(PREFIX_LONG_LIST, ";") + WAVE/D values = ListToNumericWave(PREFIX_VALUE_LIST, ";") + + numElements = DimSize(prefixes, ROWS) + ASSERT(DimSize(values, ROWS) == numElements, "Non matching list sizes") + + Make/FREE/N=(numElements) lengths = strlen(prefixes[p]) + maxLength = WaveMax(lengths) + + for(i = 0; i < numElements; i += 1) + for(j = 0; j < numElements; j += 1) + if( i == j) + continue + endif + + sprintf str, "Constant %*s_TO_%-*s = %.0e", maxLength, UpperStr(prefixes[i]), maxLength, UpperStr(prefixes[j]), (values[i] / values[j]) + print str + endfor + endfor +End diff --git a/Packages/MIES_Include.ipf b/Packages/MIES_Include.ipf index 54efb60c38..5a317f1257 100644 --- a/Packages/MIES_Include.ipf +++ b/Packages/MIES_Include.ipf @@ -179,6 +179,7 @@ End #include "MIES_Cache" #include "MIES_CheckInstallation" #include "MIES_Configuration" +#include "MIES_ConversionConstants" #include "MIES_Constants" #include "MIES_DAC-Hardware" #include "MIES_DAEphys" diff --git a/Packages/Testing-MIES/UTF_Utils.ipf b/Packages/Testing-MIES/UTF_Utils.ipf index 62a6fa8ac9..3a4c83b14c 100644 --- a/Packages/Testing-MIES/UTF_Utils.ipf +++ b/Packages/Testing-MIES/UTF_Utils.ipf @@ -6062,3 +6062,16 @@ Function SeSt_Works() ref = "abcd:123;" CHECK_EQUAL_STR(str, ref) End + +Function GMC_SomeVariants() + + // 1 mA -> 1e-3A + CHECK_EQUAL_VAR(MILLI_TO_ONE, 1e-3) + + // 1 MA -> 1e9 mA + CHECK_EQUAL_VAR(MEGA_TO_MILLI, 1e9) + + CHECK_EQUAL_VAR(PETA_TO_FEMTO, 1e30) + + CHECK_EQUAL_VAR(MICRO_TO_TERA, 1e-18) +End diff --git a/tools/check-code.sh b/tools/check-code.sh index cb2f4ec936..eda7d97d12 100755 --- a/tools/check-code.sh +++ b/tools/check-code.sh @@ -35,11 +35,11 @@ then ret=1 fi -matches=$(git grep $opts "^(Str)?Constant\b" '*/MIES_*.ipf' '*/UTF_*.ipf' ':^*/MIES_Constants.ipf' ':^*/UTF_HardwareMain.ipf') +matches=$(git grep $opts "^(Str)?Constant\b" '*/MIES_*.ipf' '*/UTF_*.ipf' ':^*/MIES_Constants.ipf' ':^*/MIES_ConversionConstants.ipf' ':^*/UTF_HardwareMain.ipf') if [[ -n "$matches" ]] then - echo "Global constants are only allowed in MIES_Constants.ipf and UTF_HardwareMain.ipf:" + echo "Global constants are only allowed in MIES_Constants.ipf, MIES_ConversionConstants.ipf and UTF_HardwareMain.ipf:" echo "$matches" ret=1 fi From a5827068563cdc4c83b0cc37c285165b03508129 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:24:20 +0200 Subject: [PATCH 03/35] Prefer ONE_TO_PICO over * 1e12 and / 1e-12 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 10 ++--- Packages/MIES/MIES_AnalysisFunctions.ipf | 2 +- .../MIES_AnalysisFunctions_MultiPatchSeq.ipf | 2 +- .../MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 4 +- Packages/MIES/MIES_DataAcquisition.ipf | 2 +- Packages/MIES/MIES_TestPulse.ipf | 2 +- .../UTF_MultiPatchSeqFastRheoEstimate.ipf | 38 +++++++++---------- .../Testing-MIES/UTF_PatchSeqRheobase.ipf | 22 +++++------ 8 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index 2fac3e31b7..18e0bcd52b 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -151,7 +151,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_SETWHOLECELLCOMPCAP_FUNC: return 1e-12 case MCC_GETWHOLECELLCOMPCAP_FUNC: - return 1e+12 + return ONE_TO_PICO default: return 1 break @@ -166,7 +166,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_SETHOLDING_FUNC: return 1e-12 case MCC_GETHOLDING_FUNC: - return 1e+12 + return ONE_TO_PICO case MCC_SETPIPETTEOFFSET_FUNC: return 1e-3 case MCC_GETPIPETTEOFFSET_FUNC: @@ -175,7 +175,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_SETNEUTRALIZATIONCAP_FUNC: return 1e-12 case MCC_GETNEUTRALIZATIONCAP_FUNC: - return 1e+12 + return ONE_TO_PICO default: return 1 break @@ -978,7 +978,7 @@ static Function AI_RetrieveGains(device, headstage, clampMode, ADGain, DAGain) if(tds.OperatingMode == V_CLAMP_MODE) DAGain = tds.ExtCmdSens * 1000 elseif(tds.OperatingMode == I_CLAMP_MODE || tds.OperatingMode == I_EQUAL_ZERO_MODE) - DAGain =tds.ExtCmdSens * 1e12 + DAGain = tds.ExtCmdSens * ONE_TO_PICO endif End @@ -1570,7 +1570,7 @@ Function AI_FillAndSendAmpliferSettings(device, sweepNo) ampSettingsWave[0][23][i] = tds.ScaleFactor ampSettingsWave[0][24][i] = tds.ScaleFactorUnits ampSettingsWave[0][25][i] = tds.LPFCutoff - ampSettingsWave[0][26][i] = tds.MembraneCap * 1e+12 // converts F to pF + ampSettingsWave[0][26][i] = tds.MembraneCap * ONE_TO_PICO // converts F to pF ampSettingsWave[0][27][i] = tds.ExtCmdSens ampSettingsWave[0][28][i] = tds.RawOutSignal ampSettingsWave[0][29][i] = tds.RawScaleFactor diff --git a/Packages/MIES/MIES_AnalysisFunctions.ipf b/Packages/MIES/MIES_AnalysisFunctions.ipf index 5579e76005..b3e8657c3c 100644 --- a/Packages/MIES/MIES_AnalysisFunctions.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions.ipf @@ -959,7 +959,7 @@ Function SetDAScale(device, headstage, [absolute, relative, offset, roundTopA]) ctrl = GetPanelControl(DAC, CHANNEL_TYPE_DAC, CHANNEL_CONTROL_SCALE) if(!ParamIsDefault(absolute)) - amps = absolute / 1e-12 + amps = absolute * ONE_TO_PICO elseif(!ParamIsDefault(relative)) lbl = GetSpecialControlLabel(CHANNEL_TYPE_DAC, CHANNEL_CONTROL_SCALE) amps = DAG_GetNumericalValue(device, lbl, index = DAC) * relative diff --git a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf index b960e5e8de..9f8fac01ae 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf @@ -999,7 +999,7 @@ static Function/WAVE MSQ_DS_GetDAScaleOffset(device, headstage) WAVE numericalValues = GetLBNumericalValues(device) - values[0, NUM_HEADSTAGES - 1] = MSQ_GetLBNEntryForHeadstageSCI(numericalValues, sweepNo, MSQ_FAST_RHEO_EST, MSQ_FMT_LBN_FINAL_SCALE, p) * 1e12 + values[0, NUM_HEADSTAGES - 1] = MSQ_GetLBNEntryForHeadstageSCI(numericalValues, sweepNo, MSQ_FAST_RHEO_EST, MSQ_FMT_LBN_FINAL_SCALE, p) * ONE_TO_PICO return values End diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index c1ea26de2d..62895e31ea 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -2011,7 +2011,7 @@ Function PSQ_DAScale(device, s) Make/FREE/D/N=2 W_sigma = NaN endif - fISlope[s.headstage] = coefWave[1]/1e12 * 100 + fISlope[s.headstage] = coefWave[1]/ONE_TO_PICO * 100 WAVE fitWave = $(CleanupName("fit_" + NameOfWave(spikeFrequencies), 0)) @@ -2043,7 +2043,7 @@ Function PSQ_DAScale(device, s) sprintf str, "a = %.3g +/- %.3g Hz\r", coefWave[0], W_sigma[0] textBoxString += str - sprintf str, "b = %.3g +/- %.3g Hz/pA\r", coefWave[1]/1e12, W_sigma[1]/1e12 + sprintf str, "b = %.3g +/- %.3g Hz/pA\r", coefWave[1]/ONE_TO_PICO, W_sigma[1]/ONE_TO_PICO textBoxString += str sprintf str, "Fitted Slope: %.0W1P%%\r", fISlope[s.headstage] diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index 82e00b9ea0..0276cedcd7 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -331,7 +331,7 @@ Function DQ_ApplyAutoBias(device, TPResults) DEBUGPRINT("current[A] to send=", var=current) AI_UpdateAmpModel(device, "check_DatAcq_HoldEnable", headStage, value=1, sendToAll=0) - AI_UpdateAmpModel(device, "setvar_DataAcq_Hold_IC", headstage, value=current * 1e12,sendToAll=0) + AI_UpdateAmpModel(device, "setvar_DataAcq_Hold_IC", headstage, value=current * ONE_TO_PICO,sendToAll=0) endfor End diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index a10956442a..27dab52b8b 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -646,7 +646,7 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia continue endif - TPSettings[%amplitudeIC][i] = RoundNumber(current / 1e-12, TP_SET_PRECISION) + TPSettings[%amplitudeIC][i] = RoundNumber(current * ONE_TO_PICO, TP_SET_PRECISION) endif sprintf msg, "headstage %d has failing auto TP amplitude and will use a new IC amplitude of %g", i, TPSettings[%amplitudeIC][i] diff --git a/Packages/Testing-MIES/UTF_MultiPatchSeqFastRheoEstimate.ipf b/Packages/Testing-MIES/UTF_MultiPatchSeqFastRheoEstimate.ipf index e82954cc39..5eb6a65aed 100644 --- a/Packages/Testing-MIES/UTF_MultiPatchSeqFastRheoEstimate.ipf +++ b/Packages/Testing-MIES/UTF_MultiPatchSeqFastRheoEstimate.ipf @@ -150,11 +150,11 @@ static Function MSQ_FRE1_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -240,11 +240,11 @@ static Function MSQ_FRE2_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -332,11 +332,11 @@ static Function MSQ_FRE3_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, -50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, -50, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -425,11 +425,11 @@ static Function MSQ_FRE4_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 150, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, -50, 10, 10, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -523,11 +523,11 @@ static Function MSQ_FRE5_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 150, 160, 0, 0, 0, 0}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, -50, 10, 10}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, -50, 10, 10, NaN, NaN, NaN, NaN}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -628,7 +628,7 @@ static Function MSQ_FRE6_REENTRY([str]) CHECK_WAVE(stimScale, NULL_WAVE) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, -50, 10, 10}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) @@ -729,11 +729,11 @@ static Function MSQ_FRE7_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 150, 160, 0, 0, 0, 0}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, -50, 10, 10}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, -50, 10, 10, NaN, NaN, NaN, NaN}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -829,11 +829,11 @@ static Function MSQ_FRE8_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, -50, 10, 10, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -931,11 +931,11 @@ static Function MSQ_FRE9_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) @@ -1039,11 +1039,11 @@ static Function MSQ_FRE10_REENTRY([str]) CHECK_EQUAL_WAVES(stimScale, {100, 200, 150, 160, 0, 0, 0, 0}, mode = WAVE_DATA, tol = 1e-14) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 0, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, 100, 100, 100, 100, -50, 10, 10}, mode = WAVE_DATA) WAVE/Z stepsizes = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_STEPSIZE, 1, EACH_SCI) - stepsizes *= 1e12 + stepsizes *= ONE_TO_PICO CHECK_EQUAL_WAVES(stepsizes, {100, -50, 10, 10, NaN, NaN, NaN, NaN}, mode = WAVE_DATA) WAVE/Z activeHS = GetLBNSingleEntry_IGNORE(str, sweepNo, MSQ_FMT_LBN_ACTIVE_HS, 0, SINGLE_SCI) diff --git a/Packages/Testing-MIES/UTF_PatchSeqRheobase.ipf b/Packages/Testing-MIES/UTF_PatchSeqRheobase.ipf index 8b2ff1f5bd..d1015badb6 100644 --- a/Packages/Testing-MIES/UTF_PatchSeqRheobase.ipf +++ b/Packages/Testing-MIES/UTF_PatchSeqRheobase.ipf @@ -184,7 +184,7 @@ static Function PS_RB1_REENTRY([str]) Make/D/FREE/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = PSQ_GetFinalDAScaleFake() * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = PSQ_GetFinalDAScaleFake() * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA) // no early abort on BL QC failure @@ -263,7 +263,7 @@ static Function PS_RB2_REENTRY([str]) CHECK_EQUAL_VAR(numEntries, 6) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = (p * PSQ_RB_DASCALE_STEP_LARGE + PSQ_GetFinalDAScaleFake()) * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = (p * PSQ_RB_DASCALE_STEP_LARGE + PSQ_GetFinalDAScaleFake()) * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -333,7 +333,7 @@ static Function PS_RB3_REENTRY([str]) CHECK_EQUAL_VAR(numEntries, 6) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() - p * PSQ_RB_DASCALE_STEP_LARGE) * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() - p * PSQ_RB_DASCALE_STEP_LARGE) * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -403,7 +403,7 @@ static Function PS_RB4_REENTRY([str]) CHECK_EQUAL_VAR(numEntries, 2) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() - p * PSQ_RB_DASCALE_STEP_LARGE) * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() - p * PSQ_RB_DASCALE_STEP_LARGE) * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -473,7 +473,7 @@ static Function PS_RB5_REENTRY([str]) CHECK_EQUAL_VAR(numEntries, 2) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() + p * PSQ_RB_DASCALE_STEP_LARGE) * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() + p * PSQ_RB_DASCALE_STEP_LARGE) * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -543,7 +543,7 @@ static Function PS_RB6_REENTRY([str]) CHECK_EQUAL_VAR(numEntries, 3) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() + p * PSQ_RB_DASCALE_STEP_LARGE) * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = (PSQ_GetFinalDAScaleFake() + p * PSQ_RB_DASCALE_STEP_LARGE) * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -615,8 +615,8 @@ static Function PS_RB7_REENTRY([str]) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] Make/FREE/D/N=(numEntries) stimScaleRef - stimScaleRef[0, 1] = PSQ_GetFinalDAScaleFake() * 1e12 - stimScaleRef[2, inf] = (PSQ_GetFinalDAScaleFake() + (p - 2) * PSQ_RB_DASCALE_STEP_LARGE) * 1e12 + stimScaleRef[0, 1] = PSQ_GetFinalDAScaleFake() * ONE_TO_PICO + stimScaleRef[2, inf] = (PSQ_GetFinalDAScaleFake() + (p - 2) * PSQ_RB_DASCALE_STEP_LARGE) * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -700,7 +700,7 @@ static Function PS_RB8_REENTRY([str]) stimScaleRef[1] = stimScaleRef[0] - PSQ_RB_DASCALE_STEP_LARGE stimScaleRef[2] = stimScaleRef[1] + PSQ_RB_DASCALE_STEP_SMALL stimScaleRef[3] = stimScaleRef[2] + PSQ_RB_DASCALE_STEP_SMALL - stimScaleRef *= 1e12 + stimScaleRef *= ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -777,7 +777,7 @@ static Function PS_RB9_REENTRY([str]) stimScaleRef[0] = PSQ_RB_DASCALE_STEP_LARGE stimScaleRef[1] = PSQ_RB_DASCALE_STEP_SMALL stimScaleRef[2] = 2 * PSQ_RB_DASCALE_STEP_SMALL - stimScaleRef *= 1e12 + stimScaleRef *= ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA, tol = 1e-14) @@ -928,7 +928,7 @@ static Function PS_RB11_REENTRY([str]) Make/D/FREE/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] - Make/FREE/D/N=(numEntries) stimScaleRef = PSQ_GetFinalDAScaleFake() * 1e12 + Make/FREE/D/N=(numEntries) stimScaleRef = PSQ_GetFinalDAScaleFake() * ONE_TO_PICO CHECK_EQUAL_WAVES(stimScale, stimScaleRef, mode = WAVE_DATA) // no early abort on BL QC failure From e7c01d1168ad53f252ef962c61b4a27b31b17e3a Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:24:20 +0200 Subject: [PATCH 04/35] Prefer ONE_TO_MEGA over * 1e-6 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index 18e0bcd52b..0d8f6af036 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -1578,7 +1578,7 @@ Function AI_FillAndSendAmpliferSettings(device, sweepNo) ampSettingsWave[0][31][i] = tds.HardwareType ampSettingsWave[0][32][i] = tds.SecondaryAlpha ampSettingsWave[0][33][i] = tds.SecondaryLPFCutoff - ampSettingsWave[0][34][i] = tds.SeriesResistance * 1e-6 // converts Ω to MΩ + ampSettingsWave[0][34][i] = tds.SeriesResistance * ONE_TO_MEGA // converts Ω to MΩ ampSettingsTextWave[0][0][i] = tds.OperatingModeString ampSettingsTextWave[0][1][i] = tds.ScaledOutSignalString From 73e56eae987ea765421bb6215c2560276aeaf33b Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:24:20 +0200 Subject: [PATCH 05/35] Prefer PICO_TO_ONE over * 1e-12 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 6 +++--- .../MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf | 10 +++++----- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 12 ++++++------ Packages/MIES/MIES_DataAcquisition.ipf | 2 +- Packages/MIES/MIES_MiesUtilities.ipf | 2 +- Packages/MIES/MIES_TestPulse.ipf | 4 ++-- Packages/Testing-MIES/UTF_TestNWBExportV1.ipf | 2 +- Packages/Testing-MIES/UTF_TestNWBExportV2.ipf | 2 +- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index 0d8f6af036..e47ddf6996 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -149,7 +149,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_GETWHOLECELLCOMPRESIST_FUNC: return 1e-6 case MCC_SETWHOLECELLCOMPCAP_FUNC: - return 1e-12 + return PICO_TO_ONE case MCC_GETWHOLECELLCOMPCAP_FUNC: return ONE_TO_PICO default: @@ -164,7 +164,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_AUTOBRIDGEBALANCE_FUNC: return 1e-6 case MCC_SETHOLDING_FUNC: - return 1e-12 + return PICO_TO_ONE case MCC_GETHOLDING_FUNC: return ONE_TO_PICO case MCC_SETPIPETTEOFFSET_FUNC: @@ -173,7 +173,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_AUTOPIPETTEOFFSET_FUNC: return 1e+3 case MCC_SETNEUTRALIZATIONCAP_FUNC: - return 1e-12 + return PICO_TO_ONE case MCC_GETNEUTRALIZATIONCAP_FUNC: return ONE_TO_PICO default: diff --git a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf index 9f8fac01ae..1aead24c94 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf @@ -766,7 +766,7 @@ Function MSQ_FastRheoEst(device, s) key = CreateAnaFuncLBNKey(MSQ_FAST_RHEO_EST, MSQ_FMT_LBN_STEPSIZE, query = 1) WAVE stepSize = GetLastSettingSCI(numericalValues, s.sweepNo, key, s.headstage, UNKNOWN_MODE) WAVE DAScale = GetLastSetting(numericalValues, s.sweepNo, STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE) - DAScale[] *= 1e-12 + DAScale[] *= PICO_TO_ONE totalOnsetDelay = GetTotalOnsetDelay(numericalValues, s.sweepNo) WAVE statusHSIC = DAG_GetActiveHeadstages(device, I_CLAMP_MODE) @@ -827,7 +827,7 @@ Function MSQ_FastRheoEst(device, s) ASSERT(IsFinite(newDAScaleValue), "Unexpected newDAScaleValue") - maxDAScale = AFH_GetAnalysisParamNumerical("MaximumDAScale", s.params) * 1e-12 + maxDAScale = AFH_GetAnalysisParamNumerical("MaximumDAScale", s.params) * PICO_TO_ONE if(IsFinite(maxDAScale) && newDAScaleValue > maxDAScale) rangeExceededNew[i] = 1 @@ -931,9 +931,9 @@ Function MSQ_FastRheoEst(device, s) if(WaveExists(finalDAScaleAll)) WAVE finalDAScale = ZapNaNs(finalDAScaleAll) ASSERT(DimSize(finalDAScale, ROWS) == 1, "Unexpected finalDAScale") - val = max(postDAQDAScaleFactor * finalDAScale[0], minRheoOffset * 1e-12 + finalDAScale[0]) + val = max(postDAQDAScaleFactor * finalDAScale[0], minRheoOffset * PICO_TO_ONE + finalDAScale[0]) else - val = AFH_GetAnalysisParamNumerical("PostDAQDAScaleForFailedHS", s.params) * 1e-12 + val = AFH_GetAnalysisParamNumerical("PostDAQDAScaleForFailedHS", s.params) * PICO_TO_ONE endif SetDAScale(device, i, absolute=val) @@ -1299,7 +1299,7 @@ Function MSQ_DAScale(device, s) index = mod(DAScalesIndex[i], DimSize(DAScales, ROWS)) ASSERT(isFinite(daScaleOffset[i]), "DAScale offset is non-finite") - SetDAScale(device, i, absolute=(DAScales[index] + daScaleOffset[i]) * 1e-12) + SetDAScale(device, i, absolute=(DAScales[index] + daScaleOffset[i]) * PICO_TO_ONE) DAScalesIndex[i] += 1 endfor endif diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 62895e31ea..07a474061a 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -686,7 +686,7 @@ static Function PSQ_EvaluateBaselineProperties(string device, STRUCT AnalysisFun if(HasOneValidEntry(avgCurrent)) // pA -> A - avgCurrent[] *= 1e-12 + avgCurrent[] *= PICO_TO_ONE key = CreateAnaFuncLBNKey(type, PSQ_FMT_LBN_LEAKCUR, chunk = chunk) ED_AddEntryToLabnotebook(device, key, avgCurrent, unit = "Amperes", overrideSweepNo = s.sweepNo) endif @@ -1993,7 +1993,7 @@ Function PSQ_DAScale(device, s) WAVE DAScalesLBN = GetLastSettingEachSCI(numericalValues, s.sweepNo, STIMSET_SCALE_FACTOR_KEY, \ s.headstage, DATA_ACQUISITION_MODE) ASSERT(DimSize(DAScalesLBN, ROWS) == acquiredSweepsInSet, "Mismatched row count") - DAScalesPlot[] = DAScalesLBN[p] * 1e-12 + DAScalesPlot[] = DAScalesLBN[p] * PICO_TO_ONE sprintf msg, "Spike frequency %.2W1PHz, DAScale %.2W1PA", spikeFrequencies[acquiredSweepsInSet - 1], DAScalesPlot[acquiredSweepsInSet - 1] DEBUGPRINT(msg) @@ -2169,7 +2169,7 @@ Function PSQ_DAScale(device, s) ASSERT(0, "Invalid case") break endswitch - SetDAScale(device, i, absolute=DAScale * 1e-12) + SetDAScale(device, i, absolute=DAScale * PICO_TO_ONE) endif endfor endif @@ -2331,7 +2331,7 @@ Function PSQ_SquarePulse(device, s) key = CreateAnaFuncLBNKey(PSQ_SQUARE_PULSE, PSQ_FMT_LBN_STEPSIZE, query = 1) stepSize = GetLastSettingIndepSCI(numericalValues, s.sweepNo, key, s.headstage, UNKNOWN_MODE) WAVE DAScalesLBN = GetLastSetting(numericalValues, s.sweepNo, STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE) - DAScale = DAScalesLBN[s.headstage] * 1e-12 + DAScale = DAScalesLBN[s.headstage] * PICO_TO_ONE samplingFrequencyPassed = PSQ_CheckSamplingFrequencyAndStoreInLabnotebook(device, PSQ_SQUARE_PULSE, s) @@ -2669,7 +2669,7 @@ Function PSQ_Rheobase(device, s) currentSweepHasSpike = spikeDetectionRA[numSweepsWithSpikeDetection - 1] WAVE DAScalesLBN = GetLastSetting(numericalValues, s.sweepNo, STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE) - DAScale = DAScalesLBN[s.headstage] * 1e-12 + DAScale = DAScalesLBN[s.headstage] * PICO_TO_ONE if(numSweepsWithSpikeDetection >= 2) lastSweepHasSpike = spikeDetectionRA[numSweepsWithSpikeDetection - 2] @@ -3012,7 +3012,7 @@ Function PSQ_Ramp(device, s) PGC_SetAndActivateControl(device, "check_Settings_ITITP", val = 1) PGC_SetAndActivateControl(device, "Check_Settings_InsertTP", val = 1) - SetDAScale(device, s.headstage, absolute=PSQ_RA_DASCALE_DEFAULT * 1e-12) + SetDAScale(device, s.headstage, absolute=PSQ_RA_DASCALE_DEFAULT * PICO_TO_ONE) return 0 diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index 0276cedcd7..72224a0cbd 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -278,7 +278,7 @@ Function DQ_ApplyAutoBias(device, TPResults) DEBUGPRINT("current clamp mode set in headstage", var=headStage) - maximumAutoBiasCurrent = abs(ampSettings[%AutoBiasIbiasmax][0][headStage] * 1e-12) + maximumAutoBiasCurrent = abs(ampSettings[%AutoBiasIbiasmax][0][headStage] * PICO_TO_ONE) DEBUGPRINT("maximumAutoBiasCurrent=", var=maximumAutoBiasCurrent) /// all variables holding physical units use plain values without prefixes diff --git a/Packages/MIES/MIES_MiesUtilities.ipf b/Packages/MIES/MIES_MiesUtilities.ipf index 9995337c10..57fd745735 100644 --- a/Packages/MIES/MIES_MiesUtilities.ipf +++ b/Packages/MIES/MIES_MiesUtilities.ipf @@ -5972,7 +5972,7 @@ Function CalculateTPLikePropsFromSweep(numericalValues, textualValues, sweep, de // convert from pA to A ASSERT(!cmpstr(DAunit[i], "pA"), "Unexpected DA Unit") - deltaI[i] = (elevated - baseline) * 1e-12 + deltaI[i] = (elevated - baseline) * PICO_TO_ONE resistance[i] = deltaV[i] / deltaI[i] diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index 27dab52b8b..623a9fedbb 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -570,7 +570,7 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia /// all variables holding physical units use plain values without prefixes /// e.g Amps instead of pA - maximumCurrent = abs(TPSettings[%autoAmpMaxCurrent][i] * 1e-12) + maximumCurrent = abs(TPSettings[%autoAmpMaxCurrent][i] * PICO_TO_ONE) targetVoltage = TPSettings[%autoAmpVoltage][i] * 1e-3 targetVoltageTol = TPSettings[%autoAmpVoltageRange][i] * 1e-3 @@ -639,7 +639,7 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia sprintf msg, "headstage %d: current %g, targetVoltage %g, resistance %g, scalar %g\r", i, current, targetVoltage, resistance, scalar DEBUGPRINT(msg) - current = TPSettings[%amplitudeIC][i] * 1e-12 + current * scalar + current = TPSettings[%amplitudeIC][i] * PICO_TO_ONE + current * scalar if(abs(current) > maximumCurrent) printf "Headstage %d: Not applying new amplitude of %.0W0PA as that would exceed the maximum allowed current of %.0W0PA.\r", i, current, maximumCurrent diff --git a/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf b/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf index 5d0197e88d..fa3bdbcc2c 100644 --- a/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf +++ b/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf @@ -470,7 +470,7 @@ static Function TestTimeSeries(fileID, device, groupID, channel, sweep, pxpSweep if(!cmpstr(unit_ref, "pA")) conversion = ReadAttributeAsNumber(channelGroupID, "data", "conversion") - CHECK_CLOSE_VAR(conversion, 1e-12) + CHECK_CLOSE_VAR(conversion, PICO_TO_ONE) unit = ReadTextAttributeAsString(channelGroupID, "data", "unit") base_unit_ref = "A" diff --git a/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf b/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf index ea9b918edc..a16cb5560d 100644 --- a/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf +++ b/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf @@ -491,7 +491,7 @@ static Function TestTimeSeries(fileID, filepath, device, groupID, channel, sweep if(!cmpstr(unit_ref, "pA")) conversion = ReadAttributeAsNumber(channelGroupID, "data", "conversion") - CHECK_CLOSE_VAR(conversion, 1e-12) + CHECK_CLOSE_VAR(conversion, PICO_TO_ONE) unit = ReadTextAttributeAsString(channelGroupID, "data", "unit") From f7a965f5457b480f126e6a42ca677b46b9ed87e2 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:24:20 +0200 Subject: [PATCH 06/35] Prefer MILLI_TO_ONE over * 1e-3 or / 1e3 or / 1000 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 8 ++--- .../MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 32 +++++++++---------- Packages/MIES/MIES_DataAcquisition.ipf | 6 ++-- Packages/MIES/MIES_Epochs.ipf | 4 +-- Packages/MIES/MIES_MiesUtilities.ipf | 4 +-- .../MIES/MIES_NeuroDataWithoutBorders.ipf | 2 +- Packages/MIES/MIES_Oscilloscope.ipf | 4 +-- Packages/MIES/MIES_PressureControl.ipf | 2 +- Packages/MIES/MIES_SweepFormula.ipf | 4 +-- Packages/MIES/MIES_TestPulse.ipf | 6 ++-- Packages/MIES/MIES_WaveBuilder.ipf | 4 +-- Packages/MIES/MIES_WaveBuilderPanel.ipf | 2 +- Packages/Testing-MIES/UTF_HardwareMain.ipf | 4 +-- Packages/Testing-MIES/UTF_SweepFormula.ipf | 4 +-- Packages/Testing-MIES/UTF_TestNWBExportV1.ipf | 4 +-- Packages/Testing-MIES/UTF_TestNWBExportV2.ipf | 2 +- 16 files changed, 46 insertions(+), 46 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index e47ddf6996..a70bcebae1 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -132,18 +132,18 @@ Function AI_GetMCCScale(clampMode, func) if(clampMode == V_CLAMP_MODE) switch(func) case MCC_SETHOLDING_FUNC: - return 1e-3 + return MILLI_TO_ONE case MCC_GETHOLDING_FUNC: return 1e+3 case MCC_SETPIPETTEOFFSET_FUNC: - return 1e-3 + return MILLI_TO_ONE case MCC_GETPIPETTEOFFSET_FUNC: case MCC_AUTOPIPETTEOFFSET_FUNC: return 1e+3 case MCC_SETRSCOMPBANDWIDTH_FUNC: return 1e+3 case MCC_GETRSCOMPBANDWIDTH_FUNC: - return 1e-3 + return MILLI_TO_ONE case MCC_SETWHOLECELLCOMPRESIST_FUNC: return 1e+6 case MCC_GETWHOLECELLCOMPRESIST_FUNC: @@ -168,7 +168,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_GETHOLDING_FUNC: return ONE_TO_PICO case MCC_SETPIPETTEOFFSET_FUNC: - return 1e-3 + return MILLI_TO_ONE case MCC_GETPIPETTEOFFSET_FUNC: case MCC_AUTOPIPETTEOFFSET_FUNC: return 1e+3 diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 07a474061a..9026758cf3 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -284,12 +284,12 @@ static Function PSQ_StoreRMSThresholdsInLabnotebook(string device, variable type key = CreateAnaFuncLBNKey(type, PSQ_FMT_LBN_RMS_SHORT_THRESHOLD) // mV -> V - values[headstage] = rmsShortThreshold * 1e-3 + values[headstage] = rmsShortThreshold * MILLI_TO_ONE ED_AddEntryToLabnotebook(device, key, values, unit = "V", overrideSweepNo = sweepNo) key = CreateAnaFuncLBNKey(type, PSQ_FMT_LBN_RMS_LONG_THRESHOLD) // mV -> V - values[headstage] = rmsLongThreshold * 1e-3 + values[headstage] = rmsLongThreshold * MILLI_TO_ONE ED_AddEntryToLabnotebook(device, key, values, unit = "V", overrideSweepNo = sweepNo) End @@ -535,7 +535,7 @@ static Function PSQ_EvaluateBaselineProperties(string device, STRUCT AnalysisFun ASSERT(IsFinite(DAC), "Could not determine DAC channel number for HS " + num2istr(i) + " for device " + device) epName = "Name=Baseline Chunk;Index=" + num2istr(chunk) epShortName = PSQ_BASELINE_CHUNK_SHORT_NAME_PREFIX + num2istr(chunk) - EP_AddUserEpoch(device, XOP_CHANNEL_TYPE_DAC, DAC, chunkStartTimeMax / 1E3, (chunkStartTimeMax + chunkLengthTime) / 1E3, epName, shortname = epShortName) + EP_AddUserEpoch(device, XOP_CHANNEL_TYPE_DAC, DAC, chunkStartTimeMax * MILLI_TO_ONE, (chunkStartTimeMax + chunkLengthTime) * MILLI_TO_ONE, epName, shortname = epShortName) if(chunk == 0) // store baseline RMS short/long analysis parameters in labnotebook on first use @@ -679,7 +679,7 @@ static Function PSQ_EvaluateBaselineProperties(string device, STRUCT AnalysisFun if(HasOneValidEntry(avgVoltage)) // mV -> V - avgVoltage[] *= 1e-3 + avgVoltage[] *= MILLI_TO_ONE key = CreateAnaFuncLBNKey(type, PSQ_FMT_LBN_TARGETV, chunk = chunk) ED_AddEntryToLabnotebook(device, key, avgVoltage, unit = "Volt", overrideSweepNo = s.sweepNo) endif @@ -1501,7 +1501,7 @@ static Function PSQ_CheckSamplingFrequencyAndStoreInLabnotebook(string device, v actual = PSQ_GetDefaultSamplingFrequencyForSingleHeadstage(device) * 1e3 #else // dimension delta [ms] - actual = 1.0 / (DimDelta(s.scaledDACWave, ROWS) * 1e-3) + actual = 1.0 / (DimDelta(s.scaledDACWave, ROWS) * MILLI_TO_ONE) #endif // samplingFrequency [kHz] @@ -1985,7 +1985,7 @@ Function PSQ_DAScale(device, s) WAVE pulseDuration = GetLastSettingEachSCI(numericalValues, s.sweepNo, key, s.headstage, UNKNOWN_MODE) ASSERT(DimSize(pulseDuration, ROWS) == acquiredSweepsInSet, "Mismatched row count") - spikeFrequencies[] = str2num(FloatWithMinSigDigits(spikeCount[p] / (pulseDuration[p] / 1000), numMinSignDigits = 2)) + spikeFrequencies[] = str2num(FloatWithMinSigDigits(spikeCount[p] / (pulseDuration[p] * MILLI_TO_ONE), numMinSignDigits = 2)) WAVE DAScalesPlot = GetAnalysisFuncDAScales(device, s.headstage) Redimension/N=(acquiredSweepsInSet) DAScalesPlot @@ -3243,8 +3243,8 @@ static Function PSQ_Ramp_AddEpoch(string device, variable headstage, WAVE wv, st DAC = AFH_GetDACFromHeadstage(device, headstage) ASSERT(!cmpstr(WaveUnits(wv, ROWS), "ms"), "Unexpected x unit") - epBegin = IndexToScale(wv, first, ROWS) / 1e3 - epEnd = IndexToScale(wv, last, ROWS) / 1e3 + epBegin = IndexToScale(wv, first, ROWS) * MILLI_TO_ONE + epEnd = IndexToScale(wv, last, ROWS) * MILLI_TO_ONE EP_AddUserEpoch(device, XOP_CHANNEL_TYPE_DAC, DAC, epBegin, epEnd, tags, shortName = shortName) End @@ -4020,7 +4020,7 @@ Function PSQ_Chirp(device, s) key = CreateAnaFuncLBNKey(PSQ_CHIRP, PSQ_FMT_LBN_CR_RESISTANCE) ED_AddEntryToLabnotebook(device, key, result, overrideSweepNo = s.sweepNo, unit = "Ohm") - targetVoltage = ((outerRelativeBound + innerRelativeBound) / 2) * 1e-3 + targetVoltage = ((outerRelativeBound + innerRelativeBound) / 2) * MILLI_TO_ONE initialDAScale = targetVoltage / resistance sprintf msg, "Initial DAScale: %g [Amperes]\r", initialDAScale @@ -4707,7 +4707,7 @@ static Function PSQ_PB_CreateTestpulseEpochs(string device, variable headstage) totalOnsetDelay = DAG_GetNumericalValue(device, "setvar_DataAcq_OnsetDelayUser") \ + GetValDisplayAsNum(device, "valdisp_DataAcq_OnsetDelayAuto") - offset = (totalOnsetDelay + ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = 0)) * 1e-3 + offset = (totalOnsetDelay + ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = 0)) * MILLI_TO_ONE DAScale = DAG_GetNumericalValue(device, GetSpecialControlLabel(CHANNEL_TYPE_DAC, CHANNEL_CONTROL_SCALE), index = DAC) @@ -4732,15 +4732,15 @@ static Function PSQ_CreateTestpulseLikeEpoch(string device, variable DAC, string variable amplitude, epBegin, epEnd string shortName, tags - prePulseTP = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = epochIndex) * 1e-3 + prePulseTP = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = epochIndex) * MILLI_TO_ONE amplitude = ST_GetStimsetParameterAsVariable(setName, "Amplitude", epochIndex = epochIndex) ASSERT(amplitude == 0, "Invald amplitude") - signalTP = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = epochIndex + 1) * 1e-3 + signalTP = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = epochIndex + 1) * MILLI_TO_ONE amplitude = ST_GetStimsetParameterAsVariable(setName, "Amplitude", epochIndex = epochIndex + 1) ASSERT(amplitude != 0, "Invald amplitude") - postPulseTP = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = epochIndex + 2) * 1e-3 + postPulseTP = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = epochIndex + 2) * MILLI_TO_ONE amplitude = ST_GetStimsetParameterAsVariable(setName, "Amplitude", epochIndex = epochIndex + 2) ASSERT(amplitude == 0, "Invald amplitude") @@ -5364,9 +5364,9 @@ static Function PSQ_SE_CreateEpochs(string device, variable headstage, string pa + GetValDisplayAsNum(device, "valdisp_DataAcq_OnsetDelayAuto") epBegin = 0 - epEnd = totalOnsetDelay * 1e-3 + epEnd = totalOnsetDelay * MILLI_TO_ONE for(i = 0; i < numEpochs; i += 1) - duration = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = i) * 1e-3 + duration = ST_GetStimsetParameterAsVariable(setName, "Duration", epochIndex = i) * MILLI_TO_ONE epBegin = epEnd epEnd = epBegin + duration @@ -5383,7 +5383,7 @@ static Function PSQ_SE_CreateEpochs(string device, variable headstage, string pa amplitude = ST_GetStimsetParameterAsVariable(setName, "Amplitude", epochIndex = i) ASSERT(amplitude == 0, "Invalid amplitude") - chunkLength = AFH_GetAnalysisParamNumerical("BaselineChunkLength", params, defValue = PSQ_BL_EVAL_RANGE) * 1e-3 + chunkLength = AFH_GetAnalysisParamNumerical("BaselineChunkLength", params, defValue = PSQ_BL_EVAL_RANGE) * MILLI_TO_ONE if(duration != chunkLength) printf "The length of epoch %d (%g) is different from the expected one %g.\r", i, duration, chunkLength diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index 72224a0cbd..0b95480d32 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -284,11 +284,11 @@ Function DQ_ApplyAutoBias(device, TPResults) /// all variables holding physical units use plain values without prefixes /// e.g Amps instead of pA - targetVoltage = ampSettings[%AutoBiasVcom][0][headStage] * 1e-3 - targetVoltageTol = ampSettings[%AutoBiasVcomVariance][0][headStage] * 1e-3 + targetVoltage = ampSettings[%AutoBiasVcom][0][headStage] * MILLI_TO_ONE + targetVoltageTol = ampSettings[%AutoBiasVcomVariance][0][headStage] * MILLI_TO_ONE resistance = TPResults[%ResistanceSteadyState][headstage] * 1e6 - setVoltage = TPResults[%BaselineSteadyState][headstage] * 1e-3 + setVoltage = TPResults[%BaselineSteadyState][headstage] * MILLI_TO_ONE DEBUGPRINT("resistance[Ohm]=", var=resistance) DEBUGPRINT("setVoltage[V]=", var=setVoltage) diff --git a/Packages/MIES/MIES_Epochs.ipf b/Packages/MIES/MIES_Epochs.ipf index afbc04ccf1..c985ca650f 100644 --- a/Packages/MIES/MIES_Epochs.ipf +++ b/Packages/MIES/MIES_Epochs.ipf @@ -570,7 +570,7 @@ Function EP_WriteEpochInfoIntoSweepSettings(string device, WAVE sweepWave, WAVE variable i, numDACEntries, channel, headstage, acquiredTime, plannedTime string entry - plannedTime = IndexToScale(sweepWave, DimSize(sweepWave, ROWS) - 1, ROWS) / 1e3 + plannedTime = IndexToScale(sweepWave, DimSize(sweepWave, ROWS) - 1, ROWS) * MILLI_TO_ONE // all channels are acquired simultaneously we can just check if the last // channel has NaN in the last element @@ -578,7 +578,7 @@ Function EP_WriteEpochInfoIntoSweepSettings(string device, WAVE sweepWave, WAVE FindValue/FNAN sweepWave ASSERT(V_row >= 0, "Unexpected result") - acquiredTime = IndexToScale(sweepWave, max(V_row - 1, 0), ROWS) / 1e3 + acquiredTime = IndexToScale(sweepWave, max(V_row - 1, 0), ROWS) * MILLI_TO_ONE else acquiredTime = plannedTime endif diff --git a/Packages/MIES/MIES_MiesUtilities.ipf b/Packages/MIES/MIES_MiesUtilities.ipf index 57fd745735..494d19a724 100644 --- a/Packages/MIES/MIES_MiesUtilities.ipf +++ b/Packages/MIES/MIES_MiesUtilities.ipf @@ -5872,7 +5872,7 @@ Function UpdateLeftOverSweepTime(device, fifoPos) NVAR repurposedTime = $GetRepurposedSweepTime(device) NVAR stopCollectionPoint = $GetStopCollectionPoint(device) - repurposedTime += max(0, IndexToScale(DAQDataWave, stopCollectionPoint - fifoPos, ROWS)) / 1e3 + repurposedTime += max(0, IndexToScale(DAQDataWave, stopCollectionPoint - fifoPos, ROWS)) * MILLI_TO_ONE sprintf msg, "Repurposed time in seconds due to premature sweep stopping: %g\r", repurposedTime DEBUGPRINT(msg) @@ -5952,7 +5952,7 @@ Function CalculateTPLikePropsFromSweep(numericalValues, textualValues, sweep, de // convert from mv to V ASSERT(!cmpstr(ADunit[i], "mV"), "Unexpected AD Unit") - deltaV[i] = (elevated - baseline) * 1e-3 + deltaV[i] = (elevated - baseline) * MILLI_TO_ONE high = firstEdge - 1 low = high - (firstEdge - onsetDelayPoint) * 0.1 diff --git a/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf b/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf index a628b84ece..ebbeb6f1a2 100644 --- a/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf +++ b/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf @@ -55,7 +55,7 @@ threadsafe static Function NWB_GetStartTimeOfSweep(WAVE/T textualValues, variabl // last time the wave was modified (UTC) startingTime = NumberByKeY("MODTIME", WaveInfo(sweepWave, 0)) - date2secs(-1, -1, -1) // we want the timestamp of the beginning of the measurement - startingTime -= DimSize(sweepWave, ROWS) * DimDelta(sweepWave, ROWS) / 1000 + startingTime -= DimSize(sweepWave, ROWS) * DimDelta(sweepWave, ROWS) * MILLI_TO_ONE return startingTime End diff --git a/Packages/MIES/MIES_Oscilloscope.ipf b/Packages/MIES/MIES_Oscilloscope.ipf index 48cb54e477..0682d7b0e2 100644 --- a/Packages/MIES/MIES_Oscilloscope.ipf +++ b/Packages/MIES/MIES_Oscilloscope.ipf @@ -106,7 +106,7 @@ Function SCOPE_UpdateGraph(device, dataAcqOrTP) NVAR timestamp = $GetLastAcqHookCallTimeStamp(device) updateInt = DAG_GetNumericalValue(device, "setvar_Settings_OsciUpdInt") now = DateTime - if((now - timestamp) < updateInt / 1000) + if((now - timestamp) < updateInt * MILLI_TO_ONE) return 0 endif timestamp = now @@ -467,7 +467,7 @@ static Function SCOPE_UpdatePowerSpectrum(device) numADCs = DimSize(OscilloscopeData, COLS) - startOfADColumns // FFT knows how to transform units without prefix so transform them temporarly - SetScale/P x, DimOffset(OscilloscopeData, ROWS) / 1000, DimDelta(OscilloscopeData, ROWS) / 1000, "s", OscilloscopeData + SetScale/P x, DimOffset(OscilloscopeData, ROWS) * MILLI_TO_ONE, DimDelta(OscilloscopeData, ROWS) * MILLI_TO_ONE, "s", OscilloscopeData Make/FREE/N=(numADCs) junk diff --git a/Packages/MIES/MIES_PressureControl.ipf b/Packages/MIES/MIES_PressureControl.ipf index 2438fa5d1b..c4918af161 100644 --- a/Packages/MIES/MIES_PressureControl.ipf +++ b/Packages/MIES/MIES_PressureControl.ipf @@ -1436,7 +1436,7 @@ static Function P_FillDAQWaves(device, headStage, p) da[] = p.calPressure da[DimSize(da, ROWS) - 1] = p.calPressureOffset - SetScale/P x, 0, HARDWARE_NI_6001_MIN_SAMPINT * 1e-3, "s", da, ad + SetScale/P x, 0, HARDWARE_NI_6001_MIN_SAMPINT * MILLI_TO_ONE, "s", da, ad break default: ASSERT(0, "unsupported hardware") diff --git a/Packages/MIES/MIES_SweepFormula.ipf b/Packages/MIES/MIES_SweepFormula.ipf index 2002674d9c..2ce4117e34 100644 --- a/Packages/MIES/MIES_SweepFormula.ipf +++ b/Packages/MIES/MIES_SweepFormula.ipf @@ -2652,7 +2652,7 @@ static Function/WAVE SF_OperationApFrequency(variable jsonId, string jsonPath, s // @todo we assume that the x-axis of data has a ms scale for FULL/INSTANTANEOUS switch(method[0]) case SF_APFREQUENCY_FULL: - Make/N=(numSets)/D/FREE outD = levelPerSet[p] / (DimDelta(data, ROWS) * DimSize(data, ROWS)) * 1e3 + Make/N=(numSets)/D/FREE outD = levelPerSet[p] / (DimDelta(data, ROWS) * DimSize(data, ROWS) * MILLI_TO_ONE) break case SF_APFREQUENCY_INSTANTANEOUS: Make/N=(numSets)/D/FREE outD @@ -2663,7 +2663,7 @@ static Function/WAVE SF_OperationApFrequency(variable jsonId, string jsonPath, s else Make/FREE/D/N=(levelPerSet[i] - 1) distances distances[0, levelPerSet[i] - 2] = levels[i][p + 1] - levels[i][p] - outD[i] = 1.0 / Mean(distances) * 1e3 + outD[i] = 1.0 / (Mean(distances) * MILLI_TO_ONE) endif endfor break diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index 623a9fedbb..9fd2146b7f 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -572,8 +572,8 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia maximumCurrent = abs(TPSettings[%autoAmpMaxCurrent][i] * PICO_TO_ONE) - targetVoltage = TPSettings[%autoAmpVoltage][i] * 1e-3 - targetVoltageTol = TPSettings[%autoAmpVoltageRange][i] * 1e-3 + targetVoltage = TPSettings[%autoAmpVoltage][i] * MILLI_TO_ONE + targetVoltageTol = TPSettings[%autoAmpVoltageRange][i] * MILLI_TO_ONE resistance = TPResults[%ResistanceSteadyState][i] * 1e6 @@ -585,7 +585,7 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia indizes[i] += 1 SetStringInWaveNote(overrideResults, "Next unread index [amplitude]", NumericWaveToList(indizes, ",")) else - voltage = TPResults[%AutoTPDeltaV][i] * 1e-3 + voltage = TPResults[%AutoTPDeltaV][i] * MILLI_TO_ONE endif skipAutoBaseline = 0 diff --git a/Packages/MIES/MIES_WaveBuilder.ipf b/Packages/MIES/MIES_WaveBuilder.ipf index c3237338cf..c35d94a66b 100644 --- a/Packages/MIES/MIES_WaveBuilder.ipf +++ b/Packages/MIES/MIES_WaveBuilder.ipf @@ -1248,7 +1248,7 @@ static Function WB_NoiseSegment(pa) ASSERT(IsInteger(pa.buildResolution) && pa.buildResolution > 0, "Invalid build resolution") // duration is in ms - samples = pa.duration * pa.buildResolution * WAVEBUILDER_MIN_SAMPINT_HZ * 1e-3 + samples = pa.duration * pa.buildResolution * WAVEBUILDER_MIN_SAMPINT_HZ * MILLI_TO_ONE // even number of points for IFFT samples = 2 * ceil(samples / 2) @@ -1600,7 +1600,7 @@ static Function/WAVE WB_PulseTrainSegment(pa, mode, pulseStartTimes, pulseToPuls pa.duration = pa.numberOfPulses / pa.frequency * 1000 elseif(mode == PULSE_TRAIN_MODE_DUR) // user defined duration - pa.numberOfPulses = pa.frequency * pa.duration / 1000 + pa.numberOfPulses = pa.frequency * pa.duration * MILLI_TO_ONE else ASSERT(0, "Invalid mode") endif diff --git a/Packages/MIES/MIES_WaveBuilderPanel.ipf b/Packages/MIES/MIES_WaveBuilderPanel.ipf index 66e945bb48..719f117152 100644 --- a/Packages/MIES/MIES_WaveBuilderPanel.ipf +++ b/Packages/MIES/MIES_WaveBuilderPanel.ipf @@ -1617,7 +1617,7 @@ Function WBP_ShowFFTSpectrumIfReq(segmentWave, sweep) Duplicate/FREE segmentWave, input ASSERT(!cmpstr(WaveUnits(input, ROWS), "ms"), "Unexpected data units for row dimension") - SetScale/P x 0, WAVEBUILDER_MIN_SAMPINT/1000, "s", input + SetScale/P x 0, WAVEBUILDER_MIN_SAMPINT * MILLI_TO_ONE, "s", input FFT/FREE/DEST=cmplxFFT input MultiThread cmplxFFT = r2polar(cmplxFFT) diff --git a/Packages/Testing-MIES/UTF_HardwareMain.ipf b/Packages/Testing-MIES/UTF_HardwareMain.ipf index 5a1a5f3238..946ba6ee4e 100644 --- a/Packages/Testing-MIES/UTF_HardwareMain.ipf +++ b/Packages/Testing-MIES/UTF_HardwareMain.ipf @@ -1572,8 +1572,8 @@ Function CheckUserEpochs(string dev, WAVE times, string shortNameFormat, [variab CHECK_NEQ_VAR(index, -1) startTime = str2num(userChunkEpochs[k][EPOCH_COL_STARTTIME]) endTime = str2num(userChunkEpochs[k][EPOCH_COL_ENDTIME]) - startRef = times[k << 1] / 1E3 - endRef = times[k << 1 + 1] / 1E3 + startRef = times[k << 1] * MILLI_TO_ONE + endRef = times[k << 1 + 1] * MILLI_TO_ONE if(CheckIfSmall(startRef, tol = 1e-12)) CHECK_SMALL_VAR(startTime) diff --git a/Packages/Testing-MIES/UTF_SweepFormula.ipf b/Packages/Testing-MIES/UTF_SweepFormula.ipf index 911b4ed3b3..75872abe61 100644 --- a/Packages/Testing-MIES/UTF_SweepFormula.ipf +++ b/Packages/Testing-MIES/UTF_SweepFormula.ipf @@ -874,12 +874,12 @@ static Function TestAPFrequency() // works with 2D data and instantaneous WAVE output = SF_FormulaExecutor(DirectToFormulaParser("apfrequency(setscale([[10, 5], [20, 40], [10, 5], [20, 30]], x, 0, 5, ms), 1, 15)")) - Make/FREE/D output_ref = {100, 94.59459459459458} + Make/FREE/D output_ref = {100, 94.59459459459457} REQUIRE_EQUAL_WAVES(output, output_ref, mode = WAVE_DATA) // x offset does not play any role WAVE output = SF_FormulaExecutor(DirectToFormulaParser("apfrequency(setscale([[10, 5], [20, 40], [10, 5], [20, 30]], x, 0, 5, ms), 1, 15)")) - Make/FREE/D output_ref = {100, 94.59459459459458} + Make/FREE/D output_ref = {100, 94.59459459459457} REQUIRE_EQUAL_WAVES(output, output_ref, mode = WAVE_DATA) // returns 0 if nothing found for Full diff --git a/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf b/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf index fa3bdbcc2c..9fa8119133 100644 --- a/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf +++ b/Packages/Testing-MIES/UTF_TestNWBExportV1.ipf @@ -353,7 +353,7 @@ static Function TestTimeSeries(fileID, device, groupID, channel, sweep, pxpSweep // and rate rate = ReadAttributeAsNumber(groupID, channel + "/starting_time", "rate") - rate_ref = 1 / (DimDelta(loadedFromNWB, ROWS)/1000) + rate_ref = 1 / (DimDelta(loadedFromNWB, ROWS) * MILLI_TO_ONE) CHECK_CLOSE_VAR(rate, rate_ref, tol=1e-7) samplingInterval = GetLastSettingIndep(numericalValues, sweep, "Sampling interval", DATA_ACQUISITION_MODE) @@ -477,7 +477,7 @@ static Function TestTimeSeries(fileID, device, groupID, channel, sweep, pxpSweep CHECK_EQUAL_STR(unit, base_unit_ref) elseif(!cmpstr(unit_ref, "mV")) conversion = ReadAttributeAsNumber(channelGroupID, "data", "conversion") - CHECK_CLOSE_VAR(conversion, 1e-3, tol = 1e-5) + CHECK_CLOSE_VAR(conversion, MILLI_TO_ONE, tol = 1e-5) unit = ReadTextAttributeAsString(channelGroupID, "data", "unit") base_unit_ref = "V" diff --git a/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf b/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf index a16cb5560d..7c65ee2b8e 100644 --- a/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf +++ b/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf @@ -501,7 +501,7 @@ static Function TestTimeSeries(fileID, filepath, device, groupID, channel, sweep CHECK_EQUAL_STR(unit, base_unit_ref) elseif(!cmpstr(unit_ref, "mV")) conversion = ReadAttributeAsNumber(channelGroupID, "data", "conversion") - CHECK_CLOSE_VAR(conversion, 1e-3, tol = 1e-5) + CHECK_CLOSE_VAR(conversion, MILLI_TO_ONE, tol = 1e-5) unit = ReadTextAttributeAsString(channelGroupID, "data", "unit") From 2b37cce138113af544be9781ceeed7bf797e40fe Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:24:20 +0200 Subject: [PATCH 07/35] Prefer ONE_TO_MILLI over * 1e3 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 12 ++++++------ Packages/MIES/MIES_AnalysisBrowser.ipf | 2 +- .../MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 6 +++--- Packages/MIES/MIES_BrowserSettingsPanel.ipf | 8 ++++---- Packages/MIES/MIES_DataAcquisition_Multi.ipf | 2 +- Packages/MIES/MIES_Oscilloscope.ipf | 2 +- Packages/MIES/MIES_PulseAveraging.ipf | 6 +++--- Packages/MIES/MIES_SweepFormula.ipf | 16 ++++++++-------- Packages/MIES/MIES_TestPulse_Multi.ipf | 2 +- Packages/MIES/MIES_WaveBuilder.ipf | 13 ++++++------- Packages/Testing-MIES/UTF_Epochs.ipf | 4 ++-- 11 files changed, 36 insertions(+), 37 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index a70bcebae1..43d6f8988e 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -134,14 +134,14 @@ Function AI_GetMCCScale(clampMode, func) case MCC_SETHOLDING_FUNC: return MILLI_TO_ONE case MCC_GETHOLDING_FUNC: - return 1e+3 + return ONE_TO_MILLI case MCC_SETPIPETTEOFFSET_FUNC: return MILLI_TO_ONE case MCC_GETPIPETTEOFFSET_FUNC: case MCC_AUTOPIPETTEOFFSET_FUNC: - return 1e+3 + return ONE_TO_MILLI case MCC_SETRSCOMPBANDWIDTH_FUNC: - return 1e+3 + return ONE_TO_MILLI case MCC_GETRSCOMPBANDWIDTH_FUNC: return MILLI_TO_ONE case MCC_SETWHOLECELLCOMPRESIST_FUNC: @@ -171,7 +171,7 @@ Function AI_GetMCCScale(clampMode, func) return MILLI_TO_ONE case MCC_GETPIPETTEOFFSET_FUNC: case MCC_AUTOPIPETTEOFFSET_FUNC: - return 1e+3 + return ONE_TO_MILLI case MCC_SETNEUTRALIZATIONCAP_FUNC: return PICO_TO_ONE case MCC_GETNEUTRALIZATIONCAP_FUNC: @@ -972,11 +972,11 @@ static Function AI_RetrieveGains(device, headstage, clampMode, ADGain, DAGain) ASSERT(clampMode == tds.OperatingMode, "Non matching clamp mode from MCC application") - ADGain = tds.ScaleFactor * tds.Alpha / 1000 + ADGain = tds.ScaleFactor * tds.Alpha / ONE_TO_MILLI clampMode = tds.OperatingMode if(tds.OperatingMode == V_CLAMP_MODE) - DAGain = tds.ExtCmdSens * 1000 + DAGain = tds.ExtCmdSens * ONE_TO_MILLI elseif(tds.OperatingMode == I_CLAMP_MODE || tds.OperatingMode == I_EQUAL_ZERO_MODE) DAGain = tds.ExtCmdSens * ONE_TO_PICO endif diff --git a/Packages/MIES/MIES_AnalysisBrowser.ipf b/Packages/MIES/MIES_AnalysisBrowser.ipf index dc33696eff..3e2dadc591 100644 --- a/Packages/MIES/MIES_AnalysisBrowser.ipf +++ b/Packages/MIES/MIES_AnalysisBrowser.ipf @@ -1852,7 +1852,7 @@ static Function AB_LoadSweepFromNWBgeneric(h5_groupID, nwbVersion, channelList, configSweep[numEntries][%type] = p.channelType configSweep[numEntries][%number] = p.channelNumber - configSweep[numEntries][%timeMS] = trunc(DimDelta(loaded, ROWS) * 1000) + configSweep[numEntries][%timeMS] = trunc(DimDelta(loaded, ROWS) * ONE_TO_MILLI) configSweep[numEntries][3] = -1 // -1 for faked Config_Sweeps Waves // set unit in config_wave from WaveNote of loaded dataset diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 9026758cf3..73cb98b721 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -437,8 +437,8 @@ static Function PSQ_EvaluateBaselineProperties(string device, STRUCT AnalysisFun endif // s -> ms - chunkStartTimeMax = str2num(userChunkEpochs[chunk][EPOCH_COL_STARTTIME]) * 1e3 - chunkLengthTime = (str2num(userChunkEpochs[chunk][EPOCH_COL_ENDTIME]) - str2num(userChunkEpochs[chunk][EPOCH_COL_STARTTIME])) * 1e3 + chunkStartTimeMax = str2num(userChunkEpochs[chunk][EPOCH_COL_STARTTIME]) * ONE_TO_MILLI + chunkLengthTime = (str2num(userChunkEpochs[chunk][EPOCH_COL_ENDTIME]) - str2num(userChunkEpochs[chunk][EPOCH_COL_STARTTIME])) * ONE_TO_MILLI baselineType = PSQ_BL_GENERIC endif @@ -3453,7 +3453,7 @@ static Function [variable boundsAction, variable scalingFactorDAScale] PSQ_CR_De WAVE numericalValues = GetLBNumericalValues(device) WAVE/Z baselineLBN = GetLastSetting(numericalValues, sweepNo, key, UNKNOWN_MODE) ASSERT(WaveExists(baselineLBN), "Missing targetV from LBN") - baselineVoltage = baselineLBN[headstage] * 1000 // V -> mV + baselineVoltage = baselineLBN[headstage] * ONE_TO_MILLI ASSERT(IsFinite(baselineVoltage), "Invalid baseline voltage") endif diff --git a/Packages/MIES/MIES_BrowserSettingsPanel.ipf b/Packages/MIES/MIES_BrowserSettingsPanel.ipf index 15e47955dc..b9dedc03c2 100644 --- a/Packages/MIES/MIES_BrowserSettingsPanel.ipf +++ b/Packages/MIES/MIES_BrowserSettingsPanel.ipf @@ -1610,8 +1610,8 @@ Function BSP_AddTracesForEpochs(string win) for(k = 0; k < numEpochs; k += 1) - start_x = str2num(epochs[k][0]) * 1000 - end_x = str2num(epochs[k][1]) * 1000 + start_x = str2num(epochs[k][0]) * ONE_TO_MILLI + end_x = str2num(epochs[k][1]) * ONE_TO_MILLI // handle EPOCH_USER_LEVEL being -1 level = str2num(epochs[k][3]) + 1 @@ -1693,8 +1693,8 @@ Function BSP_EpochGraphToolTip(s) ASSERT(WaveExists(epochs), "Missing epoch info") hookResult = 1 // 1 tells Igor to use our custom tooltip idx = w[s.row][s.column][1] - first = num2strHighPrec(str2num(epochs[idx][0]) * 1000, precision = EPOCHTIME_PRECISION, shorten = 1) - last = num2strHighPrec(str2num(epochs[idx][1]) * 1000, precision = EPOCHTIME_PRECISION, shorten = 1) + first = num2strHighPrec(str2num(epochs[idx][0]) * ONE_TO_MILLI, precision = EPOCHTIME_PRECISION, shorten = 1) + last = num2strHighPrec(str2num(epochs[idx][1]) * ONE_TO_MILLI, precision = EPOCHTIME_PRECISION, shorten = 1) s.tooltip = first + " <-> " + last + "\n" + epochs[idx][2] + "TreeLevel=" + epochs[idx][3] endif diff --git a/Packages/MIES/MIES_DataAcquisition_Multi.ipf b/Packages/MIES/MIES_DataAcquisition_Multi.ipf index 1bfee08f5c..c3870bc6dd 100644 --- a/Packages/MIES/MIES_DataAcquisition_Multi.ipf +++ b/Packages/MIES/MIES_DataAcquisition_Multi.ipf @@ -58,7 +58,7 @@ Function DQM_FIFOMonitor(s) FIFO2WAVE/R=[fifoPosGlobal, fifoLatest - 1] $fifoName, $fifoChannelName, wNIReadOut; AbortOnRTE multithread NIChannel[fifoPosGlobal, fifoLatest - 1] = wNIReadOut[p - fifoPosGlobal] - SetScale/P x, 0, DimDelta(wNIReadOut, ROWS) * 1000, "ms", NIChannel + SetScale/P x, 0, DimDelta(wNIReadOut, ROWS) * ONE_TO_MILLI, "ms", NIChannel endfor catch diff --git a/Packages/MIES/MIES_Oscilloscope.ipf b/Packages/MIES/MIES_Oscilloscope.ipf index 0682d7b0e2..e7034b0cf4 100644 --- a/Packages/MIES/MIES_Oscilloscope.ipf +++ b/Packages/MIES/MIES_Oscilloscope.ipf @@ -473,7 +473,7 @@ static Function SCOPE_UpdatePowerSpectrum(device) MultiThread junk[] = DoFFT(OscilloscopeData, TPOscilloscopeData, (startOfADColumns + p)) - SetScale/P x, DimOffset(OscilloscopeData, ROWS) * 1000, DimDelta(OscilloscopeData, ROWS) * 1000, "ms", OscilloscopeData + SetScale/P x, DimOffset(OscilloscopeData, ROWS) * ONE_TO_MILLI, DimDelta(OscilloscopeData, ROWS) * ONE_TO_MILLI, "ms", OscilloscopeData endif End diff --git a/Packages/MIES/MIES_PulseAveraging.ipf b/Packages/MIES/MIES_PulseAveraging.ipf index 705f9bafc4..5eae674761 100644 --- a/Packages/MIES/MIES_PulseAveraging.ipf +++ b/Packages/MIES/MIES_PulseAveraging.ipf @@ -469,12 +469,12 @@ static Function/WAVE PA_RetrievePulseInfosFromEpochs(string epochInfo) endif if(level == 2) - pulseInfos[idx][%Length] = (last - first) * 1000 + pulseInfos[idx][%Length] = (last - first) * ONE_TO_MILLI hasOneValidEntry = 1 elseif(level == 3 && (strsearch(tags, "Active", 0) != -1) || (strsearch(tags, "SubType=Pulse;", 0) != -1)) - pulseInfos[idx][%PulseStart] = first * 1000 - pulseInfos[idx][%PulseEnd] = last * 1000 + pulseInfos[idx][%PulseStart] = first * ONE_TO_MILLI + pulseInfos[idx][%PulseEnd] = last * ONE_TO_MILLI hasPerPulseInfo = 1 hasOneValidEntry = 1 diff --git a/Packages/MIES/MIES_SweepFormula.ipf b/Packages/MIES/MIES_SweepFormula.ipf index 2ce4117e34..6096f87bf7 100644 --- a/Packages/MIES/MIES_SweepFormula.ipf +++ b/Packages/MIES/MIES_SweepFormula.ipf @@ -1029,8 +1029,8 @@ static Function/WAVE SF_GetRangeFromEpoch(string graph, string epochName, variab return range endif - range[0] = str2num(epochs[0][EPOCH_COL_STARTTIME]) * 1E3 - range[1] = str2num(epochs[0][EPOCH_COL_ENDTIME]) * 1E3 + range[0] = str2num(epochs[0][EPOCH_COL_STARTTIME]) * ONE_TO_MILLI + range[1] = str2num(epochs[0][EPOCH_COL_ENDTIME]) * ONE_TO_MILLI return range End @@ -1827,12 +1827,12 @@ static Function/WAVE SF_OperationTP(variable jsonId, string jsonPath, string gra SF_ASSERT(WaveExists(epochTPPulse) && DimSize(epochTPPulse, ROWS) == 1, "No TP Pulse epoch found for TP epoch") WAVE/Z/T epochTPBaseline = EP_GetEpochs(numericalValues, textualValues, sweep, XOP_CHANNEL_TYPE_DAC, dacChannelNr, epShortName + "_B0") SF_ASSERT(WaveExists(epochTPBaseline) && DimSize(epochTPBaseline, ROWS) == 1, "No TP Baseline epoch found for TP epoch") - tpBaseLineT = (str2num(epochTPBaseline[0][EPOCH_COL_ENDTIME]) - str2num(epochTPBaseline[0][EPOCH_COL_STARTTIME])) * 1E3 + tpBaseLineT = (str2num(epochTPBaseline[0][EPOCH_COL_ENDTIME]) - str2num(epochTPBaseline[0][EPOCH_COL_STARTTIME])) * ONE_TO_MILLI // Assemble TP data WAVE tpInput.data = SF_AverageTPFromSweep(epochMatches, sweepData) tpInput.tpLengthPoints = DimSize(tpInput.data, ROWS) - tpInput.duration = (str2num(epochTPPulse[0][EPOCH_COL_ENDTIME]) - str2num(epochTPPulse[0][EPOCH_COL_STARTTIME])) * 1E3 + tpInput.duration = (str2num(epochTPPulse[0][EPOCH_COL_ENDTIME]) - str2num(epochTPPulse[0][EPOCH_COL_STARTTIME])) * ONE_TO_MILLI tpInput.baselineFrac = TP_CalculateBaselineFraction(tpInput.duration, tpInput.duration + 2 * tpBaseLineT) [settings, index] = GetLastSettingChannel(numericalValues, textualValues, sweep, CLAMPMODE_ENTRY_KEY, dacChannelNr, XOP_CHANNEL_TYPE_DAC, DATA_ACQUISITION_MODE) @@ -2035,8 +2035,8 @@ static Function SF_EpochsSetOutValues(variable epType, WAVE out, variable outCnt else ASSERT(!ParamIsDefault(startTime), "startTime expected") ASSERT(!ParamIsDefault(endTime), "endTime expected") - out[0][outCnt] = str2num(startTime) * 1E3 - out[1][outCnt] = str2num(endTime) * 1E3 + out[0][outCnt] = str2num(startTime) * ONE_TO_MILLI + out[1][outCnt] = str2num(endTime) * ONE_TO_MILLI endif End @@ -2795,8 +2795,8 @@ static Function/WAVE SF_AverageTPFromSweep(WAVE/T epochMatches, WAVE sweepData) numTPEpochs = DimSize(epochMatches, ROWS) sweepDelta = DimDelta(sweepData, ROWS) - Make/FREE/D/N=(numTPEpochs) tpStart = trunc(str2num(epochMatches[p][EPOCH_COL_STARTTIME]) * 1E3 / sweepDelta) - Make/FREE/D/N=(numTPEpochs) tpDelta = trunc(str2num(epochMatches[p][EPOCH_COL_ENDTIME]) * 1E3 / sweepDelta) - tpStart[p] + Make/FREE/D/N=(numTPEpochs) tpStart = trunc(str2num(epochMatches[p][EPOCH_COL_STARTTIME]) * ONE_TO_MILLI / sweepDelta) + Make/FREE/D/N=(numTPEpochs) tpDelta = trunc(str2num(epochMatches[p][EPOCH_COL_ENDTIME]) * ONE_TO_MILLI / sweepDelta) - tpStart[p] [tpDataSizeMin, tpDataSizeMax] = WaveMinAndMaxWrapper(tpDelta) SF_ASSERT(tpDataSizeMax - tpDataSizeMin <= 1, "TP data size from TP epochs mismatch within sweep.") diff --git a/Packages/MIES/MIES_TestPulse_Multi.ipf b/Packages/MIES/MIES_TestPulse_Multi.ipf index 574621e057..fce045acdd 100644 --- a/Packages/MIES/MIES_TestPulse_Multi.ipf +++ b/Packages/MIES/MIES_TestPulse_Multi.ipf @@ -233,7 +233,7 @@ Function TPM_BkrdTPFuncMD(s) channelNr = str2num(fifoChannelName) WAVE NIChannel = NIDataWave[channelNr] FIFO2WAVE/R=[endOfPulse - datapoints, endOfPulse - 1] $fifoName, $fifoChannelName, NIChannel; AbortOnRTE - SetScale/P x, 0, DimDelta(NIChannel, ROWS) * 1000, "ms", NIChannel + SetScale/P x, 0, DimDelta(NIChannel, ROWS) * ONE_TO_MILLI, "ms", NIChannel endfor SCOPE_UpdateOscilloscopeData(device, TEST_PULSE_MODE, deviceID=deviceID) diff --git a/Packages/MIES/MIES_WaveBuilder.ipf b/Packages/MIES/MIES_WaveBuilder.ipf index c35d94a66b..cc54135a18 100644 --- a/Packages/MIES/MIES_WaveBuilder.ipf +++ b/Packages/MIES/MIES_WaveBuilder.ipf @@ -1292,7 +1292,7 @@ static Function WB_NoiseSegment(pa) ASSERT(!cmpstr(WaveUnits(segmentWave, ROWS), "s"), "Unexpect wave unit") ASSERT(DimOffset(segmentWave, ROWS) == 0, "Unexpected wave rows offset") - SetScale/P x, 0, DimDelta(segmentWave, ROWS) * 1000, "ms", segmentWave + SetScale/P x, 0, DimDelta(segmentWave, ROWS) * ONE_TO_MILLI, "ms", segmentWave Redimension/N=(DimSize(segmentWave, ROWS) / pa.buildResolution) segmentWave @@ -1597,7 +1597,7 @@ static Function/WAVE WB_PulseTrainSegment(pa, mode, pulseStartTimes, pulseToPuls if(mode == PULSE_TRAIN_MODE_PULSE) // user defined number of pulses - pa.duration = pa.numberOfPulses / pa.frequency * 1000 + pa.duration = pa.numberOfPulses / pa.frequency * ONE_TO_MILLI elseif(mode == PULSE_TRAIN_MODE_DUR) // user defined duration pa.numberOfPulses = pa.frequency * pa.duration * MILLI_TO_ONE @@ -1612,8 +1612,7 @@ static Function/WAVE WB_PulseTrainSegment(pa, mode, pulseStartTimes, pulseToPuls endif if(pa.poisson) - - interPulseInterval = (1 / pa.frequency) * 1000 - pa.pulseDuration + interPulseInterval = (1 / pa.frequency) * ONE_TO_MILLI - pa.pulseDuration WAVE segmentWave = GetSegmentWave(duration=pa.duration) FastOp segmentWave = 0 @@ -1622,7 +1621,7 @@ static Function/WAVE WB_PulseTrainSegment(pa, mode, pulseStartTimes, pulseToPuls pulseToPulseLength = 0 for(;;) - pulseStartTime += -ln(abs(enoise(1, NOISE_GEN_MERSENNE_TWISTER))) / pa.frequency * 1000 + pulseStartTime += -ln(abs(enoise(1, NOISE_GEN_MERSENNE_TWISTER))) / pa.frequency * ONE_TO_MILLI endIndex = floor((pulseStartTime + pa.pulseDuration) / WAVEBUILDER_MIN_SAMPINT) if(endIndex >= numRows || endIndex < 0) @@ -1640,7 +1639,7 @@ static Function/WAVE WB_PulseTrainSegment(pa, mode, pulseStartTimes, pulseToPuls firstStep = 1 / pa.firstFreq lastStep = 1 / pa.lastFreq dist = (lastStep / firstStep)^(1 / (pa.numberOfPulses - 1)) - Make/D/FREE/N=(pa.numberOfPulses) interPulseIntervals = firstStep * dist^p * 1000 - pa.pulseDuration + Make/D/FREE/N=(pa.numberOfPulses) interPulseIntervals = firstStep * dist^p * ONE_TO_MILLI - pa.pulseDuration if(pa.mixedFreqShuffle) InPlaceRandomShuffle(interPulseIntervals, noiseGenMode = NOISE_GEN_LINEAR_CONGRUENTIAL) @@ -1670,7 +1669,7 @@ static Function/WAVE WB_PulseTrainSegment(pa, mode, pulseStartTimes, pulseToPuls pulseStartTime += interPulseIntervals[i] + pa.pulseDuration endfor else - interPulseInterval = (1 / pa.frequency) * 1000 - pa.pulseDuration + interPulseInterval = (1 / pa.frequency) * ONE_TO_MILLI - pa.pulseDuration WAVE segmentWave = GetSegmentWave(duration=pa.duration) FastOp segmentWave = 0 diff --git a/Packages/Testing-MIES/UTF_Epochs.ipf b/Packages/Testing-MIES/UTF_Epochs.ipf index 8b4a5a9ef8..f14e36eb9f 100644 --- a/Packages/Testing-MIES/UTF_Epochs.ipf +++ b/Packages/Testing-MIES/UTF_Epochs.ipf @@ -311,8 +311,8 @@ static Function TestEpochsMonotony(e, DAChannel, activeDAChannel) for(i = 0; i < epochCnt; i += 1) name = e[i][2] level = str2num(e[i][3]) - first = startT[i] * 1000 + OTHER_EPOCHS_PRECISION - last = endT[i] * 1000 - OTHER_EPOCHS_PRECISION + first = startT[i] * ONE_TO_MILLI + OTHER_EPOCHS_PRECISION + last = endT[i] * ONE_TO_MILLI - OTHER_EPOCHS_PRECISION range = last - first if(range <= 0) From 198578a82d2b1ca73f4ab85f3d2445e187bce580 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:50:24 +0200 Subject: [PATCH 08/35] Prefer KILO_TO_ONE over 1e3 --- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 4 ++-- Packages/MIES/MIES_DAEphys.ipf | 2 +- Packages/MIES/MIES_NeuroDataWithoutBorders.ipf | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 73cb98b721..09bd63b3d5 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -1498,14 +1498,14 @@ static Function PSQ_CheckSamplingFrequencyAndStoreInLabnotebook(string device, v ASSERT(!cmpstr(StringByKey("XUNITS", WaveInfo(s.scaledDACWave, 0)), "ms"), "Unexpected wave x unit") #ifdef EVIL_KITTEN_EATING_MODE - actual = PSQ_GetDefaultSamplingFrequencyForSingleHeadstage(device) * 1e3 + actual = PSQ_GetDefaultSamplingFrequencyForSingleHeadstage(device) * KILO_TO_ONE #else // dimension delta [ms] actual = 1.0 / (DimDelta(s.scaledDACWave, ROWS) * MILLI_TO_ONE) #endif // samplingFrequency [kHz] - expected = samplingFrequency * 1e3 + expected = samplingFrequency * KILO_TO_ONE samplingFrequencyPassed = CheckIfClose(expected, actual, tol = 1) diff --git a/Packages/MIES/MIES_DAEphys.ipf b/Packages/MIES/MIES_DAEphys.ipf index 30526c7611..7dea626fee 100644 --- a/Packages/MIES/MIES_DAEphys.ipf +++ b/Packages/MIES/MIES_DAEphys.ipf @@ -1823,7 +1823,7 @@ Function DAP_GetSampInt(device, dataAcqOrTP, [valid]) if(dataAcqOrTP == DATA_ACQUISITION_MODE) fixedFreqkHzStr = DAG_GetTextualValue(device, "Popup_Settings_FixedFreq") if(cmpstr(fixedFreqkHzStr, "Maximum")) - sampInt = 1 / (str2num(fixedFreqkHzStr) * 1e3) * 1e6 + sampInt = 1 / (str2num(fixedFreqkHzStr) * KILO_TO_ONE) * 1e6 if(!ParamIsDefault(valid)) valid = sampInt >= SI_CalculateMinSampInterval(device, DATA_ACQUISITION_MODE) diff --git a/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf b/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf index ebbeb6f1a2..bcf3f7034c 100644 --- a/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf +++ b/Packages/MIES/MIES_NeuroDataWithoutBorders.ipf @@ -1161,7 +1161,7 @@ threadsafe static Function NWB_AppendSweepLowLevel(STRUCT NWBAsyncParameters &s) params.startingTime = NWB_GetStartTimeOfSweep(s.textualValues, s.sweep, s.DAQDataWave) - s.session_start_time ASSERT_TS(params.startingTime > 0, "TimeSeries starting time can not be negative") - params.samplingRate = ConvertSamplingIntervalToRate(GetSamplingInterval(s.DAQConfigWave)) * 1000 + params.samplingRate = ConvertSamplingIntervalToRate(GetSamplingInterval(s.DAQConfigWave)) * KILO_TO_ONE for(i = 0; i < NUM_HEADSTAGES; i += 1) From a90e2aa666a11d3efa2e54f6de729bb0b7e33ec5 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:50:24 +0200 Subject: [PATCH 09/35] Prefer GIGA_TO_ONE over 1e9 --- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 09bd63b3d5..2fc831ce1b 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -3989,7 +3989,7 @@ Function PSQ_Chirp(device, s) ED_AddEntryToLabnotebook(device, key, values, overrideSweepNo = s.sweepNo, unit = LABNOTEBOOK_BINARY_UNIT) if(TestOverrideActive()) - resistance = PSQ_CR_RESISTANCE_FAKE * 1e9 + resistance = PSQ_CR_RESISTANCE_FAKE * GIGA_TO_ONE else passingDaScaleSweep = PSQ_GetLastPassingDAScaleSub(device, s.headstage) From db6f7d023cffb7542d67718ba834ec58f9937ade Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:55:33 +0200 Subject: [PATCH 10/35] Prefer MEGA_TO_ONE over 1e6 --- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 6 +++--- Packages/MIES/MIES_DataAcquisition.ipf | 2 +- Packages/MIES/MIES_TestPulse.ipf | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 2fc831ce1b..298d02f1fc 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -5202,12 +5202,12 @@ Function PSQ_SealEvaluation(string device, struct AnalysisFunction_V3& s) // END TEST Make/D/FREE/N=(LABNOTEBOOK_LAYER_COUNT) sealResistanceALBN = NaN - sealResistanceALBN[INDEP_HEADSTAGE] = sealResistanceA * 1e6 + sealResistanceALBN[INDEP_HEADSTAGE] = sealResistanceA * MEGA_TO_ONE key = CreateAnaFuncLBNKey(PSQ_SEAL_EVALUATION, PSQ_FMT_LBN_SE_RESISTANCE_A) ED_AddEntryToLabnotebook(device, key, sealResistanceALBN, unit = "Ω", overrideSweepNo = s.sweepNo) Make/D/FREE/N=(LABNOTEBOOK_LAYER_COUNT) sealResistanceBLBN = NaN - sealResistanceBLBN[INDEP_HEADSTAGE] = sealResistanceB * 1e6 + sealResistanceBLBN[INDEP_HEADSTAGE] = sealResistanceB * MEGA_TO_ONE key = CreateAnaFuncLBNKey(PSQ_SEAL_EVALUATION, PSQ_FMT_LBN_SE_RESISTANCE_B) ED_AddEntryToLabnotebook(device, key, sealResistanceBLBN, unit = "Ω", overrideSweepNo = s.sweepNo) @@ -5226,7 +5226,7 @@ Function PSQ_SealEvaluation(string device, struct AnalysisFunction_V3& s) endswitch Make/D/FREE/N=(LABNOTEBOOK_LAYER_COUNT) sealResistanceMaxLBN = NaN - sealResistanceMaxLBN[INDEP_HEADSTAGE] = sealResistanceMax * 1e6 + sealResistanceMaxLBN[INDEP_HEADSTAGE] = sealResistanceMax * MEGA_TO_ONE key = CreateAnaFuncLBNKey(PSQ_SEAL_EVALUATION, PSQ_FMT_LBN_SE_RESISTANCE_MAX) ED_AddEntryToLabnotebook(device, key, sealResistanceMaxLBN, unit = "Ω", overrideSweepNo = s.sweepNo) diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index 0b95480d32..5d7932e36b 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -287,7 +287,7 @@ Function DQ_ApplyAutoBias(device, TPResults) targetVoltage = ampSettings[%AutoBiasVcom][0][headStage] * MILLI_TO_ONE targetVoltageTol = ampSettings[%AutoBiasVcomVariance][0][headStage] * MILLI_TO_ONE - resistance = TPResults[%ResistanceSteadyState][headstage] * 1e6 + resistance = TPResults[%ResistanceSteadyState][headstage] * MEGA_TO_ONE setVoltage = TPResults[%BaselineSteadyState][headstage] * MILLI_TO_ONE DEBUGPRINT("resistance[Ohm]=", var=resistance) diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index 9fd2146b7f..29f7b3cf6a 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -575,7 +575,7 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia targetVoltage = TPSettings[%autoAmpVoltage][i] * MILLI_TO_ONE targetVoltageTol = TPSettings[%autoAmpVoltageRange][i] * MILLI_TO_ONE - resistance = TPResults[%ResistanceSteadyState][i] * 1e6 + resistance = TPResults[%ResistanceSteadyState][i] * MEGA_TO_ONE if(TestOverrideActive()) WAVE overrideResults = GetOverrideResults() From 5f19bd91c873422260494aa87a55d31a75983577 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:55:33 +0200 Subject: [PATCH 11/35] Prefer GIGA_TO_MEGA over 1e3 --- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 298d02f1fc..19957f1aa9 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -5231,7 +5231,7 @@ Function PSQ_SealEvaluation(string device, struct AnalysisFunction_V3& s) ED_AddEntryToLabnotebook(device, key, sealResistanceMaxLBN, unit = "Ω", overrideSweepNo = s.sweepNo) // GOhm -> MOhm - sealThreshold = AFH_GetAnalysisParamNumerical("SealThreshold", s.params) * 1e3 + sealThreshold = AFH_GetAnalysisParamNumerical("SealThreshold", s.params) * GIGA_TO_MEGA switch(testpulseGroupSel) case PSQ_SE_TGS_FIRST: From 76026a4b2af31171c4f41b371ce8e4ea6ef4d804 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:58:17 +0200 Subject: [PATCH 12/35] Prefer ONE_TO_MICRO over 1e6 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 4 ++-- Packages/MIES/MIES_DAC-Hardware.ipf | 2 +- Packages/MIES/MIES_DAEphys.ipf | 2 +- Packages/MIES/MIES_DataConfigurator.ipf | 2 +- Packages/MIES/MIES_Epochs.ipf | 4 ++-- Packages/MIES/MIES_SamplingInterval.ipf | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index 43d6f8988e..6c44959ad2 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -145,7 +145,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_GETRSCOMPBANDWIDTH_FUNC: return MILLI_TO_ONE case MCC_SETWHOLECELLCOMPRESIST_FUNC: - return 1e+6 + return ONE_TO_MICRO case MCC_GETWHOLECELLCOMPRESIST_FUNC: return 1e-6 case MCC_SETWHOLECELLCOMPCAP_FUNC: @@ -159,7 +159,7 @@ Function AI_GetMCCScale(clampMode, func) else // IC and I=0 switch(func) case MCC_SETBRIDGEBALRESIST_FUNC: - return 1e+6 + return ONE_TO_MICRO case MCC_GETBRIDGEBALRESIST_FUNC: case MCC_AUTOBRIDGEBALANCE_FUNC: return 1e-6 diff --git a/Packages/MIES/MIES_DAC-Hardware.ipf b/Packages/MIES/MIES_DAC-Hardware.ipf index 15d6bfa688..e8c3f0e96c 100644 --- a/Packages/MIES/MIES_DAC-Hardware.ipf +++ b/Packages/MIES/MIES_DAC-Hardware.ipf @@ -2040,7 +2040,7 @@ Function HW_NI_StartAcq(deviceID, triggerMode, [flags, repeat]) pos += strlen(noteID) endpos = strsearch(FIFONote, "\r", pos) channelTimeOffset = str2num(FIFONote[pos, endpos - 1]) - DEBUGPRINT("Time offset between NI channels: " + num2str(channelTimeOffset*1E6) + " µs") + DEBUGPRINT("Time offset between NI channels: " + num2str(channelTimeOffset * ONE_TO_MICRO) + " µs") endif catch errMsg = GetRTErrMessage() + "\r" + fDAQmx_ErrorString() diff --git a/Packages/MIES/MIES_DAEphys.ipf b/Packages/MIES/MIES_DAEphys.ipf index 7dea626fee..2986747d31 100644 --- a/Packages/MIES/MIES_DAEphys.ipf +++ b/Packages/MIES/MIES_DAEphys.ipf @@ -1823,7 +1823,7 @@ Function DAP_GetSampInt(device, dataAcqOrTP, [valid]) if(dataAcqOrTP == DATA_ACQUISITION_MODE) fixedFreqkHzStr = DAG_GetTextualValue(device, "Popup_Settings_FixedFreq") if(cmpstr(fixedFreqkHzStr, "Maximum")) - sampInt = 1 / (str2num(fixedFreqkHzStr) * KILO_TO_ONE) * 1e6 + sampInt = 1 / (str2num(fixedFreqkHzStr) * KILO_TO_ONE) * ONE_TO_MICRO if(!ParamIsDefault(valid)) valid = sampInt >= SI_CalculateMinSampInterval(device, DATA_ACQUISITION_MODE) diff --git a/Packages/MIES/MIES_DataConfigurator.ipf b/Packages/MIES/MIES_DataConfigurator.ipf index 1504f708cf..9b8c4b4969 100644 --- a/Packages/MIES/MIES_DataConfigurator.ipf +++ b/Packages/MIES/MIES_DataConfigurator.ipf @@ -2056,7 +2056,7 @@ static Function DC_GetStopCollectionPoint(string device, variable dataAcqOrTP, W FindValue/I=(DAQ_CHANNEL_TYPE_DAQ) DACmode if(V_Value == -1) - return TIME_TP_ONLY_ON_DAQ * 1E6 / DAP_GetSampInt(device, dataAcqOrTP) + return TIME_TP_ONLY_ON_DAQ * ONE_TO_MICRO / DAP_GetSampInt(device, dataAcqOrTP) else totalIncrease = DC_ReturnTotalLengthIncrease(device) TTLlength = DC_CalculateLongestSweep(device, DATA_ACQUISITION_MODE, CHANNEL_TYPE_TTL) diff --git a/Packages/MIES/MIES_Epochs.ipf b/Packages/MIES/MIES_Epochs.ipf index c985ca650f..d798b290cf 100644 --- a/Packages/MIES/MIES_Epochs.ipf +++ b/Packages/MIES/MIES_Epochs.ipf @@ -502,7 +502,7 @@ Function EP_AddUserEpoch(string device, variable channelType, variable channelNu shortName = EPOCH_SHORTNAME_USER_PREFIX + shortName endif - return EP_AddEpoch(device, channelNumber, epBegin * 1e6, epEnd * 1e6, tags, shortName, EPOCH_USER_LEVEL) + return EP_AddEpoch(device, channelNumber, epBegin * ONE_TO_MICRO, epEnd * ONE_TO_MICRO, tags, shortName, EPOCH_USER_LEVEL) End /// @brief Adds a epoch to the epochsWave @@ -687,7 +687,7 @@ static Function EP_AdaptEpochInfo(string device, WAVE configWave, variable acqui // add unacquired epoch // relies on EP_AddEpoch ignoring single point epochs tags = ReplaceStringByKey(EPOCH_TYPE_KEY, "", "Unacquired", STIMSETKEYNAME_SEP, EPOCHNAME_SEP) - EP_AddEpoch(device, channel, acquiredTime * 1e6 , plannedTime * 1e6, tags , EPOCH_SN_UNACQUIRED, 0) + EP_AddEpoch(device, channel, acquiredTime * ONE_TO_MICRO , plannedTime * ONE_TO_MICRO, tags , EPOCH_SN_UNACQUIRED, 0) endfor End diff --git a/Packages/MIES/MIES_SamplingInterval.ipf b/Packages/MIES/MIES_SamplingInterval.ipf index e9a6f0f632..21a9aaad5a 100644 --- a/Packages/MIES/MIES_SamplingInterval.ipf +++ b/Packages/MIES/MIES_SamplingInterval.ipf @@ -459,7 +459,7 @@ static Function SI_TestSampInt(device) ASSERT(V_min == V_max, "Unexpected differing sampling interval") // ITCGetAllChannelsConfig2 returns the sampling interval in Hz // but we want it in microseconds - sampIntRead = 1/V_min * 1e6 + sampIntRead = 1/V_min * ONE_TO_MICRO if(sampIntRead == sampInt) if(numConsecutive == -1) From 77188f08fcb83a24144362849921462a2d8946b7 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 18:58:17 +0200 Subject: [PATCH 13/35] Prefer MICRO_TO_MILLI over 1e-3 --- Packages/MIES/MIES_DataConfigurator.ipf | 18 +++++++++--------- Packages/MIES/MIES_MiesUtilities.ipf | 2 +- Packages/MIES/MIES_Oscilloscope.ipf | 2 +- Packages/MIES/MIES_TestPulse.ipf | 4 ++-- Packages/Testing-MIES/MIES_MiscTesting.ipf | 4 ++-- Packages/Testing-MIES/UTF_Epochs.ipf | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Packages/MIES/MIES_DataConfigurator.ipf b/Packages/MIES/MIES_DataConfigurator.ipf index 9b8c4b4969..71d0f12751 100644 --- a/Packages/MIES/MIES_DataConfigurator.ipf +++ b/Packages/MIES/MIES_DataConfigurator.ipf @@ -339,7 +339,7 @@ static Function [WAVE/Z DAQDataWave, WAVE/WAVE NIDataWave] DC_MakeAndGetDAQDataW Redimension/N=(numRows, numActiveChannels) ITCDataWave FastOp ITCDataWave = 0 - SetScale/P x 0, samplingInterval / 1000, "ms", ITCDataWave + SetScale/P x 0, samplingInterval * MICRO_TO_MILLI, "ms", ITCDataWave return [ITCDataWave, $""] break @@ -347,7 +347,7 @@ static Function [WAVE/Z DAQDataWave, WAVE/WAVE NIDataWave] DC_MakeAndGetDAQDataW WAVE/WAVE NIDataWave = GetDAQDataWave(device, dataAcqOrTP) Redimension/N=(numActiveChannels) NIDataWave - SetScale/P x 0, samplingInterval / 1000, "ms", NIDataWave + SetScale/P x 0, samplingInterval * MICRO_TO_MILLI, "ms", NIDataWave Make/FREE/N=(numActiveChannels) type = SWS_GetRawDataFPType(device) WAVE config = GetDAQConfigWave(device) @@ -378,7 +378,7 @@ static Function/WAVE DC_MakeNIChannelWave(device, numRows, samplingInterval, ind WAVE NIChannel = GetNIDAQChannelWave(device, index, dataAcqOrTP) Redimension/N=(numRows)/Y=(type) NIChannel FastOp NIChannel= 0 - SetScale/P x 0, samplingInterval / 1000, "ms", NIChannel + SetScale/P x 0, samplingInterval * MICRO_TO_MILLI, "ms", NIChannel return NIChannel End @@ -520,7 +520,7 @@ static Function DC_InitDataHoldingWave(wv, numRows, sampleInterval, numDACs, num Redimension/N=(numRows, numDACs + numADCs + numTTLs)/Y=(type) wv if(isFourierTransform) - SetScale/I x, 0, 1 / (2 * (sampleInterval / 1000)), "Hz", wv + SetScale/I x, 0, 1 / (2 * (sampleInterval * MICRO_TO_MILLI)), "Hz", wv else SetScale/P x, 0, sampleInterval, "ms", wv endif @@ -974,7 +974,7 @@ static Function DC_PrepareLBNEntries(string device, STRUCT DataConfigurationResu DC_DocumentChannelProperty(device, "Sampling interval multiplier", INDEP_HEADSTAGE, NaN, NaN, var=str2num(DAG_GetTextualValue(device, "Popup_Settings_SampIntMult"))) DC_DocumentChannelProperty(device, "Fixed frequency acquisition", INDEP_HEADSTAGE, NaN, NaN, var=str2numSafe(DAG_GetTextualValue(device, "Popup_Settings_FixedFreq"))) - DC_DocumentChannelProperty(device, "Sampling interval", INDEP_HEADSTAGE, NaN, NaN, var=s.samplingInterval * 1e-3) + DC_DocumentChannelProperty(device, "Sampling interval", INDEP_HEADSTAGE, NaN, NaN, var=s.samplingInterval * MICRO_TO_MILLI) DC_DocumentChannelProperty(device, "Delay onset user", INDEP_HEADSTAGE, NaN, NaN, var=DAG_GetNumericalValue(device, "setvar_DataAcq_OnsetDelayUser")) DC_DocumentChannelProperty(device, "Delay onset auto", INDEP_HEADSTAGE, NaN, NaN, var=GetValDisplayAsNum(device, "valdisp_DataAcq_OnsetDelayAuto")) @@ -2012,10 +2012,10 @@ static Function DC_ReturnTotalLengthIncrease(device, [onsetDelayUser, onsetDelay numActiveDACs = DC_NoOfChannelsSelected(device, CHANNEL_TYPE_DAC) samplingInterval = DAP_GetSampInt(device, DATA_ACQUISITION_MODE) distributedDAQ = DAG_GetNumericalValue(device, "Check_DataAcq1_DistribDaq") - onsetDelayUserVal = round(DAG_GetNumericalValue(device, "setvar_DataAcq_OnsetDelayUser") / (samplingInterval / 1000)) - onsetDelayAutoVal = round(GetValDisplayAsNum(device, "valdisp_DataAcq_OnsetDelayAuto") / (samplingInterval / 1000)) - terminationDelayVal = round(DAG_GetNumericalValue(device, "setvar_DataAcq_TerminationDelay") / (samplingInterval / 1000)) - distributedDAQDelayVal = round(DAG_GetNumericalValue(device, "setvar_DataAcq_dDAQDelay") / (samplingInterval / 1000)) + onsetDelayUserVal = round(DAG_GetNumericalValue(device, "setvar_DataAcq_OnsetDelayUser") / (samplingInterval * MICRO_TO_MILLI)) + onsetDelayAutoVal = round(GetValDisplayAsNum(device, "valdisp_DataAcq_OnsetDelayAuto") / (samplingInterval * MICRO_TO_MILLI)) + terminationDelayVal = round(DAG_GetNumericalValue(device, "setvar_DataAcq_TerminationDelay") / (samplingInterval * MICRO_TO_MILLI)) + distributedDAQDelayVal = round(DAG_GetNumericalValue(device, "setvar_DataAcq_dDAQDelay") / (samplingInterval * MICRO_TO_MILLI)) if(!ParamIsDefault(onsetDelayUser)) onsetDelayUser = onsetDelayUserVal diff --git a/Packages/MIES/MIES_MiesUtilities.ipf b/Packages/MIES/MIES_MiesUtilities.ipf index 494d19a724..315a4d9e8b 100644 --- a/Packages/MIES/MIES_MiesUtilities.ipf +++ b/Packages/MIES/MIES_MiesUtilities.ipf @@ -2679,7 +2679,7 @@ Function CreateTiledChannelGraph(string graph, WAVE config, variable sweepNo, WA endif if(tgs.dDAQDisplayMode) - samplingInt = GetSamplingInterval(config) * 1e-3 + samplingInt = GetSamplingInterval(config) * MICRO_TO_MILLI // dDAQ data taken with versions prior to // 778969b0 (DC_PlaceDataInITCDataWave: Document all other settings from the DAQ groupbox, 2015-11-26) diff --git a/Packages/MIES/MIES_Oscilloscope.ipf b/Packages/MIES/MIES_Oscilloscope.ipf index e7034b0cf4..ea60fdd2af 100644 --- a/Packages/MIES/MIES_Oscilloscope.ipf +++ b/Packages/MIES/MIES_Oscilloscope.ipf @@ -382,7 +382,7 @@ Function SCOPE_CreateGraph(device, dataAcqOrTP) if(gotDAQChan) Label/W=$graph bottomDAQ "Time DAQ (\\U)" NVAR stopCollectionPoint = $GetStopCollectionPoint(device) - sampInt = DAP_GetSampInt(device, DATA_ACQUISITION_MODE) / 1000 + sampInt = DAP_GetSampInt(device, DATA_ACQUISITION_MODE) * MICRO_TO_MILLI SetAxis/W=$graph bottomDAQ 0, stopCollectionPoint * sampInt ModifyGraph/W=$graph freePos(bottomDAQ)=-35 endif diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index 29f7b3cf6a..50f3d4aa47 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -1559,8 +1559,8 @@ Function TP_UpdateTPSettingsCalculated(string device) calculated[%baselineFrac] = TPSettings[%baselinePerc][INDEP_HEADSTAGE] / 100 calculated[%pulseLengthMS] = TPSettings[%durationMS][INDEP_HEADSTAGE] // here for completeness - calculated[%pulseLengthPointsTP] = trunc(TPSettings[%durationMS][INDEP_HEADSTAGE] / (DAP_GetSampInt(device, TEST_PULSE_MODE) / 1000)) - calculated[%pulseLengthPointsDAQ] = trunc(TPSettings[%durationMS][INDEP_HEADSTAGE] / (DAP_GetSampInt(device, DATA_ACQUISITION_MODE) / 1000)) + calculated[%pulseLengthPointsTP] = trunc(TPSettings[%durationMS][INDEP_HEADSTAGE] / (DAP_GetSampInt(device, TEST_PULSE_MODE) * MICRO_TO_MILLI)) + calculated[%pulseLengthPointsDAQ] = trunc(TPSettings[%durationMS][INDEP_HEADSTAGE] / (DAP_GetSampInt(device, DATA_ACQUISITION_MODE) * MICRO_TO_MILLI)) calculated[%totalLengthMS] = TP_CalculateTestPulseLength(calculated[%pulseLengthMS], calculated[%baselineFrac]) calculated[%totalLengthPointsTP] = trunc(TP_CalculateTestPulseLength(calculated[%pulseLengthPointsTP], calculated[%baselineFrac])) diff --git a/Packages/Testing-MIES/MIES_MiscTesting.ipf b/Packages/Testing-MIES/MIES_MiscTesting.ipf index ecd8702bb4..9ea4c23979 100644 --- a/Packages/Testing-MIES/MIES_MiscTesting.ipf +++ b/Packages/Testing-MIES/MIES_MiscTesting.ipf @@ -23,7 +23,7 @@ Function GetDimLabelVsCtrlInfo(win) endfor microSeconds = stopMSTimer(timerRefNum) - Print microSeconds/1000/numTrials, "milliseconds for dimLabelSearch" + Print microSeconds * MICRO_TO_MILLI / numTrials, "milliseconds for dimLabelSearch" timerRefNum = startMSTimer if (timerRefNum == -1) @@ -35,7 +35,7 @@ Function GetDimLabelVsCtrlInfo(win) endfor microSeconds = stopMSTimer(timerRefNum) - Print microSeconds/1000/numTrials, "milliseconds for controlInfo" + Print microSeconds * MICRO_TO_MILLI / numTrials, "milliseconds for controlInfo" End // This is a testing function to make sure the experiment documentation function is working correctly diff --git a/Packages/Testing-MIES/UTF_Epochs.ipf b/Packages/Testing-MIES/UTF_Epochs.ipf index f14e36eb9f..d10102ee05 100644 --- a/Packages/Testing-MIES/UTF_Epochs.ipf +++ b/Packages/Testing-MIES/UTF_Epochs.ipf @@ -404,7 +404,7 @@ static Function TestEpochsGeneric(device) // further checks of data from LabNotebook Entries WAVE/Z samplInt = GetLastSetting(numericalValues, sweepNo, "Sampling interval", DATA_ACQUISITION_MODE) CHECK_WAVE(samplInt, NUMERIC_WAVE) - samplingInterval = samplInt[INDEP_HEADSTAGE] * 1e-3 + samplingInterval = samplInt[INDEP_HEADSTAGE] * MICRO_TO_MILLI lastPoint = DimSize(sweep, ROWS) endTimeDAC = samplingInterval * lastPoint From 2fd1e0575ca103e45de9401a2e0c1b6eb2b7b198 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 19:01:43 +0200 Subject: [PATCH 14/35] Prefer MICRO_TO_ONE over / 1e6 --- Packages/MIES/MIES_AmplifierInteraction.ipf | 4 ++-- Packages/MIES/MIES_DAC-Hardware.ipf | 2 +- Packages/MIES/MIES_DataAcquisition.ipf | 2 +- Packages/MIES/MIES_Epochs.ipf | 4 ++-- Packages/MIES/MIES_PulseAveraging.ipf | 22 ++++++++++----------- Packages/MIES/MIES_Utilities.ipf | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index 6c44959ad2..9ad6921aed 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -147,7 +147,7 @@ Function AI_GetMCCScale(clampMode, func) case MCC_SETWHOLECELLCOMPRESIST_FUNC: return ONE_TO_MICRO case MCC_GETWHOLECELLCOMPRESIST_FUNC: - return 1e-6 + return MICRO_TO_ONE case MCC_SETWHOLECELLCOMPCAP_FUNC: return PICO_TO_ONE case MCC_GETWHOLECELLCOMPCAP_FUNC: @@ -162,7 +162,7 @@ Function AI_GetMCCScale(clampMode, func) return ONE_TO_MICRO case MCC_GETBRIDGEBALRESIST_FUNC: case MCC_AUTOBRIDGEBALANCE_FUNC: - return 1e-6 + return MICRO_TO_ONE case MCC_SETHOLDING_FUNC: return PICO_TO_ONE case MCC_GETHOLDING_FUNC: diff --git a/Packages/MIES/MIES_DAC-Hardware.ipf b/Packages/MIES/MIES_DAC-Hardware.ipf index e8c3f0e96c..1317ba685b 100644 --- a/Packages/MIES/MIES_DAC-Hardware.ipf +++ b/Packages/MIES/MIES_DAC-Hardware.ipf @@ -2140,7 +2140,7 @@ Function HW_NI_PrepareAcq(deviceID, mode, [data, dataFunc, config, configFunc, f endswitch endfor - sampleIntervall = config[0][%SamplingInterval] * 1E-6 + sampleIntervall = config[0][%SamplingInterval] * MICRO_TO_ONE fifoSize = HW_NI_FIFOSIZE/sampleIntervall NVAR fifopos = $GetFifoPosition(device) fifopos = 0 diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index 5d7932e36b..9d709ad1ce 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -173,7 +173,7 @@ Function DQ_StopDAQDeviceTimer(device) sprintf msg, "stopped timer %d", timerID DEBUGPRINT(msg) - return stopmstimer(timerID) / 1000000 + return stopmstimer(timerID) * MICRO_TO_ONE End /// @brief Stop any running background DAQ diff --git a/Packages/MIES/MIES_Epochs.ipf b/Packages/MIES/MIES_Epochs.ipf index d798b290cf..dacffaaa0b 100644 --- a/Packages/MIES/MIES_Epochs.ipf +++ b/Packages/MIES/MIES_Epochs.ipf @@ -545,8 +545,8 @@ static Function EP_AddEpoch(device, channel, epBegin, epEnd, epTags, epShortName i = EP_GetEpochCount(device, channel) EnsureLargeEnoughWave(epochWave, minimumSize = i + 1, dimension = ROWS) - startTimeStr = num2strHighPrec(epBegin / 1E6, precision = EPOCHTIME_PRECISION) - endTimeStr = num2strHighPrec(epEnd / 1E6, precision = EPOCHTIME_PRECISION) + startTimeStr = num2strHighPrec(epBegin * MICRO_TO_ONE, precision = EPOCHTIME_PRECISION) + endTimeStr = num2strHighPrec(epEnd * MICRO_TO_ONE, precision = EPOCHTIME_PRECISION) if(!cmpstr(startTimeStr, endTimeStr)) // don't add single point epochs diff --git a/Packages/MIES/MIES_PulseAveraging.ipf b/Packages/MIES/MIES_PulseAveraging.ipf index 5eae674761..482b8e56ec 100644 --- a/Packages/MIES/MIES_PulseAveraging.ipf +++ b/Packages/MIES/MIES_PulseAveraging.ipf @@ -1332,13 +1332,13 @@ Function PA_Update(string win, variable mode, [WAVE/Z additionalData]) #ifndef PA_HIDE_EXECUTION_TIME execTime_Update = stopmstimer(-2) - execTime_Start - sprintf execTime_outStr, "PA exec time: PA_PreProcessPulses %.3f s.\r", execTime_PreProcess / 1E6 + sprintf execTime_outStr, "PA exec time: PA_PreProcessPulses %.3f s.\r", execTime_PreProcess * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_ShowPulses %.3f s.\r", execTime_ShowPulses / 1E6 + sprintf execTime_outStr, "PA exec time: PA_ShowPulses %.3f s.\r", execTime_ShowPulses * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_ShowImage %.3f s.\r", execTime_ShowImage / 1E6 + sprintf execTime_outStr, "PA exec time: PA_ShowImage %.3f s.\r", execTime_ShowImage * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_Update %.3f s.\r", execTime_Update / 1E6 + sprintf execTime_outStr, "PA exec time: PA_Update %.3f s.\r", execTime_Update * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) #endif End @@ -2064,19 +2064,19 @@ static Function [STRUCT PulseAverageSetIndices pasi, variable needsPlotting] PA_ endif #ifndef PA_HIDE_EXECUTION_TIME - sprintf execTime_outStr, "PA exec time: PA_GenerateAllPulseWaves %.3f s.\r", execTime_GenerateAllPulseWaves / 1E6 + sprintf execTime_outStr, "PA exec time: PA_GenerateAllPulseWaves %.3f s.\r", execTime_GenerateAllPulseWaves * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_ApplyPulseSortingOrder %.3f s.\r", execTime_ApplyPulseSortingOrder / 1E6 + sprintf execTime_outStr, "PA exec time: PA_ApplyPulseSortingOrder %.3f s.\r", execTime_ApplyPulseSortingOrder * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_ResetWavesIfRequired %.3f s.\r", execTime_ResetWavesIfRequired / 1E6 + sprintf execTime_outStr, "PA exec time: PA_ResetWavesIfRequired %.3f s.\r", execTime_ResetWavesIfRequired * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_MarkFailedPulses %.3f s.\r", execTime_MarkFailedPulses / 1E6 + sprintf execTime_outStr, "PA exec time: PA_MarkFailedPulses %.3f s.\r", execTime_MarkFailedPulses * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_ZeroPulses %.3f s.\r", execTime_ZeroPulses / 1E6 + sprintf execTime_outStr, "PA exec time: PA_ZeroPulses %.3f s.\r", execTime_ZeroPulses * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_AutomaticTimeAlignment %.3f s.\r", execTime_AutomaticTimeAlignment / 1E6 + sprintf execTime_outStr, "PA exec time: PA_AutomaticTimeAlignment %.3f s.\r", execTime_AutomaticTimeAlignment * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) - sprintf execTime_outStr, "PA exec time: PA_CalculateAllAverages %.3f s.\r", execTime_CalculateAllAverages / 1E6 + sprintf execTime_outStr, "PA exec time: PA_CalculateAllAverages %.3f s.\r", execTime_CalculateAllAverages * MICRO_TO_ONE DEBUGPRINT(execTime_outStr) #endif diff --git a/Packages/MIES/MIES_Utilities.ipf b/Packages/MIES/MIES_Utilities.ipf index c69a137c3d..0590cffa40 100644 --- a/Packages/MIES/MIES_Utilities.ipf +++ b/Packages/MIES/MIES_Utilities.ipf @@ -4283,7 +4283,7 @@ End /// @brief Return a time in seconds with high precision, microsecond resolution, using an /// arbitrary zero point. Function RelativeNowHighPrec() - return stopmstimer(-2)/1e6 + return stopmstimer(-2) * MICRO_TO_ONE End /// @brief High precision version of the builtin Sleep command @@ -4716,7 +4716,7 @@ End Function GetElapsedTime(referenceTime) variable referenceTime - return (stopmstimer(-2) - referenceTime) / 1e6 + return (stopmstimer(-2) - referenceTime) * MICRO_TO_ONE End /// @brief Store the elapsed time in a wave From ffff907ef18919ec05a7dcc78b2d2617657bfa77 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 19:02:42 +0200 Subject: [PATCH 15/35] Prefer MILLI_TO_MICRO over 1e3 --- Packages/MIES/MIES_DataConfigurator.ipf | 2 +- Packages/MIES/MIES_Epochs.ipf | 12 ++++++------ Packages/MIES/MIES_MiesUtilities.ipf | 2 +- Packages/MIES/MIES_PressureControl.ipf | 2 +- Packages/MIES/MIES_SamplingInterval.ipf | 14 +++++++------- Packages/MIES/MIES_WaveDataFolderGetters.ipf | 2 +- Packages/Testing-MIES/UTF_BasicHardwareTests.ipf | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Packages/MIES/MIES_DataConfigurator.ipf b/Packages/MIES/MIES_DataConfigurator.ipf index 71d0f12751..c6eec5d765 100644 --- a/Packages/MIES/MIES_DataConfigurator.ipf +++ b/Packages/MIES/MIES_DataConfigurator.ipf @@ -722,7 +722,7 @@ static Function DC_GetDecimationFactor(device, dataAcqOrTP) string device variable dataAcqOrTP - return DAP_GetSampInt(device, dataAcqOrTP) / (WAVEBUILDER_MIN_SAMPINT * 1000) + return DAP_GetSampInt(device, dataAcqOrTP) / (WAVEBUILDER_MIN_SAMPINT * MILLI_TO_MICRO) End /// @brief Returns the longest sweep in a stimulus set across the given channel type diff --git a/Packages/MIES/MIES_Epochs.ipf b/Packages/MIES/MIES_Epochs.ipf index dacffaaa0b..738602e114 100644 --- a/Packages/MIES/MIES_Epochs.ipf +++ b/Packages/MIES/MIES_Epochs.ipf @@ -104,7 +104,7 @@ Function EP_CollectEpochInfo(string device, STRUCT DataConfigurationResult &s) epochBegin = startOffset * s.samplingInterval if(s.distributedDAQOptOv && s.offsets[i] > 0) - epochOffset = s.offsets[i] * 1000 + epochOffset = s.offsets[i] * MILLI_TO_MICRO tags = ReplaceStringByKey(EPOCH_TYPE_KEY, "", EPOCH_BASELINE_REGION_KEY, STIMSETKEYNAME_SEP, EPOCHNAME_SEP) @@ -200,8 +200,8 @@ static Function EP_AddEpochsFromOodDAQRegions(device, channel, oodDAQRegions, st Make/FREE/N=(numRegions) epochIndexer tags = ReplaceStringByKey(EPOCH_TYPE_KEY, "", "oodDAQ", STIMSETKEYNAME_SEP, EPOCHNAME_SEP) - epochIndexer[] = EP_AddEpoch(device, channel, str2num(StringFromList(0, regions[p], "-")) * 1E3 + stimsetBegin, \ - str2num(StringFromList(1, regions[p], "-")) * 1E3 + stimsetBegin, \ + epochIndexer[] = EP_AddEpoch(device, channel, str2num(StringFromList(0, regions[p], "-")) * MILLI_TO_MICRO + stimsetBegin, \ + str2num(StringFromList(1, regions[p], "-")) * MILLI_TO_MICRO + stimsetBegin, \ ReplaceNumberByKey(EPOCH_OODDAQ_REGION_KEY, tags, p, STIMSETKEYNAME_SEP, EPOCHNAME_SEP), \ EPOCH_SN_OODAQ + num2str(p), \ 2, lowerLimit = stimsetBegin, upperLimit = stimsetEnd) @@ -314,13 +314,13 @@ static Function EP_AddEpochsFromStimSetNote(device, channel, stimset, stimsetBeg shortNameEpTypePT = shortNameEp + "_" + EPOCH_SN_PULSETRAIN shortNameEpTypePTBaseline = shortNameEpTypePT + "_" + EPOCH_SN_PULSETRAINBASETRAIL WAVE startTimes = WB_GetPulsesFromPTSweepEpoch(stimset, sweep, epochNr, pulseToPulseLength) - startTimes *= 1000 + startTimes *= MILLI_TO_MICRO numPulses = DimSize(startTimes, ROWS) if(numPulses) Duplicate/FREE startTimes, ptp - ptp[] = pulseToPulseLength ? pulseToPulseLength * 1000 : startTimes[p] - startTimes[limit(p - 1, 0, Inf)] + ptp[] = pulseToPulseLength ? pulseToPulseLength * MILLI_TO_MICRO : startTimes[p] - startTimes[limit(p - 1, 0, Inf)] pulseDuration = WB_GetWaveNoteEntryAsNumber(stimNote, EPOCH_ENTRY, key="Pulse duration", sweep=sweep, epoch=epochNr) - pulseDuration *= 1000 + pulseDuration *= MILLI_TO_MICRO // with flipping we iterate the pulses from large to small time points diff --git a/Packages/MIES/MIES_MiesUtilities.ipf b/Packages/MIES/MIES_MiesUtilities.ipf index 315a4d9e8b..aaa4bb71fb 100644 --- a/Packages/MIES/MIES_MiesUtilities.ipf +++ b/Packages/MIES/MIES_MiesUtilities.ipf @@ -7580,7 +7580,7 @@ Function/WAVE RecreateConfigWaveFromLBN(string device, WAVE numericalValues, WAV samplingInterval = GetSamplingIntervalFromLBN(numericalValues, sweepNo) - configWave[][%SamplingInterval] = samplingInterval * 1000 + configWave[][%SamplingInterval] = samplingInterval * MILLI_TO_MICRO // always 0, see DC_PlaceDataInDAQConfigWave configWave[][%DecimationMode] = 0 diff --git a/Packages/MIES/MIES_PressureControl.ipf b/Packages/MIES/MIES_PressureControl.ipf index c4918af161..867105e7b3 100644 --- a/Packages/MIES/MIES_PressureControl.ipf +++ b/Packages/MIES/MIES_PressureControl.ipf @@ -1166,7 +1166,7 @@ static Function P_DataAcq(device, headStage) // wait some time before opening the solenoid startTime = stopmstimer(-2) - duration = PRESSURE_TTL_HIGH_START * WAVEBUILDER_MIN_SAMPINT * 1000 + duration = PRESSURE_TTL_HIGH_START * WAVEBUILDER_MIN_SAMPINT * MILLI_TO_MICRO do elapsedTime = stopmstimer(-2) - startTime if(elapsedTime >= duration) diff --git a/Packages/MIES/MIES_SamplingInterval.ipf b/Packages/MIES/MIES_SamplingInterval.ipf index 21a9aaad5a..5eda1ec151 100644 --- a/Packages/MIES/MIES_SamplingInterval.ipf +++ b/Packages/MIES/MIES_SamplingInterval.ipf @@ -195,10 +195,10 @@ static Function SI_FindMatchingTableEntry(wv, ac) printf "Warning! Could not find a matching entry for the channel combination!\r" print ac - printf "Using a sampling interval of %g micoseconds\r", SAMPLING_INTERVAL_FALLBACK * 1000 + printf "Using a sampling interval of %g microseconds\r", SAMPLING_INTERVAL_FALLBACK * MILLI_TO_MICRO ControlWindowToFront() - return SAMPLING_INTERVAL_FALLBACK * 1000 + return SAMPLING_INTERVAL_FALLBACK * MILLI_TO_MICRO End /// @brief Try to load the lookup wave for the minimum sampling @@ -436,7 +436,7 @@ static Function SI_TestSampInt(device) for(i=1; i < numTries; i += 1) if(numConsecutive == -1) - sampInt = WAVEBUILDER_MIN_SAMPINT * i * 1000 + sampInt = WAVEBUILDER_MIN_SAMPINT * i * MILLI_TO_MICRO else sampInt *= 2 endif @@ -529,7 +529,7 @@ static Function SI_NI_CalculateMinSampInterval(device) string device WAVE channelStatus = DAG_GetChannelState(device, CHANNEL_TYPE_ADC) - return HARDWARE_NI_DAC_MIN_SAMPINT * 1000 * sum(channelStatus) + return HARDWARE_NI_DAC_MIN_SAMPINT * MILLI_TO_MICRO * sum(channelStatus) End /// @brief Calculate the minimum sampling interval for ITC hardware using the lookup waves on disk @@ -552,8 +552,8 @@ static Function SI_ITC_CalculateMinSampInterval(device, dataAcqOrTP) WAVE/Z lut = SI_GetMinSampIntWave(device) if(!WaveExists(lut)) printf "Warning: Could not load the minimum sampling interval table from disk\r" - printf "Falling back to %g microseconds as sampling interval\r", SAMPLING_INTERVAL_FALLBACK * 1000 - return SAMPLING_INTERVAL_FALLBACK * 1000 + printf "Falling back to %g microseconds as sampling interval\r", SAMPLING_INTERVAL_FALLBACK * MILLI_TO_MICRO + return SAMPLING_INTERVAL_FALLBACK * MILLI_TO_MICRO endif STRUCT ActiveChannels ac @@ -567,7 +567,7 @@ static Function SI_ITC_CalculateMinSampInterval(device, dataAcqOrTP) endif if(numActiveChannels == 0) - return HARDWARE_ITC_MIN_SAMPINT * 1000 + return HARDWARE_ITC_MIN_SAMPINT * MILLI_TO_MICRO endif strswitch(deviceType) diff --git a/Packages/MIES/MIES_WaveDataFolderGetters.ipf b/Packages/MIES/MIES_WaveDataFolderGetters.ipf index bdb75b4fd8..b6ee69c1b9 100644 --- a/Packages/MIES/MIES_WaveDataFolderGetters.ipf +++ b/Packages/MIES/MIES_WaveDataFolderGetters.ipf @@ -4369,7 +4369,7 @@ Function/WAVE P_GetITCChanConfig(device) wv[2][1] = -1 wv[3][1] = -1 - wv[][2] = WAVEBUILDER_MIN_SAMPINT * 1000 + wv[][2] = WAVEBUILDER_MIN_SAMPINT * MILLI_TO_MICRO SetDimLabel ROWS, 0, DA, wv SetDimLabel ROWS, 1, AD, wv diff --git a/Packages/Testing-MIES/UTF_BasicHardwareTests.ipf b/Packages/Testing-MIES/UTF_BasicHardwareTests.ipf index 69847220f7..f8c41f24d0 100644 --- a/Packages/Testing-MIES/UTF_BasicHardwareTests.ipf +++ b/Packages/Testing-MIES/UTF_BasicHardwareTests.ipf @@ -5041,7 +5041,7 @@ Function CheckTPBaseline_REENTRY([WAVE/WAVE pair]) samplingInterval = GetValDisplayAsNum(device, "ValDisp_DataAcq_SamplingInt") - CHECK_CLOSE_VAR(DimSize(singleTP, ROWS), (MIES_TP#TP_CalculateTestPulseLength(pulseDuration, baselineFraction) * 1e3) / samplingInterval, tol = 0.1) + CHECK_CLOSE_VAR(DimSize(singleTP, ROWS), (MIES_TP#TP_CalculateTestPulseLength(pulseDuration, baselineFraction) * MILLI_TO_MICRO) / samplingInterval, tol = 0.1) endfor End From d4edaac7440a990286aa0870c7805891594ce264 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:04:39 +0200 Subject: [PATCH 16/35] Prefer ONE_TO_PERCENT over * 100 --- ...isFunctions_MultiPatchSeq_SpikeControl.ipf | 2 +- .../MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 2 +- Packages/MIES/MIES_PulseAveraging.ipf | 4 ++-- Packages/MIES/MIES_TestPulse.ipf | 2 +- Packages/Testing-MIES/UTF_PA_Tests.ipf | 20 +++++++++---------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf index 6b35b0841a..a51f9fdcb2 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf @@ -319,7 +319,7 @@ static Function [WAVE/T spikeNumbersLBN, WAVE/T spikePositionsLBN] SC_GetSpikeNu if(numSpikes > 0) // convert spike positions to 0-100 coordinates (aka pulse active coordinate system) - Make/FREE/D/N=(numSpikes) spikePositionsPUCrd = (spikePositions[p] - pulseStart) / (pulseEnd - pulseStart) * 100 + Make/FREE/D/N=(numSpikes) spikePositionsPUCrd = (spikePositions[p] - pulseStart) / (pulseEnd - pulseStart) * ONE_TO_PERCENT // round to one decimal digit spikePositionsPUCrd[] = round(spikePositionsPUCrd[p] * 10) / 10 diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 19957f1aa9..72085b2fb0 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -2011,7 +2011,7 @@ Function PSQ_DAScale(device, s) Make/FREE/D/N=2 W_sigma = NaN endif - fISlope[s.headstage] = coefWave[1]/ONE_TO_PICO * 100 + fISlope[s.headstage] = coefWave[1]/ONE_TO_PICO * ONE_TO_PERCENT // % Hz/pA WAVE fitWave = $(CleanupName("fit_" + NameOfWave(spikeFrequencies), 0)) diff --git a/Packages/MIES/MIES_PulseAveraging.ipf b/Packages/MIES/MIES_PulseAveraging.ipf index 482b8e56ec..50ee196c67 100644 --- a/Packages/MIES/MIES_PulseAveraging.ipf +++ b/Packages/MIES/MIES_PulseAveraging.ipf @@ -1692,8 +1692,8 @@ static Function/S PA_ShowPulses(string win, STRUCT PulseAverageSettings &pa, STR if(pulseHasFailed && (i == j) && (sweepNo == lastSweep)) sprintf tagName "tag_%s_AD%d_R%d", vertAxis, channelNumber, region if(WhichListItem(tagName, AnnotationList(graph)) == -1) - xPos = ((i + 1) / numActive) * 100 - 2 - yPos = ((j + 1) / numActive) * 100 - (1 / numActive) * 100 / 2 + xPos = ((i + 1) / numActive) * ONE_TO_PERCENT - 2 + yPos = ((j + 1) / numActive) * ONE_TO_PERCENT - (1 / numActive) * ONE_TO_PERCENT / 2 Textbox/W=$graph/K/N=$tagName Textbox/W=$graph/N=$tagName/F=0/A=LT/L=0/X=(xPos)/Y=(ypos)/E=2 "☣️" endif diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index 50f3d4aa47..9d30a83423 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -381,7 +381,7 @@ static Function TP_AutoBaseline(string device, variable headstage, WAVE TPResult // now use the maximum of all baselines WAVE baselineFracClean = ZapNaNs(baselineFrac) - TPSettings[%baselinePerc][INDEP_HEADSTAGE] = RoundNumber(WaveMax(baselineFracClean) * 100, TP_SET_PRECISION) + TPSettings[%baselinePerc][INDEP_HEADSTAGE] = RoundNumber(WaveMax(baselineFracClean) * ONE_TO_PERCENT, TP_SET_PRECISION) DAP_TPSettingsToGUI(device, entry = "baselinePerc") endif diff --git a/Packages/Testing-MIES/UTF_PA_Tests.ipf b/Packages/Testing-MIES/UTF_PA_Tests.ipf index 3c2c7ab0cc..791b7853ea 100644 --- a/Packages/Testing-MIES/UTF_PA_Tests.ipf +++ b/Packages/Testing-MIES/UTF_PA_Tests.ipf @@ -595,14 +595,14 @@ static Function PAT_VerifyImageAxes(string graph, string traceName, variable ach xLayoutCoord = multiGraphMode ? 0 : aregion - 1 yLayoutCoord = multiGraphMode ? 0 : achan - 1 - ref_from = xLayoutCoord * 100 / sqrt(layoutSize) - ref_to = (xLayoutCoord + 1) * 100 / sqrt(layoutSize) + ref_from = xLayoutCoord * ONE_TO_PERCENT / sqrt(layoutSize) + ref_to = (xLayoutCoord + 1) * ONE_TO_PERCENT / sqrt(layoutSize) [from, to] = PAT_GetAxisLayout(graph, xaxis) CHECK_GE_VAR(from, ref_from) CHECK_LE_VAR(to, ref_to) - ref_to = 100 - yLayoutCoord * 100 / sqrt(layoutSize) - ref_from = 100 - (yLayoutCoord + 1) * 100 / sqrt(layoutSize) + ref_to = 100 - yLayoutCoord * ONE_TO_PERCENT / sqrt(layoutSize) + ref_from = 100 - (yLayoutCoord + 1) * ONE_TO_PERCENT / sqrt(layoutSize) [from, to] = PAT_GetAxisLayout(graph, yaxis) CHECK_GE_VAR(from, ref_from) CHECK_LE_VAR(to, ref_to) @@ -648,15 +648,15 @@ static Function PAT_VerifyTraceAxes(string graph, string traceName, variable ach xLayoutCoord = multiGraphMode ? 0 : aregion - 1 yLayoutCoord = multiGraphMode ? 0 : achan - 1 - ref_from = xLayoutCoord * 100 / sqrt(layoutSize) - ref_to = (xLayoutCoord + 1) * 100 / sqrt(layoutSize) + ref_from = xLayoutCoord * ONE_TO_PERCENT / sqrt(layoutSize) + ref_to = (xLayoutCoord + 1) * ONE_TO_PERCENT / sqrt(layoutSize) [from, to] = PAT_GetAxisLayout(graph, xaxis) // TOOD rewrite using PAT_CHECKSmallOrClose or CHECK_SMALL_VAR/CHECK_CLOSE_VAR CHECK_GE_VAR(from, ref_from) CHECK_LE_VAR(to, ref_to) - ref_to = 100 - yLayoutCoord * 100 / sqrt(layoutSize) - ref_from = 100 - (yLayoutCoord + 1) * 100 / sqrt(layoutSize) + ref_to = 100 - yLayoutCoord * ONE_TO_PERCENT / sqrt(layoutSize) + ref_from = 100 - (yLayoutCoord + 1) * ONE_TO_PERCENT / sqrt(layoutSize) [from, to] = PAT_GetAxisLayout(graph, yaxis) // TOOD rewrite using PAT_CHECKSmallOrClose or CHECK_SMALL_VAR/CHECK_CLOSE_VAR CHECK_GE_VAR(from, ref_from) @@ -760,8 +760,8 @@ static Function [variable from, variable to] PAT_GetAxisLayout(string graph, str return [0, 100] endif - from = GetNumFromModifyStr(layoutLine, "axisEnab", "{", 0) * 100 - to = GetNumFromModifyStr(layoutLine, "axisEnab", "{", 1) * 100 + from = GetNumFromModifyStr(layoutLine, "axisEnab", "{", 0) * ONE_TO_PERCENT + to = GetNumFromModifyStr(layoutLine, "axisEnab", "{", 1) * ONE_TO_PERCENT return [from, to] End From e0b173627fba89a652c715b8d2614eab28e467ba Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:05:11 +0200 Subject: [PATCH 17/35] Prefer PERCENT_TO_ONE over / 100 --- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 2 +- Packages/MIES/MIES_DAEphys.ipf | 2 +- Packages/MIES/MIES_DataAcquisition.ipf | 2 +- Packages/MIES/MIES_Oscilloscope.ipf | 2 +- Packages/MIES/MIES_TestPulse.ipf | 4 ++-- Packages/Testing-MIES/UTF_PatchSeqDAScale.ipf | 6 +++--- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index 72085b2fb0..f450e727b7 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -1955,7 +1955,7 @@ Function PSQ_DAScale(device, s) minimumSpikeCount = AFH_GetAnalysisParamNumerical("MinimumSpikeCount", s.params) maximumSpikeCount = AFH_GetAnalysisParamNumerical("MaximumSpikeCount", s.params) - daScaleModifierParam = AFH_GetAnalysisParamNumerical("DAScaleModifier", s.params) / 100 + daScaleModifierParam = AFH_GetAnalysisParamNumerical("DAScaleModifier", s.params) * PERCENT_TO_ONE if(!IsNaN(daScaleModifierParam)) if(numberOfSpikes < minimumSpikeCount) daScaleModifier = +daScaleModifierParam diff --git a/Packages/MIES/MIES_DAEphys.ipf b/Packages/MIES/MIES_DAEphys.ipf index 2986747d31..8d3e3a084c 100644 --- a/Packages/MIES/MIES_DAEphys.ipf +++ b/Packages/MIES/MIES_DAEphys.ipf @@ -4075,7 +4075,7 @@ Function DAP_UpdateOnsetDelay(device) if(DAG_GetNumericalValue(device, "Check_Settings_InsertTP")) pulseDuration = DAG_GetNumericalValue(device, "SetVar_DataAcq_TPDuration") - baselineFrac = DAG_GetNumericalValue(device, "SetVar_DataAcq_TPBaselinePerc") / 100 + baselineFrac = DAG_GetNumericalValue(device, "SetVar_DataAcq_TPBaselinePerc") * PERCENT_TO_ONE testPulseDurWithBL = TP_CalculateTestPulseLength(pulseDuration, baselineFrac) else testPulseDurWithBL = 0 diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index 9d709ad1ce..b8da937631 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -305,7 +305,7 @@ Function DQ_ApplyAutoBias(device, TPResults) DEBUGPRINT("current[A]=", var=current) // only use part of the calculated current, as BaselineSSAvg holds // an overestimate for small buffer sizes - current *= DAG_GetNumericalValue(device, "setvar_Settings_AutoBiasPerc") / 100 + current *= DAG_GetNumericalValue(device, "setvar_Settings_AutoBiasPerc") * PERCENT_TO_ONE // check if holding is enabled. If it is not, ignore holding current value. if(AI_SendToAmp(device, headStage, I_CLAMP_MODE, MCC_GETHOLDINGENABLE_FUNC, NaN)) diff --git a/Packages/MIES/MIES_Oscilloscope.ipf b/Packages/MIES/MIES_Oscilloscope.ipf index ea60fdd2af..fc4d94f6bd 100644 --- a/Packages/MIES/MIES_Oscilloscope.ipf +++ b/Packages/MIES/MIES_Oscilloscope.ipf @@ -143,7 +143,7 @@ Function SCOPE_UpdateGraph(device, dataAcqOrTP) WAVE TPData = GetOscilloscopeWave(device) endif - additionalSpacing = DAG_GetNumericalValue(device, "setvar_Settings_OsciUpdExt") / 100 + additionalSpacing = DAG_GetNumericalValue(device, "setvar_Settings_OsciUpdExt") * PERCENT_TO_ONE // scale the left AD axes for(i = 0; i < numADCs; i += 1) diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index 9d30a83423..dbe30c30bf 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -632,7 +632,7 @@ static Function TP_AutoAmplitudeAndBaseline(string device, WAVE TPResults, varia continue endif - scalar = TPSettings[%autoTPPercentage][INDEP_HEADSTAGE] / 100 + scalar = TPSettings[%autoTPPercentage][INDEP_HEADSTAGE] * PERCENT_TO_ONE current = (targetVoltage - voltage) / resistance @@ -1556,7 +1556,7 @@ Function TP_UpdateTPSettingsCalculated(string device) calculated = NaN // update the calculated values - calculated[%baselineFrac] = TPSettings[%baselinePerc][INDEP_HEADSTAGE] / 100 + calculated[%baselineFrac] = TPSettings[%baselinePerc][INDEP_HEADSTAGE] * PERCENT_TO_ONE calculated[%pulseLengthMS] = TPSettings[%durationMS][INDEP_HEADSTAGE] // here for completeness calculated[%pulseLengthPointsTP] = trunc(TPSettings[%durationMS][INDEP_HEADSTAGE] / (DAP_GetSampInt(device, TEST_PULSE_MODE) * MICRO_TO_MILLI)) diff --git a/Packages/Testing-MIES/UTF_PatchSeqDAScale.ipf b/Packages/Testing-MIES/UTF_PatchSeqDAScale.ipf index 8cf10e0afa..664f48ad7e 100644 --- a/Packages/Testing-MIES/UTF_PatchSeqDAScale.ipf +++ b/Packages/Testing-MIES/UTF_PatchSeqDAScale.ipf @@ -2320,10 +2320,10 @@ Function PS_DS_Supra5_REENTRY([str]) Make/FREE/D/N=(numEntries) stimScale = GetLastSetting(numericalValues, sweeps[p], STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)[PSQ_TEST_HEADSTAGE] Make/FREE/D/N=(numEntries) stimScaleRef = {20 + PSQ_DS_OFFSETSCALE_FAKE, \ - 40 * (1 + DAScaleModifierPerc/100) + PSQ_DS_OFFSETSCALE_FAKE, \ - 60 * (1 + DAScaleModifierPerc/100) + PSQ_DS_OFFSETSCALE_FAKE, \ + 40 * (1 + DAScaleModifierPerc * PERCENT_TO_ONE) + PSQ_DS_OFFSETSCALE_FAKE, \ + 60 * (1 + DAScaleModifierPerc * PERCENT_TO_ONE) + PSQ_DS_OFFSETSCALE_FAKE, \ 80 + PSQ_DS_OFFSETSCALE_FAKE, \ - 100 * (1 - DAScaleModifierPerc/100) + PSQ_DS_OFFSETSCALE_FAKE} + 100 * (1 - DAScaleModifierPerc * PERCENT_TO_ONE) + PSQ_DS_OFFSETSCALE_FAKE} // Explanations for the stimscale: // 1. initial From 94455d0b0e3b945d8e8eb690e7ee9a5c33421213 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:06:09 +0200 Subject: [PATCH 18/35] Prefer ONE_TO_KILO over / 1000 --- Packages/Testing-MIES/UTF_TestNWBExportV2.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf b/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf index 7c65ee2b8e..7d99ae39ec 100644 --- a/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf +++ b/Packages/Testing-MIES/UTF_TestNWBExportV2.ipf @@ -383,7 +383,7 @@ static Function TestTimeSeries(fileID, filepath, device, groupID, channel, sweep // and rate rate = ReadAttributeAsNumber(groupID, channel + "/starting_time", "rate") - rate_ref = 1 / (DimDelta(loadedFromNWB, ROWS)/1000) + rate_ref = 1 / (DimDelta(loadedFromNWB, ROWS) * ONE_TO_KILO) CHECK_CLOSE_VAR(rate, rate_ref, tol=1e-7) samplingInterval = GetLastSettingIndep(numericalValues, sweep, "Sampling interval", DATA_ACQUISITION_MODE) From fc2e1ced2d3dc563a7fb3153c351c612e5ccda4e Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:11:39 +0200 Subject: [PATCH 19/35] Packages/MIES: Mark false-positive decimal multipliers as NOLINT This is code which is correct as it is. --- Packages/MIES/MIES_AmplifierInteraction.ipf | 5 +++-- ...ES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf | 2 +- Packages/MIES/MIES_GuiPopupMenuExt.ipf | 2 +- Packages/MIES/MIES_MiesUtilities.ipf | 2 +- Packages/MIES/MIES_SweepFormula.ipf | 2 +- Packages/MIES/MIES_Utilities.ipf | 2 +- Packages/MIES/MIES_WaveBuilder.ipf | 10 +++++----- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Packages/MIES/MIES_AmplifierInteraction.ipf b/Packages/MIES/MIES_AmplifierInteraction.ipf index 9ad6921aed..ca78d9f296 100644 --- a/Packages/MIES/MIES_AmplifierInteraction.ipf +++ b/Packages/MIES/MIES_AmplifierInteraction.ipf @@ -718,8 +718,9 @@ static Function AI_MIESAutoPipetteOffset(device, headStage) clampMode = DAG_GetHeadstageMode(device, headStage) ASSERT(clampMode == V_CLAMP_MODE || clampMode == I_CLAMP_MODE, "Headstage must be in VC/IC mode to use this function") - //calculate delta current to reach zero - vdelta = (TPResults[%BaselineSteadyState][headstage] * TPResults[%ResistanceSteadyState][headstage]) / 1000 // set to mV + // calculate delta current to reach zero + // @todo check for IC + vdelta = ((TPResults[%BaselineSteadyState][headstage] * PICO_TO_ONE) * (TPResults[%ResistanceSteadyState][headstage] * MEGA_TO_ONE)) * ONE_TO_MILLI // get current DC V offset offset = AI_SendToAmp(device, headStage, clampMode, MCC_GETPIPETTEOFFSET_FUNC, nan) // add delta to current DC V offset diff --git a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf index a51f9fdcb2..df2a007d53 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq_SpikeControl.ipf @@ -321,7 +321,7 @@ static Function [WAVE/T spikeNumbersLBN, WAVE/T spikePositionsLBN] SC_GetSpikeNu // convert spike positions to 0-100 coordinates (aka pulse active coordinate system) Make/FREE/D/N=(numSpikes) spikePositionsPUCrd = (spikePositions[p] - pulseStart) / (pulseEnd - pulseStart) * ONE_TO_PERCENT // round to one decimal digit - spikePositionsPUCrd[] = round(spikePositionsPUCrd[p] * 10) / 10 + spikePositionsPUCrd[] = round(spikePositionsPUCrd[p] * 10) / 10 // NOLINT SC_AddPulseRegionLBNEntries(spikePositionsLBN, pulseIndex, region, headstageProp, data = spikePositionsPUCrd) endif diff --git a/Packages/MIES/MIES_GuiPopupMenuExt.ipf b/Packages/MIES/MIES_GuiPopupMenuExt.ipf index 0966d63fe1..fe48b4b5b1 100644 --- a/Packages/MIES/MIES_GuiPopupMenuExt.ipf +++ b/Packages/MIES/MIES_GuiPopupMenuExt.ipf @@ -590,7 +590,7 @@ Function/WAVE PEXT_SplitToSubMenus(menuList[, method]) // we have up to MAX_SUBMENUS submenues // - more submenues with fewer entries are better than only a few ones with many entries - numPerSubEntry = ceil(numItems / MAX_SUBMENUS / 10) * 10 + numPerSubEntry = ceil(numItems / MAX_SUBMENUS / 10) * 10 // NOLINT method = ParamIsDefault(method) ? PEXT_SUBSPLIT_DEFAULT : method diff --git a/Packages/MIES/MIES_MiesUtilities.ipf b/Packages/MIES/MIES_MiesUtilities.ipf index aaa4bb71fb..6900416e40 100644 --- a/Packages/MIES/MIES_MiesUtilities.ipf +++ b/Packages/MIES/MIES_MiesUtilities.ipf @@ -7603,7 +7603,7 @@ static Function GetSamplingIntervalFromLBN(WAVE numericalValues, variable sweepN samplingInterval = GetLastSettingIndep(numericalValues, sweepNo, "Sampling interval", DATA_ACQUISITION_MODE) // convert to integer as that is stored in the config wave - return round(samplingInterval * 1000) / 1000 + return round(samplingInterval * 1000) / 1000 // NOLINT End /// @brief Set `ChannelNumber` and `ChannelType` in configWave diff --git a/Packages/MIES/MIES_SweepFormula.ipf b/Packages/MIES/MIES_SweepFormula.ipf index 6096f87bf7..63794cb364 100644 --- a/Packages/MIES/MIES_SweepFormula.ipf +++ b/Packages/MIES/MIES_SweepFormula.ipf @@ -1556,7 +1556,7 @@ static Function/S SF_PrepareDataForResultsWave(WAVE data) endif // assuming 100 sweeps on average - maxEntries = 100 * NUM_HEADSTAGES * 10 + maxEntries = 100 * NUM_HEADSTAGES * 10 // NOLINT numEntries = numpnts(dataTxT) if(numpnts(dataTxT) > maxEntries) diff --git a/Packages/MIES/MIES_Utilities.ipf b/Packages/MIES/MIES_Utilities.ipf index 0590cffa40..f33894121f 100644 --- a/Packages/MIES/MIES_Utilities.ipf +++ b/Packages/MIES/MIES_Utilities.ipf @@ -2462,7 +2462,7 @@ End /// \endrst Function NewRandomSeed() - SetRandomSeed/BETR=1 ((stopmstimer(-2) * 10 ) & 0xffffffff) / 2^32 + SetRandomSeed/BETR=1 ((stopmstimer(-2) * 10 ) & 0xffffffff) / 2^32 // NOLINT End diff --git a/Packages/MIES/MIES_WaveBuilder.ipf b/Packages/MIES/MIES_WaveBuilder.ipf index cc54135a18..810ac1fe05 100644 --- a/Packages/MIES/MIES_WaveBuilder.ipf +++ b/Packages/MIES/MIES_WaveBuilder.ipf @@ -1329,8 +1329,8 @@ static Function WB_TrigSegment(pa) Wave SegmentWave = GetSegmentWave(duration=pa.duration) if(pa.logChirp) - k0 = ln(pa.frequency / 1000) - k1 = (ln(pa.endFrequency / 1000) - k0) / (pa.duration) + k0 = ln(pa.frequency / 1000) // NOLINT + k1 = (ln(pa.endFrequency / 1000) - k0) / (pa.duration) // NOLINT k2 = 2 * pi * e^k0 / k1 k3 = mod(k2, 2 * pi) // LH040117: start on rising edge of sin and don't try to round. if(pa.trigFuncType == 0) @@ -1340,9 +1340,9 @@ static Function WB_TrigSegment(pa) endif else if(pa.trigFuncType == 0) - MultiThread SegmentWave = pa.amplitude * sin(2 * Pi * (pa.frequency * 1000) * (5 / 1000000000) * p) + MultiThread SegmentWave = pa.amplitude * sin(2 * Pi * (pa.frequency * 1000) * (5 / 1000000000) * p) // NOLINT else - MultiThread SegmentWave = pa.amplitude * cos(2 * Pi * (pa.frequency * 1000) * (5 / 1000000000) * p) + MultiThread SegmentWave = pa.amplitude * cos(2 * Pi * (pa.frequency * 1000) * (5 / 1000000000) * p) // NOLINT endif endif End @@ -1352,7 +1352,7 @@ static Function WB_SawToothSegment(pa) Wave SegmentWave = GetSegmentWave(duration=pa.duration) - MultiThread SegmentWave = pa.amplitude * sawtooth(2 * Pi * (pa.frequency * 1000) * (5 / 1000000000) * p) + MultiThread SegmentWave = pa.amplitude * sawtooth(2 * Pi * (pa.frequency * 1000) * (5 / 1000000000) * p) // NOLINT End static Function WB_CreatePulse(wv, pulseType, amplitude, first, last) From 40d95298e8930fba12ce4bebc0dfcf60b809739b Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 13 Apr 2022 17:08:19 +0200 Subject: [PATCH 20/35] TP_TSAnalysis: Use conversions constants instead of NOLINT --- Packages/MIES/MIES_TestPulse.ipf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/MIES/MIES_TestPulse.ipf b/Packages/MIES/MIES_TestPulse.ipf index dbe30c30bf..1818916d49 100644 --- a/Packages/MIES/MIES_TestPulse.ipf +++ b/Packages/MIES/MIES_TestPulse.ipf @@ -991,11 +991,11 @@ threadsafe Function/DF TP_TSAnalysis(dfrInp) #endif if(clampMode == I_CLAMP_MODE) - outData[1] = (avgTPSS - avgBaselineSS) / clampAmp * 1000 - outData[2] = (avgInst - avgBaselineSS) / clampAmp * 1000 + outData[1] = (avgTPSS - avgBaselineSS) * MILLI_TO_ONE / (clampAmp * PICO_TO_ONE) * ONE_TO_MEGA + outData[2] = (avgInst - avgBaselineSS) * MILLI_TO_ONE / (clampAmp * PICO_TO_ONE) * ONE_TO_MEGA else - outData[1] = clampAmp / (avgTPSS - avgBaselineSS) * 1000 - outData[2] = clampAmp / (avgInst - avgBaselineSS) * 1000 + outData[1] = (clampAmp * MILLI_TO_ONE) / ((avgTPSS - avgBaselineSS) * PICO_TO_ONE) * ONE_TO_MEGA + outData[2] = (clampAmp * MILLI_TO_ONE) / ((avgInst - avgBaselineSS) * PICO_TO_ONE) * ONE_TO_MEGA endif outData[0] = avgBaselineSS outData[3] = avgTPSS From f2e1a9016e533dbe9abecb5cb1a04afc1711a4c0 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 19:05:02 +0200 Subject: [PATCH 21/35] PSQ_PipetteInBath: Store resistance values with correct decimal multiplier We get from the SweepFromula MegaOhm and want to store Ohm in the labnotebook. We therefore need to scale by 1e6 and not 1e9. And while at it, we also prefer MEGA_TO_ONE. Broken since 6e32699f (PSQ_PipetteInBath: Add it, 2021-12-08). --- Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf | 2 +- Packages/MIES/MIES_Constants.ipf | 2 +- .../Testing-MIES/UTF_PatchSeqPipetteInBath.ipf | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf index f450e727b7..34e3de3a8d 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_PatchSeq.ipf @@ -4529,7 +4529,7 @@ Function PSQ_PipetteInBath(string device, struct AnalysisFunction_V3& s) // END TEST Make/D/FREE/N=(LABNOTEBOOK_LAYER_COUNT) resistance = NaN - resistance[INDEP_HEADSTAGE] = pipetteResistance * 1e9 + resistance[INDEP_HEADSTAGE] = pipetteResistance * MEGA_TO_ONE key = CreateAnaFuncLBNKey(PSQ_PIPETTE_BATH, PSQ_FMT_LBN_PB_RESISTANCE) ED_AddEntryToLabnotebook(device, key, resistance, unit = "Ω", overrideSweepNo = s.sweepNo) diff --git a/Packages/MIES/MIES_Constants.ipf b/Packages/MIES/MIES_Constants.ipf index b22d101a54..150349d577 100644 --- a/Packages/MIES/MIES_Constants.ipf +++ b/Packages/MIES/MIES_Constants.ipf @@ -1050,7 +1050,7 @@ StrConstant FMT_LBN_ANA_FUNC_VERSION = "%s version" /// @name Analysis function versions /// @{ -Constant PSQ_PIPETTE_BATH_VERSION = 0 +Constant PSQ_PIPETTE_BATH_VERSION = 1 Constant PSQ_CHIRP_VERSION = 7 Constant PSQ_DA_SCALE_VERSION = 3 Constant PSQ_RAMP_VERSION = 4 diff --git a/Packages/Testing-MIES/UTF_PatchSeqPipetteInBath.ipf b/Packages/Testing-MIES/UTF_PatchSeqPipetteInBath.ipf index e3f900b157..a365bf28ef 100644 --- a/Packages/Testing-MIES/UTF_PatchSeqPipetteInBath.ipf +++ b/Packages/Testing-MIES/UTF_PatchSeqPipetteInBath.ipf @@ -308,7 +308,7 @@ static Function PS_PB1_REENTRY([str]) CHECK_WAVE(entries[%leakCurPass], NULL_WAVE) CHECK_WAVE(entries[%leakCur], NULL_WAVE) - Make/D resistanceRef = {5e9, 5e9, 5e9} + Make/D resistanceRef = {5e6, 5e6, 5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {0, 0, 0}, mode = WAVE_DATA) @@ -373,7 +373,7 @@ static Function PS_PB2_REENTRY([str]) CHECK_EQUAL_WAVES(entries[%leakCurPass], {1}, mode = WAVE_DATA) CHECK_WAVE(entries[%leakCur], NUMERIC_WAVE) - Make/FREE/D resistanceRef = {12.5e9} + Make/FREE/D resistanceRef = {12.5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {1}, mode = WAVE_DATA) @@ -450,7 +450,7 @@ static Function PS_PB3_REENTRY([str]) CHECK_EQUAL_WAVES(entries[%leakCurPass], {1, NaN, 1}, mode = WAVE_DATA) CHECK_WAVE(entries[%leakCur], NUMERIC_WAVE) - Make/FREE/D resistanceRef = {5e9, 12.5e9, 5e9} + Make/FREE/D resistanceRef = {5e6, 12.5e6, 5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {0, 1, 0}, mode = WAVE_DATA) @@ -517,7 +517,7 @@ static Function PS_PB4_REENTRY([str]) CHECK_WAVE(entries[%leakCurPass], NULL_WAVE) CHECK_WAVE(entries[%leakCur], NULL_WAVE) - Make/FREE/D resistanceRef = {5e9, 5e9} + Make/FREE/D resistanceRef = {5e6, 5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {0, 0}, mode = WAVE_DATA) @@ -586,7 +586,7 @@ static Function PS_PB5_REENTRY([str]) CHECK_EQUAL_WAVES(entries[%leakCurPass], {0, 0, 0}, mode = WAVE_DATA) CHECK_WAVE(entries[%leakCur], NUMERIC_WAVE) - Make/FREE/D resistanceRef = {12.5e9, 12.5e9, 12.5e9} + Make/FREE/D resistanceRef = {12.5e6, 12.5e6, 12.5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {1, 1, 1}, mode = WAVE_DATA) @@ -655,7 +655,7 @@ static Function PS_PB6_REENTRY([str]) CHECK_WAVE(entries[%leakCur], NULL_WAVE) CHECK_WAVE(entries[%leakCur], NULL_WAVE) - Make/FREE/D resistanceRef = {12.5e9, 12.5e9, 12.5e9} + Make/FREE/D resistanceRef = {12.5e6, 12.5e6, 12.5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {1, 1, 1}, mode = WAVE_DATA) @@ -724,7 +724,7 @@ static Function PS_PB7_REENTRY([str]) CHECK_EQUAL_WAVES(entries[%leakCurPass], {1}, mode = WAVE_DATA) CHECK_WAVE(entries[%leakCur], NUMERIC_WAVE) - Make/FREE/D resistanceRef = {12.5e9} + Make/FREE/D resistanceRef = {12.5e6} CHECK_EQUAL_WAVES(entries[%resistance], resistanceRef, mode = WAVE_DATA) CHECK_EQUAL_WAVES(entries[%resistancePass], {1}, mode = WAVE_DATA) From 1ac91c44dc078ddc9d409f0b33c828e55ab33ecf Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 19:15:51 +0200 Subject: [PATCH 22/35] Add tests for ConvertRateToSamplingInterval and ConvertSamplingIntervalToRate --- Packages/Testing-MIES/UTF_Utils.ipf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Packages/Testing-MIES/UTF_Utils.ipf b/Packages/Testing-MIES/UTF_Utils.ipf index 3a4c83b14c..4984435db8 100644 --- a/Packages/Testing-MIES/UTF_Utils.ipf +++ b/Packages/Testing-MIES/UTF_Utils.ipf @@ -6075,3 +6075,13 @@ Function GMC_SomeVariants() CHECK_EQUAL_VAR(MICRO_TO_TERA, 1e-18) End + +Function CSIR_Works() + + CHECK_CLOSE_VAR(ConvertRateToSamplingInterval(200), 5) +End + +Function CRTSI_Works() + + CHECK_CLOSE_VAR(ConvertSamplingIntervalToRate(5), 200) +End From 16921fb5f497fc0d0276e1a879d20104a1ce0fb3 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 19:16:25 +0200 Subject: [PATCH 23/35] ConvertRateToSamplingInterval/ConvertSamplingIntervalToRate: Prefer constants --- Packages/MIES/MIES_Utilities.ipf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Packages/MIES/MIES_Utilities.ipf b/Packages/MIES/MIES_Utilities.ipf index f33894121f..a7cbab8ef5 100644 --- a/Packages/MIES/MIES_Utilities.ipf +++ b/Packages/MIES/MIES_Utilities.ipf @@ -678,14 +678,14 @@ End threadsafe Function ConvertSamplingIntervalToRate(val) variable val - return 1 / val * 1e3 + return 1 / (val * MICRO_TO_ONE) * ONE_TO_KILO End /// @brief Convert the rate in kHz to the sampling interval in microseconds (1e-6s) threadsafe Function ConvertRateToSamplingInterval(val) variable val - return 1 / val * 1e3 + return 1 / (val * KILO_TO_ONE) * ONE_TO_MICRO End /// @brief Checks if the datafolder referenced by dfr exists. From e0ec0cd4c9df65e656f94f1841ebba8dba9713ed Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 29 Mar 2022 19:25:06 +0200 Subject: [PATCH 24/35] AD_PlotBounds: Fix baselineVoltage conversion Broken since d974df4d (AD_PlotBounds: Add helper routine for debugging, 2022-01-31). --- Packages/MIES/MIES_AnalysisFunctions_Dashboard.ipf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/MIES/MIES_AnalysisFunctions_Dashboard.ipf b/Packages/MIES/MIES_AnalysisFunctions_Dashboard.ipf index 928de815e6..06c2a927b0 100644 --- a/Packages/MIES/MIES_AnalysisFunctions_Dashboard.ipf +++ b/Packages/MIES/MIES_AnalysisFunctions_Dashboard.ipf @@ -1000,10 +1000,10 @@ Function AD_PlotBounds(string browser, variable sweepNo) Make/O/N=2 dfr:chirpBoundLowerMin/WAVE=lowerMin // V -> mV - upperMax[] = baselineVoltage * 1e3 + outerRelativeBound - upperMin[] = baselineVoltage * 1e3 + innerRelativeBound - lowerMax[] = baselineVoltage * 1e3 - innerRelativeBound - lowerMin[] = baselineVoltage * 1e3 - outerRelativeBound + upperMax[] = baselineVoltage * ONE_TO_MILLI + outerRelativeBound + upperMin[] = baselineVoltage * ONE_TO_MILLI + innerRelativeBound + lowerMax[] = baselineVoltage * ONE_TO_MILLI - innerRelativeBound + lowerMin[] = baselineVoltage * ONE_TO_MILLI - outerRelativeBound GetAxis/W=$graph/Q bottom lastX = V_max From 45417112ee80f01ca7f240e4fca2c786d7fe4baa Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Tue, 5 Apr 2022 21:31:46 +0200 Subject: [PATCH 25/35] tools/check-code.sh: Search for literal decimal multiplier The constants MILLI_TO_ONE and friends should be preferred instead. --- Packages/MIES/MIES_Epochs.ipf | 2 +- Packages/MIES/MIES_PulseAveraging.ipf | 2 +- tools/check-code.sh | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Packages/MIES/MIES_Epochs.ipf b/Packages/MIES/MIES_Epochs.ipf index 738602e114..321aacf272 100644 --- a/Packages/MIES/MIES_Epochs.ipf +++ b/Packages/MIES/MIES_Epochs.ipf @@ -247,7 +247,7 @@ static Function EP_AddEpochsFromStimSetNote(device, channel, stimset, stimsetBeg Make/FREE/D/N=(epochCount) duration, sweepOffset duration[] = WB_GetWaveNoteEntryAsNumber(stimNote, EPOCH_ENTRY, key="Duration", sweep=sweep, epoch=p) - duration *= 1000 + duration *= MILLI_TO_MICRO totalDuration = sum(duration) ASSERT(IsFinite(totalDuration), "Expected finite totalDuration") diff --git a/Packages/MIES/MIES_PulseAveraging.ipf b/Packages/MIES/MIES_PulseAveraging.ipf index 50ee196c67..ae5bd32860 100644 --- a/Packages/MIES/MIES_PulseAveraging.ipf +++ b/Packages/MIES/MIES_PulseAveraging.ipf @@ -3252,7 +3252,7 @@ static Function PA_AddColorScale(string graph, string colorScaleGraph, string na intIndex = trunc(index) length = stop[intIndex] - start[intIndex] yPos = start[intIndex] + abs(index - intIndex) * length - yPos *= 100 + yPos *= ONE_TO_PERCENT ColorScale/W=$colorScaleGraph/C/N=$name/F=0/A=MT/X=(0)/Y=(yPos)/E=0 vert=0, image={$graph, $traceName} ColorScale/W=$colorScaleGraph/C/N=$name heightPct=(5), widthPct=95, lblMargin=0 diff --git a/tools/check-code.sh b/tools/check-code.sh index eda7d97d12..db7fe4cb74 100755 --- a/tools/check-code.sh +++ b/tools/check-code.sh @@ -53,6 +53,26 @@ then ret=1 fi +# 1: all types of 10, 100 and 1e3, 1e-6, 1E09 etc. but not tol = 1e3 or 10^. Has to be prefixed with * or / or *= +# 2: not in constants +# 3: not in test assertions +# 4: ignored in comments +# 5: respects NOLINT +matches=$(git grep $opts \ + -e '(? Date: Wed, 6 Apr 2022 22:59:20 +0200 Subject: [PATCH 26/35] UTF_SweepFormula.ipf: Adjust tests to not trigger decimal multiplier linting --- Packages/Testing-MIES/UTF_SweepFormula.ipf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/Testing-MIES/UTF_SweepFormula.ipf b/Packages/Testing-MIES/UTF_SweepFormula.ipf index 75872abe61..8d88ceeec3 100644 --- a/Packages/Testing-MIES/UTF_SweepFormula.ipf +++ b/Packages/Testing-MIES/UTF_SweepFormula.ipf @@ -291,8 +291,8 @@ static Function orderOfCalculation() CHECK_EQUAL_JSON(jsonID0, jsonID1) REQUIRE_EQUAL_VAR(SF_FormulaExecutor(jsonID1)[0], 2/3*4) - jsonID1 = DirectToFormulaParser("5*1+2*3+4+5*10") - REQUIRE_EQUAL_VAR(SF_FormulaExecutor(jsonID1)[0], 5*1+2*3+4+5*10) + jsonID1 = DirectToFormulaParser("5*1+2*3+4+5*20") + REQUIRE_EQUAL_VAR(SF_FormulaExecutor(jsonID1)[0], 5*1+2*3+4+5*20) // using - as sign jsonID1 = DirectToFormulaParser("1+-1") @@ -369,8 +369,8 @@ static Function brackets() CHECK_EQUAL_JSON(jsonID0, jsonID1) REQUIRE_EQUAL_VAR(SF_FormulaExecutor(jsonID1)[0], 2/(3+4)*5) - jsonID1 = DirectToFormulaParser("5*(1+2)*3/(4+5*10)") - REQUIRE_CLOSE_VAR(SF_FormulaExecutor(jsonID1)[0], 5*(1+2)*3/(4+5*10)) + jsonID1 = DirectToFormulaParser("5*(1+2)*3/(4+5*20)") + REQUIRE_CLOSE_VAR(SF_FormulaExecutor(jsonID1)[0], 5*(1+2)*3/(4+5*20)) End static Function array() From 5b20052b07ccb66abb4646e9191e71442a684480 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:01:52 +0200 Subject: [PATCH 27/35] Tests: Use NOLINT to ignore decimal multiplier linting errors These test cases don't do any math, but rewriting them would also just complicates things. --- Packages/Testing-MIES/UTF_AsynFrameworkTest.ipf | 4 ++-- Packages/Testing-MIES/UTF_PA_Tests.ipf | 2 +- Packages/Testing-MIES/UTF_Utils.ipf | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Packages/Testing-MIES/UTF_AsynFrameworkTest.ipf b/Packages/Testing-MIES/UTF_AsynFrameworkTest.ipf index 4c26a70b59..6b288240b2 100644 --- a/Packages/Testing-MIES/UTF_AsynFrameworkTest.ipf +++ b/Packages/Testing-MIES/UTF_AsynFrameworkTest.ipf @@ -1253,7 +1253,7 @@ threadsafe Function/DF RunGenericWorker(dfr) variable/G dfrOut:outV = v // some processing that has a random runtime - variable runtime = abs(floor(gnoise(1))) * 10 + variable runtime = abs(floor(gnoise(1))) * 10 // NOLINT for(i = 0; i < runtime; i += 1) for(j = 0; j < 100; j += 1) s = num2str(i) @@ -1291,7 +1291,7 @@ threadsafe Function/DF RunGenericWorker3(dfr) variable/G dfrOut:outV = v // some processing that has a random runtime - variable runtime = abs(floor(gnoise(1))) * 10 + variable runtime = abs(floor(gnoise(1))) * 10 // NOLINT for(i = 0; i < runtime; i += 1) for(j = 0; j < 100; j += 1) s = num2str(i) diff --git a/Packages/Testing-MIES/UTF_PA_Tests.ipf b/Packages/Testing-MIES/UTF_PA_Tests.ipf index 791b7853ea..183dfde75c 100644 --- a/Packages/Testing-MIES/UTF_PA_Tests.ipf +++ b/Packages/Testing-MIES/UTF_PA_Tests.ipf @@ -1529,7 +1529,7 @@ static Function PAT_ExtendedDeconvCheckDisplay() variable traceNum, i, j, size variable range = 400 - variable dataSize = 100000 // 400 ms * 250000 pts / 1000 ms + variable dataSize = 100000 // 400 ms * 250000 pts / 1000 ms // NOLINT PA_InitSweep0(patest) Make/FREE/WAVE/N=(2, 2) refData diff --git a/Packages/Testing-MIES/UTF_Utils.ipf b/Packages/Testing-MIES/UTF_Utils.ipf index 4984435db8..7b23830a33 100644 --- a/Packages/Testing-MIES/UTF_Utils.ipf +++ b/Packages/Testing-MIES/UTF_Utils.ipf @@ -2704,7 +2704,7 @@ Function TWTL4D() string list string refList - refList = "1/9/:5/13/:,3/11/:7/15/:,;2/10/:6/14/:,4/12/:8/16/:,;" + refList = "1/9/:5/13/:,3/11/:7/15/:,;2/10/:6/14/:,4/12/:8/16/:,;" // NOLINT list = TextWaveToList(w, ";") CHECK_EQUAL_STR(list, refList) End @@ -3074,7 +3074,7 @@ End Function ListToTextWaveMDWorks3() Make/FREE/T ref = {{{{"1", "9"} , {"5", "13"}}, {{"3", "11"} , {"7", "15"}}}, {{{"2", "10"} , {"6", "14"}}, {{"4", "12"} , {"8", "16"}}}} - WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:,13/14/:15/16/:,;", 4) + WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:,13/14/:15/16/:,;", 4) // NOLINT CHECK_EQUAL_WAVES(t, ref) End @@ -3082,7 +3082,7 @@ End Function ListToTextWaveMDWorks4() Make/FREE/T ref = {{{{"1", "9"} , {"5", ""}}, {{"3", "11"} , {"7", ""}}}, {{{"2", "10"} , {"6", ""}}, {{"4", "12"} , {"8", ""}}}} - WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:;", 4) + WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:;", 4) // NOLINT CHECK_EQUAL_WAVES(t, ref) End @@ -3090,7 +3090,7 @@ End Function ListToTextWaveMDWorks5() Make/FREE/T ref = {{{{"1", "9"} , {"5", "13"}}, {{"3", "11"} , {"7", ""}}}, {{{"2", "10"} , {"6", "14"}}, {{"4", "12"} , {"8", ""}}}} - WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:,13/14/:,;", 4) + WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:,13/14/:,;", 4) // NOLINT CHECK_EQUAL_WAVES(t, ref) End @@ -3098,7 +3098,7 @@ End Function ListToTextWaveMDWorks6() Make/FREE/T ref = {{{{"1", "9"} , {"5", "13"}}, {{"3", "11"} , {"7", "15"}}}, {{{"2", "10"} , {"6", "14"}}, {{"4", "12"} , {"8", ""}}}} - WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:,13/14/:15/:,;", 4) + WAVE/T t = ListToTextWaveMD("1/2/:3/4/:,5/6/:7/8/:,;9/10/:11/12/:,13/14/:15/:,;", 4) // NOLINT CHECK_EQUAL_WAVES(t, ref) End /// @} From b53c1fa67f9ca4010022abd79652a25e33e8732e Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:08:46 +0200 Subject: [PATCH 28/35] WAVEBUILDER_MIN_SAMPINT: Add comment with unit --- Packages/MIES/MIES_Constants.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_Constants.ipf b/Packages/MIES/MIES_Constants.ipf index 150349d577..757ea748c2 100644 --- a/Packages/MIES/MIES_Constants.ipf +++ b/Packages/MIES/MIES_Constants.ipf @@ -710,7 +710,7 @@ Constant HARDWARE_ITC_MIN_SAMPINT = 0.005 ///< ITC DACs Constant HARDWARE_NI_6001_MIN_SAMPINT = 0.2 ///< NI 6001 USB /// @} -Constant WAVEBUILDER_MIN_SAMPINT = 0.005 +Constant WAVEBUILDER_MIN_SAMPINT = 0.005 ///< [ms] Constant WAVEBUILDER_MIN_SAMPINT_HZ = 200e3 ///< Stimulus sets are created with that frequency StrConstant CHANNEL_DA_SEARCH_STRING = "*DA*" From fc3eccd6766db9a38c80bad2a2a4f72e8e6badd7 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:09:54 +0200 Subject: [PATCH 29/35] DAP_GetSampInt: Enhance function comment --- Packages/MIES/MIES_DAEphys.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_DAEphys.ipf b/Packages/MIES/MIES_DAEphys.ipf index 8d3e3a084c..eff6c11b4d 100644 --- a/Packages/MIES/MIES_DAEphys.ipf +++ b/Packages/MIES/MIES_DAEphys.ipf @@ -1800,7 +1800,7 @@ static Function DAP_UpdateSweepLimitsAndDisplay(string device, [variable initial endfor End -/// @brief Return the sampling interval with taking the mode, +/// @brief Return the sampling interval in μs with taking the mode, /// the multiplier and the fixed frequency selection into account /// /// @param[in] device device From 4fd2e28e6f9e3598a6b41878e7c6e307686d3b45 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:19:07 +0200 Subject: [PATCH 30/35] DataConfigurationResult::offset: Mention unit --- Packages/MIES/MIES_Structures.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_Structures.ipf b/Packages/MIES/MIES_Structures.ipf index e164084bde..98031d0681 100644 --- a/Packages/MIES/MIES_Structures.ipf +++ b/Packages/MIES/MIES_Structures.ipf @@ -517,7 +517,7 @@ Structure DataConfigurationResult /// oodDAQ optimization results, see @ref OOdDAQParams_Output /// @{ - WAVE offsets + WAVE offsets ///< [ms] WAVE/T regions /// @} From 87117f083ce2692d8bb6585587ee309c61bb3c70 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:23:00 +0200 Subject: [PATCH 31/35] GetPulseInfoWave: Enhance comment with units --- Packages/MIES/MIES_WaveDataFolderGetters.ipf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Packages/MIES/MIES_WaveDataFolderGetters.ipf b/Packages/MIES/MIES_WaveDataFolderGetters.ipf index b6ee69c1b9..ee169b8eba 100644 --- a/Packages/MIES/MIES_WaveDataFolderGetters.ipf +++ b/Packages/MIES/MIES_WaveDataFolderGetters.ipf @@ -6937,9 +6937,9 @@ End /// - Pulses /// /// Columns: -/// - Length: Total length including baseline -/// - PulseStart: Start of the pulse (aka begin of active) -/// - PulseEnd: End of the pulse (aka end of active) +/// - Length [ms]: Total length including baseline +/// - PulseStart [ms]: Start of the pulse (aka begin of active) +/// - PulseEnd [ms]: End of the pulse (aka end of active) Function/WAVE GetPulseInfoWave() Make/D/FREE/N=(0, 3) pulseInfo From 68527bc38249d1a0e9e3a009fac9e13cacbc907d Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:32:36 +0200 Subject: [PATCH 32/35] DQ_StopDAQDeviceTimer: Enhance comment --- Packages/MIES/MIES_DataAcquisition.ipf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Packages/MIES/MIES_DataAcquisition.ipf b/Packages/MIES/MIES_DataAcquisition.ipf index b8da937631..a839aef3b2 100644 --- a/Packages/MIES/MIES_DataAcquisition.ipf +++ b/Packages/MIES/MIES_DataAcquisition.ipf @@ -154,6 +154,8 @@ Function DQ_StartDAQDeviceTimer(device) End /// @brief Stop the per-device timer associated with a particular device +/// +/// @return time in seconds Function DQ_StopDAQDeviceTimer(device) string device From 3e2ad07c58038783f42d2fd9e9705c7a33b40236 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:33:20 +0200 Subject: [PATCH 33/35] WB_GetPulsesFromPTSweepEpoch: Add function comment --- Packages/MIES/MIES_WaveBuilder.ipf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Packages/MIES/MIES_WaveBuilder.ipf b/Packages/MIES/MIES_WaveBuilder.ipf index 810ac1fe05..835cf1355f 100644 --- a/Packages/MIES/MIES_WaveBuilder.ipf +++ b/Packages/MIES/MIES_WaveBuilder.ipf @@ -1557,6 +1557,13 @@ Function WB_GetWaveNoteEntryAsNumber(text, entryType, [key, sweep, epoch]) return str2num(str) End +/// @brief Return pulse information from a pulse train epoch +/// +/// @param[in] stimset stimulus set +/// @param[in] sweep sweep of the set +/// @param[in] epoch epoch of the set +/// @param[out] pulseToPulseLength pulse to pulse length [ms] +/// @return pulse train starting times [ms] Function/WAVE WB_GetPulsesFromPTSweepEpoch(stimset, sweep, epoch, pulseToPulseLength) WAVE stimset variable sweep, epoch From 3d50bb274e79e27e9f0f92ff55654fa75bebe062 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 6 Apr 2022 23:34:00 +0200 Subject: [PATCH 34/35] GetUniqueSymbolicPath: Prefer GetUniqueInteger This is shorter and as correct, as we just need a unique sequence of numbers. --- Packages/MIES/MIES_Utilities.ipf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/MIES/MIES_Utilities.ipf b/Packages/MIES/MIES_Utilities.ipf index a7cbab8ef5..6078da9e83 100644 --- a/Packages/MIES/MIES_Utilities.ipf +++ b/Packages/MIES/MIES_Utilities.ipf @@ -2862,7 +2862,7 @@ Function/S GetUniqueSymbolicPath([prefix]) endif NewRandomSeed() - return prefix + num2istr(GetReproducibleRandom() * 1e6) + return prefix + num2istr(GetUniqueInteger()) End /// @brief Return a list of all files from the given symbolic path From f33460ac296a2a247efb8475405fc7edd3f8fbb9 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Thu, 14 Apr 2022 19:47:22 +0200 Subject: [PATCH 35/35] SF_TPTest: Avoid issue due to rounding differences The recent introduction of decimal multiplier constants changed the last digits of the result. But we are actually not interested in an arbitrary precise result, so let's use the tol parameter. --- Packages/Testing-MIES/UTF_SweepFormulaHardware.ipf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/Testing-MIES/UTF_SweepFormulaHardware.ipf b/Packages/Testing-MIES/UTF_SweepFormulaHardware.ipf index 634b74e873..1e122e3e7b 100644 --- a/Packages/Testing-MIES/UTF_SweepFormulaHardware.ipf +++ b/Packages/Testing-MIES/UTF_SweepFormulaHardware.ipf @@ -213,19 +213,19 @@ static Function TestSweepFormulaTP(string device) SetDimLabel LAYERS, 0, DA0, wRef SetDimLabel LAYERS, 1, DA1, wRef SetScale d, 0, 0, "MΩ", wRef - CHECK_EQUAL_WAVES(tpResult, wRef) + CHECK_EQUAL_WAVES(tpResult, wRef, tol = 1e-12) formula = "tp(inst, channels(DA), sweeps())" WAVE tpResult = SF_FormulaExecutor(DirectToFormulaParser(formula), graph=graph) - CHECK_EQUAL_WAVES(tpResult, wRef) + CHECK_EQUAL_WAVES(tpResult, wRef, tol = 1e-12) formula = "tp(1, channels(DA), sweeps())" WAVE tpResult = SF_FormulaExecutor(DirectToFormulaParser(formula), graph=graph) - CHECK_EQUAL_WAVES(tpResult, wRef) + CHECK_EQUAL_WAVES(tpResult, wRef, tol = 1e-12) formula = "tp(2, channels(DA), sweeps())" WAVE tpResult = SF_FormulaExecutor(DirectToFormulaParser(formula), graph=graph) - CHECK_EQUAL_WAVES(tpResult, wRef) + CHECK_EQUAL_WAVES(tpResult, wRef, tol = 1e-12) formula = "tp(base, channels(DA), sweeps())" WAVE tpResult = SF_FormulaExecutor(DirectToFormulaParser(formula), graph=graph)