Ejemplo n.º 1
0
def ask_subject_weight(subject: str, settings_file_path: str = None) -> float:
    out = graph.numinput("Subject weighing (gr)", f"{subject} weight (gr):", nullable=False)
    log.info(f'Subject weight {out}')
    if settings_file_path is not None:
        patch = {'SUBJECT_WEIGHT': out}
        patch_settings_file(settings_file_path, patch)
    return out
Ejemplo n.º 2
0
def ask_session_delay(settings_file_path: str = None) -> int:
    out = graph.numinput(
        "Session delay", "Delay session initiation by (min):",
        default=0, minval=0, maxval=60, nullable=False, askint=True)
    out = out * 60
    if settings_file_path is not None:
        patch = {'SESSION_START_DELAY_SEC': out}
        patch_settings_file(settings_file_path, patch)
    return out
Ejemplo n.º 3
0
def ask_confirm_session_idx(session_idx):
    # Confirm this is the session to load with user. If not override SESSION_IDX
    sess_num = int(session_idx + 1)
    sess_num = graph.numinput(
        "Confirm session to load", "Load recording session number",
        default=sess_num, askint=True, minval=1, maxval=12
    )
    if sess_num != session_idx + 1:
        session_idx = sess_num - 1
    return session_idx
Ejemplo n.º 4
0
def ask_confirm_session_idx(session_idx):
    # Confirm this is the session to load with user. If not override SESSION_IDX
    sess_num = int(session_idx + 1)
    sess_num = graph.numinput(
        "Confirm pregenerated session to load",
        "Load trial sequence for recording day number:",
        default=sess_num,
        askint=True,
        minval=1,
    )
    if sess_num != session_idx + 1:
        session_idx = sess_num - 1
    return session_idx
Ejemplo n.º 5
0
def main() -> None:
    poop_flags = list(IBLRIG_DATA.rglob('poop_count.flag'))
    poop_flags = sorted(poop_flags, key=lambda x: (
        parser.parse(x.parent.parent.name), int(x.parent.name)))
    if not poop_flags:
        return
    flag = poop_flags[-1]
    session_name = '/'.join(flag.parent.parts[-3:])
    poop_count = numinput(
        'Poop up window',
        f'Enter poop pellet count for session: \n{session_name}')
    patch = {'POOP_COUNT': poop_count}
    patch_settings_file(str(flag.parent), patch)
    flag.unlink()
Ejemplo n.º 6
0
def poop() -> None:
    poop_flags = list(IBLRIG_DATA.rglob("poop_count.flag"))
    poop_flags = sorted(
        poop_flags,
        key=lambda x: (parser.parse(x.parent.parent.name), int(x.parent.name)),
    )
    if not poop_flags:
        return
    flag = poop_flags[-1]
    session_name = "/".join(flag.parent.parts[-3:])
    poop_count = numinput(
        "Poop up window", f"Enter poop pellet count for session: \n{session_name}"
    )
    patch = {"POOP_COUNT": poop_count}
    patch_settings_file(str(flag.parent), patch)
    flag.unlink()
Ejemplo n.º 7
0
def ask_subject_project(subject: str, settings_file_path: str = None) -> float:
    import datetime
    import json

    from one.api import ONE

    one = ONE()
    all_subjects = list(one.alyx.rest("subjects", "list"))
    all_subjects.append({"dump_date": datetime.datetime.utcnow().isoformat()})

    fpath = None  # Find Subjects folder
    # Save json in Subjects folder

    with open(fpath, "w+") as f:
        f.write(json.dumps(all_subjects, indent=1))
        f.write("\n")
    # Load subjects from disk
    with open(fpath, "r") as f:
        all_subjects = json.loads(f.readlines())

    # Given Subject load 'session_projects'
    all_projects = {x["nickname"]: x["session_projects"] for x in all_subjects}
    projects = all_projects[subject]

    if not projects:
        return projects
    elif len(projects) == 1:
        return projects[0]
    else:
        resp = graph.strinput(
            "Select project",
            str(projects),
            default=projects[0],
            nullable=False,
        )
        return resp

    out = graph.numinput("Subject project",
                         f"{subject} project (gr):",
                         nullable=False)
    log.info(f"Subject weight {out}")
    if settings_file_path is not None:
        patch = {"SUBJECT_WEIGHT": out}
        patch_settings_file(settings_file_path, patch)
    return out
Ejemplo n.º 8
0
def load_session_order_and_idx(sph: object) -> object:
    if ((not sph.LAST_SETTINGS_DATA)
            or ('SESSION_ORDER' not in sph.LAST_SETTINGS_DATA.keys())):
        sph.SESSION_ORDER = misc.draw_session_order()
        sph.SESSION_IDX = 0
    elif 'SESSION_ORDER' in sph.LAST_SETTINGS_DATA.keys():
        sph.SESSION_ORDER = sph.LAST_SETTINGS_DATA['SESSION_ORDER']
        sph.SESSION_IDX = sph.LAST_SETTINGS_DATA['SESSION_IDX'] + 1
    # Confirm this is the session to load. If not override SESSION_IDX
    ses_num = int(sph.SESSION_IDX + 1)
    ses_num = numinput("Confirm session to load",
                       "Load recording session number",
                       default=ses_num,
                       askint=True,
                       minval=1,
                       maxval=12)
    if ses_num != sph.SESSION_IDX + 1:
        sph.SESSION_IDX = ses_num - 1
    return sph
Ejemplo n.º 9
0
 def get_subject_weight(self):
     return numinput(
         "Subject weighing (gr)", f"{self.PYBPOD_SUBJECTS[0]} weight (gr):",
         nullable=False)
Ejemplo n.º 10
0
    "ndrops",
    "mean_measured_weight",
    "std_measured_weight",
])
ntrials = sph.NTRIALS
# in milliseconds, 10 to 100ms opening time
open_times = range(sph.MIN_OPEN_TIME, sph.MAX_OPEN_TIME, sph.STEP)
open_times = [
    i for i in range(sph.MIN_OPEN_TIME, sph.MAX_OPEN_TIME, sph.STEP)
    for _ in range(sph.PASSES)
]

if sph.OAHUS_SCALE_PORT:
    stopweight = scale_read(sph.OAHUS_SCALE_PORT)
else:
    stopweight = numinput(f"Initialize weight",
                          "Enter the weight diplayed on the scale (gr):")

pass_ = 1
progress = 0
mw = []
for open_time in open_times:
    # Set the startweight to be the last recorded stopweight
    startweight = stopweight
    # Run the state machine; deliver ntrials drops of water
    water_drop(open_time / 1000, ntrials=ntrials, iti=sph.IPI, bpod=bpod)
    # wait for the scale update delay
    time.sleep(1)
    # Get the value
    if sph.OAHUS_SCALE_PORT:
        stopweight = scale_read(sph.OAHUS_SCALE_PORT)
    else:
Ejemplo n.º 11
0
def ask_subject_weight(subject: str) -> float:
    return graph.numinput("Subject weighing (gr)",
                          f"{subject} weight (gr):",
                          nullable=False)