Software Attributes#

The sections here tabulate the software attribute database. Each attribute (column) is described in the Attribute Schema. Some columns contain lists of strings which means that they cannot be fully sorted. Instead, they can be filtered by searching for a string in the search box

Hide code cell content

from pathlib import Path
import yaml
from itables import init_notebook_mode
import pandas as pd

init_notebook_mode(all_interactive=True)

software_attr_dir = Path("..", "..", "software_attributes")
model_list_inputs = yaml.safe_load( open(software_attr_dir / "database_list.yaml", "r") )
models = model_list_inputs["active"]

model_attributes_map = {
    model: yaml.safe_load( open(Path("..", "..", "software_attributes", "database", f"{model}.yaml"), "r") )
    for model in models
}

df = pd.DataFrame.from_dict(model_attributes_map, orient="index")
# print(list(df.columns))
# print(df)

General#

Hide code cell source

# Get all columns that begin with "does_"
does_columns = [col for col in df.columns if col.startswith("does_")]

# Make a list of all the "does_" columns that are True for each row dropping the "does_" prefix
# Add this to the dataframe
for i, row in df.iterrows():
    does_list = [col.replace("does_", "") for col in does_columns if row[col]]
    # print(f"{i}: {does_list}")
    df.at[i, "does"] = does_list

general_df = df[[
    "github_account",
    "github_repo",
    "does",
    "active_funding",
    "development_status",
    "programming_language",
    "license_type",
    "data_collection_methods",
    "last_release_date"
]]
general_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Turbine Modeling#

Hide code cell source

turbine_df = df[[
    "scope",
    "system_location",
    "time_domain",
    "turbine_model",
    "does_loads",
    "does_design_optimization",
    "does_costs",
]]
turbine_df = turbine_df[ pd.DataFrame( turbine_df["scope"].tolist() ).isin( ["turbine", "any"] ).any(axis=1).values ]
turbine_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Farm Modeling#

Hide code cell source

farm_df = df[[
    "scope",
    "system_location",
    "time_domain",
    "turbine_model",
    "wake_model",
    "does_loads",
    "does_design_optimization",
    "does_costs",
]]
farm_df = farm_df[ pd.DataFrame( farm_df["scope"].tolist() ).isin( ["farm", "any"] ).any(axis=1).values ]
farm_df.dropna()
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Cost Modeling#

Hide code cell source

cost_df = df[[
    "scope",
    "system_location",
    "does_design_optimization",
    "does_costs",
    "tags",
]]
cost_df = cost_df[ cost_df["does_costs"] == True]
cost_df.dropna()
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Full Suite Modeling Comparison#

Hide code cell source

modeling_df = df[[
    "scope",
    "system_location",
    "time_domain",
    "turbine_model",
    "wake_model",
    "does_controls",
    "does_costs",
    "does_data_analysis",
    "does_design",
    "does_design_optimization",
    "does_simulation",
    "does_loads",
    "tags",
]]
modeling_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Distribution#

Hide code cell source

distribution_df = df[[
    "supported_platforms",
    "package_manager",
    "package_manager_url",
    "installation_complexity",
]]
distribution_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Documentation#

Hide code cell source

documentation_df = df[[
    "documentation_url",
    "has_user_docs",
    "has_developer_docs",
    "has_api_docs",
    "has_cli_docs",
    "has_installation_docs",
    "has_getting_started_docs",
    "has_examples_tutorials",
    "has_design_intent_statement",
    "readability",
    "project_coverage",
]]
documentation_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Testing#

Hide code cell source

testing_df = df[[
    "testing_framework",
    "continuous_testing",
    "test_coverage",
    "test_documentation",
    "performance_tests",
]]
testing_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Interfaces#

Hide code cell source

interfaces_df = df[[
    "first_class_ui",
    "has_cli",
    "language_interfaces",
    "feature_accessibility",
]]
interfaces_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)

Input / Output#

Hide code cell source

io_df = df[[
    "filetypes",
    "file_structure_stability",
]]
io_df
Loading ITables v2.4.5 from the init_notebook_mode cell... (need help?)