Close #166
This commit is contained in:
parent
7eaca8d4f3
commit
1c0cc32b6c
2 changed files with 56 additions and 29 deletions
|
|
@ -56,35 +56,7 @@ def flatten_grid(grid):
|
||||||
### Capturing
|
### Capturing
|
||||||
|
|
||||||
|
|
||||||
def capture(
|
|
||||||
microscope,
|
|
||||||
basename,
|
|
||||||
temporary: bool = False,
|
|
||||||
use_video_port: bool = False,
|
|
||||||
resize: Tuple[int, int] = None,
|
|
||||||
bayer: bool = False,
|
|
||||||
metadata: dict = {},
|
|
||||||
annotations: dict = {},
|
|
||||||
tags: list = [],
|
|
||||||
):
|
|
||||||
|
|
||||||
# Construct a tile filename
|
|
||||||
filename = "{}_{}_{}_{}".format(basename, *microscope.stage.position)
|
|
||||||
folder = "SCAN_{}".format(basename)
|
|
||||||
|
|
||||||
# Do capture
|
|
||||||
return microscope.capture(
|
|
||||||
filename=filename,
|
|
||||||
folder=folder,
|
|
||||||
temporary=temporary,
|
|
||||||
use_video_port=use_video_port,
|
|
||||||
resize=resize,
|
|
||||||
bayer=bayer,
|
|
||||||
annotations=annotations,
|
|
||||||
tags=tags,
|
|
||||||
metadata=metadata,
|
|
||||||
cache_key=folder
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ScanExtension(BaseExtension):
|
class ScanExtension(BaseExtension):
|
||||||
|
|
@ -93,6 +65,41 @@ class ScanExtension(BaseExtension):
|
||||||
self._images_captured_so_far: int = 0
|
self._images_captured_so_far: int = 0
|
||||||
BaseExtension.__init__(self, "org.openflexure.scan", version="2.0.0")
|
BaseExtension.__init__(self, "org.openflexure.scan", version="2.0.0")
|
||||||
|
|
||||||
|
def capture(
|
||||||
|
self,
|
||||||
|
microscope,
|
||||||
|
basename,
|
||||||
|
namemode: str = "coordinates",
|
||||||
|
temporary: bool = False,
|
||||||
|
use_video_port: bool = False,
|
||||||
|
resize: Tuple[int, int] = None,
|
||||||
|
bayer: bool = False,
|
||||||
|
metadata: dict = {},
|
||||||
|
annotations: dict = {},
|
||||||
|
tags: list = [],
|
||||||
|
):
|
||||||
|
|
||||||
|
# Construct a tile filename
|
||||||
|
if namemode == "coordinates":
|
||||||
|
filename = "{}_{}_{}_{}".format(basename, *microscope.stage.position)
|
||||||
|
else:
|
||||||
|
filename = "{}_{}".format(basename, str(self._images_captured_so_far).zfill(len(str(self._images_to_be_captured))))
|
||||||
|
folder = "SCAN_{}".format(basename)
|
||||||
|
|
||||||
|
# Do capture
|
||||||
|
return microscope.capture(
|
||||||
|
filename=filename,
|
||||||
|
folder=folder,
|
||||||
|
temporary=temporary,
|
||||||
|
use_video_port=use_video_port,
|
||||||
|
resize=resize,
|
||||||
|
bayer=bayer,
|
||||||
|
annotations=annotations,
|
||||||
|
tags=tags,
|
||||||
|
metadata=metadata,
|
||||||
|
cache_key=folder
|
||||||
|
)
|
||||||
|
|
||||||
def progress(self):
|
def progress(self):
|
||||||
progress = (self._images_captured_so_far / self._images_to_be_captured) * 100
|
progress = (self._images_captured_so_far / self._images_to_be_captured) * 100
|
||||||
logging.info(progress)
|
logging.info(progress)
|
||||||
|
|
@ -103,6 +110,7 @@ class ScanExtension(BaseExtension):
|
||||||
self,
|
self,
|
||||||
microscope,
|
microscope,
|
||||||
basename: str = None,
|
basename: str = None,
|
||||||
|
namemode: str = "coordinates",
|
||||||
temporary: bool = False,
|
temporary: bool = False,
|
||||||
stride_size: int = [2000, 1500, 100],
|
stride_size: int = [2000, 1500, 100],
|
||||||
grid: list = [3, 3, 5],
|
grid: list = [3, 3, 5],
|
||||||
|
|
@ -198,6 +206,7 @@ class ScanExtension(BaseExtension):
|
||||||
capture(
|
capture(
|
||||||
microscope,
|
microscope,
|
||||||
basename,
|
basename,
|
||||||
|
namemode=namemode,
|
||||||
temporary=temporary,
|
temporary=temporary,
|
||||||
use_video_port=use_video_port,
|
use_video_port=use_video_port,
|
||||||
resize=resize,
|
resize=resize,
|
||||||
|
|
@ -214,6 +223,7 @@ class ScanExtension(BaseExtension):
|
||||||
self.stack(
|
self.stack(
|
||||||
microscope=microscope,
|
microscope=microscope,
|
||||||
basename=basename,
|
basename=basename,
|
||||||
|
namemode=namemode,
|
||||||
temporary=temporary,
|
temporary=temporary,
|
||||||
step_size=stride_size[2],
|
step_size=stride_size[2],
|
||||||
steps=grid[2],
|
steps=grid[2],
|
||||||
|
|
@ -240,6 +250,7 @@ class ScanExtension(BaseExtension):
|
||||||
self,
|
self,
|
||||||
microscope,
|
microscope,
|
||||||
basename: str = None,
|
basename: str = None,
|
||||||
|
namemode: str = "coordinates",
|
||||||
temporary: bool = False,
|
temporary: bool = False,
|
||||||
step_size: int = 100,
|
step_size: int = 100,
|
||||||
steps: int = 5,
|
steps: int = 5,
|
||||||
|
|
@ -265,9 +276,10 @@ class ScanExtension(BaseExtension):
|
||||||
for i in range(steps):
|
for i in range(steps):
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
logging.debug(f"Capturing from position {microscope.stage.position}")
|
logging.debug(f"Capturing from position {microscope.stage.position}")
|
||||||
capture(
|
self.capture(
|
||||||
microscope,
|
microscope,
|
||||||
basename,
|
basename,
|
||||||
|
namemode=namemode,
|
||||||
temporary=temporary,
|
temporary=temporary,
|
||||||
use_video_port=use_video_port,
|
use_video_port=use_video_port,
|
||||||
resize=resize,
|
resize=resize,
|
||||||
|
|
@ -295,6 +307,7 @@ scan_extension_v2 = ScanExtension()
|
||||||
class TileScanAPI(ActionView):
|
class TileScanAPI(ActionView):
|
||||||
args = {
|
args = {
|
||||||
"filename": fields.String(missing=None, example=None),
|
"filename": fields.String(missing=None, example=None),
|
||||||
|
"namemode": fields.String(missing="coordinates", example="coordinates"),
|
||||||
"temporary": fields.Boolean(missing=False),
|
"temporary": fields.Boolean(missing=False),
|
||||||
"stride_size": fields.List(
|
"stride_size": fields.List(
|
||||||
fields.Integer, missing=[2000, 1500, 100], example=[2000, 1500, 100]
|
fields.Integer, missing=[2000, 1500, 100], example=[2000, 1500, 100]
|
||||||
|
|
@ -338,6 +351,7 @@ class TileScanAPI(ActionView):
|
||||||
return scan_extension_v2.tile(
|
return scan_extension_v2.tile(
|
||||||
microscope,
|
microscope,
|
||||||
basename=args.get("filename"),
|
basename=args.get("filename"),
|
||||||
|
namemode=args.get("namemode"),
|
||||||
temporary=args.get("temporary"),
|
temporary=args.get("temporary"),
|
||||||
stride_size=args.get("stride_size"),
|
stride_size=args.get("stride_size"),
|
||||||
grid=args.get("grid"),
|
grid=args.get("grid"),
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,17 @@
|
||||||
<option>Snake</option>
|
<option>Snake</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="uk-margin-small uk-margin-remove-bottom">
|
||||||
|
<label class="uk-form-label" for="form-stacked-text"
|
||||||
|
>Naming style</label
|
||||||
|
>
|
||||||
|
<select v-model="namingStyle" class="uk-select">
|
||||||
|
<option>Coordinates</option>
|
||||||
|
<option>Number</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -284,6 +295,7 @@ export default {
|
||||||
scanCapture: false,
|
scanCapture: false,
|
||||||
scanDeltaZ: "Fast",
|
scanDeltaZ: "Fast",
|
||||||
scanStyle: "Raster",
|
scanStyle: "Raster",
|
||||||
|
namingStyle: "Coordinates",
|
||||||
scanStepSize: {
|
scanStepSize: {
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0,
|
y: 0,
|
||||||
|
|
@ -364,6 +376,7 @@ export default {
|
||||||
this.scanStepSize.z
|
this.scanStepSize.z
|
||||||
];
|
];
|
||||||
payload.style = this.scanStyle.toLowerCase();
|
payload.style = this.scanStyle.toLowerCase();
|
||||||
|
payload.namemode = this.namingStyle.toLowerCase();
|
||||||
|
|
||||||
// Convert AF selector to dz
|
// Convert AF selector to dz
|
||||||
var afDeltas = {
|
var afDeltas = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue