From da41b329df9a8cceced381de6ec1aa9a68b6dcb9 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 20:58:23 -0400 Subject: [PATCH 01/50] Reduce labels for testing --- forest-example/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forest-example/datasets.py b/forest-example/datasets.py index a5881017..fc915fed 100644 --- a/forest-example/datasets.py +++ b/forest-example/datasets.py @@ -24,7 +24,7 @@ def load_labels(self) -> pd.DataFrame: PROJECT_ROOT / DataPaths.RAW_LABELS / "hansen_labelled_data.csv" ) - df = df.sample(n=1000, random_state=42) + df = df.sample(n=10, random_state=42) # Rename coordinate columns to be used for getting Earth observation data df.rename(columns={"lon": LAT, "lat": LON}, inplace=True) From 8267d0b49c3a4734898f12b68f5ac8f1cc170818 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 20:58:34 -0400 Subject: [PATCH 02/50] Remove processed file for testing --- forest-example/data/datasets.dvc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index da9517e8..c706ccd4 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 718c5017dec70570f87d1ca1941db208.dir - size: 5789085 - nfiles: 1 +- md5: d751713988987e9331980363e24189ce.dir + size: 0 + nfiles: 0 path: datasets From 5dc5951a833c71ead0c7f1e027ad01810198afdb Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:01:28 -0400 Subject: [PATCH 03/50] Create separate function for ee_image and add EarthEngineAPI --- openmapflow/ee_exporter.py | 142 +++++++++++++++++++++++++------------ 1 file changed, 96 insertions(+), 46 deletions(-) diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index 30a9a22f..a51ced5d 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -104,6 +104,58 @@ def ee_safe_str(s: str): return s.replace(".", "-").replace("=", "-").replace("/", "-")[:100] +def create_ee_image( + polygon: "ee.Geometry.Polygon", + start_date: date, + end_date: date, + days_per_timestep: int = DAYS_PER_TIMESTEP, +): + image_collection_list: List[ee.Image] = [] + cur_date = start_date + cur_end_date = cur_date + timedelta(days=days_per_timestep) + + # first, we get all the S1 images in an exaggerated date range + vv_imcol, vh_imcol = get_s1_image_collection( + polygon, start_date - timedelta(days=31), end_date + timedelta(days=31) + ) + + while cur_end_date <= end_date: + image_list: List[ee.Image] = [] + + # first, the S1 image which gets the entire s1 collection + image_list.append( + get_single_s1_image( + region=polygon, + start_date=cur_date, + end_date=cur_end_date, + vv_imcol=vv_imcol, + vh_imcol=vh_imcol, + ) + ) + for image_function in DYNAMIC_IMAGE_FUNCTIONS: + image_list.append( + image_function( + region=polygon, start_date=cur_date, end_date=cur_end_date + ) + ) + image_collection_list.append(ee.Image.cat(image_list)) + + cur_date += timedelta(days=days_per_timestep) + cur_end_date += timedelta(days=days_per_timestep) + + # now, we want to take our image collection and append the bands into a single image + imcoll = ee.ImageCollection(image_collection_list) + combine_bands_function = make_combine_bands_function(DYNAMIC_BANDS) + img = ee.Image(imcoll.iterate(combine_bands_function)) + + # finally, we add the SRTM image seperately since its static in time + total_image_list: List[ee.Image] = [img] + for static_image_function in STATIC_IMAGE_FUNCTIONS: + total_image_list.append(static_image_function(region=polygon)) + + return ee.Image.cat(total_image_list) + + class EarthEngineExporter: """ Export satellite data from Earth engine. It's called using the following @@ -126,10 +178,8 @@ def __init__( check_ee: bool = False, check_gcp: bool = False, credentials: Optional[str] = None, - days_per_timestep: int = DAYS_PER_TIMESTEP, ) -> None: self.dest_bucket = dest_bucket - self.days_per_timestep = days_per_timestep try: if credentials: ee.Initialize(credentials=credentials) @@ -172,50 +222,7 @@ def _export_for_polygon( if len(self.ee_task_list) >= 3000: return False - image_collection_list: List[ee.Image] = [] - cur_date = start_date - cur_end_date = cur_date + timedelta(days=self.days_per_timestep) - - # first, we get all the S1 images in an exaggerated date range - vv_imcol, vh_imcol = get_s1_image_collection( - polygon, start_date - timedelta(days=31), end_date + timedelta(days=31) - ) - - while cur_end_date <= end_date: - image_list: List[ee.Image] = [] - - # first, the S1 image which gets the entire s1 collection - image_list.append( - get_single_s1_image( - region=polygon, - start_date=cur_date, - end_date=cur_end_date, - vv_imcol=vv_imcol, - vh_imcol=vh_imcol, - ) - ) - for image_function in DYNAMIC_IMAGE_FUNCTIONS: - image_list.append( - image_function( - region=polygon, start_date=cur_date, end_date=cur_end_date - ) - ) - image_collection_list.append(ee.Image.cat(image_list)) - - cur_date += timedelta(days=self.days_per_timestep) - cur_end_date += timedelta(days=self.days_per_timestep) - - # now, we want to take our image collection and append the bands into a single image - imcoll = ee.ImageCollection(image_collection_list) - combine_bands_function = make_combine_bands_function(DYNAMIC_BANDS) - img = ee.Image(imcoll.iterate(combine_bands_function)) - - # finally, we add the SRTM image seperately since its static in time - total_image_list: List[ee.Image] = [img] - for static_image_function in STATIC_IMAGE_FUNCTIONS: - total_image_list.append(static_image_function(region=polygon)) - - img = ee.Image.cat(total_image_list) + img = create_ee_image(polygon, start_date, end_date) # and finally, export the image if not test: @@ -281,6 +288,9 @@ def export_for_labels( for expected_column in [START, END, LAT, LON]: assert expected_column in labels + labels[START] = pd.to_datetime(labels[START]).dt.date + labels[END] = pd.to_datetime(labels[END]).dt.date + exports_started = 0 print(f"Exporting {len(labels)} labels: ") @@ -306,3 +316,43 @@ def export_for_labels( ): print(f"Started {exports_started} exports. Ending export") return None + + +class EarthEngineAPI: + """ + Fetch satellite data from Earth engine by URL. + :param credentials: The credentials to use for the export. If not specified, + the default credentials will be used + """ + + def __init__(self, credentials: Optional[str] = None) -> None: + try: + if credentials: + ee.Initialize( + credentials=credentials, + opt_url="https://earthengine-highvolume.googleapis.com", + ) + else: + ee.Initialize( + opt_url="https://earthengine-highvolume.googleapis.com", + ) + except Exception: + print( + "This code may not work if you have not authenticated your earthengine account" + ) + + def get_ee_url(self, lat, lon, start_date, end_date): + ee_bbox = EEBoundingBox.from_centre( + mid_lat=lat, + mid_lon=lon, + surrounding_metres=80, + ).to_ee_polygon() + img = create_ee_image(ee_bbox, start_date, end_date) + return img.getDownloadURL( + { + "region": ee_bbox, + "scale": 10, + "filePerBand": False, + "format": "GEO_TIFF", + } + ) From 3f25aa7ebaca1209ef44465010b135ef480b86bf Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:11:29 -0400 Subject: [PATCH 04/50] Optional start date --- openmapflow/engineer.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/openmapflow/engineer.py b/openmapflow/engineer.py index 343bff31..943e15ec 100644 --- a/openmapflow/engineer.py +++ b/openmapflow/engineer.py @@ -19,7 +19,7 @@ def load_tif( filepath: Path, - start_date: datetime, + start_date: Optional[datetime] = None, num_timesteps: Optional[int] = None, ): r""" @@ -56,12 +56,16 @@ def load_tif( time_specific_da["band"] = range(bands_per_timestep + len(STATIC_BANDS)) da_split_by_time.append(time_specific_da) - timesteps = [ - start_date + timedelta(days=DAYS_PER_TIMESTEP) * i - for i in range(len(da_split_by_time)) - ] - - dynamic_data = xr.concat(da_split_by_time, pd.Index(timesteps, name="time")) + if start_date: + timesteps = [ + start_date + timedelta(days=DAYS_PER_TIMESTEP) * i + for i in range(len(da_split_by_time)) + ] + dynamic_data = xr.concat(da_split_by_time, timesteps, name="time") + else: + dynamic_data = xr.concat( + da_split_by_time, pd.Index(range(len(da_split_by_time)), name="time") + ) dynamic_data.attrs["band_descriptions"] = BANDS return dynamic_data, average_slope From ceddaa1f54c0c76af06185f5c80b2ae55ef93070 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:11:45 -0400 Subject: [PATCH 05/50] dates passed directly --- tests/test_ee_exporter.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/test_ee_exporter.py b/tests/test_ee_exporter.py index 0a5672bf..f903320c 100644 --- a/tests/test_ee_exporter.py +++ b/tests/test_ee_exporter.py @@ -35,15 +35,15 @@ def test_get_cloud_tif_list(self, mock_dependency): @patch("openmapflow.ee_exporter.EarthEngineExporter._export_for_polygon") def test_export_for_labels(self, mock_export_for_polygon, mock_polygon): mock_polygon.return_value = None - start_date_str = "2019-04-22" - end_date_str = "2020-04-16" + start_date = date(2019, 4, 22) + end_date = date(2020, 4, 16) labels = pd.DataFrame( { LON: [-74.55285616553732, -75.55285616553732], LAT: [46.22024965230018, 47.22024965230018], - END: [end_date_str, end_date_str], - START: [start_date_str, start_date_str], + END: [str(end_date), str(end_date)], + START: [str(start_date), str(start_date)], } ) EarthEngineExporter( @@ -52,7 +52,7 @@ def test_export_for_labels(self, mock_export_for_polygon, mock_polygon): assert mock_export_for_polygon.call_count == 2 - ending = f"dates={start_date_str}_{end_date_str}_all" + ending = f"dates={start_date}_{end_date}_all" identifier_1 = ( f"min_lat=46.2195_min_lon=-74.5539_max_lat=46.221_max_lon=-74.5518_{ending}" @@ -63,17 +63,17 @@ def test_export_for_labels(self, mock_export_for_polygon, mock_polygon): mock_export_for_polygon.assert_has_calls( [ call( - end_date=end_date_str, + end_date=end_date, polygon=None, polygon_identifier=identifier_1, - start_date=start_date_str, + start_date=start_date, test=False, ), call( - end_date=end_date_str, + end_date=end_date, polygon=None, polygon_identifier=identifier_2, - start_date=start_date_str, + start_date=start_date, test=False, ), ], From 82898b14c1f191a076d1aa708e2e5664f5055ff0 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:14:54 -0400 Subject: [PATCH 06/50] Create datasets use ee API --- openmapflow/labeled_dataset.py | 121 ++++++++++++++++++++++++++++++--- 1 file changed, 112 insertions(+), 9 deletions(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index f7e6036c..a956e4e0 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -1,4 +1,5 @@ import random +import shutil import tempfile import warnings from dataclasses import dataclass @@ -8,6 +9,7 @@ import numpy as np import pandas as pd +import requests from dateutil.relativedelta import relativedelta from pandas.compat._optional import import_optional_dependency @@ -34,7 +36,11 @@ START, SUBSET, ) -from openmapflow.ee_exporter import EarthEngineExporter, get_cloud_tif_list +from openmapflow.ee_exporter import ( + EarthEngineAPI, + EarthEngineExporter, + get_cloud_tif_list, +) from openmapflow.engineer import calculate_ndvi, fillna, load_tif, remove_bands from openmapflow.utils import str_to_np, tqdm @@ -188,6 +194,39 @@ def _find_matching_point( return eo_data, closest_lon, closest_lat, eo_file +def _find_matching_point_url( + url: str, label_lon: float, label_lat: float +) -> Tuple[np.ndarray, float, float]: + """ + Given a label url this functions fetches the associated satellite data (X). + """ + r = requests.get(url, stream=True) + if r.status_code != 200: + r.raise_for_status() + + local_path = Path(f"{temp_dir}/{Path(url).stem.replace(':', '_')}.tif") + with local_path.open("wb") as f: + shutil.copyfileobj(r.raw, f) + + tif, slope = load_tif(local_path) + if local_path.exists(): + local_path.unlink() + + closest_lon = _find_nearest(tif.x, label_lon)[0] + closest_lat = _find_nearest(tif.y, label_lat)[0] + + eo_data = tif.sel(x=closest_lon).sel(y=closest_lat).values + average_slope = slope + + eo_data = calculate_ndvi(eo_data) + eo_data = remove_bands(eo_data) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + eo_data = fillna(eo_data, average_slope) + + return eo_data, closest_lon, closest_lat + + def get_label_timesteps(labels: pd.DataFrame): if START not in labels.columns or END not in labels.columns: raise ValueError("Labels must have start and end columns") @@ -390,7 +429,7 @@ def verify_and_standardize_df(self, df: pd.DataFrame) -> pd.DataFrame: df[END] = pd.to_datetime(df[END]).dt.strftime("%Y-%m-%d") return df - def create_dataset(self, force: bool = False): + def create_dataset(self, force: bool = False) -> str: """ A dataset consists of (X, y) pairs that are used to train and evaluate a machine learning model. In this case, @@ -450,10 +489,6 @@ def create_dataset(self, force: bool = False): if len(df_with_no_eo_files) > 0: print(f"{len(df_with_no_eo_files)} labels not matched") - df_with_no_eo_files[START] = pd.to_datetime( - df_with_no_eo_files[START] - ).dt.date - df_with_no_eo_files[END] = pd.to_datetime(df_with_no_eo_files[END]).dt.date EarthEngineExporter( check_ee=True, check_gcp=True, dest_bucket=BucketNames.LABELED_EO ).export_for_labels(labels=df_with_no_eo_files) @@ -467,7 +502,7 @@ def create_dataset(self, force: bool = False): tif_bucket = storage.Client().bucket(BucketNames.LABELED_EO) df[EO_DATA] = df[EO_DATA].astype(object) - df[EO_FILE] = df[EO_DATA].astype(str) + df[EO_FILE] = df[EO_FILE].astype(str) def set_df(i, start, eo_paths, lon, lat, pbar): (eo_data, eo_lon, eo_lat, eo_file) = _find_matching_point( @@ -519,13 +554,81 @@ def set_df(i, start, eo_paths, lon, lat, pbar): df.to_csv(self.df_path, index=False) return self.summary(df) + def create_dataset_ee_api(self, force: bool = False) -> str: + """ + A dataset consists of (X, y) pairs that are used to train and evaluate + a machine learning model. In this case, + - X is the earth observation data for a lat lon coordinate over a 24 month time series + - y is the binary class label for that coordinate + To create a dataset: + 1. Obtain the labels + 2. Check if the eath observation data already exists + 3. Use the label coordinates to fetch the associated eath observation data (X) + """ + # --------------------------------------------------------------------- + # STEP 1: Obtain the labels + # --------------------------------------------------------------------- + if not self.df_path.exists() or force: + df = self.load_labels() + df = self.verify_and_standardize_df(df) + df.to_csv(self.df_path, index=False) + df = pd.read_csv(self.df_path) -def create_datasets(datasets: List[LabeledDataset]): + # --------------------------------------------------------------------- + # STEP 2: Check if earth observation data already available + # --------------------------------------------------------------------- + no_eo = clean_df_condition(df) & (df[EO_DATA].isnull()) + if no_eo.sum() == 0: + df = self._duplicates_check(df) + return self.summary(df) + + print(self.summary(df)) + + # --------------------------------------------------------------------- + # STEP 3: Fetch data and create the dataset (eo data, label) + # --------------------------------------------------------------------- + df[EO_DATA] = df[EO_DATA].astype(object) + df[START] = pd.to_datetime(df[START]) + df[END] = pd.to_datetime(df[END]) + df.reset_index() + + ee_api = EarthEngineAPI() + dd = import_optional_dependency("dask.dataframe") + ddf = dd.from_pandas(df, npartitions=4) + total = len(df) + + def get_eo_data(row, total=total): + prefix = f"{row.name}/{total}:" + print(f"{prefix} fetching EarthEngine image url") + url = ee_api.get_ee_url( + lat=row[LAT], lon=row[LON], start_date=row[START], end_date=row[END] + ) + print(f"{prefix} fetching data: {url}") + eo_data, eo_lon, eo_lat = _find_matching_point_url( + url=url, label_lon=row[LON], label_lat=row[LAT] + ) + if eo_data is None: + print(f"WARNING: {prefix} could not extract data from: {url}") + return None, None, None, EO_STATUS_MISSING_VALUES + print(f"{prefix} Successfully obtained earth observation data") + return eo_data.tolist(), eo_lat, eo_lon, EO_STATUS_COMPLETE + + out = ddf.apply(get_eo_data, meta=tuple, axis=1).compute() + df[EO_DATA], df[EO_LAT], df[EO_LON], df[EO_STATUS] = zip(*out) + df = self._duplicates_check(df) + df.to_csv(self.df_path, index=False) + return self.summary(df) + + +def create_datasets(datasets: List[LabeledDataset], ee_api: bool = True) -> None: report = "DATASET REPORT (autogenerated, do not edit directly)" for d in datasets: if not isinstance(d, LabeledDataset): raise TypeError(f"Expected LabeledDataset, got {type(d)}") - summary = d.create_dataset() + if ee_api: + summary = d.create_dataset_ee_api() + else: + summary = d.create_dataset() print(summary) report += "\n\n" + summary From 1eee3233d2e4e0def1011910c921e367fd602d86 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:15:32 -0400 Subject: [PATCH 07/50] Attempt running data pipeline inside github action --- .github/workflows/forest-example-test.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 848e8644..272b407c 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -25,12 +25,19 @@ jobs: - name: Install dependencies run: pip install -r requirements.txt - - name: dvc pull data + - name: Run data pipeline env: # https://dvc.org/doc/user-guide/setup-google-drive-remote#authorization GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} - run: dvc pull -f - + run: | + dvc pull -f + openmapflow create-datasets + dvc commit -f + dvc push + git config --global user.name 'Your Name' + git config --global user.email 'your-username@users.noreply.github.com' + git commit -m "Automated dataset update" + git push - name: Integration test - Project run: | openmapflow cp templates/integration_test_project.py . From 2209ac2b8f317611351e938cba09350c8493aa5e Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:20:11 -0400 Subject: [PATCH 08/50] Ensure dask is installed --- setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py index d820353e..49c3e565 100644 --- a/setup.py +++ b/setup.py @@ -46,6 +46,7 @@ extras_require={ "data": [ "cmocean", + "dask", "earthengine-api", "geopandas", "google-cloud-storage", @@ -55,6 +56,7 @@ ], "all": [ "cmocean", + "dask", "earthengine-api", "geopandas", "google-cloud-storage", From 8791e7d7260788d4623506e1e2689bf299c3f9ef Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:29:10 -0400 Subject: [PATCH 09/50] Authenticate ee attempt --- .github/workflows/forest-example-test.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 272b407c..ae5858cd 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -29,8 +29,10 @@ jobs: env: # https://dvc.org/doc/user-guide/setup-google-drive-remote#authorization GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} + GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GCP_SA_KEY }} run: | dvc pull -f + earthengine authenticate --auth_mode appdefault openmapflow create-datasets dvc commit -f dvc push From dc22d9ac1d112bf620329d811e7a08275578f06e Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:39:24 -0400 Subject: [PATCH 10/50] Cache and authenticate gcloud --- .github/workflows/forest-example-test.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index ae5858cd..4571a5b3 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -19,20 +19,23 @@ jobs: - name: Clone repo uses: actions/checkout@v2 - name: Set up python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.8 + cache: 'pip' - name: Install dependencies run: pip install -r requirements.txt + - uses: google-github-actions/auth@v0 + with: + credentials_json: ${{ secrets.GCP_SA_KEY }} - name: Run data pipeline env: # https://dvc.org/doc/user-guide/setup-google-drive-remote#authorization GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} - GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GCP_SA_KEY }} run: | dvc pull -f - earthengine authenticate --auth_mode appdefault + earthengine authenticate --auth_mode gcloud openmapflow create-datasets dvc commit -f dvc push From 95dfe7f2e6bc4b83735f3223e072b820e046ca4d Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:43:53 -0400 Subject: [PATCH 11/50] Quiet arg --- .github/workflows/forest-example-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 4571a5b3..2437ecf9 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -35,7 +35,7 @@ jobs: GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} run: | dvc pull -f - earthengine authenticate --auth_mode gcloud + earthengine authenticate --quiet --auth_mode gcloud openmapflow create-datasets dvc commit -f dvc push From 435188e04b6f3869928db07b205c260d0f6fb7c5 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:52:26 -0400 Subject: [PATCH 12/50] Try app default again --- .github/workflows/forest-example-test.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 2437ecf9..2d47ac6e 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -23,7 +23,6 @@ jobs: with: python-version: 3.8 cache: 'pip' - - name: Install dependencies run: pip install -r requirements.txt - uses: google-github-actions/auth@v0 @@ -35,7 +34,7 @@ jobs: GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} run: | dvc pull -f - earthengine authenticate --quiet --auth_mode gcloud + earthengine authenticate --auth_mode appdefault openmapflow create-datasets dvc commit -f dvc push From ddcb43ff6fe35de18ad474db57d3155f85313e7a Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 21:57:55 -0400 Subject: [PATCH 13/50] Fix yaml --- .github/workflows/forest-example-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 2d47ac6e..25b8f493 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -23,7 +23,7 @@ jobs: with: python-version: 3.8 cache: 'pip' - run: pip install -r requirements.txt + - run: pip install -r requirements.txt - uses: google-github-actions/auth@v0 with: From c4fea32beb9afdd75a2c5122707139b2a2f3824a Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 22:22:29 -0400 Subject: [PATCH 14/50] Login by default --- openmapflow/ee_exporter.py | 31 ++++++++++++++++--------------- openmapflow/labeled_dataset.py | 4 ++-- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index a51ced5d..ba7dde9b 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -2,6 +2,7 @@ from datetime import date, timedelta from typing import Dict, List, Optional, Union +import os import pandas as pd from pandas.compat._optional import import_optional_dependency @@ -325,21 +326,21 @@ class EarthEngineAPI: the default credentials will be used """ - def __init__(self, credentials: Optional[str] = None) -> None: - try: - if credentials: - ee.Initialize( - credentials=credentials, - opt_url="https://earthengine-highvolume.googleapis.com", - ) - else: - ee.Initialize( - opt_url="https://earthengine-highvolume.googleapis.com", - ) - except Exception: - print( - "This code may not work if you have not authenticated your earthengine account" - ) + def __init__(self, project_id: str) -> None: + google_auth = import_optional_dependency("google.auth") + ee = import_optional_dependency("ee") + os.environ["GOOGLE_CLOUD_PROJECT"] = project_id + print("Logging into Earth Engine") + SCOPES = [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/earthengine", + ] + CREDENTIALS, _ = google_auth.default(default_scopes=SCOPES) + ee.Initialize( + CREDENTIALS, + project=project_id, + opt_url="https://earthengine-highvolume.googleapis.com", + ) def get_ee_url(self, lat, lon, start_date, end_date): ee_bbox = EEBoundingBox.from_centre( diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index a956e4e0..3a48f99d 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -15,7 +15,7 @@ from openmapflow.bbox import BBox from openmapflow.config import GCLOUD_LOCATION, PROJECT_ROOT, BucketNames -from openmapflow.config import DataPaths as dp +from openmapflow.config import DataPaths as dp, GCLOUD_PROJECT_ID from openmapflow.constants import ( CLASS_PROB, END, @@ -592,7 +592,7 @@ def create_dataset_ee_api(self, force: bool = False) -> str: df[END] = pd.to_datetime(df[END]) df.reset_index() - ee_api = EarthEngineAPI() + ee_api = EarthEngineAPI(GCLOUD_PROJECT_ID) dd = import_optional_dependency("dask.dataframe") ddf = dd.from_pandas(df, npartitions=4) total = len(df) From f73714d75483e4b187d709f8e343e67edcb64aca Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 22:22:49 -0400 Subject: [PATCH 15/50] Remove CLI auth --- .github/workflows/forest-example-test.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 25b8f493..49de8686 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -34,7 +34,6 @@ jobs: GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} run: | dvc pull -f - earthengine authenticate --auth_mode appdefault openmapflow create-datasets dvc commit -f dvc push From d1bfb9cc97fa8bebf2e66cfb34e01058bf356ae4 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 23:26:27 -0400 Subject: [PATCH 16/50] hardcover service account key credentials --- .github/workflows/forest-example-test.yaml | 1 + openmapflow/ee_exporter.py | 14 +++++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 49de8686..704510f8 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -32,6 +32,7 @@ jobs: env: # https://dvc.org/doc/user-guide/setup-google-drive-remote#authorization GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }} + GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }} run: | dvc pull -f openmapflow create-datasets diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index ba7dde9b..f307d40c 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -327,15 +327,11 @@ class EarthEngineAPI: """ def __init__(self, project_id: str) -> None: - google_auth = import_optional_dependency("google.auth") - ee = import_optional_dependency("ee") - os.environ["GOOGLE_CLOUD_PROJECT"] = project_id - print("Logging into Earth Engine") - SCOPES = [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/earthengine", - ] - CREDENTIALS, _ = google_auth.default(default_scopes=SCOPES) + + CREDENTIALS = ee.ServiceAccountCredentials( + "bsos-geog-harvest1@appspot.gserviceaccount.com", + key_data=os.environ["GCP_SA_KEY"], + ) ee.Initialize( CREDENTIALS, project=project_id, From 24c3bca4c368df239d736c5df35414a8b48d189e Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Wed, 21 Sep 2022 23:58:28 -0400 Subject: [PATCH 17/50] Login with sa credentials if available --- openmapflow/ee_exporter.py | 36 +++++++++++++--------------------- openmapflow/labeled_dataset.py | 4 ++-- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index f307d40c..ed9dccdc 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -157,6 +157,16 @@ def create_ee_image( return ee.Image.cat(total_image_list) +def get_ee_credentials(): + gcp_sa_email = os.environ.get("GCP_SA_EMAIL") + gcp_sa_key = os.environ.get("GCP_SA_KEY") + if gcp_sa_email is not None and gcp_sa_key is not None: + print(f"Logging into EarthEngine with {gcp_sa_email}") + return ee.ServiceAccountCredentials(gcp_sa_email, key_data=gcp_sa_key) + else: + return "persistent" + + class EarthEngineExporter: """ Export satellite data from Earth engine. It's called using the following @@ -174,22 +184,10 @@ class EarthEngineExporter: """ def __init__( - self, - dest_bucket: str, - check_ee: bool = False, - check_gcp: bool = False, - credentials: Optional[str] = None, + self, dest_bucket: str, check_ee: bool = False, check_gcp: bool = False ) -> None: self.dest_bucket = dest_bucket - try: - if credentials: - ee.Initialize(credentials=credentials) - else: - ee.Initialize() - except Exception: - print( - "This code may not work if you have not authenticated your earthengine account" - ) + ee.Initialize(get_ee_credentials()) self.check_ee = check_ee self.ee_task_list = get_ee_task_list() if self.check_ee else [] self.check_gcp = check_gcp @@ -326,15 +324,9 @@ class EarthEngineAPI: the default credentials will be used """ - def __init__(self, project_id: str) -> None: - - CREDENTIALS = ee.ServiceAccountCredentials( - "bsos-geog-harvest1@appspot.gserviceaccount.com", - key_data=os.environ["GCP_SA_KEY"], - ) + def __init__(self) -> None: ee.Initialize( - CREDENTIALS, - project=project_id, + get_ee_credentials(), opt_url="https://earthengine-highvolume.googleapis.com", ) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index 3a48f99d..a956e4e0 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -15,7 +15,7 @@ from openmapflow.bbox import BBox from openmapflow.config import GCLOUD_LOCATION, PROJECT_ROOT, BucketNames -from openmapflow.config import DataPaths as dp, GCLOUD_PROJECT_ID +from openmapflow.config import DataPaths as dp from openmapflow.constants import ( CLASS_PROB, END, @@ -592,7 +592,7 @@ def create_dataset_ee_api(self, force: bool = False) -> str: df[END] = pd.to_datetime(df[END]) df.reset_index() - ee_api = EarthEngineAPI(GCLOUD_PROJECT_ID) + ee_api = EarthEngineAPI() dd = import_optional_dependency("dask.dataframe") ddf = dd.from_pandas(df, npartitions=4) total = len(df) From 8fb52551d07a0ce1e76d52f692c2bf0dec744f0f Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 00:06:10 -0400 Subject: [PATCH 18/50] Read email from file --- .github/workflows/forest-example-test.yaml | 5 ++++- openmapflow/ee_exporter.py | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 704510f8..abba3b6d 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -38,9 +38,12 @@ jobs: openmapflow create-datasets dvc commit -f dvc push + - name: Push automated dataset updates + run: | git config --global user.name 'Your Name' git config --global user.email 'your-username@users.noreply.github.com' - git commit -m "Automated dataset update" + git add data + git commit -m "Automated dataset updates" git push - name: Integration test - Project run: | diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index ed9dccdc..5f8065ad 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -2,6 +2,7 @@ from datetime import date, timedelta from typing import Dict, List, Optional, Union +import json import os import pandas as pd from pandas.compat._optional import import_optional_dependency @@ -158,12 +159,13 @@ def create_ee_image( def get_ee_credentials(): - gcp_sa_email = os.environ.get("GCP_SA_EMAIL") gcp_sa_key = os.environ.get("GCP_SA_KEY") - if gcp_sa_email is not None and gcp_sa_key is not None: + if gcp_sa_key is not None: + gcp_sa_email = json.loads(gcp_sa_key)["client_email"] print(f"Logging into EarthEngine with {gcp_sa_email}") return ee.ServiceAccountCredentials(gcp_sa_email, key_data=gcp_sa_key) else: + print(f"Logging into EarthEngine with default credentials") return "persistent" From 99721fccd27ea1942851be08b9031b4fb7d3b441 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 00:24:26 -0400 Subject: [PATCH 19/50] Try a different npartitions --- openmapflow/labeled_dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index a956e4e0..3d03c313 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -594,7 +594,7 @@ def create_dataset_ee_api(self, force: bool = False) -> str: ee_api = EarthEngineAPI() dd = import_optional_dependency("dask.dataframe") - ddf = dd.from_pandas(df, npartitions=4) + ddf = dd.from_pandas(df, npartitions=10) total = len(df) def get_eo_data(row, total=total): From b4a8c4b6d585e800765bde38f55e8910e95915b8 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:06:42 -0400 Subject: [PATCH 20/50] 1 partition test --- .github/workflows/forest-example-test.yaml | 1 - openmapflow/ee_exporter.py | 4 ++-- openmapflow/labeled_dataset.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index abba3b6d..4053de20 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -22,7 +22,6 @@ jobs: uses: actions/setup-python@v4 with: python-version: 3.8 - cache: 'pip' - run: pip install -r requirements.txt - uses: google-github-actions/auth@v0 diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index 5f8065ad..87034b6e 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -1,9 +1,9 @@ +import json +import os import warnings from datetime import date, timedelta from typing import Dict, List, Optional, Union -import json -import os import pandas as pd from pandas.compat._optional import import_optional_dependency diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index 3d03c313..da2ac452 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -594,7 +594,7 @@ def create_dataset_ee_api(self, force: bool = False) -> str: ee_api = EarthEngineAPI() dd = import_optional_dependency("dask.dataframe") - ddf = dd.from_pandas(df, npartitions=10) + ddf = dd.from_pandas(df, npartitions=1) total = len(df) def get_eo_data(row, total=total): From c0e248bcd5fcf357d7cb6ccc36242fe30bac44ec Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:15:10 -0400 Subject: [PATCH 21/50] mock initialize --- tests/test_ee_exporter.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/test_ee_exporter.py b/tests/test_ee_exporter.py index f903320c..f182b1ab 100644 --- a/tests/test_ee_exporter.py +++ b/tests/test_ee_exporter.py @@ -31,9 +31,12 @@ def test_get_cloud_tif_list(self, mock_dependency): tif_list = get_cloud_tif_list("mock_bucket") assert tif_list == [] + @patch("openmapflow.ee_exporter.ee.Initialize") @patch("openmapflow.ee_exporter.ee.Geometry.Polygon") @patch("openmapflow.ee_exporter.EarthEngineExporter._export_for_polygon") - def test_export_for_labels(self, mock_export_for_polygon, mock_polygon): + def test_export_for_labels( + self, mock_export_for_polygon, mock_polygon, mock_ee_initialize + ): mock_polygon.return_value = None start_date = date(2019, 4, 22) end_date = date(2020, 4, 16) @@ -80,10 +83,11 @@ def test_export_for_labels(self, mock_export_for_polygon, mock_polygon): any_order=True, ) + @patch("openmapflow.ee_exporter.ee.Initialize") @patch("openmapflow.ee_exporter.ee.Geometry.Polygon") @patch("openmapflow.ee_exporter.EarthEngineExporter._export_for_polygon") def test_export_for_bbox_metres_per_polygon_None( - self, mock_export_for_polygon, mock_polygon + self, mock_export_for_polygon, mock_polygon, mock_ee_initialize ): mock_polygon.return_value = None @@ -114,10 +118,11 @@ def test_export_for_bbox_metres_per_polygon_None( test=True, ) + @patch("openmapflow.ee_exporter.ee.Initialize") @patch("openmapflow.ee_exporter.ee.Geometry.Polygon") @patch("openmapflow.ee_exporter.EarthEngineExporter._export_for_polygon") def test_export_for_bbox_metres_per_polygon_10000( - self, mock_export_for_polygon, mock_polygon + self, mock_export_for_polygon, mock_polygon, mock_ee_initialize ): mock_polygon.return_value = None From 824578453701c505d0980bdf7bb7ec82e0eb5523 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:15:16 -0400 Subject: [PATCH 22/50] Remove f string --- openmapflow/ee_exporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/ee_exporter.py b/openmapflow/ee_exporter.py index 87034b6e..26504ead 100644 --- a/openmapflow/ee_exporter.py +++ b/openmapflow/ee_exporter.py @@ -165,7 +165,7 @@ def get_ee_credentials(): print(f"Logging into EarthEngine with {gcp_sa_email}") return ee.ServiceAccountCredentials(gcp_sa_email, key_data=gcp_sa_key) else: - print(f"Logging into EarthEngine with default credentials") + print("Logging into EarthEngine with default credentials") return "persistent" From a6726933ffa6e8c391ef99b534242628ae309aef Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:15:25 -0400 Subject: [PATCH 23/50] Set ref --- .github/workflows/forest-example-test.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 4053de20..74fb5799 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -18,6 +18,8 @@ jobs: steps: - name: Clone repo uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.ref }} - name: Set up python uses: actions/setup-python@v4 with: From 5a2b0cedacfdcaabf041fa98e2bbef2fc2803464 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:16:23 -0400 Subject: [PATCH 24/50] back to 4 --- openmapflow/labeled_dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index da2ac452..a956e4e0 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -594,7 +594,7 @@ def create_dataset_ee_api(self, force: bool = False) -> str: ee_api = EarthEngineAPI() dd = import_optional_dependency("dask.dataframe") - ddf = dd.from_pandas(df, npartitions=1) + ddf = dd.from_pandas(df, npartitions=4) total = len(df) def get_eo_data(row, total=total): From 1a609fc82fc6b7b67bdfbe66e3b481ac2d8fb995 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:21:05 -0400 Subject: [PATCH 25/50] Only run tests if changes in own directories --- .github/workflows/buildings-example-test.yaml | 2 ++ .github/workflows/crop-mask-example-test.yaml | 2 ++ .github/workflows/forest-example-test.yaml | 2 ++ .github/workflows/maize-example-test.yaml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/buildings-example-test.yaml b/.github/workflows/buildings-example-test.yaml index 349b9095..2bef56f6 100644 --- a/.github/workflows/buildings-example-test.yaml +++ b/.github/workflows/buildings-example-test.yaml @@ -8,6 +8,8 @@ on: branches: [ main ] pull_request: branches: [ main ] + paths: + - 'buildings-example/**' jobs: test: diff --git a/.github/workflows/crop-mask-example-test.yaml b/.github/workflows/crop-mask-example-test.yaml index 6fc2de20..b994ef0c 100644 --- a/.github/workflows/crop-mask-example-test.yaml +++ b/.github/workflows/crop-mask-example-test.yaml @@ -8,6 +8,8 @@ on: branches: [ main ] pull_request: branches: [ main ] + paths: + - 'crop-mask-example/**' jobs: test: diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 74fb5799..ecc08750 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -8,6 +8,8 @@ on: branches: [ main ] pull_request: branches: [ main ] + paths: + - 'forest-example/**' jobs: test: diff --git a/.github/workflows/maize-example-test.yaml b/.github/workflows/maize-example-test.yaml index 1c1bd38f..4de307ad 100644 --- a/.github/workflows/maize-example-test.yaml +++ b/.github/workflows/maize-example-test.yaml @@ -8,6 +8,8 @@ on: branches: [ main ] pull_request: branches: [ main ] + paths: + - 'maize-example/**' jobs: test: From 1cf502adc8b3cc1e5f0982ec435f8917e3967fef Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 22 Sep 2022 05:28:39 +0000 Subject: [PATCH 26/50] Automated dataset updates --- forest-example/data/datasets.dvc | 6 +++--- forest-example/data/report.txt | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index c706ccd4..f2375b76 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: d751713988987e9331980363e24189ce.dir - size: 0 - nfiles: 0 +- md5: 0ff0bf687957a252ea1466fa95755f07.dir + size: 53290 + nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index e204419f..5028810e 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,8 +2,8 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_complete 1000 -✔ training amount: 579 -✔ validation amount: 196 -✔ testing amount: 225 +eo_data_complete 10 +✔ training amount: 6 +✔ validation amount: 1 +✔ testing amount: 3 From 6a9917cf9ba67bb811ac68b5ddd076fc2ad6fbcd Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 01:41:28 -0400 Subject: [PATCH 27/50] Process 1000 points --- forest-example/data/datasets.dvc | 6 +++--- forest-example/datasets.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index f2375b76..c706ccd4 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 0ff0bf687957a252ea1466fa95755f07.dir - size: 53290 - nfiles: 1 +- md5: d751713988987e9331980363e24189ce.dir + size: 0 + nfiles: 0 path: datasets diff --git a/forest-example/datasets.py b/forest-example/datasets.py index fc915fed..a5881017 100644 --- a/forest-example/datasets.py +++ b/forest-example/datasets.py @@ -24,7 +24,7 @@ def load_labels(self) -> pd.DataFrame: PROJECT_ROOT / DataPaths.RAW_LABELS / "hansen_labelled_data.csv" ) - df = df.sample(n=10, random_state=42) + df = df.sample(n=1000, random_state=42) # Rename coordinate columns to be used for getting Earth observation data df.rename(columns={"lon": LAT, "lat": LON}, inplace=True) From a0b9d0eae9cca13f5f571aba53466a348fab3474 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 07:51:46 -0400 Subject: [PATCH 28/50] No ee api by default --- openmapflow/labeled_dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index a956e4e0..4a20ae00 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -620,7 +620,7 @@ def get_eo_data(row, total=total): return self.summary(df) -def create_datasets(datasets: List[LabeledDataset], ee_api: bool = True) -> None: +def create_datasets(datasets: List[LabeledDataset], ee_api: bool = False) -> None: report = "DATASET REPORT (autogenerated, do not edit directly)" for d in datasets: if not isinstance(d, LabeledDataset): From 4fa8e401ba4f279e40b3687f60abe0a5d0032bdc Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 07:51:56 -0400 Subject: [PATCH 29/50] better bot name --- .github/workflows/forest-example-test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index ecc08750..94455bd5 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -43,8 +43,8 @@ jobs: dvc push - name: Push automated dataset updates run: | - git config --global user.name 'Your Name' - git config --global user.email 'your-username@users.noreply.github.com' + git config --global user.name 'Dataset bot' + git config --global user.email 'dataset-bot@users.noreply.github.com' git add data git commit -m "Automated dataset updates" git push From d6bf5372e6f482356c8961ebb566e63544b0fe94 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 07:56:42 -0400 Subject: [PATCH 30/50] missing pd.index --- openmapflow/engineer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/engineer.py b/openmapflow/engineer.py index 943e15ec..cb654ab3 100644 --- a/openmapflow/engineer.py +++ b/openmapflow/engineer.py @@ -61,7 +61,7 @@ def load_tif( start_date + timedelta(days=DAYS_PER_TIMESTEP) * i for i in range(len(da_split_by_time)) ] - dynamic_data = xr.concat(da_split_by_time, timesteps, name="time") + dynamic_data = xr.concat(da_split_by_time, pd.Index(timesteps, name="time")) else: dynamic_data = xr.concat( da_split_by_time, pd.Index(range(len(da_split_by_time)), name="time") From c05cb5f482138d96f319de7cfa590cd013685b0b Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Thu, 22 Sep 2022 12:16:35 +0000 Subject: [PATCH 31/50] Automated dataset updates --- forest-example/data/datasets.dvc | 6 +++--- forest-example/data/report.txt | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index c706ccd4..e4968aab 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: d751713988987e9331980363e24189ce.dir - size: 0 - nfiles: 0 +- md5: f2f71b6421f461b628d0a482d0fa853b.dir + size: 5403839 + nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 5028810e..e204419f 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,8 +2,8 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_complete 10 -✔ training amount: 6 -✔ validation amount: 1 -✔ testing amount: 3 +eo_data_complete 1000 +✔ training amount: 579 +✔ validation amount: 196 +✔ testing amount: 225 From 51b62348c8eb50aa210649cd8439b7672eb37160 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 08:30:51 -0400 Subject: [PATCH 32/50] Regenerate 1000 point dataset with new points --- .github/workflows/forest-example-test.yaml | 1 + forest-example/data/datasets.dvc | 6 +++--- forest-example/datasets.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 94455bd5..fe791cea 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -45,6 +45,7 @@ jobs: run: | git config --global user.name 'Dataset bot' git config --global user.email 'dataset-bot@users.noreply.github.com' + git pull git add data git commit -m "Automated dataset updates" git push diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index e4968aab..c706ccd4 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: f2f71b6421f461b628d0a482d0fa853b.dir - size: 5403839 - nfiles: 1 +- md5: d751713988987e9331980363e24189ce.dir + size: 0 + nfiles: 0 path: datasets diff --git a/forest-example/datasets.py b/forest-example/datasets.py index a5881017..a0b7010b 100644 --- a/forest-example/datasets.py +++ b/forest-example/datasets.py @@ -24,7 +24,7 @@ def load_labels(self) -> pd.DataFrame: PROJECT_ROOT / DataPaths.RAW_LABELS / "hansen_labelled_data.csv" ) - df = df.sample(n=1000, random_state=42) + df = df.sample(n=1000, random_state=43) # Rename coordinate columns to be used for getting Earth observation data df.rename(columns={"lon": LAT, "lat": LON}, inplace=True) From f094c41ad13e0e23c90c317b843c7ce093d06c86 Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Thu, 22 Sep 2022 12:49:51 +0000 Subject: [PATCH 33/50] Automated dataset updates --- forest-example/data/datasets.dvc | 6 +++--- forest-example/data/report.txt | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index c706ccd4..004e9bff 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: d751713988987e9331980363e24189ce.dir - size: 0 - nfiles: 0 +- md5: d7cd227ffb660c99a49f9926540d6916.dir + size: 116231 + nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index e204419f..087972c9 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,8 +2,9 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_complete 1000 -✔ training amount: 579 -✔ validation amount: 196 -✔ testing amount: 225 +eo_data_exporting 998 +eo_data_complete 2 +✖ training: 579 labels, but 1 features +✖ validation: 196 labels, but 0 features +✖ testing: 225 labels, but 1 features From 0a42ff33f2103592dbe2ff3de65f029821945c93 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 09:03:43 -0400 Subject: [PATCH 34/50] Skip interactive portion --- openmapflow/labeled_dataset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index 4a20ae00..983749c6 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -429,7 +429,7 @@ def verify_and_standardize_df(self, df: pd.DataFrame) -> pd.DataFrame: df[END] = pd.to_datetime(df[END]).dt.strftime("%Y-%m-%d") return df - def create_dataset(self, force: bool = False) -> str: + def create_dataset(self, force: bool = False, interactive: bool = False) -> str: """ A dataset consists of (X, y) pairs that are used to train and evaluate a machine learning model. In this case, @@ -475,7 +475,7 @@ def create_dataset(self, force: bool = False) -> str: # STEP 4: If no matching earth observation file, download it # --------------------------------------------------------------------- already_getting_eo = df_with_no_eo_files[EO_STATUS] == EO_STATUS_EXPORTING - if already_getting_eo.sum() > 0: + if interactive and already_getting_eo.sum() > 0: confirm = ( input( f"{already_getting_eo.sum()} labels were already set to {EO_STATUS_EXPORTING} ," From 4ba303cf1f78d60967730cb2cac1363e29288d0e Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Thu, 22 Sep 2022 13:07:06 +0000 Subject: [PATCH 35/50] Automated dataset updates --- forest-example/data/datasets.dvc | 4 ++-- forest-example/data/report.txt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index 004e9bff..63ca8217 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: d7cd227ffb660c99a49f9926540d6916.dir - size: 116231 +- md5: 32ac0ea5a5e6afd5e9479e7493698b70.dir + size: 211814 nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 087972c9..6fc30b3d 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,9 +2,9 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_exporting 998 -eo_data_complete 2 -✖ training: 579 labels, but 1 features -✖ validation: 196 labels, but 0 features -✖ testing: 225 labels, but 1 features +eo_data_exporting 980 +eo_data_complete 20 +✖ training: 579 labels, but 10 features +✖ validation: 196 labels, but 3 features +✖ testing: 225 labels, but 7 features From 851e2a39aab94920ed9de8bd13801cfb240c10e2 Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Thu, 22 Sep 2022 17:24:01 +0000 Subject: [PATCH 36/50] Automated dataset updates --- forest-example/data/datasets.dvc | 4 ++-- forest-example/data/report.txt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index 63ca8217..d057bf6a 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 32ac0ea5a5e6afd5e9479e7493698b70.dir - size: 211814 +- md5: 316dad957889cc684de6d600ff917d82.dir + size: 1393711 nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 6fc30b3d..79569051 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,9 +2,9 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_exporting 980 -eo_data_complete 20 -✖ training: 579 labels, but 10 features -✖ validation: 196 labels, but 3 features -✖ testing: 225 labels, but 7 features +eo_data_exporting 757 +eo_data_complete 243 +✖ training: 579 labels, but 133 features +✖ validation: 196 labels, but 53 features +✖ testing: 225 labels, but 57 features From 7cecb0915ecdebc9bc088fd0f7b8a31d5fcaf6fb Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Thu, 22 Sep 2022 20:29:29 +0000 Subject: [PATCH 37/50] Automated dataset updates --- forest-example/data/datasets.dvc | 4 ++-- forest-example/data/report.txt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index d057bf6a..ce0f8963 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 316dad957889cc684de6d600ff917d82.dir - size: 1393711 +- md5: 5f03c9323cbc3b3823971065d946d8b0.dir + size: 2325965 nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 79569051..897e6f9d 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,9 +2,9 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_exporting 757 -eo_data_complete 243 -✖ training: 579 labels, but 133 features -✖ validation: 196 labels, but 53 features -✖ testing: 225 labels, but 57 features +eo_data_exporting 581 +eo_data_complete 419 +✖ training: 579 labels, but 243 features +✖ validation: 196 labels, but 83 features +✖ testing: 225 labels, but 93 features From f4d76ba1aef4419354ed79c82997877edfcb36d6 Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Fri, 23 Sep 2022 01:45:28 +0000 Subject: [PATCH 38/50] Automated dataset updates --- forest-example/data/datasets.dvc | 4 ++-- forest-example/data/report.txt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index ce0f8963..78448350 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 5f03c9323cbc3b3823971065d946d8b0.dir - size: 2325965 +- md5: 0f93fa3054e143afe204bff8ee0810d5.dir + size: 4381000 nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 897e6f9d..82d3d2b3 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,9 +2,9 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_exporting 581 -eo_data_complete 419 -✖ training: 579 labels, but 243 features -✖ validation: 196 labels, but 83 features -✖ testing: 225 labels, but 93 features +eo_data_complete 807 +eo_data_exporting 193 +✖ training: 579 labels, but 473 features +✖ validation: 196 labels, but 154 features +✖ testing: 225 labels, but 180 features From 070249ed446317472d24a37c595e6b68af1e41af Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Fri, 23 Sep 2022 02:36:30 +0000 Subject: [PATCH 39/50] Automated dataset updates --- forest-example/data/datasets.dvc | 4 ++-- forest-example/data/report.txt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index 78448350..a21d6d17 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 0f93fa3054e143afe204bff8ee0810d5.dir - size: 4381000 +- md5: 58d66a645b3e58fc79fc44513c356a8d.dir + size: 4698849 nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 82d3d2b3..683f38cf 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,9 +2,9 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_complete 807 -eo_data_exporting 193 -✖ training: 579 labels, but 473 features -✖ validation: 196 labels, but 154 features -✖ testing: 225 labels, but 180 features +eo_data_complete 867 +eo_data_exporting 133 +✖ training: 579 labels, but 508 features +✖ validation: 196 labels, but 164 features +✖ testing: 225 labels, but 195 features From 05783ccd9a438d49f8d011be2c51c53be2a2b9da Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 23:27:21 -0400 Subject: [PATCH 40/50] test engineer test --- tests/98-togo_2019-02-06_2020-02-01.tif | Bin 0 -> 343115 bytes tests/test_engineer.py | 65 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 tests/98-togo_2019-02-06_2020-02-01.tif create mode 100644 tests/test_engineer.py diff --git a/tests/98-togo_2019-02-06_2020-02-01.tif b/tests/98-togo_2019-02-06_2020-02-01.tif new file mode 100644 index 0000000000000000000000000000000000000000..1bfbc4054976c6d2e85f72b6093960277ed2e41f GIT binary patch literal 343115 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

