"""blockm - Block average (x,y,z) data tables by mean or median estimation."""importpandasaspdfrompygmt.clibimportSessionfrompygmt.exceptionsimportGMTInvalidInputfrompygmt.helpersimport(GMTTempFile,build_arg_string,data_kind,dummy_context,fmt_docstring,kwargs_to_strings,use_alias,)def_blockm(block_method,table,outfile,**kwargs):r""" Block average (x,y,z) data tables by mean or median estimation. Reads arbitrarily located (x,y,z) triples [or optionally weighted quadruples (x,y,z,w)] from a table and writes to the output a mean or median (depending on ``block_method``) position and value for every non-empty block in a grid region defined by the ``region`` and ``spacing`` parameters. Parameters ---------- block_method : str Name of the GMT module to call. Must be "blockmean" or "blockmedian". Returns ------- output : pandas.DataFrame or None Return type depends on whether the ``outfile`` parameter is set: - :class:`pandas.DataFrame` table with (x, y, z) columns if ``outfile`` is not set - None if ``outfile`` is set (filtered output will be stored in file set by ``outfile``) """kind=data_kind(table)withGMTTempFile(suffix=".csv")astmpfile:withSession()aslib:ifkind=="matrix":ifnothasattr(table,"values"):raiseGMTInvalidInput(f"Unrecognized data type: {type(table)}")file_context=lib.virtualfile_from_matrix(table.values)elifkind=="file":ifoutfileisNone:raiseGMTInvalidInput("Please pass in a str to 'outfile'")file_context=dummy_context(table)else:raiseGMTInvalidInput(f"Unrecognized data type: {type(table)}")withfile_contextasinfile:ifoutfileisNone:outfile=tmpfile.namearg_str=" ".join([infile,build_arg_string(kwargs),"->"+outfile])lib.call_module(module=block_method,args=arg_str)# Read temporary csv output to a pandas tableifoutfile==tmpfile.name:# if user did not set outfile, return pd.DataFrameresult=pd.read_csv(tmpfile.name,sep="\t",names=table.columns)elifoutfile!=tmpfile.name:# return None if outfile set, output in outfileresult=Nonereturnresult
[docs]@fmt_docstring@use_alias(I="spacing",R="region",V="verbose",a="aspatial",f="coltypes",r="registration",)@kwargs_to_strings(R="sequence")defblockmean(table,outfile=None,**kwargs):r""" Block average (x,y,z) data tables by mean estimation. Reads arbitrarily located (x,y,z) triples [or optionally weighted quadruples (x,y,z,w)] from a table and writes to the output a mean position and value for every non-empty block in a grid region defined by the ``region`` and ``spacing`` parameters. Full option list at :gmt-docs:`blockmean.html` {aliases} Parameters ---------- table : pandas.DataFrame or str Either a pandas dataframe with (x, y, z) or (longitude, latitude, elevation) values in the first three columns, or a file name to an ASCII data table. spacing : str *xinc*\[\ *unit*\][**+e**\|\ **n**] [/*yinc*\ [*unit*][**+e**\|\ **n**]]. *xinc* [and optionally *yinc*] is the grid spacing. region : str or list *xmin/xmax/ymin/ymax*\[\ **+r**\][**+u**\ *unit*]. Specify the region of interest. outfile : str Required if ``table`` is a file. The file name for the output ASCII file. {V} {a} {f} {r} Returns ------- output : pandas.DataFrame or None Return type depends on whether the ``outfile`` parameter is set: - :class:`pandas.DataFrame` table with (x, y, z) columns if ``outfile`` is not set - None if ``outfile`` is set (filtered output will be stored in file set by ``outfile``) """return_blockm(block_method="blockmean",table=table,outfile=outfile,**kwargs)
[docs]@fmt_docstring@use_alias(I="spacing",R="region",V="verbose",a="aspatial",f="coltypes",r="registration",)@kwargs_to_strings(R="sequence")defblockmedian(table,outfile=None,**kwargs):r""" Block average (x,y,z) data tables by median estimation. Reads arbitrarily located (x,y,z) triples [or optionally weighted quadruples (x,y,z,w)] from a table and writes to the output a median position and value for every non-empty block in a grid region defined by the ``region`` and ``spacing`` parameters. Full option list at :gmt-docs:`blockmedian.html` {aliases} Parameters ---------- table : pandas.DataFrame or str Either a pandas dataframe with (x, y, z) or (longitude, latitude, elevation) values in the first three columns, or a file name to an ASCII data table. spacing : str *xinc*\[\ *unit*\][**+e**\|\ **n**] [/*yinc*\ [*unit*][**+e**\|\ **n**]]. *xinc* [and optionally *yinc*] is the grid spacing. region : str or list *xmin/xmax/ymin/ymax*\[\ **+r**\][**+u**\ *unit*]. Specify the region of interest. outfile : str Required if ``table`` is a file. The file name for the output ASCII file. {V} {a} {f} {r} Returns ------- output : pandas.DataFrame or None Return type depends on whether the ``outfile`` parameter is set: - :class:`pandas.DataFrame` table with (x, y, z) columns if ``outfile`` is not set - None if ``outfile`` is set (filtered output will be stored in file set by ``outfile``) """return_blockm(block_method="blockmedian",table=table,outfile=outfile,**kwargs)