diff --git a/.gitignore b/.gitignore index 32858aa..25c7d32 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,7 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +*.LOG + +*~ diff --git a/MaarsLib/Maars.LOG b/MaarsLib/Maars.LOG deleted file mode 100644 index ac2775f..0000000 --- a/MaarsLib/Maars.LOG +++ /dev/null @@ -1,73 +0,0 @@ -create parameter object ... -Done. -create main dialog ... -- set Layout -- set minimal dimension -- create panel -- create OpenSegmentationDialogButtonAction -- create OpenFluoAnalysisDialogAction -- create AutofocusButtonAction -- add buttons to panel -- add label for text field -- create RefreshAreaToExploreAction -- add button, textfield and label to mainDialog -- create OpenMitosisMovieParamDialog -- add button and label to panel -- create OKMaarsMainDialog -- add button -Done. -action create MaarsMitosisMovieDialog -Create MaarsMitosisMovieDialog... -- create generic dialog -- add label for start movie conditions and value -- ABSOLUTE_MINIMUM_SPINDLE_SIZE --- add checkbox condition --- add field value -- ABSOLUTE_MAXIMUM_SPINDLE_SIZE --- add checkbox condition --- add field value -- RELATIVE_SPINDLE_ANGLE --- add checkbox condition --- add field value -- add label for end movie conditions and value -- ABSOLUTE_MAXIMUM_SPINDLE_SIZE --- add checkbox condition --- add field value -- RELATIVE_MAXIMUM_SPINDLE_SIZE --- add checkbox condition --- add field value -- RELATIVE_SPINDLE_ANGLE --- add checkbox condition --- add field value -- TIME_LIMIT --- add checkbox condition --- add field value -- GROWING_SPINDLE --- add checkbox condition --- add field value -- add label for acquisition parameters -- add field for FLUORESCENCE_USED -- add field for TIME_INTERVAL -- add field for RANGE_SIZE_FOR_MOVIE -- add field for STEP -- add field for MARGIN_AROUD_CELL -- add field for SAVING_PATH -Done - show MaarsMitosisMovieDialog -Done -11-Apr-2014 17:39:30 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:40:00 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:40:30 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:41:00 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:41:30 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:42:00 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:42:30 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) -11-Apr-2014 17:43:00 java.util.prefs.FileSystemPreferences syncWorld -WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: java.io.FileNotFoundException: /etc/.java/.systemPrefs/org/micromanager/prefs.tmp (Permission denied) diff --git a/MaarsLib/maars_config.txt b/MaarsLib/maars_config.txt deleted file mode 100644 index 09b8a1e..0000000 --- a/MaarsLib/maars_config.txt +++ /dev/null @@ -1 +0,0 @@ -{"SEGMENTATION_PARAMETERS":{"CHANNEL":"BF","NEW_MAX_WIDTH_FOR_CHANGE_SCALE":1500,"NEW_MAX_HEIGTH_FOR_CHANGE_SCALE":1500,"FRAME_NUMBER":1,"RANGE_SIZE_FOR_MOVIE":9.0,"STEP":0.3,"CELL_SIZE":4.0,"MEAN_GREY_VALUE":-177660.0,"SOLIDITY":0.84,"FILTER_MEAN_GREY_VALUE":true,"FILTER_SOLIDITY":true,"MINIMUM_CELL_AREA":9.0,"MAXIMUM_CELL_AREA":400.0},"EXPLORATION_PARAMETERS":{"X_FIELD_NUMBER":2,"Y_FIELD_NUMBER":1},"FLUO_ANALYSIS_PARAMETERS":{"FRAME_NUMBER":1,"RANGE_SIZE_FOR_MOVIE":7.0,"STEP":0.3,"SPOT_RADIUS":0.15,"MAXIMUM_NUMBER_OF_SPOT":2,"CHANNEL":"CFP","SAVE_FLUORESCENT_MOVIES":false,"FIND_BEST_MITOSIS_IN_FIELD":true},"MITOSIS_MOVIE_PARAMETERS":{"END_MOVIE_CONDITIONS":{"CONDITIONS":{"RELATIVE_SPINDLE_ANGLE":false,"TIME_LIMIT":true,"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":false,"GROWING_SPINDLE":true,"RELATIVE_MAXIMUM_SPINDLE_SIZE":false},"VALUES":{"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":10,"RELATIVE_MAXIMUM_SPINDLE_SIZE":0.8,"RELATIVE_SPINDLE_ANGLE":0,"GROWING_SPINDLE":0.1,"TIME_LIMIT":1.0}},"START_MOVIE_CONDITIONS":{"CONDITIONS":{"ABSOLUTE_MINIMUM_SPINDLE_SIZE":true,"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":true,"RELATIVE_SPINDLE_ANGLE":false},"VALUES":{"ABSOLUTE_MINIMUM_SPINDLE_SIZE":0.5,"RELATIVE_SPINDLE_ANGLE":90,"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":10.0}},"FRAME_NUMBER":1000,"MARGIN_AROUD_CELL":5,"RANGE_SIZE_FOR_MOVIE":7.0,"TIME_INTERVAL":10000.0,"CHANNEL":["GFP","CFP"],"STEP":0.3,"SAVING_PATH":"D:/Data/Marie/test5/"},"GENERAL_ACQUISITION_PARAMETERS":{"CHANNEL_GROUP":"Illumination","DEFAULT_CHANNEL_PARAMATERS":{"BF":{"COLOR":"WHITE","EXPOSURE":30,"SHUTTER":"TIDiaLamp"},"GFP":{"COLOR":"GREEN","EXPOSURE":200,"SHUTTER":"Spectra"},"CFP":{"COLOR":"CYAN","EXPOSURE":200,"SHUTTER":"Spectra"},"DAPI":{"COLOR":"BLUE","EXPOSURE":100,"SHUTTER":"Spectra"},"TxRed":{"COLOR":"RED","EXPOSURE":200,"SHUTTER":"Spectra"}}}} diff --git a/README.md b/README.md index d4362c9..c825bd0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Objects detection and robust tracking for cell biology +# Set of Fiji and Micro-manager plugin for biology analysis diff --git a/maars_config.txt b/maars_config.txt new file mode 100644 index 0000000..64353dc --- /dev/null +++ b/maars_config.txt @@ -0,0 +1 @@ +{"SEGMENTATION_PARAMETERS":{"CHANNEL":"BF","NEW_MAX_WIDTH_FOR_CHANGE_SCALE":1500,"NEW_MAX_HEIGTH_FOR_CHANGE_SCALE":1500,"FRAME_NUMBER":1,"RANGE_SIZE_FOR_MOVIE":9.0,"STEP":0.3,"MEAN_GREY_VALUE":-177660.0,"SOLIDITY":0.84,"FILTER_MEAN_GREY_VALUE":true,"FILTER_SOLIDITY":true,"MINIMUM_CELL_AREA":9.0,"CELL_SIZE":3.0,"MAXIMUM_CELL_AREA":400.0},"EXPLORATION_PARAMETERS":{"X_FIELD_NUMBER":2,"Y_FIELD_NUMBER":3},"FLUO_ANALYSIS_PARAMETERS":{"FRAME_NUMBER":1,"RANGE_SIZE_FOR_MOVIE":7.0,"STEP":0.3,"SPOT_RADIUS":0.15,"FIND_BEST_MITOSIS_IN_FIELD":true,"SAVE_FLUORESCENT_MOVIES":true,"MAXIMUM_NUMBER_OF_SPOT":2,"CHANNEL":"CFP"},"MITOSIS_MOVIE_PARAMETERS":{"END_MOVIE_CONDITIONS":{"CONDITIONS":{"RELATIVE_SPINDLE_ANGLE":false,"TIME_LIMIT":true,"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":false,"RELATIVE_MAXIMUM_SPINDLE_SIZE":true,"GROWING_SPINDLE":false},"VALUES":{"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":10,"RELATIVE_SPINDLE_ANGLE":0,"TIME_LIMIT":20.0,"GROWING_SPINDLE":0.0010,"RELATIVE_MAXIMUM_SPINDLE_SIZE":2.0}},"START_MOVIE_CONDITIONS":{"CONDITIONS":{"ABSOLUTE_MINIMUM_SPINDLE_SIZE":true,"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":true,"RELATIVE_SPINDLE_ANGLE":false},"VALUES":{"RELATIVE_SPINDLE_ANGLE":90,"ABSOLUTE_MAXIMUM_SPINDLE_SIZE":5.0,"ABSOLUTE_MINIMUM_SPINDLE_SIZE":0.5}},"FRAME_NUMBER":1000,"MARGIN_AROUD_CELL":5,"TIME_INTERVAL":10000.0,"RANGE_SIZE_FOR_MOVIE":4.0,"CHANNEL":["GFP","CFP"],"STEP":0.3,"SAVING_PATH":"D:/Data/Marie/mutant57/test1/"},"GENERAL_ACQUISITION_PARAMETERS":{"CHANNEL_GROUP":"Illumination","DEFAULT_CHANNEL_PARAMATERS":{"BF":{"COLOR":"WHITE","EXPOSURE":30,"SHUTTER":"TIDiaLamp"},"GFP":{"COLOR":"GREEN","EXPOSURE":200,"SHUTTER":"Spectra"},"CFP":{"COLOR":"CYAN","EXPOSURE":200,"SHUTTER":"Spectra"},"DAPI":{"COLOR":"BLUE","EXPOSURE":100,"SHUTTER":"Spectra"},"TxRed":{"COLOR":"RED","EXPOSURE":200,"SHUTTER":"Spectra"}}}} \ No newline at end of file diff --git a/testMaarsLib.bsh b/testMaarsLib.bsh new file mode 100644 index 0000000..f0cd814 --- /dev/null +++ b/testMaarsLib.bsh @@ -0,0 +1,139 @@ +//addClassPath("/home/marie/workspace/MaarsLib/MaarsLib.jar"); +addClassPath("C:/Program Files/Micro-Manager-1.4/jars/MaarsLib.jar"); +import MaarsLib.*; +import MaarsLib.MaarsMainDialog; +import MaarsLib.AllMaarsParameters; +import MaarsLib.ExplorationXYPositions; +import mmcorej.*; +import org.micromanager.api.*; +import ij.*; +import java.io.IOException; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +double calibration = gui.getMMCore().getPixelSizeUm(); +mmc.setAutoShutter(false); +mmc.waitForDevice(mmc.getShutterDevice()); + +gui.message("Create main window"); +MaarsMainDialog md = null; +try { + //md = new MaarsMainDialog(gui, mmc, "/home/marie/workspace/MaarsLib/"); + md = new MaarsMainDialog(gui, mmc, "D:/Data/marie/"); +} catch (IOException e) { + gui.message("Error"); +} + +gui.message("Show main window"); + +md.show(); + +while(md.isVisible()) { + gui.sleep(1000); +} +start = System.currentTimeMillis(); +gui.message("start "+start); +if(md.isOkClicked()) { + + AllMaarsParameters param = null; + autofocus = gui.getAutofocus(); + param = md.getParameters(); + mmc.setOriginXY(mmc.getXYStageDevice()); + int nbXField = param + .getParametersAsJsonObject() + .get(AllMaarsParameters.EXPLORATION_PARAMETERS) + .getAsJsonObject() + .get(AllMaarsParameters.X_FIELD_NUMBER) + .getAsInt(); + int nbYField = param + .getParametersAsJsonObject() + .get(AllMaarsParameters.EXPLORATION_PARAMETERS) + .getAsJsonObject() + .get(AllMaarsParameters.Y_FIELD_NUMBER) + .getAsInt(); + + gui.message("nb x field "+nbXField+" nb y field "+nbYField); + + + ExplorationXYPositions explo = new ExplorationXYPositions(nbXField, + nbYField, + (double) mmc.getImageWidth()*calibration, + (double) mmc.getImageHeight()*calibration); + + for (int i = 0; i < explo.length(); i++) { + gui.message("x : "+explo.getX(i)+" y : "+explo.getY(i)); + + gui.setXYStagePosition(explo.getX(i),explo.getY(i)); + + MaarsAcquisitionForSegmentation mas = new MaarsAcquisitionForSegmentation(md, + explo.getX(i), + explo.getY(i)); + + mas.setupParameters(); + + mmc.waitForDevice(mmc.getXYStageDevice()); + + autofocus.fullFocus(); + + mas.acquire(false); + + MaarsSegmentation ms = new MaarsSegmentation(param, mas.getPathToMovie()+"\\MMStack.ome.tif"); + ms.segmentation(); + while(ms.isAnalysing()) { + gui.sleep(3000); + } + + MaarsFluoAnalysis mfa = new MaarsFluoAnalysis(param, ms.getSegmentationObject()); + MaarsAcquisitionMitosis mmad = new MaarsAcquisitionMitosis(md, mfa, explo.getX(i), explo.getY(i)); + + + mfa.getSetOfCells().shuffle(); + + MaarsAcquisitionForFluoAnalysis mafa = new MaarsAcquisitionForFluoAnalysis(md, + explo.getX(i), + explo.getY(i), + mfa.getSetOfCells()); + if(param + .getParametersAsJsonObject() + .get(AllMaarsParameters.FLUO_ANALYSIS_PARAMETERS) + .getAsJsonObject() + .get(AllMaarsParameters.FIND_BEST_MITOSIS_IN_FIELD) + .getAsBoolean()) { + + String acqNameFluo = "movie_X" + +Math.round(explo.getX(i)) + +"_Y"+Math.round(explo.getY(i)) + +"FLUO"; + + ImagePlus fluoImage = mafa.acquire(false, acqNameFluo); + int cellNumber = mfa.analyzeEntireField(fluoImage, mas.getPathToMovie()); + if (cellNumber != -1) { + mmad.acquire(false, cellNumber, true, true); + } + } + else { + int j = 0; + boolean mitosis = false; + while(j < mfa.getSetOfCells().length() && !mitosis) { + ImagePlus fluoImage = mafa.acquire(false, j); + fluoImage.show(); + if (mfa.checkStartConditions(mfa.getSpindle(fluoImage, j))) { + gui.message("mitosis"); + mmad.acquire(true, j, false); //don't crop image because it is already cropped + mitosis = true; + } + j++; + } + } + // close roi manager + mfa.getSetOfCells().closeRoiManager(); + mas.setupParameters(); + } +} + +mmc.setAutoShutter(true); +mmc.waitForDevice(mmc.getShutterDevice()); +gui.message("end "+System.currentTimeMillis()); +gui.message("it took "+(System.currentTimeMillis()-start)); +gui.message("DONE"); +gui.message("DONE."); \ No newline at end of file