1
+ <!doctype html>
2
+ < html lang ="en ">
3
+ < head >
4
+ < meta charset ="utf-8 ">
5
+ < meta name ="viewport " content ="width=device-width, initial-scale=1, minimum-scale=1 " />
6
+ < meta name ="generator " content ="pdoc 0.9.2 " />
7
+ < title > globules API documentation</ title >
8
+ < meta name ="description " content ="Created on Fri Feb 11 10:44:13 2022 … " />
9
+ < link rel ="preload stylesheet " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css " integrity ="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs= " crossorigin >
10
+ < link rel ="preload stylesheet " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css " integrity ="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg= " crossorigin >
11
+ < link rel ="stylesheet preload " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css " crossorigin >
12
+ < style > : root {--highlight-color : # fe9 }.flex {display : flex !important }body {line-height : 1.5em }# content {padding : 20px }# sidebar {padding : 30px ;overflow : hidden}# sidebar > * : last-child {margin-bottom : 2cm }.http-server-breadcrumbs {font-size : 130% ;margin : 0 0 15px 0 }# footer {font-size : .75em ;padding : 5px 30px ;border-top : 1px solid # ddd ;text-align : right}# footer p {margin : 0 0 0 1em ;display : inline-block}# footer p : last-child {margin-right : 30px }h1 , h2 , h3 , h4 , h5 {font-weight : 300 }h1 {font-size : 2.5em ;line-height : 1.1em }h2 {font-size : 1.75em ;margin : 1em 0 .50em 0 }h3 {font-size : 1.4em ;margin : 25px 0 10px 0 }h4 {margin : 0 ;font-size : 105% }h1 : target , h2 : target , h3 : target , h4 : target , h5 : target , h6 : target {background : var (--highlight-color );padding : .2em 0 }a {color : # 058 ;text-decoration : none;transition : color .3s ease-in-out}a : hover {color : # e82 }.title code {font-weight : bold}h2 [id ^= "header-" ]{margin-top : 2em }.ident {color : # 900 }pre code {background : # f8f8f8 ;font-size : .8em ;line-height : 1.4em }code {background : # f2f2f1 ;padding : 1px 4px ;overflow-wrap : break-word}h1 code {background : transparent}pre {background : # f8f8f8 ;border : 0 ;border-top : 1px solid # ccc ;border-bottom : 1px solid # ccc ;margin : 1em 0 ;padding : 1ex }# http-server-module-list {display : flex;flex-flow : column}# http-server-module-list div {display : flex}# http-server-module-list dt {min-width : 10% }# http-server-module-list p {margin-top : 0 }.toc ul , # index {list-style-type : none;margin : 0 ;padding : 0 }# index code {background : transparent}# index h3 {border-bottom : 1px solid # ddd }# index ul {padding : 0 }# index h4 {margin-top : .6em ;font-weight : bold}@media (min-width : 200ex ){# index .two-column {column-count : 2 }}@media (min-width : 300ex ){# index .two-column {column-count : 3 }}dl {margin-bottom : 2em }dl dl : last-child {margin-bottom : 4em }dd {margin : 0 0 1em 3em }# header-classes + dl > dd {margin-bottom : 3em }dd dd {margin-left : 2em }dd p {margin : 10px 0 }.name {background : # eee ;font-weight : bold;font-size : .85em ;padding : 5px 10px ;display : inline-block;min-width : 40% }.name : hover {background : # e0e0e0 }dt : target .name {background : var (--highlight-color )}.name > span : first-child {white-space : nowrap}.name .class > span : nth-child (2 ){margin-left : .4em }.inherited {color : # 999 ;border-left : 5px solid # eee ;padding-left : 1em }.inheritance em {font-style : normal;font-weight : bold}.desc h2 {font-weight : 400 ;font-size : 1.25em }.desc h3 {font-size : 1em }.desc dt code {background : inherit}.source summary , .git-link-div {color : # 666 ;text-align : right;font-weight : 400 ;font-size : .8em ;text-transform : uppercase}.source summary > * {white-space : nowrap;cursor : pointer}.git-link {color : inherit;margin-left : 1em }.source pre {max-height : 500px ;overflow : auto;margin : 0 }.source pre code {font-size : 12px ;overflow : visible}.hlist {list-style : none}.hlist li {display : inline}.hlist li : after {content : ',\2002' }.hlist li : last-child : after {content : none}.hlist .hlist {display : inline;padding-left : 1em }img {max-width : 100% }td {padding : 0 .5em }.admonition {padding : .1em .5em ;margin-bottom : 1em }.admonition-title {font-weight : bold}.admonition .note , .admonition .info , .admonition .important {background : # aef }.admonition .todo , .admonition .versionadded , .admonition .tip , .admonition .hint {background : # dfd }.admonition .warning , .admonition .versionchanged , .admonition .deprecated {background : # fd4 }.admonition .error , .admonition .danger , .admonition .caution {background : lightpink}</ style >
13
+ < style media ="screen and (min-width: 700px) "> @media screen and (min-width : 700px ){# sidebar {width : 30% ;height : 100vh ;overflow : auto;position : sticky;top : 0 }# content {width : 70% ;max-width : 100ch ;padding : 3em 4em ;border-left : 1px solid # ddd }pre code {font-size : 1em }.item .name {font-size : 1em }main {display : flex;flex-direction : row-reverse;justify-content : flex-end}.toc ul ul , # index ul {padding-left : 1.5em }.toc > ul > li {margin-top : .5em }}</ style >
14
+ < style media ="print "> @media print{# sidebar h1 {page-break-before : always}.source {display : none}}@media print{* {background : transparent !important ;color : # 000 !important ;box-shadow : none !important ;text-shadow : none !important }a [href ]: after {content : " (" attr (href) ")" ;font-size : 90% }a [href ][title ]: after {content : none}abbr [title ]: after {content : " (" attr (title) ")" }.ir a : after , a [href ^= "javascript:" ]: after , a [href ^= "#" ]: after {content : "" }pre , blockquote {border : 1px solid # 999 ;page-break-inside : avoid}thead {display : table-header-group}tr , img {page-break-inside : avoid}img {max-width : 100% !important }@page {margin : 0.5cm }p , h2 , h3 {orphans : 3 ;widows : 3 }h1 , h2 , h3 , h4 , h5 , h6 {page-break-after : avoid}}</ style >
15
+ < script defer src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js " integrity ="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8= " crossorigin > </ script >
16
+ < script > window . addEventListener ( 'DOMContentLoaded' , ( ) => hljs . initHighlighting ( ) ) </ script >
17
+ </ head >
18
+ < body >
19
+ < main >
20
+ < article id ="content ">
21
+ < header >
22
+ < h1 class ="title "> Module < code > globules</ code > </ h1 >
23
+ </ header >
24
+ < section id ="section-intro ">
25
+ < p > Created on Fri Feb 11 10:44:13 2022</ p >
26
+ < p > @author: INRAE\olivier.vitrac@agroparistech.fr</ p >
27
+ < details class ="source ">
28
+ < summary >
29
+ < span > Expand source code</ span >
30
+ </ summary >
31
+ < pre > < code class ="python "> #!/usr/bin/env python3
32
+ # -*- coding: utf-8 -*-
33
+ """
34
+ Created on Fri Feb 11 10:44:13 2022
35
+
36
+ @author: INRAE\olivier.vitrac@agroparistech.fr
37
+ """
38
+
39
+ # %% Example 3D
40
+ from mpl_toolkits.mplot3d import Axes3D
41
+ import matplotlib.pyplot as plt
42
+ import numpy as np
43
+
44
+ xmin, ymin, zmin = -1, -1, -1
45
+ xmax, ymax, zmax = 1, 1, 1
46
+
47
+
48
+ def globule(x=0,y=0,z=0,r=1,color='b'):
49
+ global xmin, ymin, zmin, xmax, ymax, zmax
50
+ u = np.linspace(0, 2 * np.pi, 100)
51
+ v = np.linspace(0, np.pi, 100)
52
+ xs = x + r * np.outer(np.cos(u), np.sin(v))
53
+ ys = y + r * np.outer(np.sin(u), np.sin(v))
54
+ zs = z + r * np.outer(np.ones(np.size(u)), np.cos(v))
55
+ xmin, ymin, zmin = min(xmin,min(xs.flatten())), min(ymin,min(ys.flatten())), min(zmin,min(zs.flatten()))
56
+ xmax, ymax, zmax = max(xmax,max(xs.flatten())), max(ymax,max(ys.flatten())), max(zmin,max(zs.flatten()))
57
+ # Plot the surface
58
+ ax.plot_surface(xs, ys, zs, color=color)
59
+
60
+ def axistight():
61
+ max_range = np.array([xmax-xmin, ymax-ymin, zmax-zmin]).max()
62
+ Xbox = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][0].flatten() + 0.5*(xmin+xmax)
63
+ Ybox = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][1].flatten() + 0.5*(ymin+ymax)
64
+ Zbox = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][2].flatten() + 0.5*(zmin+zmax)
65
+ for xb, yb, zb in zip(Xbox, Ybox, Zbox): ax.plot([xb], [yb], [zb], 'k')
66
+
67
+
68
+
69
+ # %%
70
+ fig = plt.figure()
71
+ ax = plt.axes(projection='3d')
72
+ rsmall = 20
73
+ rbig = 40
74
+ globule(x=-150,y=-100,z=0,r=rsmall,color='g')
75
+ globule(x=-100,y=-50,z=-10,r=rsmall,color='b')
76
+ globule(x=-50,y=-20,z=-10,r=rsmall,color='r')
77
+
78
+ globule(x=0,y=0,z=0,r=rbig,color='g')
79
+ globule(x=-120,y=80,z=-15,r=rbig,color='b')
80
+ globule(x=120,y=70,z=15,r=rbig,color='r')
81
+
82
+
83
+ globule(x=50,y=-50,z=0,r=rsmall,color='r')
84
+ globule(x=-50,y=50,z=-20,r=rsmall,color='b')
85
+ globule(x=25,y=70,z=-20,r=rsmall,color='b')
86
+
87
+ # Make data
88
+ axistight()
89
+ plt.show()</ code > </ pre >
90
+ </ details >
91
+ </ section >
92
+ < section >
93
+ </ section >
94
+ < section >
95
+ </ section >
96
+ < section >
97
+ < h2 class ="section-title " id ="header-functions "> Functions</ h2 >
98
+ < dl >
99
+ < dt id ="globules.axistight "> < code class ="name flex ">
100
+ < span > def < span class ="ident "> axistight</ span > </ span > (< span > )</ span >
101
+ </ code > </ dt >
102
+ < dd >
103
+ < div class ="desc "> </ div >
104
+ < details class ="source ">
105
+ < summary >
106
+ < span > Expand source code</ span >
107
+ </ summary >
108
+ < pre > < code class ="python "> def axistight():
109
+ max_range = np.array([xmax-xmin, ymax-ymin, zmax-zmin]).max()
110
+ Xbox = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][0].flatten() + 0.5*(xmin+xmax)
111
+ Ybox = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][1].flatten() + 0.5*(ymin+ymax)
112
+ Zbox = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][2].flatten() + 0.5*(zmin+zmax)
113
+ for xb, yb, zb in zip(Xbox, Ybox, Zbox): ax.plot([xb], [yb], [zb], 'k')</ code > </ pre >
114
+ </ details >
115
+ </ dd >
116
+ < dt id ="globules.globule "> < code class ="name flex ">
117
+ < span > def < span class ="ident "> globule</ span > </ span > (< span > x=0, y=0, z=0, r=1, color='b')</ span >
118
+ </ code > </ dt >
119
+ < dd >
120
+ < div class ="desc "> </ div >
121
+ < details class ="source ">
122
+ < summary >
123
+ < span > Expand source code</ span >
124
+ </ summary >
125
+ < pre > < code class ="python "> def globule(x=0,y=0,z=0,r=1,color='b'):
126
+ global xmin, ymin, zmin, xmax, ymax, zmax
127
+ u = np.linspace(0, 2 * np.pi, 100)
128
+ v = np.linspace(0, np.pi, 100)
129
+ xs = x + r * np.outer(np.cos(u), np.sin(v))
130
+ ys = y + r * np.outer(np.sin(u), np.sin(v))
131
+ zs = z + r * np.outer(np.ones(np.size(u)), np.cos(v))
132
+ xmin, ymin, zmin = min(xmin,min(xs.flatten())), min(ymin,min(ys.flatten())), min(zmin,min(zs.flatten()))
133
+ xmax, ymax, zmax = max(xmax,max(xs.flatten())), max(ymax,max(ys.flatten())), max(zmin,max(zs.flatten()))
134
+ # Plot the surface
135
+ ax.plot_surface(xs, ys, zs, color=color)</ code > </ pre >
136
+ </ details >
137
+ </ dd >
138
+ </ dl >
139
+ </ section >
140
+ < section >
141
+ </ section >
142
+ </ article >
143
+ < nav id ="sidebar ">
144
+ < h1 > Index</ h1 >
145
+ < div class ="toc ">
146
+ < ul > </ ul >
147
+ </ div >
148
+ < ul id ="index ">
149
+ < li > < h3 > < a href ="#header-functions "> Functions</ a > </ h3 >
150
+ < ul class ="">
151
+ < li > < code > < a title ="globules.axistight " href ="#globules.axistight "> axistight</ a > </ code > </ li >
152
+ < li > < code > < a title ="globules.globule " href ="#globules.globule "> globule</ a > </ code > </ li >
153
+ </ ul >
154
+ </ li >
155
+ </ ul >
156
+ </ nav >
157
+ </ main >
158
+ < footer id ="footer ">
159
+ < p > Generated by < a href ="https://pdoc3.github.io/pdoc "> < cite > pdoc</ cite > 0.9.2</ a > .</ p >
160
+ </ footer >
161
+ </ body >
162
+ </ html >
0 commit comments