gphys 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +7414 -0
  3. data/LICENSE.txt +1 -1
  4. data/Rakefile +0 -2
  5. data/doc/derivative/math-doc/document/images.log +385 -0
  6. data/doc/ep_flux/math-doc/document/images.log +1375 -0
  7. data/doc/ganalysis/doc/NumRu.html +203 -0
  8. data/doc/ganalysis/doc/NumRu/GAnalysis.html +931 -0
  9. data/doc/ganalysis/doc/NumRu/GAnalysis/BetaPlane.html +574 -0
  10. data/doc/ganalysis/doc/NumRu/GAnalysis/Fitting.html +576 -0
  11. data/doc/ganalysis/doc/NumRu/GAnalysis/LogP.html +425 -0
  12. data/doc/ganalysis/doc/NumRu/GAnalysis/Met.html +2021 -0
  13. data/doc/ganalysis/doc/NumRu/GAnalysis/MetZ.html +524 -0
  14. data/doc/ganalysis/doc/NumRu/GAnalysis/Planet.html +1047 -0
  15. data/doc/ganalysis/doc/NumRu/GAnalysis/QG.html +794 -0
  16. data/doc/ganalysis/doc/NumRu/GAnalysis/QG/Uninitialized.html +215 -0
  17. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_common.html +603 -0
  18. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_sphere.html +760 -0
  19. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_sphere_common.html +251 -0
  20. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_sphere_div.html +424 -0
  21. data/doc/ganalysis/doc/NumRu/GAnalysis/SigmaCoord.html +321 -0
  22. data/doc/ganalysis/doc/NumRu/GGraph.html +334 -0
  23. data/doc/ganalysis/doc/NumRu/GPhys.html +579 -0
  24. data/doc/ganalysis/doc/Object.html +210 -0
  25. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/beta_plane_rb.html +60 -0
  26. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/covariance_rb.html +56 -0
  27. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/eof_rb.html +64 -0
  28. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/fitting_rb.html +54 -0
  29. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/histogram_rb.html +58 -0
  30. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/log_p_rb.html +60 -0
  31. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/met_rb.html +60 -0
  32. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/met_z_rb.html +58 -0
  33. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/planet_rb.html +58 -0
  34. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/qg_rb.html +64 -0
  35. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/sigma_coord_rb.html +56 -0
  36. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis_rb.html +98 -0
  37. data/doc/ganalysis/doc/created.rid +13 -0
  38. data/doc/ganalysis/doc/images/brick.png +0 -0
  39. data/doc/ganalysis/doc/images/brick_link.png +0 -0
  40. data/doc/ganalysis/doc/images/bug.png +0 -0
  41. data/doc/ganalysis/doc/images/bullet_black.png +0 -0
  42. data/doc/ganalysis/doc/images/bullet_toggle_minus.png +0 -0
  43. data/doc/ganalysis/doc/images/bullet_toggle_plus.png +0 -0
  44. data/doc/ganalysis/doc/images/date.png +0 -0
  45. data/doc/ganalysis/doc/images/find.png +0 -0
  46. data/doc/ganalysis/doc/images/loadingAnimation.gif +0 -0
  47. data/doc/ganalysis/doc/images/macFFBgHack.png +0 -0
  48. data/doc/ganalysis/doc/images/package.png +0 -0
  49. data/doc/ganalysis/doc/images/page_green.png +0 -0
  50. data/doc/ganalysis/doc/images/page_white_text.png +0 -0
  51. data/doc/ganalysis/doc/images/page_white_width.png +0 -0
  52. data/doc/ganalysis/doc/images/plugin.png +0 -0
  53. data/doc/ganalysis/doc/images/ruby.png +0 -0
  54. data/doc/ganalysis/doc/images/tag_green.png +0 -0
  55. data/doc/ganalysis/doc/images/wrench.png +0 -0
  56. data/doc/ganalysis/doc/images/wrench_orange.png +0 -0
  57. data/doc/ganalysis/doc/images/zoom.png +0 -0
  58. data/doc/ganalysis/doc/index.html +383 -0
  59. data/doc/ganalysis/doc/js/darkfish.js +118 -0
  60. data/doc/ganalysis/doc/js/jquery.js +32 -0
  61. data/doc/ganalysis/doc/js/quicksearch.js +114 -0
  62. data/doc/ganalysis/doc/js/thickbox-compressed.js +10 -0
  63. data/doc/ganalysis/doc/rdoc.css +763 -0
  64. data/ext/numru/gphys/ext_init.c +1 -0
  65. data/ext/numru/gphys/quad_mesh_sample.c +478 -0
  66. data/gphys.gemspec +2 -2
  67. data/lib/numru/dclext.rb +394 -14
  68. data/lib/numru/derivative.rb +6 -0
  69. data/lib/numru/ganalysis/qg.rb +6 -4
  70. data/lib/numru/ggraph.rb +41 -8
  71. data/lib/numru/gphys/gphys.rb +62 -14
  72. data/lib/numru/gphys/gphys_io.rb +4 -4
  73. data/lib/numru/gphys/version.rb +2 -2
  74. metadata +84 -79
  75. data/.gitignore +0 -14
  76. data/TODO_ep_flux +0 -6
  77. data/gphys-bigmem.gemspec +0 -44
  78. data/install.rb +0 -130
  79. data/sample/cira86_to_nc.rb +0 -122
  80. data/sample/druby_cli1.rb +0 -23
  81. data/sample/druby_cli2.rb +0 -28
  82. data/sample/druby_serv1.rb +0 -30
  83. data/sample/druby_serv2.rb +0 -51
  84. data/sample/ep_flux/demo_NCEP_1.rb +0 -48
  85. data/sample/ep_flux/demo_NCEP_2.rb +0 -57
  86. data/sample/ep_flux/demo_NCEP_3.rb +0 -81
  87. data/sample/ggraph_latlon_labelling_dr002690.rb +0 -159
  88. data/sample/ggraph_mapfit-axes_dr002687.rb +0 -131
  89. data/sample/map_projection.rb +0 -121
  90. data/sample/ncep_theta_coord.rb +0 -79
  91. data/test_old/eof_slp.rb +0 -28
  92. data/test_old/mltbit.dat +0 -0
  93. data/test_old/test_ep_flux.rb +0 -533
  94. data/test_old/test_multibitIO.rb +0 -19
