-
Notifications
You must be signed in to change notification settings - Fork 25
Description
🐛 Describe the bug
spcforce output columns in pandas dataframe are not loaded when using as_df method.
🔢 To Reproduce
binout = Binout(file_path)
binout.read('spcforc')
['time', 'x_resultant', 'y_resultant', 'z_resultant', 'spc_mids', 'date', 'x_force', 'build_id', 'moment_ids', 'x_moment', 'spc_ids', 'revision', 'y_force', 'y_moment', 'force_ids', 'z_force', 'misc', 'z_moment', 'title', 'version']
in binout.py, as_df method:
if data.ndim > 1:
df = pd.DataFrame(index=time_pdi)
if args[0] == "rcforc":
ids = [
(str(i) + "m") if j else (str(i) + "s")
for i, j in zip(self.read("rcforc", "ids"), self.read("rcforc", "side"))
]
else:
ids = self.read(*args[:-1], "ids")
spcforc does not have 'ids' output (rather, force_ids and moment_ids; or - might not always have, not sure about it)
Suggested solution is to add the following condition (similar to as already present for rcforc)
elif args[0] == "spcforc":
if args[-1].endswith("force"):
ids = self.read(*args[:-1], "force_ids")
elif args[-1].endswith("moment"):
ids = self.read(*args[:-1], "moment_ids")
else:
ids = self.read(*args[:-1], "ids")
To have the following snippet:
# create dataframe
if data.ndim > 1:
df = pd.DataFrame(index=time_pdi)
if args[0] == "rcforc":
ids = [
(str(i) + "m") if j else (str(i) + "s")
for i, j in zip(self.read("rcforc", "ids"), self.read("rcforc", "side"))
]
elif args[0] == "spcforc":
if args[-1].endswith("force"):
ids = self.read(*args[:-1], "force_ids")
elif args[-1].endswith("moment"):
ids = self.read(*args[:-1], "moment_ids")
else:
ids = self.read(*args[:-1], "ids")
else:
ids = self.read(*args[:-1], "ids")
🖥️ Setup
- OS: Windows 11
- LS-Dyna R14.0