Key words

1 Introduction

Our current understanding on the functional organization of the nuclear genome is based on a variety of microscopy, genomics , and structure biology analyses. They revealed that the organization of chromatin shows specific features at different length scales ranging from the nucleosome (approx. 11 nm in diameter) to the entire nucleus (typically about 10 μm in diameter) within eukaryotic cells. Experimental evidences clearly suggest that the spatiotemporal organization of the genome follows probabilistic rules, in which chromosomal domains (0.1–10 Mb sized chromosome regions) can be defined as functional and structural units that show dynamic alterations during cell cycle and cell differentiation [110]. While various genomics approaches make possible the linear partitioning of the genome into chromosomal domains [11], microscopy-based analyses facilitate the three-dimensional segmentation of the nucleus in fixed or living cells. According to such investigations the chromatin can be divided basically into transcriptionally active euchromatin and transcriptionally inactive heterochromatin [12, 13], and the further resolution of these chromatin structures is getting better with the use of various subdiffraction resolution microscopy techniques [14].

In order to study the spatial arrangement of chromatin and its dynamics around morphological subcompartments of the nucleus in single cells, landmark proteins of the nuclear lamina, the nucleolus or centromeres can be labeled by immunofluorescence (e.g., by staining lamin B, nucleophosmin/B23 , or CENP-A). Simultaneous staining of eu- and heterochromatin landmarks, such as tri-methylation of lysine 4 or 9 of histone H3 , and subsequent quantitative analysis of microscopy images allow the monitoring of spatial distribution of active and inactive chromatin between the individual subcompartments. Such investigations can excellently complement the observations of respective genomics or proteomics studies [1524]. Here we describe an image analysis pipeline to monitor heterochromatin at the perinucleolar space and simultaneously at the nuclear rim in DAPI/B23/H3K9me3 -stained nuclei. The method can also be applied to the investigation of the nuclear distribution of other histone posttranslational modifications or architectural chromatin proteins such as CTCF or cohesin . In fact, the chromatin features of any fluorescently labeled subnuclear compartment can be analyzed using the presented methodological approach.

The protocol is divided into three parts: the first part describes a way to measure relative proportion of total nuclear fluorescence intensities within the nucleolus-associated chromatin and at the nuclear rim, the second part deals with the evaluation of the heterogeneity of the staining, and finally the third party describes the analysis of the distribution of the 10 % brightest nuclear pixels in the two ROIs. In summary, this protocol provides a detailed step-by-step description as how to quantitatively analyze different areas of the nucleus using confocal laser scanning microscope (CLSM) images of immunofluorescence stained nuclei in a semiautomated manner. The commands of a script, which was written for ImageJ , are integrated in this description and the script is included in Subheading 4.

2 Materials

  1. 1.

    8-bit CLSM images of immunofluorescence stained nuclei (e.g., DAPI/B23 /H3K9me3 ). Middle optical sections (for instance, 200 nm in thickness) of z-stacks should be selected from CLSM images based on the quality of nuclear morphology (see Notes 1 and 2 ). The xy pixel size should be around 80 × 80 nm or smaller. We use 80.25 × 80.25 nm.

  2. 2.

    ImageJ software (version 1.49s was used) including the Action Bar and Bio-Formats plug-ins (download them from imagej.nih.gov if needed).

  3. 3.

    Excel from Microsoft Office or equivalent software.

  4. 4.

    Computer workstation with Windows, Mac, or Linux OS (Mac OS 10.10.5 was used).

3 Methods

