diff --git a/resources/CV8000/CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_20230918_135839/TRACE2023-XX-XX.log b/resources/CV8000/CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_20230918_135839/TRACE2023-XX-XX.log new file mode 100644 index 00000000..5cb26751 --- /dev/null +++ b/resources/CV8000/CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_20230918_135839/TRACE2023-XX-XX.log @@ -0,0 +1,192 @@ +0000/00/00,00:00:00,.000,-35533765,Portal,RemoteDevice,ReaderControl,--->,MS_MANU,17,0,OK,33,-99999.0,0.0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F001L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F002L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F003L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_D08_T0001F004L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F001L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F002L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F003L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_E03_T0001F004L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F001L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F002L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,0.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,3.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F003L01A02Z04C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,1.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A01Z01C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,4.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A01Z02C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,7.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A01Z03C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,10.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A01Z04C01.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,6.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A02Z01C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,9.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A02Z02C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,12.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A02Z03C02.tif,None +0000/00/00,00:00:00,.000,-35533593,Portal,RemoteDevice,ReaderControl,--->,AF_MANU,34,0,OK,15.0,0 +0000/00/00,00:00:00,.000,-35533750,Measurement,Measurement.measure_timelapse,_m_Timelapse,_init_frame_save,CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_F08_T0001F004L01A02Z04C02.tif,None diff --git a/src/faim_hcs/hcs/cellvoyager/ZAdjustedStackAcquisition.py b/src/faim_hcs/hcs/cellvoyager/ZAdjustedStackAcquisition.py new file mode 100644 index 00000000..afc531c9 --- /dev/null +++ b/src/faim_hcs/hcs/cellvoyager/ZAdjustedStackAcquisition.py @@ -0,0 +1,84 @@ +from os.path import join +from pathlib import Path +from typing import Optional, Union + +import numpy as np +from pandas.core.api import DataFrame as DataFrame + +from faim_hcs.hcs.acquisition import TileAlignmentOptions +from faim_hcs.hcs.cellvoyager.StackAcquisition import StackAcquisition + + +class ZAdjustedStackAcquisition(StackAcquisition): + _trace_log_file = None + + def __init__( + self, + acquisition_dir: Union[Path, str], + trace_log_file: Union[Path, str], + alignment: TileAlignmentOptions, + background_correction_matrices: Optional[dict[str, Union[Path, str]]] = None, + illumination_correction_matrices: Optional[dict[str, Union[Path, str]]] = None, + ): + self._trace_log_file = trace_log_file + super().__init__( + acquisition_dir, + alignment, + background_correction_matrices, + illumination_correction_matrices, + ) + + def _parse_files(self) -> DataFrame: + files = super()._parse_files() + z_mapping = self._create_z_mapping() + # merge files left with mapping on path + merged = files.merge(z_mapping, how="left", left_on=["path"], right_on=["path"]) + min_z = np.min(merged["z_pos"].astype(float)) + z_spacing = np.mean( + merged[merged["ZIndex"].astype(int) == 2]["Z"].astype(float) + ) - np.mean(merged[merged["ZIndex"].astype(int) == 1]["Z"].astype(float)) + merged["ZIndex"] = np.round( + (merged["z_pos"].astype(float) - min_z) / z_spacing + ).astype(int) + # update Z + merged["Z"] = merged["z_pos"] + return merged + + def _create_z_mapping(self) -> DataFrame: + z_pos = [] + filenames = [] + value = None + with open(self._trace_log_file) as log: + for line in log: + tokens = line.split(",") + if ( + (len(tokens) > 14) + and (tokens[7] == "--->") + and (tokens[8] == "MS_MANU") + ): + value = float(tokens[14]) + if ( + (len(tokens) > 12) + and (tokens[7] == "--->") + and (tokens[8] == "AF_MANU") + and (tokens[9] == "34") + ): + value = float(tokens[12]) + if ( + (len(tokens) > 8) + and (tokens[4] == "Measurement") + and (tokens[7] == "_init_frame_save") + ): + filename = tokens[8] + if value is None: + raise ValueError(f"No z position found for {filename}") + filenames.append(join(self._acquisition_dir, filename)) + z_pos.append(value) + value = None + + return DataFrame( + { + "path": filenames, + "z_pos": z_pos, + } + ) diff --git a/src/faim_hcs/hcs/cellvoyager/__init__.py b/src/faim_hcs/hcs/cellvoyager/__init__.py index 82ba14c4..6e4de60d 100644 --- a/src/faim_hcs/hcs/cellvoyager/__init__.py +++ b/src/faim_hcs/hcs/cellvoyager/__init__.py @@ -1 +1,2 @@ from .StackAcquisition import StackAcquisition # noqa: F401 +from .ZAdjustedStackAcquisition import ZAdjustedStackAcquisition # noqa: F401 diff --git a/tests/hcs/cellvoyager/test_ZAdjustedStackAcquisition.py b/tests/hcs/cellvoyager/test_ZAdjustedStackAcquisition.py new file mode 100644 index 00000000..9b78ef7e --- /dev/null +++ b/tests/hcs/cellvoyager/test_ZAdjustedStackAcquisition.py @@ -0,0 +1,101 @@ +import re +from pathlib import Path + +import pytest +from tifffile import imread + +from faim_hcs.hcs.acquisition import TileAlignmentOptions +from faim_hcs.hcs.cellvoyager import ZAdjustedStackAcquisition + + +@pytest.fixture +def cv_acquisition() -> Path: + dir = ( + Path(__file__).parent.parent.parent.parent + / "resources" + / "CV8000" + / "CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_20230918_135839" + / "CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack" + ) + return dir + + +@pytest.fixture +def trace_log_file() -> Path: + return ( + Path(__file__).parent.parent.parent.parent + / "resources" + / "CV8000" + / "CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_20230918_135839" + / "TRACE2023-XX-XX.log" + ) + + +def test__parse_files(cv_acquisition, trace_log_file): + plate = ZAdjustedStackAcquisition( + acquisition_dir=cv_acquisition, + trace_log_file=trace_log_file, + alignment=TileAlignmentOptions.GRID, + ) + + files = plate._parse_files() + assert len(files) == 96 + assert files["well"].unique().tolist() == ["D08", "E03", "F08"] + assert files["Ch"].unique().tolist() == ["1", "2"] + assert files["ZIndex"].unique().tolist() == [0, 1, 2, 3, 4, 5] + assert files["Z"].unique().tolist() == [ + 0.0, + 3.0, + 6.0, + 9.0, + 1.0, + 4.0, + 7.0, + 10.0, + 12.0, + 15.0, + ] + + assert files.columns.tolist() == [ + "Time", + "TimePoint", + "FieldIndex", + "ZIndex", + "TimelineIndex", + "ActionIndex", + "Action", + "X", + "Y", + "Z", + "Ch", + "path", + "well", + "z_pos", + ] + + +def test_get_well_acquisitions(cv_acquisition, trace_log_file): + plate = ZAdjustedStackAcquisition( + acquisition_dir=cv_acquisition, + trace_log_file=trace_log_file, + alignment=TileAlignmentOptions.GRID, + ) + + wells = plate.get_well_acquisitions() + assert len(wells) == 3 + for well in wells: + for tile in well.get_tiles(): + file_name = ( + f".*[/\\\\]CV8000-Minimal-DataSet-2C-3W-4S-FP2-stack_" + f"{well.name}_T" + f"{str(tile.position.time + 1).zfill(4)}F.*L.*A.*Z.*C" + f"{str(tile.position.channel + 1).zfill(2)}\\.tif" + ) + re_file_name = re.compile(file_name) + assert re_file_name.match(tile.path) + assert tile.shape == imread(tile.path).shape + assert tile.illumination_correction_matrix_path is None + assert tile.background_correction_matrix_path is None + assert tile.position.x in [0, 2000] + assert tile.position.y in [0, 2000] + assert tile.position.z in [0, 1, 2, 3, 4, 5]