import sa_library.datareader as datareader import sa_library.readinsight3 as readinsight3 if (len(sys.argv)!=4): print "usage: homotopy_psf <dax_file, input> <bin_file, input> <npy_file, output>" exit() # Minimum number of peaks to calculate the PSF from. min_peaks = 500 # Half width of the aoi size in pixels. aoi_size = 8 # Load dax file and corresponding molecule list file. dax_data = datareader.inferReader(sys.argv[1]) i3_data = readinsight3.loadI3File(sys.argv[2]) # Go through the frames identifying good peaks and adding them # to the average psf average_psf = numpy.zeros((4*aoi_size,4*aoi_size)) curf = 1 peaks_used = 0 total = 0.0 [dax_x, dax_y, dax_l] = dax_data.filmSize() while (curf < dax_l) and (peaks_used < min_peaks): # Select localizations in current frame & not near the edges. mask = (i3_data['fr'] == curf) & (i3_data['x'] > aoi_size) & (i3_data['x'] < (dax_y - aoi_size - 1)) & (i3_data['y'] > aoi_size) & (i3_data['y'] < (dax_x - aoi_size - 1)) xr = i3_data['x'][mask] yr = i3_data['y'][mask] ht = i3_data['h'][mask]
def peakFinding(find_peaks, movie_file, mlist_file, parameters): # open files for input & output movie_data = datareader.inferReader(movie_file) [movie_x,movie_y,movie_l] = movie_data.filmSize() # if the i3 file already exists, read it in, # write it out & start the analysis from the # end. total_peaks = 0 if(os.path.exists(mlist_file)): print "Found", mlist_file i3data_in = readinsight3.loadI3File(mlist_file) try: curf = int(numpy.max(i3data_in['fr'])) except ValueError: curf = 0 print " Starting analysis at frame:", curf i3data = writeinsight3.I3Writer(mlist_file) if (curf > 0): i3data.addMolecules(i3data_in) total_peaks = i3data_in['x'].size else: curf = 0 i3data = writeinsight3.I3Writer(mlist_file) # process parameters if hasattr(parameters, "start_frame"): if (parameters.start_frame>=curf) and (parameters.start_frame<movie_l): curf = parameters.start_frame if hasattr(parameters, "max_frame"): if (parameters.max_frame>0) and (parameters.max_frame<movie_l): movie_l = parameters.max_frame # analyze the movie # catch keyboard interrupts & "gracefully" exit. try: while(curf<movie_l): #for j in range(l): # Set up the analysis. image = movie_data.loadAFrame(curf) - parameters.baseline mask = (image < 1.0) if (numpy.sum(mask) > 0): print " Removing negative values in frame", curf image[mask] = 1.0 # Find and fit the peaks. [peaks, residual] = find_peaks.analyzeImage(image) # Save the peaks. if (type(peaks) == type(numpy.array([]))): # remove unconverged peaks peaks = find_peaks.getConvergedPeaks(peaks) # save results if(parameters.orientation == "inverted"): i3data.addMultiFitMolecules(peaks, movie_x, movie_y, curf+1, parameters.pixel_size, inverted = True) else: i3data.addMultiFitMolecules(peaks, movie_x, movie_y, curf+1, parameters.pixel_size, inverted = False) total_peaks += peaks.shape[0] print "Frame:", curf, peaks.shape[0], total_peaks else: print "Frame:", curf, 0, total_peaks curf += 1 print "" i3data.close() find_peaks.cleanUp() return 0 except KeyboardInterrupt: print "Analysis stopped." i3data.close() find_peaks.cleanUp() return 1
import sa_library.datareader as datareader import sa_library.readinsight3 as readinsight3 if (len(sys.argv) != 4): print "usage: homotopy_psf <dax_file, input> <bin_file, input> <npy_file, output>" exit() # Minimum number of peaks to calculate the PSF from. min_peaks = 500 # Half width of the aoi size in pixels. aoi_size = 8 # Load dax file and corresponding molecule list file. dax_data = datareader.DaxReader(sys.argv[1]) i3_data = readinsight3.loadI3File(sys.argv[2]) # Go through the frames identifying good peaks and adding them # to the average psf average_psf = numpy.zeros((4 * aoi_size, 4 * aoi_size)) curf = 1 peaks_used = 0 total = 0.0 [dax_x, dax_y, dax_l] = dax_data.filmSize() while (curf < dax_l) and (peaks_used < min_peaks): # Select localizations in current frame & not near the edges. mask = (i3_data['fr'] == curf) & (i3_data['x'] > aoi_size) & ( i3_data['x'] < (dax_x - aoi_size - 1)) & (i3_data['y'] > aoi_size) & ( i3_data['y'] < (dax_y - aoi_size - 1)) xr = i3_data['x'][mask]
def peakFinding(find_peaks, movie_file, mlist_file, parameters): # open files for input & output movie_data = datareader.inferReader(movie_file) [movie_x, movie_y, movie_l] = movie_data.filmSize() # if the i3 file already exists, read it in, # write it out & start the analysis from the # end. total_peaks = 0 if (os.path.exists(mlist_file)): print "Found", mlist_file i3data_in = readinsight3.loadI3File(mlist_file) try: curf = int(numpy.max(i3data_in['fr'])) except ValueError: curf = 0 print " Starting analysis at frame:", curf i3data = writeinsight3.I3Writer(mlist_file) if (curf > 0): i3data.addMolecules(i3data_in) total_peaks = i3data_in['x'].size else: curf = 0 i3data = writeinsight3.I3Writer(mlist_file) # process parameters if hasattr(parameters, "start_frame"): if (parameters.start_frame >= curf) and (parameters.start_frame < movie_l): curf = parameters.start_frame if hasattr(parameters, "max_frame"): if (parameters.max_frame > 0) and (parameters.max_frame < movie_l): movie_l = parameters.max_frame # analyze the movie # catch keyboard interrupts & "gracefully" exit. try: while (curf < movie_l): #for j in range(l): # Set up the analysis. image = movie_data.loadAFrame(curf) - parameters.baseline mask = (image < 1.0) if (numpy.sum(mask) > 0): print " Removing negative values in frame", curf image[mask] = 1.0 # Find and fit the peaks. [peaks, residual] = find_peaks.analyzeImage(image) # Save the peaks. if (type(peaks) == type(numpy.array([]))): # remove unconverged peaks peaks = find_peaks.getConvergedPeaks(peaks) # save results if (parameters.orientation == "inverted"): i3data.addMultiFitMolecules(peaks, movie_x, movie_y, curf + 1, parameters.pixel_size, inverted=True) else: i3data.addMultiFitMolecules(peaks, movie_x, movie_y, curf + 1, parameters.pixel_size, inverted=False) total_peaks += peaks.shape[0] print "Frame:", curf, peaks.shape[0], total_peaks else: print "Frame:", curf, 0, total_peaks curf += 1 print "" i3data.close() find_peaks.cleanUp() return 0 except KeyboardInterrupt: print "Analysis stopped." i3data.close() find_peaks.cleanUp() return 1