Statistiques
| Révision :

root / bin / MGX_CurvatureMapSegmentation.py @ 20

Historique | Voir | Annoter | Télécharger (3,4 ko)

1 20 akiss
import os
2 20 akiss
3 20 akiss
'''
4 20 akiss
Input:
5 20 akiss
 - directory with detected sepal contour stacks .tif
6 20 akiss

7 20 akiss
Output:
8 20 akiss
 - segmented meshes (up and down surfaces treated as cells)
9 20 akiss
 - csv file / sepale containing : up and down surface areas
10 20 akiss

11 20 akiss
'''
12 20 akiss
13 20 akiss
# directory with detected sepal contours
14 20 akiss
filedata1="/home/biophysics/Desktop/Annamaria/SepalContours"
15 20 akiss
16 20 akiss
17 20 akiss
################### Parameters ###########
18 20 akiss
19 20 akiss
# cubesize for mesh creation
20 20 akiss
#cubesize=str(15)
21 20 akiss
cubesize=str(5)
22 20 akiss
23 20 akiss
# size of neighbourhood for the segmented curvature map
24 20 akiss
curv_neighb=str(100)
25 20 akiss
26 20 akiss
# segmentation
27 20 akiss
signal_ratio=str(3) # minimal border / cell signal ratio (if less, cells are fused)
28 20 akiss
# - cell
29 20 akiss
cell_blur_radius=str(100)
30 20 akiss
seed_radius=str(150)
31 20 akiss
# - border
32 20 akiss
border_distance=str(100)
33 20 akiss
border_blur_radius=str(100)
34 20 akiss
35 20 akiss
#########################################
36 20 akiss
37 20 akiss
filedata=filedata1+'/'
38 20 akiss
meshresult=filedata1+'-MGX-mesh'+cubesize+'/'
39 20 akiss
curvaturecsvresult=filedata1+'-MGX-curvature-csv/'
40 20 akiss
arearesult=filedata1+'-MGX-area/'
41 20 akiss
segresult=filedata1+'-MGX-seg/'
42 20 akiss
43 20 akiss
44 20 akiss
os.system("mkdir "+meshresult)
45 20 akiss
os.system("mkdir "+curvaturecsvresult)
46 20 akiss
os.system("mkdir "+arearesult)
47 20 akiss
os.system("mkdir "+segresult)
48 20 akiss
49 20 akiss
50 20 akiss
listfiles=os.listdir(filedata)
51 20 akiss
listfiles=[ i for i in listfiles if '.tif' in i]
52 20 akiss
53 20 akiss
54 20 akiss
Process.Stack__System__Clear_Work_Stack('0')
55 20 akiss
Process.Stack__System__Clear_Main_Stack('0')
56 20 akiss
Process.Stack__System__Clear_Main_Stack('1')
57 20 akiss
Process.Stack__System__Clear_Work_Stack('1')
58 20 akiss
for i in listfiles:
59 20 akiss
        Process.Stack__System__Set_Current_Stack('Main', '0')
60 20 akiss
        Process.Stack__System__Open(filedata+i, 'Main', '0', '', "Yes")
61 20 akiss
        # --- creating surface mesh
62 20 akiss
        Process.Mesh__Creation__Marching_Cubes_Surface(cubesize, '5000')
63 20 akiss
        Process.Mesh__Structure__Smooth_Mesh('1', 'No')
64 20 akiss
        Process.Mesh__Structure__Smooth_Mesh('1', 'No')
65 20 akiss
        Process.Mesh__Structure__Smooth_Mesh('1', 'No')
66 20 akiss
        Process.Mesh__Structure__Smooth_Mesh('1', 'No')
67 20 akiss
        # --- computing maximal curvature
68 20 akiss
        csvname=i[:-4]+'-carte-courbure-Maximal'+curv_neighb+'.csv'
69 20 akiss
        Process.Mesh__Signal__Project_Mesh_Curvature(curvaturecsvresult+csvname, 'Maximal', curv_neighb, 'Yes', '-50.0', '50.0', '85')
70 20 akiss
        meshname=i[:-4]+'-mesh.mgxm'
71 20 akiss
        Process.Mesh__System__Save(meshresult+meshname, 'no', '0')
72 20 akiss
        Process.Stack__System__Clear_Work_Stack('0')
73 20 akiss
        Process.Stack__System__Clear_Main_Stack('0')
74 20 akiss
        Process.Stack__System__Clear_Main_Stack('1')
75 20 akiss
        Process.Stack__System__Clear_Work_Stack('1')
76 20 akiss
        # --- watershed segmentation of the maximal curvature map
77 20 akiss
        Process.Mesh__Segmentation__Auto_Segmentation('Yes', 'No', cell_blur_radius, seed_radius, border_blur_radius, '100.0', border_distance, signal_ratio)
78 20 akiss
        segname=i[:-4]+'-seg.mgxm'
79 20 akiss
        Process.Mesh__System__Save(segresult+segname, 'no', '0')
80 20 akiss
        # --- computing the area of the faces
81 20 akiss
        csvname=i[:-4]+'-area.csv'
82 20 akiss
        Process.Mesh__Heat_Map__Heat_Map_Classic('Area', 'Geometry', arearesult+csvname, 'Geometry', 'No', '0', '65535', 'Yes', 'No', 'None', 'No', 'Decreasing', 'Ratio', '0.001', '1')
83 20 akiss
        # --- computing teh perimeter
84 20 akiss
        #csvname=i[:-4]+'-perimeter.csv'
85 20 akiss
        #Process.Mesh__Heat_Map__Heat_Map('/Geometry/Perimeter', 'No', 'No', '', 'No', '', '', 'Yes', 'Yes')
86 20 akiss
        # --- computing gaussian curvature
87 20 akiss
        #Process.Mesh__Signal__Project_Mesh_Curvature('', 'Gaussian', '100', 'Yes', '-50.0', '50.0', '85')
88 20 akiss
        """print("Please put two seeds on the two sides of the sepal :-) ... ")
89 20 akiss
        a=input("")
90 20 akiss
        Process.Mesh__Segmentation__Watershed_Segmentation('50000')
91 20 akiss
        csvname=i[:-4]+'-area.csv'
92 20 akiss
        Process.Mesh__Heat_Map__Heat_Map_Classic('Area', 'Geometry', csvresult+csvname, 'Geometry', 'No', '0', '65535', 'Yes', 'No', 'None', 'No', 'Decreasing', 'Ratio', '0.001', '1')
93 20 akiss
        """