gphys 1.2.2.1 → 1.4.3
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.
- 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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
|
|
2
|
+
require "numru/ganalysis/planet"
|
|
3
|
+
require "numru/ganalysis/met"
|
|
4
|
+
|
|
5
|
+
module NumRu
|
|
6
|
+
module GAnalysis
|
|
7
|
+
|
|
8
|
+
# Library to handle the sigma coordinate of atmospheric GCMs
|
|
9
|
+
#
|
|
10
|
+
module SigmaCoord
|
|
11
|
+
|
|
12
|
+
module_function
|
|
13
|
+
|
|
14
|
+
# Find the sigma coordinate in a GPhys object (empirically)
|
|
15
|
+
#
|
|
16
|
+
# ARGUMENT
|
|
17
|
+
# * gphys [GPhys]
|
|
18
|
+
# * error [nil/false or true] change the behavior if a
|
|
19
|
+
# pressure coordinate is not found. Default: returns nil;
|
|
20
|
+
# if error is true, an exception is raised.
|
|
21
|
+
# RETURN VALUE
|
|
22
|
+
# * Integer to indicate the dimension of the sigma coordinate,
|
|
23
|
+
# or nil if not found (by default; see above)
|
|
24
|
+
def find_sigma_d(gphys, error=nil)
|
|
25
|
+
un0 = Units.new("1")
|
|
26
|
+
(gphys.rank-1).downto(0) do |d|
|
|
27
|
+
crd = gphys.coord(d)
|
|
28
|
+
if crd.units =~ un0 and
|
|
29
|
+
( crd.get_att('standard_name')=="atmosphere_sigma_coordinate" or
|
|
30
|
+
/sigma/i =~ crd.long_name or /^sig/i =~ crd.name )
|
|
31
|
+
# then, it's assumed that this is the sigma coordinate
|
|
32
|
+
return(d)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
if error
|
|
36
|
+
raise("Could not find a pressure coordinate.")
|
|
37
|
+
else
|
|
38
|
+
nil
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Derive pressure from sigma and surface pressure
|
|
43
|
+
#
|
|
44
|
+
# ARGUMENTS
|
|
45
|
+
# * ps [GPhys or VArray or NArray] : surface pressure (multi-D)
|
|
46
|
+
# * sig [GPhys or VArray or NArray] : sigma (1D)
|
|
47
|
+
# * zdim [Integer] : dimension at which the vertical dim is incorpolated
|
|
48
|
+
# RETURN VALUE
|
|
49
|
+
# * pressure [GPhys or VArray or NArray depending the class of ps]
|
|
50
|
+
def sig_ps2p(ps, sig, zdim)
|
|
51
|
+
if sig.is_a?(VArray) or sig.is_a?(GPhys)
|
|
52
|
+
sigval = sig.val
|
|
53
|
+
else
|
|
54
|
+
sigval = sig
|
|
55
|
+
end
|
|
56
|
+
if ps.is_a?(VArray) or ps.is_a?(GPhys)
|
|
57
|
+
psval = ps.val
|
|
58
|
+
else
|
|
59
|
+
psval = ps
|
|
60
|
+
end
|
|
61
|
+
psval = psval.newdim(zdim)
|
|
62
|
+
zdim.times{sigval = sigval.newdim(0)}
|
|
63
|
+
(ps.rank-zdim).times{sigval = sigval.newdim(-1)}
|
|
64
|
+
pval = psval * sigval
|
|
65
|
+
case ps
|
|
66
|
+
when VArray, GPhys
|
|
67
|
+
p = VArray.new(pval,
|
|
68
|
+
{"long_name"=>"pressure","units"=>ps.units.to_s}, "p")
|
|
69
|
+
if ps.is_a?(GPhys)
|
|
70
|
+
case sig
|
|
71
|
+
when GPhys
|
|
72
|
+
sigax = sig.axis(0)
|
|
73
|
+
when VArray
|
|
74
|
+
sigax = Axis.new().set_pos(sig)
|
|
75
|
+
else
|
|
76
|
+
sigc = VArray.new(sig,{"units"=>"","long_name"=>"sigma"},"sigma")
|
|
77
|
+
sigax = Axis.new().set_pos(sigc)
|
|
78
|
+
end
|
|
79
|
+
grid = ps.grid.insert_axis(zdim,sigax)
|
|
80
|
+
p = GPhys.new(grid, p)
|
|
81
|
+
end
|
|
82
|
+
p
|
|
83
|
+
else
|
|
84
|
+
pval
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
data/lib/numru/gdir.rb
CHANGED
|
@@ -946,7 +946,8 @@ module NumRu
|
|
|
946
946
|
|
|
947
947
|
def __can_be_a_gdir(path)
|
|
948
948
|
ftype = __ftype(path)
|
|
949
|
-
if ftype=="directory" || ftype=="file" &&
|
|
949
|
+
if ftype=="directory" || ftype=="file" &&
|
|
950
|
+
( GPhys::IO::file2type(path) rescue false )
|
|
950
951
|
true
|
|
951
952
|
else
|
|
952
953
|
false
|
data/lib/numru/ggraph.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# -*- coding:
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
2
|
require "numru/gphys"
|
|
3
3
|
require "numru/misc"
|
|
4
4
|
require "date"
|
|
@@ -49,8 +49,16 @@ require "numru/dclext"
|
|
|
49
49
|
* ((<line>))
|
|
50
50
|
Plot a poly-line by selecting the first dimension (with GPhys#first1D)
|
|
51
51
|
if (({gphys})) is more than 2D.
|
|
52
|
+
* ((<set_line>))
|
|
53
|
+
Change the default option values for ((<line>)).
|
|
54
|
+
* ((<next_line>))
|
|
55
|
+
Set the option values effective only in the next call of ((<line>))
|
|
52
56
|
* ((<mark>))
|
|
53
57
|
Similar to ((<line>)) but plots marks instead of drawing a poly-line.
|
|
58
|
+
* ((<set_mark>))
|
|
59
|
+
Change the default option values for ((<mark>)).
|
|
60
|
+
* ((<next_mark>))
|
|
61
|
+
Set the option values effective only in the next call of ((<mark>))
|
|
54
62
|
* ((<scatter>))
|
|
55
63
|
Scatter diagram (using uumrkz, as in ((<mark>))).
|
|
56
64
|
* ((<color_scatter>))
|
|
@@ -1072,8 +1080,10 @@ module NumRu
|
|
|
1072
1080
|
|
|
1073
1081
|
module GGraph
|
|
1074
1082
|
|
|
1075
|
-
|
|
1076
|
-
|
|
1083
|
+
# thresfold to swith uetonf and uetone under
|
|
1084
|
+
# the auto=true option in the tone method
|
|
1085
|
+
TONE_TONF_THRES_LEN = 100 # thresfold of length of each dimension
|
|
1086
|
+
TONE_TONF_THRES_SIZE = 20000 # thresfold of total size
|
|
1077
1087
|
|
|
1078
1088
|
@@nannot = 0
|
|
1079
1089
|
|
|
@@ -1096,9 +1106,7 @@ module NumRu
|
|
|
1096
1106
|
module_function
|
|
1097
1107
|
|
|
1098
1108
|
def gropn_1_if_not_yet
|
|
1099
|
-
|
|
1100
|
-
DCL.stqwrc
|
|
1101
|
-
rescue
|
|
1109
|
+
if DCL.sgpget("iws") == 0
|
|
1102
1110
|
DCL.gropn(1)
|
|
1103
1111
|
end
|
|
1104
1112
|
end
|
|
@@ -1190,7 +1198,8 @@ module NumRu
|
|
|
1190
1198
|
['map_radius', nil, '(for itr>=20: conical/azimuhal map projections) raidus around the tangential point. (units: degrees)'],
|
|
1191
1199
|
['map_fit',nil,'(Only for itr=10(cylindrical) and 11 (Mercator)) true: fit the plot to the data window (overrides map_window and map_axis); false: do not fit (then map_window and map_axis are used); nil: true if itr==10, false if itr==11'],
|
|
1192
1200
|
['map_rsat',nil,'(Only for itr=30) satellite distance from the earth\'s center (Parameter "RSAT" for sgpack)'],
|
|
1193
|
-
['map_window', [-180,180,-75,75], '(for itr<20: cylindrical map projections) lon-lat window [lon_min, lon_max, lat_min, lat_max ] to draw the map (units:
|
|
1201
|
+
['map_window', [-180,180,-75,75], '(for itr<20: cylindrical map projections) lon-lat window [lon_min, lon_max, lat_min, lat_max ] to draw the map (units: degrees)'],
|
|
1202
|
+
['keep_axis_offset', false, 'keep offset of titles/labels from each axis (ROFFzs in UZPACK, effective only when new_frame is false)']
|
|
1194
1203
|
)
|
|
1195
1204
|
|
|
1196
1205
|
def set_fig(options)
|
|
@@ -1213,12 +1222,7 @@ module NumRu
|
|
|
1213
1222
|
else
|
|
1214
1223
|
itr = DCL.sgqtrn
|
|
1215
1224
|
end
|
|
1216
|
-
|
|
1217
|
-
when 1..9,51..99
|
|
1218
|
-
false
|
|
1219
|
-
else
|
|
1220
|
-
true
|
|
1221
|
-
end
|
|
1225
|
+
!((1..9).include?(itr) || (51..99).include?(itr))
|
|
1222
1226
|
end
|
|
1223
1227
|
|
|
1224
1228
|
def itr_is?( itr, fig_yet_to_be_called=false )
|
|
@@ -1235,13 +1239,7 @@ module NumRu
|
|
|
1235
1239
|
end
|
|
1236
1240
|
|
|
1237
1241
|
def sim_trn?
|
|
1238
|
-
|
|
1239
|
-
case itr
|
|
1240
|
-
when 5..7
|
|
1241
|
-
true
|
|
1242
|
-
else
|
|
1243
|
-
false
|
|
1244
|
-
end
|
|
1242
|
+
(5..7).include?(DCL.sgqtrn)
|
|
1245
1243
|
end
|
|
1246
1244
|
|
|
1247
1245
|
def fig(xax=nil, yax=nil, options=nil)
|
|
@@ -1259,6 +1257,9 @@ module NumRu
|
|
|
1259
1257
|
elsif opts['new_frame']
|
|
1260
1258
|
DCL.grfrm
|
|
1261
1259
|
else
|
|
1260
|
+
if opts['keep_axis_offset'] # SAVE OFFSET VALUES
|
|
1261
|
+
offset_org = (%w(XT XB YL YR)).map{|zs| DCL::uzpget("ROFF#{zs}")}
|
|
1262
|
+
end
|
|
1262
1263
|
DCL.grfig
|
|
1263
1264
|
end
|
|
1264
1265
|
raise "viewport's length must be 4" if opts['viewport'].length != 4
|
|
@@ -1484,6 +1485,9 @@ module NumRu
|
|
|
1484
1485
|
|
|
1485
1486
|
DCL.grstrf
|
|
1486
1487
|
DCL.umpset('lglobe', sv)
|
|
1488
|
+
if (!opts['new_frame']) && opts['keep_axis_offset'] # RESTORE OFFSET VALUES
|
|
1489
|
+
(%w(XT XB YL YR)).each_with_index{|zs, izs| DCL::uzpset("ROFF#{zs}", offset_org[izs])}
|
|
1490
|
+
end
|
|
1487
1491
|
nil
|
|
1488
1492
|
end
|
|
1489
1493
|
|
|
@@ -1561,45 +1565,49 @@ module NumRu
|
|
|
1561
1565
|
t0 = window[2]
|
|
1562
1566
|
t1 = window[3]
|
|
1563
1567
|
end
|
|
1564
|
-
|
|
1568
|
+
ts = [t0,t1].min
|
|
1569
|
+
time = UNumeric.new(ts,sunits)
|
|
1565
1570
|
tstr = time.to_datetime(0.1,calendar)
|
|
1566
1571
|
jd0 = tstr.strftime('%Y%m%d').to_i
|
|
1567
|
-
tlen = tun.convert( t1-t0, dayun )
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
axtype = 'h'
|
|
1571
|
-
else
|
|
1572
|
-
axtype = 'ymd'
|
|
1573
|
-
end
|
|
1574
|
-
end
|
|
1572
|
+
tlen = tun.convert( t1-t0, dayun ).abs
|
|
1573
|
+
axtype ||= (tlen < 5) ? 'h' : 'ymd'
|
|
1574
|
+
reverse = t1 < t0
|
|
1575
1575
|
|
|
1576
1576
|
if xax
|
|
1577
|
-
|
|
1577
|
+
unless(reverse)
|
|
1578
|
+
DCL.grswnd(0.0, tlen, window[2], window[3] )
|
|
1579
|
+
else
|
|
1580
|
+
DCL.grswnd(tlen, 0.0, window[2], window[3] )
|
|
1581
|
+
end
|
|
1578
1582
|
DCL.grstrf
|
|
1583
|
+
opts = {'cside'=>side}
|
|
1584
|
+
opts['dtick1'] = tickint if tickint
|
|
1585
|
+
opts['dtick2'] = labelint if labelint
|
|
1579
1586
|
if axtype == 'h'
|
|
1580
|
-
opts = {'cside'=>side}
|
|
1581
|
-
opts['dtick1'] = tickint if tickint
|
|
1582
|
-
opts['dtick2'] = labelint if labelint
|
|
1583
1587
|
DCLExt.datetime_ax(tstr, tstr+tlen, opts )
|
|
1584
1588
|
else
|
|
1585
|
-
|
|
1589
|
+
DCLExt.date_ax(tstr, tstr+tlen, opts )
|
|
1590
|
+
## DCL.ucxacl(side,jd0,tlen) #Old: use it again if UCPACK is improved
|
|
1586
1591
|
end
|
|
1587
|
-
DCL.grswnd(*window)
|
|
1588
|
-
DCL.grstrf
|
|
1589
1592
|
else
|
|
1590
|
-
|
|
1593
|
+
unless(reverse)
|
|
1594
|
+
DCL.grswnd(window[0], window[1], 0.0, tlen)
|
|
1595
|
+
else
|
|
1596
|
+
DCL.grswnd(window[0], window[1], tlen, 0.0)
|
|
1597
|
+
end
|
|
1591
1598
|
DCL.grstrf
|
|
1599
|
+
opts = {'yax'=>true, 'cside'=>side}
|
|
1600
|
+
opts['dtick1'] = tickint if tickint
|
|
1601
|
+
opts['dtick2'] = labelint if labelint
|
|
1592
1602
|
if axtype == 'h'
|
|
1593
|
-
opts = {'yax'=>true, 'cside'=>side}
|
|
1594
|
-
opts['dtick1'] = tickint if tickint
|
|
1595
|
-
opts['dtick2'] = labelint if labelint
|
|
1596
1603
|
DCLExt.datetime_ax(tstr, tstr+tlen, opts )
|
|
1597
1604
|
else
|
|
1598
|
-
|
|
1605
|
+
DCLExt.date_ax(tstr, tstr+tlen, opts )
|
|
1606
|
+
## DCL.ucyacl(side,jd0,tlen) #Old: use it again if UCPACK is improved
|
|
1599
1607
|
end
|
|
1600
|
-
DCL.grswnd(*window)
|
|
1601
|
-
DCL.grstrf
|
|
1602
1608
|
end
|
|
1609
|
+
DCL.grswnd(*window)
|
|
1610
|
+
DCL.grstrf
|
|
1603
1611
|
end
|
|
1604
1612
|
private :__calendar_ax
|
|
1605
1613
|
|
|
@@ -1891,10 +1899,10 @@ module NumRu
|
|
|
1891
1899
|
yd = gps[0].coord(1)
|
|
1892
1900
|
end
|
|
1893
1901
|
# <-- ///
|
|
1894
|
-
gps.collect!{|gp| gp.cyclic_ext(0
|
|
1902
|
+
gps.collect!{|gp| gp.cyclic_ext(0)} #cyclic extentn along lon
|
|
1895
1903
|
xd = gps[0].coord(0)
|
|
1896
1904
|
elsif itr_is?(5, newframe)
|
|
1897
|
-
gps.collect!{|gp| gp.
|
|
1905
|
+
gps.collect!{|gp| gp.cyclic_ext_with_modulo(1, 360.0)} #cyclic ext along azimuth
|
|
1898
1906
|
yd = gps[0].coord(1)
|
|
1899
1907
|
end
|
|
1900
1908
|
[xd, yd, closer, *gps]
|
|
@@ -2012,14 +2020,47 @@ module NumRu
|
|
|
2012
2020
|
['legend_vy', nil, '(effective if legend) viewport y value of the legend (Float; or nil for automatic settting)'],
|
|
2013
2021
|
['legend_size', nil, '(effective if legend) character size of the legend'],
|
|
2014
2022
|
['map_axes', false, '[USE IT ONLY WHEN itr=10 (cylindrical)] If true, draws axes by temprarilly switching to itr=1 and calling GGraph::axes.'],
|
|
2023
|
+
['step_plot', false, 'If true, draw stair step plot (piecewise constant line plot).'],
|
|
2024
|
+
# ['step_extend_ends', false, 'If true, extend both ends of stair step plot.'], # NOT YET IMPLEMENTED
|
|
2025
|
+
['step_position', 0, 'Data point will be at the right corner of each step if negative, center if 0, and left corner if positive.'],
|
|
2015
2026
|
@@data_prep_options
|
|
2016
2027
|
)
|
|
2017
2028
|
|
|
2029
|
+
def set_line(options)
|
|
2030
|
+
@@line_options.set(options)
|
|
2031
|
+
end
|
|
2032
|
+
|
|
2033
|
+
@@next_line = nil
|
|
2034
|
+
def next_line(options)
|
|
2035
|
+
if options.is_a?(Hash)
|
|
2036
|
+
@@next_line = options
|
|
2037
|
+
else
|
|
2038
|
+
raise TypeError,"Hash expected"
|
|
2039
|
+
end
|
|
2040
|
+
nil
|
|
2041
|
+
end
|
|
2042
|
+
|
|
2043
|
+
def set_step_plot_position(val, postype)
|
|
2044
|
+
if postype == 0
|
|
2045
|
+
val = NArray.to_na([val[0]] + (val[0..-2] + val[1..-1]).mul!(0.5).to_a + [val[-1]])
|
|
2046
|
+
elsif postype > 0
|
|
2047
|
+
val = NArray.to_na([val[0]] + val.to_a)
|
|
2048
|
+
else
|
|
2049
|
+
val = NArray.to_na(val.to_a + [val[-1]])
|
|
2050
|
+
end
|
|
2051
|
+
return val
|
|
2052
|
+
end
|
|
2053
|
+
private :set_step_plot_position
|
|
2054
|
+
|
|
2018
2055
|
def line(gphys, newframe=true, options=nil)
|
|
2019
2056
|
gropn_1_if_not_yet
|
|
2020
2057
|
if newframe!=true && newframe!=false
|
|
2021
2058
|
raise ArgumentError, "2nd arg (newframe) must be true or false"
|
|
2022
2059
|
end
|
|
2060
|
+
if @@next_line
|
|
2061
|
+
options = ( options ? @@next_line.update(options) : @@next_line )
|
|
2062
|
+
@@next_line = nil
|
|
2063
|
+
end
|
|
2023
2064
|
opts = @@line_options.interpret(options)
|
|
2024
2065
|
x, y, closer, gp, window = data_prep_1D(gphys, opts)
|
|
2025
2066
|
if newframe
|
|
@@ -2032,7 +2073,17 @@ module NumRu
|
|
|
2032
2073
|
DCL.sgpset('lchar',true)
|
|
2033
2074
|
DCL.sgsplc(opts['label'])
|
|
2034
2075
|
end
|
|
2035
|
-
|
|
2076
|
+
if opts['step_plot']
|
|
2077
|
+
if opts['exchange']
|
|
2078
|
+
yval = set_step_plot_position(y.val, opts['step_position'])
|
|
2079
|
+
DCL.uhbxlz(x.val, yval, opts['type'], opts['index'])
|
|
2080
|
+
else
|
|
2081
|
+
xval = set_step_plot_position(x.val, opts['step_position'])
|
|
2082
|
+
DCL.uvbxlz(xval, y.val, opts['type'], opts['index'])
|
|
2083
|
+
end
|
|
2084
|
+
else
|
|
2085
|
+
DCL.uulinz(x.val, y.val, opts['type'], opts['index'])
|
|
2086
|
+
end
|
|
2036
2087
|
DCL.sgpset('lchar',lcharbk) if opts['label']
|
|
2037
2088
|
|
|
2038
2089
|
legend = opts['legend']
|
|
@@ -2087,6 +2138,7 @@ module NumRu
|
|
|
2087
2138
|
opts['legend_size'],opts['legend_vx'],opts['legend_dx'],
|
|
2088
2139
|
opts['legend_vy'],newframe)
|
|
2089
2140
|
end
|
|
2141
|
+
closer.call if closer
|
|
2090
2142
|
nil
|
|
2091
2143
|
end
|
|
2092
2144
|
#-----------------------------------------------------------------------------
|
|
@@ -2107,11 +2159,29 @@ module NumRu
|
|
|
2107
2159
|
@@data_prep_options
|
|
2108
2160
|
)
|
|
2109
2161
|
|
|
2162
|
+
def set_mark(options)
|
|
2163
|
+
@@mark_options.set(options)
|
|
2164
|
+
end
|
|
2165
|
+
|
|
2166
|
+
@@next_mark = nil
|
|
2167
|
+
def next_mark(options)
|
|
2168
|
+
if options.is_a?(Hash)
|
|
2169
|
+
@@next_mark = options
|
|
2170
|
+
else
|
|
2171
|
+
raise TypeError,"Hash expected"
|
|
2172
|
+
end
|
|
2173
|
+
nil
|
|
2174
|
+
end
|
|
2175
|
+
|
|
2110
2176
|
def mark(gphys, newframe=true, options=nil)
|
|
2111
2177
|
gropn_1_if_not_yet
|
|
2112
2178
|
if newframe!=true && newframe!=false
|
|
2113
2179
|
raise ArgumentError, "2nd arg (newframe) must be true or false"
|
|
2114
2180
|
end
|
|
2181
|
+
if @@next_mark
|
|
2182
|
+
options = ( options ? @@next_mark.update(options) : @@next_mark )
|
|
2183
|
+
@@next_mark = nil
|
|
2184
|
+
end
|
|
2115
2185
|
opts = @@mark_options.interpret(options)
|
|
2116
2186
|
x, y, closer, gp, window = data_prep_1D(gphys, opts)
|
|
2117
2187
|
if newframe
|
|
@@ -2441,9 +2511,9 @@ module NumRu
|
|
|
2441
2511
|
end
|
|
2442
2512
|
trn = DCL.sgqtrn
|
|
2443
2513
|
if map_fit
|
|
2444
|
-
fig(xax,yax, {'itr'=>1, 'new_frame'=>false, 'viewport'=>vpt})
|
|
2514
|
+
fig(xax,yax, {'itr'=>1, 'new_frame'=>false, 'viewport'=>vpt, 'keep_axis_offset'=>true})
|
|
2445
2515
|
axes(xax, yax, 'title'=>ttl)
|
|
2446
|
-
fig(xax,yax,{'itr'=>trn, 'new_frame'=>false, 'viewport'=>vpt, 'map_fit'=>true})
|
|
2516
|
+
fig(xax,yax,{'itr'=>trn, 'new_frame'=>false, 'viewport'=>vpt, 'map_fit'=>true, 'keep_axis_offset'=>true})
|
|
2447
2517
|
else
|
|
2448
2518
|
xax_map = xax[0..1].copy
|
|
2449
2519
|
xax_map[0] = cnt[0] + wnd[0]
|
|
@@ -2451,9 +2521,9 @@ module NumRu
|
|
|
2451
2521
|
yax_map = yax[0..1].copy
|
|
2452
2522
|
yax_map[0] = wnd[2]
|
|
2453
2523
|
yax_map[1] = wnd[3]
|
|
2454
|
-
fig(xax_map,yax_map,{'itr'=>1, 'new_frame'=>false, 'viewport'=>vpt})
|
|
2524
|
+
fig(xax_map,yax_map,{'itr'=>1, 'new_frame'=>false, 'viewport'=>vpt, 'keep_axis_offset'=>true})
|
|
2455
2525
|
axes(xax_map, yax_map, 'title'=>ttl)
|
|
2456
|
-
fig(xax_map,yax_map,{'itr'=>trn, 'new_frame'=>false, 'viewport'=>vpt, 'map_fit'=>false, 'map_axis'=>cnt, 'map_window'=>wnd})
|
|
2526
|
+
fig(xax_map,yax_map,{'itr'=>trn, 'new_frame'=>false, 'viewport'=>vpt, 'map_fit'=>false, 'map_axis'=>cnt, 'map_window'=>wnd, 'keep_axis_offset'=>true})
|
|
2457
2527
|
end
|
|
2458
2528
|
else
|
|
2459
2529
|
title( ttl )
|
|
@@ -2598,8 +2668,8 @@ module NumRu
|
|
|
2598
2668
|
@@tone_options = Misc::KeywordOptAutoHelp.new(
|
|
2599
2669
|
['title', nil, 'Title of the figure(if nil, internally determined)'],
|
|
2600
2670
|
['annotate', true, 'if false, do not put texts on the right margin even when newframe==true'],
|
|
2601
|
-
['ltone', true, 'Same as
|
|
2602
|
-
['auto',
|
|
2671
|
+
['ltone', true, 'Same as uepack parameter ltone'],
|
|
2672
|
+
['auto', true, 'Swith DCL.uetone and DCL.uetonf depending on the data size'],
|
|
2603
2673
|
['tonf', false, 'Use DCL.uetonf instead of DCL.uetone'],
|
|
2604
2674
|
['tonb', false, 'Use DCL.uetonb instead of DCL.uetone'],
|
|
2605
2675
|
['tonc', false, 'Use DCL.uetonc instead of DCL.uetone'],
|
|
@@ -2668,7 +2738,8 @@ module NumRu
|
|
|
2668
2738
|
|
|
2669
2739
|
val = gp.data.val
|
|
2670
2740
|
if ( opts['ltone'] &&
|
|
2671
|
-
( opts['tonf'] || opts['auto'] &&
|
|
2741
|
+
( opts['tonf'] || opts['auto'] &&
|
|
2742
|
+
( val.length >= TONE_TONF_THRES_SIZE || val.shape.min >= TONE_TONF_THRES_LEN ) ) )
|
|
2672
2743
|
DCL.uetonf(val)
|
|
2673
2744
|
elsif opts['tonb'] && opts['ltone']
|
|
2674
2745
|
DCL.uetonb(val)
|
|
@@ -2948,8 +3019,20 @@ module NumRu
|
|
|
2948
3019
|
@@vxfxratio=nil # for flow_vect
|
|
2949
3020
|
@@vyfyratio=nil # for flow_vect
|
|
2950
3021
|
@@vfratio=nil # for flow_vect_anyproj
|
|
3022
|
+
@@flenmax=nil # for flow_vect_anyproj
|
|
3023
|
+
%w!vxfxratio vyfyratio vfratio flenmax!.each do |param|
|
|
3024
|
+
eval <<-EOS
|
|
3025
|
+
def #{param}
|
|
3026
|
+
@@#{param}
|
|
3027
|
+
end
|
|
3028
|
+
def #{param}=(x)
|
|
3029
|
+
@@#{param} = x
|
|
3030
|
+
end
|
|
3031
|
+
EOS
|
|
3032
|
+
end
|
|
2951
3033
|
|
|
2952
3034
|
@@vector_options = Misc::KeywordOptAutoHelp.new(
|
|
3035
|
+
['index', nil, 'Line index of vectors.'],
|
|
2953
3036
|
['title', nil, 'Title of the figure(if nil, internally determined)'],
|
|
2954
3037
|
['annotate', true, 'if false, do not put texts on the right margin even when newframe==true'],
|
|
2955
3038
|
['map_axes', false, '[USE IT ONLY WHEN itr=10 (cylindrical)] If true, draws axes by temprarilly switching to itr=1 and calling GGraph::axes.'],
|
|
@@ -2986,27 +3069,34 @@ module NumRu
|
|
|
2986
3069
|
yaxv = yax.val
|
|
2987
3070
|
DCL.uwsgxa(xaxv)
|
|
2988
3071
|
DCL.uwsgya(yaxv)
|
|
3072
|
+
|
|
3073
|
+
oldindex = DCLExt.ug_set_params("index" => opts['index']) if opts['index']
|
|
3074
|
+
|
|
2989
3075
|
if opts['flow_itr5']
|
|
2990
3076
|
if itr_is?(5)
|
|
2991
3077
|
DCLExt.flow_itr5( fx, fy, opts['factor'], opts['unit_vect'] )
|
|
3078
|
+
returnval = nil
|
|
2992
3079
|
else
|
|
2993
3080
|
raise "flow_itr5 option should use with itr=5."
|
|
2994
3081
|
end
|
|
2995
3082
|
elsif opts['flow_vect_anyproj'] ||
|
|
2996
3083
|
( opts['flow_vect_anyproj'].nil? && opts['flow_vect'] && itr >=2 )
|
|
2997
|
-
@@vfratio, flenmax =
|
|
3084
|
+
@@vfratio, @@flenmax =
|
|
2998
3085
|
DCLExt.flow_vect_anyproj(fx.val, fy.val, xaxv, yaxv,
|
|
2999
3086
|
opts['factor'], 1, 1, opts['distvect_map'],
|
|
3000
3087
|
(opts['keep'] && @@vfratio),
|
|
3088
|
+
(opts['keep'] && @@flenmax),
|
|
3001
3089
|
opts['polar_thinning'] )
|
|
3090
|
+
returnval = { "vfratio"=> @@vfratio, "flenmax"=>@@flenmax }
|
|
3002
3091
|
if opts['unit_vect']
|
|
3003
|
-
len_unit = opts['len_unit'] || flenmax
|
|
3092
|
+
len_unit = opts['len_unit'] || @@flenmax
|
|
3004
3093
|
DCLExt.unit_vect_single(@@vfratio, len_unit)
|
|
3005
3094
|
end
|
|
3006
3095
|
elsif opts['flow_vect']
|
|
3007
3096
|
uninfo = DCLExt.flow_vect(fx.val, fy.val, opts['factor'], 1, 1,
|
|
3008
3097
|
(opts['keep']&& @@vxfxratio), (opts['keep'] && @@vyfyratio) )
|
|
3009
3098
|
@@vxfxratio, @@vyfyratio, = uninfo
|
|
3099
|
+
returnval = { "vxfxratio"=>@@vxfxratio, "vyfyratio"=>@@vyfyratio }
|
|
3010
3100
|
if opts['unit_vect']
|
|
3011
3101
|
unless opts['max_unit_vect']
|
|
3012
3102
|
uninfo[2] = opts['ux_unit'] # nil or a Numeric to specify the len
|
|
@@ -3017,10 +3107,12 @@ module NumRu
|
|
|
3017
3107
|
else
|
|
3018
3108
|
before=DCLExt.ug_set_params({'lunit'=>true}) if opts['unit_vect']
|
|
3019
3109
|
DCL.ugvect(fx.val, fy.val)
|
|
3110
|
+
returnval = nil
|
|
3020
3111
|
DCLExt.ug_set_params(before) if opts['unit_vect']
|
|
3021
3112
|
end
|
|
3113
|
+
DCLExt.ug_set_params(oldindex) if opts['index']
|
|
3022
3114
|
closer.call if closer
|
|
3023
|
-
|
|
3115
|
+
returnval
|
|
3024
3116
|
end
|
|
3025
3117
|
|
|
3026
3118
|
@@regression_line_options = Misc::KeywordOptAutoHelp.new(
|
|
@@ -3625,8 +3717,8 @@ if $0 == __FILE__
|
|
|
3625
3717
|
y = v.cut("lat"=>40,"level"=>200)
|
|
3626
3718
|
xv = x.val
|
|
3627
3719
|
yv = y.val
|
|
3628
|
-
xx = x.val.to_na # NArrayMiss 1.2.1
|
|
3629
|
-
yy = y.val.to_na # NArrayMiss 1.2.1
|
|
3720
|
+
xx = x.val.to_na # NArrayMiss 1.2.1より上に更新後に消して xx は x に変えるべし
|
|
3721
|
+
yy = y.val.to_na # NArrayMiss 1.2.1より上に更新後に消して yy は y に変えるべし
|
|
3630
3722
|
|
|
3631
3723
|
GGraph.next_fig("window"=>[xv.min.floor-5, xv.max.ceil+5,
|
|
3632
3724
|
yv.min.floor-3, yv.max.ceil+3])
|
|
@@ -3647,8 +3739,8 @@ if $0 == __FILE__
|
|
|
3647
3739
|
#/ graph 52 /
|
|
3648
3740
|
x = x.abs**2
|
|
3649
3741
|
y = y.abs**2 + x*0.1
|
|
3650
|
-
xx = x.val.to_na # NArrayMiss 1.2.1
|
|
3651
|
-
yy = y.val.to_na # NArrayMiss 1.2.1
|
|
3742
|
+
xx = x.val.to_na # NArrayMiss 1.2.1より上に更新後に消して xx は x に変えるべし
|
|
3743
|
+
yy = y.val.to_na # NArrayMiss 1.2.1より上に更新後に消して yy は y に変えるべし
|
|
3652
3744
|
|
|
3653
3745
|
GGraph.next_fig("itr"=>4)
|
|
3654
3746
|
GGraph.scatter(x,y, true, "title"=>"x given y; log scaling")
|
|
@@ -3732,6 +3824,58 @@ if $0 == __FILE__
|
|
|
3732
3824
|
GGraph.next_axes('xtitle'=>'')
|
|
3733
3825
|
GGraph.tone_and_contour(gphys, true, 'map_axes'=>true, 'color_bar'=>true)
|
|
3734
3826
|
|
|
3827
|
+
#/ stair step line plots /
|
|
3828
|
+
na = NMath.sin(NArray.sfloat(11).indgen! * 2 * Math::PI / 10)
|
|
3829
|
+
va = VArray.new(na, {}, "dummy")
|
|
3830
|
+
p gphys = GPhys.new(Grid.new(Axis.new.set_pos(VArray.new(NArray.sfloat(11).indgen!, {}, "x"))), va)
|
|
3831
|
+
GGraph.set_fig('itr'=>1, 'viewport' => [0.2, 0.8, 0.15, 0.6])
|
|
3832
|
+
|
|
3833
|
+
GGraph.line(gphys, true, 'index' => 21,'step_plot' => true, 'step_position' => -1)
|
|
3834
|
+
GGraph.mark(gphys, false, 'index' => 31, 'type' => 9)
|
|
3835
|
+
|
|
3836
|
+
GGraph.line(gphys, true, 'index' => 21, 'step_plot' => true, 'step_position' => 0)
|
|
3837
|
+
GGraph.mark(gphys, false, 'index' => 31, 'type' => 9)
|
|
3838
|
+
|
|
3839
|
+
GGraph.line(gphys, true, 'index' => 21, 'step_plot' => true, 'step_position' => 1)
|
|
3840
|
+
GGraph.mark(gphys, false, 'index' => 31, 'type' => 9)
|
|
3841
|
+
|
|
3842
|
+
GGraph.line(gphys, true, 'index' => 21, 'step_plot' => true, 'step_position' => 0, 'exchange' => true)
|
|
3843
|
+
GGraph.mark(gphys, false, 'index' => 31, 'type' => 9, 'exchange' => true)
|
|
3844
|
+
|
|
3845
|
+
tmpu = u.cut("lon" => 0..180, "lat" => 20..90, "level" => 200)
|
|
3846
|
+
tmpv = v.cut("lon" => 0..180, "lat" => 20..90, "level" => 200)
|
|
3847
|
+
#/ test for ugvect with 'keep' option /
|
|
3848
|
+
GGraph.set_fig('itr' => 1, 'viewport' => [0.2, 0.7, 0.3, 0.6])
|
|
3849
|
+
GGraph.vector(tmpu, tmpv, true, 'unit_vect' => true, 'index' => 23)
|
|
3850
|
+
DCL::uxsttl("B", "Red: original speed", 0)
|
|
3851
|
+
GGraph.vector(tmpu * 0.5, tmpv * 0.5, true, 'unit_vect' => true, 'index' => 33, 'keep' => true)
|
|
3852
|
+
DCL::uxsttl("B", "Green: half speed with 'keep=T'", 0)
|
|
3853
|
+
|
|
3854
|
+
#/ test for flow_vect with 'keep' option /
|
|
3855
|
+
GGraph.set_fig('itr' => 1, 'viewport' => [0.2, 0.7, 0.3, 0.6])
|
|
3856
|
+
GGraph.vector(tmpu, tmpv, true, 'unit_vect' => true, 'flow_vect' => true, 'index' => 23)
|
|
3857
|
+
DCL::uxsttl("B", "Red: original speed (flow_vect)", 0)
|
|
3858
|
+
GGraph.vector(tmpu * 0.5, tmpv * 0.5, true, 'unit_vect' => true, 'flow_vect' => true, 'index' => 33, 'keep' => true)
|
|
3859
|
+
DCL::uxsttl("B", "Green: half speed with 'keep=T'", 0)
|
|
3860
|
+
|
|
3861
|
+
#/ test for flow_vect_anyproj with 'keep' option /
|
|
3862
|
+
GGraph.set_fig('itr' => 10, 'viewport' => [0.2, 0.7, 0.1, 0.6])
|
|
3863
|
+
GGraph.vector(tmpu, tmpv, true, 'unit_vect' => true, 'index' => 23)
|
|
3864
|
+
DCL::uxsttl("B", "Red: original speed", 0)
|
|
3865
|
+
GGraph.vector(tmpu * 0.5, tmpv * 0.5, true, 'unit_vect' => true, 'index' => 33, 'keep' => true)
|
|
3866
|
+
DCL::uxsttl("B", "Green: half speed with 'keep=T'", 0)
|
|
3867
|
+
|
|
3868
|
+
GGraph.set_fig('itr' => 30, 'viewport' => [0.2, 0.7, 0.1, 0.6])
|
|
3869
|
+
GGraph.vector(u.cut("lat" => 20..90, "level" => 200),
|
|
3870
|
+
v.cut("lat" => 20..90, "level" => 200), true,
|
|
3871
|
+
'unit_vect' => true, 'index' => 23)
|
|
3872
|
+
DCL::uxsttl("B", "Red: original speed", 0)
|
|
3873
|
+
GGraph.vector(u.cut("lat" => 20..90, "level" => 200) * 0.5,
|
|
3874
|
+
v.cut("lat" => 20..90, "level" => 200) * 0.5, true,
|
|
3875
|
+
'unit_vect' => true, 'index' => 33, 'keep' => true)
|
|
3876
|
+
DCL::uxsttl("B", "Green: half speed with 'keep=T'", 0)
|
|
3877
|
+
|
|
3878
|
+
|
|
3735
3879
|
############
|
|
3736
3880
|
DCL.grcls
|
|
3737
3881
|
|