Statistiques
| Révision :

root / bin / image2geometry / MGX_CurvatureMapSegmentation.py @ 10

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

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

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

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