An automated quantitative analysis of cell, nucleus and focal adhesion morphology
Author
ABC Buskermolen
Title
An automated quantitative analysis of cell, nucleus and focal adhesion morphology
Description
This notebook reports a new, automated image analysis algorithm capable of robustly extracting the morphometric features of cells, nuclei, and focal adhesions from immunofluorescence images.
Category
Working Material
Keywords
Focal adhesion, morphology, nucleus, cells, segmentation
URL
http://www.notebookarchive.org/2019-04-dbmxfa0/
DOI
https://notebookarchive.org/2019-04-dbmxfa0
Date Added
2019-04-29
Date Last Modified
2019-04-29
File Size
162.96 kilobytes
Supplements
Rights
Redistribution rights reserved



ClearAll["Global`*"]$HistoryLength=1;ClearSystemCache[];
Declarevariables:
In factor you can change the # um/pixel, which depends on the type of microscope and objective
GraphicsGrid[{{Button["10xaxio",factor=1.059],Button["20xaxio",factor=0.53],Button["40xaxio",factor=0.266],Button["100xaxio",factor=0.105]}}]
Import images one map:
Import images one map:
In dir you can put the folder of interest, in this particular example we extract the data from all the merged images (=imagestotal),
images of the pattern (=imagesfibronectin), actin cytoskeleton (=imagesactin), nucleus =(imagesnucleus),
and focal adhesions (=imagesfocaladhesions).
images of the pattern (=imagesfibronectin), actin cytoskeleton (=imagesactin), nucleus =(imagesnucleus),
and focal adhesions (=imagesfocaladhesions).
dir="D:\\Promoveren\\Fotos\\Stamps and prints\\Parallel lines\\Parallel lines week 4546 2017 inhibitor\\LC3";files=FileNames["*.tif",dir];numberoffiles=Length[files];alldata=Table[Import[files[[j]]],{j,1,numberoffiles}];numberofpositions=Length[files]/5;imagesfibronectin=Table[alldata[[2+((i-1)*5)]],{i,1,numberofpositions}]imagesactin=Table[alldata[[3+((i-1)*5)]],{i,1,numberofpositions}]imagesnucleus=Table[alldata[[4+((i-1)*5)]],{i,1,numberofpositions}]imagesfocal=Table[alldata[[5+((i-1)*5)]],{i,1,numberofpositions}];imagestotal=Table[alldata[[1+((i-1)*5)]],{i,1,numberofpositions}];
Remove background and adjust image:
Remove background and adjust image:
transformactin=ImageAdjust[#]&/@imagesactin;transformnucleus=ImageAdjust[#]&/@imagesnucleus;transformfibronectin=ImageAdjust[#]&/@imagesfibronectin;removebackgroundactin=TopHatTransform[#,150]&/@transformactin;removebackgroundnucleus=TopHatTransform[#,100]&/@transformnucleus;tophattransformfocal=TopHatTransform[#,DiskMatrix[40]]&/@imagesfocal;Medianfilterred7=MedianFilter[#,7]&/@tophattransformfocalremovebackground7=Image[ImageData[#[[1]]]-ImageData[#[[2]]]]&/@Transpose[{tophhattransformfocal,Medianfilterred7}]fibronectinadjusted=imagesfibronectin;actinadjusted=removebackgroundactin;nucleusadjusted=removebackgroundnucleus;focaladjusted=removebackground7;
Binarizeimages:
binfibronectin=Binarize[FillingTransform[#]]&/@fibronectinadjusted;binblue=Binarize[Erosion[FillingTransform[Dilation[#,1]],1]]&/@nucleusadjustedbinactin=DeleteSmallComponents[MorphologicalBinarize[Erosion[FillingTransform[Dilation[#,1]],1]],Method->"Mean"]&/@actinadjustedquantifyfocal7=Binarize[#]&/@removebackground7;imageadhesions7=MorphologicalComponents[#]&/@quantifyfocal7//Colorizecomposefocal=ImageCompose[#[[1]],RemoveBackground[#[[2]]]]&/@Transpose[{focal,imageadhesions7}]
Cropimages:
Crop[img_,{{dxl_,dxr_},{dyl_,dyu_}}]:=ImageTake[img,{dyl,-dyu},{dxl,-dxr}]fibronectincrop=Crop[#,{{5,5},{5,5}}]&/@binfibronectinactincrop=Crop[#,{{5,5},{5,5}}]&/@binactincellcrop=Crop[#,{{5,5},{5,5}}]&/@actinadjustednucleuscrop=Crop[#,{{5,5},{5,5}}]&/@binbluefocalcrop=Crop[#,{{5,5},{5,5}}]&/@quantifyfocal7;
Multiple cells:
Multiple cells:
This part is used for the analysis of multiple cells per image. To only analyze individual cells, which are not touching the image border,
we first need to segment all the cells in individual cells (based on watershed segmentation). For this we use the command markergreenselect,
where you can adjust the number to find the correct markers for segmentation.
we first need to segment all the cells in individual cells (based on watershed segmentation). For this we use the command markergreenselect,
where you can adjust the number to find the correct markers for segmentation.
marker=0.15;areacell=1500disTgreenselect=ImageAdjust[DistanceTransform[#]]&/@actincropmarkergreenselect=MaxDetect[#,marker]&/@disTgreenselectwatershedComponentsgreenselect=WatershedComponents[ColorNegate[#[[1]]],#[[2]]]*ImageData[#[[3]]]&/@Transpose[{disTgreenselect,markergreenselect,actincrop}];imageselect=Colorize[#]&/@watershedComponentsgreenselect
selectallactin=imageselect;selectactinnocolour=Binarize[#]&/@selectallactin;selectactinold=SelectComponents[#,"AdjacentBorderCount",#0&]&/@selectactinnocolour;selectactin=SelectComponents[#,"Area",areacell/(factor^2)<#&]&/@selectactinoldselectcell=ImageMultiply[#[[1]],#[[2]]]&/@Transpose[{cellcrop,selectactin}]selectfibronectin=ImageMultiply[#[[1]],#[[2]]]&/@Transpose[{fibronectincrop,selectactin}];selectnucleus=FillingTransform[ImageMultiply[#[[1]],#[[2]]]]&/@Transpose[{nucleuscrop,selectactin}]
Dataanalysismultiplecells:
Nucleus:
This part is used to quantify the different properties from the nucleus, such as the elongation, orientation, area, etc. To only select individual nuclei and
not some small background dots or multiple nuclei, you can use the command markerblue. Increase the number when you not want to include small background dots, decrease the number when multiple nuclei are detected as one.
not some small background dots or multiple nuclei, you can use the command markerblue. Increase the number when you not want to include small background dots, decrease the number when multiple nuclei are detected as one.
selectimagenucleus=SelectComponents[#,"Area",#>200&]&/@selectnucleusdisTblue=DistanceTransform[#]&/@selectimagenucleus;markerblue=MaxDetect[#,5]&/@disTblue;watershedComponentsblue=WatershedComponents[ColorNegate[#[[1]]],#[[2]]]*ImageData[#[[3]]]&/@Transpose[{disTblue,markerblue,selectimagenucleus}];imagenucleus=Colorize[#]&/@watershedComponentsbluecomponentsblue=ComponentMeasurements[{#[[1]],#[[2]]},{"Centroid","SemiAxes","Orientation","Max"}]&/@Transpose[{watershedComponentsblue,disTblue}]componentsbluelongaxis=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Length"}]&/@Transpose[{watershedComponentsblue,disTblue}]/.Rule[a_,b_]b*factor]componentsblueshortaxis=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Width"}]&/@Transpose[{watershedComponentsblue,disTblue}]/.Rule[a_,b_]b*factor];componentsblueelongation=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Elongation"}]&/@Transpose[{watershedComponentsblue,disTblue}]/.Rule[a_,b_]b];componentsbluearea=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Area"}]&/@Transpose[{watershedComponentsblue,disTblue}]/.Rule[a_,b_]b*(factor^2)]componentsblueperimeter=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"PolygonalLength"}]&/@Transpose[{watershedComponentsblue,disTblue}]/.Rule[a_,b_]b*factor]componentsblueangle=(180/Pi)*Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Orientation"}]&/@Transpose[{watershedComponentsblue,disTblue}]/.Rule[a_,b_]b];componentsblueangle2=If[#<0,180-Abs[#],#]&/@componentsblueanglefitellipsenucleus=Show[#[[1]],Graphics[{Red,#[[2]][[All,2]]/.{{centroid_,semiAxes_,orientation_,maxR_}Rotate[Disk[centroid,{semiAxes[[1]],semiAxes[[2]]}],orientation,centroid]}}]]&/@Transpose[{selectnucleus,componentsblue}]outlinenucleus=EdgeDetect[#]&/@selectnucleus
Cells:
This parts is used to quantify different properties from all the detected cells, such as the elongation, orientation, area. To only select individual cells, you can use the command markergreen.
disTgreen=ImageAdjust[DistanceTransform[#]]&/@selectactinmarkergreen=MaxDetect[#,0.3]&/@disTgreenwatershedComponentsgreen=WatershedComponents[ColorNegate[#[[1]]],#[[2]]]*ImageData[#[[3]]]&/@Transpose[{disTgreen,markergreen,selectactin}];image=Colorize[#]&/@watershedComponentsgreencomponentsgreen=ComponentMeasurements[{#[[1]],#[[2]]},{"Centroid","SemiAxes","Orientation","Max"}]&/@Transpose[{watershedComponentsgreen,disTgreen}];componentsgreenlongaxis=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Length"}]&/@Transpose[{watershedComponentsgreen,disTgreen}]/.Rule[a_,b_]b*factor]componentsgreenshortaxis=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Width"}]&/@Transpose[{watershedComponentsgreen,disTgreen}]/.Rule[a_,b_]b*factor];componentsgreenelongation=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Elongation"}]&/@Transpose[{watershedComponentsgreen,disTgreen}]/.Rule[a_,b_]b];componentsgreenarea=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Area"}]&/@Transpose[{watershedComponentsgreen,disTgreen}]/.Rule[a_,b_]b*(factor^2)]componentsgreenperimeter=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"PolygonalLength"}]&/@Transpose[{watershedComponentsgreen,disTgreen}]/.Rule[a_,b_]b*factor];componentsgreenangle=(180/Pi)*Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Orientation"}]&/@Transpose[{watershedComponentsgreen,disTgreen}]/.Rule[a_,b_]b];componentsgreenangle2=If[#<0,180-Abs[#],#]&/@componentsgreenangleLengthcell=Flatten[ComponentMeasurements[#,"CaliperLength"]&/@watershedComponentsgreen/.Rule[a_,b_]b*factor];fitellipseactin=Show[#[[1]],Graphics[{Red,#[[2]][[All,2]]/.{{centroid_,semiAxes_,orientation_,maxR_}Rotate[Disk[centroid,{semiAxes[[1]],semiAxes[[2]]}],orientation,centroid]}}]]&/@Transpose[{selectactin,componentsgreen}]outlinecell=EdgeDetect[#]&/@selectactin
Fibronectin:watershedComponentsred=WatershedComponents[ColorNegate[#[[1]]],#[[2]]]*ImageData[#[[3]]]&/@Transpose[{disTgreen,markergreen,selectfibronectin}];imagefibronectin=Colorize[#]&/@watershedComponentsredareafibronectin=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Area"}]&/@Transpose[{watershedComponentsred,disTgreen}]/.Rule[a_,b_]b*(factor^2)]
Focaladhesions:
sizefocal=0.1;selectfocalareanew=SelectComponents[focalrotate,"Area",sizefocal/(factor^2)<#&];shortaxisfocal=Flatten[ComponentMeasurements[selectfocalareanew,"Width"]]/.Rule[a_,b_]b*factor;longaxisfocal=Flatten[ComponentMeasurements[selectfocalareanew,"Length"]]/.Rule[a_,b_]b*factor;centroidfocal=Flatten[ComponentMeasurements[selectfocalareanew,"Centroid"]]/.Rule[a_,b_]b;elongationfocal=Flatten[ComponentMeasurements[selectfocalareanew,"Elongation"]]/.Rule[a_,b_]b;lengthfocal=Flatten[ComponentMeasurements[selectfocalareanew,"CaliperLength"]]/.Rule[a_,b_]b*factor;perimeterfocal=Flatten[ComponentMeasurements[selectfocalareanew,"PolygonalLength"]]/.Rule[a_,b_]b*factor;Areafocalafter=Flatten[ComponentMeasurements[selectfocalareanew,"Area"]]/.Rule[a_,b_]b*(factor^2);Orientationfocal=(180/Pi)*Flatten[ComponentMeasurements[selectfocalareanew,"Orientation"]]/.Rule[a_,b_]b;Orientationfocal2=If[#<0,180-Abs[#],#]&/@Orientationfocal;
fitellipsefocal=ComponentMeasurements[selectfocalareanew,{"Centroid","SemiAxes","Orientation","Max"}];Show[selectfocalareanew,Graphics[{Red,fitellipsefocal[[All,2]]/.{{centroid_,semiAxes_,orientation_,maxR_}Rotate[Disk[centroid,{semiAxes[[1]],semiAxes[[2]]}],orientation,centroid]}}]]
Single cell:
To analyze the focal adhesions of one single cell, you can select the cell of interest by tracing the cell with a red mask.
In imagenumber you can select the image of interest.
In imagenumber you can select the image of interest.
imagenumber=1;actin=imagesactin[[imagenumber]];nucleus=imagesnucleus[[imagenumber]];focal=imagesfocal[[imagenumber]];fibronectincropsingle=fibronectincrop[[imagenumber]];actincropcropsingle=actincrop[[imagenumber]];nucleuscropsingle=nucleuscrop[[imagenumber]];focalcropsingle=focalcrop[[imagenumber]];
exppic=ColorCombine[{focal,actin,nucleus}];i=exppic;j=fibronectincropsingle;k=focal;l=actin;m=nucleus;n=nucleuscropsingle;o=focalcropsingle;p=actincropcropsingle;Manipulate[parameterscrop=u;Row[{Show[i,Graphics[{Red,Opacity[0.6],Dynamic[Polygon[u]]},PlotRange2,BackgroundWhite]],Panel[result]}],{{u,{{100,100},{150,150},{250,250},{300,300},{350,350},{400,400},{450,450}}},Locator,LocatorAutoCreateTrue},Button["Croptotal",result=crop[i,u]],Button["binfibronectincrop",binfibronectincrop=crop[j,u]],Button["Cropfocal",focalcrop=crop[k,u]],Button["Cropactin",actincrop=crop[l,u]],Button["Cropdapi",dapicrop=crop[n,u]],Button["binbluecrop",binbluecrop=crop[n,u]],Button["quantifyfocalcrop",quantifyfocalcrop=crop[o,u]],Button["binactincrop",binactincrop=crop[p,u]],Initialization(crop[i_,poly_]:=Module[{mask},mask=ColorNegate[Binarize[Rasterize[Graphics[Polygon[poly],PlotRangePadding0,PlotRangeTranspose[{{0,0},ImageDimensions[i]}],ImageSizeImageDimensions[i]]]]];merge=ImageMultiply[i,mask]])]
crop1=parameterscrop[[1]];crop2=parameterscrop[[2]];crop3=parameterscrop[[3]];crop4=parameterscrop[[4]];crop5=parameterscrop[[5]];crop6=parameterscrop[[6]];poly=ColorNegate[Binarize[Rasterize[Graphics[Polygon[{crop1,crop2,crop3,crop4,crop5,crop6}],PlotRangePadding0,PlotRangeTranspose[{{0,0},ImageDimensions[i]}],ImageSizeImageDimensions[i]]]]];
croptotal=result;fibrectincropsingle=fibronectincropsingle;actincropcropsingle=actincropcropsingle;nucleuscropsingle=nucleuscropsingle;focalcropsingle=focalcropsingle;
Dataanalysissinglecells:
Nucleus:
This part is used to quantify the different properties from the nucleus of one single cells, such as the elongation, orientation, area, etc. To only select nuclei and not some small background dots, you can use the command markerblue. Just increase the number to not include small background dots.
selectimagenucleussingle=SelectComponents[nucleuscropsingle,"Area",#>500&];disTbluesingle=ImageAdjust[DistanceTransform[selectimagenucleussingle]];markerbluesingle=MaxDetect[disTbluesingle,0.3];watershedComponentsbluesingle=WatershedComponents[ColorNegate[disTbluesingle],markerbluesingle]*ImageData[selectimagenucleussingle];imagenucleussingle=Colorize[watershedComponentsblue]componentsbluecentroidsingle=ComponentMeasurements[watershedComponentsbluesingle,"Centroid"]/.Rule[a_,b_]bcomponentsblueelongationsingle=Flatten[ComponentMeasurements[watershedComponentsbluesingle,"Elongation"]]/.Rule[a_,b_]b;componentsblueareasingle=Flatten[ComponentMeasurements[watershedComponentsbluesingle,"Area"]]/.Rule[a_,b_]b*(factor^2);Orientationblueanglesingle=(180/Pi)*Flatten[ComponentMeasurements[watershedComponentsbluesingle,"Orientation"]]/.Rule[a_,b_]b;Orientationblueangle2single=If[#<0,180-Abs[#],#]&/@Orientationblueanglesingle
Cells:
This part is used to quantify the different properties from one single cell, such as the elongation, orientation, area, etc.
disTgreensingle=ImageAdjust[DistanceTransform[actincropcropsingle]];markergreensingle=MaxDetect[disTgreensingle,0.8];watershedComponentsgreensingle=WatershedComponents[ColorNegate[disTgreensingle],markergreensingle]*ImageData[actincropcropsingle];imagesingle=Colorize[watershedComponentsgreensingle]componentsgreensingle=ComponentMeasurements[{watershedComponentsgreensingle,disTgreensingle},{"Centroid","SemiAxes","Orientation","Max"}];componentsgreenlongaxissingle=Flatten[ComponentMeasurements[{watershedComponentsgreensingle,disTgreensingle},{"Length"}]]/.Rule[a_,b_]b*factor;componentsgreenshortaxissingle=Flatten[ComponentMeasurements[{watershedComponentsgreensingle,disTgreensingle},{"Width"}]]/.Rule[a_,b_]b*factor;componentsgreenelongationsingle=Flatten[ComponentMeasurements[{watershedComponentsgreensingle,disTgreensingle},{"Elongation"}]]/.Rule[a_,b_]bcomponentsgreenareasingle=Flatten[ComponentMeasurements[{watershedComponentsgreensingle,disTgreensingle},{"Area"}]]/.Rule[a_,b_]b*(factor^2)componentsgreenperimetersingle=Flatten[ComponentMeasurements[{watershedComponentsgreensingle,disTgreensingle},{"PolygonalLength"}]]/.Rule[a_,b_]b*factor;orientationgreenanglesingle=(180/Pi)*Flatten[ComponentMeasurements[watershedComponentsgreensingle,"Orientation"]]/.Rule[a_,b_]b;Orientationgreenangle2single=If[#<0,180-Abs[#],#]&/@orientationgreenanglesingleLengthcellsingle=Flatten[ComponentMeasurements[watershedComponentsgreensingle,"CaliperLength"]]/.Rule[a_,b_]b*factorfitellipseactinsingle=Show[actincropcropsingle,Graphics[{Red,componentsgreensingle[[All,2]]/.{{centroid_,semiAxes_,orientation_,maxR_}Rotate[Disk[centroid,{semiAxes[[1]],semiAxes[[2]]}],orientation,centroid]}}]]
Fibronectin:watershedComponentsred=WatershedComponents[ColorNegate[#[[1]]],#[[2]]]*ImageData[#[[3]]]&/@Transpose[{disTgreen,markergreen,selectfibronectin}];imagefibronectin=Colorize[#]&/@watershedComponentsredareafibronectin=Flatten[ComponentMeasurements[{#[[1]],#[[2]]},{"Area"}]&/@Transpose[{watershedComponentsred,disTgreen}]/.Rule[a_,b_]b*(factor^2)]
Focaladhesions:
This part is used to quantify the different properties from the detected focal adhesions of one single cell, such as the elongation, orientation, area, etc.
sizefocal=0.1;selectfocalareanewsingle=SelectComponents[focalcropsingle,"Area",sizefocal/(factor^2)<#&];
shortaxisfocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"Width"]]/.Rule[a_,b_]b*factor;longaxisfocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"Length"]]/.Rule[a_,b_]b*factor;centroidfocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"Centroid"]]/.Rule[a_,b_]b;elongationfocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"Elongation"]]/.Rule[a_,b_]b;lengthfocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"CaliperLength"]]/.Rule[a_,b_]b*factor;perimeterfocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"PolygonalLength"]]/.Rule[a_,b_]b*factor;Areafocalsingle=Flatten[ComponentMeasurements[selectfocalareanewsingle,"Area"]]/.Rule[a_,b_]b*(factor^2);Orientationfocalsingle=(180/Pi)*Flatten[ComponentMeasurements[selectfocalareanewsingle,"Orientation"]]/.Rule[a_,b_]b;Orientationfocal2single=If[#<0,180-Abs[#],#]&/@Orientationfocalsingle;spatialdistributionfocalsingle=Outer[EuclideanDistance,componentsbluecentroidsingle,centroidfocalsingle,1]*factor//Flatten;
fitellipsefocalsingle=ComponentMeasurements[selectfocalareanewsingle,{"Centroid","SemiAxes","Orientation","Max"}];Show[selectfocalareanewsingle,Graphics[{Red,fitellipsefocalsingle[[All,2]]/.{{centroid_,semiAxes_,orientation_,maxR_}Rotate[Disk[centroid,{semiAxes[[1]],semiAxes[[2]]}],orientation,centroid]}}]]
Export:
SetDirectory[dir];Do[Export[StringJoin["selectactin_",ToString[n],".tif"],selectactin[[n]]],{n,1,Length[selectactin]}]Do[Export[StringJoin["selectnucleus_",ToString[n],".tif"],selectnucleus[[n]]],{n,1,Length[selectnucleus]}]Do[Export[StringJoin["watershedactin_",ToString[n],".tif"],image[[n]]],{n,1,Length[image]}]Do[Export[StringJoin["selectcell_",ToString[n],".tif"],selectcell[[n]]],{n,1,Length[selectcell]}]Do[Export[StringJoin["celloutlinenew_",ToString[n],".tif"],outlinecell[[n]]],{n,1,Length[outlinecell]}]Do[Export[StringJoin["nucleusoutlinenew_",ToString[n],".tif"],outlinenucleus[[n]]],{n,1,Length[outlinenucleus]}]Do[Export[StringJoin["selectfibronectin_",ToString[n],".tif"],imagefibronectin[[n]]],{n,1,Length[imagefibronectin]}]Export["focaladhesionfilternew1c.png",removebackground7,"png"];Export["focaladhesionnew1c.png",focalrotate,"png"];Export["focaladhesionsinglenew1c.png",imageadhesions7,"png"];
Actin:
Actin:
mytableactin={componentsgreenarea,componentsgreenlongaxis,componentsgreenshortaxis,componentsgreenelongation,componentsgreenperimeter,componentsgreenangle2,Lengthcell,areafibronectin}//Transpose;headers={"Cell area","Long axis","Short axis","Elongation","Perimeter","Orientation actin","Length Cell","Area fibronectin"};dataactin=Prepend[mytableactin,headers];Export["dataactin.xls",dataactin];
Nucleus:
Nucleus:
mytablenucleus={componentsbluearea,componentsbluelongaxis,componentsblueshortaxis,componentsblueelongation,componentsblueperimeter,componentsblueangle2}//Transpose;headersnucleus={"Nucleus area","Long axis","Short axis","Elongation","Perimeter","Orientation nucleus"};datanucleus=Prepend[mytablenucleus,headersnucleus];Export["datanucleus.xls",datanucleus];
Focal adhesions:
Focal adhesions:
mytablefocal={Areafocalafter,longaxisfocal,shortaxisfocal,elongationfocal,Orientationfocal2}//Transpose;headersfocal={"Focal area","Long axis","Short axis","Elongation","Orientation focal"};datafocal=Prepend[mytablefocal,headersfocal];Export["datafocal.xls",datafocal];
Single cells:
Single cells:
mytablesinglecells={actinarea,actinelongation,actinelongaxis,actinorientation,nucleusarea,nucleuselongation,nucleusorientation,shortaxisfocalsingle,longaxisfocalsingle,elongationfocalsingle,lengthfocalsingle,Areafocalsingle,Orientationfocal2single,spatialdistributionfocalsingle}//Transpose;headerssinglecells={"Area cell","Elongation cell","Long axis cell","Orientation cell","Area nucleus","Elongation nucleus","Orientation nucleus","Short axis focal","Long axis focal","Elongation focal","Length focal","Area focal","Orientation focal","Distance focal"};datasinglecells=Prepend[mytablesinglecells,headerssinglecells];Export["datasinglecells.xls",datasinglecells,"XLS"];


Cite this as: ABC Buskermolen, "An automated quantitative analysis of cell, nucleus and focal adhesion morphology" from the Notebook Archive (2019), https://notebookarchive.org/2019-04-dbmxfa0

Download

