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 with the following Sequel query:
SELECT * FROM $table WHERE <column name> LIKE '%<search string>%';
-- For example:
SELECT * FROM $table WHERE system_location LIKE '%land%';
Show code cell content
from pathlib import Path
import yaml
import datapane as dp
import pandas as pd
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)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[1], line 3
1 from pathlib import Path
2 import yaml
----> 3 import datapane as dp
4 import pandas as pd
6 software_attr_dir = Path("..", "..", "software_attributes")
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/datapane/__init__.py:21
17 __version__ = "0.17.0"
20 # Public API re-exports
---> 21 from .client import ( # isort:skip otherwise circular import issue
22 IN_PYTEST,
23 DPClientError,
24 DPMode,
25 enable_logging,
26 print_debug_info,
27 get_dp_mode,
28 set_dp_mode,
29 ) # isort:skip otherwise circular import issue
31 from .blocks import (
32 HTML,
33 Attachment,
(...)
51 wrap_block,
52 )
53 from .processors import (
54 FontChoice,
55 Formatting,
(...)
61 upload_report,
62 )
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/datapane/client/__init__.py:4
1 # Copyright 2020 StackHut Limited (trading as Datapane)
2 # SPDX-License-Identifier: Apache-2.0
3 # flake8: noqa:F401
----> 4 from .exceptions import DPClientError
5 from .utils import IN_PYTEST, DPMode, display_msg, enable_logging, get_dp_mode, log, print_debug_info, set_dp_mode
7 # from .config import init # isort:skip otherwise circular import issue
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/datapane/client/exceptions.py:1
----> 1 from datapane.common import DPError
4 def add_help_text(x: str) -> str:
5 return f"{x}\nPlease run with `dp.enable_logging()`, restart your Jupyter kernel/Python instance, and/or visit https://www.github.com/datapane/datapane"
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/datapane/common/__init__.py:8
1 """
2 Shared code used by client and dp-server
3 NOTE - this module should not depend on any client or server specific code and is imported first
4 """
5 # Copyright 2020 StackHut Limited (trading as Datapane)
6 # SPDX-License-Identifier: Apache-2.0
7 # flake8: noqa:F401
----> 8 from .datafiles import ArrowFormat
9 from .dp_types import (
10 ARROW_EXT,
11 ARROW_MIMETYPE,
(...)
31 log,
32 )
33 from .ops_utils import pushd, timestamp
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/datapane/common/datafiles.py:6
3 import enum
4 from typing import IO, Dict, Type, Union
----> 6 import pandas as pd
7 import pyarrow as pa
8 from pandas.errors import ParserError
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/__init__.py:22
19 del _hard_dependencies, _dependency, _missing_dependencies
21 # numpy compat
---> 22 from pandas.compat import is_numpy_dev as _is_numpy_dev # pyright: ignore # noqa:F401
24 try:
25 from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/compat/__init__.py:18
15 from typing import TYPE_CHECKING
17 from pandas._typing import F
---> 18 from pandas.compat.numpy import (
19 is_numpy_dev,
20 np_version_under1p21,
21 )
22 from pandas.compat.pyarrow import (
23 pa_version_under1p01,
24 pa_version_under2p0,
(...)
31 pa_version_under9p0,
32 )
34 if TYPE_CHECKING:
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/compat/numpy/__init__.py:4
1 """ support numpy compatibility across versions """
2 import numpy as np
----> 4 from pandas.util.version import Version
6 # numpy versioning
7 _np_version = np.__version__
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/util/__init__.py:2
1 # pyright: reportUnusedImport = false
----> 2 from pandas.util._decorators import ( # noqa:F401
3 Appender,
4 Substitution,
5 cache_readonly,
6 )
8 from pandas.core.util.hashing import ( # noqa:F401
9 hash_array,
10 hash_pandas_object,
11 )
14 def __getattr__(name):
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/util/_decorators.py:14
6 from typing import (
7 Any,
8 Callable,
9 Mapping,
10 cast,
11 )
12 import warnings
---> 14 from pandas._libs.properties import cache_readonly
15 from pandas._typing import (
16 F,
17 T,
18 )
19 from pandas.util._exceptions import find_stack_level
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/_libs/__init__.py:13
1 __all__ = [
2 "NaT",
3 "NaTType",
(...)
9 "Interval",
10 ]
---> 13 from pandas._libs.interval import Interval
14 from pandas._libs.tslibs import (
15 NaT,
16 NaTType,
(...)
21 iNaT,
22 )
File /opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/pandas/_libs/interval.pyx:1, in init pandas._libs.interval()
ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
General#
Show code cell source
general_df = df[[
"github_account",
"github_repo",
"primary_uses",
"active_funding",
"development_status",
"programming_language",
"license_type",
"data_collection_methods",
"last_release_date"
]]
dp.DataTable(general_df)
Turbine Modeling#
Show code cell source
turbine_df = df[[
"scope",
"system_location",
"time_domain",
"turbine_model",
"loads",
"design_optimization",
"costs",
]]
turbine_df = turbine_df[ pd.DataFrame( turbine_df["scope"].tolist() ).isin( ["turbine", "any"] ).any(1).values ]
dp.DataTable(turbine_df)
Farm Modeling#
Show code cell source
farm_df = df[[
"scope",
"system_location",
"time_domain",
"turbine_model",
"wake_model",
"loads",
"design_optimization",
"costs",
]]
farm_df = farm_df[ pd.DataFrame( farm_df["scope"].tolist() ).isin( ["farm", "any"] ).any(1).values ]
dp.DataTable(farm_df.dropna())
Cost Modeling#
Show code cell source
cost_df = df[[
"scope",
"system_location",
"design_optimization",
"costs",
"tags",
]]
cost_df = cost_df[ cost_df["costs"] == True]
dp.DataTable(cost_df.dropna())
Full Suite Modeling Comparison#
Show code cell source
modeling_df = df[[
"scope",
"system_location",
"time_domain",
"turbine_model",
"wake_model",
"loads",
"design_optimization",
"costs",
"tags",
]]
dp.DataTable(modeling_df)
Distribution#
Show code cell source
distribution_df = df[[
"supported_platforms",
"package_manager",
"package_manager_url",
"installation_complexity",
]]
dp.DataTable(distribution_df)
Documentation#
Show 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",
]]
dp.DataTable(documentation_df)
Testing#
Show code cell source
testing_df = df[[
"testing_framework",
"continuous_testing",
"test_coverage",
"test_documentation",
"performance_tests",
]]
dp.DataTable(testing_df)
Interfaces#
Show code cell source
interfaces_df = df[[
"first_class_ui",
"has_cli",
"language_interfaces",
"feature_accessibility",
]]
dp.DataTable(interfaces_df)
Input / Output#
Show code cell source
io_df = df[[
"filetypes",
"file_structure_stability",
]]
dp.DataTable(io_df)