From d5f9931790bdee99e6ac508bd7c754e03ba5b6cd Mon Sep 17 00:00:00 2001 From: Pariksheet Nanda Date: Mon, 20 Feb 2017 23:30:15 -0500 Subject: [PATCH] MAINT: Rearrange files to comply with http://arxiv.org/abs/1609.00037 --- .gitignore | 15 ++++-- .../DRSC_TF_Library_Distribution.xls | Bin .../cellprofiler/2017-01-04}/Makefile | 0 .../2017-01-04}/all-plates.properties | 0 results/cellprofiler/cellprofiler.mk | 29 ++++++++++ src/image-processing-pipeline.cpproj | Bin 0 -> 255231 bytes src/image_preprocessing_z_projection.py | 51 ++++++++++++++++++ .../overlap-analysis.R | 0 plot-plates.R => src/plot-plates.R | 0 plots.R => src/plots.R | 0 10 files changed, 90 insertions(+), 5 deletions(-) rename {plates => data}/DRSC_TF_Library_Distribution.xls (100%) mode change 100755 => 100644 rename {cellprofiler_all-plates => results/cellprofiler/2017-01-04}/Makefile (100%) rename {cellprofiler_all-plates => results/cellprofiler/2017-01-04}/all-plates.properties (100%) create mode 100644 results/cellprofiler/cellprofiler.mk create mode 100644 src/image-processing-pipeline.cpproj create mode 100644 src/image_preprocessing_z_projection.py rename analysis-only_overlap.R => src/overlap-analysis.R (100%) rename plot-plates.R => src/plot-plates.R (100%) rename plots.R => src/plots.R (100%) diff --git a/.gitignore b/.gitignore index db343bd..fd3465c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,12 @@ # Data -cellprofiler_all-plates.tar.xz -cellprofiler_all-plates/all-plates.db -z_stack.tar.xz -z_stack/ +data/April_14_2016.tar.xz +data/April_14_2016/ +results/cellprofiler/2017-01-04/cellprofiler_all-plates.tar.xz +results/cellprofiler/2017-02-20/ +results/z_projection.tar.xz +results/z_projection/ *.csv +*.db *.pdf *.png *.svg @@ -12,4 +15,6 @@ z_stack/ *.log # R -.Rhistory \ No newline at end of file +.Rhistory +.Rproj.user +*.Rproj \ No newline at end of file diff --git a/plates/DRSC_TF_Library_Distribution.xls b/data/DRSC_TF_Library_Distribution.xls old mode 100755 new mode 100644 similarity index 100% rename from plates/DRSC_TF_Library_Distribution.xls rename to data/DRSC_TF_Library_Distribution.xls diff --git a/cellprofiler_all-plates/Makefile b/results/cellprofiler/2017-01-04/Makefile similarity index 100% rename from cellprofiler_all-plates/Makefile rename to results/cellprofiler/2017-01-04/Makefile diff --git a/cellprofiler_all-plates/all-plates.properties b/results/cellprofiler/2017-01-04/all-plates.properties similarity index 100% rename from cellprofiler_all-plates/all-plates.properties rename to results/cellprofiler/2017-01-04/all-plates.properties diff --git a/results/cellprofiler/cellprofiler.mk b/results/cellprofiler/cellprofiler.mk new file mode 100644 index 0000000..e573a60 --- /dev/null +++ b/results/cellprofiler/cellprofiler.mk @@ -0,0 +1,29 @@ +# Behavior: empty values are considered false +controls_only = yes + +# Paths +PREFIX_OUTPUT = 2017-02-20 +PREFIX_SRC = ../../src +IMAGES = ../z_projection +PIPELINE = $(PREFIX_SRC)/image-processing-pipeline.cpproj +FILELIST = $(PREFIX_OUTPUT)/filelist + +# Executables +cellprofiler = cellprofiler + +.PHONY: cellprofiler +cellprofiler : $(FILELIST) + $(cellprofiler) \ + --pipeline=$(PIPELINE) \ + --output-directory=$(PREFIX_OUTPUT) \ + --file-list=$(FILELIST) + +.PHONY : filelist +filelist : $(FILELIST) +$(FILELIST) : $(IMAGES) +ifneq ($(CLUSTER),) + find $< -type f | sort > $@ +else +#find $< -type f -regex '^502[^_]_(J18|I09|H09|N22|E20|M13|K11)' | sort > $@ + find $< -type f -regex '.*/502[^_]+_J18_S08.*' | sort > $@ +endif diff --git a/src/image-processing-pipeline.cpproj b/src/image-processing-pipeline.cpproj new file mode 100644 index 0000000000000000000000000000000000000000..e22f3afeb29b849c0aa140ca10e17cd13acacd36 GIT binary patch literal 255231 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 U!n*C^65N+35cK17^xu8_AJHD=egFUf literal 0 HcmV?d00001 diff --git a/src/image_preprocessing_z_projection.py b/src/image_preprocessing_z_projection.py new file mode 100644 index 0000000..503e999 --- /dev/null +++ b/src/image_preprocessing_z_projection.py @@ -0,0 +1,51 @@ +""" +Reduce image Z-stack to maximum intensity projection. +""" +# pylint: disable=invalid-name,superfluous-parens + +import glob +import multiprocessing as mp +import os + +import numpy as np +import scipy.misc + + +out_dir = "../results/z_projection" +z_slices = 3 +# Assume all files are tif, and therefore that the number of files is +# a multiple of z_slices. +print("Reading file list") +all_files = glob.glob('../data/April_14_2016/*/*') +all_files.sort() + +if not os.path.exists(out_dir): + print("Creating output directory") + os.mkdir(out_dir) + +print("Creating output file list") +all_files_out = [ + os.path.join(out_dir, + os.path.basename(all_files[i].replace("_Z1", ""))) + for i in xrange(0, len(all_files), z_slices) +] + +def max_projection(pool_index): + """ + Create and save image maximum intensity projection. + """ + offset = pool_index * z_slices + im1 = scipy.misc.imread(all_files[offset]) + shape = [1] + list(im1.shape) + for file_ in all_files[offset + 1:offset + z_slices]: + im2 = scipy.misc.imread(file_) + im_stack = np.concatenate((im1.reshape(shape), + im2.reshape(shape)), axis=0) + im1 = im_stack.max(axis=0) + scipy.misc.imsave(all_files_out[pool_index], im1) + +print("Reading images, merging and saving (this can take a while)") +pool = mp.Pool() +pool.map(max_projection, xrange(len(all_files_out))) + +print("Finished") diff --git a/analysis-only_overlap.R b/src/overlap-analysis.R similarity index 100% rename from analysis-only_overlap.R rename to src/overlap-analysis.R diff --git a/plot-plates.R b/src/plot-plates.R similarity index 100% rename from plot-plates.R rename to src/plot-plates.R diff --git a/plots.R b/src/plots.R similarity index 100% rename from plots.R rename to src/plots.R