math-spec-mapping 0.3.21__py3-none-any.whl → 0.4.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -727,11 +727,13 @@ class MathSpec:
727
727
  state_preperation_functions=None,
728
728
  parameter_preperation_functions=None,
729
729
  metrics_functions=None,
730
+ append_param_change_columns=False,
730
731
  ):
731
732
  state_l = []
732
733
  params_l = []
733
734
  df_l = []
734
735
  metrics_l = []
736
+ param_mods = set()
735
737
  for experiment in experiments:
736
738
  for i in range(experiment["Monte Carlo Runs"]):
737
739
  state, params, msi, df, metrics = self.run_experiment(
@@ -743,6 +745,11 @@ class MathSpec:
743
745
  parameter_preperation_functions=parameter_preperation_functions,
744
746
  metrics_functions=metrics_functions,
745
747
  )
748
+ if append_param_change_columns:
749
+ if experiment["Param Modifications"]:
750
+ for key in experiment["Param Modifications"]:
751
+ df[key] = experiment["Param Modifications"][key]
752
+ param_mods.add(key)
746
753
  df["Monte Carlo Run"] = i + 1
747
754
  df["Experiment"] = experiment["Name"]
748
755
  metrics.loc["Monte Carlo Run"] = i + 1
@@ -753,6 +760,9 @@ class MathSpec:
753
760
  df_l.append(df)
754
761
  metrics_l.append(metrics)
755
762
  df = pd.concat(df_l)
763
+ if append_param_change_columns:
764
+ for key in param_mods:
765
+ df[key] = df[key].fillna(params_base[key])
756
766
  metrics = pd.concat(metrics_l, axis=1).T
757
767
  return df, metrics, state_l, params_l
758
768
 
@@ -1022,6 +1032,12 @@ class MathSpecImplementation:
1022
1032
  ), "No functional parameterization for {}. To fix this error, add {} to the parameters passed to ms.build_implementation. Option can be: {}".format(
1023
1033
  ca.name, "FP " + ca.name, [x.name for x in opts]
1024
1034
  )
1035
+ assert (
1036
+ self.params["FP {}".format(ca.name)]
1037
+ in self.ms.functional_parameters["FP {}".format(ca.name)]
1038
+ ), "{} is not a valid functional parameterization for {}".format(
1039
+ self.params["FP {}".format(ca.name)], ca.name
1040
+ )
1025
1041
  opt = self.ms.functional_parameters["FP {}".format(ca.name)][
1026
1042
  self.params["FP {}".format(ca.name)]
1027
1043
  ]
@@ -1061,6 +1077,13 @@ class MathSpecImplementation:
1061
1077
  ba.name, "FP " + ba.name, [x.name for x in opts]
1062
1078
  )
1063
1079
 
1080
+ assert (
1081
+ self.params["FP {}".format(ba.name)]
1082
+ in self.ms.functional_parameters["FP {}".format(ba.name)]
1083
+ ), "{} is not a valid functional parameterization for {}".format(
1084
+ self.params["FP {}".format(ba.name)], ba.name
1085
+ )
1086
+
1064
1087
  opt = self.ms.functional_parameters["FP {}".format(ba.name)][
1065
1088
  self.params["FP {}".format(ba.name)]
1066
1089
  ]
@@ -1165,6 +1188,12 @@ class MathSpecImplementation:
1165
1188
  ), "No functional parameterization for {}. To fix this error, add {} to the parameters passed to ms.build_implementation. Option can be: {}".format(
1166
1189
  p.name, "FP " + p.name, [x.name for x in opts]
1167
1190
  )
1191
+ assert (
1192
+ self.params["FP {}".format(p.name)]
1193
+ in self.ms.functional_parameters["FP {}".format(p.name)]
1194
+ ), "{} is not a valid functional parameterization for {}".format(
1195
+ self.params["FP {}".format(p.name)], p.name
1196
+ )
1168
1197
  opt = self.ms.functional_parameters["FP {}".format(p.name)][
1169
1198
  self.params["FP {}".format(p.name)]
1170
1199
  ]
@@ -92,6 +92,15 @@ def create_milestone_label_matrix(df, exclude_milestones=None):
92
92
  labels = list(df.columns[4:])
93
93
  labels = sorted([x for x in labels if x not in priority_labels])
94
94
  milestones = sorted(list(df[~pd.isnull(df["Milestone"])]["Milestone"].unique()))
95
+ try:
96
+ milestones = sorted(
97
+ milestones,
98
+ key=lambda x: int(x.split(".")[0][1:]) * 10000
99
+ + int(x.split(".")[1]) * 100
100
+ + int(x.split(".")[2]),
101
+ )
102
+ except:
103
+ pass
95
104
 
96
105
  table = []
97
106
  for label in labels:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: math-spec-mapping
3
- Version: 0.3.21
3
+ Version: 0.4.0
4
4
  Summary: A library for easy mapping of mathematical specifications.
5
5
  Author-email: Sean McOwen <Sean@Block.Science>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -6,7 +6,7 @@ math_spec_mapping/Classes/Block.py,sha256=2VOBTPRafmtaLY847tEw3OJTrWNp2d0aSStC_u
