sisl.viz.BandsPlot
- class sisl.viz.BandsPlot(bands_data: BandsData, Erange: tuple[float, float] | None = None, E0: float = 0.0, E_axis: Literal['x', 'y'] = 'y', bands_range: tuple[int, int] | None = None, spin: Literal[0, 1] | None = None, bands_style: StyleSpec = {'color': 'black', 'dash': 'solid', 'opacity': 1, 'width': 1}, spindown_style: StyleSpec = {'color': 'blue', 'width': 1}, colorscale: Colorscale | None = None, gap: bool = False, gap_tol: float = 0.01, gap_color: str = 'red', gap_marker: dict = {'size': 7}, direct_gaps_only: bool = False, custom_gaps: Sequence[dict] = [], line_mode: Literal['line', 'scatter', 'area_line'] = 'line', group_legend: bool = True, backend: str = 'plotly')[source]
Bases:
Plot
Plots band structure energies, with plentiful of customization options.
- Parameters:
bands_data – The object containing the data to plot.
Erange – The energy range to plot. If None, the range is determined by
bands_range
.E0 – The energy reference.
E_axis – Axis to plot the energies.
bands_range – The bands to plot. Only used if
Erange
is None. If None, the 15 bands above and below the Fermi level are plotted.spin – Which spin channel to display. Only meaningful for spin-polarized calculations. If None and the calculation is spin polarized, both are plotted.
bands_style – Styling attributes for bands.
spindown_style – Styling attributes for the spin down bands (if present). Any missing attribute will be taken from
bands_style
.colorscale – Colorscale to use for the bands in case the color attribute is an array of values. If None, the default colorscale is used for each backend.
gap – Whether to display the gap.
gap_tol – Tolerance in k for determining whether two gaps are the same.
gap_color – Color of the gap.
gap_marker – Marker styles for the gap (as plotly marker’s styles).
direct_gaps_only – Whether to only display direct gaps.
custom_gaps – List of custom gaps to display. See the showcase notebooks for examples.
line_mode – The method used to draw the band lines.
group_legend – Whether to group all bands in the legend to show a single legend item.
If the bands are spin polarized, bands are grouped by spin channel.
backend – The backend to use to generate the figure.
Methods
evaluate_input_node
(node)final_node_key
(*args)Returns the key of the final (output) node of the workflow.
find_node_key
(node, *args)Returns the identifier key of a node in this workflow
from_func
([func, context, module])Builds a node from a function.
from_node_tree
(output_node[, workflow_name])Creates a workflow class from a node.
function
(bands_data[, Erange, E0, E_axis, ...])Plots band structure energies, with plentiful of customization options.
get
()Returns the up to date output of the workflow.
Returns the label to be used in diagrams when displaying this node.
get_input
(key)get_tree
()is_output_outdated
(evaluated_inputs)Checks if the node needs to be ran
map_inputs
(inputs, func[, only_nodes, exclude])Maps all inputs of the node applying a given function.
merge
(*others, **kwargs)recursive_update_inputs
([cls])Updates the inputs of the node recursively.
setup
(*args, **kwargs)Sets up the node based on its initial inputs.
update_inputs
(**inputs)Updates the inputs of the workflow.
update_settings
(*args, **kwargs)Attributes
Last time the logs of this node were updated
- __call__(*args, **kwargs)
Call self as a function.
- static evaluate_input_node(node: Node)
- classmethod from_func(func: Callable | None = None, context: dict | None = None, module: str | None = None)
Builds a node from a function.
- Parameters:
func (
function
, optional) – The function to be converted to a node.If not provided, the return of this method is just a lambda function that expects the function. This is useful if you want to use this method as a decorator while also providing extra arguments (like the context argument).
context (
dict
, optional) – The context to be used as the default for the node class that will be created.
- classmethod from_node_tree(output_node: Node, workflow_name: str | None = None)
Creates a workflow class from a node.
It does so by recursively traversing the tree in the inputs direction until it finds the leaves. All the nodes found are included in the workflow. For each node, inputs that are not nodes are connected to the inputs of the workflow.
- Parameters:
output_node (
Node
) – The final node, that should be connected to the output of the workflow.workflow_name (
str
, optional) – The name of the new workflow class. If None, the name of the output node will be used.
- Returns:
Workflow
– The newly created workflow class.
- static function(bands_data: BandsData, Erange: tuple[float, float] | None = None, E0: float = 0.0, E_axis: Literal['x', 'y'] = 'y', bands_range: tuple[int, int] | None = None, spin: Literal[0, 1] | None = None, bands_style: StyleSpec = {'color': 'black', 'width': 1, 'opacity': 1, 'dash': 'solid'}, spindown_style: StyleSpec = {'color': 'blue', 'width': 1}, colorscale: str | Sequence[Color] | Sequence[tuple[float, Color]] | None = None, gap: bool = False, gap_tol: float = 0.01, gap_color: str = 'red', gap_marker: dict = {'size': 7}, direct_gaps_only: bool = False, custom_gaps: Sequence[dict] = [], line_mode: Literal['line', 'scatter', 'area_line'] = 'line', group_legend: bool = True, backend: str = 'plotly') Figure
Plots band structure energies, with plentiful of customization options.
- Parameters:
bands_data – The object containing the data to plot.
Erange – The energy range to plot. If None, the range is determined by
bands_range
.E0 – The energy reference.
E_axis – Axis to plot the energies.
bands_range – The bands to plot. Only used if
Erange
is None. If None, the 15 bands above and below the Fermi level are plotted.spin – Which spin channel to display. Only meaningful for spin-polarized calculations. If None and the calculation is spin polarized, both are plotted.
bands_style – Styling attributes for bands.
spindown_style – Styling attributes for the spin down bands (if present). Any missing attribute will be taken from
bands_style
.colorscale – Colorscale to use for the bands in case the color attribute is an array of values. If None, the default colorscale is used for each backend.
gap – Whether to display the gap.
gap_tol – Tolerance in k for determining whether two gaps are the same.
gap_color – Color of the gap.
gap_marker – Marker styles for the gap (as plotly marker’s styles).
direct_gaps_only – Whether to only display direct gaps.
custom_gaps – List of custom gaps to display. See the showcase notebooks for examples.
line_mode – The method used to draw the band lines.
group_legend – Whether to group all bands in the legend to show a single legend item.
If the bands are spin polarized, bands are grouped by spin channel.
backend – The backend to use to generate the figure.
- get()
Returns the up to date output of the workflow.
It will recompute it if necessary.
- get_diagram_label()
Returns the label to be used in diagrams when displaying this node.
- get_tree()
- map_inputs(inputs: Dict[str, Any], func: Callable, only_nodes: bool = False, exclude: Sequence[str] = ()) Dict[str, Any]
Maps all inputs of the node applying a given function.
It considers the args and kwargs keys.
- Parameters:
inputs (
Dict[str
,Any]
) – The inputs of the node.func (
Callable
) – The function to apply to each value.only_nodes (
bool
, optional) – Whether to apply the function only to nodes, by default False.exclude (
Sequence[str]
, optional) – The keys to exclude from the mapping. This means that these keys are returned as they are.
- merge(*others, **kwargs)
- recursive_update_inputs(cls: Type | Tuple[Type, ...] | None = None, **inputs)
Updates the inputs of the node recursively.
This method updates the inputs of get node and all its children.
- Parameters:
cls (
Optional[Union[Type
,Tuple[Type
,]]]
, optional) – Only update nodes of this class. If None, update all nodes.inputs (
Dict[str
,Any]
) – The inputs to update.
- setup(*args, **kwargs)
Sets up the node based on its initial inputs.
- update_inputs(**inputs)
Updates the inputs of the workflow.
- update_settings(*args, **kwargs)
- DELETE_KWARG = <object object>
- context: NodeContext = NodeContext({}, {}, {}, {}, {'lazy': True, 'lazy_init': None, 'log_level': 'INFO', 'raise_custom_errors': False, 'on_init': None, 'batch_iter': 'zip'})
- property default_inputs
- dryrun_nodes: WorkflowNodes = <nodify.workflow.WorkflowNodes object>
- property inputs
- network = <nodify.workflow.Network object>
- nodes: WorkflowNodes