3.1 Determination of Relative Immunofluorescence Intensities in the ROIs

  1. 1.

    Open the selected optical section of the CLSM image file as separate channels.

  2. 2.

    Duplicate the channel with the DAPI signal and name it ‘DAPI_mask’ (see Note 3 ) [Shift + D].

  3. 3.

    Use the customized Action Bar (quant_IF) from this step on. The script should be copied into the Plugins/ActionBar folder of ImageJ (see Note 4 ).

  4. 4.

    Get binary mask: [Process > Binary > Make Binary]. Fill up holes that appear due to unequal staining [Process > Binary > Fill holes]. Remove bumps and dints [Process > Filters > Gaussian Blur 3D… (x = 2, y = 2, z = 2)]. Threshold the image with a value of 128 [Shift + cmd + T, Apply]. Delete unwanted background and partial nuclei manually (see Ronneberger et al., 2008, for suggestions if you wish to customize the settings).

  5. 5.

    Duplicate the channel containing the staining to be quantified and name it ‘histone_channel’ (see Note 5 ) [Shift + D].

  6. 6.

    To get the binary mask for nucleoli select the channel with the nucleolus staining (in our case B23 ), choose an appropriate mid-section and duplicate it [Shift + D]. Name the resulting image ‘No_mask’ (see Note 6 ). Perform Gaussian filtering [Process > Filters > Gaussian Blur 3D… (x = 2, y = 2, z = 2)]. Set the threshold manually to separate the nucleoli from the background and to get the outlines of the nucleoli [Shift + cmd + T, Apply]. Remove Bumps and dints [Process > Filters > Gaussian Blur 3D… (x = 2, y = 2, z = 2)]. Threshold the image with a value of 128 [Shift + cmd + T, Apply]. Delete manually unwanted background and nucleoli from all but the selected cell.

  7. 7.

    Make all measurements: In the following steps, several additional masks for the perinucleolar space and the nuclear border are created, which are applied to the previously generated mid-section images and finally fluorescence intensities are measured.

Measure first the total nuclear fluorescence intensity to get a reference for relative quantification. Apply ‘DAPI_mask’ to the histone_channel [Process > Image Calculator > AND]. Measure the total fluorescence intensity [cmd + M] (see Note 5 ).

To create a 240 nm mask for the nuclear periphery select and duplicate ‘DAPI_mask’ and name it ‘DAPI_mask_240.’ Erode 3 pixels (=240.75 nm) [Process > Binary > Options…; Iterations = 3; EDM output: Overwrite; Do: erode] and subtract the smaller mask from the larger one [Process > Image Calculator > Subtract] (see Note 6 ). Apply this mask (Result of DAPI_mask) to the histone_channel [Process > Image Calculator > AND] (Fig. 1). Measure the total fluorescence intensity of this area [cmd + M].

Fig. 1
figure 1

Definition of the perinucleolar space and the nuclear periphery to measure fluorescence intensity values. Initial masks after thresholding (left), final masks with a width of 240 nm/3 px (center) and the result of masks applied to the histone channel (top) are shown (right)

To mask a 240 nm rim around nucleoli duplicate the ‘No_mask,’ rename it as ‘No_mask_240’ and dilate by 3 pixels [Process > Binary > Options…; Iterations = 3; EDM output: Overwrite; Do: dilate]. Subtract the smaller mask from the larger one [Process > Image Calculator > Subtract]. Apply this mask (Result of No_mask_240) to the histone_channel [Process > Image Calculator > AND] (Fig. 1). Measure the total fluorescence intensity of this area [cmd + M]. Transfer all values to Excel to calculate relative fluorescence intensities (see Note 7 ).

3.2 Determination of the Heterogeneity of Staining in the ROIs

The heterogeneity (pixel-to-pixel variation) of given staining intensities in the ROIs is calculated by dividing standard deviation of fluorescence intensity values with the mean fluorescent intensity value. The resulting value is called coefficient of variation (CV) (see also [25]).

  1. 1.

    Use the DAPI_mask, DAPI_mask_240, No_mask, No_mask_240, histone_channel images that were created in Subheading 3.1.

  2. 2.

    Calculate the heterogeneity of the staining in the entire nucleus (Nu CV). Inspect the histogram of the nucleus to evaluate the total staining of the nucleus in respect to over-, underexposure, width of the histogram, and normal distribution. Select DAPI_mask and add nuclear outlines to the ROI Manager [Analyze > Analyze particles…]. Select subsequently the created ROI and the histone_channel in the ROI Manager, so that the outline of the nucleus appears in the histone_channel window. Select the histone_channel. Measure [cmd + M] and transfer the values for standard deviation and mean to an Excel sheet (see Note 8 ). Generate a histogram [Analyze > Histogram…].

  3. 3.

    Calculate the heterogeneity of the staining at the nuclear periphery (rim CV). To get the CV from the border of the nucleus select DAPI_mask_240 and add the smaller nuclear mask to the ROI Manager [Analyze > Analyze particles…], which already contains the DAPI_mask. Then select the histone_channel, select the two ROIs (DAPI_mask and DAPI_mask_240) and run the command [More > XOR] from the ROI Manager menu. This will specify the nuclear border, i.e., the area that is included in the bigger ROI but not in the smaller one. Measure [cmd + M] and transfer standard deviation and mean values to an Excel sheet (see Note 8 ). Delete nuclear border ROI from the ROI Manager.

  4. 4.

    Calculate the heterogeneity of the staining in the perinucleolar space (no CV). To get the CV from the perinucleolar space, add the two nucleolar masks (No_mask, No_mask_240) to the ROI Manager [Analyze > Analyze particles…].