6
6
  math_spec_mapping/Classes/BoundaryAction.py,sha256=_rFvEZ4LNxmlM59js4SuQ9n5CgVmITw4YWKs0-q0r-4,560
7
7
  math_spec_mapping/Classes/ControlAction.py,sha256=4AzMSA8fbnUf-fGlvMJXHJFbz32G1h1QVWf2yzrXrLA,493
8
8
  math_spec_mapping/Classes/Entity.py,sha256=fA0-b128_OHHxfCg4pzqyQV083EYev1HlVpy86S5igg,1226
9
- math_spec_mapping/Classes/MathSpec.py,sha256=nQTesARmLrYagoW2T3G6gbidTsFM-NFC9yl3Li01ey8,55970
9
+ math_spec_mapping/Classes/MathSpec.py,sha256=h26RD-AIghj6B_7Sb5o9xDhrnPoSKd1FuZo6mHSa-7o,57522
10
10
  math_spec_mapping/Classes/Mechanism.py,sha256=2sLm3wYBIeTQaMBcsJ9btqIWsbS895Ra8NY6Y9_G_Dg,379
11
11
  math_spec_mapping/Classes/Metric.py,sha256=iQhH4g8Z60QlM22nPX9ytGmidOsZSiSs0KjqwmsScwU,636
12
12
  math_spec_mapping/Classes/Parameter.py,sha256=ZuJ_w0sChvRElJ4sOnXZ2EV4Ell2xXFulKLjVOpgz2E,1237
@@ -19,7 +19,7 @@ math_spec_mapping/Classes/Type.py,sha256=cA5-5nOfjX6aHzTHM8M6mP5lsS7foumckRu7WDX
19
19
  math_spec_mapping/Classes/__init__.py,sha256=0zxgOqns_9JybD74HKMVh6aw8ij8WVbfQ4Q_1uWzof0,761
20
20
  math_spec_mapping/Convenience/__init__.py,sha256=BEZr1rXohKAknOa3wjNVx3EvSVxDcfftJsvtSw5mvmQ,264
21
21
  math_spec_mapping/Convenience/documentation.py,sha256=1ziWVJznbCUxeAAt03nAdEYtMlXNo5TeedHfgs0vSBU,1625
22
- math_spec_mapping/Convenience/github.py,sha256=Wddr1FCxcIxaFeiKyvx3mvVDbzjcgTxs4rU8ulc4qXk,3539
22
+ math_spec_mapping/Convenience/github.py,sha256=JMFJWyA3nRIMNYGvn9831BolnBthoa48HhgeZuENZm8,3772
23
23
  math_spec_mapping/Convenience/starter.py,sha256=dD1R9wcVFZV-BCTflxNkR6Ay6NF1TlVBdIaWmbJwMGE,17379
24
24
  math_spec_mapping/Load/__init__.py,sha256=QfHMLatZAKqj4up-LkDL_r42tO7Mo_-qdqPQYLYY5l0,49
25
25
  math_spec_mapping/Load/action_transmission_channel.py,sha256=oTYCi7as4LWKZLxfRckuWpfLsAPZXjp-VBYmyLBN3yk,2781
@@ -55,8 +55,8 @@ math_spec_mapping/Reports/spaces.py,sha256=-76hR5wQBv4lsG000ypBJ-OprjsNjI-rNRMYd
55
55
  math_spec_mapping/Reports/state.py,sha256=QYeCvX5cHeZBrbvMeDsTqJcUDTuDFJSLvPbasjLspk8,3643
56
56
  math_spec_mapping/Reports/tables.py,sha256=O0CNuqh3LMECq5uLjBOoxMUk5hUvkUK660FNnwWUxDY,1505
57
57
  math_spec_mapping/Reports/wiring.py,sha256=u9SvKWy6T-WJUEgFI6-zgZanoOaTTs_2YwmEceDLsV8,1618
58
- math_spec_mapping-0.3.21.dist-info/LICENSE,sha256=ObyEzSw8kgCaFbEfpu1zP4TrcAKLA0xhqHMZZfyh7N0,1069
59
- math_spec_mapping-0.3.21.dist-info/METADATA,sha256=R7kkn8miJCyVczVY_3EknmGt2utf5-uJtAOH6rl5Npw,6850
60
- math_spec_mapping-0.3.21.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
61
- math_spec_mapping-0.3.21.dist-info/top_level.txt,sha256=AImhn9wgazkdV0a9vfiphtQR8uGe2nq-ZIOp-6yUk9o,18
62
- math_spec_mapping-0.3.21.dist-info/RECORD,,
58
+ math_spec_mapping-0.4.0.dist-info/LICENSE,sha256=ObyEzSw8kgCaFbEfpu1zP4TrcAKLA0xhqHMZZfyh7N0,1069
59
+ math_spec_mapping-0.4.0.dist-info/METADATA,sha256=nXVR7gQH2S2pfAhzZqFCa8dqRa1eB-dwXfzJt1peRFE,6849
60
+ math_spec_mapping-0.4.0.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
61
+ math_spec_mapping-0.4.0.dist-info/top_level.txt,sha256=AImhn9wgazkdV0a9vfiphtQR8uGe2nq-ZIOp-6yUk9o,18
62
+ math_spec_mapping-0.4.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.7.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5