Mercurial > repos > iuc > imagej2_make_binary
annotate imagej2_base_utils.py @ 0:66d9e595dff2 draft
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
| author | iuc |
|---|---|
| date | Tue, 04 Aug 2015 13:20:29 -0400 |
| parents | |
| children | d26f11339f08 |
| rev | line source |
|---|---|
|
0
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
1 import os |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
2 import shutil |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
3 import sys |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
4 import tempfile |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
5 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
6 FIJI_JAR_DIR = os.environ.get( 'FIJI_JAR_DIR', None ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
7 FIJI_OSX_JAVA3D_DIR = os.environ.get( 'FIJI_OSX_JAVA3D_DIR', None ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
8 FIJI_PLUGIN_DIR = os.environ.get( 'FIJI_PLUGIN_DIR', None ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
9 FIJI_ROOT_DIR = os.environ.get( 'FIJI_ROOT_DIR', None ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
10 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
11 BUFF_SIZE = 1048576 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
12 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
13 def cleanup_before_exit( tmp_dir ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
14 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
15 Remove temporary files and directories prior to tool exit. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
16 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
17 if tmp_dir and os.path.exists( tmp_dir ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
18 shutil.rmtree( tmp_dir ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
19 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
20 def get_base_cmd_bunwarpj( jvm_memory ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
21 if FIJI_JAR_DIR is not None and FIJI_PLUGIN_DIR is not None: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
22 if jvm_memory in [ None, 'None' ]: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
23 jvm_memory_str = '' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
24 else: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
25 jvm_memory_str = '-Xmx%s' % jvm_memory |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
26 bunwarpj_base_cmd = "java %s -cp %s/ij-1.49k.jar:%s/bUnwarpJ_-2.6.1.jar bunwarpj.bUnwarpJ_" % \ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
27 ( jvm_memory_str, FIJI_JAR_DIR, FIJI_PLUGIN_DIR ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
28 return bunwarpj_base_cmd |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
29 return None |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
30 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
31 def get_base_command_imagej2( memory_size=None, macro=None, jython_script=None ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
32 imagej2_executable = get_imagej2_executable() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
33 if imagej2_executable is None: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
34 return None |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
35 cmd = '%s --ij2 --headless --debug' % imagej2_executable |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
36 if memory_size is not None: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
37 memory_size_cmd = ' -DXms=%s -DXmx=%s' % ( memory_size, memory_size ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
38 cmd += memory_size_cmd |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
39 if macro is not None: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
40 cmd += ' --macro %s' % os.path.abspath( macro ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
41 if jython_script is not None: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
42 cmd += ' --jython %s' % os.path.abspath( jython_script ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
43 return cmd |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
44 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
45 def get_file_extension( image_format ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
46 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
47 Return a valid bioformats file extension based on the received |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
48 value of image_format( e.g., "gif" is returned as ".gif". |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
49 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
50 return '.%s' % image_format |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
51 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
52 def get_file_name_without_extension( file_path ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
53 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
54 Eliminate the .ext from the received file name, assuming that |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
55 the file name consists of only a single '.'. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
56 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
57 if os.path.exists( file_path ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
58 path, name = os.path.split( file_path ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
59 name_items = name.split( '.' ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
60 return name_items[ 0 ] |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
61 return None |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
62 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
63 def get_imagej2_executable(): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
64 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
65 Fiji names the ImageJ executable different names for different |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
66 architectures, so figure out which name we need. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
67 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
68 platform_dict = get_platform_info_dict() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
69 if platform_dict.get( 'architecture', None ) in [ 'x86_64' ]: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
70 if platform_dict.get( 'os', None ) in [ 'darwin' ]: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
71 return 'ImageJ-macosx' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
72 if platform_dict.get( 'os', None ) in [ 'linux' ]: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
73 return 'ImageJ-linux64' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
74 return None |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
75 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
76 def get_input_image_path( tmp_dir, input_file, image_format ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
77 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
78 Bioformats uses file extensions (e.g., .job, .gif, etc) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
79 when reading and writing image files, so the Galaxy dataset |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
80 naming convention of setting all file extensions as .dat |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
81 must be handled. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
82 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
83 image_path = get_temporary_image_path( tmp_dir, image_format ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
84 # Remove the file so we can create a symlink. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
85 os.remove( image_path ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
86 os.symlink( input_file, image_path ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
87 return image_path |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
88 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
89 def get_max_heap_size_value( max_heap_size_type, max_heap_size ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
90 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
91 Return a string that can be used by the javabridge to set the size |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
92 of the memory allocation pool used by the JVM. The value must be |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
93 determined to be a multiple of 1024 or it will be ignored. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
94 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
95 if max_heap_size_type == 'default': |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
96 return None |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
97 if max_heap_size_type == 'megabytes': |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
98 if int( max_heap_size ) % 1024 not in [ 0, 256, 512 ]: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
99 return None |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
100 return '%sm' % str( max_heap_size ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
101 if max_heap_size_type == 'gigabytes': |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
102 return '%sg' % str( max_heap_size ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
103 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
104 def get_platform_info_dict(): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
105 '''Return a dict with information about the current platform.''' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
106 platform_dict = {} |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
107 sysname, nodename, release, version, machine = os.uname() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
108 platform_dict[ 'os' ] = sysname.lower() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
109 platform_dict[ 'architecture' ] = machine.lower() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
110 return platform_dict |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
111 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
112 def get_stderr_exception( tmp_err, tmp_stderr, tmp_out, tmp_stdout, include_stdout=False ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
113 tmp_stderr.close() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
114 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
115 Return a stderr string of reasonable size. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
116 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
117 # Get stderr, allowing for case where it's very large. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
118 tmp_stderr = open( tmp_err, 'rb' ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
119 stderr_str = '' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
120 buffsize = BUFF_SIZE |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
121 try: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
122 while True: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
123 stderr_str += tmp_stderr.read( buffsize ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
124 if not stderr_str or len( stderr_str ) % buffsize != 0: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
125 break |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
126 except OverflowError: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
127 pass |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
128 tmp_stderr.close() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
129 if include_stdout: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
130 tmp_stdout = open( tmp_out, 'rb' ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
131 stdout_str = '' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
132 buffsize = BUFF_SIZE |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
133 try: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
134 while True: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
135 stdout_str += tmp_stdout.read( buffsize ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
136 if not stdout_str or len( stdout_str ) % buffsize != 0: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
137 break |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
138 except OverflowError: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
139 pass |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
140 tmp_stdout.close() |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
141 if include_stdout: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
142 return 'STDOUT\n%s\n\nSTDERR\n%s\n' % ( stdout_str, stderr_str ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
143 return stderr_str |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
144 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
145 def get_temp_dir( prefix='tmp-imagej-', dir=None ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
146 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
147 Return a temporary directory. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
148 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
149 return tempfile.mkdtemp( prefix=prefix, dir=dir ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
150 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
151 def get_tempfilename( dir=None, suffix=None ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
152 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
153 Return a temporary file name. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
154 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
155 fd, name = tempfile.mkstemp( suffix=suffix, dir=dir ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
156 os.close( fd ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
157 return name |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
158 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
159 def get_temporary_image_path( tmp_dir, image_format ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
160 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
161 Return the path to a temporary file with a valid image format |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
162 file extension that can be used with bioformats. |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
163 """ |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
164 file_extension = get_file_extension( image_format ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
165 return get_tempfilename( tmp_dir, file_extension ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
166 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
167 def handle_none_type( val, val_type='float' ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
168 if val is None: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
169 return ' None' |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
170 else: |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
171 if val_type == 'float': |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
172 return ' %.1f' % val |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
173 elif val_type == 'int': |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
174 return ' %d' % val |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
175 |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
176 def stop_err( msg ): |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
177 sys.stderr.write( msg ) |
|
66d9e595dff2
planemo upload commit 98c34e070343a117019ffd25a3af117808159bf5-dirty
iuc
parents:
diff
changeset
|
178 sys.exit( 1 ) |