@@ -0,0 +1,203 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: NumRu</title>
9
+
10
+ <link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="./js/jquery.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="./js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="./js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
15
+ <script src="./js/darkfish.js" type="text/javascript" charset="utf-8"></script>
16
+
17
+ </head>
18
+ <body id="top" class="module">
19
+
20
+ <div id="metadata">
21
+ <div id="home-metadata">
22
+ <div id="home-section" class="section">
23
+ <h3 class="section-header">
24
+ <a href="./index.html">Home</a>
25
+ <a href="./index.html#classes">Classes</a>
26
+ <a href="./index.html#methods">Methods</a>
27
+ </h3>
28
+ </div>
29
+ </div>
30
+
31
+ <div id="file-metadata">
32
+ <div id="file-list-section" class="section">
33
+ <h3 class="section-header">In Files</h3>
34
+ <div class="section-body">
35
+ <ul>
36
+
37
+ <li><a href="./__/__/lib/numru/ganalysis_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
38
+ class="thickbox" title="../../lib/numru/ganalysis.rb">../../lib/numru/ganalysis.rb</a></li>
39
+
40
+ <li><a href="./__/__/lib/numru/ganalysis/beta_plane_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
41
+ class="thickbox" title="../../lib/numru/ganalysis/beta_plane.rb">../../lib/numru/ganalysis/beta_plane.rb</a></li>
42
+
43
+ <li><a href="./__/__/lib/numru/ganalysis/covariance_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
44
+ class="thickbox" title="../../lib/numru/ganalysis/covariance.rb">../../lib/numru/ganalysis/covariance.rb</a></li>
45
+
46
+ <li><a href="./__/__/lib/numru/ganalysis/eof_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
47
+ class="thickbox" title="../../lib/numru/ganalysis/eof.rb">../../lib/numru/ganalysis/eof.rb</a></li>
48
+
49
+ <li><a href="./__/__/lib/numru/ganalysis/fitting_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
50
+ class="thickbox" title="../../lib/numru/ganalysis/fitting.rb">../../lib/numru/ganalysis/fitting.rb</a></li>
51
+
52
+ <li><a href="./__/__/lib/numru/ganalysis/histogram_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
53
+ class="thickbox" title="../../lib/numru/ganalysis/histogram.rb">../../lib/numru/ganalysis/histogram.rb</a></li>
54
+
55
+ <li><a href="./__/__/lib/numru/ganalysis/log_p_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
56
+ class="thickbox" title="../../lib/numru/ganalysis/log_p.rb">../../lib/numru/ganalysis/log_p.rb</a></li>
57
+
58
+ <li><a href="./__/__/lib/numru/ganalysis/met_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
59
+ class="thickbox" title="../../lib/numru/ganalysis/met.rb">../../lib/numru/ganalysis/met.rb</a></li>
60
+
61
+ <li><a href="./__/__/lib/numru/ganalysis/met_z_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
62
+ class="thickbox" title="../../lib/numru/ganalysis/met_z.rb">../../lib/numru/ganalysis/met_z.rb</a></li>
63
+
64
+ <li><a href="./__/__/lib/numru/ganalysis/planet_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
65
+ class="thickbox" title="../../lib/numru/ganalysis/planet.rb">../../lib/numru/ganalysis/planet.rb</a></li>
66
+
67
+ <li><a href="./__/__/lib/numru/ganalysis/qg_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
68
+ class="thickbox" title="../../lib/numru/ganalysis/qg.rb">../../lib/numru/ganalysis/qg.rb</a></li>
69
+
70
+ <li><a href="./__/__/lib/numru/ganalysis/sigma_coord_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
71
+ class="thickbox" title="../../lib/numru/ganalysis/sigma_coord.rb">../../lib/numru/ganalysis/sigma_coord.rb</a></li>
72
+
73
+ </ul>
74
+ </div>
75
+ </div>
76
+
77
+
78
+ </div>
79
+
80
+ <div id="class-metadata">
81
+
82
+
83
+
84
+
85
+
86
+ <!-- Namespace Contents -->
87
+ <div id="namespace-list-section" class="section">
88
+ <h3 class="section-header">Namespace</h3>
89
+ <ul class="link-list">
90
+
91
+ <li><span class="type">MODULE</span> <a href="NumRu/GAnalysis.html">NumRu::GAnalysis</a></li>
92
+
93
+ <li><span class="type">MODULE</span> <a href="NumRu/GGraph.html">NumRu::GGraph</a></li>
94
+
95
+ <li><span class="type">CLASS</span> <a href="NumRu/GPhys.html">NumRu::GPhys</a></li>
96
+
97
+ </ul>
98
+ </div>
99
+
100
+
101
+
102
+
103
+
104
+ </div>
105
+
106
+ <div id="project-metadata">
107
+
108
+
109
+
110
+ <div id="classindex-section" class="section project-section">
111
+ <h3 class="section-header">Class/Module Index
112
+ <span class="search-toggle"><img src="./images/find.png"
113
+ height="16" width="16" alt="[+]"
114
+ title="show/hide quicksearch" /></span></h3>
115
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
116
+ <fieldset>
117
+ <legend>Quicksearch</legend>
118
+ <input type="text" name="quicksearch" value=""
119
+ class="quicksearch-field" />
120
+ </fieldset>
121
+ </form>
122
+
123
+ <ul class="link-list">
124
+
125
+ <li><a href="./NumRu.html">NumRu</a></li>
126
+
127
+ <li><a href="./NumRu/GAnalysis.html">NumRu::GAnalysis</a></li>
128
+
129
+ <li><a href="./NumRu/GAnalysis/BetaPlane.html">NumRu::GAnalysis::BetaPlane</a></li>
130
+
131
+ <li><a href="./NumRu/GAnalysis/Fitting.html">NumRu::GAnalysis::Fitting</a></li>
132
+
133
+ <li><a href="./NumRu/GAnalysis/LogP.html">NumRu::GAnalysis::LogP</a></li>
134
+
135
+ <li><a href="./NumRu/GAnalysis/Met.html">NumRu::GAnalysis::Met</a></li>
136
+
137
+ <li><a href="./NumRu/GAnalysis/MetZ.html">NumRu::GAnalysis::MetZ</a></li>
138
+
139
+ <li><a href="./NumRu/GAnalysis/Planet.html">NumRu::GAnalysis::Planet</a></li>
140
+
141
+ <li><a href="./NumRu/GAnalysis/QG.html">NumRu::GAnalysis::QG</a></li>
142
+
143
+ <li><a href="./NumRu/GAnalysis/QG/Uninitialized.html">NumRu::GAnalysis::QG::Uninitialized</a></li>
144
+
145
+ <li><a href="./NumRu/GAnalysis/QG_common.html">NumRu::GAnalysis::QG_common</a></li>
146
+
147
+ <li><a href="./NumRu/GAnalysis/QG_sphere.html">NumRu::GAnalysis::QG_sphere</a></li>
148
+
149
+ <li><a href="./NumRu/GAnalysis/QG_sphere_common.html">NumRu::GAnalysis::QG_sphere_common</a></li>
150
+
151
+ <li><a href="./NumRu/GAnalysis/QG_sphere_div.html">NumRu::GAnalysis::QG_sphere_div</a></li>
152
+
153
+ <li><a href="./NumRu/GAnalysis/SigmaCoord.html">NumRu::GAnalysis::SigmaCoord</a></li>
154
+
155
+ <li><a href="./NumRu/GGraph.html">NumRu::GGraph</a></li>
156
+
157
+ <li><a href="./NumRu/GPhys.html">NumRu::GPhys</a></li>
158
+
159
+ <li><a href="./Object.html">Object</a></li>
160
+
161
+ </ul>
162
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
163
+ </div>
164
+
165
+
166
+ </div>
167
+ </div>
168
+
169
+ <div id="documentation">
170
+ <h1 class="module">NumRu</h1>
171
+
172
+ <div id="description" class="description">
173
+
174
+ </div><!-- description -->
175
+
176
+
177
+
178
+
179
+ <div id="5Buntitled-5D" class="documentation-section">
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+ <!-- Methods -->
189
+
190
+ </div><!-- 5Buntitled-5D -->
191
+
192
+
193
+ </div><!-- documentation -->
194
+
195
+ <div id="validator-badges">
196
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
197
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
198
+ Rdoc Generator</a> 2</small>.</p>
199
+ </div>
200
+
201
+ </body>
202
+ </html>
203
+
@@ -0,0 +1,931 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: NumRu::GAnalysis</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
15
+ <script src="../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
16
+
17
+ </head>
18
+ <body id="top" class="module">
19
+
20
+ <div id="metadata">
21
+ <div id="home-metadata">
22
+ <div id="home-section" class="section">
23
+ <h3 class="section-header">
24
+ <a href="../index.html">Home</a>
25
+ <a href="../index.html#classes">Classes</a>
26
+ <a href="../index.html#methods">Methods</a>
27
+ </h3>
28
+ </div>
29
+ </div>
30
+
31
+ <div id="file-metadata">
32
+ <div id="file-list-section" class="section">
33
+ <h3 class="section-header">In Files</h3>
34
+ <div class="section-body">
35
+ <ul>
36
+
37
+ <li><a href="../__/__/lib/numru/ganalysis_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
38
+ class="thickbox" title="../../lib/numru/ganalysis.rb">../../lib/numru/ganalysis.rb</a></li>
39
+
40
+ <li><a href="../__/__/lib/numru/ganalysis/beta_plane_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
41
+ class="thickbox" title="../../lib/numru/ganalysis/beta_plane.rb">../../lib/numru/ganalysis/beta_plane.rb</a></li>
42
+
43
+ <li><a href="../__/__/lib/numru/ganalysis/covariance_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
44
+ class="thickbox" title="../../lib/numru/ganalysis/covariance.rb">../../lib/numru/ganalysis/covariance.rb</a></li>
45
+
46
+ <li><a href="../__/__/lib/numru/ganalysis/eof_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
47
+ class="thickbox" title="../../lib/numru/ganalysis/eof.rb">../../lib/numru/ganalysis/eof.rb</a></li>
48
+
49
+ <li><a href="../__/__/lib/numru/ganalysis/fitting_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
50
+ class="thickbox" title="../../lib/numru/ganalysis/fitting.rb">../../lib/numru/ganalysis/fitting.rb</a></li>
51
+
52
+ <li><a href="../__/__/lib/numru/ganalysis/histogram_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
53
+ class="thickbox" title="../../lib/numru/ganalysis/histogram.rb">../../lib/numru/ganalysis/histogram.rb</a></li>
54
+
55
+ <li><a href="../__/__/lib/numru/ganalysis/log_p_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
56
+ class="thickbox" title="../../lib/numru/ganalysis/log_p.rb">../../lib/numru/ganalysis/log_p.rb</a></li>
57
+
58
+ <li><a href="../__/__/lib/numru/ganalysis/met_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
59
+ class="thickbox" title="../../lib/numru/ganalysis/met.rb">../../lib/numru/ganalysis/met.rb</a></li>
60
+
61
+ <li><a href="../__/__/lib/numru/ganalysis/met_z_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
62
+ class="thickbox" title="../../lib/numru/ganalysis/met_z.rb">../../lib/numru/ganalysis/met_z.rb</a></li>
63
+
64
+ <li><a href="../__/__/lib/numru/ganalysis/planet_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
65
+ class="thickbox" title="../../lib/numru/ganalysis/planet.rb">../../lib/numru/ganalysis/planet.rb</a></li>
66
+
67
+ <li><a href="../__/__/lib/numru/ganalysis/qg_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
68
+ class="thickbox" title="../../lib/numru/ganalysis/qg.rb">../../lib/numru/ganalysis/qg.rb</a></li>
69
+
70
+ <li><a href="../__/__/lib/numru/ganalysis/sigma_coord_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
71
+ class="thickbox" title="../../lib/numru/ganalysis/sigma_coord.rb">../../lib/numru/ganalysis/sigma_coord.rb</a></li>
72
+
73
+ </ul>
74
+ </div>
75
+ </div>
76
+
77
+
78
+ </div>
79
+
80
+ <div id="class-metadata">
81
+
82
+
83
+
84
+
85
+
86
+ <!-- Namespace Contents -->
87
+ <div id="namespace-list-section" class="section">
88
+ <h3 class="section-header">Namespace</h3>
89
+ <ul class="link-list">
90
+
91
+ <li><span class="type">MODULE</span> <a href="GAnalysis/Fitting.html">NumRu::GAnalysis::Fitting</a></li>
92
+
93
+ <li><span class="type">MODULE</span> <a href="GAnalysis/LogP.html">NumRu::GAnalysis::LogP</a></li>
94
+
95
+ <li><span class="type">MODULE</span> <a href="GAnalysis/Met.html">NumRu::GAnalysis::Met</a></li>
96
+
97
+ <li><span class="type">MODULE</span> <a href="GAnalysis/MetZ.html">NumRu::GAnalysis::MetZ</a></li>
98
+
99
+ <li><span class="type">MODULE</span> <a href="GAnalysis/Planet.html">NumRu::GAnalysis::Planet</a></li>
100
+
101
+ <li><span class="type">MODULE</span> <a href="GAnalysis/QG.html">NumRu::GAnalysis::QG</a></li>
102
+
103
+ <li><span class="type">MODULE</span> <a href="GAnalysis/QG_common.html">NumRu::GAnalysis::QG_common</a></li>
104
+
105
+ <li><span class="type">MODULE</span> <a href="GAnalysis/QG_sphere.html">NumRu::GAnalysis::QG_sphere</a></li>
106
+
107
+ <li><span class="type">MODULE</span> <a href="GAnalysis/QG_sphere_common.html">NumRu::GAnalysis::QG_sphere_common</a></li>
108
+
109
+ <li><span class="type">MODULE</span> <a href="GAnalysis/QG_sphere_div.html">NumRu::GAnalysis::QG_sphere_div</a></li>
110
+
111
+ <li><span class="type">MODULE</span> <a href="GAnalysis/SigmaCoord.html">NumRu::GAnalysis::SigmaCoord</a></li>
112
+
113
+ <li><span class="type">CLASS</span> <a href="GAnalysis/BetaPlane.html">NumRu::GAnalysis::BetaPlane</a></li>
114
+
115
+ </ul>
116
+ </div>
117
+
118
+
119
+
120
+ <!-- Method Quickref -->
121
+ <div id="method-list-section" class="section">
122
+ <h3 class="section-header">Methods</h3>
123
+ <ul class="link-list">
124
+
125
+ <li><a href="#method-i-corelation">#corelation</a></li>
126
+
127
+ <li><a href="#method-i-correlation">#correlation</a></li>
128
+
129
+ <li><a href="#method-i-covariance">#covariance</a></li>
130
+
131
+ <li><a href="#method-i-eof">#eof</a></li>
132
+
133
+ <li><a href="#method-i-eof2">#eof2</a></li>
134
+
135
+ <li><a href="#method-i-histogram">#histogram</a></li>
136
+
137
+ <li><a href="#method-i-histogram1D">#histogram1D</a></li>
138
+
139
+ <li><a href="#method-i-histogram2D">#histogram2D</a></li>
140
+
141
+ </ul>
142
+ </div>
143
+
144
+
145
+
146
+ </div>
147
+
148
+ <div id="project-metadata">
149
+
150
+
151
+
152
+ <div id="classindex-section" class="section project-section">
153
+ <h3 class="section-header">Class/Module Index
154
+ <span class="search-toggle"><img src="../images/find.png"
155
+ height="16" width="16" alt="[+]"
156
+ title="show/hide quicksearch" /></span></h3>
157
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
158
+ <fieldset>
159
+ <legend>Quicksearch</legend>
160
+ <input type="text" name="quicksearch" value=""
161
+ class="quicksearch-field" />
162
+ </fieldset>
163
+ </form>
164
+
165
+ <ul class="link-list">
166
+
167
+ <li><a href="../NumRu.html">NumRu</a></li>
168
+
169
+ <li><a href="../NumRu/GAnalysis.html">NumRu::GAnalysis</a></li>
170
+
171
+ <li><a href="../NumRu/GAnalysis/BetaPlane.html">NumRu::GAnalysis::BetaPlane</a></li>
172
+
173
+ <li><a href="../NumRu/GAnalysis/Fitting.html">NumRu::GAnalysis::Fitting</a></li>
174
+
175
+ <li><a href="../NumRu/GAnalysis/LogP.html">NumRu::GAnalysis::LogP</a></li>
176
+
177
+ <li><a href="../NumRu/GAnalysis/Met.html">NumRu::GAnalysis::Met</a></li>
178
+
179
+ <li><a href="../NumRu/GAnalysis/MetZ.html">NumRu::GAnalysis::MetZ</a></li>
180
+
181
+ <li><a href="../NumRu/GAnalysis/Planet.html">NumRu::GAnalysis::Planet</a></li>
182
+
183
+ <li><a href="../NumRu/GAnalysis/QG.html">NumRu::GAnalysis::QG</a></li>
184
+
185
+ <li><a href="../NumRu/GAnalysis/QG/Uninitialized.html">NumRu::GAnalysis::QG::Uninitialized</a></li>
186
+
187
+ <li><a href="../NumRu/GAnalysis/QG_common.html">NumRu::GAnalysis::QG_common</a></li>
188
+
189
+ <li><a href="../NumRu/GAnalysis/QG_sphere.html">NumRu::GAnalysis::QG_sphere</a></li>
190
+
191
+ <li><a href="../NumRu/GAnalysis/QG_sphere_common.html">NumRu::GAnalysis::QG_sphere_common</a></li>
192
+
193
+ <li><a href="../NumRu/GAnalysis/QG_sphere_div.html">NumRu::GAnalysis::QG_sphere_div</a></li>
194
+
195
+ <li><a href="../NumRu/GAnalysis/SigmaCoord.html">NumRu::GAnalysis::SigmaCoord</a></li>
196
+
197
+ <li><a href="../NumRu/GGraph.html">NumRu::GGraph</a></li>
198
+
199
+ <li><a href="../NumRu/GPhys.html">NumRu::GPhys</a></li>
200
+
201
+ <li><a href="../Object.html">Object</a></li>
202
+
203
+ </ul>
204
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
205
+ </div>
206
+
207
+
208
+ </div>
209
+ </div>
210
+
211
+ <div id="documentation">
212
+ <h1 class="module">NumRu::GAnalysis</h1>
213
+
214
+ <div id="description" class="description">
215
+
216
+ </div><!-- description -->
217
+
218
+
219
+
220
+
221
+ <div id="5Buntitled-5D" class="documentation-section">
222
+
223
+
224
+
225
+
226
+
227
+ <!-- Constants -->
228
+ <div id="constants-list" class="section">
229
+ <h3 class="section-header">Constants</h3>
230
+ <dl>
231
+
232
+ <dt><a name="HistogramGSL">HistogramGSL</a></dt>
233
+
234
+ <dd class="description"></dd>
235
+
236
+
237
+ </dl>
238
+ </div>
239
+
240
+
241
+
242
+
243
+ <!-- Methods -->
244
+
245
+ <div id="public-instance-method-details" class="method-section section">
246
+ <h3 class="section-header">Public Instance Methods</h3>
247
+
248
+
249
+ <div id="corelation-method" class="method-detail ">
250
+ <a name="method-i-corelation"></a>
251
+
252
+
253
+ <div class="method-heading">
254
+ <span class="method-name">corelation</span><span
255
+ class="method-args">(gphys0, gphys1, *dims)</span>
256
+ <span class="method-click-advice">click to toggle source</span>
257
+ </div>
258
+
259
+
260
+ <div class="method-description">
261
+
262
+
263
+
264
+
265
+
266
+ <div class="method-source-code" id="corelation-source">
267
+ <pre>
268
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/covariance.rb, line 60</span>
269
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">corelation</span>(<span class="ruby-identifier">gphys0</span>, <span class="ruby-identifier">gphys1</span>, *<span class="ruby-identifier">dims</span>)
270
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">val</span>
271
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">val</span>
272
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
273
+ <span class="ruby-identifier">mask</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">get_mask</span>
274
+ <span class="ruby-keyword">else</span>
275
+ <span class="ruby-identifier">mask</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">byte</span>(*(<span class="ruby-identifier">val0</span>.<span class="ruby-identifier">shape</span>)).<span class="ruby-identifier">fill!</span>(<span class="ruby-value">1</span>)
276
+ <span class="ruby-keyword">end</span>
277
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
278
+ <span class="ruby-identifier">mask2</span> = <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_mask</span>
279
+ <span class="ruby-keyword">else</span>
280
+ <span class="ruby-identifier">mask2</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">byte</span>(*(<span class="ruby-identifier">val1</span>.<span class="ruby-identifier">shape</span>)).<span class="ruby-identifier">fill!</span>(<span class="ruby-value">1</span>)
281
+ <span class="ruby-keyword">end</span>
282
+ <span class="ruby-identifier">mask</span>.<span class="ruby-identifier">mul!</span>(<span class="ruby-identifier">mask2</span>)
283
+ <span class="ruby-identifier">val0</span> = <span class="ruby-constant">NArrayMiss</span>.<span class="ruby-identifier">to_nam</span>(<span class="ruby-identifier">val0</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
284
+ <span class="ruby-identifier">val1</span> = <span class="ruby-constant">NArrayMiss</span>.<span class="ruby-identifier">to_nam</span>(<span class="ruby-identifier">val1</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
285
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">set_mask</span>(<span class="ruby-identifier">mask</span>)
286
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">set_mask</span>(<span class="ruby-identifier">mask</span>)
287
+ <span class="ruby-identifier">p</span> <span class="ruby-identifier">val0</span>,<span class="ruby-identifier">val1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
288
+ <span class="ruby-identifier">gphys0</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">copy</span>.<span class="ruby-identifier">replace_val</span>(<span class="ruby-identifier">val0</span>)
289
+ <span class="ruby-identifier">gphys1</span> = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">copy</span>.<span class="ruby-identifier">replace_val</span>(<span class="ruby-identifier">val1</span>)
290
+
291
+ <span class="ruby-identifier">covariance</span>, <span class="ruby-identifier">ndiv</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">covariance</span>(<span class="ruby-identifier">gphys1</span>,*<span class="ruby-identifier">dims</span>)
292
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">covariance</span><span class="ruby-operator">/</span>(<span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">stddev</span>(*<span class="ruby-identifier">dims</span>)*<span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">stddev</span>(*<span class="ruby-identifier">dims</span>)), <span class="ruby-identifier">mask</span>.<span class="ruby-identifier">to_type</span>(<span class="ruby-constant">NArray</span><span class="ruby-operator">::</span><span class="ruby-constant">LINT</span>).<span class="ruby-identifier">sum</span>(*<span class="ruby-identifier">dims</span>)
293
+ <span class="ruby-keyword">end</span></pre>
294
+ </div><!-- corelation-source -->
295
+
296
+ </div>
297
+
298
+
299
+ <div class="aliases">
300
+ Also aliased as: <a href="GAnalysis.html#method-i-correlation">correlation</a>
301
+ </div>
302
+
303
+
304
+
305
+ </div><!-- corelation-method -->
306
+
307
+
308
+ <div id="correlation-method" class="method-detail method-alias">
309
+ <a name="method-i-correlation"></a>
310
+
311
+
312
+ <div class="method-heading">
313
+ <span class="method-name">correlation</span><span
314
+ class="method-args">(gphys0, gphys1, *dims)</span>
315
+ <span class="method-click-advice">click to toggle source</span>
316
+ </div>
317
+
318
+
319
+ <div class="method-description">
320
+
321
+
322
+
323
+
324
+
325
+ </div>
326
+
327
+
328
+
329
+
330
+ <div class="aliases">
331
+ Alias for: <a href="GAnalysis.html#method-i-corelation">corelation</a>
332
+ </div>
333
+
334
+ </div><!-- correlation-method -->
335
+
336
+
337
+ <div id="covariance-method" class="method-detail ">
338
+ <a name="method-i-covariance"></a>
339
+
340
+
341
+ <div class="method-heading">
342
+ <span class="method-name">covariance</span><span
343
+ class="method-args">(gphys0, gphys1, *dims)</span>
344
+ <span class="method-click-advice">click to toggle source</span>
345
+ </div>
346
+
347
+
348
+ <div class="method-description">
349
+
350
+
351
+
352
+
353
+
354
+ <div class="method-source-code" id="covariance-source">
355
+ <pre>
356
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/covariance.rb, line 8</span>
357
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">covariance</span>(<span class="ruby-identifier">gphys0</span>, <span class="ruby-identifier">gphys1</span>, *<span class="ruby-identifier">dims</span>)
358
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">GPhys</span><span class="ruby-operator">===</span><span class="ruby-identifier">gphys0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">GPhys</span><span class="ruby-operator">===</span><span class="ruby-identifier">gphys1</span>
359
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gphys0 and gphys1 must be GPhys&quot;</span>
360
+ <span class="ruby-keyword">end</span>
361
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">shape</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">shape</span>
362
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gphys0 and gphys1 must have the same shape&quot;</span>
363
+ <span class="ruby-keyword">end</span>
364
+ <span class="ruby-identifier">units</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">units</span>*<span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">units</span>
365
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">dims</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
366
+ <span class="ruby-identifier">dims</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
367
+ <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">rank</span>.<span class="ruby-identifier">times</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">dims</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">i</span> }
368
+ <span class="ruby-keyword">else</span>
369
+ <span class="ruby-identifier">dims</span> = <span class="ruby-identifier">dims</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">dim</span><span class="ruby-operator">|</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">dim_index</span>(<span class="ruby-identifier">dim</span>) }
370
+ <span class="ruby-keyword">end</span>
371
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">val</span>
372
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">val</span>
373
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
374
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
375
+ <span class="ruby-identifier">mask</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">get_mask</span> * <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_mask</span>
376
+ <span class="ruby-identifier">ndiv</span> = <span class="ruby-identifier">mask</span>.<span class="ruby-identifier">to_type</span>(<span class="ruby-constant">NArray</span><span class="ruby-operator">::</span><span class="ruby-constant">LINT</span>).<span class="ruby-identifier">accum</span>(*<span class="ruby-identifier">dims</span>)
377
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">set_mask</span>(<span class="ruby-identifier">mask</span>)
378
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">set_mask</span>(<span class="ruby-identifier">mask</span>)
379
+ <span class="ruby-keyword">else</span>
380
+ <span class="ruby-identifier">ndiv</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">get_mask</span>.<span class="ruby-identifier">to_type</span>(<span class="ruby-constant">NArray</span><span class="ruby-operator">::</span><span class="ruby-constant">LINT</span>).<span class="ruby-identifier">accum</span>(*<span class="ruby-identifier">dims</span>)
381
+ <span class="ruby-identifier">val1</span> = <span class="ruby-constant">NArrayMiss</span>.<span class="ruby-identifier">to_nam</span>(<span class="ruby-identifier">val1</span>,<span class="ruby-identifier">val0</span>.<span class="ruby-identifier">get_mask</span>)
382
+ <span class="ruby-keyword">end</span>
383
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArrayMiss</span>)
384
+ <span class="ruby-identifier">ndiv</span> = <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_mask</span>.<span class="ruby-identifier">to_type</span>(<span class="ruby-constant">NArray</span><span class="ruby-operator">::</span><span class="ruby-constant">LINT</span>).<span class="ruby-identifier">accum</span>(*<span class="ruby-identifier">dims</span>)
385
+ <span class="ruby-identifier">val0</span> = <span class="ruby-constant">NArrayMiss</span>.<span class="ruby-identifier">to_nam</span>(<span class="ruby-identifier">val0</span>,<span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_mask</span>)
386
+ <span class="ruby-keyword">else</span>
387
+ <span class="ruby-identifier">ndiv</span> = <span class="ruby-value">1</span>
388
+ <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">shape</span>.<span class="ruby-identifier">each_with_index</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
389
+ <span class="ruby-identifier">ndiv</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">dims</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">i</span>)
390
+ }
391
+ <span class="ruby-keyword">end</span>
392
+ <span class="ruby-identifier">val0</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">accum</span>(*<span class="ruby-identifier">dims</span>).<span class="ruby-identifier">div!</span>(<span class="ruby-identifier">ndiv</span>)
393
+ <span class="ruby-identifier">val1</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">accum</span>(*<span class="ruby-identifier">dims</span>).<span class="ruby-identifier">div!</span>(<span class="ruby-identifier">ndiv</span>)
394
+ <span class="ruby-identifier">nary</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">mul_add</span>(<span class="ruby-identifier">val1</span>,*<span class="ruby-identifier">dims</span>)
395
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">Float</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">nary</span>
396
+ <span class="ruby-identifier">ndiv</span> = <span class="ruby-identifier">ndiv</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">ndiv</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArray</span>)
397
+ <span class="ruby-identifier">nary</span> <span class="ruby-operator">/=</span> (<span class="ruby-identifier">ndiv</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)
398
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">UNumeric</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">nary</span>, <span class="ruby-identifier">units</span>), <span class="ruby-identifier">ndiv</span>
399
+ <span class="ruby-keyword">else</span>
400
+ <span class="ruby-identifier">nary</span>.<span class="ruby-identifier">div!</span>(<span class="ruby-identifier">ndiv</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)
401
+ <span class="ruby-identifier">vary</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">nary</span>,
402
+ {<span class="ruby-string">&quot;long_name&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;covariance&quot;</span>,<span class="ruby-string">&quot;units&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">units</span>.<span class="ruby-identifier">to_s</span>},
403
+ <span class="ruby-string">&quot;covariance&quot;</span>)
404
+ <span class="ruby-identifier">new_grid</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">grid</span>.<span class="ruby-identifier">delete_axes</span>(<span class="ruby-identifier">dims</span>, <span class="ruby-string">&quot;covariance&quot;</span>).<span class="ruby-identifier">copy</span>
405
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">GPhys</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">new_grid</span>,<span class="ruby-identifier">vary</span>), <span class="ruby-identifier">ndiv</span>
406
+ <span class="ruby-keyword">end</span>
407
+ <span class="ruby-keyword">end</span></pre>
408
+ </div><!-- covariance-source -->
409
+
410
+ </div>
411
+
412
+
413
+
414
+
415
+ </div><!-- covariance-method -->
416
+
417
+
418
+ <div id="eof-method" class="method-detail ">
419
+ <a name="method-i-eof"></a>
420
+
421
+
422
+ <div class="method-heading">
423
+ <span class="method-name">eof</span><span
424
+ class="method-args">(gphys, *args)</span>
425
+ <span class="method-click-advice">click to toggle source</span>
426
+ </div>
427
+
428
+
429
+ <div class="method-description">
430
+
431
+ <p>Calculate EOF vectors and contribution rate</p>
432
+
433
+ <h2>call-seq</h2>
434
+
435
+ <pre>NumRu::GAnalysis.eof(gphys, dim0[, dim1, ..., dimN[, opts]]) =&gt; [eof, rate]</pre>
436
+
437
+ <h2>Arguments</h2>
438
+ <table class="rdoc-list"><tr><td class="rdoc-term"><p><tt>gphys</tt></p></td>
439
+ <td>
440
+ <p><a href="GPhys.html">GPhys</a> object to be calculated its EOF</p>
441
+ </td></tr><tr><td class="rdoc-term"><p><tt>dim0</tt>, ..., <tt>dimN</tt></p></td>
442
+ <td>
443
+ <p>dimension name (String) or number (Ingeter) to calculate variance or
444
+ covariance, and those dimensions are not contained in the result EOF
445
+ vectors.</p>
446
+ </td></tr><tr><td class="rdoc-term"><p><tt>opts</tt></p></td>
447
+ <td>
448
+ <p>a Hash object whose key is String or Symbol. The following options are
449
+ available:</p>
450
+ </td></tr></table>
451
+
452
+ <pre>* nmodes: Integer, number of EOF modes to be calculate (default all EOF modes)
453
+ * weight: GPhys or NArray, weight vector
454
+ +gphys+ is multiplied by the weight vector before calculation of variance covariance matrix
455
+ and the result eigen vectors are divided by the vector.
456
+ If weight vector is not set,
457
+ it is cosine of latitude when the first two axes of the +gphys+ are &quot;lon&quot; and &quot;lat&quot; and +disable_weight+ option is not +true+,
458
+ else 1.
459
+ * disable_weight: See weight option.</pre>
460
+
461
+ <h2>Return values</h2>
462
+ <table class="rdoc-list"><tr><td class="rdoc-term"><p><tt>eof</tt></p></td>
463
+ <td>
464
+ <p><a href="GPhys.html">GPhys</a> object for array of EOF vectors.</p>
465
+ </td></tr><tr><td class="rdoc-term"><p><tt>rate</tt></p></td>
466
+ <td>
467
+ <p><a href="GPhys.html">GPhys</a> object for array of contribution rate
468
+ correspoinding to the EOF vectors.</p>
469
+ </td></tr></table>
470
+
471
+
472
+
473
+ <div class="method-source-code" id="eof-source">
474
+ <pre>
475
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/eof.rb, line 51</span>
476
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">eof</span>(<span class="ruby-identifier">gphys</span>, *<span class="ruby-identifier">args</span>)
477
+
478
+ <span class="ruby-keyword">unless</span> <span class="ruby-keyword">defined?</span>(<span class="ruby-identifier">@@EOF_engin</span>)
479
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;SSL2 (Ruby-SSL2) or LAPACK (Ruby-LAPACK) or GSL (Ruby/GSL) must have been installed. (SSL2 or LAPACK is recommended for large computation)&quot;</span>
480
+ <span class="ruby-keyword">end</span>
481
+
482
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">-1</span>]
483
+ <span class="ruby-identifier">dims</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>]
484
+ <span class="ruby-identifier">opts</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">-1</span>]
485
+ <span class="ruby-keyword">else</span>
486
+ <span class="ruby-identifier">dims</span> = <span class="ruby-identifier">args</span>
487
+ <span class="ruby-identifier">opts</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
488
+ <span class="ruby-keyword">end</span>
489
+ <span class="ruby-identifier">dims</span> = <span class="ruby-identifier">dims</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">dim</span><span class="ruby-operator">|</span> <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">dim_index</span>(<span class="ruby-identifier">dim</span>) }
490
+ <span class="ruby-identifier">n</span> = <span class="ruby-value">1</span>
491
+ <span class="ruby-identifier">n_lost</span> = <span class="ruby-value">1</span>
492
+ <span class="ruby-identifier">dims1</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
493
+ <span class="ruby-identifier">shape1</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
494
+ <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">shape</span>.<span class="ruby-identifier">each_with_index</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
495
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">dims</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">i</span>)
496
+ <span class="ruby-identifier">n_lost</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">s</span>
497
+ <span class="ruby-keyword">else</span>
498
+ <span class="ruby-identifier">n</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">s</span>
499
+ <span class="ruby-identifier">dims1</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">i</span>
500
+ <span class="ruby-identifier">shape1</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">s</span>
501
+ <span class="ruby-keyword">end</span>
502
+ }
503
+ <span class="ruby-identifier">new_grid</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-string">&quot;@grid&quot;</span>).<span class="ruby-identifier">delete_axes</span>(<span class="ruby-identifier">dims</span>, <span class="ruby-string">&quot;covariance matrix&quot;</span>).<span class="ruby-identifier">copy</span>
504
+ <span class="ruby-identifier">new_index</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">sint</span>(*<span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">shape</span>).<span class="ruby-identifier">indgen</span>
505
+ <span class="ruby-identifier">index</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">object</span>(<span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">rank</span>)
506
+ <span class="ruby-identifier">index</span>[<span class="ruby-identifier">dims</span>] = <span class="ruby-keyword">true</span>
507
+
508
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">w</span> = (<span class="ruby-identifier">opts</span>[<span class="ruby-value">:weight</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;weight&quot;</span>])
509
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">GPhys</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">w</span>
510
+ <span class="ruby-identifier">w</span> = <span class="ruby-identifier">w</span>.<span class="ruby-identifier">val</span>
511
+ <span class="ruby-keyword">end</span>
512
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">NArray</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">w</span>
513
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;weight must be NArray of GPhys&quot;</span>
514
+ <span class="ruby-keyword">end</span>
515
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">w</span>.<span class="ruby-identifier">shape</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">shape</span>
516
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;shape of weight is invalid&quot;</span>
517
+ <span class="ruby-keyword">end</span>
518
+ <span class="ruby-identifier">w</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">w</span>.<span class="ruby-identifier">mean</span>
519
+ <span class="ruby-identifier">w</span>.<span class="ruby-identifier">reshape!</span>(<span class="ruby-identifier">n</span>)
520
+ <span class="ruby-keyword">else</span>
521
+ <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-value">:disable_weight</span>]<span class="ruby-operator">||</span><span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;disable_weight&quot;</span>]) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp">/^lon/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">coord</span>(<span class="ruby-value">0</span>).<span class="ruby-identifier">name</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp">/^lat/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">coord</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">name</span>
522
+ <span class="ruby-identifier">rad</span> = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">Units</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;radian&quot;</span>)
523
+ <span class="ruby-identifier">nlon</span> = <span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">coord</span>(<span class="ruby-value">0</span>).<span class="ruby-identifier">length</span>
524
+ <span class="ruby-identifier">lat</span> = <span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">coord</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">convert_units</span>(<span class="ruby-identifier">rad</span>).<span class="ruby-identifier">val</span>
525
+ <span class="ruby-identifier">w</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">lat</span>.<span class="ruby-identifier">typecode</span>,<span class="ruby-identifier">nlon</span>).<span class="ruby-identifier">fill!</span>(<span class="ruby-value">1</span>) * <span class="ruby-constant">NMath</span><span class="ruby-operator">::</span><span class="ruby-identifier">cos</span>(<span class="ruby-identifier">lat</span>).<span class="ruby-identifier">reshape</span>(<span class="ruby-value">1</span>,<span class="ruby-identifier">lat</span>.<span class="ruby-identifier">length</span>)
526
+ <span class="ruby-identifier">w</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">w</span>.<span class="ruby-identifier">mean</span>
527
+ <span class="ruby-identifier">w</span>.<span class="ruby-identifier">reshape!</span>(<span class="ruby-identifier">n</span>)
528
+ <span class="ruby-keyword">else</span>
529
+ <span class="ruby-identifier">w</span> = <span class="ruby-keyword">nil</span>
530
+ <span class="ruby-keyword">end</span>
531
+ <span class="ruby-keyword">end</span>
532
+
533
+ <span class="ruby-identifier">ary</span> = <span class="ruby-constant">NArrayMiss</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">typecode</span>, <span class="ruby-identifier">n_lost</span>, <span class="ruby-identifier">n</span>)
534
+ <span class="ruby-identifier">ind_rank</span> = <span class="ruby-identifier">dims1</span>.<span class="ruby-identifier">length</span>
535
+ <span class="ruby-identifier">ind</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ind_rank</span>,<span class="ruby-value">0</span>)
536
+ <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n1</span><span class="ruby-operator">|</span>
537
+ <span class="ruby-identifier">index</span>[<span class="ruby-identifier">dims1</span>] = <span class="ruby-identifier">ind</span>
538
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">gphys</span>[*<span class="ruby-identifier">index</span>].<span class="ruby-identifier">val</span>
539
+ <span class="ruby-identifier">val</span>.<span class="ruby-identifier">reshape!</span>(<span class="ruby-identifier">n_lost</span>)
540
+ <span class="ruby-identifier">val</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">mean</span>
541
+ <span class="ruby-identifier">ary</span>[<span class="ruby-keyword">true</span>,<span class="ruby-identifier">n1</span>] = <span class="ruby-identifier">val</span>
542
+ <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">n1</span><span class="ruby-operator">==</span><span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
543
+ <span class="ruby-identifier">ind</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
544
+ <span class="ruby-identifier">ind_rank</span>.<span class="ruby-identifier">times</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
545
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">ind</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">shape1</span>[<span class="ruby-identifier">i</span>]
546
+ <span class="ruby-identifier">ind</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-value">0</span>
547
+ <span class="ruby-identifier">ind</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
548
+ <span class="ruby-keyword">else</span>
549
+ <span class="ruby-keyword">break</span>
550
+ <span class="ruby-keyword">end</span>
551
+ }
552
+ }
553
+ <span class="ruby-identifier">ary</span>.<span class="ruby-identifier">mul!</span>(<span class="ruby-identifier">w</span>.<span class="ruby-identifier">reshape</span>(<span class="ruby-value">1</span>,<span class="ruby-identifier">n</span>)) <span class="ruby-keyword">if</span> <span class="ruby-identifier">w</span>
554
+
555
+
556
+ <span class="ruby-identifier">nmodes</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:nmodes</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;nmodes&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">n</span>
557
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">@@EOF_engin</span>
558
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;ssl2&quot;</span>
559
+ <span class="ruby-identifier">print</span> <span class="ruby-string">&quot;start calc covariance matrix\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
560
+ <span class="ruby-identifier">nary</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">typecode</span>,<span class="ruby-identifier">n</span>*(<span class="ruby-identifier">n</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">/</span><span class="ruby-value">2</span>)
561
+ <span class="ruby-identifier">nn</span> = <span class="ruby-value">0</span>
562
+ <span class="ruby-identifier">total_var</span> = <span class="ruby-value">0</span>
563
+ <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n0</span><span class="ruby-operator">|</span>
564
+ <span class="ruby-keyword">for</span> <span class="ruby-identifier">n1</span> <span class="ruby-keyword">in</span> <span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>
565
+ <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">nn</span>] = <span class="ruby-identifier">ary</span>[<span class="ruby-identifier">n0</span>].<span class="ruby-identifier">mul_add</span>(<span class="ruby-identifier">ary</span>[<span class="ruby-identifier">n1</span>],<span class="ruby-value">0</span>)<span class="ruby-operator">/</span>(<span class="ruby-identifier">n_lost</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)
566
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">n1</span><span class="ruby-operator">==</span><span class="ruby-identifier">n0</span>
567
+ <span class="ruby-identifier">total_var</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">nn</span>]
568
+ <span class="ruby-keyword">end</span>
569
+ <span class="ruby-identifier">nn</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
570
+ <span class="ruby-keyword">end</span>
571
+ }
572
+ <span class="ruby-identifier">ary</span> = <span class="ruby-keyword">nil</span> <span class="ruby-comment"># for GC</span>
573
+ <span class="ruby-identifier">print</span> <span class="ruby-string">&quot;start calc eigen vector\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
574
+ <span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span> = <span class="ruby-constant">SSL2</span>.<span class="ruby-identifier">seig2</span>(<span class="ruby-identifier">nary</span>,<span class="ruby-identifier">nmodes</span>)
575
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;lapack&quot;</span>
576
+ <span class="ruby-identifier">print</span> <span class="ruby-string">&quot;start calc covariance matrix\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
577
+ <span class="ruby-identifier">nary</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">typecode</span>,<span class="ruby-identifier">n</span>,<span class="ruby-identifier">n</span>)
578
+ <span class="ruby-identifier">total_var</span> = <span class="ruby-value">0.0</span>
579
+ <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n0</span><span class="ruby-operator">|</span>
580
+ <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>,<span class="ruby-identifier">n0</span>] = (<span class="ruby-identifier">ary</span>[<span class="ruby-keyword">true</span>,<span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>].<span class="ruby-identifier">mul_add</span>(<span class="ruby-identifier">ary</span>[<span class="ruby-keyword">true</span>,<span class="ruby-identifier">n0</span>],<span class="ruby-value">0</span>)<span class="ruby-operator">/</span>(<span class="ruby-identifier">n_lost</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)).<span class="ruby-identifier">get_array!</span>
581
+ <span class="ruby-identifier">total_var</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">n0</span>,<span class="ruby-identifier">n0</span>]
582
+ }
583
+ <span class="ruby-identifier">ary</span> = <span class="ruby-keyword">nil</span> <span class="ruby-comment"># for GC</span>
584
+ <span class="ruby-identifier">print</span> <span class="ruby-string">&quot;start calc eigen vector\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
585
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">nary</span>.<span class="ruby-identifier">typecode</span>
586
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">NArray</span><span class="ruby-operator">::</span><span class="ruby-constant">DFLOAT</span>
587
+ <span class="ruby-identifier">m</span>, <span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span>, <span class="ruby-identifier">isuppz</span>, <span class="ruby-identifier">work</span>, <span class="ruby-identifier">iwork</span>, <span class="ruby-identifier">info</span>, = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">Lapack</span>.<span class="ruby-identifier">dsyevr</span>(<span class="ruby-string">&quot;V&quot;</span>, <span class="ruby-string">&quot;I&quot;</span>, <span class="ruby-string">&quot;L&quot;</span>, <span class="ruby-identifier">nary</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-identifier">nmodes</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>, <span class="ruby-identifier">n</span>, <span class="ruby-value">0.0</span>, <span class="ruby-value">-1</span>, <span class="ruby-value">-1</span>)
588
+ <span class="ruby-identifier">m</span>, <span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span>, = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">Lapack</span>.<span class="ruby-identifier">dsyevr</span>(<span class="ruby-string">&quot;V&quot;</span>, <span class="ruby-string">&quot;I&quot;</span>, <span class="ruby-string">&quot;L&quot;</span>, <span class="ruby-identifier">nary</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-identifier">nmodes</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>, <span class="ruby-identifier">n</span>, <span class="ruby-value">0.0</span>, <span class="ruby-identifier">work</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">iwork</span>[<span class="ruby-value">0</span>])
589
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">NArray</span><span class="ruby-operator">::</span><span class="ruby-constant">SFLOAT</span>
590
+ <span class="ruby-identifier">m</span>, <span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span>, <span class="ruby-identifier">isuppz</span>, <span class="ruby-identifier">work</span>, <span class="ruby-identifier">iwork</span>, <span class="ruby-identifier">info</span>, = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">Lapack</span>.<span class="ruby-identifier">ssyevr</span>(<span class="ruby-string">&quot;V&quot;</span>, <span class="ruby-string">&quot;I&quot;</span>, <span class="ruby-string">&quot;L&quot;</span>, <span class="ruby-identifier">nary</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-identifier">nmodes</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>, <span class="ruby-identifier">n</span>, <span class="ruby-value">0.0</span>, <span class="ruby-value">-1</span>, <span class="ruby-value">-1</span>)
591
+ <span class="ruby-identifier">m</span>, <span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span>, = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">Lapack</span>.<span class="ruby-identifier">ssyevr</span>(<span class="ruby-string">&quot;V&quot;</span>, <span class="ruby-string">&quot;I&quot;</span>, <span class="ruby-string">&quot;L&quot;</span>, <span class="ruby-identifier">nary</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">n</span><span class="ruby-operator">-</span><span class="ruby-identifier">nmodes</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>, <span class="ruby-identifier">n</span>, <span class="ruby-value">0.0</span>, <span class="ruby-identifier">work</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">iwork</span>[<span class="ruby-value">0</span>])
592
+ <span class="ruby-keyword">end</span>
593
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">-1</span><span class="ruby-operator">..</span><span class="ruby-value">0</span>]
594
+ <span class="ruby-identifier">vec</span> = <span class="ruby-identifier">vec</span>[<span class="ruby-keyword">true</span>,<span class="ruby-value">-1</span><span class="ruby-operator">..</span><span class="ruby-value">0</span>]
595
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;gsl&quot;</span>
596
+ <span class="ruby-identifier">print</span> <span class="ruby-string">&quot;start calc covariance matrix\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
597
+ <span class="ruby-identifier">nary</span> = <span class="ruby-constant">NArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">typecode</span>,<span class="ruby-identifier">n</span>,<span class="ruby-identifier">n</span>)
598
+ <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n0</span><span class="ruby-operator">|</span>
599
+ <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>,<span class="ruby-identifier">n0</span>] = (<span class="ruby-identifier">ary</span>[<span class="ruby-keyword">true</span>,<span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>].<span class="ruby-identifier">mul_add</span>(<span class="ruby-identifier">ary</span>[<span class="ruby-keyword">true</span>,<span class="ruby-identifier">n0</span>],<span class="ruby-value">0</span>)<span class="ruby-operator">/</span>(<span class="ruby-identifier">n_lost</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)).<span class="ruby-identifier">get_array!</span>
600
+ <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">n0</span>,<span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>] = <span class="ruby-identifier">nary</span>[<span class="ruby-identifier">n0</span><span class="ruby-operator">...</span><span class="ruby-identifier">n</span>,<span class="ruby-identifier">n0</span>]
601
+ }
602
+ <span class="ruby-identifier">ary</span> = <span class="ruby-keyword">nil</span> <span class="ruby-comment"># for GC</span>
603
+ <span class="ruby-identifier">print</span> <span class="ruby-string">&quot;start calc eigen vector\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
604
+ <span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span> = <span class="ruby-constant">GSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Eigen</span><span class="ruby-operator">::</span><span class="ruby-identifier">symmv</span>(<span class="ruby-identifier">nary</span>.<span class="ruby-identifier">to_gm</span>)
605
+ <span class="ruby-constant">GSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Eigen</span>.<span class="ruby-identifier">symmv_sort</span>(<span class="ruby-identifier">val</span>, <span class="ruby-identifier">vec</span>, <span class="ruby-constant">GSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Eigen</span><span class="ruby-operator">::</span><span class="ruby-constant">SORT_VAL_DESC</span>)
606
+ <span class="ruby-identifier">vec</span> = <span class="ruby-identifier">vec</span>.<span class="ruby-identifier">to_na</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">nmodes</span>,<span class="ruby-keyword">true</span>].<span class="ruby-identifier">transpose</span>(<span class="ruby-value">1</span>,<span class="ruby-value">0</span>)
607
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">to_na</span>
608
+ <span class="ruby-identifier">total_var</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">sum</span>
609
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">nmodes</span>]
610
+ <span class="ruby-keyword">end</span>
611
+
612
+ <span class="ruby-identifier">axes</span> = <span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-string">'@axes'</span>)
613
+ <span class="ruby-identifier">axis_order</span> = <span class="ruby-constant">Axis</span>.<span class="ruby-identifier">new</span>
614
+ <span class="ruby-identifier">axis_order</span>.<span class="ruby-identifier">pos</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">NArray</span>.<span class="ruby-identifier">sint</span>(<span class="ruby-identifier">nmodes</span>).<span class="ruby-identifier">indgen</span>(<span class="ruby-value">1</span>),
615
+ {}, <span class="ruby-string">&quot;mode&quot;</span>)
616
+ <span class="ruby-identifier">axes</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">axis_order</span>
617
+ <span class="ruby-identifier">new_grid</span> = <span class="ruby-constant">Grid</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">axes</span>)
618
+ <span class="ruby-identifier">vec</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">w</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">w</span>
619
+ <span class="ruby-identifier">vec</span>.<span class="ruby-identifier">reshape!</span>(*<span class="ruby-identifier">new_grid</span>.<span class="ruby-identifier">shape</span>)
620
+ <span class="ruby-identifier">vec</span> <span class="ruby-operator">*=</span> <span class="ruby-constant">NMath</span><span class="ruby-operator">::</span><span class="ruby-identifier">sqrt</span>( <span class="ruby-identifier">val</span>.<span class="ruby-identifier">reshape</span>( *([<span class="ruby-value">1</span>]*(<span class="ruby-identifier">axes</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)<span class="ruby-operator">+</span>[<span class="ruby-identifier">nmodes</span>]) ) )
621
+ <span class="ruby-identifier">va_eof</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">vec</span>,
622
+ {<span class="ruby-string">&quot;long_name&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;EOF vector&quot;</span>,<span class="ruby-string">&quot;units&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">units</span>.<span class="ruby-identifier">to_s</span> },
623
+ <span class="ruby-string">&quot;EOF&quot;</span>)
624
+ <span class="ruby-identifier">eof</span> = <span class="ruby-constant">GPhys</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">new_grid</span>, <span class="ruby-identifier">va_eof</span>)
625
+
626
+ <span class="ruby-identifier">va_rate</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">val</span>.<span class="ruby-identifier">div!</span>(<span class="ruby-identifier">total_var</span>),
627
+ {<span class="ruby-string">&quot;long_name&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;EOF contribution rate&quot;</span>, <span class="ruby-string">&quot;units&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;1&quot;</span> },
628
+ <span class="ruby-string">&quot;rate&quot;</span>)
629
+ <span class="ruby-identifier">rate</span> = <span class="ruby-constant">GPhys</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Grid</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">axis_order</span>), <span class="ruby-identifier">va_rate</span>)
630
+
631
+ <span class="ruby-keyword">return</span> [<span class="ruby-identifier">eof</span>, <span class="ruby-identifier">rate</span>]
632
+ <span class="ruby-keyword">end</span></pre>
633
+ </div><!-- eof-source -->
634
+
635
+ </div>
636
+
637
+
638
+
639
+
640
+ </div><!-- eof-method -->
641
+
642
+
643
+ <div id="eof2-method" class="method-detail ">
644
+ <a name="method-i-eof2"></a>
645
+
646
+
647
+ <div class="method-heading">
648
+ <span class="method-name">eof2</span><span
649
+ class="method-args">(gphys1, gphys2, *args)</span>
650
+ <span class="method-click-advice">click to toggle source</span>
651
+ </div>
652
+
653
+
654
+ <div class="method-description">
655
+
656
+
657
+
658
+
659
+
660
+ <div class="method-source-code" id="eof2-source">
661
+ <pre>
662
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/eof.rb, line 209</span>
663
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">eof2</span>(<span class="ruby-identifier">gphys1</span>, <span class="ruby-identifier">gphys2</span>, *<span class="ruby-identifier">args</span>)
664
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">-1</span>]
665
+ <span class="ruby-identifier">opts</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">-1</span>]
666
+ <span class="ruby-keyword">else</span>
667
+ <span class="ruby-identifier">opts</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
668
+ <span class="ruby-keyword">end</span>
669
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;The 1st arg must be a GPhys of rank 1: arg1 = #{gphys1.inspect}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">rank</span><span class="ruby-operator">==</span><span class="ruby-value">1</span>
670
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;The 2nd arg must be a GPhys of rank 1: arg2 = #{gphys2.inspect}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gphys2</span>.<span class="ruby-identifier">rank</span><span class="ruby-operator">==</span><span class="ruby-value">1</span>
671
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;The 1st and 2nd args must have the same length: #{gphys1.length}!=#{gphys2.length}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gphys2</span>.<span class="ruby-identifier">rank</span><span class="ruby-operator">==</span><span class="ruby-value">1</span>
672
+ <span class="ruby-identifier">nam</span> = <span class="ruby-constant">NArrayMiss</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">typecode</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">length</span>)
673
+ <span class="ruby-identifier">nam</span>[<span class="ruby-value">0</span>,<span class="ruby-keyword">true</span>] = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">val</span>
674
+ <span class="ruby-identifier">nam</span>[<span class="ruby-value">1</span>,<span class="ruby-keyword">true</span>] = <span class="ruby-identifier">gphys2</span>.<span class="ruby-identifier">val</span>
675
+ <span class="ruby-identifier">gphys</span> = <span class="ruby-constant">GPhys</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Grid</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Axis</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">set_pos</span>(<span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">NArray</span>[<span class="ruby-value">0</span>,<span class="ruby-value">1</span>],{},<span class="ruby-string">&quot;var&quot;</span>)),
676
+ <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">axis</span>(<span class="ruby-value">0</span>)),
677
+ <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">nam</span>,<span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">attr_copy</span>,<span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">name</span>))
678
+ <span class="ruby-identifier">eof</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-value">1</span>, <span class="ruby-identifier">opts</span>)
679
+ <span class="ruby-keyword">end</span></pre>
680
+ </div><!-- eof2-source -->
681
+
682
+ </div>
683
+
684
+
685
+
686
+
687
+ </div><!-- eof2-method -->
688
+
689
+
690
+ <div id="histogram-method" class="method-detail ">
691
+ <a name="method-i-histogram"></a>
692
+
693
+
694
+ <div class="method-heading">
695
+ <span class="method-name">histogram</span><span
696
+ class="method-args">(gphys0,opts=Hash.new)</span>
697
+ <span class="method-click-advice">click to toggle source</span>
698
+ </div>
699
+
700
+
701
+ <div class="method-description">
702
+
703
+
704
+
705
+
706
+
707
+ <div class="method-source-code" id="histogram-source">
708
+ <pre>
709
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/histogram.rb, line 15</span>
710
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">histogram</span>(<span class="ruby-identifier">gphys0</span>,<span class="ruby-identifier">opts</span>=<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>)
711
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">HistogramGSL</span>
712
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gsl is necessary to use this method&quot;</span>
713
+ <span class="ruby-keyword">end</span>
714
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">GPhys</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">gphys0</span>
715
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gphys0 (1st arg) must be GPhys&quot;</span>
716
+ <span class="ruby-keyword">end</span>
717
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">opts</span>
718
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;opts (2nd arg) must be Hash&quot;</span>
719
+ <span class="ruby-keyword">end</span>
720
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;bins&quot;</span>]
721
+ <span class="ruby-identifier">bins</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;bins&quot;</span>]
722
+ <span class="ruby-keyword">unless</span> (<span class="ruby-identifier">bins</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArray</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">bins</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>))
723
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">TypeError</span>, <span class="ruby-string">&quot;option 'bins' must be Array or NArray&quot;</span>)
724
+ <span class="ruby-keyword">end</span>
725
+ <span class="ruby-identifier">bins</span> = <span class="ruby-identifier">bins</span>.<span class="ruby-identifier">to_gslv</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">bins</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">NArray</span>)
726
+ <span class="ruby-identifier">hist</span> = <span class="ruby-constant">GSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Histogram</span>.<span class="ruby-identifier">alloc</span>(<span class="ruby-identifier">bins</span>)
727
+ <span class="ruby-keyword">else</span>
728
+ <span class="ruby-identifier">nbins</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;nbins&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">total</span><span class="ruby-operator">/</span><span class="ruby-value">500</span>
729
+ <span class="ruby-identifier">nbins</span> = <span class="ruby-value">10</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">nbins</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">10</span>
730
+ <span class="ruby-identifier">min</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;min&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">min</span>.<span class="ruby-identifier">val</span>
731
+ <span class="ruby-identifier">max</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;max&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">max</span>.<span class="ruby-identifier">val</span>
732
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">log_bins</span> = (<span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;log_bins&quot;</span>] <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">min</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>))
733
+ <span class="ruby-identifier">min</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log10</span>(<span class="ruby-identifier">min</span>)
734
+ <span class="ruby-identifier">max</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log10</span>(<span class="ruby-identifier">max</span>)
735
+ <span class="ruby-keyword">end</span>
736
+ <span class="ruby-identifier">hist</span> = <span class="ruby-constant">GSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Histogram</span>.<span class="ruby-identifier">alloc</span>(<span class="ruby-identifier">nbins</span>,[<span class="ruby-identifier">min</span>,<span class="ruby-identifier">max</span>])
737
+ <span class="ruby-keyword">end</span>
738
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">val</span>
739
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">get_array!</span>[<span class="ruby-identifier">val</span>.<span class="ruby-identifier">get_mask!</span>] <span class="ruby-keyword">if</span> <span class="ruby-constant">NArrayMiss</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">val</span>
740
+ <span class="ruby-identifier">val</span> = <span class="ruby-constant">NMath</span>.<span class="ruby-identifier">log10</span>(<span class="ruby-identifier">val</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">log_bins</span>
741
+ <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">increment</span>(<span class="ruby-identifier">val</span>)
742
+
743
+ <span class="ruby-identifier">bounds</span> = <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">range</span>.<span class="ruby-identifier">to_na</span>
744
+ <span class="ruby-identifier">bounds</span> = <span class="ruby-value">10</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">bounds</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">log_bins</span>
745
+ <span class="ruby-identifier">center</span> = (<span class="ruby-identifier">bounds</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">bounds</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])<span class="ruby-operator">/</span><span class="ruby-value">2</span>
746
+ <span class="ruby-identifier">cell_width</span> = (<span class="ruby-identifier">bounds</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] <span class="ruby-operator">-</span> <span class="ruby-identifier">bounds</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>]) <span class="ruby-operator">/</span> <span class="ruby-value">2</span>
747
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">name</span>
748
+ <span class="ruby-identifier">attr</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">attr_copy</span>
749
+ <span class="ruby-identifier">bounds</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">bounds</span>, <span class="ruby-identifier">attr</span>, <span class="ruby-identifier">name</span>)
750
+ <span class="ruby-identifier">center</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">center</span>, <span class="ruby-identifier">attr</span>, <span class="ruby-identifier">name</span>)
751
+ <span class="ruby-identifier">axis</span> = <span class="ruby-constant">Axis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">true</span>)
752
+ <span class="ruby-identifier">axis</span>.<span class="ruby-identifier">set_cell</span>(<span class="ruby-identifier">center</span>, <span class="ruby-identifier">bounds</span>, <span class="ruby-identifier">name</span>)
753
+ <span class="ruby-identifier">axis</span>.<span class="ruby-identifier">set_pos_to_center</span>
754
+
755
+ <span class="ruby-identifier">bin</span> = <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">bin</span>.<span class="ruby-identifier">to_na</span>
756
+ <span class="ruby-identifier">bin</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">cell_width</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;log_bins&quot;</span>]
757
+ <span class="ruby-identifier">bin</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">bin</span>,
758
+ {<span class="ruby-string">&quot;long_name&quot;</span> =<span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">log_bins</span> <span class="ruby-operator">?</span> <span class="ruby-string">&quot;number per unit bin width&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-string">&quot;number in bins&quot;</span>), <span class="ruby-string">&quot;units&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;1&quot;</span>},
759
+ <span class="ruby-string">&quot;bin&quot;</span>)
760
+ <span class="ruby-identifier">new_gphys</span> = <span class="ruby-constant">GPhys</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Grid</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">axis</span>), <span class="ruby-identifier">bin</span>)
761
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;mean&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">mean</span>])
762
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;standard_deviation&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">sigma</span>])
763
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">new_gphys</span>
764
+ <span class="ruby-keyword">end</span></pre>
765
+ </div><!-- histogram-source -->
766
+
767
+ </div>
768
+
769
+
770
+ <div class="aliases">
771
+ Also aliased as: <a href="GAnalysis.html#method-i-histogram1D">histogram1D</a>
772
+ </div>
773
+
774
+
775
+
776
+ </div><!-- histogram-method -->
777
+
778
+
779
+ <div id="histogram1D-method" class="method-detail method-alias">
780
+ <a name="method-i-histogram1D"></a>
781
+
782
+
783
+ <div class="method-heading">
784
+ <span class="method-name">histogram1D</span><span
785
+ class="method-args">(gphys0,opts=Hash.new)</span>
786
+ <span class="method-click-advice">click to toggle source</span>
787
+ </div>
788
+
789
+
790
+ <div class="method-description">
791
+
792
+
793
+
794
+
795
+
796
+ </div>
797
+
798
+
799
+
800
+
801
+ <div class="aliases">
802
+ Alias for: <a href="GAnalysis.html#method-i-histogram">histogram</a>
803
+ </div>
804
+
805
+ </div><!-- histogram1D-method -->
806
+
807
+
808
+ <div id="histogram2D-method" class="method-detail ">
809
+ <a name="method-i-histogram2D"></a>
810
+
811
+
812
+ <div class="method-heading">
813
+ <span class="method-name">histogram2D</span><span
814
+ class="method-args">(gphys0, gphys1, opts=Hash.new)</span>
815
+ <span class="method-click-advice">click to toggle source</span>
816
+ </div>
817
+
818
+
819
+ <div class="method-description">
820
+
821
+
822
+
823
+
824
+
825
+ <div class="method-source-code" id="histogram2D-source">
826
+ <pre>
827
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/histogram.rb, line 72</span>
828
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">histogram2D</span>(<span class="ruby-identifier">gphys0</span>, <span class="ruby-identifier">gphys1</span>, <span class="ruby-identifier">opts</span>=<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>)
829
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">HistogramGSL</span>
830
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gsl is necessary to use this method&quot;</span>
831
+ <span class="ruby-keyword">end</span>
832
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">GPhys</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">gphys0</span>
833
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gphys0 (1st arg) must be GPhys&quot;</span>
834
+ <span class="ruby-keyword">end</span>
835
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">GPhys</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">gphys1</span>
836
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;gphys1 (2nd arg) must be GPhys&quot;</span>
837
+ <span class="ruby-keyword">end</span>
838
+ <span class="ruby-keyword">unless</span> <span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">opts</span>
839
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;opts (3nd arg) must be Hash&quot;</span>
840
+ <span class="ruby-keyword">end</span>
841
+
842
+ <span class="ruby-identifier">nbins0</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;nbins0&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">total</span><span class="ruby-operator">/</span><span class="ruby-value">500</span>
843
+ <span class="ruby-identifier">nbins0</span> = <span class="ruby-value">10</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">nbins0</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">10</span>
844
+ <span class="ruby-identifier">nbins1</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;nbins1&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">total</span><span class="ruby-operator">/</span><span class="ruby-value">500</span>
845
+ <span class="ruby-identifier">nbins1</span> = <span class="ruby-value">10</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">nbins1</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">10</span>
846
+
847
+ <span class="ruby-identifier">min0</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;min0&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">min</span>.<span class="ruby-identifier">val</span>
848
+ <span class="ruby-identifier">max0</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;max0&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">max</span>.<span class="ruby-identifier">val</span>
849
+ <span class="ruby-identifier">min1</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;min1&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">min</span>.<span class="ruby-identifier">val</span>
850
+ <span class="ruby-identifier">max1</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-string">&quot;max1&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">max</span>.<span class="ruby-identifier">val</span>
851
+
852
+ <span class="ruby-identifier">hist</span> = <span class="ruby-constant">GSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Histogram2d</span>.<span class="ruby-identifier">alloc</span>(<span class="ruby-identifier">nbins0</span>,[<span class="ruby-identifier">min0</span>,<span class="ruby-identifier">max0</span>],<span class="ruby-identifier">nbins1</span>,[<span class="ruby-identifier">min1</span>,<span class="ruby-identifier">max1</span>])
853
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">val</span>
854
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">val</span>
855
+ <span class="ruby-identifier">mask</span> = <span class="ruby-keyword">nil</span>
856
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">NArrayMiss</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">val0</span>
857
+ <span class="ruby-identifier">mask</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">get_mask!</span>
858
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">val0</span>.<span class="ruby-identifier">get_array!</span>
859
+ <span class="ruby-keyword">end</span>
860
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">NArrayMiss</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">val1</span>
861
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">mask</span>
862
+ <span class="ruby-identifier">mask</span> = <span class="ruby-identifier">mask</span> &amp; <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_mask!</span>
863
+ <span class="ruby-keyword">else</span>
864
+ <span class="ruby-identifier">mask</span> = <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_mask!</span>
865
+ <span class="ruby-keyword">end</span>
866
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">get_array!</span>
867
+ <span class="ruby-keyword">end</span>
868
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">mask</span>
869
+ <span class="ruby-identifier">val0</span> = <span class="ruby-identifier">val0</span>[<span class="ruby-identifier">mask</span>]
870
+ <span class="ruby-identifier">val1</span> = <span class="ruby-identifier">val1</span>[<span class="ruby-identifier">mask</span>]
871
+ <span class="ruby-keyword">end</span>
872
+ <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">increment</span>(<span class="ruby-identifier">val0</span>.<span class="ruby-identifier">to_gslv</span>, <span class="ruby-identifier">val1</span>.<span class="ruby-identifier">to_gslv</span>)
873
+
874
+ <span class="ruby-identifier">bounds0</span> = <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">xrange</span>.<span class="ruby-identifier">to_na</span>
875
+ <span class="ruby-identifier">center0</span> = (<span class="ruby-identifier">bounds0</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">bounds0</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])<span class="ruby-operator">/</span><span class="ruby-value">2</span>
876
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">name</span>
877
+ <span class="ruby-identifier">attr</span> = <span class="ruby-identifier">gphys0</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">attr_copy</span>
878
+ <span class="ruby-identifier">bounds0</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">bounds0</span>, <span class="ruby-identifier">attr</span>, <span class="ruby-identifier">name</span>)
879
+ <span class="ruby-identifier">center0</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">center0</span>, <span class="ruby-identifier">attr</span>, <span class="ruby-identifier">name</span>)
880
+ <span class="ruby-identifier">axis0</span> = <span class="ruby-constant">Axis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">true</span>)
881
+ <span class="ruby-identifier">axis0</span>.<span class="ruby-identifier">set_cell</span>(<span class="ruby-identifier">center0</span>, <span class="ruby-identifier">bounds0</span>, <span class="ruby-identifier">name</span>)
882
+ <span class="ruby-identifier">axis0</span>.<span class="ruby-identifier">set_pos_to_center</span>
883
+
884
+ <span class="ruby-identifier">bounds1</span> = <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">yrange</span>.<span class="ruby-identifier">to_na</span>
885
+ <span class="ruby-identifier">center1</span> = (<span class="ruby-identifier">bounds1</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>]<span class="ruby-operator">+</span><span class="ruby-identifier">bounds1</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>])<span class="ruby-operator">/</span><span class="ruby-value">2</span>
886
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">name</span>
887
+ <span class="ruby-identifier">attr</span> = <span class="ruby-identifier">gphys1</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">attr_copy</span>
888
+ <span class="ruby-identifier">bounds1</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">bounds1</span>, <span class="ruby-identifier">attr</span>, <span class="ruby-identifier">name</span>)
889
+ <span class="ruby-identifier">center1</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">center1</span>, <span class="ruby-identifier">attr</span>, <span class="ruby-identifier">name</span>)
890
+ <span class="ruby-identifier">axis1</span> = <span class="ruby-constant">Axis</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">true</span>)
891
+ <span class="ruby-identifier">axis1</span>.<span class="ruby-identifier">set_cell</span>(<span class="ruby-identifier">center1</span>, <span class="ruby-identifier">bounds1</span>, <span class="ruby-identifier">name</span>)
892
+ <span class="ruby-identifier">axis1</span>.<span class="ruby-identifier">set_pos_to_center</span>
893
+
894
+ <span class="ruby-identifier">bin</span> = <span class="ruby-identifier">hist</span>.<span class="ruby-identifier">bin</span>.<span class="ruby-identifier">to_na</span>.<span class="ruby-identifier">reshape!</span>(<span class="ruby-identifier">nbins1</span>,<span class="ruby-identifier">nbins0</span>).<span class="ruby-identifier">transpose</span>(<span class="ruby-value">1</span>,<span class="ruby-value">0</span>)
895
+ <span class="ruby-identifier">bin</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">bin</span>,
896
+ {<span class="ruby-string">&quot;long_name&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;number in bins&quot;</span>, <span class="ruby-string">&quot;units&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;1&quot;</span>},
897
+ <span class="ruby-string">&quot;bin&quot;</span>)
898
+ <span class="ruby-identifier">new_gphys</span> = <span class="ruby-constant">GPhys</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Grid</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">axis0</span>,<span class="ruby-identifier">axis1</span>), <span class="ruby-identifier">bin</span>)
899
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;mean0&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">xmean</span>])
900
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;standard_deviation0&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">xsigma</span>])
901
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;mean1&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">ymean</span>])
902
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;standard_deviation1&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">ysigma</span>])
903
+ <span class="ruby-identifier">new_gphys</span>.<span class="ruby-identifier">set_att</span>(<span class="ruby-string">&quot;covariance&quot;</span>,[<span class="ruby-identifier">hist</span>.<span class="ruby-identifier">cov</span>])
904
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">new_gphys</span>
905
+ <span class="ruby-keyword">end</span></pre>
906
+ </div><!-- histogram2D-source -->
907
+
908
+ </div>
909
+
910
+
911
+
912
+
913
+ </div><!-- histogram2D-method -->
914
+
915
+
916
+ </div><!-- public-instance-method-details -->
917
+
918
+ </div><!-- 5Buntitled-5D -->
919
+
920
+
921
+ </div><!-- documentation -->
922
+
923
+ <div id="validator-badges">
924
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
925
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
926
+ Rdoc Generator</a> 2</small>.</p>
927
+ </div>
928
+
929
+ </body>
930
+ </html>
931
+