Source code for spacr._merged_names

"""Filename grouping for merged timelapse arrays, without analysis imports."""

import os


[docs] def parse_merged_filename(fname): """Parse a merged filename for grouping and numeric timepoint sorting. These are legacy display/grouping fields, not canonical database keys. Row IDs are letters, column/time IDs are integers, and ``prcf`` uses the well rather than separate row and column keys. Use :func:`spacr.schema.parse_field_stem` for database identities. :param fname: path or filename in ``plate_well_field_time.npy`` form. :returns: plateID, wellID, rowID, columnID, fieldID, timeID, prcf, prcft and filename. Missing field/time values default to ``1``/``0``. """ base = os.path.splitext(os.path.basename(fname))[0] parts = base.split("_") plateID = parts[0] if len(parts) > 0 else "" wellID = parts[1] if len(parts) > 1 else "" fieldID = parts[2] if len(parts) > 2 else "1" time_str = parts[3] if len(parts) > 3 else "0" digits = "".join(ch for ch in time_str if ch.isdigit()) timeID = int(digits) if digits else 0 rowID = wellID[0] if wellID else "" col_part = "".join(ch for ch in wellID[1:] if ch.isdigit()) columnID = int(col_part) if col_part else 0 prcf = f"{plateID}_{wellID}_{fieldID}" return dict( plateID=plateID, wellID=wellID, rowID=rowID, columnID=columnID, fieldID=fieldID, timeID=timeID, prcf=prcf, prcft=f"{prcf}_{timeID}", filename=os.path.basename(fname), )