diff --git a/spim_registration/timelapse/Snakefile b/spim_registration/timelapse/Snakefile index 149341ad04ec09c45ff0d8de032be24e86debf32..48bb4ad315d01d9815ac8f38e7ff983ba8062abd 100755 --- a/spim_registration/timelapse/Snakefile +++ b/spim_registration/timelapse/Snakefile @@ -35,7 +35,7 @@ rule done: # defining xml for czi dataset rule define_xml_czi: input: glob.glob('*.czi') - output: config["define_xml_czi"]["first_xml_filename"] + ".xml" + output: config["common"]["first_xml_filename"] + ".xml" message: "Execute define_xml_czi on the following files {input}" log: "define_xml_czi.log" run: @@ -71,7 +71,7 @@ rule resave_czi_hdf5: input: rules.define_xml_czi.output, glob.glob('*.czi') output: "hdf5_Stock68.h5", "hdf5_Stock68.xml" message: "Execute resave_hdf5 on {input}" - threads: int(config["resave_hdf5"]["parallel_timepoints"]) # parallel timepoints should tell me how many timepoints to expect +# threads: int(config["resave_hdf5"]["parallel_timepoints"]) # parallel timepoints should tell me how many timepoints to expect log: "export.log" run: part_string = produce_string("""{fiji-prefix} {fiji-app} \ @@ -99,21 +99,45 @@ rule resave_czi_hdf5: shell(cmd_string) +# defining xml for tif dataset rule define_xml_tif: - -rule resave_tif_hdf5 - - - - - + input: glob.glob('*.tif') + output: config["common"]["first_xml_filename"] + ".xml" + message: "Execute define_xml_czi on the following files {input}" + log: "define_xml_tif.log" + run: + cmd_string = produce_string( + """{fiji-prefix} {fiji-app} \ + -Dimage_file_directory={jdir} \ + -Dtimepoints={timepoints} \ + -Dacquisition_angles={acquisition_angles} \ + -Dchannels={channels} \ + -Dimage_file_pattern={image_file_pattern} \ + -Dpixel_distance_x={pixel_distance_x} \ + -Dpixel_distance_y={pixel_distance_y} \ + -Dpixel_distance_z={pixel_distance_z} \ + -Dpixel_unit={pixel_unit} \ + -Dxml_filename={first_xml_filename} \ + -Dtype_of_dataset={type_of_dataset} \ + -Dmultiple_timepoints={multiple_timepoints} \ + -Dmultiple_channels={multiple_channels} \ + -Dmultiple_illumination_directions={multiple_illumination_directions} \ + -Dmultiple_angles={multiple_angles} \ + -Dimglib_container={imglib_container} \ + -- --no-splash {path_bsh}""", + config["common"], + config["define_xml_tif"], + jdir=JOBDIR, + path_bsh=config["common"]["bsh_directory"] + config["define_xml_tif"]["bsh_file"]) + cmd_string +="> {log} 2>&1 && touch {output}" + shell(cmd_string) +rule resave_tif_hdf5 - rule registration: - # input: "{xml_base}-{file_id}-00.h5" - input: rules.resave_hdf5.output, "{xml_base}-{file_id}-00.h5" + input: "{xml_base}-{file_id}-00.h5" + #input: rules.resave_hdf5.output, "{xml_base}-{file_id}-00.h5" output: "{xml_base}-{file_id,\d+}-00.h5_registered", #"{xml_base}.job_{file_id,\d+}.xml" log: "{xml_base}-{file_id}-registration.log" run: diff --git a/spim_registration/timelapse/define_tif_zip.bsh b/spim_registration/timelapse/define_tif_zip.bsh new file mode 100755 index 0000000000000000000000000000000000000000..f03b52fec9445b4a3408983a8ade1af437162245 --- /dev/null +++ b/spim_registration/timelapse/define_tif_zip.bsh @@ -0,0 +1,87 @@ +import ij.IJ; // calls imagej +import ij.Prefs; // calls imagej settings +import ij.ImagePlus; +import java.lang.Runtime; +import java.io.File; +import java.io.FilenameFilter; + +runtime = Runtime.getRuntime(); +System.out.println(runtime.availableProcessors() + " cores available for multi-threading"); + +Prefs.setThreads(1); // defines the number of threads allowed +print("Threads: "+Prefs.getThreads()); // prints thread setting in output + +System.out.println("Start loading parameters"); +// Directory +System.out.println("========================================================="); +System.out.println("Directory:"); +image_file_directory = System.getProperty( "image_file_directory" ); +xml_filename = System.getProperty( "xml_filename" ); + +System.out.println( "image_file_directory = " + image_file_directory ); +System.out.println( "xml_filename = " + xml_filename ); + +// Dataset settings +System.out.println("========================================================="); +System.out.println("Dataset:"); +timepoints = System.getProperty( "timepoints" ); +channels = System.getProperty( "channels" ); +acquisition_angles = System.getProperty( "acquisition_angles" ); +image_file_pattern = System.getProperty( "image_file_pattern" ); +type_of_dataset = System.getProperty( "type_of_dataset" ); +multiple_timepoints = System.getProperty( "multiple_timepoints" ); +multiple_channels = System.getProperty( "multiple_channels" ); +multiple_illumination_directions = System.getProperty( "multiple_illumination_directions" ); +multiple_angles = System.getProperty( "multiple_angles" ); +imglib_container = System.getProperty( "imglib_container" ); + +System.out.println( "timepoints = " + timepoints ); +System.out.println( "channels = " + channels ); +System.out.println( "acquisition_angles = " + acquisition_angles ); +System.out.println( "image_file_pattern = " + image_file_pattern ); +System.out.println( "type_of_dataset = " + type_of_dataset ); +System.out.println( "multiple_timepoints = " + multiple_timepoints ); +System.out.println( "multiple_channels = " + multiple_channels ); +System.out.println( "multiple_illumination_directions = " + multiple_illumination_directions ); +System.out.println( "multiple_angles = " + multiple_angles ); +System.out.println( "imglib_container = " + imglib_container ); + +// Calibaration +System.out.println("========================================================="); +System.out.println("Calibration:"); +float pixel_distance_x = Float.parseFloat( System.getProperty( "pixel_distance_x" ) ); +float pixel_distance_y = Float.parseFloat( System.getProperty( "pixel_distance_y" ) ); +float pixel_distance_z = Float.parseFloat( System.getProperty( "pixel_distance_z" ) ); +pixel_unit = System.getProperty( "pixel_unit" ); + +System.out.println( "pixel_distance_x = " + pixel_distance_x ); +System.out.println( "pixel_distance_y = " + pixel_distance_y ); +System.out.println( "pixel_distance_z = " + pixel_distance_z ); +System.out.println( "pixel_unit = " + pixel_unit ); + +// Executes Fiji plugin +System.out.println("========================================================="); +System.out.println("Start plugin:"); +IJ.run("Define Multi-View Dataset", + "type_of_dataset=[" + type_of_dataset + "] " + + "xml_filename=[" + xml_filename + ".xml] " + + "multiple_timepoints=[" + multiple_timepoints + "] " + + "multiple_channels=[" + multiple_channels + "] " + + "_____multiple_illumination_directions=[" + multiple_illumination_directions + "] " + + "multiple_angles=[" + multiple_angles + "] " + + "image_file_directory=" + image_file_directory + " " + + "image_file_pattern=" + image_file_pattern + " " + + "timepoints_=" + timepoints + " " + +// "channels_=" + channels + " " + // for dual channel comment out if single channel + "acquisition_angles_=" + acquisition_angles + " " + + "calibration_type=[Same voxel-size for all views] calibration_definition=[User define voxel-size(s)]" + " " + + "imglib2_data_container=[" + imglib_container + "] " + + "pixel_distance_x=" + pixel_distance_x + " " + + "pixel_distance_y=" + pixel_distance_y + " " + + "pixel_distance_z=" + pixel_distance_z + " " + + "pixel_unit=" + pixel_unit + ""); + +/* shutdown */ +runtime.exit(0); + + diff --git a/spim_registration/timelapse/tomancak_czi.json b/spim_registration/timelapse/tomancak_czi.json index b98a0ecb0e73f36adf29a59d7d46d90f6f7759e4..0a6d0d2aea9c12b6fe4b18fb65a76507aa9d386f 100755 --- a/spim_registration/timelapse/tomancak_czi.json +++ b/spim_registration/timelapse/tomancak_czi.json @@ -5,12 +5,12 @@ "fiji-prefix" : "/sw/bin/xvfb-run -a", "directory_cuda" : "/lustre/projects/hpcsupport/steinbac/unicore/christopher/unicore_jobs/Fiji.app.cuda_new/lib/", "merged_xml" : "hdf5_test_unicore_merge", - "bsh_directory" : "/projects/pilot_spim/Christopher/snakemake-workflows/spim_registration/timelapse/" + "bsh_directory" : "/projects/pilot_spim/Christopher/snakemake-workflows/spim_registration/timelapse/", + "first_xml_filename" : "Stock68" }, "define_xml_czi" : { - "first_xml_filename" : "Stock68", "pixel_distance_x" : "0.2875535786151886", "pixel_distance_y" : "0.2875535786151886", "pixel_distance_z" : "1.50000", @@ -43,6 +43,25 @@ "bsh_file" : "export.bsh" }, + "define_xml_tif" : + { + "timepoints" : "1-2", + "acquisition_angles" : "1,2,3,4,5", + "channels" : "0,1", + "image_file_pattern" : "spim_TL{{tt}}_Angle{{a}}.tif", + "pixel_distance_x" : "0.2875535786151886", + "pixel_distance_y" : "0.2875535786151886", + "pixel_distance_z" : "1.50000", + "pixel_unit" : "um", + "multiple_timepoints" : "\"YES (one file per time-point)\"", + "multiple_channels" : "\"YES (one file per channel)\"", + "multiple_illumination_directions" : "\"NO (one illumination direction)\"", + "multiple_angles" : "\"YES (one file per angle)\"", + "type_of_dataset" : "\"Image Stacks (ImageJ Opener)\"", + "imglib_container" : "\"ArrayImg (faster)\"", + "bsh_file" : "define_tif_zip.bsh" + }, + "registration" : { "timepoint" : "\"Single Timepoint (Select from List)\"",