Since the number of nucleoli varies, select the ROIs manually and add them to the histone_channel image using the [More > XOR] command from the ROI Manager menu. Measure [cmd + M] and transfer standard deviation and mean values to an Excel sheet (see Note 8 ). Delete perinucleolar space ROIs from the ROI Manager.

3.3 Determination of the Subnuclear Distribution of the 10 % Brightest Pixels

To get an overview about the distribution of heterochromatin in the nucleus , the distribution of the brightest pixels of the H3K9me3 immunofluorescence staining is evaluated. The analysis of the brightest pixels delivers information about the spatial arrangement of the densest heterochromatic regions of chromosomes in the nucleus.

  1. 1.

    crop nucleus : To get an image with only the 10 % brightest pixels of the nucleus apply first the DAPI_mask to the histone_channel [Process > Image Calculator > AND]. ().

  2. 2.

    Threshold the image manually to 10 % [Shift + cmd + T, Apply] (see Note 9 ).

  3. 3.

    add rim: Add DAPI_mask and DAPI_mask_240 to the ROI Manager [Analyze > Analyze particles…]. Select the top 10 % pixel image (histone_channel). Select the ROIs manually in the ROI Manager and add them to the histone_channel using the command [More > XOR] (Fig. 2). Measure the number of pixels [cmd + M] and transfer the values to an Excel sheet. Delete the nuclear border ROI from the ROI Manager.

    Fig. 2
    figure 2

    Distribution of the 10 % brightest pixels. The brightest pixels (top 10 %) of H3K9me3 staining are shown on the left, and the ROIs are outlined in the middle (nuclear periphery) and on the right side (perinucleolar space)

  4. 4.

    add no: For counting the pixels in the perinucleolar space add No_mask and No_mask_240 to the ROI Manager [Analyze > Analyze particles…]. Due to the variable numbers of nucleoli, select the ROIs manually and add them to the histone_channel image using the [More > XOR] command from the ROI Manager menu (Fig. 2). Measure the number of pixels [cmd + M] and transfer the values to an Excel sheet. Delete the nucleolar border ROI from the ROI Manager.

  5. 5.

    close all windows: Close all windows and the canvas is clean for the analysis of the next nucleus .

