root / bin / MGX_CurvatureMapSegmentation.py @ 18
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 | """ |