Skip to content

Commit f17b1ec

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent f10aa6a commit f17b1ec

10 files changed

+145
-82
lines changed

notebooks/Figure-1.ipynb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
"metadata": {},
1616
"outputs": [],
1717
"source": [
18+
"import json\n",
1819
"import os\n",
20+
"\n",
1921
"import fsspec\n",
20-
"import json\n",
21-
"import numpy as np\n",
22-
"import matplotlib.pyplot as plt"
22+
"import matplotlib.pyplot as plt\n",
23+
"import numpy as np"
2324
]
2425
},
2526
{

notebooks/Figure-3.ipynb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@
1515
"metadata": {},
1616
"outputs": [],
1717
"source": [
18+
"import json\n",
1819
"import os\n",
20+
"\n",
1921
"import fsspec\n",
20-
"import json\n",
21-
"import pandas as pd\n",
22+
"import matplotlib.pyplot as plt\n",
2223
"import numpy as np\n",
23-
"import statsmodels.formula.api as smf\n",
24-
"import matplotlib.pyplot as plt"
24+
"import pandas as pd\n",
25+
"import statsmodels.formula.api as smf"
2526
]
2627
},
2728
{

notebooks/Figure-5.ipynb

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@
1515
"metadata": {},
1616
"outputs": [],
1717
"source": [
18+
"import json\n",
1819
"import os\n",
20+
"\n",
1921
"import fsspec\n",
20-
"import json\n",
21-
"import pandas as pd\n",
22-
"import numpy as np\n",
2322
"import matplotlib.pyplot as plt\n",
23+
"import numpy as np\n",
24+
"import pandas as pd\n",
2425
"from matplotlib import ticker"
2526
]
2627
},
@@ -93,9 +94,15 @@
9394
" np.percentile(data[key][\"delta_arbocs\"], 75) / get(key)[\"arbocs\"][\"issuance\"]\n",
9495
" for key in data.keys()\n",
9596
"]\n",
96-
"df[\"absolute_low\"] = [np.percentile(data[key][\"delta_arbocs\"], 5) for key in data.keys()]\n",
97-
"df[\"absolute_med\"] = [np.percentile(data[key][\"delta_arbocs\"], 50) for key in data.keys()]\n",
98-
"df[\"absolute_high\"] = [np.percentile(data[key][\"delta_arbocs\"], 95) for key in data.keys()]\n",
97+
"df[\"absolute_low\"] = [\n",
98+
" np.percentile(data[key][\"delta_arbocs\"], 5) for key in data.keys()\n",
99+
"]\n",
100+
"df[\"absolute_med\"] = [\n",
101+
" np.percentile(data[key][\"delta_arbocs\"], 50) for key in data.keys()\n",
102+
"]\n",
103+
"df[\"absolute_high\"] = [\n",
104+
" np.percentile(data[key][\"delta_arbocs\"], 95) for key in data.keys()\n",
105+
"]\n",
99106
"df[\"project_size\"] = [get(key)[\"arbocs\"][\"issuance\"] for key in data.keys()]\n",
100107
"df[\"cp_slag\"] = [get(key)[\"carbon\"][\"common_practice\"][\"value\"] for key in data.keys()]\n",
101108
"df[\"alternate_slag\"] = [np.percentile(data[key][\"alt_slag\"], 50) for key in data.keys()]\n",
@@ -117,8 +124,10 @@
117124
"metadata": {},
118125
"outputs": [],
119126
"source": [
120-
"def format_si(num, precision=0, suffixes=[\"\", \"K\", \"M\", \"G\", \"T\", \"P\"], show_suffix=False):\n",
121-
" m = sum([abs(num / 1000.0 ** x) >= 1 for x in range(1, len(suffixes))])\n",
127+
"def format_si(\n",
128+
" num, precision=0, suffixes=[\"\", \"K\", \"M\", \"G\", \"T\", \"P\"], show_suffix=False\n",
129+
"):\n",
130+
" m = sum([abs(num / 1000.0**x) >= 1 for x in range(1, len(suffixes))])\n",
122131
" if show_suffix:\n",
123132
" return f\"{num/1000.0**m:.{precision}f}{suffixes[m]}\"\n",
124133
" else:\n",
@@ -154,7 +163,10 @@
154163
" total.append(np.nansum([data[key][\"delta_arbocs\"][i] for key in data.keys()]))\n",
155164
" total_arbocs = np.percentile(total, [5, 50, 95])\n",
156165
" total_percentage = np.percentile(total, [5, 50, 95]) / np.sum(\n",
157-
" [[x for x in db if x[\"id\"] == key][0][\"arbocs\"][\"issuance\"] for key in data.keys()]\n",
166+
" [\n",
167+
" [x for x in db if x[\"id\"] == key][0][\"arbocs\"][\"issuance\"]\n",
168+
" for key in data.keys()\n",
169+
" ]\n",
158170
" )"
159171
]
160172
},
@@ -284,7 +296,9 @@
284296
"axs[1].vlines(df[\"id\"], -1, 1.5, color=(0.95, 0.95, 0.95), linewidth=1)\n",
285297
"axs[1].hlines([0], [0], [len(df) - 1], color=(0.75, 0.75, 0.75), linewidth=2)\n",
286298
"axs[1].plot(df[\"id\"], df[\"percent_med\"], \".\", color=\"#7EB36A\", markersize=12)\n",
287-
"axs[1].vlines(df[\"id\"], df[\"percent_low\"], df[\"percent_high\"], color=\"black\", linewidth=1.25)\n",
299+
"axs[1].vlines(\n",
300+
" df[\"id\"], df[\"percent_low\"], df[\"percent_high\"], color=\"black\", linewidth=1.25\n",
301+
")\n",
288302
"axs[1].set_xticks([])\n",
289303
"axs[1].set_ylim([-1.1, 1.1])\n",
290304
"axs[1].set_ylabel(\"Crediting error (%)\")\n",

