Coder Social home page Coder Social logo

ncar / vapor Goto Github PK

View Code? Open in Web Editor NEW
177.0 20.0 49.0 86.96 MB

VAPOR is the Visualization and Analysis Platform for Ocean, Atmosphere, and Solar Researchers

Home Page: https://www.vapor.ucar.edu/

License: Other

C++ 79.30% C 10.06% Batchfile 0.01% Shell 0.85% Perl 0.84% Awk 0.01% CMake 1.21% Python 2.83% HTML 0.22% NCL 1.53% Prolog 0.28% IDL 1.10% Objective-C++ 0.04% GLSL 1.67% Dockerfile 0.08%
visualization atmosphere science

vapor's Introduction

DOI CircleCI

Vapor:

VAPOR is the Visualization and Analysis Platform for Ocean, Atmosphere, and Solar Researchers. VAPOR provides an interactive 3D visualization environment that can also produce animations and still frame images. VAPOR runs on most UNIX and Windows systems equipped with modern 3D graphics cards.

The VAPOR Data Collection (VDC) data model allows users progressively access the fidelity of their data, allowing for the visualization of terascale data sets on commodity hardware. VAPOR can also directly import data formats including WRF, MOM, POP, ROMS, and some GRIB and NetCDF files.

Users can perform ad-hoc analysis with VAPOR's interactive Python interpreter; which allows for the creation, modification, and visualization of new variables based on input model data.

VAPOR is a product of the NSF National Center for Atmospheric Research's Computational and Information Systems Lab. Support for VAPOR is provided by the U.S. National Science Foundation (grants # 03-25934 and 09-06379, ACI-14-40412), and by the Korea Institute of Science and Technology Information

Project homepage and binary releases can be found at https://www.vapor.ucar.edu/

Citation

If VAPOR benefits your research, please kindly cite this publication:

