Skip to content

Commit 260cea8

Browse files
authored
Merge pull request #518 from MAAP-Project/develop
v4.3.0 release
2 parents 60eafaa + 849879b commit 260cea8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+11550
-684
lines changed

LICENSE

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,10 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright [yyyy] [name of copyright owner]
189+
Copyright (c) 2022 California Institute of Technology (“Caltech”) U.S. Government sponsorship acknowledged,
190+
and United States Government as represented by the Administrator of the National Aeronautics and Space Administration.
191+
All rights reserved.
192+
190193

191194
Licensed under the Apache License, Version 2.0 (the "License");
192195
you may not use this file except in compliance with the License.
19.5 KB
Loading

docs/source/getting_started/running_at_scale.ipynb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"## Register an Algorithm\n",
2626
"To register an Algorithm that can be run in the DPS, the code should be placed in a public Git repo (either Github or Gitlab).\n",
2727
"\n",
28-
"1. Open the Launcher -> Register Algorithm tool in the MAAP Extensions section\n",
28+
"1. Open the Register Algorithm tool in the MAAP Extensions section of the Launcher. To open the Launcher, choose File -> New Launcher, or press the blue \"+\" button above the Jupyter file browser.\n",
2929
"![Register Algorithm tool in Launcher](_static/launcher-register-algorithm.png)\n",
3030
"\n",
3131
"2. First you fill in the public code \"Repository Information\". \n",
@@ -48,7 +48,7 @@
4848
"3. Once that is complete we enter some \"General Information\". \n",
4949
"- The **Algorithm Name** will be the unique identifier for the algorithm in the MAAP system; for example, it is the label that you look for when running or monitoring a Job. It can be anything you would like. If you use the same name as an existing Algorithm, you will replace the existing Algorithm in the system with your new one.\n",
5050
"- **Algorithm Description** is additional free-form text to describe what this algorithm does.\n",
51-
"- **Disk Space** is the minimum amount of space you expect—including all inputs, scratch, and outputs—it gives the DPS an approximation to help optimize the run.\n",
51+
"- **Disk Space** is the minimum amount of space (in GB) you expect—including all inputs, scratch, and outputs—it gives the DPS an approximation to help optimize the run. For this tutorial we can just put `1`.\n",
5252
"- **Resource Allocation** tells the system what kind of cloud computer to use for a Job run with this Algorithm. Typically you will use `maap-dps-worker-` and the last number indicates the amount of RAM. In the example shown here, we choose the smallest amount of RAM because we have a very simple Algorithm, `maap-dps-worker-8gb`. The options available to you are based on your MAAP organization membership. Guest accounts will only be able to use the `maap-dps-sandbox`.\n",
5353
"- The **Container URL** is a URL of the Stack (workspace image environment) you are using as a base for the algorithm. This is a dropdown where the default is a standard minimal container called `maap_base` image such as `mas.maap-project.org/root/maap-workspaces/custom_images/maap_base:v4.2.0`. The other option is the Container of your current workspace (i.e. R, pangeo, etc.). These containers will have numerous conda packages installed which may or may not be useful for you. Just a note if you want the default conda packages for your current workspace container, if you successfully ran the Algorithm in a Terminal without adding additional packages, then you should be able to successfully use your current workspace container as the **Container URL** for your algorithm. \n",
5454
"We recommend using `maap_base` as it makes algorithm registration faster, although using it means you need to manage your own conda packages. More information how to make a custom conda environment [here](../system_reference_guide/custom-environments.html#Custom-environments). See the Algorithm Registration documentation for [more information on Containers](../system_reference_guide/algorithm_registration.ipynb#Container-URLs).\n",
@@ -141,6 +141,19 @@
141141
"You can find documentation on [using maap-py](../system_reference_guide/jobs_maappy.ipynb) with Python notebooks in the System Reference Guide.\n"
142142
]
143143
},
144+
{
145+
"cell_type": "markdown",
146+
"metadata": {},
147+
"source": [
148+
"## Scaling Up\n",
149+
"\n",
150+
"This basic example demonstrates the execution of a single job. You may be wondering how you would manage the cloud execution if you wanted to run many jobs at once. The answer is that you can simply keep submitting more jobs, and the system will handle the parallelization and scaling for you. \n",
151+
"\n",
152+
"You can press Submit Job repeatedly to create additional new executions of the same algorithm (perhaps you might change the `input_file` for each Job) and a queue will be created that begins executing your Jobs in parallel on the cloud.\n",
153+
"\n",
154+
"If you need more compute power for each single job (e.g. your algorithm is computationally and/or memory intensive, or if it requires a GPU) then you will select a different Resource to run on."
155+
]
156+
},
144157
{
145158
"cell_type": "markdown",
146159
"metadata": {},

docs/source/getting_started/writing_code.ipynb

Lines changed: 78 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"![Browse to folder](../_static/clone_demo6.png)\n",
5252
"![Look at Github UI](../_static/clone_demo7.png)\n",
5353
"\n",
54-
"4. If you want to make changes to the code and have your own copy of it to register, clone the code into a public repository in Github or in MAAP Gitlab.\n"
54+
"While developing an algorithm, this is how you would manage pushes and pulls to and from GitHub. For the purpose of this guide, there is no need to push or pull changes.\n"
5555
]
5656
},
5757
{
@@ -63,15 +63,78 @@
6363
"\n",
6464
"After creating your MAAP account, you can create a code repository by navigating to the MAAP GitLab account at https://repo.maap-project.org. This GitLab account is connected to your ADE workspaces automatically when signing into the ADE.\n",
6565
"\n",
66-
"You can then follow the same steps above to clone a repository from the MAAP GitLab. \n"
66+
"You can then follow the same steps above to clone a repository from the MAAP GitLab. \n",
67+
"\n",
68+
"Typically, scientists have been storing code in GitHub, but the built-in GitLab is available if you prefer.\n"
69+
]
70+
},
71+
{
72+
"cell_type": "markdown",
73+
"metadata": {},
74+
"source": [
75+
"## Testing an Algorithm the Workspace\n",
76+
"\n",
77+
"To make sure that an Algorithm is functioning as expected, we can run it in the Jupyter terminal in a way to mimic how the scaled DPS (Data Processing System) will run it.\n",
78+
"\n",
79+
"To do this, you will want to run the `run-test.sh` script from another folder. For the sake of this test, let's try running it in `/tmp/my_test_run`. You can call the folder whatever you'd like, maybe with your name in it to make it unique (e.g. `/tmp/robs_test_run`).\n",
80+
"\n",
81+
"When the DPS runs an algorithm, it will first copy input files into a folder called `input/`. It will write outputs into a folder called `output/`. In order to mimic this, let's copy a test file from the `dps-unit-test` repo into a temporary test-run folder `/tmp/my_test_run/input`. (When we get to the [actual run in the DPS](running_at_scale.ipynb#Run-the-Algorithm-as-a-Job-and-Monitor-it), you will specify an input file URL and that file will be downloaded into the `input/` folder of the cloud-worker before execution of the algorithm.)\n",
82+
"\n",
83+
"If you cloned the demo repository to `~/algorithms`, then the files should be somewhere like `~/algorithms/dps-unit-test`. For the sake of the example below, we will assume this is where the demo repo has been cloned.\n",
84+
"\n",
85+
"First copy the example input file into a folder called `input/`, from inside your temporary test-run folder.\n",
86+
"```\n",
87+
"mkdir /tmp/my_test_run\n",
88+
"cd /tmp/my_test_run\n",
89+
"mkdir input\n",
90+
"cp ~/algorithms/dps-unit-test/input_file.txt input\n",
91+
"ls input\n",
92+
"```\n",
93+
"\n",
94+
"This should show you the contents of the `input/` folder is the file `input_file.txt`.\n",
95+
"\n",
96+
"Then we can execute a test run of the `run-test.sh` script found in the repository you cloned.\n",
97+
"```\n",
98+
"cd /tmp/my_test_run\n",
99+
"~/algorithms/dps-unit-test/run-test.sh\n",
100+
"```\n",
101+
"\n",
102+
"If the run was successful, you should see the following output:\n",
103+
"```\n",
104+
"Testing writing output product\n",
105+
"Testing opening input file\n",
106+
"Opening input file input/input_file.txt success\n",
107+
"```\n",
108+
"\n",
109+
"Then if you do `ls *` you should see the content of the `input/` and `output/` folders:\n",
110+
"```\n",
111+
"> ls *\n",
112+
"input:\n",
113+
"input_file.txt\n",
114+
"\n",
115+
"output:\n",
116+
"write-output.txt\n",
117+
"```\n",
118+
"\n",
119+
"If the run was not successful, you may not have created the input folder with the input file in it. This may also happen if you run the `run-test.sh` script from the a different folder (where there is no `input/` folder). In that case you will see an error something like this:\n",
120+
"```\n",
121+
"ls: cannot access 'input/*': No such file or directory\n",
122+
"Testing writing output product\n",
123+
"Testing opening input file\n",
124+
"Traceback (most recent call last):\n",
125+
" File \"/projects/algorithms/dps_unit_test/dps-unit-test/test-input-file.py\", line 6, in <module>\n",
126+
" input_file = sys.argv[1]\n",
127+
" ~~~~~~~~^^^\n",
128+
"IndexError: list index out of range\n",
129+
"```\n"
67130
]
68131
},
69132
{
70133
"attachments": {},
71134
"cell_type": "markdown",
72135
"metadata": {},
73136
"source": [
74-
"## Customizing your workspace environment\n",
137+
"## Customizing your Workspace Environment\n",
75138
"\n",
76139
"Your Jupyter workspace has a set of pre-installed libraries, depending on [which Stack you selected](getting_started.ipynb#Creating-a-workspace). If you need libraries that are not pre-installed, we suggest using an environment manager; `conda` is pre-installed to help with this. \n",
77140
"\n",
@@ -86,7 +149,7 @@
86149
"\n",
87150
"The MAAP platform offers a variety of functionality to run and monitor large-scale processing jobs. Access to the functionality is gained via the underlying [RESTful MAAP API](https://api.maap-project.org/api/). In a Python notebook, you will typically use this API via a helper library called `maap.py`, which will make using MAAP platform features easy, using Python syntax. For example, registering algorithms, running batches of jobs, monitoring jobs, or accessing data.\n",
88151
"\n",
89-
"Much of the `maap.py` functionality is documented in the [Technical Tutorials section](../technical_tutorials.rst) and in-context in the [Science Tutorials](../science_examples.rst). The [maap-py Github page](https://github.com/MAAP-Project/maap-py) has additional usage documentation.\n"
152+
"Much of the `maap.py` functionality is documented in the [Technical Tutorials section](../technical_tutorials.rst) and in-context in the [Science Examples](../science_examples.rst). The [maap-py Github page](https://github.com/MAAP-Project/maap-py) has additional usage documentation.\n"
90153
]
91154
},
92155
{
@@ -105,6 +168,17 @@
105168
" "
106169
]
107170
},
171+
{
172+
"cell_type": "markdown",
173+
"metadata": {},
174+
"source": [
175+
"## Registering the Algorithm\n",
176+
"\n",
177+
"This section briefly demonstrated how you will sync algorithm code with GitHub as you develop it. Once your algorithm is ready to be run at scale, you will need to Register it with the MAAP DPS.\n",
178+
"\n",
179+
"The next section covers this process."
180+
]
181+
},
108182
{
109183
"cell_type": "markdown",
110184
"metadata": {},

docs/source/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Welcome to the MAAP User Documentation!
1313
science_examples.rst
1414
technical_tutorials.rst
1515
system_reference.rst
16+
troubleshooting_guides.rst
1617
release_notes.rst
1718

1819
Indices and tables

docs/source/release_notes.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,23 @@ Release Notes
33

44
Release notes will mention the release date, a summary for each release, and comprehensive descriptions of major changes, minor changes, feature removal, and bug-fixes. This is typically more comprehensive than the announcements on the GitHub Discussion board: https://github.com/orgs/MAAP-Project/discussions/categories/announcements.
55

6+
-------------------------------------------------------------
7+
4.3.0
8+
-------------------------------------------------------------
9+
| September 10, 2025
10+
| Release with several important improvements. To use the new features, please start a new v4.3.0 workspace.
11+
12+
Breaking changes
13+
^^^^^^^^^^^^
14+
* Update to R 4.4.3 to resolve vulnerability CVE-2024-27322 https://nvd.nist.gov/vuln/detail/CVE-2024-27322
15+
* This vulnerability enabled a maliciously crafted RDS (R Data Serialization) formatted file or R package to run arbitrary code on an end user’s system when interacted with
16+
* Updated packages in the R image
17+
* Removed basemap, r-lwgeom and r-tmap packages to be able to update R
18+
19+
Added
20+
^^^^^^^^^^^^
21+
* Improved security and error handling for the MAAP API
22+
623
-------------------------------------------------------------
724
4.2.0
825
-------------------------------------------------------------

docs/source/science/ATL03/ATL03.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"source": [
88
"# ICESat-02 ATL03 Subset and Visualize\n",
99
"\n",
10-
"Authors: Sumant Jha (MSFC/USRA), Samuel Ayers (UAH), Alex Mandel (DevSeed), Aimee Barciauskas (DevSeed)\n",
10+
"Authors: Sumant Jha (MSFC/USRA), Samuel Ayers (UAH), Alex Mandel (Development Seed), Aimee Barciauskas (Development Seed)\n",
1111
"\n",
1212
"Date: March 6, 2023\n",
1313
"\n",

docs/source/science/ATL08/ATL08.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"source": [
88
"# ATLAS/ICESat-02 ATL08 Access and Visualize\n",
99
"\n",
10-
"Author: Sumant Jha (MSFC/USRA), Alex Mandel (DevSeed), Jamison French (DevSeed), Rajat Shinde (UAH), Sheyenne Kirkland (UAH)\n",
10+
"Author: Sumant Jha (MSFC/USRA), Alex Mandel (Development Seed), Jamison French (Development Seed), Rajat Shinde (UAH), Sheyenne Kirkland (UAH)\n",
1111
"\n",
1212
"Date: March 7, 2024\n",
1313
"\n",

docs/source/science/AfriSAR/AfriSAR_AGB.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"source": [
88
"# AfriSAR Search and Visualize\n",
99
"\n",
10-
"Authors: Nikita Susan (UAH), Aimee Barciauskas (DevSeed)\n",
10+
"Authors: Nikita Susan (UAH), Aimee Barciauskas (Development Seed)\n",
1111
"\n",
1212
"Date: January 17, 2023\n",
1313
"\n",

docs/source/science/ESA_CCI/ESA_CCI_V4.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"tags": []
1818
},
1919
"source": [
20-
"Authors: Emile Tenezakis (DevSeed), Rajat Shinde (UAH)\n",
20+
"Authors: Emile Tenezakis (Development Seed), Rajat Shinde (UAH)\n",
2121
"\n",
2222
"Date: October 2, 2023\n",
2323
"\n",

0 commit comments

Comments
 (0)