rslearn 0.0.1__py3-none-any.whl → 0.0.21__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.
Files changed (166) hide show
  1. rslearn/arg_parser.py +31 -0
  2. rslearn/config/__init__.py +6 -12
  3. rslearn/config/dataset.py +520 -401
  4. rslearn/const.py +9 -15
  5. rslearn/data_sources/__init__.py +8 -23
  6. rslearn/data_sources/aws_landsat.py +242 -98
  7. rslearn/data_sources/aws_open_data.py +111 -151
  8. rslearn/data_sources/aws_sentinel1.py +131 -0
  9. rslearn/data_sources/climate_data_store.py +471 -0
  10. rslearn/data_sources/copernicus.py +884 -12
  11. rslearn/data_sources/data_source.py +43 -12
  12. rslearn/data_sources/earthdaily.py +484 -0
  13. rslearn/data_sources/earthdata_srtm.py +282 -0
  14. rslearn/data_sources/eurocrops.py +242 -0
  15. rslearn/data_sources/gcp_public_data.py +578 -222
  16. rslearn/data_sources/google_earth_engine.py +461 -135
  17. rslearn/data_sources/local_files.py +219 -150
  18. rslearn/data_sources/openstreetmap.py +51 -89
  19. rslearn/data_sources/planet.py +24 -60
  20. rslearn/data_sources/planet_basemap.py +275 -0
  21. rslearn/data_sources/planetary_computer.py +798 -0
  22. rslearn/data_sources/usda_cdl.py +195 -0
  23. rslearn/data_sources/usgs_landsat.py +115 -83
  24. rslearn/data_sources/utils.py +249 -61
  25. rslearn/data_sources/vector_source.py +1 -0
  26. rslearn/data_sources/worldcereal.py +449 -0
  27. rslearn/data_sources/worldcover.py +144 -0
  28. rslearn/data_sources/worldpop.py +153 -0
  29. rslearn/data_sources/xyz_tiles.py +150 -107
  30. rslearn/dataset/__init__.py +8 -2
  31. rslearn/dataset/add_windows.py +2 -2
  32. rslearn/dataset/dataset.py +40 -51
  33. rslearn/dataset/handler_summaries.py +131 -0
  34. rslearn/dataset/manage.py +313 -74
  35. rslearn/dataset/materialize.py +431 -107
  36. rslearn/dataset/remap.py +29 -4
  37. rslearn/dataset/storage/__init__.py +1 -0
  38. rslearn/dataset/storage/file.py +202 -0
  39. rslearn/dataset/storage/storage.py +140 -0
  40. rslearn/dataset/window.py +181 -44
  41. rslearn/lightning_cli.py +454 -0
  42. rslearn/log_utils.py +24 -0
  43. rslearn/main.py +384 -181
  44. rslearn/models/anysat.py +215 -0
  45. rslearn/models/attention_pooling.py +177 -0
  46. rslearn/models/clay/clay.py +231 -0
  47. rslearn/models/clay/configs/metadata.yaml +295 -0
  48. rslearn/models/clip.py +68 -0
  49. rslearn/models/component.py +111 -0
  50. rslearn/models/concatenate_features.py +103 -0
  51. rslearn/models/conv.py +63 -0
  52. rslearn/models/croma.py +306 -0
  53. rslearn/models/detr/__init__.py +5 -0
  54. rslearn/models/detr/box_ops.py +103 -0
  55. rslearn/models/detr/detr.py +504 -0
  56. rslearn/models/detr/matcher.py +107 -0
  57. rslearn/models/detr/position_encoding.py +114 -0
  58. rslearn/models/detr/transformer.py +429 -0
  59. rslearn/models/detr/util.py +24 -0
  60. rslearn/models/dinov3.py +177 -0
  61. rslearn/models/faster_rcnn.py +30 -28
  62. rslearn/models/feature_center_crop.py +53 -0
  63. rslearn/models/fpn.py +19 -8
  64. rslearn/models/galileo/__init__.py +5 -0
  65. rslearn/models/galileo/galileo.py +595 -0
  66. rslearn/models/galileo/single_file_galileo.py +1678 -0
  67. rslearn/models/module_wrapper.py +65 -0
  68. rslearn/models/molmo.py +69 -0
  69. rslearn/models/multitask.py +384 -28
  70. rslearn/models/olmoearth_pretrain/__init__.py +1 -0
  71. rslearn/models/olmoearth_pretrain/model.py +421 -0
  72. rslearn/models/olmoearth_pretrain/norm.py +86 -0
  73. rslearn/models/panopticon.py +170 -0
  74. rslearn/models/panopticon_data/sensors/drone.yaml +32 -0
  75. rslearn/models/panopticon_data/sensors/enmap.yaml +904 -0
  76. rslearn/models/panopticon_data/sensors/goes.yaml +9 -0
  77. rslearn/models/panopticon_data/sensors/himawari.yaml +9 -0
  78. rslearn/models/panopticon_data/sensors/intuition.yaml +606 -0
  79. rslearn/models/panopticon_data/sensors/landsat8.yaml +84 -0
  80. rslearn/models/panopticon_data/sensors/modis_terra.yaml +99 -0
  81. rslearn/models/panopticon_data/sensors/qb2_ge1.yaml +34 -0
  82. rslearn/models/panopticon_data/sensors/sentinel1.yaml +85 -0
  83. rslearn/models/panopticon_data/sensors/sentinel2.yaml +97 -0
  84. rslearn/models/panopticon_data/sensors/superdove.yaml +60 -0
  85. rslearn/models/panopticon_data/sensors/wv23.yaml +63 -0
  86. rslearn/models/pick_features.py +17 -10
  87. rslearn/models/pooling_decoder.py +60 -7
  88. rslearn/models/presto/__init__.py +5 -0
  89. rslearn/models/presto/presto.py +297 -0
  90. rslearn/models/presto/single_file_presto.py +926 -0
  91. rslearn/models/prithvi.py +1147 -0
  92. rslearn/models/resize_features.py +59 -0
  93. rslearn/models/sam2_enc.py +13 -9
  94. rslearn/models/satlaspretrain.py +38 -18
  95. rslearn/models/simple_time_series.py +188 -77
  96. rslearn/models/singletask.py +24 -13
  97. rslearn/models/ssl4eo_s12.py +40 -30
  98. rslearn/models/swin.py +44 -32
  99. rslearn/models/task_embedding.py +250 -0
  100. rslearn/models/terramind.py +256 -0
  101. rslearn/models/trunk.py +139 -0
  102. rslearn/models/unet.py +68 -22
  103. rslearn/models/upsample.py +48 -0
  104. rslearn/models/use_croma.py +508 -0
  105. rslearn/template_params.py +26 -0
  106. rslearn/tile_stores/__init__.py +41 -18
  107. rslearn/tile_stores/default.py +409 -0
  108. rslearn/tile_stores/tile_store.py +236 -132
  109. rslearn/train/all_patches_dataset.py +530 -0
  110. rslearn/train/callbacks/adapters.py +53 -0
  111. rslearn/train/callbacks/freeze_unfreeze.py +348 -17
  112. rslearn/train/callbacks/gradients.py +129 -0
  113. rslearn/train/callbacks/peft.py +116 -0
  114. rslearn/train/data_module.py +444 -20
  115. rslearn/train/dataset.py +588 -235
  116. rslearn/train/lightning_module.py +192 -62
  117. rslearn/train/model_context.py +88 -0
  118. rslearn/train/optimizer.py +31 -0
  119. rslearn/train/prediction_writer.py +319 -84
  120. rslearn/train/scheduler.py +92 -0
  121. rslearn/train/tasks/classification.py +55 -28
  122. rslearn/train/tasks/detection.py +132 -76
  123. rslearn/train/tasks/embedding.py +120 -0
  124. rslearn/train/tasks/multi_task.py +28 -14
  125. rslearn/train/tasks/per_pixel_regression.py +291 -0
  126. rslearn/train/tasks/regression.py +161 -44
  127. rslearn/train/tasks/segmentation.py +428 -53
  128. rslearn/train/tasks/task.py +6 -5
  129. rslearn/train/transforms/__init__.py +1 -1
  130. rslearn/train/transforms/concatenate.py +54 -10
  131. rslearn/train/transforms/crop.py +29 -11
  132. rslearn/train/transforms/flip.py +18 -6
  133. rslearn/train/transforms/mask.py +78 -0
  134. rslearn/train/transforms/normalize.py +101 -17
  135. rslearn/train/transforms/pad.py +19 -7
  136. rslearn/train/transforms/resize.py +83 -0
  137. rslearn/train/transforms/select_bands.py +76 -0
  138. rslearn/train/transforms/sentinel1.py +75 -0
  139. rslearn/train/transforms/transform.py +89 -70
  140. rslearn/utils/__init__.py +2 -6
  141. rslearn/utils/array.py +8 -6
  142. rslearn/utils/feature.py +2 -2
  143. rslearn/utils/fsspec.py +90 -1
  144. rslearn/utils/geometry.py +347 -7
  145. rslearn/utils/get_utm_ups_crs.py +2 -3
  146. rslearn/utils/grid_index.py +5 -5
  147. rslearn/utils/jsonargparse.py +178 -0
  148. rslearn/utils/mp.py +4 -3
  149. rslearn/utils/raster_format.py +268 -116
  150. rslearn/utils/rtree_index.py +64 -17
  151. rslearn/utils/sqlite_index.py +7 -1
  152. rslearn/utils/vector_format.py +252 -97
  153. {rslearn-0.0.1.dist-info → rslearn-0.0.21.dist-info}/METADATA +532 -283
  154. rslearn-0.0.21.dist-info/RECORD +167 -0
  155. {rslearn-0.0.1.dist-info → rslearn-0.0.21.dist-info}/WHEEL +1 -1
  156. rslearn-0.0.21.dist-info/licenses/NOTICE +115 -0
  157. rslearn/data_sources/raster_source.py +0 -309
  158. rslearn/models/registry.py +0 -5
  159. rslearn/tile_stores/file.py +0 -242
  160. rslearn/utils/mgrs.py +0 -24
  161. rslearn/utils/utils.py +0 -22
  162. rslearn-0.0.1.dist-info/RECORD +0 -88
  163. /rslearn/{data_sources/geotiff.py → py.typed} +0 -0
  164. {rslearn-0.0.1.dist-info → rslearn-0.0.21.dist-info}/entry_points.txt +0 -0
  165. {rslearn-0.0.1.dist-info → rslearn-0.0.21.dist-info/licenses}/LICENSE +0 -0
  166. {rslearn-0.0.1.dist-info → rslearn-0.0.21.dist-info}/top_level.txt +0 -0