@Article{atmos10090488,
AUTHOR = {Li, Shaomeng and Jaroszynski, Stanislaw and Pearse, Scott and Orf, Leigh and Clyne, John},
TITLE = {VAPOR: A Visualization Package Tailored to Analyze Simulation Data in Earth System Science},
JOURNAL = {Atmosphere},
VOLUME = {10},
YEAR = {2019},
NUMBER = {9},
ARTICLE-NUMBER = {488},
URL = {https://www.mdpi.com/2073-4433/10/9/488},
ISSN = {2073-4433},
ABSTRACT = {Visualization is an essential tool for analysis of data and communication of findings in the sciences, and the Earth System Sciences (ESS) are no exception. However, within ESS, specialized visualization requirements and data models, particularly for those data arising from numerical models, often make general purpose visualization packages difficult, if not impossible, to use effectively. This paper presents VAPOR: a domain-specific visualization package that targets the specialized needs of ESS modelers, particularly those working in research settings where highly-interactive exploratory visualization is beneficial. We specifically describe VAPOR’s ability to handle ESS simulation data from a wide variety of numerical models, as well as a multi-resolution representation that enables interactive visualization on very large data while using only commodity computing resources. We also describe VAPOR’s visualization capabilities, paying particular attention to features for geo-referenced data and advanced rendering algorithms suitable for time-varying, 3D data. Finally, we illustrate VAPOR’s utility in the study of a numerically- simulated tornado. Our results demonstrate both ease-of-use and the rich capabilities of VAPOR in such a use case.},
DOI = {10.3390/atmos10090488}
}

Project Members:

  • Nihanth Cherukuru
  • John Clyne
  • Scott Pearse
  • Samuel Li
  • Stanislaw Jaroszynski
  • Kenny Gruchalla
  • Niklas Roeber
  • Pamela Gillman

Vapor Banner

vapor's People

Contributors

clyne avatar core-code avatar dependabot[bot] avatar erogluorhan avatar grosa1 avatar ifranda avatar jdaves-ucar avatar khallock avatar nihanthcw avatar opoplawski avatar remilacroix-idris avatar sgpearse avatar shaomeng avatar stasj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vapor's Issues

Crash on 2D Barb Renderer

To reproduce:

  1. Open Katrina VDC
  2. Add new barb renderer
  3. Change variable dimension to 2D
  4. Click in view

Barbs crash

Barbs crash immediately with the katrina data set.

To reproduce:

  1. Import katrina and create a Barb renderer
  2. On the variables tab change the dimension from 3D to 2D and select U10, and V10 variables
  3. Enable the renderer

Platform:
only tested on Mac

Compiler warning: function match data type

The following line yields a warning with Clang regarding a mismatch between function parameter and argument data types.

return(fabsf(* (int *) x1) > fabsf(* (int *) x2));

Compressor.cpp:140:9: warning: using floating point absolute value function 'fabsf' when argument is of
integer type [-Wabsolute-value]
return(fabsf(* (int ) x1) > fabsf( (int ) x2));
^
Compressor.cpp:140:9: note: use function 'std::abs' instead
return(fabsf(
(int ) x1) > fabsf( (int ) x2));
^~~~~
std::abs
Compressor.cpp:140:31: warning: using floating point absolute value function 'fabsf' when argument is of
integer type [-Wabsolute-value]
return(fabsf(
(int ) x1) > fabsf( (int ) x2));
^
Compressor.cpp:140:31: note: use function 'std::abs' instead
return(fabsf(
(int ) x1) > fabsf( (int *) x2));
^~~~~
std::abs

Barb Crash if assign a renderer name

To reproduce:

  1. Load KatrniaMaster.nc
  2. Click "new" button to create a Barb renderer. Give the renderer a name, say "AAA."
  3. Click OK. Vapor crashes.

Machine:
cisl-vapor

Time stepping incorrect with multiple data sets

Time stepping doesn't work correctly when multiple data sets are visualized.

To reproduce:

  1. Load the WRF and ROMS data from Data/CoupledWRFRoms
  2. Enable the 2D data renderer for both and select a variable that can be seen easily (e.g. sst for WRF and latent from ROMS)
  3. Advance the time step by a single step. Nothing changes. One of the renderings should change.

StructuredGrid seg fault

When using the statistics tool in the branch mergeMPAS, StructuredGrid seg faults when the following coordinates are applied to variable P:

Min XYZ: -50000 2.5e+06 10000
Max XYZ: 0 3e+06 20262.5

Conflicting documentation in vapor_utils.py

Lines 156 and 173 conflict with eacother in vapor_utils.py, regarding the ordering of our dimensions. is dim 1 = X, or Z?

156 "dir is 1, 2, or 3 (for X, Y, or Z directions in user coordinates)"

173 "derivative for user dir=1, in python this is third coordinate"

Barb: Fidelity control misbehave.

To reproduce:

  1. Load KatrniaMaster.nc
  2. Create a Barb renderer.
  3. Enable this renderer.
  4. The fidelity control at the bottom is at the lowest by default. After clicking other options, many black dots remain in the interface. See attachment.

Platform:
cisl-vapor

screenshot 2017-10-13 17 14 18

Can't apply transforms to multiple data sets

When multiple data sets are loaded into vaporgui transforms (e.g. translation) can only be applied to one of them.

To reproduce

  1. Load the wrf data set in Data/CoupledWrfRoms
  2. Load the ROMS data set in Data/CoupledWrfRoms
  3. Go to the Navigation/Viewpoint tab. The transforms have two rows (one for each data set), but one of the rows is empty.

TwoDData Seg Fault

Vapor will seg vault under the following conditions:

  1. Create a TwoDData renderer
  2. Enable it, then change the variable
  3. Change the fidelity, and it will crash

"Close a VDC in current session" doesn't seem to have any impact?

It seems to me VAPOR has at 2 states regarding to a VDC:

  1. not having a VDC loaded;
  2. with a VDC loaded.

When first invoking vaporgui without any data set parameters, it is in state 1), with most of the functions grayed out. After "Open a VDC in Current Session," it is in state 2), with most of the functions available. This is all making sense.

What I don't understand is when clicking "Close a VDC in current session." In my mind it should go back to state 1), but all the functions are still available, much like still in state 2).

I think we need some more intuitive descriptions here.

Renderer Names Not Sanitized

Create a new renderer and set its name to $. This will cause vapor to crash.

Actually, turns out giving it any name will cause it to crash.

Corrupt session file

Session files saved by vaporgui are corrupt.

To reproduce:

  1. Load any data set
  2. Create and enable a contour renderer
  3. Save the save with File/Save
  4. Exit the application.
  5. Restart the application and attempt to load the session file just created. An error message is generated.

Note: the session file contains an open tag

Specify what to save in an error box

The current error box has a button "Save," which actually saves the error log.

It'd be helpful to specify in the pop up WHAT to save. For example, change the error message to:

"An error has occured. Would you like to save the log?"
Option 1: Save
Option 2: Ignore
Option 3: Show details. (This option only comes out occasionally.)

screenshot from 2017-10-15 23-38-00

Crash upon importing CF data

Vapor crashes upon importing CF data.

To reproduce:
Run vapor from the current installer (OSX) located on /glade/p/VAST/VAPOR/release
Import the file /glade/p/VAST/VAPOR/Data/CF/Misc/dust_fire_summer.nc