notebooks/Figure-6.ipynb

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
"metadata": {},
1616
"outputs": [],
1717
"source": [
18+
"import json\n",
1819
"import os\n",
20+
"\n",
1921
"import fsspec\n",
20-
"import json\n",
2122
"import geopandas\n",
2223
"import matplotlib as mpl\n",
2324
"import matplotlib.pyplot as plt\n",
@@ -26,7 +27,6 @@
2627
"from mpl_toolkits.axes_grid1.inset_locator import inset_axes\n",
2728
"from shapely.geometry import Point\n",
2829
"\n",
29-
"\n",
3030
"crs = \"+proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs=True\""
3131
]
3232
},
@@ -100,7 +100,9 @@
100100
"outputs": [],
101101
"source": [
102102
"proj_centroids = {\n",
103-
" project[\"opr_id\"]: Point(project[\"shape_centroid\"][0][0], project[\"shape_centroid\"][0][1])\n",
103+
" project[\"opr_id\"]: Point(\n",
104+
" project[\"shape_centroid\"][0][0], project[\"shape_centroid\"][0][1]\n",
105+
" )\n",
104106
" for project in db\n",
105107
" if (79 in project[\"supersection_ids\"])\n",
106108
" and (\n",
@@ -119,7 +121,9 @@
119121
"outputs": [],
120122
"source": [
121123
"proj_points = geopandas.GeoDataFrame(\n",
122-
" data=list(proj_centroids.keys()), geometry=list(proj_centroids.values()), crs=\"epsg:4326\"\n",
124+
" data=list(proj_centroids.keys()),\n",
125+
" geometry=list(proj_centroids.values()),\n",
126+
" crs=\"epsg:4326\",\n",
123127
")"
124128
]
125129
},
@@ -214,9 +218,9 @@
214218
"metadata": {},
215219
"outputs": [],
216220
"source": [
217-
"vmin, vmax = arbitrage_df.mean_local_slag.quantile(0.025), arbitrage_df.mean_local_slag.quantile(\n",
218-
" 0.975\n",
219-
")\n",
221+
"vmin, vmax = arbitrage_df.mean_local_slag.quantile(\n",
222+
" 0.025\n",
223+
"), arbitrage_df.mean_local_slag.quantile(0.975)\n",
220224
"\n",
221225
"norm = mpl.colors.Normalize(vmin, vmax)"
222226
]
@@ -276,9 +280,13 @@
276280
"outputs": [],
277281
"source": [
278282
"supersection_sections = (\n",
279-
" ecomap_sections.loc[ecomap_sections[\"MAP_UNIT_S\"].isin(ecosections)].to_crs(crs).copy()\n",
283+
" ecomap_sections.loc[ecomap_sections[\"MAP_UNIT_S\"].isin(ecosections)]\n",
284+
" .to_crs(crs)\n",
285+
" .copy()\n",
286+
")\n",
287+
"supersection_sections[\"slag\"] = supersection_sections[\"MAP_UNIT_S\"].map(\n",
288+
" slag_per_section\n",
280289
")\n",
281-
"supersection_sections[\"slag\"] = supersection_sections[\"MAP_UNIT_S\"].map(slag_per_section)\n",
282290
"supersection_outline = supersection_sections.dissolve(\"PROJECT\")"
283291
]
284292
},
@@ -327,10 +335,14 @@
327335
" vmax=55,\n",
328336
" legend_kwds={\"label\": \"\", \"orientation\": \"vertical\"},\n",
329337
")\n",
330-
"cax.set_ylabel(\"$\\Delta$ Carbon\\n(tCO2e / acre)\", loc=\"center\", labelpad=-75, fontsize=12)\n",
338+
"cax.set_ylabel(\n",
339+
" \"$\\\\Delta$ Carbon\\n(tCO2e / acre)\", loc=\"center\", labelpad=-75, fontsize=12\n",
340+
")\n",
331341
"cax.yaxis.set_ticks_position(\"none\")\n",
332342
"\n",
333-
"proj_points.to_crs(crs).plot(ax=ax[0], marker=\"^\", color=\"k\", markersize=100, edgecolor=None)\n",
343+
"proj_points.to_crs(crs).plot(\n",
344+
" ax=ax[0], marker=\"^\", color=\"k\", markersize=100, edgecolor=None\n",
345+
")\n",
334346
"supersection_outline.plot(ax=ax[0], edgecolor=\"k\", lw=0.2, color=\"None\")\n",
335347
"\n",
336348
"supersection_sections.plot(\n",
@@ -342,7 +354,9 @@
342354
" vmin=-55,\n",
343355
" vmax=55,\n",
344356
")\n",
345-
"proj_points.to_crs(crs).plot(ax=ax[1], marker=\"^\", color=\"k\", markersize=100, edgecolor=None)\n",
357+
"proj_points.to_crs(crs).plot(\n",
358+
" ax=ax[1], marker=\"^\", color=\"k\", markersize=100, edgecolor=None\n",
359+
")\n",
346360
"\n",
347361
"\n",
348362
"xys = {\"M261D\": (0.7, 0.25), \"M261A\": (0.15, 0.8), \"M261B\": (0.4, 0.15)}\n",

