From f7d36fbb862fdf62547f201b0ea34f6526ed31ea Mon Sep 17 00:00:00 2001 From: Eduardo Hirata-Miyasaki Date: Fri, 11 Nov 2022 16:18:23 -0800 Subject: [PATCH] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd51166..1d639a0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # M25 Acquisition Engine for Basler and FLIR Cameras The M25 acquisiton engine is a C++ multithreaded program that controls the acquisition of the 25-plane camera array multifocus microscope (M25) for fast and simultanous 3D imaging. The engine captures simultaneously from 25 machine vision cameras (FLIR or Basler Ace) to run at >160FPS without loss of frames to capture fast and live 3D dynamics of biological organisms. -Check out our [journal_article]() and [napari plugin](https://github.com/SaraLab-Group/m25-napari) to see the capabities and applications of the engine. +Check out our [journal_article]()(coming soon) and [napari plugin](https://github.com/SaraLab-Group/m25-napari) to see the capabities and applications of the engine. ## Summary The M25 acquisition engine is a multithreaded program that spawns individual read and write threads per camera to offload the data into disk. This program uses the Windows OS ` Windows SDK File Handler` library for rapid storage into NVMe SSD Raid 0 arrays. Using this library we can bypass the default read and write functions by bufferring with a pre-allocated RAM memory aligned to the file-system offsets. The NVMe drives are 512B sector aligned which allows us to do direct disk writing to known locations doing pointer arithmetic. We create individual acquisition threads for each camera and copy the sensor data into the sector aligned buffer. The read and write process is done dynamically by implementing the RAM ping-pong buffer that allows the writing directly to RAM and then writing to disk into a binary file. Once the acquisition is done, the binary file is converted to desired file format (i.e `.raw` or `.tif`).