diff --git a/src/vampires_control/configurations/configurations.py b/src/vampires_control/configurations/configurations.py index 27fc8b3..26171c4 100644 --- a/src/vampires_control/configurations/configurations.py +++ b/src/vampires_control/configurations/configurations.py @@ -1,6 +1,8 @@ +from __future__ import annotations + import asyncio + from pathlib import Path -from typing import Optional, Union import click import tomli @@ -14,17 +16,17 @@ class Configuration(BaseModel): name: str - filter: Optional[Union[str, int]] = None - diff: Optional[Union[str, int]] = None - bs: Optional[Union[str, int]] = None - camfcs: Optional[Union[str, int]] = None + filter: str | int | None = None + diff: str | int | None = None + bs: str | int | None = None + camfcs: str | int | None = None cam_defocus: float = 0 - fcs: Optional[Union[str, int]] = None - puplens: Optional[Union[str, int]] = None - mbi: Optional[Union[str, int]] = None - mask: Optional[Union[str, int]] = None - flc: Optional[Union[str, int]] = None - fieldstop: Optional[Union[str, int]] = None + fcs: str | int | None = None + puplens: str | int | None = None + mbi: str | int | None = None + mask: str | int | None = None + flc: str | int | None = None + fieldstop: str | int | None = None @property def mbi_nudge(self) -> float: @@ -161,4 +163,4 @@ async def move_mask_async(conf): async def move_fieldstop_async(conf): fieldstop = connect(VAMPIRES.FIELDSTOP) click.echo(f" - Moving fieldstop to {conf}") - fieldstop.move_configuration(conf) + fieldstop.move_configuration(conf) \ No newline at end of file diff --git a/src/vampires_control/configurations/main.py b/src/vampires_control/configurations/main.py index 8be3cec..e24662b 100644 --- a/src/vampires_control/configurations/main.py +++ b/src/vampires_control/configurations/main.py @@ -41,6 +41,15 @@ fcs="standard", mask=8, ), + "NRM": Configuration( + name="NRM", + diff=1, + bs="Open", + mbi="Mirror", + camfcs="single", + fcs="standard", + mask="SAM-7" + ) } @@ -140,6 +149,40 @@ def prep_vpl(beamsplitter, mbi): conf.mbi = mbi asyncio.run(conf.move_async()) +@click.command("nrm", help="NRM + MBI") +@click.option( + "-bs", + "--beamsplitter", + default="Open", + type=click.Choice(["PBS", "Open"], case_sensitive=False), + prompt=True, +) +@click.option( + "-m", + "--mbi", + default="Mirror", + type=click.Choice(["Mirror", "Dichroics"], case_sensitive=False), + prompt=True, +) +@click.option( + "-h", + "--holes", + metavar = '', + default='7', + type=click.Choice(['7', '9', '18']), + prompt=True, +) +def prep_nrm_mbi(beamsplitter: str, mbi: str, holes: int): + conf = CONFIGS["NRM"] + conf.bs = beamsplitter + conf.mbi = mbi + conf.mask = f'SAM-{holes}' + if "PBS" in beamsplitter: + conf.camfcs = 'dual' + print(conf) + asyncio.run(conf.move_async()) + + SUBCOMMANDS = { "parked": prep_parked, @@ -148,6 +191,7 @@ def prep_vpl(beamsplitter, mbi): "SDI": prep_sdi, "VPL": prep_vpl, "LAPD": prep_lapd, + "NRM": prep_nrm_mbi, }