From 27c3e581457b8a17aa542bc0798a7753822f7be5 Mon Sep 17 00:00:00 2001 From: erexer Date: Tue, 9 Apr 2024 14:14:10 +0000 Subject: [PATCH] deploy: cd5b71313562cc72b591ad5f2f1c8cda71980c02 --- _sources/quickstarter.rst.txt | 53 ++++++++++++++++++++++++++++----- _sources/release_notes.rst.txt | 6 ++++ index.html | 2 +- objects.inv | Bin 6063 -> 6167 bytes quickstarter.html | 49 ++++++++++++++++++++++++------ release_notes.html | 7 +++++ searchindex.js | 2 +- 7 files changed, 101 insertions(+), 18 deletions(-) diff --git a/_sources/quickstarter.rst.txt b/_sources/quickstarter.rst.txt index ad7391a10d..becafb5898 100644 --- a/_sources/quickstarter.rst.txt +++ b/_sources/quickstarter.rst.txt @@ -3,15 +3,15 @@ Quickstarter ============ -Data input +Input data ---------- The only input data required for `naturf` is a shapefile with building footprints and height data. There should be a field with a unique ID for each building the shapefile, and it should be in a projected coordinate system such as Alber Equal Area Conic. For input to the Weather Research and Forecasting model (WRF), the computed parameters for each building will be projected into WGS 84. Either check out our interactive `quickstarter `_, or continue below to run `naturf` using a python file. -Install `naturf` ------------------ +1. Install `naturf` +------------------- In a clean virtual or Conda environment, install `naturf`. NOTE: For Conda environments using Python 3.12, the `setuptools` package does not work as intended. One workaround is to create a Conda environment in Python 3.11. @@ -19,8 +19,8 @@ In a clean virtual or Conda environment, install `naturf`. NOTE: For Conda envir pip install naturf -Edit config variables and create run script -------------------------------------------- +2. Edit config variables and create run script +---------------------------------------------- The `config` module in `naturf` sets the default names for variables used in the `naturf` workflow. The two variables below need to be modified to reflect the ID field and the building height field of the input shapefile. Instructions on changing field names will be given further below. @@ -62,10 +62,49 @@ To run data other than the example data, create the `run.py` below. df = model.execute() model.graph() -Run `naturf` ------------- +3. Run `naturf` +--------------- This will run all functions required to create the output specified in the `run.py` `output_columns` variable. Currently `write_binary` and `write_index`. The `path` variable should point towards the input shapefile. .. code:: bash python run.py + + +Run using the `DAGWorks Platform `_ +---------------------------------------------------- + +Import os and the DAGWorks Tracker: + +.. code:: python3 + + import os + from dagworks import adapters + +Add this to `run.py` at the top of main: + +.. code:: python3 + + tracker = adapters.DAGWorksTracker( + project_id=, + api_key=os.environ["DAGWORKS_API_KEY"], + username="", + dag_name="", + tags={"environment": "DEV", "team": "MY_TEAM", "version": "X"} + ) + +Set the API Key as an environment variable: + +.. code:: bash + + $ export DAGWORKS_API_KEY="" + +Add `tracker` in the `hamilton_adaptors` list: + +.. code:: python3 + + hamilton_adapters = [ + base.SimplePythonDataFrameGraphAdapter(), + h_tqdm.ProgressBar("Naturf DAG"), + tracker, + ] diff --git a/_sources/release_notes.rst.txt b/_sources/release_notes.rst.txt index c8dcfc5eb1..3b95ea3c4a 100644 --- a/_sources/release_notes.rst.txt +++ b/_sources/release_notes.rst.txt @@ -4,6 +4,12 @@ Release notes This is the list of changes to **naturf** between each release. For full details, see the `commit logs `_. +Version 1.0.2 +_____________ + +- See the `v1.0.2 release notes `_. + + Version 1.0.1 _____________ diff --git a/index.html b/index.html index 8d85bc3b56..c01326a962 100644 --- a/index.html +++ b/index.html @@ -95,7 +95,7 @@

naturf documentation

-

Date: Apr 02, 2024 Version: 1.0.1

+

Date: Apr 09, 2024 Version: 1.0.1

Useful links: Source Repository | Issues & Ideas | diff --git a/objects.inv b/objects.inv index 77a802960d7040065cb77018887288875a900281..6f713f330f1e00a26e8e0afaed9432eeda4c8afd 100644 GIT binary patch delta 6098 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 Y&YVqcC9GMHi<{9 delta 5993 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