0oKmZIx{`c_~v|kTSI1ENZu(%Z7l`+ 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

?6 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 V-|TyTqPp$t&v&o>esgO1 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 literal 0 HcmV?d00001 diff --git a/tests/test_engineer.py b/tests/test_engineer.py new file mode 100644 index 00000000..0c681dca --- /dev/null +++ b/tests/test_engineer.py @@ -0,0 +1,65 @@ +from pathlib import Path +from datetime import datetime +import unittest +import numpy as np + +from openmapflow.engineer import load_tif, fillna, process_test_file +from openmapflow.bands import BANDS, DYNAMIC_BANDS, STATIC_BANDS + +TIF_FILE = Path(__file__).parent / "98-togo_2019-02-06_2020-02-01.tif" + +NUM_TIMESTEPS = 12 + + +class TestEngineer(unittest.TestCase): + def test_load_tif_file(self): + + loaded_file, _ = load_tif(TIF_FILE) + self.assertEqual(loaded_file.shape[0], NUM_TIMESTEPS) + self.assertEqual(loaded_file.shape[1], len(DYNAMIC_BANDS) + len(STATIC_BANDS)) + + # also, check the static bands are actually constant across time + static_bands = loaded_file.values[:, len(DYNAMIC_BANDS)] + for i in range(1, NUM_TIMESTEPS): + self.assertTrue( + np.array_equal(static_bands[0], static_bands[i], equal_nan=True) + ) + + # finally, check expected for temperature + temperature_band = DYNAMIC_BANDS.index("temperature_2m") + temperature_values = loaded_file.values[:, temperature_band, :, :] + self.assertTrue(((temperature_values) > 0).all()) # in Kelvin + # https://en.wikipedia.org/wiki/Highest_temperature_recorded_on_Earth + self.assertTrue(((temperature_values) < 329.85).all()) + + def test_fillna_real(self): + + loaded_file, average_slope = load_tif(TIF_FILE) + + # slope is calculated from neighbouring points, so the + # edges are NaN + for lat_idx in range(loaded_file.shape[2]): + for lon_idx in range(loaded_file.shape[3]): + # we remove the first index to simulate removing B1 and B10 + array = loaded_file.values[:, 2:, lat_idx, lon_idx] + num_timesteps = array.shape[0] + # and we add an array to simulate adding NDVI + array = np.concatenate([array, np.ones([num_timesteps, 1])], axis=1) + new_array = fillna(array, average_slope) + if np.isnan(array[-2]).all(): + self.assertTrue((new_array[-2] == average_slope).all()) + self.assertFalse(np.isnan(new_array).any()) + + def test_fillna_simulated(self): + array = np.array([[1, float("NaN"), 3]] * len(BANDS)).T + expected_array = np.array([[1, 2, 3]] * len(BANDS)).T + new_array = fillna(array, average_slope=1) + self.assertTrue(np.array_equal(new_array, expected_array)) + + def test_process_test_file(self): + x_np, flat_lat, flat_lon = process_test_file( + TIF_FILE, start_date=datetime(2019, 2, 6, 0, 0) + ) + self.assertEqual(x_np.shape, (289, 12, 18)) + self.assertEqual(flat_lat.shape, (289,)) + self.assertEqual(flat_lon.shape, (289,)) From b033c276d87d3db4c56c8a6f74228b79317df976 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Thu, 22 Sep 2022 23:27:57 -0400 Subject: [PATCH 41/50] argparse and clean ee api code --- openmapflow/labeled_dataset.py | 168 ++++++++++++++++---------------- openmapflow/scripts/openmapflow | 2 +- 2 files changed, 84 insertions(+), 86 deletions(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index 983749c6..e85ddb45 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -1,3 +1,4 @@ +import argparse import random import shutil import tempfile @@ -384,7 +385,8 @@ def summary(self, df: pd.DataFrame) -> str: + "\n" ) - def _duplicates_check(self, df: pd.DataFrame): + def _mark_duplicates(self, df: pd.DataFrame): + """Mark duplicates in dataframe""" clean_df = df[clean_df_condition(df)] duplicates = clean_df.duplicated(subset=[EO_LAT, EO_LON, EO_FILE]) if duplicates.sum() > 0: @@ -394,7 +396,6 @@ def _duplicates_check(self, df: pd.DataFrame): df.loc[duplicates_index, EO_LAT] = None df.loc[duplicates_index, EO_LON] = None df.loc[duplicates_index, EO_FILE] = None - df.to_csv(self.df_path, index=False) return df def load_df(self, check_eo_data: bool = True, to_np: bool = False) -> pd.DataFrame: @@ -413,7 +414,7 @@ def load_df(self, check_eo_data: bool = True, to_np: bool = False) -> pd.DataFra df[EO_DATA] = df[EO_DATA].progress_apply(str_to_np) return df - def verify_and_standardize_df(self, df: pd.DataFrame) -> pd.DataFrame: + def _verify_and_standardize_df(self, df: pd.DataFrame) -> pd.DataFrame: print(f"Verifying labels: {self.name}") if not verify_df(df): raise ValueError("DataFrame is not valid, check the output above.") @@ -429,41 +430,12 @@ def verify_and_standardize_df(self, df: pd.DataFrame) -> pd.DataFrame: df[END] = pd.to_datetime(df[END]).dt.strftime("%Y-%m-%d") return df - def create_dataset(self, force: bool = False, interactive: bool = False) -> str: - """ - A dataset consists of (X, y) pairs that are used to train and evaluate - a machine learning model. In this case, - - X is the earth observation data for a lat lon coordinate over a 24 month time series - - y is the binary class label for that coordinate - To create a dataset: - 1. Obtain the labels - 2. Check if the eath observation data already exists - 3. Use the label coordinates to match to the associated eath observation data (X) - 4. If the eath observation data is missing, download it using Google Earth Engine - 5. Create the dataset - """ - # --------------------------------------------------------------------- - # STEP 1: Obtain the labels - # --------------------------------------------------------------------- - if not self.df_path.exists() or force: - df = self.load_labels() - df = self.verify_and_standardize_df(df) - df.to_csv(self.df_path, index=False) - df = pd.read_csv(self.df_path) - - # --------------------------------------------------------------------- - # STEP 2: Check if earth observation data already available - # --------------------------------------------------------------------- - no_eo = clean_df_condition(df) & (df[EO_DATA].isnull()) - if no_eo.sum() == 0: - df = self._duplicates_check(df) - return self.summary(df) - - print(self.summary(df)) + def _fetch_eo_data_with_ee_tasks( + self, df: pd.DataFrame, no_eo: pd.Series, interactive: bool = False + ) -> pd.DataFrame: + """Fetch earth observation data for labels in a DataFrame using Earth Engine Tasks""" - # --------------------------------------------------------------------- - # STEP 3: Match labels to earth observation files - # --------------------------------------------------------------------- + # STEP 1: Match labels to earth observation files df[MATCHING_EO_FILES] = "" df.loc[no_eo, MATCHING_EO_FILES] = _match_labels_to_eo_files(df[no_eo]) @@ -471,9 +443,7 @@ def create_dataset(self, force: bool = False, interactive: bool = False) -> str: df_with_no_eo_files = df[no_eo].loc[~eo_files_found] df_with_eo_files = df[no_eo].loc[eo_files_found] - # --------------------------------------------------------------------- - # STEP 4: If no matching earth observation file, download it - # --------------------------------------------------------------------- + # STEP 2: If no matching earth observation file, download it already_getting_eo = df_with_no_eo_files[EO_STATUS] == EO_STATUS_EXPORTING if interactive and already_getting_eo.sum() > 0: confirm = ( @@ -494,9 +464,7 @@ def create_dataset(self, force: bool = False, interactive: bool = False) -> str: ).export_for_labels(labels=df_with_no_eo_files) df.loc[df_with_no_eo_files.index, EO_STATUS] = EO_STATUS_EXPORTING - # --------------------------------------------------------------------- - # STEP 5: Create the dataset (earth observation data, label) - # --------------------------------------------------------------------- + # STEP 3: Create the dataset (earth observation data, label) if len(df_with_eo_files) > 0: storage = import_optional_dependency("google.cloud.storage") tif_bucket = storage.Client().bucket(BucketNames.LABELED_EO) @@ -551,52 +519,24 @@ def set_df(i, start, eo_paths, lon, lat, pbar): ) df.drop(columns=[MATCHING_EO_FILES], inplace=True) - df.to_csv(self.df_path, index=False) - return self.summary(df) - - def create_dataset_ee_api(self, force: bool = False) -> str: - """ - A dataset consists of (X, y) pairs that are used to train and evaluate - a machine learning model. In this case, - - X is the earth observation data for a lat lon coordinate over a 24 month time series - - y is the binary class label for that coordinate - To create a dataset: - 1. Obtain the labels - 2. Check if the eath observation data already exists - 3. Use the label coordinates to fetch the associated eath observation data (X) - """ - # --------------------------------------------------------------------- - # STEP 1: Obtain the labels - # --------------------------------------------------------------------- - if not self.df_path.exists() or force: - df = self.load_labels() - df = self.verify_and_standardize_df(df) - df.to_csv(self.df_path, index=False) - df = pd.read_csv(self.df_path) + return df - # --------------------------------------------------------------------- - # STEP 2: Check if earth observation data already available - # --------------------------------------------------------------------- - no_eo = clean_df_condition(df) & (df[EO_DATA].isnull()) - if no_eo.sum() == 0: - df = self._duplicates_check(df) - return self.summary(df) + def _fetch_eo_data_with_ee_api( + self, df: pd.DataFrame, npartitions: int = 4 + ) -> pd.DataFrame: + """Fetch earth observation data for labels in a DataFrame using Earth Engine API""" - print(self.summary(df)) - - # --------------------------------------------------------------------- - # STEP 3: Fetch data and create the dataset (eo data, label) - # --------------------------------------------------------------------- + # Initialize dataframe and EarthEngineAPI df[EO_DATA] = df[EO_DATA].astype(object) df[START] = pd.to_datetime(df[START]) df[END] = pd.to_datetime(df[END]) df.reset_index() - ee_api = EarthEngineAPI() dd = import_optional_dependency("dask.dataframe") - ddf = dd.from_pandas(df, npartitions=4) + ddf = dd.from_pandas(df, npartitions=npartitions) total = len(df) + # Download and extract eo data time series for each label def get_eo_data(row, total=total): prefix = f"{row.name}/{total}:" print(f"{prefix} fetching EarthEngine image url") @@ -615,20 +555,78 @@ def get_eo_data(row, total=total): out = ddf.apply(get_eo_data, meta=tuple, axis=1).compute() df[EO_DATA], df[EO_LAT], df[EO_LON], df[EO_STATUS] = zip(*out) - df = self._duplicates_check(df) + + return df + + def create_dataset( + self, ee_api: bool = False, interactive: bool = True, npartitions: bool = 4 + ) -> str: + """ + A dataset consists of (X, y) pairs that are used to train and evaluate + a machine learning model. In this case, + - X is the earth observation data for a lat lon coordinate over a 24 month time series + - y is the binary class label for that coordinate + To create a dataset: load the labels, fetch the earth observation data, and save the dataset + """ + + # Load the labels + if not self.df_path.exists(): + df = self.load_labels() + df = self._verify_and_standardize_df(df) + df.to_csv(self.df_path, index=False) + df = pd.read_csv(self.df_path) + + # Check if earth observation data is already present + no_eo = clean_df_condition(df) & (df[EO_DATA].isnull()) + if no_eo.sum() == 0: + df = self._mark_duplicates(df) + return self.summary(df) + + # Fetch the earth observation data + print(self.summary(df)) + if ee_api: + df = self._fetch_eo_data_with_ee_api(df, no_eo, npartitions=npartitions) + else: + df = self._fetch_eo_data_with_ee_tasks(df, no_eo, interactive=interactive) + df = self._mark_duplicates(df) + + # Save the dataset df.to_csv(self.df_path, index=False) return self.summary(df) -def create_datasets(datasets: List[LabeledDataset], ee_api: bool = False) -> None: +def create_datasets(datasets: List[LabeledDataset]) -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + "--ee_api", + dest="ee_api", + action="store_true", + help="Use Earth Engine API for eo data fetching", + ) + parser.add_argument( + "--non-interactive", + dest="interactive", + action="store_false", + help="Run in non-interactive mode", + ) + parser.add_argument( + "--npartitions", + dest="npartitions", + type=int, + default=4, + help="Number of partitions (only valid for ee_api mode)", + ) + parser.set_defaults(ee_api=False) + parser.set_defaults(interactive=True) + args = parser.parse_args().__dict__ report = "DATASET REPORT (autogenerated, do not edit directly)" for d in datasets: if not isinstance(d, LabeledDataset): raise TypeError(f"Expected LabeledDataset, got {type(d)}") - if ee_api: - summary = d.create_dataset_ee_api() - else: - summary = d.create_dataset() + + summary = d.create_dataset( + ee_api=args["ee_api"], interactive=args["interactive"] + ) print(summary) report += "\n\n" + summary diff --git a/openmapflow/scripts/openmapflow b/openmapflow/scripts/openmapflow index 20ac1bba..b2d58fda 100644 --- a/openmapflow/scripts/openmapflow +++ b/openmapflow/scripts/openmapflow @@ -17,7 +17,7 @@ case $1 in ;; "create-datasets") check_openmapflow_yaml - python3 -c "from datasets import datasets; from openmapflow.labeled_dataset import create_datasets; create_datasets(datasets)" + python3 -c "from datasets import datasets; from openmapflow.labeled_dataset import create_datasets; create_datasets(datasets)" "${@:2}" ;; "datapath") check_openmapflow_yaml From f6e90c00bfdc8546412187f6f21a78fc0e8a753f Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 00:36:00 -0400 Subject: [PATCH 42/50] Remove date parameter --- openmapflow/labeled_dataset.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index e85ddb45..eedac952 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -4,7 +4,7 @@ import tempfile import warnings from dataclasses import dataclass -from datetime import date, datetime +from datetime import date from pathlib import Path from typing import Dict, List, Tuple @@ -136,7 +136,7 @@ def _match_labels_to_eo_files(labels: pd.DataFrame) -> pd.Series: def _find_matching_point( - start: str, eo_paths: List[Path], label_lon: float, label_lat: float, tif_bucket + eo_paths: List[Path], label_lon: float, label_lat: float, tif_bucket ) -> Tuple[np.ndarray, float, float, str]: """ Given a label coordinate (y) this functions finds the associated satellite data (X) @@ -145,16 +145,13 @@ def _find_matching_point( So the function finds the closest grid coordinate to the label coordinate. Additional value is given to a grid coordinate that is close to the center of the tif. """ - start_date = datetime.strptime(start, "%Y-%m-%d") tif_slope_tuples = [] for p in eo_paths: blob = tif_bucket.blob(str(p)) local_path = Path(f"{temp_dir}/{p.name}") if not local_path.exists(): blob.download_to_filename(str(local_path)) - tif_slope_tuples.append( - load_tif(local_path, start_date=start_date, num_timesteps=None) - ) + tif_slope_tuples.append(load_tif(local_path)) if local_path.exists(): local_path.unlink() @@ -472,9 +469,8 @@ def _fetch_eo_data_with_ee_tasks( df[EO_DATA] = df[EO_DATA].astype(object) df[EO_FILE] = df[EO_FILE].astype(str) - def set_df(i, start, eo_paths, lon, lat, pbar): + def set_df(i, eo_paths, lon, lat, pbar): (eo_data, eo_lon, eo_lat, eo_file) = _find_matching_point( - start=start, eo_paths=eo_paths, label_lon=lon, label_lat=lat, @@ -511,7 +507,6 @@ def set_df(i, start, eo_paths, lon, lat, pbar): ) as pbar: np.vectorize(set_df, otypes="b")( i=df_with_eo_files.index, - start=df_with_eo_files[START], eo_paths=df_with_eo_files[MATCHING_EO_FILES], lon=df_with_eo_files[LON], lat=df_with_eo_files[LAT], @@ -559,7 +554,7 @@ def get_eo_data(row, total=total): return df def create_dataset( - self, ee_api: bool = False, interactive: bool = True, npartitions: bool = 4 + self, ee_api: bool = False, interactive: bool = True, npartitions: int = 4 ) -> str: """ A dataset consists of (X, y) pairs that are used to train and evaluate @@ -567,6 +562,9 @@ def create_dataset( - X is the earth observation data for a lat lon coordinate over a 24 month time series - y is the binary class label for that coordinate To create a dataset: load the labels, fetch the earth observation data, and save the dataset + :param ee_api: Use Earth Engine API to fetch earth observation data + :param interactive: Allow user prompts + :param npartitions: Number of partitions to use when fetching earth observation data using API """ # Load the labels @@ -585,7 +583,7 @@ def create_dataset( # Fetch the earth observation data print(self.summary(df)) if ee_api: - df = self._fetch_eo_data_with_ee_api(df, no_eo, npartitions=npartitions) + df = self._fetch_eo_data_with_ee_api(df, npartitions=npartitions) else: df = self._fetch_eo_data_with_ee_tasks(df, no_eo, interactive=interactive) df = self._mark_duplicates(df) From b605b74b5ff7ec6cce31aec16c5c0bb971a8810e Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 00:36:12 -0400 Subject: [PATCH 43/50] Sort engineer imports --- tests/test_engineer.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/test_engineer.py b/tests/test_engineer.py index 0c681dca..f2441a2d 100644 --- a/tests/test_engineer.py +++ b/tests/test_engineer.py @@ -1,10 +1,11 @@ -from pathlib import Path -from datetime import datetime import unittest +from datetime import datetime +from pathlib import Path + import numpy as np -from openmapflow.engineer import load_tif, fillna, process_test_file from openmapflow.bands import BANDS, DYNAMIC_BANDS, STATIC_BANDS +from openmapflow.engineer import fillna, load_tif, process_test_file TIF_FILE = Path(__file__).parent / "98-togo_2019-02-06_2020-02-01.tif" From 508291ce0698e669062a056805e2481589b80d23 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 00:36:24 -0400 Subject: [PATCH 44/50] Test for find_matching_point url --- tests/test_labeled_dataset.py | 39 ++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/tests/test_labeled_dataset.py b/tests/test_labeled_dataset.py index 94b7a084..837b485f 100644 --- a/tests/test_labeled_dataset.py +++ b/tests/test_labeled_dataset.py @@ -1,4 +1,5 @@ import warnings +from dataclasses import dataclass from pathlib import Path from unittest import TestCase, skipIf from unittest.mock import Mock, patch @@ -12,6 +13,7 @@ _distance, _distance_point_from_center, _find_matching_point, + _find_matching_point_url, _find_nearest, _generate_bbox_from_paths, _get_tif_paths, @@ -64,7 +66,6 @@ def test_find_matching_point_from_one(self, mock_load_tif): ) mock_load_tif.return_value = mock_data, 0.0 labelled_np, closest_lon, closest_lat, source_file = _find_matching_point( - start="2020-10-10", eo_paths=[Path("mock")], label_lon=5, label_lat=5, @@ -83,7 +84,7 @@ def test_find_matching_point_from_one(self, mock_load_tif): def test_find_matching_point_from_multiple(self, mock_load_tif): tif_paths = [Path("mock1"), Path("mock2"), Path("mock3")] - def side_effect(path, start_date, num_timesteps): + def side_effect(path): idx = [i for i, p in enumerate(tif_paths) if p.stem == Path(path).stem][0] return ( xr.DataArray( @@ -95,11 +96,7 @@ def side_effect(path, start_date, num_timesteps): mock_load_tif.side_effect = side_effect labelled_np, closest_lon, closest_lat, source_file = _find_matching_point( - start="2020-10-10", - eo_paths=tif_paths, - label_lon=8, - label_lat=8, - tif_bucket=Mock(), + eo_paths=tif_paths, label_lon=8, label_lat=8, tif_bucket=Mock() ) self.assertEqual(closest_lon, 8) self.assertEqual(closest_lat, 8) @@ -107,6 +104,34 @@ def side_effect(path, start_date, num_timesteps): expected = np.ones((24, 18)) * 0.0 self.assertTrue((labelled_np == expected).all()) + @skipIf(XARRAY_NOT_INSTALLED, "xarray not installed") + @patch("openmapflow.labeled_dataset.shutil") + @patch("openmapflow.labeled_dataset.requests") + @patch("openmapflow.labeled_dataset.load_tif") + def test_find_matching_point_from_url( + self, mock_load_tif, mock_requests, mock_shutil + ): + mock_data = xr.DataArray( + data=np.ones((24, 19, 17, 17)), dims=("time", "band", "y", "x") + ) + + @dataclass + class MockResponse: + raw: str = "" + status_code: int = 200 + + mock_requests.get.return_value = MockResponse() + mock_load_tif.return_value = mock_data, 0.0 + labelled_np, closest_lon, closest_lat = _find_matching_point_url( + url="https://mock", label_lon=5, label_lat=5 + ) + self.assertEqual(closest_lon, 5) + self.assertEqual(closest_lat, 5) + self.assertEqual(labelled_np.shape, (24, 18)) + expected = np.ones((24, 18)) + expected[:, -1] = 0 # NDVI is 0 + self.assertTrue((labelled_np == expected).all()) + def test_find_nearest(self): val, idx = _find_nearest([1.0, 2.0, 3.0, 4.0, 5.0], 4.0) self.assertEqual(val, 4.0) From 230c612bbac3bc78fc74f0c7e0b3dbf6492a81c0 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 00:36:46 -0400 Subject: [PATCH 45/50] Improve CLI message --- openmapflow/scripts/openmapflow | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/scripts/openmapflow b/openmapflow/scripts/openmapflow index b2d58fda..3f86de08 100644 --- a/openmapflow/scripts/openmapflow +++ b/openmapflow/scripts/openmapflow @@ -5,7 +5,7 @@ version() { python3 -c "from openmapflow.constants import VERSION; print(VERSION datasets() { python3 -c "from openmapflow.config import DataPaths; print(DataPaths.REPORT)"; } check_openmapflow_yaml() { if [ ! -f "openmapflow.yaml" ]; then - echo "No openmapflow.yaml file found. Please create one by running: openmapflow generate" + echo "Please navigate to a directory containing openmapflow.yaml or create one by running: openmapflow generate" return 1 fi } From ff9d447a4eed5d5b05492cc02d10046674c212fd Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 00:40:33 -0400 Subject: [PATCH 46/50] Reduce line length --- openmapflow/labeled_dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/labeled_dataset.py b/openmapflow/labeled_dataset.py index eedac952..61ebed8e 100644 --- a/openmapflow/labeled_dataset.py +++ b/openmapflow/labeled_dataset.py @@ -564,7 +564,7 @@ def create_dataset( To create a dataset: load the labels, fetch the earth observation data, and save the dataset :param ee_api: Use Earth Engine API to fetch earth observation data :param interactive: Allow user prompts - :param npartitions: Number of partitions to use when fetching earth observation data using API + :param npartitions: Number of partitions to use when fetching earth observation data """ # Load the labels From 1395cc95e0fa1574aa04cc019e7e6635a539c00d Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 00:40:48 -0400 Subject: [PATCH 47/50] Set non-interactive mode --- .github/workflows/forest-example-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index fe791cea..8f5637de 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -38,7 +38,7 @@ jobs: GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }} run: | dvc pull -f - openmapflow create-datasets + openmapflow create-datasets --non-interactive dvc commit -f dvc push - name: Push automated dataset updates From b588a8be9fdcfe049e1440ddafcf38a9b3371eee Mon Sep 17 00:00:00 2001 From: Dataset bot Date: Fri, 23 Sep 2022 04:47:12 +0000 Subject: [PATCH 48/50] Automated dataset updates --- forest-example/data/datasets.dvc | 4 ++-- forest-example/data/report.txt | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/forest-example/data/datasets.dvc b/forest-example/data/datasets.dvc index a21d6d17..4238ba4d 100644 --- a/forest-example/data/datasets.dvc +++ b/forest-example/data/datasets.dvc @@ -1,5 +1,5 @@ outs: -- md5: 58d66a645b3e58fc79fc44513c356a8d.dir - size: 4698849 +- md5: 3d8ac3ef8c473bb3445b9b67a0fdbc33.dir + size: 5403436 nfiles: 1 path: datasets diff --git a/forest-example/data/report.txt b/forest-example/data/report.txt index 683f38cf..e204419f 100644 --- a/forest-example/data/report.txt +++ b/forest-example/data/report.txt @@ -2,9 +2,8 @@ DATASET REPORT (autogenerated, do not edit directly) UgandaForest2019 (Timesteps: 24) ---------------------------------------------------------------------------- -eo_data_complete 867 -eo_data_exporting 133 -✖ training: 579 labels, but 508 features -✖ validation: 196 labels, but 164 features -✖ testing: 225 labels, but 195 features +eo_data_complete 1000 +✔ training amount: 579 +✔ validation amount: 196 +✔ testing amount: 225 From 8bfdae8e5a102fe975e3746d552b4ae751156b99 Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 01:10:42 -0400 Subject: [PATCH 49/50] Allow git commit to fail --- .github/workflows/forest-example-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/forest-example-test.yaml b/.github/workflows/forest-example-test.yaml index 8f5637de..978938e6 100644 --- a/.github/workflows/forest-example-test.yaml +++ b/.github/workflows/forest-example-test.yaml @@ -47,7 +47,7 @@ jobs: git config --global user.email 'dataset-bot@users.noreply.github.com' git pull git add data - git commit -m "Automated dataset updates" + git commit -m "Automated dataset updates" || echo "No updates to commit" git push - name: Integration test - Project run: | From b120d3a7b317cf06aed9d431fafc4a79052062ad Mon Sep 17 00:00:00 2001 From: ivanzvonkov Date: Fri, 23 Sep 2022 01:11:37 -0400 Subject: [PATCH 50/50] Update version --- openmapflow/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmapflow/constants.py b/openmapflow/constants.py index 48d92dd2..5e6f9321 100644 --- a/openmapflow/constants.py +++ b/openmapflow/constants.py @@ -13,7 +13,7 @@ TEMPLATE_README = TEMPLATES_DIR / "README.md" TEMPLATE_DEPLOY_YML = TEMPLATES_DIR / "github-deploy.yaml" TEMPLATE_TEST_YML = TEMPLATES_DIR / "github-test.yaml" -VERSION = "0.2.0rc1" +VERSION = "0.2.1rc1" # -------------- Dataframe column names -------------------------------------- SOURCE = "source"