notebooks/Inline-Statistics.ipynb

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,18 @@
1616
"metadata": {},
1717
"outputs": [],
1818
"source": [
19-
"from collections import Counter\n",
20-
"import fsspec\n",
2119
"import json\n",
22-
"import os\n",
2320
"\n",
24-
"import matplotlib.pyplot as plt\n",
21+
"import fsspec\n",
2522
"import numpy as np\n",
2623
"import pandas as pd\n",
2724
"import seaborn as sns\n",
28-
"from sklearn.metrics import mean_squared_error\n",
29-
"\n",
30-
"from carbonplan_forest_offsets.analysis.project_crediting_error import get_slag_to_total_scalar\n",
25+
"from carbonplan_forest_offsets.analysis.project_crediting_error import (\n",
26+
" get_slag_to_total_scalar,\n",
27+
")\n",
3128
"from carbonplan_forest_offsets.data import cat\n",
32-
"from carbonplan_forest_offsets.load.issuance import load_issuance_table, ifm_opr_ids"
29+
"from carbonplan_forest_offsets.load.issuance import ifm_opr_ids, load_issuance_table\n",
30+
"from sklearn.metrics import mean_squared_error"
3331
]
3432
},
3533
{
@@ -133,7 +131,8 @@
133131
"subsets = {\n",
134132
" \"all\": np.tile(True, len(df)),\n",
135133
" \"all_forest\": df[\"project_type\"] == \"forest\",\n",
136-
" \"compliance_ifm\": (df[\"opr_id\"].isin(ifm_opr_ids)) & (df[\"Early Action/ Compliance\"] == \"COP\"),\n",
134+
" \"compliance_ifm\": (df[\"opr_id\"].isin(ifm_opr_ids))\n",
135+
" & (df[\"Early Action/ Compliance\"] == \"COP\"),\n",
137136
" \"non_graduated_compliance_ifms\": (df[\"opr_id\"].isin(compliance_opr_ids))\n",
138137
" & (df[\"Early Action/ Compliance\"] == \"COP\"),\n",
139138
" \"upfront_ifm\": (df[\"opr_id\"].isin(upfront_opr_ids)) & (df[\"arb_rp_id\"].isin([\"A\"])),\n",
@@ -202,7 +201,9 @@
202201
"source": [
203202
"sc_data = cat.rfia_all(assessment_area_id=297).read()\n",
204203
"\n",
205-
"sc_data = sc_data[sc_data[\"YEAR\"] == 2010].copy() # use 2010 because comporable to CP data\n",
204+
"sc_data = sc_data[\n",
205+
" sc_data[\"YEAR\"] == 2010\n",
206+
"].copy() # use 2010 because comporable to CP data\n",
206207
"\n",
207208
"\n",
208209
"sc_data[\"CARB_ACRE\"] = sc_data[\"CARB_ACRE\"] * 44 / 12 * 0.907185"
@@ -237,7 +238,9 @@
237238
"source": [
238239
"standing_carbon = {}\n",
239240
"for k, v in fortyps_of_interest.items():\n",
240-
" standing_carbon[k] = round(sc_data.loc[sc_data[\"FORTYPCD\"] == v, \"CARB_ACRE\"].item(), 1)\n",
241+
" standing_carbon[k] = round(\n",
242+
" sc_data.loc[sc_data[\"FORTYPCD\"] == v, \"CARB_ACRE\"].item(), 1\n",
243+
" )\n",
241244
"display(standing_carbon)"
242245
]
243246
},
@@ -258,7 +261,9 @@
258261
"source": [
259262
"# ak has three assessment areas but lets summarize across all to report inline value\n",
260263
"ak_assessment_areas = [285, 286, 287]\n",
261-
"ak_all = pd.concat([cat.rfia_all(assessment_area_id=aa_id).read() for aa_id in ak_assessment_areas])\n",
264+
"ak_all = pd.concat(\n",
265+
" [cat.rfia_all(assessment_area_id=aa_id).read() for aa_id in ak_assessment_areas]\n",
266+
")\n",
262267
"\n",
263268
"ak_all = ak_all[ak_all[\"YEAR\"] == 2013].copy() # 2013 to match what used in CP\n",
264269
"\n",
@@ -340,7 +345,9 @@
340345
" ).round(1)\n",
341346
"\n",
342347
" as_frac = crediting_error / project[\"arbocs\"][\"calculated\"]\n",
343-
" print(f\"{project['opr_id']} has a {crediting_error[1]} crediting error ({as_frac[1].round(3)})\")\n",
348+
" print(\n",
349+
" f\"{project['opr_id']} has a {crediting_error[1]} crediting error ({as_frac[1].round(3)})\"\n",
350+
" )\n",
344351
" print(f\"CI: {crediting_error[0]}, {crediting_error[2]}\")\n",
345352
" print(f\"% CI: {as_frac[0].round(3)}, {as_frac[2].round(3)}\")"
346353
]
@@ -886,7 +893,8 @@
886893
"projects = [\n",
887894
" x\n",
888895
" for x in db\n",
889-
" if x[\"carbon\"][\"initial_carbon_stock\"][\"value\"] > x[\"carbon\"][\"common_practice\"][\"value\"]\n",
896+
" if x[\"carbon\"][\"initial_carbon_stock\"][\"value\"]\n",
897+
" > x[\"carbon\"][\"common_practice\"][\"value\"]\n",
890898
"]"
891899
]
892900
},
@@ -937,7 +945,7 @@
937945
}
938946
],
939947
"source": [
940-
"sum((cp_df[\"baseline\"] <= cp_df[\"cp\"] * 1.05)) / len(cp_df.dropna())"
948+
"sum(cp_df[\"baseline\"] <= cp_df[\"cp\"] * 1.05) / len(cp_df.dropna())"
941949
]
942950
},
943951
{
@@ -955,7 +963,7 @@
955963
"metadata": {},
956964
"outputs": [],
957965
"source": [
958-
"fn = f\"https://carbonplan.blob.core.windows.net/carbonplan-forests/offsets/archive/results/common-practice-verification.json\"\n",
966+
"fn = \"https://carbonplan.blob.core.windows.net/carbonplan-forests/offsets/archive/results/common-practice-verification.json\"\n",
959967
"with fsspec.open(fn, mode=\"r\") as f:\n",
960968
" cp_verification = json.load(f)"
961969
]
@@ -1000,7 +1008,9 @@
10001008
}
10011009
],
10021010
"source": [
1003-
"data = pd.DataFrame(cp_verification[\"projects\"])[[\"opr_id\", \"recalculated\", \"project_reported\"]]\n",
1011+
"data = pd.DataFrame(cp_verification[\"projects\"])[\n",
1012+
" [\"opr_id\", \"recalculated\", \"project_reported\"]\n",
1013+
"]\n",
10041014
"mean_squared_error(data[\"recalculated\"], data[\"project_reported\"]) ** 0.5"
10051015
]
10061016
},
@@ -1011,7 +1021,9 @@
10111021
"metadata": {},
10121022
"outputs": [],
10131023
"source": [
1014-
"data[\"diff\"] = (data[\"recalculated\"] - data[\"project_reported\"]) / (data[\"project_reported\"])\n",
1024+
"data[\"diff\"] = (data[\"recalculated\"] - data[\"project_reported\"]) / (\n",
1025+
" data[\"project_reported\"]\n",
1026+
")\n",
10151027
"data = data[np.isfinite(data[\"diff\"])] # CAR1186 = infite bc original CP = 0."
10161028
]
10171029
},
@@ -1188,7 +1200,9 @@
11881200
"\n",
11891201
"crediting_df = pd.DataFrame({k: v[\"delta_arbocs\"] for k, v in crediting_error.items()})\n",
11901202
"\n",
1191-
"median_crediting_error = {k: np.median(v[\"delta_arbocs\"]) for k, v in crediting_error.items()}"
1203+
"median_crediting_error = {\n",
1204+
" k: np.median(v[\"delta_arbocs\"]) for k, v in crediting_error.items()\n",
1205+
"}"
11921206
]
11931207
},
11941208
{
@@ -1199,7 +1213,10 @@
11991213
"outputs": [],
12001214
"source": [
12011215
"tp = pd.concat(\n",
1202-
" [pd.Series(median_crediting_error).rename(\"crediting_error\"), error_cp0.rename(\"cp\")],\n",
1216+
" [\n",
1217+
" pd.Series(median_crediting_error).rename(\"crediting_error\"),\n",
1218+
" error_cp0.rename(\"cp\"),\n",
1219+
" ],\n",
12031220
" axis=1,\n",
12041221
")"
12051222
]
@@ -1332,7 +1349,9 @@
13321349
"outputs": [],
13331350
"source": [
13341351
"ak_assessment_areas = [285, 286, 287]\n",
1335-
"ak_all = pd.concat([cat.rfia_all(assessment_area_id=aa_id).read() for aa_id in ak_assessment_areas])"
1352+
"ak_all = pd.concat(\n",
1353+
" [cat.rfia_all(assessment_area_id=aa_id).read() for aa_id in ak_assessment_areas]\n",
1354+
")"
13361355
]
13371356
},
13381357
{
@@ -1388,7 +1407,13 @@
13881407
}
13891408
],
13901409
"source": [
1391-
"sum([project[\"arbocs\"][\"issuance\"] for project in db if 287 in project[\"supersection_ids\"]])"
1410+
"sum(\n",
1411+
" [\n",
1412+
" project[\"arbocs\"][\"issuance\"]\n",
1413+
" for project in db\n",
1414+
" if 287 in project[\"supersection_ids\"]\n",
1415+
" ]\n",
1416+
")"
13921417
]
13931418
},
13941419
{

0 commit comments

Comments
 (0)