Params extents not honored in DataMgr

Changing the extents in the Geometry tab of a TwoDData renderer only affects the rendered area by 20% increments. We can only render 20%, 40%, 60%, 80%, or 100% of the entire domain at a time. The problem seems to come from dataMgr->_find_bounding_grid().

To reproduce:

  1. Load KatrinaMaster.nc
  2. Create a new TwoDData renderer and enable it
  3. In the Geometry tab, slowly decrease the minimum X extent of the renderer until it re-renders with 80% of the domain. Continue this to render 60%, 40%, and finally 20% of the domain.

"Explain this" help msg on all widgets

Help -> Explain This provides explain message for some of the widgets, for example, play/pause animation controls. However, it doesn't provides explanation for the few view controls.

I think for consistency, it's better to have this help msg for all widgets. It's also OK to not include this msg at all.

Seg Fault on repeated Undos

Vapor seems to crash after hitting undo repeatedly. I'm seeing this in the main window, as well as in other areas such as with the plot utility.

To reproduce:

  1. Spin up Vapor, load any dataset (I used KatrinaMaster.nc)
  2. Initialize a Barb renderer, then hit Ctrl+Z repeatedly. Vapor will crash.

Crash upon rendering multiple datasets

To reproduce:

  1. Import the following CF file:
    /glade/p/VAST/VAPOR/Data/CoupledWrfRoms/kiost_roms_nwp12_avg_y1982-002.nc
  2. Import the following WRF file:
    /glade/p/VAST/VAPOR/Data/CoupledWrfRoms/wrfout_d01_1982-01-31_10_00_00
  3. Create a 2D renderer instance on the WRF file and enable it
  4. Create a barb renderer instance on the ROMS file, Vapor will crash

vdccreate adds unwarranted variable

vdccreate adds variable "var1" even if another is specified. If extra variable is not filled, vapor will crash when trying to add a renderer.

MapperFunction gets corrupted upon undo/redo

The MapperFunction sometimes gets corrupted after issuing an Undo command. This is a non-deterministic bug, and exists for both the TwoD and Barb renderers. Corrupt MapperFunctions appear as in the screenshot below. Data bounds seem correct, but the histogram and colorbar are not. The console emits glErrors from the file ShaderProgram.cpp when this happens.

To reproduce:

  1. Load any dataset, create a new TwoD or Barb renderer
  2. Adjust an opacity control point, then undo the change. The MapperFunction may get corrupted. If not, restart the application and try again.

screen shot 2017-07-06 at 2 11 39 pm

Statistics ignoring domain extents

The Statistics utility appears to be ignoring domain extents.

To reproduce:

  1. Load the Duku data set
  2. Launch Statistics, and select the P and PB variables. Click update and note values
  3. Change the maximum Z extent value to something close to the ground (e.g. 100)
  4. Click update. The statistics for P and PB do not change. These quantities are correlated to height and should change with Z.

Close a dataset doesn't seem working

To Reproduce:

  1. Open KatrniaMaster.nc, create a Barb renderer.
  2. Click File->Close a VDC from current session.
  3. Nothing happens on GUI; terminal window prints "how do we close a dataset?"

Barb variable dimension selection behave weird

To reproduce:

  1. Load KatrniaMaster.nc
  2. The default "variable dimension" is 3D. There's also a "Data Fidelity" section to choose.
  3. Select 2D from "variable dimension." The "Data Fidelity" section is gone.
  4. Select 3D from "variable dimension." The "Data Fidelity" section is not coming back...

Platform
cisl-vapor

Crash upon loading new transfer function

Vapor will crash when trying to load a new transfer function. The crash occurs in XmlNode::HasElementDouble(string tag) for the string "DataBounds".

To reproduce:

  1. Load KatrinaMaster.nc
  2. Create a TwoDData renderer
  3. In the 'Appearance' tab, press the 'Load TF' button and select any colormap from the default directory.
  4. Vapor will crash.

Duplicate Renderer crashes

To reproduce:

  1. Load KatrniaMaster.nc
  2. Create a Image renderer.
  3. Delete the Image renderer.
  4. Choose visualizer 1 in the duplicate drop-down menu.
  5. Vapor crashes.

Platform:
cisl-vapor

Fidelity control looking weird

To reproduce:

  1. Open KatrniaMaster.nc.
  2. Create a Barb renderer.
  3. Create a TwoDData renderer.
  4. Click the Barb renderer, and the Fidelity control looks like the screenshot.
    screenshot 2017-10-14 00 05 52

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.