Coverage for docs/source/examples/breakdowns.py: 24%
49 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-07 22:56 -0500
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-07 22:56 -0500
1"An example to show off Breakdowns"
2import os
3import sys
4import pickle
5import pint
6from packaging import version
7from gpkit.breakdowns import Breakdowns
9dirpath = os.path.dirname(os.path.realpath(__file__)) + os.sep
10if version.parse(pint.__version__) >= version.parse("0.13"):
11 filename = "solar_13.p"
12elif version.parse(pint.__version__) >= version.parse("0.12"):
13 filename = "solar_12.p"
14elif version.parse(pint.__version__) >= version.parse("0.10"):
15 filename = "solar_10.p"
16elif version.parse(pint.__version__) == version.parse("0.9"):
17 filename = "solar.p"
18else:
19 filename = ""
21if filename:
22 with open(dirpath + filename, "rb") as f:
23 sol = pickle.load(f)
24else:
25 sol = None
27# our Miniconda windows test platform can't print unicode
28if sys.platform[:3] != "win" and sol is not None:
29 # the code to create solar.p is in ./breakdowns/solartest.py
30 bds = Breakdowns(sol)
32 print("Cost breakdown (as seen in solution tables)")
33 print("==============")
34 bds.plot("cost")
36 print("Variable breakdowns (note the two methods of access)")
37 print("===================")
38 varkey, = sol["variables"].keymap[("Mission.FlightSegment.AircraftPerf"
39 ".AircraftDrag.Poper")]
40 bds.plot(varkey)
41 bds.plot("AircraftPerf.AircraftDrag.MotorPerf.Q")
43 print("Combining the two above by increasing maxwidth")
44 print("----------------------------------------------")
45 bds.plot("AircraftPerf.AircraftDrag.Poper", maxwidth=105)
47 print("Model sensitivity breakdowns (note the two methods of access)")
48 print("============================")
49 bds.plot("model sensitivities")
50 bds.plot("Aircraft")
52 print("Exhaustive variable breakdown traces (and configuration arguments)")
53 print("====================================")
54 # often useful as a reference point when reading traces
55 bds.plot("AircraftPerf.AircraftDrag.Poper", height=12)
56 # includes factors, can be useful for reading traces as well
57 bds.plot("AircraftPerf.AircraftDrag.Poper", showlegend=True)
58 print("\nPermissivity = 2 (the default)")
59 print("----------------")
60 bds.trace("AircraftPerf.AircraftDrag.Poper")
61 print("\nPermissivity = 1 (stops at Pelec = v·i)")
62 print("----------------")
63 bds.trace("AircraftPerf.AircraftDrag.Poper", permissivity=1)
65 # you can also produce Plotly treemaps/icicle plots of your breakdowns
66 fig = bds.treemap("model sensitivities", returnfig=True)
67 fig = bds.icicle("cost", returnfig=True)
68 # uncommenting any of the below makes and shows the plot directly
69 # bds.icicle("model sensitivities")
70 # bds.treemap("cost")