Source code for locan.locan_io.locdata.nanoimager_io
"""File input/output for localization data Nanoimager files."""from__future__importannotationsimportloggingimportosfromtypingimportTYPE_CHECKING,AnyifTYPE_CHECKING:from_typeshedimportSupportsRead,SupportsReadlineimportpandasaspdimportlocan.constantsfromlocan.dataimportmetadata_pb2fromlocan.data.locdataimportLocDatafromlocan.locan_io.locdata.utilitiesimport(convert_property_names,convert_property_types,open_path_or_file_like,)__all__:list[str]=["load_Nanoimager_header","load_Nanoimager_file"]logger=logging.getLogger(__name__)def_read_Nanoimager_header(file:SupportsReadline[Any])->list[str]:""" Read csv header from a Nanoimager single-molecule localization file and identify column names. Parameters ---------- file Nanoimager file to read. Returns ------- list[str] A list of valid dataset property keys as derived from the Nanoimager identifiers. """# read csv headerheader=file.readline().split("\n")[0]# list identifiersidentifiers=[x.strip('"')forxinheader.split(",")]column_keys=convert_property_names(properties=identifiers,property_mapping=locan.constants.NANOIMAGER_KEYS)returncolumn_keys
[docs]defload_Nanoimager_header(path:str|os.PathLike[Any]|SupportsRead[Any],)->list[str]:""" Load csv header from a Nanoimager single-molecule localization file and identify column names. Parameters ---------- path File path for a Nanoimager file to load. Returns ------- list[str] A list of valid dataset property keys as derived from the Nanoimager identifiers. """# read csv headerwithopen_path_or_file_like(path)asfile:return_read_Nanoimager_header(file)
[docs]defload_Nanoimager_file(path:str|os.PathLike[Any]|SupportsRead[Any],nrows:int|None=None,convert:bool=True,**kwargs:Any,)->LocData:""" Load data from a Nanoimager single-molecule localization file. Parameters ---------- path File path for a file to load. nrows The number of localizations to load from file. None means that all available rows are loaded. convert If True convert types by applying type specifications in locan.constants.PROPERTY_KEYS. kwargs Other parameters passed to `pandas.read_csv()`. Returns ------- LocData A new instance of LocData with all localizations. """withopen_path_or_file_like(path)asfile:columns=_read_Nanoimager_header(file)dataframe=pd.read_csv(file,sep=",",skiprows=0,nrows=nrows,names=columns,**kwargs)ifconvert:dataframe=convert_property_types(dataframe,types=locan.constants.PROPERTY_KEYS)dat=LocData.from_dataframe(dataframe=dataframe)dat.meta.source=metadata_pb2.EXPERIMENTdat.meta.state=metadata_pb2.RAWdat.meta.file.type=metadata_pb2.NANOIMAGERdat.meta.file.path=str(path)forproperty_insorted(list(set(columns).intersection({"position_x","position_y","position_z"}))):dat.meta.localization_properties.add(name=property_,unit="nm",type="float")deldat.meta.history[:]dat.meta.history.add(name="load_Nanoimager_file",parameter=f"path={str(path)}, nrows={nrows}",)returndat