diff --git a/src/imcflibs/imagej/projections.py b/src/imcflibs/imagej/projections.py new file mode 100644 index 0000000000000000000000000000000000000000..c25107cf122a0933d84aeea4b993e6bb7ef863ec --- /dev/null +++ b/src/imcflibs/imagej/projections.py @@ -0,0 +1,73 @@ +"""Functions for creating Z projections.""" + +from .bioformats import export_using_orig_name + +from ij.plugin import ZProjector + + +def average(imp): + """Create an average intensity projection. + + Parameters + ---------- + imp : ij.ImagePlus + The input stack to be projected. + + Returns + ------- + ij.ImagePlus + The result of the projection. + """ + # log.debug("Creating average projection...") + proj = ZProjector.run(imp, "avg") + return proj + + +def maximum(imp): + """Create a maximum intensity projection. + + Parameters + ---------- + imp : ij.ImagePlus + The input stack to be projected. + + Returns + ------- + ij.ImagePlus + The result of the projection. + """ + # log.debug("Creating maximum intensity projection...") + proj = ZProjector.run(imp, "max") + return proj + + +def create_and_save(imp, projections, path, filename, export_format): + """Wrapper to create one or more projections and export the results. + + Parameters + ---------- + imp : ij.ImagePlus + The image stack to create the projections from. + projections : list(str) + A list of projection types to be done, valid options are 'Average', + 'Maximum' and 'Sum'. + path : str + The path to store the results in. + filename : str + The original file name to derive the results name from. + export_format : str + The suffix to be given to Bio-Formats, determining the storage format. + """ + command = { + 'Average': 'avg', + 'Maximum': 'max', + 'Sum': 'sum', + } + for projection in projections: + # log.debug("Creating '%s' projection..." % projection) + proj = ZProjector.run(imp, command[projection]) + export_using_orig_name(proj, + path, filename, + "-%s" % command[projection], + export_format) + proj.close()