@@ -1059,15 +1059,20 @@ def _somd2_extract(parquet_file, T=None, estimator="MBAR"):
10591059 raise ValueError ("Parquet metadata does not contain 'lambda'." )
10601060 if not is_mbar :
10611061 try :
1062- lambda_grad = metadata ["lambda_grad" ]
1062+ # Normalise to :.5f strings to match sire energy trajectory column names.
1063+ lambda_grad = [f"{ float (v ):.5f} " for v in metadata ["lambda_grad" ]]
10631064 except :
10641065 raise ValueError ("Parquet metadata does not contain 'lambda grad'" )
10651066 else :
10661067 try :
1067- lambda_grad = metadata ["lambda_grad" ]
1068+ # Normalise to :.5f strings to match sire energy trajectory column names.
1069+ lambda_grad = [f"{ float (v ):.5f} " for v in metadata ["lambda_grad" ]]
10681070 except :
10691071 lambda_grad = []
10701072
1073+ # Key used to index the simulated lambda column in the dataframe.
1074+ lam_key = f"{ lam :.5f} "
1075+
10711076 # Make sure that the temperature is correct.
10721077 if not T == temperature :
10731078 raise ValueError (
@@ -1083,7 +1088,7 @@ def _somd2_extract(parquet_file, T=None, estimator="MBAR"):
10831088 df = df [[x for x in df .columns if x not in lambda_grad ]]
10841089
10851090 # Subtract the potential at the simulated lambda.
1086- df = df .subtract (df [lam ], axis = 0 )
1091+ df = df .subtract (df [lam_key ], axis = 0 )
10871092
10881093 # Apply the existing attributes.
10891094 df .attrs = attrs
@@ -1096,19 +1101,19 @@ def _somd2_extract(parquet_file, T=None, estimator="MBAR"):
10961101 lam_delta = lambda_grad [0 ]
10971102
10981103 # Forward difference.
1099- if lam_delta > lam :
1100- incr = lam_delta - lam
1101- grad = (df [lam_delta ] - df [lam ]) / incr
1104+ if float ( lam_delta ) > lam :
1105+ incr = float ( lam_delta ) - lam
1106+ grad = (df [lam_delta ] - df [lam_key ]) / incr
11021107
11031108 # Backward difference.
11041109 else :
1105- incr = lam - lam_delta
1106- grad = (df [lam ] - df [lam_delta ]) / incr
1110+ incr = lam - float ( lam_delta )
1111+ grad = (df [lam_key ] - df [lam_delta ]) / incr
11071112
11081113 # Central difference.
11091114 else :
11101115 lam_below , lam_above = lambda_grad
1111- double_incr = lam_above - lam_below
1116+ double_incr = float ( lam_above ) - float ( lam_below )
11121117 grad = (df [lam_above ] - df [lam_below ]) / double_incr
11131118
11141119 # Create a DataFrame with the multi-index
0 commit comments