documents:120206pyip_cooking:python_imagej_cookbook
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
documents:120206pyip_cooking:python_imagej_cookbook [2022/10/07 19:50] – [Plugin: MorphoLibJ] kota | documents:120206pyip_cooking:python_imagej_cookbook [2024/10/08 17:45] (current) – [Accessing multiple files to load image sequences] kota | ||
---|---|---|---|
Line 410: | Line 410: | ||
</ | </ | ||
==== Accessing multiple files to load image sequences ==== | ==== Accessing multiple files to load image sequences ==== | ||
+ | |||
+ | A simple way is to use glob package (file not loaded in this example). | ||
+ | <code python linenums: | ||
+ | import glob, os | ||
+ | from ij.io import DirectoryChooser | ||
+ | |||
+ | srcDir = DirectoryChooser(" | ||
+ | for filename in glob.glob(os.path.join(srcDir, | ||
+ | print(os.path.basename(filename)) | ||
+ | </ | ||
Here is a cool script written by Christian Tischer for loading image series using file prefix as dictionary keys. | Here is a cool script written by Christian Tischer for loading image series using file prefix as dictionary keys. | ||
Line 787: | Line 797: | ||
zip command creates a list of tuples from elements of arrays a and b. | zip command creates a list of tuples from elements of arrays a and b. | ||
+ | ==== Using Java8 Stream ==== | ||
+ | |||
+ | Stream-related syntax introduced from Java8 is useful for writing clear codes, but cannot be directly used in Jython. Below is a way to use StreamAPI, by introducing Jython classes implementing the Consumer interface. I took this idea from [[https:// | ||
+ | |||
+ | <code python> | ||
+ | from java.util.Arrays import asList | ||
+ | from java.util.function import Predicate, Consumer, Function | ||
+ | from java.util.stream import Collectors | ||
+ | from java.util import Arrays | ||
+ | |||
+ | |||
+ | class jc(Consumer): | ||
+ | def __init__(self, | ||
+ | self.accept=fn | ||
+ | |||
+ | class jf(Function): | ||
+ | def __init__(self, | ||
+ | self.apply = fn | ||
+ | |||
+ | class jp(Predicate): | ||
+ | def __init__(self, | ||
+ | self.test = fn | ||
+ | | ||
+ | def jprint(x): | ||
+ | print x | ||
+ | |||
+ | tt = [" | ||
+ | c = Arrays.stream(tt).count() | ||
+ | print c | ||
+ | |||
+ | print " | ||
+ | Arrays.stream(tt).forEach(jc(lambda x: jprint(" | ||
+ | |||
+ | print " | ||
+ | Arrays.stream(tt).parallel().forEach(jc(lambda x: jprint(" | ||
+ | |||
+ | print "has b?", Arrays.stream(tt).anyMatch(jp(lambda x: x==" | ||
+ | print "has z?", Arrays.stream(tt).anyMatch(jp(lambda x: x==" | ||
+ | |||
+ | # convert to Java List<> | ||
+ | jtt = Arrays.asList(tt) | ||
+ | |||
+ | jtt.stream().forEach(jc(lambda x: jprint(" | ||
+ | </ | ||
===== Event Listener ===== | ===== Event Listener ===== | ||
documents/120206pyip_cooking/python_imagej_cookbook.1665172227.txt.gz · Last modified: 2022/10/07 19:50 by kota