pygmt.clib.Session.virtualfile_from_data

Session.virtualfile_from_data(check_kind=None, data=None, x=None, y=None, z=None, extra_arrays=None, required_z=False, required_data=True)[source]

Store any data inside a virtual file.

This convenience function automatically detects the kind of data passed into it, and produces a virtualfile that can be passed into GMT later on.

Parameters:
  • check_kind (str or None) – Used to validate the type of data that can be passed in. Choose from ‘raster’, ‘vector’, or None. Default is None (no validation).

  • data (str or pathlib.Path or xarray.DataArray or numpy.ndarray, pandas.DataFrame, xarray.Dataset, or geopandas.GeoDataFrame or None) – Any raster or vector data format. This could be a file name or path, a raster grid, a vector matrix/arrays, or other supported data input.

  • x/y/z (1-D arrays or None) – x, y, and z columns as numpy arrays.

  • extra_arrays (list of 1-D arrays) – Optional. A list of numpy arrays in addition to x, y, and z. All of these arrays must be of the same size as the x/y/z arrays.

  • required_z (bool) – State whether the ‘z’ column is required.

  • required_data (bool) – Set to True when ‘data’ is required, or False when dealing with optional virtual files. [Default is True].

Returns:

file_context (contextlib._GeneratorContextManager) – The virtual file stored inside a context manager. Access the file name of this virtualfile using with file_context as fname: ....

Examples

>>> from pygmt.helpers import GMTTempFile
>>> import xarray as xr
>>> data = xr.Dataset(
...     coords=dict(index=[0, 1, 2]),
...     data_vars=dict(
...         x=("index", [9, 8, 7]),
...         y=("index", [6, 5, 4]),
...         z=("index", [3, 2, 1]),
...     ),
... )
>>> with Session() as ses:
...     with ses.virtualfile_from_data(check_kind="vector", data=data) as fin:
...         # Send the output to a file so that we can read it
...         with GMTTempFile() as fout:
...             ses.call_module("info", fin + " ->" + fout.name)
...             print(fout.read().strip())
<vector memory>: N = 3 <7/9> <4/6> <1/3>