Skip to content

DRAFT. [MVP-1] Geodesy Notebook 1#3

Draft
eshntmshra wants to merge 4 commits into
EarthScope:mainfrom
eshntmshra:tutorials/mvp-1-geodesy
Draft

DRAFT. [MVP-1] Geodesy Notebook 1#3
eshntmshra wants to merge 4 commits into
EarthScope:mainfrom
eshntmshra:tutorials/mvp-1-geodesy

Conversation

@eshntmshra

Copy link
Copy Markdown
Contributor

Draft PR for the first geodesy notebook.

Based on Alex's comments on slack, this might not be as useful or the recommended way of accessing EarthScope GNSS data. We can discard this notebook if not required.

@eshntmshra eshntmshra changed the title [MVP-1] Geodesy Notebook 1 DRAFT. [MVP-1] Geodesy Notebook 1 Jul 1, 2026
@eshntmshra

Copy link
Copy Markdown
Contributor Author

Added a new notebook that uses the EarthScope SDK for data retrieval. This is an introductory notebook that gives a brief introduction of GNSS data and teaches the users how to access it.

"id": "35320cb4-aed2-4420-8f9c-b3deb365e792",
"metadata": {},
"source": [
"**Version:** 1.0 | **Last updated:** 2026-07-09 | **Author:** Eshanta Mishra"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add affiliation: EarthScope Consortium, maintainer: EarthScope OnRamp Team, maintainer contact: help@earthscope.org

"id": "811fc68e-1e81-482c-82dd-5efa2a89d715",
"metadata": {},
"source": [
"## Learning Objectives\n",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this meant to repeat what is in the introduction/what you will accomplish section?

"\n",
"**Raw Observations vs. derived products**\n",
"\n",
"The data we retrieve in this notebook are raw observations. The geodetic results you may ultimately want such a station's position, displacement over time, etc. are derived products. These derived products are computed by processing many observations together. "

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor text edits:

  • such as
  • etc.,

"id": "52c5e185-8dca-42ff-8a9d-89c23297a761",
"metadata": {},
"source": [
"Since you use your EarthScope account to log into GeoLab, your EarthScope credentials are always available inside it. So, the client authenticates automatically. This removes the step of logging in or passing tokens manually, as you would do in a non GeoLab Environment."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tkbravo - How much authentication content is remaining in Cloud Foundations?

@eshntmshra I think we whould we add a note here, "if you are running this notebook outside geolab, you will need to follow steps (link) to add your authentication here"

"id": "421226b8-42bc-4d91-a517-469c29fa6e85",
"metadata": {},
"source": [
"`AsyncEarthScopeClient` is the asynchronous client. Async lets the SDK process a large query into many concurrent sub-requests, making large quantity of data retrieval more efficient. The SDK also comes with a synchronous `EarthScopeClient` if you prefer."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add hyperlink to sdk documentation where this is discussed

"\n",
"**Why it matters**: Some requests such as an entire network for a week will not fit in memory at once. Query plans also limit how many requests hit the API at the same time. Each group's sub-requests run in parallel and are collected into a single table you can process before moving on.\n",
"\n",
"The expected output is a summary for each group (row count, time span, and stations), rather than one huge dataframe."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I ran this, all that printed was "AsyncGnssObservationsQueryPlan(unplanned)" - is this expected?

"\n",
"\n",
"def summarize(table):\n",
" # Print a quick summary of one group's table.\n",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

perhaps add a commented out line or two of code that would calculate something more exciting, or call out exactly where someone would add their processing steps

"id": "8e88b724-65ec-4ef7-9e19-fb6bbf8c895b",
"metadata": {},
"source": [
"### A rough guide for choosing a strategy"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent

"\n",
"2. **Isolate one signal:** In Section 5, request a single `obs_code` (e.g. `\"5Q\"`) with `field=\"snr\"`. How much smaller is the result?\n",
"\n",
"3. **Save your results:** Write a fetched dataframe to the scratch directory (*Hint: Use `os.environ[\"SCRATCH_BUCKET\"]`*) as Parquet with `df.write_parquet(...)`, then read it back. Parquet preserves types and is far smaller than CSV."

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please write an example for this in one of the earlier steps, and maybe have them repeat it for a different dataframe here as an exercise. Writing to scratch and understanding different storage locations is critical. I know it doesn't show up in the plan until MVP2, but it makes sense to introduce here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this meant to be a duplicate file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants