gphys 1.2.2.1 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +8 -17
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/ChangeLog +5762 -753
- data/LICENSE.txt +30 -18
- data/Rakefile +1 -0
- data/bin/console +14 -0
- data/bin/gpcat +43 -2
- data/bin/gpcut +16 -0
- data/bin/gpvect +167 -15
- data/bin/gpview +254 -51
- data/bin/setup +7 -0
- data/dim_op.c +1220 -0
- data/doc/attribute.html +19 -0
- data/doc/attributenetcdf.html +15 -0
- data/doc/axis.html +387 -0
- data/doc/coordmapping.html +111 -0
- data/doc/coordtransform.html +36 -0
- data/doc/dclext.html +821 -0
- data/doc/derivative/gphys-derivative.html +100 -0
- data/doc/derivative/index.html +21 -0
- data/doc/derivative/index.rd +14 -0
- data/doc/derivative/math-doc/document.pdf +0 -0
- data/doc/derivative/math-doc/document.tex +158 -0
- data/doc/derivative/math-doc/document/document.css +30 -0
- data/doc/derivative/math-doc/document/document.html +57 -0
- data/doc/derivative/math-doc/document/images.aux +1 -0
- data/doc/derivative/math-doc/document/images.log +385 -0
- data/doc/derivative/math-doc/document/images.pl +186 -0
- data/doc/derivative/math-doc/document/images.tex +364 -0
- data/doc/derivative/math-doc/document/img1.png +0 -0
- data/doc/derivative/math-doc/document/img10.png +0 -0
- data/doc/derivative/math-doc/document/img11.png +0 -0
- data/doc/derivative/math-doc/document/img12.png +0 -0
- data/doc/derivative/math-doc/document/img13.png +0 -0
- data/doc/derivative/math-doc/document/img14.png +0 -0
- data/doc/derivative/math-doc/document/img15.png +0 -0
- data/doc/derivative/math-doc/document/img16.png +0 -0
- data/doc/derivative/math-doc/document/img17.png +0 -0
- data/doc/derivative/math-doc/document/img18.png +0 -0
- data/doc/derivative/math-doc/document/img19.png +0 -0
- data/doc/derivative/math-doc/document/img2.png +0 -0
- data/doc/derivative/math-doc/document/img20.png +0 -0
- data/doc/derivative/math-doc/document/img21.png +0 -0
- data/doc/derivative/math-doc/document/img22.png +0 -0
- data/doc/derivative/math-doc/document/img23.png +0 -0
- data/doc/derivative/math-doc/document/img24.png +0 -0
- data/doc/derivative/math-doc/document/img25.png +0 -0
- data/doc/derivative/math-doc/document/img26.png +0 -0
- data/doc/derivative/math-doc/document/img27.png +0 -0
- data/doc/derivative/math-doc/document/img28.png +0 -0
- data/doc/derivative/math-doc/document/img29.png +0 -0
- data/doc/derivative/math-doc/document/img3.png +0 -0
- data/doc/derivative/math-doc/document/img30.png +0 -0
- data/doc/derivative/math-doc/document/img4.png +0 -0
- data/doc/derivative/math-doc/document/img5.png +0 -0
- data/doc/derivative/math-doc/document/img6.png +0 -0
- data/doc/derivative/math-doc/document/img7.png +0 -0
- data/doc/derivative/math-doc/document/img8.png +0 -0
- data/doc/derivative/math-doc/document/img9.png +0 -0
- data/doc/derivative/math-doc/document/index.html +57 -0
- data/doc/derivative/math-doc/document/labels.pl +13 -0
- data/doc/derivative/math-doc/document/next.png +0 -0
- data/doc/derivative/math-doc/document/next_g.png +0 -0
- data/doc/derivative/math-doc/document/node1.html +238 -0
- data/doc/derivative/math-doc/document/node2.html +75 -0
- data/doc/derivative/math-doc/document/prev.png +0 -0
- data/doc/derivative/math-doc/document/prev_g.png +0 -0
- data/doc/derivative/math-doc/document/up.png +0 -0
- data/doc/derivative/math-doc/document/up_g.png +0 -0
- data/doc/derivative/numru-derivative.html +158 -0
- data/doc/ep_flux/ep_flux.html +469 -0
- data/doc/ep_flux/ggraph_on_merdional_section.html +71 -0
- data/doc/ep_flux/index.html +31 -0
- data/doc/ep_flux/index.rd +24 -0
- data/doc/ep_flux/math-doc/document.pdf +0 -0
- data/doc/ep_flux/math-doc/document.tex +2018 -0
- data/doc/ep_flux/math-doc/document/WARNINGS +1 -0
- data/doc/ep_flux/math-doc/document/contents.png +0 -0
- data/doc/ep_flux/math-doc/document/crossref.png +0 -0
- data/doc/ep_flux/math-doc/document/document.css +30 -0
- data/doc/ep_flux/math-doc/document/document.html +101 -0
- data/doc/ep_flux/math-doc/document/images.aux +1 -0
- data/doc/ep_flux/math-doc/document/images.log +1375 -0
- data/doc/ep_flux/math-doc/document/images.pl +1328 -0
- data/doc/ep_flux/math-doc/document/images.tex +1471 -0
- data/doc/ep_flux/math-doc/document/img1.png +0 -0
- data/doc/ep_flux/math-doc/document/img10.png +0 -0
- data/doc/ep_flux/math-doc/document/img100.png +0 -0
- data/doc/ep_flux/math-doc/document/img101.png +0 -0
- data/doc/ep_flux/math-doc/document/img102.png +0 -0
- data/doc/ep_flux/math-doc/document/img103.png +0 -0
- data/doc/ep_flux/math-doc/document/img104.png +0 -0
- data/doc/ep_flux/math-doc/document/img105.png +0 -0
- data/doc/ep_flux/math-doc/document/img106.png +0 -0
- data/doc/ep_flux/math-doc/document/img107.png +0 -0
- data/doc/ep_flux/math-doc/document/img108.png +0 -0
- data/doc/ep_flux/math-doc/document/img109.png +0 -0
- data/doc/ep_flux/math-doc/document/img11.png +0 -0
- data/doc/ep_flux/math-doc/document/img110.png +0 -0
- data/doc/ep_flux/math-doc/document/img111.png +0 -0
- data/doc/ep_flux/math-doc/document/img112.png +0 -0
- data/doc/ep_flux/math-doc/document/img113.png +0 -0
- data/doc/ep_flux/math-doc/document/img114.png +0 -0
- data/doc/ep_flux/math-doc/document/img115.png +0 -0
- data/doc/ep_flux/math-doc/document/img116.png +0 -0
- data/doc/ep_flux/math-doc/document/img117.png +0 -0
- data/doc/ep_flux/math-doc/document/img118.png +0 -0
- data/doc/ep_flux/math-doc/document/img119.png +0 -0
- data/doc/ep_flux/math-doc/document/img12.png +0 -0
- data/doc/ep_flux/math-doc/document/img120.png +0 -0
- data/doc/ep_flux/math-doc/document/img121.png +0 -0
- data/doc/ep_flux/math-doc/document/img122.png +0 -0
- data/doc/ep_flux/math-doc/document/img123.png +0 -0
- data/doc/ep_flux/math-doc/document/img124.png +0 -0
- data/doc/ep_flux/math-doc/document/img125.png +0 -0
- data/doc/ep_flux/math-doc/document/img126.png +0 -0
- data/doc/ep_flux/math-doc/document/img127.png +0 -0
- data/doc/ep_flux/math-doc/document/img128.png +0 -0
- data/doc/ep_flux/math-doc/document/img129.png +0 -0
- data/doc/ep_flux/math-doc/document/img13.png +0 -0
- data/doc/ep_flux/math-doc/document/img130.png +0 -0
- data/doc/ep_flux/math-doc/document/img131.png +0 -0
- data/doc/ep_flux/math-doc/document/img132.png +0 -0
- data/doc/ep_flux/math-doc/document/img133.png +0 -0
- data/doc/ep_flux/math-doc/document/img134.png +0 -0
- data/doc/ep_flux/math-doc/document/img135.png +0 -0
- data/doc/ep_flux/math-doc/document/img136.png +0 -0
- data/doc/ep_flux/math-doc/document/img137.png +0 -0
- data/doc/ep_flux/math-doc/document/img138.png +0 -0
- data/doc/ep_flux/math-doc/document/img139.png +0 -0
- data/doc/ep_flux/math-doc/document/img14.png +0 -0
- data/doc/ep_flux/math-doc/document/img140.png +0 -0
- data/doc/ep_flux/math-doc/document/img141.png +0 -0
- data/doc/ep_flux/math-doc/document/img142.png +0 -0
- data/doc/ep_flux/math-doc/document/img143.png +0 -0
- data/doc/ep_flux/math-doc/document/img144.png +0 -0
- data/doc/ep_flux/math-doc/document/img145.png +0 -0
- data/doc/ep_flux/math-doc/document/img146.png +0 -0
- data/doc/ep_flux/math-doc/document/img147.png +0 -0
- data/doc/ep_flux/math-doc/document/img148.png +0 -0
- data/doc/ep_flux/math-doc/document/img149.png +0 -0
- data/doc/ep_flux/math-doc/document/img15.png +0 -0
- data/doc/ep_flux/math-doc/document/img150.png +0 -0
- data/doc/ep_flux/math-doc/document/img151.png +0 -0
- data/doc/ep_flux/math-doc/document/img152.png +0 -0
- data/doc/ep_flux/math-doc/document/img153.png +0 -0
- data/doc/ep_flux/math-doc/document/img154.png +0 -0
- data/doc/ep_flux/math-doc/document/img155.png +0 -0
- data/doc/ep_flux/math-doc/document/img156.png +0 -0
- data/doc/ep_flux/math-doc/document/img157.png +0 -0
- data/doc/ep_flux/math-doc/document/img158.png +0 -0
- data/doc/ep_flux/math-doc/document/img159.png +0 -0
- data/doc/ep_flux/math-doc/document/img16.png +0 -0
- data/doc/ep_flux/math-doc/document/img160.png +0 -0
- data/doc/ep_flux/math-doc/document/img161.png +0 -0
- data/doc/ep_flux/math-doc/document/img162.png +0 -0
- data/doc/ep_flux/math-doc/document/img163.png +0 -0
- data/doc/ep_flux/math-doc/document/img164.png +0 -0
- data/doc/ep_flux/math-doc/document/img165.png +0 -0
- data/doc/ep_flux/math-doc/document/img166.png +0 -0
- data/doc/ep_flux/math-doc/document/img167.png +0 -0
- data/doc/ep_flux/math-doc/document/img168.png +0 -0
- data/doc/ep_flux/math-doc/document/img169.png +0 -0
- data/doc/ep_flux/math-doc/document/img17.png +0 -0
- data/doc/ep_flux/math-doc/document/img170.png +0 -0
- data/doc/ep_flux/math-doc/document/img171.png +0 -0
- data/doc/ep_flux/math-doc/document/img172.png +0 -0
- data/doc/ep_flux/math-doc/document/img173.png +0 -0
- data/doc/ep_flux/math-doc/document/img174.png +0 -0
- data/doc/ep_flux/math-doc/document/img175.png +0 -0
- data/doc/ep_flux/math-doc/document/img176.png +0 -0
- data/doc/ep_flux/math-doc/document/img177.png +0 -0
- data/doc/ep_flux/math-doc/document/img178.png +0 -0
- data/doc/ep_flux/math-doc/document/img179.png +0 -0
- data/doc/ep_flux/math-doc/document/img18.png +0 -0
- data/doc/ep_flux/math-doc/document/img180.png +0 -0
- data/doc/ep_flux/math-doc/document/img181.png +0 -0
- data/doc/ep_flux/math-doc/document/img182.png +0 -0
- data/doc/ep_flux/math-doc/document/img183.png +0 -0
- data/doc/ep_flux/math-doc/document/img184.png +0 -0
- data/doc/ep_flux/math-doc/document/img185.png +0 -0
- data/doc/ep_flux/math-doc/document/img186.png +0 -0
- data/doc/ep_flux/math-doc/document/img187.png +0 -0
- data/doc/ep_flux/math-doc/document/img188.png +0 -0
- data/doc/ep_flux/math-doc/document/img189.png +0 -0
- data/doc/ep_flux/math-doc/document/img19.png +0 -0
- data/doc/ep_flux/math-doc/document/img190.png +0 -0
- data/doc/ep_flux/math-doc/document/img191.png +0 -0
- data/doc/ep_flux/math-doc/document/img192.png +0 -0
- data/doc/ep_flux/math-doc/document/img193.png +0 -0
- data/doc/ep_flux/math-doc/document/img194.png +0 -0
- data/doc/ep_flux/math-doc/document/img195.png +0 -0
- data/doc/ep_flux/math-doc/document/img196.png +0 -0
- data/doc/ep_flux/math-doc/document/img197.png +0 -0
- data/doc/ep_flux/math-doc/document/img198.png +0 -0
- data/doc/ep_flux/math-doc/document/img199.png +0 -0
- data/doc/ep_flux/math-doc/document/img2.png +0 -0
- data/doc/ep_flux/math-doc/document/img20.png +0 -0
- data/doc/ep_flux/math-doc/document/img200.png +0 -0
- data/doc/ep_flux/math-doc/document/img21.png +0 -0
- data/doc/ep_flux/math-doc/document/img22.png +0 -0
- data/doc/ep_flux/math-doc/document/img23.png +0 -0
- data/doc/ep_flux/math-doc/document/img24.png +0 -0
- data/doc/ep_flux/math-doc/document/img25.png +0 -0
- data/doc/ep_flux/math-doc/document/img26.png +0 -0
- data/doc/ep_flux/math-doc/document/img27.png +0 -0
- data/doc/ep_flux/math-doc/document/img28.png +0 -0
- data/doc/ep_flux/math-doc/document/img29.png +0 -0
- data/doc/ep_flux/math-doc/document/img3.png +0 -0
- data/doc/ep_flux/math-doc/document/img30.png +0 -0
- data/doc/ep_flux/math-doc/document/img31.png +0 -0
- data/doc/ep_flux/math-doc/document/img32.png +0 -0
- data/doc/ep_flux/math-doc/document/img33.png +0 -0
- data/doc/ep_flux/math-doc/document/img34.png +0 -0
- data/doc/ep_flux/math-doc/document/img35.png +0 -0
- data/doc/ep_flux/math-doc/document/img36.png +0 -0
- data/doc/ep_flux/math-doc/document/img37.png +0 -0
- data/doc/ep_flux/math-doc/document/img38.png +0 -0
- data/doc/ep_flux/math-doc/document/img39.png +0 -0
- data/doc/ep_flux/math-doc/document/img4.png +0 -0
- data/doc/ep_flux/math-doc/document/img40.png +0 -0
- data/doc/ep_flux/math-doc/document/img41.png +0 -0
- data/doc/ep_flux/math-doc/document/img42.png +0 -0
- data/doc/ep_flux/math-doc/document/img43.png +0 -0
- data/doc/ep_flux/math-doc/document/img44.png +0 -0
- data/doc/ep_flux/math-doc/document/img45.png +0 -0
- data/doc/ep_flux/math-doc/document/img46.png +0 -0
- data/doc/ep_flux/math-doc/document/img47.png +0 -0
- data/doc/ep_flux/math-doc/document/img48.png +0 -0
- data/doc/ep_flux/math-doc/document/img49.png +0 -0
- data/doc/ep_flux/math-doc/document/img5.png +0 -0
- data/doc/ep_flux/math-doc/document/img50.png +0 -0
- data/doc/ep_flux/math-doc/document/img51.png +0 -0
- data/doc/ep_flux/math-doc/document/img52.png +0 -0
- data/doc/ep_flux/math-doc/document/img53.png +0 -0
- data/doc/ep_flux/math-doc/document/img54.png +0 -0
- data/doc/ep_flux/math-doc/document/img55.png +0 -0
- data/doc/ep_flux/math-doc/document/img56.png +0 -0
- data/doc/ep_flux/math-doc/document/img57.png +0 -0
- data/doc/ep_flux/math-doc/document/img58.png +0 -0
- data/doc/ep_flux/math-doc/document/img59.png +0 -0
- data/doc/ep_flux/math-doc/document/img6.png +0 -0
- data/doc/ep_flux/math-doc/document/img60.png +0 -0
- data/doc/ep_flux/math-doc/document/img61.png +0 -0
- data/doc/ep_flux/math-doc/document/img62.png +0 -0
- data/doc/ep_flux/math-doc/document/img63.png +0 -0
- data/doc/ep_flux/math-doc/document/img64.png +0 -0
- data/doc/ep_flux/math-doc/document/img65.png +0 -0
- data/doc/ep_flux/math-doc/document/img66.png +0 -0
- data/doc/ep_flux/math-doc/document/img67.png +0 -0
- data/doc/ep_flux/math-doc/document/img68.png +0 -0
- data/doc/ep_flux/math-doc/document/img69.png +0 -0
- data/doc/ep_flux/math-doc/document/img7.png +0 -0
- data/doc/ep_flux/math-doc/document/img70.png +0 -0
- data/doc/ep_flux/math-doc/document/img71.png +0 -0
- data/doc/ep_flux/math-doc/document/img72.png +0 -0
- data/doc/ep_flux/math-doc/document/img73.png +0 -0
- data/doc/ep_flux/math-doc/document/img74.png +0 -0
- data/doc/ep_flux/math-doc/document/img75.png +0 -0
- data/doc/ep_flux/math-doc/document/img76.png +0 -0
- data/doc/ep_flux/math-doc/document/img77.png +0 -0
- data/doc/ep_flux/math-doc/document/img78.png +0 -0
- data/doc/ep_flux/math-doc/document/img79.png +0 -0
- data/doc/ep_flux/math-doc/document/img8.png +0 -0
- data/doc/ep_flux/math-doc/document/img80.png +0 -0
- data/doc/ep_flux/math-doc/document/img81.png +0 -0
- data/doc/ep_flux/math-doc/document/img82.png +0 -0
- data/doc/ep_flux/math-doc/document/img83.png +0 -0
- data/doc/ep_flux/math-doc/document/img84.png +0 -0
- data/doc/ep_flux/math-doc/document/img85.png +0 -0
- data/doc/ep_flux/math-doc/document/img86.png +0 -0
- data/doc/ep_flux/math-doc/document/img87.png +0 -0
- data/doc/ep_flux/math-doc/document/img88.png +0 -0
- data/doc/ep_flux/math-doc/document/img89.png +0 -0
- data/doc/ep_flux/math-doc/document/img9.png +0 -0
- data/doc/ep_flux/math-doc/document/img90.png +0 -0
- data/doc/ep_flux/math-doc/document/img91.png +0 -0
- data/doc/ep_flux/math-doc/document/img92.png +0 -0
- data/doc/ep_flux/math-doc/document/img93.png +0 -0
- data/doc/ep_flux/math-doc/document/img94.png +0 -0
- data/doc/ep_flux/math-doc/document/img95.png +0 -0
- data/doc/ep_flux/math-doc/document/img96.png +0 -0
- data/doc/ep_flux/math-doc/document/img97.png +0 -0
- data/doc/ep_flux/math-doc/document/img98.png +0 -0
- data/doc/ep_flux/math-doc/document/img99.png +0 -0
- data/doc/ep_flux/math-doc/document/index.html +101 -0
- data/doc/ep_flux/math-doc/document/internals.pl +258 -0
- data/doc/ep_flux/math-doc/document/labels.pl +265 -0
- data/doc/ep_flux/math-doc/document/next.png +0 -0
- data/doc/ep_flux/math-doc/document/next_g.png +0 -0
- data/doc/ep_flux/math-doc/document/node1.html +104 -0
- data/doc/ep_flux/math-doc/document/node10.html +164 -0
- data/doc/ep_flux/math-doc/document/node11.html +86 -0
- data/doc/ep_flux/math-doc/document/node12.html +166 -0
- data/doc/ep_flux/math-doc/document/node13.html +897 -0
- data/doc/ep_flux/math-doc/document/node14.html +1065 -0
- data/doc/ep_flux/math-doc/document/node15.html +72 -0
- data/doc/ep_flux/math-doc/document/node16.html +81 -0
- data/doc/ep_flux/math-doc/document/node2.html +82 -0
- data/doc/ep_flux/math-doc/document/node3.html +91 -0
- data/doc/ep_flux/math-doc/document/node4.html +149 -0
- data/doc/ep_flux/math-doc/document/node5.html +330 -0
- data/doc/ep_flux/math-doc/document/node6.html +99 -0
- data/doc/ep_flux/math-doc/document/node7.html +98 -0
- data/doc/ep_flux/math-doc/document/node8.html +83 -0
- data/doc/ep_flux/math-doc/document/node9.html +140 -0
- data/doc/ep_flux/math-doc/document/prev.png +0 -0
- data/doc/ep_flux/math-doc/document/prev_g.png +0 -0
- data/doc/ep_flux/math-doc/document/up.png +0 -0
- data/doc/ep_flux/math-doc/document/up_g.png +0 -0
- data/doc/gdir.html +412 -0
- data/doc/gdir_client.html +16 -0
- data/doc/gdir_connect_ftp-like.html +61 -0
- data/doc/gdir_server.html +45 -0
- data/doc/ggraph.html +1119 -0
- data/doc/gpcat.html +45 -0
- data/doc/gpcut.html +47 -0
- data/doc/gphys.html +624 -0
- data/doc/gphys_fft.html +324 -0
- data/doc/gphys_grads_io.html +69 -0
- data/doc/gphys_grib_io.html +82 -0
- data/doc/gphys_io.html +183 -0
- data/doc/gphys_io_common.html +18 -0
- data/doc/gphys_netcdf_io.html +283 -0
- data/doc/gplist.html +24 -0
- data/doc/gpmath.html +52 -0
- data/doc/gpmaxmin.html +32 -0
- data/doc/gpprint.html +35 -0
- data/doc/gpview.html +349 -0
- data/doc/grads2nc_with_gphys.html +21 -0
- data/doc/grads_gridded.html +307 -0
- data/doc/grib.html +149 -0
- data/doc/grid.html +224 -0
- data/doc/index.html +145 -0
- data/doc/index.rd +138 -0
- data/doc/netcdf_convention.html +136 -0
- data/doc/unumeric.html +176 -0
- data/doc/update +69 -0
- data/doc/update_rdoc +8 -0
- data/doc/varray.html +299 -0
- data/doc/varraycomposite.html +67 -0
- data/ext_init.c +1 -0
- data/extconf.rb +16 -6
- data/gphys.gemspec +33 -26
- data/interpo.c +1 -1
- data/lib/numru/dclext.rb +718 -546
- data/lib/numru/derivative.rb +2 -0
- data/lib/numru/ganalysis.rb +38 -0
- data/lib/numru/ganalysis/beta_plane.rb +103 -0
- data/lib/numru/ganalysis/eof.rb +3 -2
- data/lib/numru/ganalysis/fitting.rb +559 -0
- data/lib/numru/ganalysis/histogram.rb +36 -19
- data/lib/numru/ganalysis/log_p.rb +130 -0
- data/lib/numru/ganalysis/met.rb +396 -2
- data/lib/numru/ganalysis/met_z.rb +300 -0
- data/lib/numru/ganalysis/planet.rb +17 -7
- data/lib/numru/ganalysis/qg.rb +685 -0
- data/lib/numru/ganalysis/sigma_coord.rb +90 -0
- data/lib/numru/gdir.rb +2 -1
- data/lib/numru/ggraph.rb +204 -60
- data/lib/numru/ggraph_on_merdional_section.rb +1 -1
- data/lib/numru/gphys.rb +6 -0
- data/lib/numru/gphys/assoccoords.rb +18 -3
- data/lib/numru/gphys/axis.rb +209 -8
- data/lib/numru/gphys/derivative.rb +11 -0
- data/lib/numru/gphys/gphys.rb +539 -48
- data/lib/numru/gphys/gphys_dim_op.rb +331 -0
- data/lib/numru/gphys/gphys_fft.rb +48 -2
- data/lib/numru/gphys/gphys_io.rb +241 -13
- data/lib/numru/gphys/gphys_netcdf_io.rb +77 -39
- data/lib/numru/gphys/gphys_nusdas_io.rb +3 -0
- data/lib/numru/gphys/grib.rb +133 -54
- data/lib/numru/gphys/grib_params.rb +26 -3
- data/lib/numru/gphys/grid.rb +75 -34
- data/lib/numru/gphys/interpolate.rb +24 -10
- data/lib/numru/gphys/mdstorage.rb +160 -0
- data/lib/numru/gphys/netcdf_convention.rb +4 -2
- data/lib/numru/gphys/subsetmapping.rb +0 -1
- data/lib/numru/gphys/unumeric.rb +50 -5
- data/lib/numru/gphys/varray.rb +15 -30
- data/lib/numru/gphys/varraycomposite.rb +107 -24
- data/lib/numru/gphys/varraynetcdf.rb +9 -3
- data/lib/numru/gphys/version.rb +5 -0
- data/sample/druby_cli1.rb +2 -0
- data/sample/druby_cli2.rb +0 -6
- data/sample/druby_serv2.rb +0 -13
- data/spec/gphys_spec.rb +11 -0
- data/spec/spec_helper.rb +2 -0
- data/test/test_assoccoords.rb +102 -0
- data/test/test_axis.rb +61 -0
- data/test/test_fitting.rb +116 -0
- data/test/test_gphys.rb +20 -0
- data/test/test_met_z.rb +96 -0
- data/test/test_sigma_coord.rb +50 -0
- data/{test → test_old}/eof_slp.rb +0 -0
- data/{test → test_old}/mltbit.dat +0 -0
- data/{test → test_old}/test_ep_flux.rb +0 -0
- data/{test → test_old}/test_multibitIO.rb +0 -0
- metadata +530 -191
- data/README.md +0 -29
- data/lib/gphys.rb +0 -2
- data/lib/numru/dclext_datetime_ax.rb +0 -220
- data/lib/version.rb +0 -3
data/doc/gphys_io.html
ADDED
@@ -0,0 +1,183 @@
|
|
1
|
+
<?xml version="1.0" ?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
6
|
+
<head>
|
7
|
+
<title>../lib/numru/gphys/gphys_io.rb</title>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1><a name="label-0" id="label-0">module NumRu::GPhys::IO</a></h1><!-- RDLabel: "module NumRu::GPhys::IO" -->
|
11
|
+
<p>A module to handle file IO regarding GPhys. </p>
|
12
|
+
<p>Many of the functionality of this module is implemented in the modules
|
13
|
+
for specific file types such as NumRu::GPhys::NetCDF_IO, to which this
|
14
|
+
module directs operations.</p>
|
15
|
+
<p>For example, GPhys::IO.open(file, name) simply calls
|
16
|
+
GPhys::*_IO.open(file, name), where '*' is
|
17
|
+
NetCDF, GrADS, or grib.</p>
|
18
|
+
<h2><a name="label-1" id="label-1">Module functions</a></h2><!-- RDLabel: "Module functions" -->
|
19
|
+
<dl>
|
20
|
+
<dt><h4><a name="label-2" id="label-2"><code>open(<var>file</var>, <var>varname</var>)</code></a></h4></dt><!-- RDLabel: "open" -->
|
21
|
+
<dd>
|
22
|
+
<p>Opens a GPhys in <code>file</code> having the name <code>varname</code>.</p>
|
23
|
+
<p>ARGUMENTS</p>
|
24
|
+
<ul>
|
25
|
+
<li>file (String, NetCDF, GRIB,.. etc, or Array, NArray, Regexp) :
|
26
|
+
Specifies the file. Path if String; a File pointer if NetCDF etc..
|
27
|
+
The processing is forwarded to open_multi, if this argument is
|
28
|
+
an Array, NArray, or Regexp. </li>
|
29
|
+
<li>varname (String) : name of the variable</li>
|
30
|
+
</ul>
|
31
|
+
<p>RETURN VALUE</p>
|
32
|
+
<ul>
|
33
|
+
<li>a GPhys</li>
|
34
|
+
</ul></dd>
|
35
|
+
<dt><h4><a name="label-3" id="label-3"><code>open_multi(<var>files</var>, <var>varname</var>)</code></a></h4></dt><!-- RDLabel: "open_multi" -->
|
36
|
+
<dd>
|
37
|
+
<p>Opens a GPhys by combining a variable across multiple files.
|
38
|
+
It initializes GPhys objects over the files by calling open and
|
39
|
+
unites them into a single GPhys object by using <code>GPhys.join</code> or
|
40
|
+
<code>GPhys.join_md</code>.</p>
|
41
|
+
<p>ARGUMENTS</p>
|
42
|
+
<ul>
|
43
|
+
<li>files (Array, NArray (NArray.object), or Regexp) : Specifies the files.
|
44
|
+
<ul>
|
45
|
+
<li>when Array, it must consist of paths or file pointers
|
46
|
+
(that are accepted by open).
|
47
|
+
All coordinates of the variable in the files are scanned,
|
48
|
+
and a joined object is constructed properly.
|
49
|
+
Thus, you can simply put subsets of a 2D tiling in a simple
|
50
|
+
non-nested 1D Array. <code>GPhys.join</code> is used in this case.</li>
|
51
|
+
<li><p>when NArray, it must consist of paths or file pointers
|
52
|
+
(that are accepted by open).
|
53
|
+
Each dimension with multiple elements must correspond
|
54
|
+
to a dimension along which joining is made.
|
55
|
+
For example, a 2D tiling can be specified as</p>
|
56
|
+
<pre>files = NArray.to_na([['f00.nc','f10.nc'],['f01.nc','f11.nc']])
|
57
|
+
gp = GPhys::IO.open_multi( files, "f" )</pre>
|
58
|
+
<p><code>GPhys.join_md</code> is used in this case.</p></li>
|
59
|
+
<li><p>When Regexp, similar to when NArray, but expresses the paths.
|
60
|
+
The dimensions to join is specified by "captures"
|
61
|
+
(parentheses). For example, the above 2D tiling can be specified as</p>
|
62
|
+
<pre>files = /f(\d)(\d).nc/
|
63
|
+
gp = GPhys::IO.open_multi( files, "f" )</pre>
|
64
|
+
<p>The regexp can contain a directory path (e.g., /dir\/sub\/f(\d)(d).nc/),
|
65
|
+
but the directory part must be unique (i.e., a simple string),
|
66
|
+
so only a single directly can be specified. All captures must
|
67
|
+
be in the part representing the file names (in the directory).
|
68
|
+
<code>GPhys.join_md</code> is used in this case.</p></li>
|
69
|
+
</ul></li>
|
70
|
+
<li>varname (String) : name of the variable</li>
|
71
|
+
</ul>
|
72
|
+
<p>RETURN VALUE</p>
|
73
|
+
<ul>
|
74
|
+
<li>a GPhys</li>
|
75
|
+
</ul></dd>
|
76
|
+
<dt><h4><a name="label-4" id="label-4"><code>write(<var>file</var>, <var>gphys</var>, <var>name</var>=<var>nil</var>)</code></a></h4></dt><!-- RDLabel: "write" -->
|
77
|
+
<dd>
|
78
|
+
<p>Writes a GPhys object in a file</p>
|
79
|
+
<p>ARGUMENTS</p>
|
80
|
+
<ul>
|
81
|
+
<li>file (NetCDF, GRIB,.. etc) : the file. Writing must be permitted.
|
82
|
+
To close (finalize) it after writing is left to the user.</li>
|
83
|
+
<li>gphys (GPhys) : the GPhys object to write</li>
|
84
|
+
<li>name (String; optional) : if specified, this name is used in the file
|
85
|
+
rather than the name of gphys</li>
|
86
|
+
</ul></dd>
|
87
|
+
<dt><h4><a name="label-5" id="label-5"><code>write_grid(<var>file</var>, <var>grid_or_gphys</var>)</code></a></h4></dt><!-- RDLabel: "write_grid" -->
|
88
|
+
<dt><h4><a name="label-6" id="label-6"><code>each_along_dims_write(<var>gphyses</var>, <var>files</var>, *<var>loopdims</var>){...} # <var>a</var> <var>block</var> <var>is</var> <var>expected</var></code></a></h4></dt><!-- RDLabel: "each_along_dims_write" -->
|
89
|
+
<dt><h4><a name="label-7" id="label-7"><code>var_names(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "var_names" -->
|
90
|
+
<dt><h4><a name="label-8" id="label-8"><code>var_names_except_coordinates(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "var_names_except_coordinates" -->
|
91
|
+
<dd>
|
92
|
+
See the manual of NumRu::GPhys::NetCDF_IO for the methods listed above.</dd>
|
93
|
+
<dt><h4><a name="label-9" id="label-9"><code>file2type(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "file2type" -->
|
94
|
+
<dd>
|
95
|
+
<p>Figures out the file type supported in this module.</p>
|
96
|
+
<p>ARGUMENTS</p>
|
97
|
+
<ul>
|
98
|
+
<li>file (String, NetCDF, Grib, or GrADS_Gridded) :
|
99
|
+
What to return is of course obvious if it is
|
100
|
+
NetCDF, Grib, or GrADS_Gridded. If it is a String,
|
101
|
+
it is assumed to be a path of a file, and the file type
|
102
|
+
is determined by its suffix when 'nc', 'ctl', or 'grib';
|
103
|
+
In other cases, the type is figured out by reading in
|
104
|
+
a few bytes from the beginning.</li>
|
105
|
+
</ul>
|
106
|
+
<p>RETURN VALUE</p>
|
107
|
+
<ul>
|
108
|
+
<li>GPhys::IO::NETCDF, GPhys::IO::GRIB, or GPhys::IO::GRADS,
|
109
|
+
which are string constants.</li>
|
110
|
+
</ul></dd>
|
111
|
+
<dt><h4><a name="label-10" id="label-10"><code>file2specific_module(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "file2specific_module" -->
|
112
|
+
<dd>
|
113
|
+
Same as <a href="#label-9">file2type</a>, but returns GPhys::NetCDF_IO,
|
114
|
+
GPhys::GrADS_IO, or GPhys::Grib_IO.</dd>
|
115
|
+
<dt><h4><a name="label-11" id="label-11"><code>file2file_class(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "file2file_class" -->
|
116
|
+
<dd>
|
117
|
+
Same as <a href="#label-9">file2type</a>, but returns NetCDF,
|
118
|
+
GrADS_Gridded, or Grib.</dd>
|
119
|
+
<dt><h4><a name="label-12" id="label-12"><code>parse_gturl(<var>gturl</var>)</code></a></h4></dt><!-- RDLabel: "parse_gturl" -->
|
120
|
+
<dd>
|
121
|
+
<p>Parses GTOOL4-type URLs to specify path, variable name,
|
122
|
+
and optionally subsets, whose format is
|
123
|
+
path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]</p>
|
124
|
+
<p>ARGUMENTS</p>
|
125
|
+
<ul>
|
126
|
+
<li>gturl (String) GTOOL4 URL, whose format is
|
127
|
+
path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]</li>
|
128
|
+
</ul>
|
129
|
+
<p>RETURN VALUES</p>
|
130
|
+
<ul>
|
131
|
+
<li>An Array consisting of [file, var, slice, cut_slice, thinning], where
|
132
|
+
<ul>
|
133
|
+
<li>file (String) : path</li>
|
134
|
+
<li>var (String) : variable name</li>
|
135
|
+
<li>slice (Array) : subset specifier by the grid numbers
|
136
|
+
to be used as GPhys#[slice].</li>
|
137
|
+
<li>cut_slice (Array) : subset specifier in physical coordinate
|
138
|
+
to be used as GPhys#cut[cut_slice].</li>
|
139
|
+
<li>thinning (Array) : additional subset specifier for thinning
|
140
|
+
with uniform intervals if needed to be used GPhys#[thinning]
|
141
|
+
after appling GPhys#cut.</li>
|
142
|
+
</ul></li>
|
143
|
+
</ul></dd>
|
144
|
+
<dt><h4><a name="label-13" id="label-13"><code>open_gturl(<var>gturl</var>)</code></a></h4></dt><!-- RDLabel: "open_gturl" -->
|
145
|
+
<dd>
|
146
|
+
<p>a GPhys constructor from a Gtool4-type URL.
|
147
|
+
See <a href="#label-12">parse_gturl</a> for its format.</p>
|
148
|
+
<p>RETURN VALUE</p>
|
149
|
+
<ul>
|
150
|
+
<li>a GPhys</li>
|
151
|
+
</ul></dd>
|
152
|
+
<dt><h4><a name="label-14" id="label-14"><code>str2gphys(<var>str</var>)</code></a></h4></dt><!-- RDLabel: "str2gphys" -->
|
153
|
+
<dd>
|
154
|
+
<p>Open a GPhys from a slash("/")-separated String
|
155
|
+
such as "U.nc/U" and "U.nc".</p>
|
156
|
+
<ul>
|
157
|
+
<li>Aimed to help quick jobs with interactive sessions
|
158
|
+
-- This method do not handle a GPhys across multiple files.</li>
|
159
|
+
<li>if the variable path is ommited such as "U.nc",
|
160
|
+
try to find the variable in it -- read the file and if
|
161
|
+
only one variable is found, assume that is the
|
162
|
+
variable specified; otherwise, an exception is raised.</li>
|
163
|
+
<li>URL is accepted, but it's only thru NetCDF assuming OPeNDAP.</li>
|
164
|
+
</ul>
|
165
|
+
<p>ARGUMENTS</p>
|
166
|
+
<ul>
|
167
|
+
<li>a String (file_path[/variable_path])
|
168
|
+
e.g. "U.nc/U", "U.nc", "http://.../U.nc/U"</li>
|
169
|
+
</ul>
|
170
|
+
<p>RETURN VALUE</p>
|
171
|
+
<ul>
|
172
|
+
<li>a GPhys</li>
|
173
|
+
</ul></dd>
|
174
|
+
</dl>
|
175
|
+
<h2><a name="label-15" id="label-15">Module constants</a></h2><!-- RDLabel: "Module constants" -->
|
176
|
+
<dl>
|
177
|
+
<dt><h4><a name="label-16" id="label-16"><code>GTURLfmt</code></a></h4></dt><!-- RDLabel: "GTURLfmt" -->
|
178
|
+
<dd>
|
179
|
+
The format of Gtool4URL.</dd>
|
180
|
+
</dl>
|
181
|
+
|
182
|
+
</body>
|
183
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" ?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
6
|
+
<head>
|
7
|
+
<title>../lib/numru/gphys/gphys_io_common.rb</title>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1><a name="label-0" id="label-0">module NumRu::GPhys::IO_Common</a></h1><!-- RDLabel: "module NumRu::GPhys::IO_Common" -->
|
11
|
+
<p>THIS MODULE IS ONLY FOR INTERNAL USAGE.
|
12
|
+
(Does not work stand alone.)</p>
|
13
|
+
<p>Functions independent of specific file formart.
|
14
|
+
To be used by IO, NetCDF_IO, GrADS_IO etc. </p>
|
15
|
+
<p>A test program is included in gphys_netcdf.rb</p>
|
16
|
+
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,283 @@
|
|
1
|
+
<?xml version="1.0" ?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
6
|
+
<head>
|
7
|
+
<title>../lib/numru/gphys/gphys_netcdf_io.rb</title>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1><a name="label-0" id="label-0">module NumRu::GPhys::NetCDF_Convention_Users_Guide</a></h1><!-- RDLabel: "module NumRu::GPhys::NetCDF_Convention_Users_Guide" -->
|
11
|
+
<p>(To be written.)</p>
|
12
|
+
<h1><a name="label-1" id="label-1">module NumRu::GPhys::NetCDF_IO</a></h1><!-- RDLabel: "module NumRu::GPhys::NetCDF_IO" -->
|
13
|
+
<p>a NetCDF read/write helper by automatically interpreting conventions</p>
|
14
|
+
<h2><a name="label-2" id="label-2">Module functions</a></h2><!-- RDLabel: "Module functions" -->
|
15
|
+
<dl>
|
16
|
+
<dt><h4><a name="label-3" id="label-3"><code>is_a_NetCDF?(<var>filename</var>)</code></a></h4></dt><!-- RDLabel: "is_a_NetCDF?" -->
|
17
|
+
<dd>
|
18
|
+
<p>test whether the file is a NetCDF file.</p>
|
19
|
+
<p>ARGUMENTS</p>
|
20
|
+
<ul>
|
21
|
+
<li>filename (String): filename to test.</li>
|
22
|
+
</ul>
|
23
|
+
<p>RETURN VALUE</p>
|
24
|
+
<ul>
|
25
|
+
<li>true/false</li>
|
26
|
+
</ul></dd>
|
27
|
+
<dt><h4><a name="label-4" id="label-4"><code>open(<var>files</var>, <var>varname</var>)</code></a></h4></dt><!-- RDLabel: "open" -->
|
28
|
+
<dd>
|
29
|
+
<p>a GPhys constructor from a NetCDF file (or multiple NetCDF files).</p>
|
30
|
+
<p>ARGUMENTS</p>
|
31
|
+
<ul>
|
32
|
+
<li>files (String, NetCDF, NArray, or Regexp): file specifier.
|
33
|
+
A single file is specified by a String (containing the path),
|
34
|
+
of a NetCDF. Multiple files can be specified by a NArray of
|
35
|
+
String or NetCDF or by a Regexp to match paths. In that case,
|
36
|
+
data and axes are represented by VArrayComposite.</li>
|
37
|
+
<li>varname (String): name of the variable.</li>
|
38
|
+
</ul>
|
39
|
+
<p>RETURN VALUE</p>
|
40
|
+
<ul>
|
41
|
+
<li>a GPhys</li>
|
42
|
+
</ul>
|
43
|
+
<p>EXAMPLES</p>
|
44
|
+
<ul>
|
45
|
+
<li><p>From a single file:</p>
|
46
|
+
<pre>file = NetCDF.open('hogehoge.nc')
|
47
|
+
gphys = GPhys::NetCDF_IO(file, 'temp')
|
48
|
+
|
49
|
+
file = NetCDF.open('hogehoge.nc', 'a') # writable
|
50
|
+
gphys = GPhys::NetCDF_IO(file, 'temp')</pre></li>
|
51
|
+
<li><p>From a single file:</p>
|
52
|
+
<pre>gphys = GPhys::NetCDF_IO('hogehoge.nc', 'temp')
|
53
|
+
|
54
|
+
gphys = GPhys::NetCDF_IO('/data/netcdf/hogehoge.nc', 'temp')</pre>
|
55
|
+
<p>If you use a String to specify a file path, the file is opened as
|
56
|
+
read-only.</p></li>
|
57
|
+
<li><p>To use data separated into multiple files. Suppose that you have
|
58
|
+
hoge_yr2000.nc, hoge_yr2001.nc, and hoge_yr2002.nc in the current
|
59
|
+
directory. You can open it by using a regular expression as follows:</p>
|
60
|
+
<pre>gphys = GPhys::NetCDF_IO(/hoge_yr(\d\d\d\d).nc/, 'temp')</pre>
|
61
|
+
<p>Here, the parentheses to enclose \d\d\d\d is NEEDED. </p>
|
62
|
+
<p>The same thing can be done as follows by using Array or NArray:</p>
|
63
|
+
<pre>files = ['hoge_yr2000.nc', 'hoge_yr2001.nc', 'hoge_yr2002.nc']
|
64
|
+
gphys = GPhys::NetCDF_IO(files, 'temp')
|
65
|
+
|
66
|
+
files = NArray['hoge_yr2000.nc', 'hoge_yr2001.nc', 'hoge_yr2002.nc']
|
67
|
+
gphys = GPhys::NetCDF_IO(files, 'temp')</pre></li>
|
68
|
+
<li><p>Same as above but to use the full path:</p>
|
69
|
+
<pre>gphys = GPhys::NetCDF_IO(/\/data\/nc\/hoge_yr(\d\d\d\d).nc/, 'temp')</pre>
|
70
|
+
<p>Here, the directory separator '/' is escaped as '\/'.</p></li>
|
71
|
+
<li><p>To use data separated into multiple files. Suppose that you have
|
72
|
+
hoge_x0y0.nc, hoge_x1y0.nc, hoge_x0y1.nc, hoge_x1y1.nc, where
|
73
|
+
the data is separated 2 dimensionally into 2*2 = 4 files.</p>
|
74
|
+
<pre>gphys = GPhys::NetCDF_IO(/hoge_x(\d)y(\d).nc/, 'temp')</pre>
|
75
|
+
<p>Note that 2 pairs of parentheses are needed here. Alternatively,
|
76
|
+
you can also do it like this:</p>
|
77
|
+
<pre>files = NArray[ ['hoge_x0y0.nc', 'hoge_x1y0.nc'],
|
78
|
+
['hoge_x0y1.nc', 'hoge_x1y1.nc'] ]
|
79
|
+
gphys = GPhys::NetCDF_IO(files, 'temp')</pre></li>
|
80
|
+
</ul></dd>
|
81
|
+
<dt><h4><a name="label-5" id="label-5"><code>write(<var>file</var>, <var>gphys</var>, <var>name</var>=<var>nil</var>)</code></a></h4></dt><!-- RDLabel: "write" -->
|
82
|
+
<dd>
|
83
|
+
<p>Write a GPhys into a NetCDF file. The whole data under the GPhys
|
84
|
+
(such as coordinate vars) are written self-descriptively.</p>
|
85
|
+
<p>ARGUMENTS</p>
|
86
|
+
<ul>
|
87
|
+
<li>file (NetCDF): the NetCDF file to write in. Must be writable of course.</li>
|
88
|
+
<li>gphys (GPhys): the GPhys to write.</li>
|
89
|
+
<li>name (String): (optional) name in the new file -- if you want to save
|
90
|
+
with a different variable name than that of gphys.</li>
|
91
|
+
</ul>
|
92
|
+
<p>RETURN VALUE</p>
|
93
|
+
<ul>
|
94
|
+
<li>nil</li>
|
95
|
+
</ul></dd>
|
96
|
+
<dt><h4><a name="label-6" id="label-6"><code>write_grid(<var>file</var>, <var>grid_or_gphys</var>)</code></a></h4></dt><!-- RDLabel: "write_grid" -->
|
97
|
+
<dd>
|
98
|
+
<p>Same as <a href="#label-5">write</a> but for writing only the contents of the grid.
|
99
|
+
(Used in <a href="#label-5">write</a>.)</p>
|
100
|
+
<p>ARGUMENTS</p>
|
101
|
+
<ul>
|
102
|
+
<li>file (NetCDF): the NetCDF file to write in. Must be writable of course.</li>
|
103
|
+
<li>grid_or_gphys (Grid or GPhys):</li>
|
104
|
+
</ul>
|
105
|
+
<p>RETURN VALUE</p>
|
106
|
+
<ul>
|
107
|
+
<li>a Grid, in which all VArrays in the original grid are replaced
|
108
|
+
with the new ones in the file.</li>
|
109
|
+
</ul></dd>
|
110
|
+
<dt><h4><a name="label-7" id="label-7"><code>each_along_dims_write(<var>gphyses</var>, <var>files</var>, *<var>loopdims</var>){...} # <var>a</var> <var>block</var> <var>is</var> <var>expected</var></code></a></h4></dt><!-- RDLabel: "each_along_dims_write" -->
|
111
|
+
<dd>
|
112
|
+
<p>Iterator to process GPhys objects too big to read on memory at once.
|
113
|
+
Makes a loop (loops) by dividing the GPhys object(s) (<var>gphyses</var>)
|
114
|
+
with the dimension(s) specified by <var>loopdims</var>, and the results
|
115
|
+
(which is the return value of the block) are written in <var>files</var>.</p>
|
116
|
+
<p>ARGUMENTS</p>
|
117
|
+
<ul>
|
118
|
+
<li>gphyses (GPhys or Array of GPhys): GPhys object(s) to be processed.
|
119
|
+
All of them must have dimensions spcified with <var>loopdims</var>,
|
120
|
+
and their lengths must not vary among files. Other dimensions
|
121
|
+
are aribtary, so, for example, <var>gphyses</var> could be
|
122
|
+
[a(lon,lat,time), b(lat,time)] as long as loopdims==["time"].</li>
|
123
|
+
<li>files (NetCDF or Array of NetCDF): the file in which the results are
|
124
|
+
written. The number of the file must be smaller than or equalt to
|
125
|
+
the number of resultant GPhys objects (following the multiple assignment
|
126
|
+
rule of Ruby).</li>
|
127
|
+
<li>loopdims (Array of String or Integer) : name (when String) or
|
128
|
+
count starting from zero (when Integer) </li>
|
129
|
+
<li>expected block : Number of arguments == number of GPhys objects in
|
130
|
+
<var>gphyses</var>. Expected return value is an Array of GPhys objects
|
131
|
+
to be written <var>files</var>.</li>
|
132
|
+
</ul>
|
133
|
+
<p>RETURN VALUE</p>
|
134
|
+
<ul>
|
135
|
+
<li>GPhys objects in which the results are written</li>
|
136
|
+
</ul>
|
137
|
+
<p>ERRORS</p>
|
138
|
+
<p>The following raise exceptions (in adition to errors in arguments).</p>
|
139
|
+
<ul>
|
140
|
+
<li>Dimensions specified by <var>loopdims</var> are not shared among
|
141
|
+
GPhys objects in <var>gphyses</var>.</li>
|
142
|
+
<li>Return value of the block is not an Array of GPhys.</li>
|
143
|
+
<li>Dimension(s) used for looping (<var>loopdims</var>) is(are) eliminated
|
144
|
+
from the retunred GPhys objects.</li>
|
145
|
+
</ul>
|
146
|
+
<p>USAGE</p>
|
147
|
+
<ul>
|
148
|
+
<li><p>EXAMPLE 1</p>
|
149
|
+
<p>Suppose that you want to do the following:</p>
|
150
|
+
<pre>in = GPhys::NetCDF_IO.open(infile, varname)
|
151
|
+
ofile = NetCDF.create(ofilename)
|
152
|
+
out = in.mean(0)
|
153
|
+
GPhys::NetCDF_IO.write( ofile, out )
|
154
|
+
ofile.close</pre>
|
155
|
+
<p>The data object (<var>in</var>) is read on memory and an averagin is made.
|
156
|
+
If the size of the data is too big to read on memory at once, you can
|
157
|
+
divid this process by using this iterator. The following gives the
|
158
|
+
same result as above, but the processing is made for each subset
|
159
|
+
divided at the last dimension (represented by -1, as in the negative
|
160
|
+
indexing of Array).</p>
|
161
|
+
<pre>in = GPhys::NetCDF_IO.open(infile, varname)
|
162
|
+
ofile = NetCDF.create(ofilename)
|
163
|
+
out = GPhys::NetCDF_IO.each_along_dims_write(in, ofile, -1){|in_sub|
|
164
|
+
[ in_sub.mean(0) ]
|
165
|
+
}
|
166
|
+
ofile.close</pre>
|
167
|
+
<p>In this case, each_along_dims_write makes a loop by substituting
|
168
|
+
<var>in[false,0..0]</var>, <var>in[false,1..1]</var>, <var>in[false,2..2]</var>,..
|
169
|
+
into the argument of the block (<var>in_sub</var>). Thus, the return
|
170
|
+
value of the block (here, <var>[ in_sub.mean(0) ]</var>) consists of
|
171
|
+
<var>in[false,0..0].mean(0)</var>, <var>in[false,1..1].mean(0)</var>,.. .
|
172
|
+
This iterator creates a GPhys object in <var>out</var> that
|
173
|
+
represents the whole part of the results (here, <var>in.mean(0)</var>), and
|
174
|
+
write the resultant subsets in it one by one. Therefore, the output file
|
175
|
+
is filled correctly when exiting the iterator.</p>
|
176
|
+
<p>Note that the subset (<var>in_sub</var>) retains the last dimension
|
177
|
+
but the length is 1 becasue of the slicing by Range (0..0, 1..1,..).
|
178
|
+
Therefore, the subset has the same rank as the original.
|
179
|
+
The output GPhys objects, as given by the return value of the block,
|
180
|
+
must have the dimension retained, since the dimension (whose length
|
181
|
+
is one) is replaced by the original one when written in the file.
|
182
|
+
Therefore, THE FOLLOWING CAUSE AN ERROR (an exception is raised):</p>
|
183
|
+
<pre>out = GPhys::NetCDF_IO.each_along_dims_write(in, ofile, 0){|in_sub|
|
184
|
+
[ in_sub.mean(0) ]
|
185
|
+
}</pre>
|
186
|
+
<p>Here, looping is made by the first dimension (0), but it is eliminated
|
187
|
+
from the result by averaging with the same dimension. (Also, note
|
188
|
+
that this averaging is non-sense, since the length of the first
|
189
|
+
dimension of the subset is 1).</p></li>
|
190
|
+
<li><p>EXAMPLE 2</p>
|
191
|
+
<p>You can specify mutiple dimensions for looping to further
|
192
|
+
decrease the size of data to read on memory:</p>
|
193
|
+
<pre>GPhys::NetCDF_IO.each_along_dims_write(in, ofile, -2, -1){|in_sub|
|
194
|
+
...
|
195
|
+
}</pre>
|
196
|
+
<p>Also, you can specify the loop dimension(s) by name(s):</p>
|
197
|
+
<pre>GPhys::NetCDF_IO.each_along_dims_write(in, ofile, "y"){|in_sub|
|
198
|
+
...
|
199
|
+
}
|
200
|
+
|
201
|
+
GPhys::NetCDF_IO.each_along_dims_write(in, ofile, "y", "z"){|in_sub|
|
202
|
+
...
|
203
|
+
}</pre></li>
|
204
|
+
<li><p>EXAMPLE 3</p>
|
205
|
+
<p>You can give multiple objects in the iterotor if they
|
206
|
+
have the same shape (in future, this restriction may been loosened),
|
207
|
+
as follows:</p>
|
208
|
+
<pre>in1 = GPhys::NetCDF_IO.open(infile1, varname1)
|
209
|
+
in2 = GPhys::NetCDF_IO.open(infile2, varname2)
|
210
|
+
in3 = GPhys::NetCDF_IO.open(infile3, varname3)
|
211
|
+
ofile = NetCDF.create(ofilename)
|
212
|
+
outA, outB = \
|
213
|
+
GPhys::NetCDF_IO.each_along_dims_write([in1,in2,in3], ofile, -1){
|
214
|
+
|isub1,isub2,isub3|
|
215
|
+
osubA = (isub1*isub2).mean(0)
|
216
|
+
osubB = (isub2*isub3).mean(1)
|
217
|
+
[ osubA, osubB ]
|
218
|
+
}
|
219
|
+
ofile.close</pre>
|
220
|
+
<p>In this case, two output objects (outA and outB) are made
|
221
|
+
from the three input objects (in1,in2,in3) and written in a
|
222
|
+
single file (ofile). If you want to separate into two files,
|
223
|
+
you can do it like this: </p>
|
224
|
+
<pre>in1 = GPhys::NetCDF_IO.open(infile1, varname1)
|
225
|
+
in2 = GPhys::NetCDF_IO.open(infile2, varname2)
|
226
|
+
in3 = GPhys::NetCDF_IO.open(infile3, varname3)
|
227
|
+
ofile1 = NetCDF.create(ofilename1)
|
228
|
+
ofile2 = NetCDF.create(ofilename2)
|
229
|
+
outA, outB = \
|
230
|
+
GPhys::NetCDF_IO.each_along_dims_write([in1,in2,in3], [ofile1,ofile2], -1){
|
231
|
+
|isub1,isub2,isub3|
|
232
|
+
osubA = (isub1*isub2).mean(0)
|
233
|
+
osubB = (isub2*isub3).mean(1)
|
234
|
+
[ osubA, osubB ]
|
235
|
+
}
|
236
|
+
ofile.close</pre></li>
|
237
|
+
</ul></dd>
|
238
|
+
<dt><h4><a name="label-8" id="label-8"><code>set_convention(<var>convention</var>)</code></a></h4></dt><!-- RDLabel: "set_convention" -->
|
239
|
+
<dd>
|
240
|
+
<p>Set a NetCDF convention to be interpreted.</p>
|
241
|
+
<p>ARGUMENTS</p>
|
242
|
+
<ul>
|
243
|
+
<li>convention (Module): the convention</li>
|
244
|
+
</ul>
|
245
|
+
<p>RETURN VALUE</p>
|
246
|
+
<ul>
|
247
|
+
<li>convention (Module)</li>
|
248
|
+
</ul></dd>
|
249
|
+
<dt><h4><a name="label-9" id="label-9"><code>convention</code></a></h4></dt><!-- RDLabel: "convention" -->
|
250
|
+
<dd>
|
251
|
+
<p>Returns the current NetCDF convention to be interpreted.</p>
|
252
|
+
<p>RETURN VALUE</p>
|
253
|
+
<ul>
|
254
|
+
<li>convention (Module)</li>
|
255
|
+
</ul></dd>
|
256
|
+
<dt><h4><a name="label-10" id="label-10"><code>var_names(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "var_names" -->
|
257
|
+
<dd>
|
258
|
+
<p>ARGUMENTS</p>
|
259
|
+
<ul>
|
260
|
+
<li>file (NetCDF or String): if string,
|
261
|
+
it must be the name (path) of a NetCDF file.</li>
|
262
|
+
</ul>
|
263
|
+
<p>RETURN VALUE</p>
|
264
|
+
<ul>
|
265
|
+
<li>names of variables (Array): this return the names of variables
|
266
|
+
which the file has.</li>
|
267
|
+
</ul></dd>
|
268
|
+
<dt><h4><a name="label-11" id="label-11"><code>var_names_except_coordinate(<var>file</var>)</code></a></h4></dt><!-- RDLabel: "var_names_except_coordinate" -->
|
269
|
+
<dd>
|
270
|
+
<p>ARGUMENTS</p>
|
271
|
+
<ul>
|
272
|
+
<li>file (NetCDF or String): if string,
|
273
|
+
it must be the name (path) of a NetCDF file.</li>
|
274
|
+
</ul>
|
275
|
+
<p>RETURN VALUE</p>
|
276
|
+
<ul>
|
277
|
+
<li>names of variables (Array): this return the names of variables
|
278
|
+
which the file has, except variables for coordinate.</li>
|
279
|
+
</ul></dd>
|
280
|
+
</dl>
|
281
|
+
|
282
|
+
</body>
|
283
|
+
</html>
|