4 Notes

  1. 1.

    In the described example, IMR90 human embryonic fibroblast cells were stained for the heterochromatin mark H3K9me3 and the nucleolar marker nucleophosmin/B23 using a standard immunofluorescence staining protocol and DNA was counterstained with DAPI in the examples shown. The H3K9me3 antibody was kindly provided by H. Kimura [26], the nucleophosmin/B23 antibody was obtained from Santa Cruz Biotechnology.

  2. 2.

    Image acquisition was performed with a Leica TCS SP8 confocal microscope principally following the rules proposed by Ronneberger et al. [27].

  3. 3.

    The exact spelling of the names is important. Buttons that can be used from the script are marked as bold text, commands that can be found in the regular menu of ImageJ are marked as italic text. Keyboard shortcuts are referred to a Mac-keyboard.

  4. 4.

    This Note contains the script, which should be saved as quant_IF.txt file into the ImageJ/plugins/ActionBar folder.

    // Action Bar description file :quant_IF run("Action Bar”,”/plugins/ActionBar/quant_IF.txt”); exit(); <line> <button> label=Get binary mask arg=<macro> selectWindow("DAPI_mask"); setOption("BlackBackground", false); run("Make Binary"); run("Fill Holes"); run("Gaussian Blur 3D…", "x=2 y=2 z=2"); //run("Threshold…"); //setThreshold(128, 255); setOption("BlackBackground", false); run("Convert to Mask"); </macro> <button> label=gaussian filtering arg=<macro> run("Gaussian Blur 3D…", "x=2 y=2 z=2"); run("Gaussian Blur 3D…", "x=2 y=2 z=2"); </macro> <button> label=bumps&dints arg=<macro> run("Gaussian Blur 3D…", "x=2 y=2 z=2"); //run("Threshold…"); run("Convert to Mask"); run("Fill Holes"); </macro> </line> <line> <button> label=make all measurements arg=<macro> selectWindow("histone_channel"); run("8-bit"); imageCalculator("AND create", "histone_channel", "DAPI_mask"); selectWindow("Result of histone_channel"); run("Measure"); selectWindow("Result of histone_channel"); close(); selectWindow("DAPI_mask"); run("Duplicate…", "title=DAPI_mask_240"); run("Options…", "iterations=3 count=1 pad edm=Overwrite do=Erode"); imageCalculator("Subtract create", "DAPI_mask","DAPI_mask_240"); imageCalculator("AND create", "histone_channel","Result of DAPI_mask"); run("Measure"); selectWindow("Result of histone_channel"); close(); selectWindow("Result of DAPI_mask"); close(); selectWindow("No_mask"); run("Duplicate…", "title=No_mask_240"); run("Options…", "iterations=3 count=1 pad edm=Overwrite do=Dilate"); imageCalculator("Subtract create", "No_mask_240","No_mask"); selectWindow("Result of No_mask_240"); imageCalculator("AND create", "histone_channel","Result of No_mask_240"); selectWindow("Result of histone_channel"); run("Measure"); selectWindow("Result of No_mask_240"); close(); selectWindow("Result of histone_channel"); close(); </macro> </line> <line> <button> label=Nu CV arg=<macro> selectWindow("DAPI_mask"); setOption("BlackBackground", false); run("Make Binary"); run("Fill Holes"); run("Gaussian Blur 3D…", "x=2 y=2 z=2"); //run("Threshold…"); //setThreshold(128, 255); setOption("BlackBackground", false); run("Convert to Mask"); run("Analyze Particles…", "display exclude summarize add"); selectWindow("histone_channel"); roiManager("Select", 0); run("Measure"); run("Histogram"); </macro> <button> label=rim CV arg=<macro> selectWindow("DAPI_mask_240"); run("Analyze Particles…", "display exclude summarize add"); selectWindow("histone_channel"); roiManager("Select", 0); roiManager("Select", newArray(0,1)); roiManager("XOR"); run("Measure"); </macro> <button> label=no CV arg=<macro> selectWindow("No_mask"); run("Analyze Particles…", "display exclude summarize add"); selectWindow("No_mask_240"); run("Analyze Particles…", "display exclude summarize add"); </macro> </line> <line> <button> label=crop nucleus arg=<macro> imageCalculator("AND create", "histone_channel", "DAPI_mask"); selectWindow("Result of histone_channel"); selectWindow("histone_channel"); close(); selectWindow("DAPI_mask"); run("Analyze Particles…", "display exclude summarize add"); roiManager("Select", 0); selectWindow("Result of histone_channel"); roiManager("Select", 0); </macro> <button> label=add rim arg=<macro> selectWindow("DAPI_mask_240"); run("Analyze Particles…", "display exclude summarize add"); selectWindow("Result of histone_channel"); roiManager("Select", 0); roiManager("Select", newArray(0,1)); roiManager("XOR"); selectWindow("Result of histone_channel"); run("Measure"); </macro> <button> label=add no arg=<macro> selectWindow("No_mask"); run("Analyze Particles…", "display exclude summarize add"); selectWindow("No_mask_240"); run("Analyze Particles…", "display exclude summarize add"); </macro> <line> <button> label=close all windows arg=<macro> selectWindow("No_mask"); close(); selectWindow("No_mask_240"); close(); selectWindow("DAPI_mask"); close(); selectWindow("DAPI_mask_240"); close(); selectWindow("Result of histone_channel"); close(); selectWindow("DAPI_channel"); close(); </macro> </line>

  5. 5.

    Parameters that are measured via [cmd + M] can be defined in the menu: Analyze > Set Measurements… Here ‘RawIntDen’ (Raw Integrated density) is used to determine the total fluorescence intensity. This command sums up all brightness values of the pixels in the selected area.

  6. 6.

    Larger areas can be created by using different parameters. Areas can be increased by intervals depending on the pixel size, which was 80.25 nm in our case.

  7. 7.

    Values were copied into an Excel sheet for raw data storage and further calculations. Graphs can be created in R using the R-package beeswarm.

  8. 8.

    Standard deviation and mean values were transferred into an Excel file and CV was calculated there.

  9. 9.

    The histogram has 255 bins where pixels are assigned. Due to this fact one cannot threshold the image exactly at 10 %. Therefore, the value just above 10 % was chosen.