rslearn 0.0.25__py3-none-any.whl → 0.0.27__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rslearn/config/dataset.py +30 -23
- rslearn/data_sources/__init__.py +2 -0
- rslearn/data_sources/aws_landsat.py +44 -161
- rslearn/data_sources/aws_open_data.py +2 -4
- rslearn/data_sources/aws_sentinel1.py +1 -3
- rslearn/data_sources/aws_sentinel2_element84.py +54 -165
- rslearn/data_sources/climate_data_store.py +1 -3
- rslearn/data_sources/copernicus.py +1 -2
- rslearn/data_sources/data_source.py +1 -1
- rslearn/data_sources/direct_materialize_data_source.py +336 -0
- rslearn/data_sources/earthdaily.py +52 -155
- rslearn/data_sources/earthdatahub.py +425 -0
- rslearn/data_sources/eurocrops.py +1 -2
- rslearn/data_sources/gcp_public_data.py +1 -2
- rslearn/data_sources/google_earth_engine.py +1 -2
- rslearn/data_sources/hf_srtm.py +595 -0
- rslearn/data_sources/local_files.py +3 -3
- rslearn/data_sources/openstreetmap.py +1 -1
- rslearn/data_sources/planet.py +1 -2
- rslearn/data_sources/planet_basemap.py +1 -2
- rslearn/data_sources/planetary_computer.py +183 -186
- rslearn/data_sources/soilgrids.py +3 -3
- rslearn/data_sources/stac.py +1 -2
- rslearn/data_sources/usda_cdl.py +1 -3
- rslearn/data_sources/usgs_landsat.py +7 -254
- rslearn/data_sources/utils.py +204 -64
- rslearn/data_sources/worldcereal.py +1 -1
- rslearn/data_sources/worldcover.py +1 -1
- rslearn/data_sources/worldpop.py +1 -1
- rslearn/data_sources/xyz_tiles.py +5 -9
- rslearn/dataset/materialize.py +5 -1
- rslearn/models/clay/clay.py +3 -3
- rslearn/models/concatenate_features.py +6 -1
- rslearn/models/detr/detr.py +4 -1
- rslearn/models/dinov3.py +0 -1
- rslearn/models/olmoearth_pretrain/model.py +3 -1
- rslearn/models/pooling_decoder.py +1 -1
- rslearn/models/prithvi.py +0 -1
- rslearn/models/simple_time_series.py +97 -35
- rslearn/train/{all_patches_dataset.py → all_crops_dataset.py} +120 -117
- rslearn/train/data_module.py +32 -27
- rslearn/train/dataset.py +260 -117
- rslearn/train/dataset_index.py +156 -0
- rslearn/train/lightning_module.py +1 -1
- rslearn/train/model_context.py +19 -3
- rslearn/train/prediction_writer.py +69 -41
- rslearn/train/tasks/classification.py +1 -1
- rslearn/train/tasks/detection.py +5 -5
- rslearn/train/tasks/per_pixel_regression.py +13 -13
- rslearn/train/tasks/regression.py +1 -1
- rslearn/train/tasks/segmentation.py +26 -13
- rslearn/train/transforms/concatenate.py +17 -27
- rslearn/train/transforms/crop.py +8 -19
- rslearn/train/transforms/flip.py +4 -10
- rslearn/train/transforms/mask.py +9 -15
- rslearn/train/transforms/normalize.py +31 -82
- rslearn/train/transforms/pad.py +7 -13
- rslearn/train/transforms/resize.py +5 -22
- rslearn/train/transforms/select_bands.py +16 -36
- rslearn/train/transforms/sentinel1.py +4 -16
- rslearn/utils/__init__.py +2 -0
- rslearn/utils/geometry.py +21 -0
- rslearn/utils/m2m_api.py +251 -0
- rslearn/utils/retry_session.py +43 -0
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/METADATA +6 -3
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/RECORD +71 -66
- rslearn/data_sources/earthdata_srtm.py +0 -282
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/WHEEL +0 -0
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/entry_points.txt +0 -0
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/licenses/LICENSE +0 -0
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/licenses/NOTICE +0 -0
- {rslearn-0.0.25.dist-info → rslearn-0.0.27.dist-info}/top_level.txt +0 -0
rslearn/utils/m2m_api.py
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"""API client for the USGS M2M API."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
import time
|
|
6
|
+
import uuid
|
|
7
|
+
from datetime import datetime, timedelta
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
import requests
|
|
11
|
+
|
|
12
|
+
from rslearn.log_utils import get_logger
|
|
13
|
+
|
|
14
|
+
logger = get_logger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class APIException(Exception):
|
|
18
|
+
"""Exception raised for M2M API errors."""
|
|
19
|
+
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class M2MAPIClient:
|
|
24
|
+
"""An API client for interacting with the USGS M2M API."""
|
|
25
|
+
|
|
26
|
+
api_url = "https://m2m.cr.usgs.gov/api/api/json/stable/"
|
|
27
|
+
pagination_size = 1000
|
|
28
|
+
|
|
29
|
+
def __init__(
|
|
30
|
+
self,
|
|
31
|
+
username: str | None = None,
|
|
32
|
+
token: str | None = None,
|
|
33
|
+
timeout: timedelta = timedelta(seconds=120),
|
|
34
|
+
session: requests.Session | None = None,
|
|
35
|
+
) -> None:
|
|
36
|
+
"""Initialize a new M2MAPIClient.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
username: the EROS username. If None, uses M2M_USERNAME environment variable.
|
|
40
|
+
token: the application token. If None, uses M2M_TOKEN environment variable.
|
|
41
|
+
timeout: timeout for requests.
|
|
42
|
+
session: optional requests session to use. If None, a default session is
|
|
43
|
+
created.
|
|
44
|
+
"""
|
|
45
|
+
if username is None:
|
|
46
|
+
username = os.environ.get("M2M_USERNAME")
|
|
47
|
+
if username is None:
|
|
48
|
+
raise ValueError(
|
|
49
|
+
"username must be provided or M2M_USERNAME environment variable must be set"
|
|
50
|
+
)
|
|
51
|
+
if token is None:
|
|
52
|
+
token = os.environ.get("M2M_TOKEN")
|
|
53
|
+
if token is None:
|
|
54
|
+
raise ValueError(
|
|
55
|
+
"token must be provided or M2M_TOKEN environment variable must be set"
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
self.username = username
|
|
59
|
+
self.timeout = timeout
|
|
60
|
+
self.session = session if session is not None else requests.Session()
|
|
61
|
+
|
|
62
|
+
json_data = json.dumps({"username": username, "token": token})
|
|
63
|
+
response = self.session.post(
|
|
64
|
+
self.api_url + "login-token",
|
|
65
|
+
data=json_data,
|
|
66
|
+
timeout=self.timeout.total_seconds(),
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
response.raise_for_status()
|
|
70
|
+
self.auth_token = response.json()["data"]
|
|
71
|
+
|
|
72
|
+
def request(
|
|
73
|
+
self, endpoint: str, data: dict[str, Any] | None = None
|
|
74
|
+
) -> dict[str, Any] | None:
|
|
75
|
+
"""Make a request to the API.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
endpoint: the endpoint to call
|
|
79
|
+
data: POST data to pass
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
JSON response data if any
|
|
83
|
+
"""
|
|
84
|
+
response = self.session.post(
|
|
85
|
+
self.api_url + endpoint,
|
|
86
|
+
headers={"X-Auth-Token": self.auth_token},
|
|
87
|
+
data=json.dumps(data),
|
|
88
|
+
timeout=self.timeout.total_seconds(),
|
|
89
|
+
)
|
|
90
|
+
response.raise_for_status()
|
|
91
|
+
if response.text:
|
|
92
|
+
response_dict = response.json()
|
|
93
|
+
|
|
94
|
+
if response_dict["errorMessage"]:
|
|
95
|
+
raise APIException(response_dict["errorMessage"])
|
|
96
|
+
return response_dict
|
|
97
|
+
return None
|
|
98
|
+
|
|
99
|
+
def get_filters(self, dataset_name: str) -> list[dict[str, Any]]:
|
|
100
|
+
"""Returns filters available for the given dataset.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
dataset_name: the dataset name e.g. landsat_ot_c2_l1
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
list of filter objects
|
|
107
|
+
"""
|
|
108
|
+
response_dict = self.request("dataset-filters", {"datasetName": dataset_name})
|
|
109
|
+
if response_dict is None:
|
|
110
|
+
raise APIException("No response from API")
|
|
111
|
+
return response_dict["data"]
|
|
112
|
+
|
|
113
|
+
def scene_search(
|
|
114
|
+
self,
|
|
115
|
+
dataset_name: str,
|
|
116
|
+
acquisition_time_range: tuple[datetime, datetime] | None = None,
|
|
117
|
+
cloud_cover_range: tuple[int, int] | None = None,
|
|
118
|
+
bbox: tuple[float, float, float, float] | None = None,
|
|
119
|
+
metadata_filter: dict[str, Any] | None = None,
|
|
120
|
+
) -> list[dict[str, Any]]:
|
|
121
|
+
"""Search for scenes matching the arguments.
|
|
122
|
+
|
|
123
|
+
Args:
|
|
124
|
+
dataset_name: the dataset name e.g. landsat_ot_c2_l1
|
|
125
|
+
acquisition_time_range: optional filter on the acquisition time
|
|
126
|
+
cloud_cover_range: optional filter on the cloud cover
|
|
127
|
+
bbox: optional spatial filter
|
|
128
|
+
metadata_filter: optional metadata filter dict
|
|
129
|
+
"""
|
|
130
|
+
base_data: dict[str, Any] = {"datasetName": dataset_name, "sceneFilter": {}}
|
|
131
|
+
if acquisition_time_range:
|
|
132
|
+
base_data["sceneFilter"]["acquisitionFilter"] = {
|
|
133
|
+
"start": acquisition_time_range[0].isoformat(),
|
|
134
|
+
"end": acquisition_time_range[1].isoformat(),
|
|
135
|
+
}
|
|
136
|
+
if cloud_cover_range:
|
|
137
|
+
base_data["sceneFilter"]["cloudCoverFilter"] = {
|
|
138
|
+
"min": cloud_cover_range[0],
|
|
139
|
+
"max": cloud_cover_range[1],
|
|
140
|
+
"includeUnknown": False,
|
|
141
|
+
}
|
|
142
|
+
if bbox:
|
|
143
|
+
base_data["sceneFilter"]["spatialFilter"] = {
|
|
144
|
+
"filterType": "mbr",
|
|
145
|
+
"lowerLeft": {"longitude": bbox[0], "latitude": bbox[1]},
|
|
146
|
+
"upperRight": {"longitude": bbox[2], "latitude": bbox[3]},
|
|
147
|
+
}
|
|
148
|
+
if metadata_filter:
|
|
149
|
+
base_data["sceneFilter"]["metadataFilter"] = metadata_filter
|
|
150
|
+
|
|
151
|
+
starting_number = 1
|
|
152
|
+
results = []
|
|
153
|
+
while True:
|
|
154
|
+
cur_data = base_data.copy()
|
|
155
|
+
cur_data["startingNumber"] = starting_number
|
|
156
|
+
cur_data["maxResults"] = self.pagination_size
|
|
157
|
+
response_dict = self.request("scene-search", cur_data)
|
|
158
|
+
if response_dict is None:
|
|
159
|
+
raise APIException("No response from API")
|
|
160
|
+
data = response_dict["data"]
|
|
161
|
+
results.extend(data["results"])
|
|
162
|
+
if data["recordsReturned"] < self.pagination_size:
|
|
163
|
+
break
|
|
164
|
+
starting_number += self.pagination_size
|
|
165
|
+
|
|
166
|
+
return results
|
|
167
|
+
|
|
168
|
+
def get_scene_metadata(self, dataset_name: str, entity_id: str) -> dict[str, Any]:
|
|
169
|
+
"""Get detailed metadata for a scene.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
dataset_name: the dataset name in which to search
|
|
173
|
+
entity_id: the entity ID of the scene
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
full scene metadata
|
|
177
|
+
"""
|
|
178
|
+
response_dict = self.request(
|
|
179
|
+
"scene-metadata",
|
|
180
|
+
{
|
|
181
|
+
"datasetName": dataset_name,
|
|
182
|
+
"entityId": entity_id,
|
|
183
|
+
"metadataType": "full",
|
|
184
|
+
},
|
|
185
|
+
)
|
|
186
|
+
if response_dict is None:
|
|
187
|
+
raise APIException("No response from API")
|
|
188
|
+
return response_dict["data"]
|
|
189
|
+
|
|
190
|
+
def get_downloadable_products(
|
|
191
|
+
self, dataset_name: str, entity_id: str
|
|
192
|
+
) -> list[dict[str, Any]]:
|
|
193
|
+
"""Get the downloadable products for a given scene.
|
|
194
|
+
|
|
195
|
+
Args:
|
|
196
|
+
dataset_name: the dataset name
|
|
197
|
+
entity_id: the entity ID of the scene
|
|
198
|
+
|
|
199
|
+
Returns:
|
|
200
|
+
list of downloadable products
|
|
201
|
+
"""
|
|
202
|
+
data = {"datasetName": dataset_name, "entityIds": [entity_id]}
|
|
203
|
+
response_dict = self.request("download-options", data)
|
|
204
|
+
if response_dict is None:
|
|
205
|
+
raise APIException("No response from API")
|
|
206
|
+
return response_dict["data"]
|
|
207
|
+
|
|
208
|
+
def get_download_url(self, entity_id: str, product_id: str) -> str:
|
|
209
|
+
"""Get the download URL for a given product.
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
entity_id: the entity ID of the product
|
|
213
|
+
product_id: the product ID of the product
|
|
214
|
+
|
|
215
|
+
Returns:
|
|
216
|
+
the download URL
|
|
217
|
+
"""
|
|
218
|
+
label = str(uuid.uuid4())
|
|
219
|
+
data = {
|
|
220
|
+
"downloads": [
|
|
221
|
+
{"label": label, "entityId": entity_id, "productId": product_id}
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
response_dict = self.request("download-request", data)
|
|
225
|
+
if response_dict is None:
|
|
226
|
+
raise APIException("No response from API")
|
|
227
|
+
response = response_dict["data"]
|
|
228
|
+
|
|
229
|
+
# Check if URL is immediately available in the response
|
|
230
|
+
if response.get("availableDownloads"):
|
|
231
|
+
return response["availableDownloads"][0]["url"]
|
|
232
|
+
|
|
233
|
+
# Otherwise poll download-retrieve until the URL is ready
|
|
234
|
+
while True:
|
|
235
|
+
# We sleep first because we have observed that if we immediately call
|
|
236
|
+
# download-retrieve it sometimes has a response that includes neither
|
|
237
|
+
# available nor requested list.
|
|
238
|
+
time.sleep(10)
|
|
239
|
+
response_dict = self.request("download-retrieve", {"label": label})
|
|
240
|
+
if response_dict is None:
|
|
241
|
+
raise APIException("No response from API")
|
|
242
|
+
response = response_dict["data"]
|
|
243
|
+
if len(response["available"]) > 0:
|
|
244
|
+
return response["available"][0]["url"]
|
|
245
|
+
if len(response["requested"]) == 0:
|
|
246
|
+
logger.debug(
|
|
247
|
+
f"Response to download-retrieve did not include our requested download under label {label}: {response}"
|
|
248
|
+
)
|
|
249
|
+
raise APIException("Did not get download URL")
|
|
250
|
+
if response["requested"][0].get("url"):
|
|
251
|
+
return response["requested"][0]["url"]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""Utility for creating requests sessions with retry logic."""
|
|
2
|
+
|
|
3
|
+
from datetime import timedelta
|
|
4
|
+
from http import HTTPStatus
|
|
5
|
+
|
|
6
|
+
import requests
|
|
7
|
+
from requests.adapters import HTTPAdapter
|
|
8
|
+
from urllib3.util.retry import Retry
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def create_retry_session(
|
|
12
|
+
total_retries: int = 5,
|
|
13
|
+
backoff_factor: float = 1.0,
|
|
14
|
+
backoff_max: timedelta = timedelta(seconds=60),
|
|
15
|
+
) -> requests.Session:
|
|
16
|
+
"""Create a requests session with retry logic.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
total_retries: maximum number of retries
|
|
20
|
+
backoff_factor: factor for exponential backoff
|
|
21
|
+
backoff_max: maximum backoff time
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
configured requests session
|
|
25
|
+
"""
|
|
26
|
+
session = requests.Session()
|
|
27
|
+
retry = Retry(
|
|
28
|
+
total=total_retries,
|
|
29
|
+
backoff_factor=backoff_factor,
|
|
30
|
+
backoff_max=backoff_max.total_seconds(),
|
|
31
|
+
allowed_methods=["GET", "POST"],
|
|
32
|
+
status_forcelist=[
|
|
33
|
+
HTTPStatus.TOO_MANY_REQUESTS,
|
|
34
|
+
HTTPStatus.INTERNAL_SERVER_ERROR,
|
|
35
|
+
HTTPStatus.BAD_GATEWAY,
|
|
36
|
+
HTTPStatus.SERVICE_UNAVAILABLE,
|
|
37
|
+
HTTPStatus.GATEWAY_TIMEOUT,
|
|
38
|
+
],
|
|
39
|
+
raise_on_status=False,
|
|
40
|
+
)
|
|
41
|
+
session.mount("http://", HTTPAdapter(max_retries=retry))
|
|
42
|
+
session.mount("https://", HTTPAdapter(max_retries=retry))
|
|
43
|
+
return session
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rslearn
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.27
|
|
4
4
|
Summary: A library for developing remote sensing datasets and models
|
|
5
5
|
Author: OlmoEarth Team
|
|
6
6
|
License: Apache License
|
|
@@ -248,6 +248,9 @@ Requires-Dist: pycocotools>=2.0; extra == "extra"
|
|
|
248
248
|
Requires-Dist: pystac_client>=0.9; extra == "extra"
|
|
249
249
|
Requires-Dist: rtree>=1.4; extra == "extra"
|
|
250
250
|
Requires-Dist: termcolor>=3.0; extra == "extra"
|
|
251
|
+
Requires-Dist: xarray>=2024.1; extra == "extra"
|
|
252
|
+
Requires-Dist: zarr>=3.1.2; extra == "extra"
|
|
253
|
+
Requires-Dist: numcodecs>=0.16; extra == "extra"
|
|
251
254
|
Requires-Dist: satlaspretrain_models>=0.3; extra == "extra"
|
|
252
255
|
Requires-Dist: scipy>=1.16; extra == "extra"
|
|
253
256
|
Requires-Dist: terratorch>=1.0.2; extra == "extra"
|
|
@@ -587,7 +590,7 @@ data:
|
|
|
587
590
|
groups: ["default"]
|
|
588
591
|
predict_config:
|
|
589
592
|
groups: ["predict"]
|
|
590
|
-
|
|
593
|
+
load_all_crops: true
|
|
591
594
|
skip_targets: true
|
|
592
595
|
patch_size: 512
|
|
593
596
|
trainer:
|
|
@@ -750,7 +753,7 @@ test_config:
|
|
|
750
753
|
split: val
|
|
751
754
|
predict_config:
|
|
752
755
|
groups: ["predict"]
|
|
753
|
-
|
|
756
|
+
load_all_crops: true
|
|
754
757
|
skip_targets: true
|
|
755
758
|
patch_size: 512
|
|
756
759
|
```
|
|
@@ -7,41 +7,43 @@ rslearn/main.py,sha256=rrDEoa0xCkDflH-HN2SaHt0hb-rLfXWP-kJKISZAe9s,28714
|
|
|
7
7
|
rslearn/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
rslearn/template_params.py,sha256=Vop0Ha-S44ctCa9lvSZRjrMETznJZlR5y_gJrVIwrPg,791
|
|
9
9
|
rslearn/config/__init__.py,sha256=n1qpZ0ImshTtLYl5mC73BORYyUcjPJyHiyZkqUY1hiY,474
|
|
10
|
-
rslearn/config/dataset.py,sha256=
|
|
11
|
-
rslearn/data_sources/__init__.py,sha256=
|
|
12
|
-
rslearn/data_sources/aws_landsat.py,sha256=
|
|
13
|
-
rslearn/data_sources/aws_open_data.py,sha256=
|
|
14
|
-
rslearn/data_sources/aws_sentinel1.py,sha256=
|
|
15
|
-
rslearn/data_sources/aws_sentinel2_element84.py,sha256=
|
|
16
|
-
rslearn/data_sources/climate_data_store.py,sha256=
|
|
17
|
-
rslearn/data_sources/copernicus.py,sha256=
|
|
18
|
-
rslearn/data_sources/data_source.py,sha256=
|
|
19
|
-
rslearn/data_sources/
|
|
20
|
-
rslearn/data_sources/
|
|
21
|
-
rslearn/data_sources/
|
|
22
|
-
rslearn/data_sources/
|
|
23
|
-
rslearn/data_sources/
|
|
24
|
-
rslearn/data_sources/
|
|
25
|
-
rslearn/data_sources/
|
|
26
|
-
rslearn/data_sources/
|
|
27
|
-
rslearn/data_sources/
|
|
28
|
-
rslearn/data_sources/
|
|
29
|
-
rslearn/data_sources/
|
|
30
|
-
rslearn/data_sources/
|
|
31
|
-
rslearn/data_sources/
|
|
32
|
-
rslearn/data_sources/
|
|
33
|
-
rslearn/data_sources/
|
|
10
|
+
rslearn/config/dataset.py,sha256=abxIUFDAYmCd4pzGnkPnW_pYyws1yhXFWJ5HnVU4WHo,23942
|
|
11
|
+
rslearn/data_sources/__init__.py,sha256=FZQckYwsnnLokMeYmi0ktUyQd9bAHyLN1_-Xc3qYLag,767
|
|
12
|
+
rslearn/data_sources/aws_landsat.py,sha256=bJmwBbUV4vjKBNp1MHt4sHhnIjhMis_jOI3FpksQc6w,16435
|
|
13
|
+
rslearn/data_sources/aws_open_data.py,sha256=fum34DqqDiuiiYBfZtGFrNNOLylE9o3o7Cyb2e0Eo0g,29101
|
|
14
|
+
rslearn/data_sources/aws_sentinel1.py,sha256=LfJLDhsd_6h_JinD8PbiiAyxajkIdvAc--5BJryUKlo,4674
|
|
15
|
+
rslearn/data_sources/aws_sentinel2_element84.py,sha256=qeCuiSlvhWChSY3AwYsKT6nZUsjNNWoOBPEUxkV8kJI,10112
|
|
16
|
+
rslearn/data_sources/climate_data_store.py,sha256=mqLJfYubD6m9VwxpLunoIv_MNFN6Ue1hBBVj552e8uQ,18289
|
|
17
|
+
rslearn/data_sources/copernicus.py,sha256=ushAgYGxU2MzPcUNnEvEfPgO0RCC9Rbjzi189xq0jgc,35001
|
|
18
|
+
rslearn/data_sources/data_source.py,sha256=xojlCoAnGTCHKbEx98JkW0oYzAKBbgGMNc0kicEjHWk,4863
|
|
19
|
+
rslearn/data_sources/direct_materialize_data_source.py,sha256=PBmxsLBNakJeX1s92pc4FCuHANfhkYHS2vt60RGdkj0,11276
|
|
20
|
+
rslearn/data_sources/earthdaily.py,sha256=qUtHUG1oV5IlCWXVovUcYxQhqdNDKWaEe-BKnooWX88,14623
|
|
21
|
+
rslearn/data_sources/earthdatahub.py,sha256=KRf1VnxPI9jsT0utEkeYvsCwu7LXo9t-RvMi8gXehag,15889
|
|
22
|
+
rslearn/data_sources/eurocrops.py,sha256=dJ4d0xvt-rID_HuAchyucFJBuAQL-Kk1h_qm6GOH-mE,8641
|
|
23
|
+
rslearn/data_sources/gcp_public_data.py,sha256=9M_tqGUG9740TC3ZRJ8-sekWkKFRp7_XdYHQEAloJpw,37301
|
|
24
|
+
rslearn/data_sources/google_earth_engine.py,sha256=7fytWecT7oWCx9u4nXidb4ycdOoX2hV3qCeVvOPleC8,23475
|
|
25
|
+
rslearn/data_sources/hf_srtm.py,sha256=tIKPdPt2vpRscsAmbsKbn_UlEIgJYua6lXRU2wwyXq4,21250
|
|
26
|
+
rslearn/data_sources/local_files.py,sha256=1m2fz5d5ZLDtx-qMxqVNGzVeGSL8RVYmrNe4NiQS5_Y,19065
|
|
27
|
+
rslearn/data_sources/openstreetmap.py,sha256=KZe52ZYwzetjsyCaWN43-WUcH1Xd8j6AocaOPidG6Yo,18162
|
|
28
|
+
rslearn/data_sources/planet.py,sha256=K4Lpm9UyUJjIiSISe3jDlV_o0UipLRJ2Snw7rmJfz2g,9398
|
|
29
|
+
rslearn/data_sources/planet_basemap.py,sha256=oColM4udr23e8c9dK-gc08a2q4Iil23tun3P9zjPOqc,9622
|
|
30
|
+
rslearn/data_sources/planetary_computer.py,sha256=hiYdYgU5gP2mJuDvF4tS4Sk4vWOndUcwfFUpQ7x-lZY,27231
|
|
31
|
+
rslearn/data_sources/soilgrids.py,sha256=qbnnCIOa6tlN8wxmNCzAj60-pghKEbRxa7lVIgM95Dk,12484
|
|
32
|
+
rslearn/data_sources/stac.py,sha256=Gj8TZ5pifVzWPCuzgphrle2ekQ02OET54rj-02sR2nw,10705
|
|
33
|
+
rslearn/data_sources/usda_cdl.py,sha256=3GhcgTB50T7GA44nB9WwItqDJliELquw_YbiAVxh6kc,6808
|
|
34
|
+
rslearn/data_sources/usgs_landsat.py,sha256=IsQOhWY8nwmgixJu1uMSR4CqsC3igcP3TArdBXkETd8,10178
|
|
35
|
+
rslearn/data_sources/utils.py,sha256=NOC0qOyYVS6f8EUrSeP4mH0XZbSrtTLV-gKGbCC6ccg,16586
|
|
34
36
|
rslearn/data_sources/vector_source.py,sha256=NCa7CxIrGKe9yRT0NyyFKFQboDGDZ1h7663PV9OfMOM,44
|
|
35
|
-
rslearn/data_sources/worldcereal.py,sha256=
|
|
36
|
-
rslearn/data_sources/worldcover.py,sha256=
|
|
37
|
-
rslearn/data_sources/worldpop.py,sha256=
|
|
38
|
-
rslearn/data_sources/xyz_tiles.py,sha256=
|
|
37
|
+
rslearn/data_sources/worldcereal.py,sha256=OWZA0pvQQiKvuA5AVAc0lw8JStMEeF4DYOh0n2vdg6I,21521
|
|
38
|
+
rslearn/data_sources/worldcover.py,sha256=ahyrGoXMAGWsIUDHSrqPywiK7ycwUD3E3BruNMxpo90,6057
|
|
39
|
+
rslearn/data_sources/worldpop.py,sha256=lUI7syzNs4FiGVLz2KIiFo63MafFSyWg__YdrSOXtWA,5645
|
|
40
|
+
rslearn/data_sources/xyz_tiles.py,sha256=RKn3q19FbgOR8a-qQ4ijnNPjmYPaVimIaSL7lsWlYqM,13729
|
|
39
41
|
rslearn/dataset/__init__.py,sha256=bHtBlEEBCekO-gaJqiww0-VjvZTE5ahx0llleo8bfP8,289
|
|
40
42
|
rslearn/dataset/add_windows.py,sha256=NwIvku6zxCJ9kgVFa5phJc0Gj1Y1bCzh6TLb9nEGl0s,8462
|
|
41
43
|
rslearn/dataset/dataset.py,sha256=YyGFy_VGUaOPfrEQqBl0Fp5JAsH3KNCqo6ZTu3TW4yY,3223
|
|
42
44
|
rslearn/dataset/handler_summaries.py,sha256=wI99RDk5erCWkzl1A7Uc4chatQ9KWIr4F_0Hxr9Co6s,2607
|
|
43
45
|
rslearn/dataset/manage.py,sha256=-lGSIgk6Z7-verF_POwe4n5w9eSpgyt4nEOcOj382rc,18971
|
|
44
|
-
rslearn/dataset/materialize.py,sha256=
|
|
46
|
+
rslearn/dataset/materialize.py,sha256=VoL5Qf5pGcQV4QMlO5vrcu7w0Sl1NdIRLUVk0kSCMOY,21225
|
|
45
47
|
rslearn/dataset/remap.py,sha256=6MaImsY02GNACpvRM81RvWmjZWRfAHxo_R3Ox6XLF6A,2723
|
|
46
48
|
rslearn/dataset/window.py,sha256=X4q8YzcSOTtwKxCPf71QLMoyKUtYMSnZu0kPnmVSUx4,10644
|
|
47
49
|
rslearn/dataset/storage/__init__.py,sha256=R50AVV5LH2g7ol0-jyvGcB390VsclXGbJXz4fmkn9as,52
|
|
@@ -52,10 +54,10 @@ rslearn/models/anysat.py,sha256=nzk6hB83ltNFNXYRNA1rTvq2AQcAhwyvgBaZui1M37o,8107
|
|
|
52
54
|
rslearn/models/attention_pooling.py,sha256=Kss1W_HYNzfX78RVDi18m0-cG2BoPsC240u0oEqJ0d4,7187
|
|
53
55
|
rslearn/models/clip.py,sha256=QG1oUFqcVuNEhx7BNfJ1FnxIOMNUwRNBwXCe3CR6wFI,2415
|
|
54
56
|
rslearn/models/component.py,sha256=uikFDzPYaW_LSXsrSsES1aup4IDIuWHsitWLpKgF7zU,3432
|
|
55
|
-
rslearn/models/concatenate_features.py,sha256=
|
|
57
|
+
rslearn/models/concatenate_features.py,sha256=0gZPkUBpyhzq1HNhN7mKl44u2vsL2p-o3gy5gpAy2go,3947
|
|
56
58
|
rslearn/models/conv.py,sha256=dEAAfhPo4bFlZPSAQjzqZTpP-hdJ394TytYssVK-fDA,2001
|
|
57
59
|
rslearn/models/croma.py,sha256=BcKV4-D4uira6f9zvW73aslF_XitAhObnyrE_3iTcTs,11008
|
|
58
|
-
rslearn/models/dinov3.py,sha256
|
|
60
|
+
rslearn/models/dinov3.py,sha256=Q9X7VTwzjllLSEvc235C9BY_jMnIoSybsiOkeA58uHo,6472
|
|
59
61
|
rslearn/models/faster_rcnn.py,sha256=yOipLPmVHbadvYCR9xfCYgmkU9Mot6fgDK-kKicVTlo,8685
|
|
60
62
|
rslearn/models/feature_center_crop.py,sha256=_Mu3E4iJLBug9I4ZIBIpB_VJo-xGterHmhtIFGaHR34,1808
|
|
61
63
|
rslearn/models/fpn.py,sha256=qm7nKMgsZrCoAdz8ASmNKU2nvZ6USm5CedMfy_w_gwE,2079
|
|
@@ -64,12 +66,12 @@ rslearn/models/molmo.py,sha256=lXnevwTCNyc1XcnJUB5_pK1G2AJGYMvQYU21mZFf5u0,2246
|
|
|
64
66
|
rslearn/models/multitask.py,sha256=bpFxvtFowRyT-tvRSdY7AKbEx_i1y7sToEzZgTMcF4s,16264
|
|
65
67
|
rslearn/models/panopticon.py,sha256=lXXBusXZfwdf10rBVPAQSbaGOMyKCDeEBmXShzvfMoU,5947
|
|
66
68
|
rslearn/models/pick_features.py,sha256=fI9SYubqpCWOAHYGVUSg5sgD31dsnAR9mNuLmqfIeL8,1110
|
|
67
|
-
rslearn/models/pooling_decoder.py,sha256=
|
|
68
|
-
rslearn/models/prithvi.py,sha256=
|
|
69
|
+
rslearn/models/pooling_decoder.py,sha256=tsRYihOPxhKUEnzbVueZ9Vr2pNXkt4fAkrbXC9Hftxw,4773
|
|
70
|
+
rslearn/models/prithvi.py,sha256=YTc26hBDJd6e5lky9Vqkz9x6tA2ZiY-GH2X3EFhJ0Zs,40347
|
|
69
71
|
rslearn/models/resize_features.py,sha256=U7ZIVwwToJJnwchFG59wLWWP9eikHDB_1c4OtpubxHU,1693
|
|
70
72
|
rslearn/models/sam2_enc.py,sha256=WZOtlp0FjaVztW4gEVIcsFQdKArS9iblRODP0b6Oc8M,3641
|
|
71
73
|
rslearn/models/satlaspretrain.py,sha256=2R48ulbtd44Qy2FYJCkllE2Wk35eZxkc79ruSgkmgcQ,3384
|
|
72
|
-
rslearn/models/simple_time_series.py,sha256=
|
|
74
|
+
rslearn/models/simple_time_series.py,sha256=CvJYMIC0cw26TnnwzJn5YTywi-NYEnGRzNb2a0bMf4E,18045
|
|
73
75
|
rslearn/models/singletask.py,sha256=9DM9a9-Mv3vVQqRhPOIXG2HHuVqVa_zuvgafeeYh4r0,1903
|
|
74
76
|
rslearn/models/ssl4eo_s12.py,sha256=DOlpIj6NfjIlWyJ27m9Xo8TMlovBDstFq0ARnmAJ6qY,3919
|
|
75
77
|
rslearn/models/swin.py,sha256=Xqr3SswbHP6IhwT2atZMAPF2TUzQqfxvihksb8WSeRo,6065
|
|
@@ -79,11 +81,11 @@ rslearn/models/trunk.py,sha256=1GCH9iyLIytoHVntLSMwfH9duQpe1W4DPmOClLpPKjc,4778
|
|
|
79
81
|
rslearn/models/unet.py,sha256=HuuINvkB1-5w9ZOTXZCWkVxJShruPKCol8pKeA3zw_4,7251
|
|
80
82
|
rslearn/models/upsample.py,sha256=JvfnktT6Dgcql3cSoySWXZ7dmkDkfpRo6vDkpz8KFAQ,1326
|
|
81
83
|
rslearn/models/use_croma.py,sha256=OSBqMuLp-pDtqPNWAVBfmX4wckmyYCKtUDdGCjJk_K8,17966
|
|
82
|
-
rslearn/models/clay/clay.py,sha256=
|
|
84
|
+
rslearn/models/clay/clay.py,sha256=L8pdT3v6cH6H8Kz_JB_851vpZF1Sj8jHz68MkiZbd44,8474
|
|
83
85
|
rslearn/models/clay/configs/metadata.yaml,sha256=rZTFh4Yb9htEfbQNOPl4HTbFogEhzwIRqFzG-1uT01Y,4652
|
|
84
86
|
rslearn/models/detr/__init__.py,sha256=GGAnTIhyuvl34IRrJ_4gXjm_01OlM5rbQQ3c3TGfbK8,84
|
|
85
87
|
rslearn/models/detr/box_ops.py,sha256=ORCF6EwMpMBB_VgQT05SjR47dCR2rN2gPhL_gsuUWJs,3236
|
|
86
|
-
rslearn/models/detr/detr.py,sha256=
|
|
88
|
+
rslearn/models/detr/detr.py,sha256=dmc9YEkQk5WyfQTQI47sv5yDxzJoeZFW_j6F03OkvLA,19236
|
|
87
89
|
rslearn/models/detr/matcher.py,sha256=4h_xFlgTMEJvJ6aLZUamrKZ72L5hDk9wPglNZ81JBg8,4533
|
|
88
90
|
rslearn/models/detr/position_encoding.py,sha256=8FFoBT-Jtgqk7D4qDBTbVLOeAdmjdjtJTC608TaX6yY,3869
|
|
89
91
|
rslearn/models/detr/transformer.py,sha256=aK4HO7AkCZn7xGHP3Iq91w2iFPVshugOILYAjVjroCw,13971
|
|
@@ -92,7 +94,7 @@ rslearn/models/galileo/__init__.py,sha256=QQa0C29nuPRva0KtGiMHQ2ZB02n9SSwj_wqTKP
|
|
|
92
94
|
rslearn/models/galileo/galileo.py,sha256=CTEuYGPmxhVv8YsZzFm0BeVW2yvdXp7j1GifT53EDLU,22525
|
|
93
95
|
rslearn/models/galileo/single_file_galileo.py,sha256=l5tlmmdr2eieHNH-M7rVIvcptkv0Fuk3vKXFW691ezA,56143
|
|
94
96
|
rslearn/models/olmoearth_pretrain/__init__.py,sha256=AjRvbjBdadCdPh-EdvySH76sVAQ8NGQaJt11Tsn1D5I,36
|
|
95
|
-
rslearn/models/olmoearth_pretrain/model.py,sha256=
|
|
97
|
+
rslearn/models/olmoearth_pretrain/model.py,sha256=wFWiNX4vyu49cYtjgb0VQMEZBk1LnaIEhTJnvzHduMY,17902
|
|
96
98
|
rslearn/models/olmoearth_pretrain/norm.py,sha256=pV-u9eBGxfiSFDMEipDwyTgKGhN1G5kSoOC5CBE1m-0,3336
|
|
97
99
|
rslearn/models/panopticon_data/sensors/drone.yaml,sha256=xqWS-_QMtJyRoWXJm-igoSur9hAmCFdqkPin8DT5qpw,431
|
|
98
100
|
rslearn/models/panopticon_data/sensors/enmap.yaml,sha256=b2j6bSgYR2yKR9DRm3SPIzSVYlHf51ny_p-1B4B9sB4,13431
|
|
@@ -113,13 +115,14 @@ rslearn/tile_stores/__init__.py,sha256=-cW1J7So60SEP5ZLHCPdaFBV5CxvV3QlOhaFnUkhT
|
|
|
113
115
|
rslearn/tile_stores/default.py,sha256=PYaDNvBxhJTDKJGw0EjDTSE1OKajR7_iJpMbOjj-mE8,15054
|
|
114
116
|
rslearn/tile_stores/tile_store.py,sha256=9AeYduDYPp_Ia2NMlq6osptpz_AFGIOQcLJrqZ_m-z0,10469
|
|
115
117
|
rslearn/train/__init__.py,sha256=fnJyY4aHs5zQqbDKSfXsJZXY_M9fbTsf7dRYaPwZr2M,30
|
|
116
|
-
rslearn/train/
|
|
117
|
-
rslearn/train/data_module.py,sha256=
|
|
118
|
-
rslearn/train/dataset.py,sha256=
|
|
119
|
-
rslearn/train/
|
|
120
|
-
rslearn/train/
|
|
118
|
+
rslearn/train/all_crops_dataset.py,sha256=CWnqbSjRXJZQsudljvpA07oldiP4fZTmjwrT0sjVnq4,21399
|
|
119
|
+
rslearn/train/data_module.py,sha256=yPShftkHJ2bhJ4carwYYb9c3PkkP7ArzXQyu37EuAxk,23718
|
|
120
|
+
rslearn/train/dataset.py,sha256=AAkdHX3q8VD1Geq9yIatiPkM5blA2luVPPwDmXDB6Z8,43284
|
|
121
|
+
rslearn/train/dataset_index.py,sha256=S5iXhQga5gnnkDqThXXlyjIwkJBPVWiUfDPx3iVs-pw,5306
|
|
122
|
+
rslearn/train/lightning_module.py,sha256=m0aIGk5xO5y12DEiwSl6eAko6X-gQ78_Wsbvz4Hb_NE,15364
|
|
123
|
+
rslearn/train/model_context.py,sha256=8DMWGj5xCRmRDo_38lkhkUMHfK_yg3XZrUJQIz5a1vA,3200
|
|
121
124
|
rslearn/train/optimizer.py,sha256=EKSqkmERalDA0bF32Gey7n6z69KLyaUWKlRsGJfKBmE,927
|
|
122
|
-
rslearn/train/prediction_writer.py,sha256=
|
|
125
|
+
rslearn/train/prediction_writer.py,sha256=cRFehEtr0iBuVqzE69a0B4Lvb8ywxLeyon34KWI86H0,16961
|
|
123
126
|
rslearn/train/scheduler.py,sha256=Yyq2fMHH08OyGt9qWD7iLc92XNIBbZHLtzlLR-f732s,2728
|
|
124
127
|
rslearn/train/callbacks/__init__.py,sha256=VNV0ArZyYMvl3dGK2wl6F046khYJ1dEBlJS6G_SYNm0,47
|
|
125
128
|
rslearn/train/callbacks/adapters.py,sha256=yfv8nyCj3jmo2_dNkFrjukKxh0MHsf2xKqWwMF0QUtY,1869
|
|
@@ -127,36 +130,38 @@ rslearn/train/callbacks/freeze_unfreeze.py,sha256=8fIzBMhCKKjpTffIeAdhdSjsBd8NjT
|
|
|
127
130
|
rslearn/train/callbacks/gradients.py,sha256=4YqCf0tBb6E5FnyFYbveXfQFlgNPyxIXb2FCWX4-6qs,5075
|
|
128
131
|
rslearn/train/callbacks/peft.py,sha256=wEOKsS3RhsRaZTXn_Kz2wdsZdIiIaZPdCJWtdJBurT8,4156
|
|
129
132
|
rslearn/train/tasks/__init__.py,sha256=dag1u72x1-me6y0YcOubUo5MYZ0Tjf6-dOir9UeFNMs,75
|
|
130
|
-
rslearn/train/tasks/classification.py,sha256=
|
|
131
|
-
rslearn/train/tasks/detection.py,sha256=
|
|
133
|
+
rslearn/train/tasks/classification.py,sha256=H-Ayqm59IxwrczC8lUV5J5vg-JILhQhTiVlyaTpBs2k,14259
|
|
134
|
+
rslearn/train/tasks/detection.py,sha256=uDMGtsCMSk9OGXn-vpFKBAyHyVN0ji2NCfqBgg1BQyw,21725
|
|
132
135
|
rslearn/train/tasks/embedding.py,sha256=NdJEAaDWlWYzvOBVf7eIHfFOzqTgavfFH1J1gMbAMVo,3891
|
|
133
136
|
rslearn/train/tasks/multi_task.py,sha256=32hvwyVsHqt7N_M3zXsTErK1K7-0-BPHzt7iGNehyaI,6314
|
|
134
|
-
rslearn/train/tasks/per_pixel_regression.py,sha256=
|
|
135
|
-
rslearn/train/tasks/regression.py,sha256=
|
|
136
|
-
rslearn/train/tasks/segmentation.py,sha256=
|
|
137
|
+
rslearn/train/tasks/per_pixel_regression.py,sha256=njShN-U9fx3SPcCxGgbDlZAp3DT_GlTt0BRZS416gnw,10387
|
|
138
|
+
rslearn/train/tasks/regression.py,sha256=_TGlj3PA14Iye0duf25TcGZQpFXU9fGfNilzpNuPS78,12693
|
|
139
|
+
rslearn/train/tasks/segmentation.py,sha256=dn1yo1dIArKvW9Giw8-LZyIZ87q76eslL0mk58GyApo,29663
|
|
137
140
|
rslearn/train/tasks/task.py,sha256=nMPunl9OlnOimr48saeTnwKMQ7Du4syGrwNKVQq4FL4,4110
|
|
138
141
|
rslearn/train/transforms/__init__.py,sha256=BkCAzm4f-8TEhPIuyvCj7eJGh36aMkZFYlq-H_jkSvY,778
|
|
139
|
-
rslearn/train/transforms/concatenate.py,sha256=
|
|
140
|
-
rslearn/train/transforms/crop.py,sha256=
|
|
141
|
-
rslearn/train/transforms/flip.py,sha256=
|
|
142
|
-
rslearn/train/transforms/mask.py,sha256=
|
|
143
|
-
rslearn/train/transforms/normalize.py,sha256=
|
|
144
|
-
rslearn/train/transforms/pad.py,sha256=
|
|
145
|
-
rslearn/train/transforms/resize.py,sha256=
|
|
146
|
-
rslearn/train/transforms/select_bands.py,sha256=
|
|
147
|
-
rslearn/train/transforms/sentinel1.py,sha256=
|
|
142
|
+
rslearn/train/transforms/concatenate.py,sha256=S8f1svzwb5UmeAgzXe4Af_hFvt5o0tQctIE6t3QYuPI,2625
|
|
143
|
+
rslearn/train/transforms/crop.py,sha256=_3Ca1KcIcZDD9x3WpFWIN54GrGosgg9b0xJiCboIOzs,4299
|
|
144
|
+
rslearn/train/transforms/flip.py,sha256=ptdbbelMWy6uI3vfXWY7flKGScGmv1hvWCJcAWnvuEo,3555
|
|
145
|
+
rslearn/train/transforms/mask.py,sha256=UnUeQp9HNab18EUgWJKieeMU0V7Fvgmoqg15INIkIeU,2348
|
|
146
|
+
rslearn/train/transforms/normalize.py,sha256=HXiVHBUxOsVYt9VeEs7KbfPFJxMxz_lh_RczLUcKlEw,3687
|
|
147
|
+
rslearn/train/transforms/pad.py,sha256=N2m4ni_TgeAmpzL9xwD8Qedmq7HbnundvBRMIp1TmAY,4817
|
|
148
|
+
rslearn/train/transforms/resize.py,sha256=LPXCD6NS8Xi1uPOtHxRWtT5CAkpEzsVafHkHIQ6PEO8,1959
|
|
149
|
+
rslearn/train/transforms/select_bands.py,sha256=owxMOvWEp8lRZhj6pQ1qFYebKZCQJZZCW8sBrK_T9-I,1868
|
|
150
|
+
rslearn/train/transforms/sentinel1.py,sha256=zYwT3amv1M7BYZIfkIX3J2Rzh161d-ngCqp3ypO9gBE,2011
|
|
148
151
|
rslearn/train/transforms/transform.py,sha256=n1Qzqix2dVvej-Q7iPzHeOQbqH79IBlvqPoymxhNVpE,4446
|
|
149
|
-
rslearn/utils/__init__.py,sha256=
|
|
152
|
+
rslearn/utils/__init__.py,sha256=GZc1erpEfXTc32yjEDbt5rnMrnXEBY7WVm3v4NlwwWY,620
|
|
150
153
|
rslearn/utils/array.py,sha256=RC7ygtPnQwU6Lb9kwORvNxatJcaJ76JPsykQvndAfes,2444
|
|
151
154
|
rslearn/utils/colors.py,sha256=ELY9_buH06TOVPLrDAyf2S0G--ZiOxnnP8Ujim6_3ig,369
|
|
152
155
|
rslearn/utils/feature.py,sha256=lsg0WThZDJzo1mrbaL04dXYI5G3x-n5FG9aEjj7uUaI,1649
|
|
153
156
|
rslearn/utils/fsspec.py,sha256=h3fER_bkewzR9liEAULXguTIvXLUXA17pC_yZoWN5Tk,5902
|
|
154
|
-
rslearn/utils/geometry.py,sha256=
|
|
157
|
+
rslearn/utils/geometry.py,sha256=VzLoxtwdV3uC3szowT-bGuCFF6ge8eK0m01lq8q-01Q,22423
|
|
155
158
|
rslearn/utils/get_utm_ups_crs.py,sha256=kUrcyjCK7KWvuP1XR-nURPeRqYeRO-3L8QUJ1QTF9Ps,3599
|
|
156
159
|
rslearn/utils/grid_index.py,sha256=hRmrtgpqN1pLa-djnZtgSXqKJlbgGyttGnCEmPLD0zo,2347
|
|
157
160
|
rslearn/utils/jsonargparse.py,sha256=TRyZA151KzhjJlZczIHYguEA-YxCDYaZ2IwCRgx76nM,4791
|
|
161
|
+
rslearn/utils/m2m_api.py,sha256=YemQkh9ItdU6ojP3XBUf9rj1we_P-8mdy7IHvlMNlKQ,8893
|
|
158
162
|
rslearn/utils/mp.py,sha256=XYmVckI5TOQuCKc49NJyirDJyFgvb4AI-gGypG2j680,1399
|
|
159
163
|
rslearn/utils/raster_format.py,sha256=fwotJBadwqYSdK8UokiKOk1pOF8JMim3kP_VwLWivPI,27382
|
|
164
|
+
rslearn/utils/retry_session.py,sha256=alVwqvZqqG3TZNg7NVbgfpUnSMdWve8T7gYzZmBz1jc,1284
|
|
160
165
|
rslearn/utils/rtree_index.py,sha256=j0Zwrq3pXuAJ-hKpiRFQ7VNtvO3fZYk-Em2uBPAqfx4,6460
|
|
161
166
|
rslearn/utils/spatial_index.py,sha256=eomJAUgzmjir8j9HZnSgQoJHwN9H0wGTjmJkMkLLfsU,762
|
|
162
167
|
rslearn/utils/sqlite_index.py,sha256=YGOJi66544e6JNtfSft6YIlHklFdSJO2duxQ4TJ2iu4,2920
|
|
@@ -170,10 +175,10 @@ rslearn/vis/render_sensor_image.py,sha256=D0ynK6ABPV046970lIKwF98klpSCtrsUvZTwtZ
|
|
|
170
175
|
rslearn/vis/render_vector_label.py,sha256=ncwgRKCYCJCK1-wTpjgksOiDDebku37LpAyq6wsg4jg,14939
|
|
171
176
|
rslearn/vis/utils.py,sha256=Zop3dEmyaXUYhPiGdYzrTO8BRXWscP2dEZy2myQUnNk,2765
|
|
172
177
|
rslearn/vis/vis_server.py,sha256=kIGnhTy-yfu5lBOVCoo8VVG259i974JPszudCePbzfI,20157
|
|
173
|
-
rslearn-0.0.
|
|
174
|
-
rslearn-0.0.
|
|
175
|
-
rslearn-0.0.
|
|
176
|
-
rslearn-0.0.
|
|
177
|
-
rslearn-0.0.
|
|
178
|
-
rslearn-0.0.
|
|
179
|
-
rslearn-0.0.
|
|
178
|
+
rslearn-0.0.27.dist-info/licenses/LICENSE,sha256=_99ZWPoLdlUbqZoSC5DF4ihiNwl5rTEmBaq2fACecdg,11352
|
|
179
|
+
rslearn-0.0.27.dist-info/licenses/NOTICE,sha256=wLPr6rwV_jCg-xEknNGwhnkfRfuoOE9MZ-lru2yZyLI,5070
|
|
180
|
+
rslearn-0.0.27.dist-info/METADATA,sha256=_6aHsGpgH_T2MQSb9qKeYshP6zdzwu3CmI2sBhD3dqk,38714
|
|
181
|
+
rslearn-0.0.27.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
182
|
+
rslearn-0.0.27.dist-info/entry_points.txt,sha256=doTBQ57NT7nq-dgYGgTTw6mafcGWb_4PWYtYR4rGm50,46
|
|
183
|
+
rslearn-0.0.27.dist-info/top_level.txt,sha256=XDKo90WBH8P9RQumHxo0giLJsoufT4r9odv-WE6Ahk4,8
|
|
184
|
+
rslearn-0.0.27.dist-info/RECORD,,
|