def testingParametersSCMOS(): """ Create a sCMOS parameters object. """ params = parameters.ParametersSCMOS() params.setAttr("max_frame", "int", -1) params.setAttr("start_frame", "int", -1) params.setAttr("background_sigma", "float", 8.0) params.setAttr("camera_calibration", "filename", "calib.npy") params.setAttr("find_max_radius", "int", 5) params.setAttr("foreground_sigma", "float", 1.5) params.setAttr("iterations", "int", settings.iterations) params.setAttr("model", "string", "2dfixed") params.setAttr("pixel_size", "float", settings.pixel_size) params.setAttr("sigma", "float", 150.0 / settings.pixel_size) params.setAttr("threshold", "float", 6.0) # Don't do tracking. params.setAttr("descriptor", "string", "1") params.setAttr("radius", "float", "0.0") # Don't do drift-correction. params.setAttr("d_scale", "int", 2) params.setAttr("drift_correction", "int", 0) params.setAttr("frame_step", "int", 500) params.setAttr("z_correction", "int", 0) return params
def test_scmos_scmos_cal(): """ Test that scmos calibration data is initialized correctly. """ settings = storm_analysis.getData("test/data/test_sc_2d_fixed.xml") parameters = params.ParametersSCMOS().initFromFile(settings) # Create analysis object and reach deep into it.. find_fit = findPeaks.initFindAndFit(parameters) fitter = find_fit.peak_fitter mfitter = fitter.mfitter # Get sCMOS calibration value. scmos_cal_value = mfitter.scmos_cal[0, 0] # Initialize with an image. image = numpy.ones(mfitter.scmos_cal.shape) fitter.newImage(image) # Verify that the image has the sCMOS term added. resp = mfitter.getResidual() assert (numpy.max(resp - (1.0 + scmos_cal_value)) < 1.0e-6) # Cleanup. fitter.cleanUp()
def analyze(movie_name, mlist_name, settings_name): # Load parameters. parameters = params.ParametersSCMOS().initFromFile(settings_name) # Check for possibly v1.0 parameters. if not parameters.hasAttr("background_sigma"): raise Exception( "Parameter 'background_sigma' is missing. Version 1.0 parameters?") # Create finding and fitting object. finder = find_peaks.initFindAndFit(parameters) # Create object for reading sCMOS camera frames. frame_reader = analysisIO.FrameReaderSCMOS(movie_file=movie_name, parameters=parameters) # Create movie reader (uses frame reader). movie_reader = analysisIO.MovieReader(frame_reader=frame_reader, parameters=parameters) # Create localization file writer. data_writer = analysisIO.DataWriterHDF5(data_file=mlist_name, parameters=parameters, sa_type='sCMOS') # Run the analysis. std_analysis.standardAnalysis(finder, movie_reader, data_writer, parameters)
def testingParameters(): """ Create a sCMOS parameters object. """ params = parameters.ParametersSCMOS() params.setAttr("max_frame", "int", -1) params.setAttr("start_frame", "int", -1) params.setAttr("background_sigma", "float", 8.0) params.setAttr("camera_calibration", "filename", "calib.npy") params.setAttr("find_max_radius", "int", 5) params.setAttr("foreground_sigma", "float", 1.5) params.setAttr("iterations", "int", settings.iterations) params.setAttr("model", "string", settings.model) params.setAttr("pixel_size", "float", settings.pixel_size) params.setAttr("sigma", "float", 150.0 / settings.pixel_size) params.setAttr("threshold", "float", 6.0) # Don't do tracking. params.setAttr("descriptor", "string", "1") params.setAttr("radius", "float", "0.0") # Don't do drift-correction. params.setAttr("d_scale", "int", 2) params.setAttr("drift_correction", "int", 0) params.setAttr("frame_step", "int", 500) params.setAttr("z_correction", "int", 0) # Z fitting. # # These are nonsense values. We test either '2D' of '3D' mode # and check how will we do at fitting the localization widths. # params.setAttr("do_zfit", "int", 0) params.setAttr("cutoff", "float", 0.0) params.setAttr("max_z", "float", 0.5) params.setAttr("min_z", "float", -0.5) params.setAttr("z_value", "float", 0.0) params.setAttr("z_step", "float", 1.0) params.setAttr("wx_wo", "float", 1.0) params.setAttr("wx_c", "float", 1.0) params.setAttr("wx_d", "float", 1.0) params.setAttr("wxA", "float", 0.0) params.setAttr("wxB", "float", 0.0) params.setAttr("wxC", "float", 0.0) params.setAttr("wxD", "float", 0.0) params.setAttr("wy_wo", "float", 1.0) params.setAttr("wy_c", "float", 1.0) params.setAttr("wy_d", "float", 1.0) params.setAttr("wyA", "float", 0.0) params.setAttr("wyB", "float", 0.0) params.setAttr("wyC", "float", 0.0) params.setAttr("wyD", "float", 0.0) return params
def sCMOSXML(): """ Create an sCMOS analysis file. """ params = parameters.ParametersSCMOS() params.setAttr("max_frame", "int", 1) params.setAttr("start_frame", "int", 0) params.setAttr("background_sigma", "float", 8.0) params.setAttr("camera_calibration", "filename", "calib.npy") params.setAttr("find_max_radius", "int", 5) params.setAttr("foreground_sigma", "float", 1.5) params.setAttr("iterations", "int", 1) params.setAttr("model", "string", "2dfixed") params.setAttr("pixel_size", "float", pixel_size) params.setAttr("roi_size", "int", 9) params.setAttr("sigma", "float", 1.5) params.setAttr("threshold", "float", 20.0) # Don't do tracking. params.setAttr("descriptor", "string", "1") params.setAttr("radius", "float", "0.0") # Don't do drift-correction. params.setAttr("d_scale", "int", 2) params.setAttr("drift_correction", "int", 0) params.setAttr("frame_step", "int", 500) params.setAttr("z_correction", "int", 0) # Z fitting. params.setAttr("do_zfit", "int", 0) params.setAttr("cutoff", "float", 0.0) params.setAttr("max_z", "float", 0.5) params.setAttr("min_z", "float", -0.5) params.setAttr("z_value", "float", 0.0) params.setAttr("z_step", "float", 1.0) params.setAttr("wx_wo", "float", 1.0) params.setAttr("wx_c", "float", 1.0) params.setAttr("wx_d", "float", 1.0) params.setAttr("wxA", "float", 0.0) params.setAttr("wxB", "float", 0.0) params.setAttr("wxC", "float", 0.0) params.setAttr("wxD", "float", 0.0) params.setAttr("wy_wo", "float", 1.0) params.setAttr("wy_c", "float", 1.0) params.setAttr("wy_d", "float", 1.0) params.setAttr("wyA", "float", 0.0) params.setAttr("wyB", "float", 0.0) params.setAttr("wyC", "float", 0.0) params.setAttr("wyD", "float", 0.0) params.toXMLFile("scmos.xml")
def test_remove_paths(): """ Test that saving does / does not remove path information. """ output = storm_analysis.getPathOutputTest("test_rp.xml") # Create parameters. p1 = params.ParametersSCMOS() p1.changeAttr("camera_calibration", "weird_path/foo.npy") # Save without path information p1.toXMLFile(output, pretty=True) p2 = params.ParametersSCMOS().initFromFile(output) assert (not "weird_path" in p2.getAttr("camera_calibration")) # Save with path information p1.toXMLFile(output, pretty=True, remove_paths=False) p2 = params.ParametersSCMOS().initFromFile(output) assert ("weird_path" in p2.getAttr("camera_calibration"))
def analyze(movie_name, mlist_name, settings_name): parameters = params.ParametersSCMOS().initFromFile(settings_name) finder = find_peaks.initFindAndFit(parameters) std_analysis.standardAnalysis(finder, movie_name, mlist_name, parameters)