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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ) )