@@ -1,242 +0,0 @@
1
- """FileTileStore TileStore implementation."""
2
-
3
- import json
4
- from typing import Any
5
-
6
- import numpy.typing as npt
7
- from upath import UPath
8
-
9
- from rslearn.config import RasterFormatConfig, TileStoreConfig, VectorFormatConfig
10
- from rslearn.utils import Feature, PixelBounds, Projection
11
- from rslearn.utils.fsspec import open_atomic
12
- from rslearn.utils.raster_format import (
13
- GeotiffRasterFormat,
14
- RasterFormat,
15
- load_raster_format,
16
- )
17
- from rslearn.utils.vector_format import (
18
- GeojsonVectorFormat,
19
- VectorFormat,
20
- load_vector_format,
21
- )
22
-
23
- from .tile_store import LayerMetadata, TileStore, TileStoreLayer
24
-
25
-
26
- class FileTileStoreLayer(TileStoreLayer):
27
- """A layer in a FileTileStore."""
28
-
29
- def __init__(
30
- self,
31
- path: UPath,
32
- projection: Projection | None = None,
33
- raster_format: RasterFormat = GeotiffRasterFormat(),
34
- vector_format: VectorFormat = GeojsonVectorFormat(),
35
- ):
36
- """Creates a new FileTileStoreLayer.
37
-
38
- The root directory is a subfolder of the FileTileStore's root directory.
39
-
40
- Args:
41
- fs: filesystem where this layer is stored
42
- path: path on the filesystem corresponding to this layer
43
- projection: the projection of this layer
44
- raster_format: the RasterFormat to use for reading/writing raster data
45
- vector_format: the VectorFormat to use for reading/writing vector data
46
- """
47
- self.path = path
48
- self.raster_format = raster_format
49
- self.vector_format = vector_format
50
- self.projection = projection
51
-
52
- if not self.projection:
53
- self.projection = self.get_metadata().projection
54
-
55
- def read_raster(self, bounds: PixelBounds) -> npt.NDArray[Any] | None:
56
- """Read raster data from the store.
57
-
58
- Args:
59
- bounds: the bounds within which to read
60
-
61
- Returns:
62
- the raster data
63
- """
64
- return self.raster_format.decode_raster(self.path, bounds)
65
-
66
- def write_raster(self, bounds: PixelBounds, array: npt.NDArray[Any]) -> None:
67
- """Write raster data to the store.
68
-
69
- Args:
70
- bounds: the bounds of the raster
71
- array: the raster data
72
- """
73
- self.raster_format.encode_raster(self.path, self.projection, bounds, array)
74
-
75
- def get_raster_bounds(self) -> PixelBounds:
76
- """Gets the bounds of the raster data in the store."""
77
- return self.raster_format.get_raster_bounds(self.path)
78
-
79
- def read_vector(self, bounds: PixelBounds) -> list[Feature]:
80
- """Read vector data from the store.
81
-
82
- Args:
83
- bounds: the bounds within which to read
84
-
85
- Returns:
86
- the vector data
87
- """
88
- return self.vector_format.decode_vector(self.path, bounds)
89
-
90
- def write_vector(self, data: list[Feature]) -> None:
91
- """Save vector tiles to the store.
92
-
93
- Args:
94
- data: the vector data
95
- """
96
- self.vector_format.encode_vector(self.path, self.projection, data)
97
-
98
- def get_metadata(self) -> LayerMetadata:
99
- """Get the LayerMetadata associated with this layer."""
100
- with (self.path / "metadata.json").open("r") as f:
101
- return LayerMetadata.deserialize(json.load(f))
102
-
103
- def set_property(self, key: str, value: Any) -> None:
104
- """Set a property in the metadata for this layer.
105
-
106
- Args:
107
- key: the property key
108
- value: the property value
109
- """
110
- metadata = self.get_metadata()
111
- metadata.properties[key] = value
112
- self.save_metadata(metadata)
113
-
114
- def save_metadata(self, metadata: LayerMetadata) -> None:
115
- """Save the LayerMetadata associated with this layer."""
116
- self.path.mkdir(parents=True, exist_ok=True)
117
- metadata_path = self.path / "metadata.json"
118
- with open_atomic(metadata_path, "w") as f:
119
- json.dump(metadata.serialize(), f)
120
-
121
-
122
- class FileTileStore(TileStore):
123
- """A TileStore that stores data on the local filesystem."""
124
-
125
- def __init__(
126
- self,
127
- path: UPath,
128
- raster_format: RasterFormat = GeotiffRasterFormat(),
129
- vector_format: VectorFormat = GeojsonVectorFormat(),
130
- ):
131
- """Initialize a new FileTileStore.
132
-
133
- Args:
134
- fs: the filesystem for this tile store.
135
- path: the path on the fs containing root of this tile store.
136
- raster_format: the RasterFormat (defaults to Geotiff)
137
- vector_format: the VectorFormat (defaults to GeoJSON)
138
- """
139
- self.path = path
140
- self.raster_format = raster_format
141
- self.vector_format = vector_format
142
-
143
- def _get_layer_dir(self, layer_id: tuple[str, ...]) -> UPath:
144
- """Get the path of the specified layer ID."""
145
- cur = self.path
146
- for part in layer_id:
147
- if "/" in part or part.startswith("."):
148
- raise ValueError(f"Invalid layer_id part {part}")
149
- cur /= part
150
- return cur
151
-
152
- def create_layer(
153
- self, layer_id: tuple[str, ...], metadata: LayerMetadata
154
- ) -> TileStoreLayer:
155
- """Create a layer in the tile store (or get matching existing layer).
156
-
157
- Args:
158
- layer_id: the id of the layer to create
159
- metadata: metadata about the layer
160
-
161
- Returns:
162
- a TileStoreLayer corresponding to the new or pre-existing layer
163
- """
164
- layer_dir = self._get_layer_dir(layer_id)
165
- layer = FileTileStoreLayer(
166
- layer_dir,
167
- projection=metadata.projection,
168
- raster_format=self.raster_format,
169
- vector_format=self.vector_format,
170
- )
171
- if not (layer_dir / "metadata.json").exists():
172
- layer.save_metadata(metadata)
173
- return layer
174
-
175
- def get_layer(self, layer_id: tuple[str, ...]) -> TileStoreLayer | None:
176
- """Get a layer in the tile store.
177
-
178
- Args:
179
- layer_id: the id of the layer to get
180
-
181
- Returns:
182
- the layer, or None if it does not exist yet.
183
- """
184
- layer_dir = self._get_layer_dir(layer_id)
185
- if not (layer_dir / "metadata.json").exists():
186
- return None
187
- return FileTileStoreLayer(
188
- layer_dir,
189
- raster_format=self.raster_format,
190
- vector_format=self.vector_format,
191
- )
192
-
193
- def list_layers(self, prefix: tuple[str, ...] = tuple()) -> list[str]:
194
- """List options for next part of layer ID with the specified prefix.
195
-
196
- Args:
197
- prefix: the prefix to match
198
-
199
- Returns:
200
- available options for next part of the layer ID
201
- """
202
- layer_dir = self._get_layer_dir(prefix)
203
- if not layer_dir.is_dir():
204
- return []
205
- layer_names = []
206
- for p in layer_dir.iterdir():
207
- layer_names.append(p.name)
208
- return layer_names
209
-
210
- @staticmethod
211
- def from_config(config: TileStoreConfig, ds_path: UPath) -> "FileTileStore":
212
- """Initialize a FileTileStore from configuration.
213
-
214
- Args:
215
- config: the TileStoreConfig.
216
- ds_path: the dataset root path.
217
-
218
- Returns:
219
- the FileTileStore
220
- """
221
- d = config.config_dict
222
-
223
- path_str = d.get("path", "tiles")
224
- # See if this is relative to ds_path or an absolute path.
225
- if "://" in path_str:
226
- fs_options = d.get("path_options", {})
227
- path = UPath(path_str, **fs_options)
228
- else:
229
- path = ds_path / path_str
230
-
231
- kwargs = dict(
232
- path=path,
233
- )
234
- if "raster_format" in d:
235
- kwargs["raster_format"] = load_raster_format(
236
- RasterFormatConfig.from_config(d["raster_format"])
237
- )
238
- if "vector_format" in d:
239
- kwargs["vector_format"] = load_vector_format(
240
- VectorFormatConfig.from_config(d["vector_format"])
241
- )
242
- return FileTileStore(**kwargs)
rslearn/utils/mgrs.py DELETED
@@ -1,24 +0,0 @@
1
- """Utilities related to MGRS cells."""
2
-
3
- from collections.abc import Generator
4
-
5
- import numpy as np
6
- from mgrs import MGRS
7
-
8
-
9
- def for_each_cell(
10
- bounds: tuple[float, float, float, float],
11
- ) -> Generator[str, None, None]:
12
- """Yields each MGRS cell in the specified WGS84 bounds.
13
-
14
- Args:
15
- bounds: (minx, miny, maxx, maxy) in WGS84 coordinates
16
- """
17
- # Determine MGRS cell by converting to WGS84 and iterating over several
18
- # longitude/latitudes.
19
- # MGRS is at most 0.9-ish degrees (at equator) so we can iterate in 0.5
20
- # degree increments.
21
- mgrs_db = MGRS()
22
- for lon in np.arange(bounds[0], bounds[2], 0.5):
23
- for lat in np.arange(bounds[1], bounds[3], 0.5):
24
- yield mgrs_db.toMGRS(lat, lon, MGRSPrecision=0)
rslearn/utils/utils.py DELETED
@@ -1,22 +0,0 @@
1
- """Miscellaneous utility functions."""
2
-
3
- import os
4
- from contextlib import contextmanager
5
- from typing import Any
6
-
7
-
8
- @contextmanager
9
- def open_atomic(filepath: str, *args: list[Any], **kwargs: dict[str, Any]):
10
- """Open a file for atomic writing.
11
-
12
- Will write to a temporary file, and rename it to the destination upon success.
13
-
14
- Args:
15
- filepath: the file path to be opened
16
- *args: ny valid arguments for :code:`open`
17
- **kwargs: any valid keyword arguments for :code:`open`
18
- """
19
- tmppath = filepath + ".tmp." + str(os.getpid())
20
- with open(tmppath, *args, **kwargs) as file:
21
- yield file
22
- os.rename(tmppath, filepath)
@@ -1,88 +0,0 @@
1
- rslearn/__init__.py,sha256=fFmAen3vxZyosEfPbG0W46IttujYGVxzrGkJ0YutmmY,73
2
- rslearn/const.py,sha256=qEe6gFMmHPfm1mDRPo8pERicx1g2qgLlgB-GOFvq8uc,681
3
- rslearn/main.py,sha256=KfxqSw13Mulb4XX7n6B-W8yY3UaTGpC-l2fsQ3FcPPQ,20993
4
- rslearn/config/__init__.py,sha256=GmNFnNWMI54vx4C_ic3LX_KI7oywd9z0XhCRdOd5PYs,634
5
- rslearn/config/dataset.py,sha256=ssmhyK3LeCW2YBFJj-ZbkYprrv6Jrs_Bc3lEGnKDiUI,17633
6
- rslearn/data_sources/__init__.py,sha256=vWBfZnvGhSGHVdJZHshtjRfpgh_Owm51gRtUmpcuA0g,1186
7
- rslearn/data_sources/aws_landsat.py,sha256=FhU3YgzjVzdgy7hNd9toKGnAtKfQ8cT95t3JdOW7JOg,15576
8
- rslearn/data_sources/aws_open_data.py,sha256=lNCRwFZsZ7nSb2_tMnmNFQ7ejaZcDBCzPMsBzq8j-wY,30632
9
- rslearn/data_sources/copernicus.py,sha256=Jq7NAt_95d8GlHGMtn01YhLGqCJZ_4YEcmmttO2NzlI,1178
10
- rslearn/data_sources/data_source.py,sha256=zn7wSRcsAW9c1OO7iiJnt9_QzqlHaotTzZSmriv-LMQ,3756
11
- rslearn/data_sources/gcp_public_data.py,sha256=SMrIDYVOFYfcOgVczxXAbsQUHzfICE4WEMuea6KFJj4,20689
12
- rslearn/data_sources/geotiff.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- rslearn/data_sources/google_earth_engine.py,sha256=rU3s1NeigX7WnHECWaVXteEYtHCPTrGy_CfZqiKPu_Q,11381
14
- rslearn/data_sources/local_files.py,sha256=67-YRzVS4f-Xru43L5ICadkP4gNB6yuRF4fH6LeNdws,16248
15
- rslearn/data_sources/openstreetmap.py,sha256=0lCWOXGTIjy-7lorMvqT5IyLbir7lcXdJbETF1G7rYE,19291
16
- rslearn/data_sources/planet.py,sha256=t2vqKSMqw3ybpJRXRiZD8_4UKYAqWKUZj_ibmuVxWvM,10825
17
- rslearn/data_sources/raster_source.py,sha256=VvhosEn8CtDV53lGD_P1NTysdnxelEYaYtzYa16fE8A,10807
18
- rslearn/data_sources/usgs_landsat.py,sha256=QjQxkD8e9xQTkYQ7EKRvJcU4Rpr7LQFe7Bz1gfT3egA,17644
19
- rslearn/data_sources/utils.py,sha256=CKZqXvLeO5BSgBvDETLhQtmmcWHih1kw4Y0buNB5NOA,4475
20
- rslearn/data_sources/vector_source.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- rslearn/data_sources/xyz_tiles.py,sha256=4UOqNknYlWB9USuERCZPkLxpyl72jlWav0mXqrldbTU,12197
22
- rslearn/dataset/__init__.py,sha256=rG7AzBSV-9b66FYqsYKe53-hc_Iwu-iv3i652LCLor0,172
23
- rslearn/dataset/add_windows.py,sha256=jE81bnM0Vqpl7jQe8RYZpjOYbfE89Q1BRWAnT8CBzJQ,8478
24
- rslearn/dataset/dataset.py,sha256=LkSEUhtJR_LgGN8nGd21cdx8R2A8mE7L1p28f5iPUuc,3456
25
- rslearn/dataset/manage.py,sha256=4VU2Vv_-TBj86E7G2qViWzfvOw8ZiHAukIEna76S-oQ,10816
26
- rslearn/dataset/materialize.py,sha256=10-qBKrbVh4LZ6mttoEIU_6kx7T1piJ1jvyjd3zzR0Q,9376
27
- rslearn/dataset/remap.py,sha256=HF5Kn5z6dEPbCpSxaBmYVDSzCuBjG2w8csPsk0RRlv4,2088
28
- rslearn/dataset/window.py,sha256=C6Q0TYambdjdMaiiXsaurRNbVUuqFWi0PiCJeMAFPQ0,6016
29
- rslearn/models/__init__.py,sha256=_vWoF9d2Slah8-6XhYhdU4SRsy_CNxXjCGQTD2yvu3Q,22
30
- rslearn/models/faster_rcnn.py,sha256=cCpe88Rh8MQ3S7ETWi-03tkFTOG9ecx0oCaa_c43oGY,8249
31
- rslearn/models/fpn.py,sha256=BNybJCqW7vABuvpCzU1Ha4lXM4xd4i9wPkcom8VKO9o,1581
32
- rslearn/models/multitask.py,sha256=BTRKFJEHblwrdSueMV-xv9nF3LZ_Tw4Y2GfzvHsppw8,2136
33
- rslearn/models/pick_features.py,sha256=uY5raEobeX4PquFbONqkoubVA2RNOnZENqVEw1Tm6vs,867
34
- rslearn/models/pooling_decoder.py,sha256=wkID0enokrbRsdtlpfnKJIF8N9TowiSN3cHNXxMXXLE,2689
35
- rslearn/models/registry.py,sha256=0j6jY-rmB_wKckHEUeCYWXtjviDOEr5c7WhIMxxDwBk,90
36
- rslearn/models/sam2_enc.py,sha256=gNlPokr7eNxO2KvnzDMXNxYM2WRO0YkQPjR4110n6cw,3508
37
- rslearn/models/satlaspretrain.py,sha256=9kfTRFoAZNnn73fYnXYAvbQKtqhdPrPvIPqMfWEo_Yw,2470
38
- rslearn/models/simple_time_series.py,sha256=ubxjQ6CvxrXnB6IdTftsquvIkYm-otUwJ55vMKGGJYY,9626
39
- rslearn/models/singletask.py,sha256=t-6rwPEESxNqbWaS0pHU597sMQuCFUpQkjX-vbYhbmc,1457
40
- rslearn/models/ssl4eo_s12.py,sha256=mm9RxQv69OKv9wDXak52mCNxAqlD0DCeXF5lcWwCMQQ,3566
41
- rslearn/models/swin.py,sha256=vCRh0pBtDg5azx7dHRhlEm_kJO6jACdBlkmmFzkRxcE,5517
42
- rslearn/models/unet.py,sha256=vgJBTv0XG0kKCbE5d6WeXHAzBGa9MuXKtoJpRDdxJX8,4907
43
- rslearn/tile_stores/__init__.py,sha256=sW4Xz3aiHOEeVoELd_GYl8XdKgNZKNknjZluaX7me_g,826
44
- rslearn/tile_stores/file.py,sha256=ISyV-UBgArJJwaPNKG_UC8HHixyiwbXcxba8oF9CLds,7905
45
- rslearn/tile_stores/tile_store.py,sha256=HxnRVyyhnmIZARmR9VNzgv5YCJHuUOP4hxruLm1AUYI,6560
46
- rslearn/train/__init__.py,sha256=fnJyY4aHs5zQqbDKSfXsJZXY_M9fbTsf7dRYaPwZr2M,30
47
- rslearn/train/data_module.py,sha256=y7cnq2jH8kHoODIbFg_n2FxBaOk2wVQyErolbr5oZs0,5805
48
- rslearn/train/dataset.py,sha256=-YAjX1h7xOlC-D7IMToRC6r7kXt2qxekXXp9XbAv4Vc,23538
49
- rslearn/train/lightning_module.py,sha256=SO0LmZOsTPZdFnDCJrixAkkLs1nNylZsc9p6EYJE7S8,10682
50
- rslearn/train/prediction_writer.py,sha256=iU4r1vsueXfMIjImeZmqpT6qKVbFTnK-ivS43u32elo,6591
51
- rslearn/train/callbacks/__init__.py,sha256=VNV0ArZyYMvl3dGK2wl6F046khYJ1dEBlJS6G_SYNm0,47
52
- rslearn/train/callbacks/freeze_unfreeze.py,sha256=lWzQ3ktRM1lMLpCboDCCr04b68gFx5s2zLHacfGID_Q,3019
53
- rslearn/train/tasks/__init__.py,sha256=dag1u72x1-me6y0YcOubUo5MYZ0Tjf6-dOir9UeFNMs,75
54
- rslearn/train/tasks/classification.py,sha256=QBsUrRDUGekpqnbHnVkyLNa-aJA1G1ytNUy3W8XCcao,12944
55
- rslearn/train/tasks/detection.py,sha256=iluKIMPui2FITLFSPsG-HoLA0RkAlT6MKN4VMmx2Z9c,19492
56
- rslearn/train/tasks/multi_task.py,sha256=wJJNNpW-abjw4dYy6fi2mVIndqBvkRbxilfU1isaK4E,5373
57
- rslearn/train/tasks/regression.py,sha256=bXV426Je4RhMUgN_flZm6ClUOCO54aFZUu8ZCe-k8iU,8170
58
- rslearn/train/tasks/segmentation.py,sha256=pugxC4ZZdUZDBIDsRgduIm6nmeUF7cMc-yn2HdC4D3E,7236
59
- rslearn/train/tasks/task.py,sha256=MsIbpa5adZml8UkGjvkNBKReiPIIIy7oyWZdW4owmZA,3841
60
- rslearn/train/transforms/__init__.py,sha256=iqolxzIibL5jx-PRwAmgGt3e6tsfbzJUl7dXKgyKvYI,765
61
- rslearn/train/transforms/concatenate.py,sha256=i-B5X-TzpawM2bLBByZKhQaw13aEAUhhPB8ep9khZ_M,1414
62
- rslearn/train/transforms/crop.py,sha256=ggJDp48OAnnQoYFHUY0-2Xwk7TDtMy2CaBzc9prwoI8,4022
63
- rslearn/train/transforms/flip.py,sha256=HuF9R_8D7kAcn6HzsKhkwb_HCLicdMYhPWcc4iySvJ8,3369
64
- rslearn/train/transforms/normalize.py,sha256=rvVrQ9OvzqJesM_OVUkarxDolbHwZns48HPvaY8l56k,2367
65
- rslearn/train/transforms/pad.py,sha256=NYQSLiB2etAOJOrwN3q8DjyZMDM6i1f4zK1dat7NKto,4679
66
- rslearn/train/transforms/transform.py,sha256=aQC_HLtGqW_RnI5u-pa7j7iqlsEEVaE1JVsBdC7wYJ4,3881
67
- rslearn/utils/__init__.py,sha256=vY3WUOfmkS_PfNbyPL0zw8qp0LMbNi2ODnG1dddsLSM,667
68
- rslearn/utils/array.py,sha256=G8F5Yqzzh-YcJ1qqmMfOMkuToWtq0TA1DM43vDdwS9w,2351
69
- rslearn/utils/feature.py,sha256=kAti0I84kYppzszWpXd9tQafPoBhKYb99Om_hIVTnGo,1643
70
- rslearn/utils/fsspec.py,sha256=WfSFgf8YRKkfxMWE0FaZfT1yWv3Qu4O8bT_Fzo8KF1Y,2863
71
- rslearn/utils/geometry.py,sha256=CSGhbtDLx2NIFphzkQMgwd_cH_gcih7rO_qjISn3i_w,8745
72
- rslearn/utils/get_utm_ups_crs.py,sha256=dOiCXD2naUtuIF95r8YmwaQdmy2LejGxBtK_zXnnNts,3617
73
- rslearn/utils/grid_index.py,sha256=I50R9gPzEhxR8g56CPBPt0oaNW2XU-jsA_IZxl_CvaU,2270
74
- rslearn/utils/mgrs.py,sha256=S_FFps6jhstJqV9VpyM_ppRV22Yf1VlKIXfNUvsSB-o,757
75
- rslearn/utils/mp.py,sha256=GdQCDn7EY63yjX996D9rewxvd9fOZdZcTHIywzUNlUY,1371
76
- rslearn/utils/raster_format.py,sha256=tKbon1nSuUWaNpMk4W-W0bNSHSV_BcTY1POQLjQ0kPY,20823
77
- rslearn/utils/rtree_index.py,sha256=TvJE0eaRvhZmwaXGQJbPyV3vekOfIFhsUBmuXvQbVkk,4676
78
- rslearn/utils/spatial_index.py,sha256=eomJAUgzmjir8j9HZnSgQoJHwN9H0wGTjmJkMkLLfsU,762
79
- rslearn/utils/sqlite_index.py,sha256=4MqDnMoo48_-zvqa0CXEh7-8q-GKujBHevV4wqqE9sA,2747
80
- rslearn/utils/time.py,sha256=2ilSLG94_sxLP3y5RSV5L5CG8CoND_dbdzYEHVtN-I8,387
81
- rslearn/utils/utils.py,sha256=xcrxzAFT3hQMzoXRnhWxHUTneN_EbnSAM0IeoK4DL6I,659
82
- rslearn/utils/vector_format.py,sha256=al5UyZt_r9SLFRgrmS3PLp056EkJoo0D1pPmp3aL8jY,8514
83
- rslearn-0.0.1.dist-info/LICENSE,sha256=_99ZWPoLdlUbqZoSC5DF4ihiNwl5rTEmBaq2fACecdg,11352
84
- rslearn-0.0.1.dist-info/METADATA,sha256=OYg-VNguo0cDZ9TdZWWQ9AwOs2BhO8M7Fn3NnXEaaq0,30640
85
- rslearn-0.0.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
86
- rslearn-0.0.1.dist-info/entry_points.txt,sha256=doTBQ57NT7nq-dgYGgTTw6mafcGWb_4PWYtYR4rGm50,46
87
- rslearn-0.0.1.dist-info/top_level.txt,sha256=XDKo90WBH8P9RQumHxo0giLJsoufT4r9odv-WE6Ahk4,8
88
- rslearn-0.0.1.dist-info/RECORD,,
File without changes