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
github_account github_repo does active_funding development_status programming_language license_type data_collection_methods last_release_date
Loading ITables v2.2.4 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
scope system_location time_domain turbine_model does_loads does_design_optimization does_costs
Loading ITables v2.2.4 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()
scope system_location time_domain turbine_model wake_model does_loads does_design_optimization does_costs
Loading ITables v2.2.4 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()
scope system_location does_design_optimization does_costs tags
Loading ITables v2.2.4 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
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
Loading ITables v2.2.4 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
supported_platforms package_manager package_manager_url installation_complexity
Loading ITables v2.2.4 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
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
Loading ITables v2.2.4 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
testing_framework continuous_testing test_coverage test_documentation performance_tests
Loading ITables v2.2.4 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
first_class_ui has_cli language_interfaces feature_accessibility
Loading ITables v2.2.4 from the init_notebook_mode cell... (need help?)

Input / Output#

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