Mercurial > repos > iuc > imagej2_convert_format
annotate imagej2_utils.py @ 5:a3806b0a32ed draft default tip
planemo upload commit 378c3ecfbaed0330faf197811d379431b0f9e92c-dirty
| author | iuc |
|---|---|
| date | Sun, 11 Oct 2015 13:30:31 -0400 |
| parents | 312e8ce708b1 |
| children |
| rev | line source |
|---|---|
|
0
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
1 import bioformats |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
2 import javabridge |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
3 import os |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
4 import shutil |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
5 |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
6 FIJI_JAR_DIR = os.environ.get( 'FIJI_JAR_DIR', None ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
7 FIJI_OSX_JAVA3D_DIR = os.environ.get( 'FIJI_OSX_JAVA3D_DIR', None ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
8 FIJI_PLUGIN_DIR = os.environ.get( 'FIJI_PLUGIN_DIR', None ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
9 FIJI_ROOT_DIR = os.environ.get( 'FIJI_ROOT_DIR', None ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
10 |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
11 def get_java_class_path(): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
12 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
13 Return the Java class path for use when starting the JVM via Javabridge. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
14 This function expects the following environment variable settings: |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
15 FIJI_JAR_DIR, FIJI_PLUGIN_DIR, FIJI_OSX_JAVA3D_DIR. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
16 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
17 class_path_list = [] |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
18 # Handle javabridge.JARS setting. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
19 for jar_file in javabridge.JARS: |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
20 class_path_list.append( jar_file ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
21 if FIJI_JAR_DIR is not None and os.path.isdir( FIJI_JAR_DIR ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
22 for filename in os.listdir( FIJI_JAR_DIR ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
23 if filename.endswith( '.jar' ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
24 class_path_list.append( os.path.join( FIJI_JAR_DIR, filename ) ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
25 fiji_bioformats_jar_dir = os.path.join( FIJI_JAR_DIR, 'bio-formats' ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
26 if os.path.isdir( fiji_bioformats_jar_dir ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
27 for filename in os.listdir( fiji_bioformats_jar_dir ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
28 if filename.endswith( '.jar' ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
29 class_path_list.append( os.path.join( fiji_bioformats_jar_dir, filename ) ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
30 if FIJI_PLUGIN_DIR is not None and os.path.isdir( FIJI_PLUGIN_DIR ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
31 for filename in os.listdir( FIJI_PLUGIN_DIR ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
32 if filename.endswith( '.jar' ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
33 class_path_list.append( os.path.join( FIJI_PLUGIN_DIR, filename ) ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
34 if FIJI_OSX_JAVA3D_DIR is not None and os.path.isdir( FIJI_OSX_JAVA3D_DIR ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
35 for filename in os.listdir( FIJI_OSX_JAVA3D_DIR ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
36 if filename.endswith( '.jar' ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
37 class_path_list.append( os.path.join( FIJI_OSX_JAVA3D_DIR, filename ) ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
38 return class_path_list |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
39 |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
40 def kill_vm(): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
41 javabridge.detach() |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
42 javabridge.kill_vm() |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
43 |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
44 def load_image( image_path, c=None, z=0, t=0, series=None, index=None, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
45 rescale=True, wants_max_intensity=False, channel_names=None ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
46 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
47 Load in image from a file using bioformats, always returning a tuple of |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
48 (image, scale) where the image is a numpy.ndarray object, and the scale |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
49 is an integer or None. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
50 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
51 result = bioformats.load_image( path=image_path, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
52 c=c, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
53 z=z, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
54 t=t, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
55 series=series, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
56 index=index, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
57 rescale=rescale, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
58 wants_max_intensity=wants_max_intensity, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
59 channel_names=channel_names ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
60 if wants_max_intensity: |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
61 # The value of result is a tuple: ( image, scale ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
62 image, scale = result |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
63 else: |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
64 image = result |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
65 scale = None |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
66 # The image is a numpy.ndarray object, and the scale is an integer or None. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
67 return image, scale |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
68 |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
69 def start_vm( args=None, class_path=None, max_heap_size=None, run_headless=False ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
70 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
71 Start the JVM via Javabridge. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
72 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
73 if class_path is None: |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
74 class_path = get_java_class_path() |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
75 # Start the JVM. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
76 javabridge.start_vm( args=args, class_path=class_path, max_heap_size=max_heap_size, run_headless=run_headless ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
77 # Suppress Java logging to stdout. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
78 java_stack = javabridge.make_instance( 'java/io/ByteArrayOutputStream', "()V" ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
79 java_stack_ps = javabridge.make_instance( 'java/io/PrintStream', "(Ljava/io/OutputStream;)V", java_stack ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
80 javabridge.static_call( 'Ljava/lang/System;', "setErr", '(Ljava/io/PrintStream;)V', java_stack_ps ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
81 java_out = javabridge.make_instance( 'java/io/ByteArrayOutputStream', "()V" ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
82 java_out_ps = javabridge.make_instance( 'java/io/PrintStream', "(Ljava/io/OutputStream;)V", java_out ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
83 javabridge.static_call( 'Ljava/lang/System;', "setOut", '(Ljava/io/PrintStream;)V', java_out_ps ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
84 javabridge.attach() |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
85 |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
86 def write_image( image_path, pixels, pixel_type, c=0, z=0, t=0, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
87 size_c=1, size_z=1, size_t=1, channel_names=None, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
88 move_to=None ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
89 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
90 Write an image file using bioformats. Bioformats uses file extensions |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
91 (e.g., .job, .gif, etc) when reading and writing image files, so the |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
92 Galaxy dataset naming convention of setting all file extensions as .dat |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
93 is handled by setting the move_to parameter to the value of the Galaxy |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
94 dataset path. |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
95 """ |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
96 bioformats.write_image( pathname=image_path, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
97 pixels=pixels, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
98 pixel_type=pixel_type, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
99 c=c, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
100 z=z, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
101 t=t, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
102 size_c=size_c, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
103 size_z=size_z, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
104 size_t=size_t, |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
105 channel_names=channel_names ) |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
106 if move_to is not None and os.path.exists( move_to ): |
|
312e8ce708b1
planemo upload commit 4bf97847c35c4dcf9638008b9b4b6c4e10015f19
iuc
parents:
diff
changeset
|
107 shutil.move( image_path, os.path.abspath( move_to ) ) |
