-
Notifications
You must be signed in to change notification settings - Fork 8
Scripting
Having a lot of FRAP datasets often requires repetitive tasks. Here we explain how to set up a python script using the modules and classes provided in PyFRAP.
We first import the PyFRAP molecule class so that we can create PyFRAP data structures. We are also importing pyfrp_plot_module, so that we can launch the FRAP boundary selector later.
from pyfrp.modules import pyfrp_plot_module
from pyfrp.subclasses import pyfrp_molecule
We first have to define all microscope parameters from the experiment:
center=[256,256]
cylinderHeight=90.3332804037
imagingRadius=294.103867936
imagingDepth=40
dataResMu=566.79
frameInterval=1
sideLengthBleachedMu=192.68488493739596
Now we create a root molecule to which we can add our new FRAP experiment:
mol=pyfrp_molecule.molecule("TestMolecule")
We can create and add a new embryo by calling newEmbryo:
emb=mol.newEmbryo("TestEmbryo")
Set filepath to folder containing time-lapse images and update file list:
emb.setDataFolder("path/to/recover/files")
emb.updateFileList()
Set data resolution (experiment specific) in mu/px:
emb.setDataResMu(dataResMu)
Launch little dialog to crop center and radius of experiment:
boundarySelector=pyfrp_plot_module.FRAPBoundarySelector(emb)
center,imagingRadius=boundarySelector.getResults()
Define Sidelength of bleached ROI:
emb.setSideLengthBleachedMu(sideLengthBleachedMu)
Define depth of imaging:
emb.setSliceDepthMu(imagingDepth)
Set geometry to be cylindrical:
emb.setGeometry2Cylinder(center,cylinderRadius,-cylinderHeight)
Update geometry properties in geo-file:
emb.geometry.updateGeoFile()
Create default ROIs and create optimal All ROI:
emb.genDefaultROIs(emb.geometry.getCenter(),imagingRadius)
emb.getOptimalAllROI()
Set frame interval (experiment specific):
emb.setFrameInterval(frameInterval)
Create Simulation:
sim=emb.newSimulation()
Set mesh volSize and generate mesh:
sim.mesh.setVolSizePx(25.)
sim.mesh.genMesh()
Compute Indices of ROIs:
emb.computeROIIdxs()
Create analysis and turn on median and gaussian filter. Turn the rest off:
emb.newAnalysis()
emb.analysis.setNorm(False)
emb.analysis.setGaussian(True)
emb.analysis.setMedian(True)
emb.analysis.setQuad(False)
emb.analysis.setBkgd(False)
emb.analysis.setFlatten(False)
Create new fit:
fit=emb.newFit('Testfit')
Add some ROIs to be fitted, turn on pinning and production fitting.
fit.addROIByName('Bleached Square')
fit.addROIByName('Slice')
fit.setFitDegr(False)
fit.setFitProd(True)
fit.setEqu(True)
fit.setFitPinned(True)
fit.setOptMeth('Constrained Nelder-Mead')
Run analysis, simulation and fitting:
emb.quickAnalysis()
Plot fit and print out results:
fit.plotFit()
fit.printResults()