cape.cfd.dex: Exchange data b/w CFD case and DataBook

class cape.cfdx.dex.DataExchanger(cntl: CntlBase, comp: str, legacy: bool = False)

Bases: DataKit

casedata

dict Holder for data from individual cases

cntl

cape.cfdx.cntl.Cntl Run matrix controller

comp

str Name of DataBook component

comptype

str DataBook component type

data_fname

str Name of optional separate extra data file

fname

str Name of primary file, may be only metadata

get_case_filename(i: int) → str | None

Get absolute path to file for individual-case data

Call:
>>> fname = db.get_case_filename(i)
Outputs:
fname: None | str

File for individual-case data, if appropriate

Versions:
  • 2026-03-11 @ddalle: v1.0

get_case_folder(i: int) → str

Get folder to data for case i

This will be the main databook folder, db.rootdir if the data type does not store individual files for each case.

Call:
>>> fdir = db.get_case_folder(i)
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

i: int

Case index

Outputs:
fdir: str

Absolute path to data for case i

Versions:
  • 2026-03-11 @ddalle: v1.0

get_data_extension() → str

Get extension for data file if data/metadata are sep files

Call:
>>> ext = db.get_data_extension()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
ext: str

Main file extension based on comp type, us. "csv"

Versions:
  • 2026-03-11 @ddalle: v1.0

get_data_filename()

Get the name of the data databook file

Call:
>>> fname = db.get_filename()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
fname: str

File name

Versions:
  • 2025-08-12 @aburkhea: v1.0

get_datacols() → list

Get list of columns to extract from CFD results

Call:
>>> ycols = db.get_datacols()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
ycols: list[str]

List of data columns

Versions:
  • 2025-08-05 @ddalle: v1.0

  • 2025-08-13 @ddalle: v1.1; update for TriqFM

get_extension() → str

Get main databook file name extension

Call:
>>> ext = db.get_extension()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
ext: str

Main file extension based on comp type, us. "csv"

Versions:
  • 2025-08-12 @ddalle: v1.0

get_filename() → str

Get the name of the main databook file

Call:
>>> fname = db.get_filename()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
fname: str

File name

Versions:
  • 2025-08-12 @ddalle: v1.0

get_prefix() → str

Get the databook file name prefix based on component type

Call:
>>> prefix = db.get_prefix()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
prefix: str

File name prefix

Versions:
  • 2025-08-12 @ddalle: v1.0

get_subdir() → str

Get subfolder for main data file, if any

Usually this is "", meaning the main file is in the top-level folder of the databook.

Call:
>>> dirname = db.get_subdir()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
dirname: str

Name of subfolder if any, else ''

Versions:
  • 2025-08-12 @ddalle: v1.0

get_xcols() → list

Get list of cols to distinguish unique cases

Call:
>>> xcols = db.get_xcols()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Outputs:
xcols: list[str]

List of identifying columns for each case

Versions:
  • 2025-08-05 @ddalle: v1.0

init_col_like(col: str, v: Any)

Initialize a data column, if necessary

Call:
>>> db.init_col_like(col, v)
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

col: str

Name of column

v: float | int | str

Reference value for data type of new column

Versions:
  • 2025-08-05 @ddalle: v1.0

init_empty()

Initialize required columns, if necessary

Call:
>>> db.init_empty()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Versions:
  • 2025-08-05 @ddalle: v1.0

merge(db: DataKit)

Combine data w/o duplication

This overwrites DataKit.merge() by using "nStats" as the status column.

Call:
>>> db.merge(dbnew)
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

dbnew: DataKit

Additional data container to merge data from

Versions:
  • 2025-07-24 @ddalle: v1.0

mkdir_case(i: int)

Create folders as needed for DataBook component

Call:
>>> db.mkdir_case(i)
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

i: int

Case index

mkdirs()

Create folders as needed for DataBook component

Call:
>>> db.mkdirs()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

name
read()

Read file name based on extension of keyword argument

Call:
>>> db.read_dkit(fname=None, **kw)
Inputs:
db: DataKit

DataKit data interface

fname: {None} | str

File name; extension is used to guess data format

cdb: {None} | str

Explicit file name for CapeFile read

csv: {None} | str

Explicit file name for CSVFile read

textdata: {None} | str

Explicit file name for TextDataFile

simplecsv: {None} | str

Explicit file name for CSVSimple

simpletsv: {None} | str

Explicit file name for TSVSimple

xls, xlsx: {None} | str

File name for XLSFile

mat: {None} | str

File name for MATFile

Versions:
  • 2025-08-13 @ddalle: v1.0; was in __init__()

read_case(i: int)

Read data from an individual case, if appropriate

The data will be stored in db.casedata[i].

Call:
>>> db.read_case(i)
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

i: int

Case index

Versions:
  • 2026-03-11 @ddalle: v1.0

read_legacy()

Read a legacy DataBook component if appropriate

Call:
>>> db.read_legacy()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Versions:
  • 2025-08-12 @ddalle: v1.0

read_legacy_lineload()

Read a legacy LineLoad DataBook if appropriate

Call:
>>> db.read_legacy_lineload()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Versions:
  • 2025-08-12 @ddalle: v1.0

read_legacy_triqfm()

Read a legacy TriqFM DataBook if appropriate

Call:
>>> db.read_legacy_triqfm()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Versions:
  • 2025-08-13 @ddalle: v1.0

read_legacy_triqpoint()

Read a legacy TriqPoint DataBook if appropriate

Call:
>>> db.read_legacy_triqpoint()
Inputs:
db: DataExchanger

Data container customized for collecting CFD data

Versions:
  • 2025-08-29 @ddalle: v1.0

read_main()
rootdir

str Path to DataBook

xcols

list[str] List of input columns to identify unique cases