/*** * * MRI Intensity per nucleus tool * * Segment the nuclei in the Hoechst or Dapi channel and measure the intensities * for each nucleus in the remaining channels. * * (c) 2019, INSERM * * written by Volker Baecker at Montpellier Ressources Imagerie (www.mri.cnrs.fr) * **/ var helpURL = "https://github.com/MontpellierRessourcesImagerie/imagej_macros_and_scripts/wiki/Intensity-Per-Nucleus-Tool"; var _NUCLEI_CHANNELS = newArray("hoechst", "dapi"); var _NUCLEI_CHANNEL_NR = 0; var _SCALE_FACTOR = 5.0; var _MIN_SIZE = 50; var _THRESHOLDING_METHOD = "Huang"; var _THRESHOLDING_METHODS = getList("threshold.methods"); var _FILE_EXT = "nd"; var _TABLES = newArray(0); measureIntensityPerNucleus(); exit(); macro "intensity per nucleus tool help [f4]" { run('URL...', 'url='+helpURL); } macro "intensity per nucleus tool help (f4) Action Tool - C200D06D07D17D18DafDbfDcfDdfC10bD25D26D27D28D34D36D37D38D39D43D44D45D47D48D49D4aD52D53D54D55D56D57D58D5aD5bD62D65D68D69D6bD72D73D75D78D79D7aD7bD82D83D84D85D86D87D88D89D8aD8bD92D93D94D95D96D97D98D99D9aD9bDa3Da4Da7DaaDb4Db5Db7Db8Db9Dc5Dc6Dc7Dc8C760D13D1bD2cDacDcbDebDf2DfbCa83D0dD1dD23D2dD4eD5fDbaC530D0aD15D1aD2bD3aD3bD5cD6dD7dD7eD7fD8dD9dDcdDddDfcCa90D00D0cD11D22Dd0Dd1Dd2Dd9De2De3De4De7De8Df6Df7Ce8cD2fD35D46D59D66D67D6aD76D77Da5Da6Da8Da9Db6C330D03D08D09D19D29D2aD8eD8fD9eD9fDadDbdDedDeeDfdDfeC970D0bD12D1cD3dD9cDabDbbDcaDdaDe1De9DeaDf5Df8Df9DfaCed4D0eD30D31D32D40D41D60D70D91Db2Dc3Dd5Dd6Dd7Dd8C640D02D14D3cD4bD4cD5dD6cD6eD7cD8cDbcDccDdcDecDf0Df1Ccc0D10D20D21D80D90Da0Da1Db0Db1Dc0Dc1Dc2Dd3Dd4De5De6CecbD0fD1fD33D42D50D51D61D63D64D71D74D81Da2Db3Dc4C310D04D05D16DaeDbeDceDdeDefDffC770D01D4dD5eD6fDdbDe0Df3Df4Cb86D1eD24D2eD3eD3fD4fDc9"{ run('URL...', 'url='+helpURL); } macro "measure intensity per nucleus [f5]" { measureIntensityPerNucleus(); } macro "measure intensity per nucleus (f5) Action Tool - C000T4b12m" { measureIntensityPerNucleus(); } macro "batch measure intensity (f6) Action Tool - C000T4b12b" { batchMeasureIntensity(_FILE_EXT); } macro "batch measure intensity [f6]" { batchMeasureIntensity(_FILE_EXT); } macro "measure intensity per nucleus (f5) Action Tool Options" { Dialog.create("measure intensity options"); nucleiChannels = arrayToString(_NUCLEI_CHANNELS); Dialog.addString("nuclei channels: ", nucleiChannels); Dialog.addToSameRow(); Dialog.addNumber("or nr. of nuclei channel (if 0, name will be used): ", _NUCLEI_CHANNEL_NR); Dialog.addNumber("scale factor: ", _SCALE_FACTOR); Dialog.addNumber("min. size: ", _MIN_SIZE); Dialog.addChoice("thresholding method: ", _THRESHOLDING_METHODS, _THRESHOLDING_METHOD); Dialog.show(); nucleiChannels = Dialog.getString(); _NUCLEI_CHANNELS = stringToArray(nucleiChannels); _NUCLEI_CHANNEL_NR = Dialog.getNumber(); _SCALE_FACTOR = Dialog.getNumber(); _MIN_SIZE = Dialog.getNumber(); _THRESHOLDING_METHOD = Dialog.getChoice(); } macro "batch measure intensity (f6) Action Tool Options" { Dialog.create("batch processing options"); Dialog.addString("file ext.: ", _FILE_EXT); Dialog.show(); _FILE_EXT = Dialog.getString(); } function arrayToString(anArray) { aString = ""; for (i = 0; i < anArray.length; i++) { aString = aString + anArray[i]; if (i0 && _NUCLEI_CHANNEL_NR<=channels) { indexOfNucleiChannel = _NUCLEI_CHANNEL_NR; channelNames = Array.getSequence(channels);² } else { channelNames = getChannelNames(); indexOfNucleiChannel = getIndexOfNucleiChannel(channelNames); } if (_NUCLEI_CHANNEL_NR>0 && _NUCLEI_CHANNEL_NR<=channels) { indicesOfChannelsToBeMeasured = newArray(0); for (i = 1; i <= channels; i++) { if (i!=_NUCLEI_CHANNEL_NR) indicesOfChannelsToBeMeasured = Array.concat(indicesOfChannelsToBeMeasured, i); } } else { indicesOfChannelsToBeMeasured = getIndicesOfChannelsToBeMeasured(indexOfNucleiChannel, channelNames.length); } Stack.setChannel(indexOfNucleiChannel); run("Duplicate...", " "); selectNuclei(); close(); roiManager("Show All"); for (i = 0; i < indicesOfChannelsToBeMeasured.length; i++) { run("Clear Results"); Stack.setChannel(indicesOfChannelsToBeMeasured[i]); roiManager("Measure"); selectWindow("Results"); headings = split(Table.headings("Results"), "\t"); for(c=1; c