diff --git a/src/imcflibs/imagej/misc.py b/src/imcflibs/imagej/misc.py index edd4509..7b9ec0a 100644 --- a/src/imcflibs/imagej/misc.py +++ b/src/imcflibs/imagej/misc.py @@ -701,3 +701,58 @@ def run_imarisconvert(file_path): IJ.log("Conversion to .ims is finished.") else: IJ.log("Conversion failed with error code: %d" % result) + + +def save_script_parameters(destination, save_file_name="script_parameters.txt"): + """Save all Fiji script parameters to a text file. + + Parameters + ---------- + destination : str + Directory where the script parameters file will be saved. + save_file_name : str, optional + Name of the script parameters file, by default "script_parameters.txt". + + Notes + ----- + This function records all input parameters defined in the Fiji script header + (e.g. #@ String) to a text file. + + The following parameters are excluded: + - Parameters explicitly declared with `style="password"` are ignored. + - Runtime keys (e.g. 'SJLOG', 'COMMAND', 'RM') are also skipped. + """ + # Get the ScriptModule object from globals made by Fiji + module = globals().get("org.scijava.script.ScriptModule") + if module is None: + print("No ScriptModule found — skipping saving script parameters.") + return + + destination = str(destination) + out_path = os.path.join(destination, save_file_name) + + # Access script metadata and inputs + script_info = module.getInfo() + inputs = module.getInputs() + + # Keys to skip explicitly + skip_keys = ["USERNAME", "SJLOG", "COMMAND", "RM"] + + with open(out_path, "w") as f: + for item in script_info.inputs(): + key = item.getName() + + # Skip if any keys are in the skip list + if any(skip in key.upper() for skip in skip_keys): + continue + + # Skip if parameter is declared with style="password" + style = item.getWidgetStyle() + if style is not None and style.lower() == "password": + continue + + if inputs.containsKey(key): + val = inputs.get(key) + f.write("%s: %s\n" % (key, str(val))) + + print("Saved script parameters to: %s" % out_path) diff --git a/src/imcflibs/imagej/omerotools.py b/src/imcflibs/imagej/omerotools.py index 31f4bdd..7dad756 100644 --- a/src/imcflibs/imagej/omerotools.py +++ b/src/imcflibs/imagej/omerotools.py @@ -47,6 +47,15 @@ def parse_url(client, omero_str): ------- list(fr.igred.omero.repository.ImageWrapper) List of ImageWrappers parsed from the string. + + Examples + -------- + >>> from fr.igred.omero import Client + >>> client = Client() + >>> OMERO_LINK = "123456" + >>> img_wrappers = omerotools.parse_url(client, OMERO_LINK) + >>> for wrapper in img_wrappers: + >>> imp = wpr.toImagePlus(client) """ image_ids = [] dataset_ids = []