Fermi Surface 3D Configuration API#
- class pyprocar.cfg.fermi_surface_3d.FermiSurface3DConfig(plot_type: ~pyprocar.cfg.base.PlotType, custom_settings: ~typing.Dict[str, ~typing.Any] = <factory>, mode: ~pyprocar.cfg.fermi_surface_3d.FermiSurfaceMode = FermiSurfaceMode.PLAIN, property: ~pyprocar.cfg.fermi_surface_3d.FermiSurfaceProperty = FermiSurfaceProperty.FERMI_SPEED, background_color: str = 'white', plotter_offscreen: bool = False, plotter_camera_pos: ~typing.List[int] = <factory>, surface_cmap: str = 'jet', surface_color: str | None = None, surface_opacity: float = 1.0, surface_clim: ~typing.List[float] | None = None, surface_bands_colors: ~typing.List[str] = <factory>, spin_colors: ~typing.Tuple[str] | None = (None, None), arrow_size: int = 3, texture_cmap: str = 'jet', texture_color: str | None = None, texture_size: float = 0.1, texture_scale: bool = False, texture_opacity: float = 1.0, brillouin_zone_style: str = 'wireframe', brillouin_zone_line_width: float = 3.5, brillouin_zone_color: str = 'black', brillouin_zone_opacity: float = 1.0, add_axes: bool = True, x_axes_label: str = 'Kx', y_axes_label: str = 'Ky', z_axes_label: str = 'Kz', axes_label_color: str = 'black', axes_line_width: float = 6, add_scalar_bar: bool = True, scalar_bar_labels: int = 6, scalar_bar_italic: bool = False, scalar_bar_bold: bool = False, scalar_bar_title: str | None = None, scalar_bar_title_font_size: float | None = None, scalar_bar_label_font_size: float | None = None, scalar_bar_position_x: float = 0.4, scalar_bar_position_y: float = 0.01, scalar_bar_color: str = 'black', property_name: str = 'fermi_speed', fermi_tolerance: float = 0.1, extended_zone_directions: ~typing.List[~typing.List[int]] | None = None, supercell: ~typing.List[int] = <factory>, projection_accuracy: str = 'high', interpolation_factor: int = 1, max_distance: float = 0.2, cross_section_slice_linewidth: float = 5.0, cross_section_slice_show_area: bool = False, isoslider_title: str = 'Energy iso-value', isoslider_style: str = 'modern', isoslider_color: str = 'black', orbit_gif_n_points: int = 36, orbit_gif_step: float = 0.05, orbit_mp4_n_points: int = 36, orbit_mp4_step: float = 0.05)[source]#
Bases:
BaseConfig
Configuration class for plotting 3D Fermi surfaces in different modes and styles.
- Parameters:
mode (FermiSurfaceMode, optional (default FermiSurfaceMode.PLAIN)) – Defines the mode of the Fermi surface representation. Options are: PLAIN, PARAMETRIC, and SPIN_TEXTURE.
property (FermiSurfaceProperty, optional (default FermiSurfaceProperty.FERMI_SPEED))
- Plot Appearance:
background_color (str, optional (default ‘white’)) – Sets the background color of the plot.
plotter_offscreen (bool, optional (default False)) – Determines whether the plotter renders offscreen.
plotter_camera_pos (List[int], optional (default [1, 1, 1])) – Specifies the camera position for the plotter.
- Surface Configuration:
surface_cmap (str, optional (default ‘jet’)) – Defines the colormap for the surface plotting.
surface_color (str, optional (default None)) – Specific color for the surface if not using a colormap.
surface_opacity (float, optional (default 1.0)) – Sets the opacity level of the surface.
surface_clim (List[float], optional (default None)) – Defines the color limits for the surface colormap.
surface_bands_colors (List[str], optional (default [])) – List of colors for each band in the surface plot.
- Spin Settings:
spin_colors (Tuple[str], optional (None, None)) – List of colors for the spin texture lines.
texture_cmap (str, optional) – Defines the colormap for texture mapping, default is “jet”.
texture_color (Optional[str], optional) – Specific color for the texture if not using a colormap, default is None.
texture_size (float, optional) – Size of the texture elements, default is 0.1.
texture_scale (bool, optional) – Flag to determine if texture scaling is applied, default is False.
texture_opacity (float, optional) – Opacity of the texture, default is 1.0.
arrow_size (int, optional (default 3)) – Size of the arrows in the spin texture mode.
- Axes and Labels:
add_axes (bool, optional) – Flag to determine if axes are added to the plot, default is True.
x_axes_label (str, optional) – Label for the x-axis, default is “Kx”.
y_axes_label (str, optional) – Label for the y-axis, default is “Ky”.
z_axes_label (str, optional) – Label for the z-axis, default is “Kz”.
axes_label_color (str, optional) – Color of the axes labels, default is “black”.
axes_line_width (float, optional) – Line width of the axes, default is 6.
- Brillouin Zone Styling:
brillouin_zone_style (str, optional (default “wireframe”)) – Defines the style of the Brillouin zone.
brillouin_zone_line_width (float, optional (default 3.5)) – Sets the line width of the Brillouin zone lines.
brillouin_zone_color (str, optional (default “black”)) – Specifies the color of the Brillouin zone lines.
brillouin_zone_opacity (float, optional (default 1.0)) – Controls the opacity of the Brillouin zone lines.
- Advanced Configurations:
fermi_tolerance (float, optional) – The tolerance to search for bands around the Fermi energy, default is 0.1.
extended_zone_directions (Optional[List[List[int]]], optional) – List of directions to extend the surface in, default is None.
supercell (List[int], optional) – The supercell size to use for the Fermi surface, default is [1, 1, 1].
projection_accuracy (str, optional) – The accuracy of the projections with options ‘high’ and ‘normal’, default is ‘high’.
interpolation_factor (int, optional) – The interpolation factor to use for the Fermi surface, default is 1.
- Advanced Configurations:
fermi_tolerance (float, optional (default 0.1)) – The tolerance to search for bands around the fermi energy.
extended_zone_directions (List[List[int]], optional (default None)) – List of directions to extend the surface in.
supercell (List[int], optional (default [1, 1, 1])) – The supercell size to use for the Fermi surface.
projection_accuracy (str, optional (default ‘high’)) – The accuracy of the projections. Options are ‘high’ and ‘normal’.
interpolation_factor (int, optional (default 1)) – The interpolation factor to use for the Fermi surface.
max_distance (float, optional (default 0.2)) – The maximum distance to keep points from the isosurface centers.
Cross section Settings
———————-
cross_section_slice_linewidth (float, optional (default 5.0)) – Line width for slices in cross-sectional views.
cross_section_slice_show_area (bool, optional (default False)) – Flag to determine if the area under the cross-section should be shown.
- Isoslider Settings:
isoslider_title (str, optional (default ‘Energy iso-value’)) – Title for the iso-value slider in the interface.
isoslider_style (str, optional (default ‘modern’)) – Style of the iso-value slider.
isoslider_color (str, optional (default ‘black’)) – Color of the iso-value slider.
- Miscellaneous:
orbit_gif_n_points (int, optional) – Number of points to interpolate for creating orbit GIF animations, default is 36.
orbit_gif_step (float, optional) – Step size between points in the orbit GIF animation, default is 0.05.
orbit_mp4_n_points (int, optional) – Number of points to interpolate for creating orbit MP4 animations, default is 36.
orbit_mp4_step (float, optional) – Step size between points in the orbit MP4 animation, default is 0.05.
Methods
- __post_init__():
Post-initialization to set additional properties like plot_type.
Examples
To initialize a basic configuration with the default settings:
>>> config = FermiSurface3DConfig()
To customize the Fermi surface with a specific colormap and opacity:
>>> custom_config = FermiSurface3DConfig(surface_cmap='magma', surface_opacity=0.8)
- add_axes: bool = True#
- add_scalar_bar: bool = True#
- arrow_size: int = 3#
- axes_label_color: str = 'black'#
- axes_line_width: float = 6#
- background_color: str = 'white'#
- brillouin_zone_color: str = 'black'#
- brillouin_zone_line_width: float = 3.5#
- brillouin_zone_opacity: float = 1.0#
- brillouin_zone_style: str = 'wireframe'#
- cross_section_slice_linewidth: float = 5.0#
- cross_section_slice_show_area: bool = False#
- extended_zone_directions: List[List[int]] | None = None#
- fermi_tolerance: float = 0.1#
- interpolation_factor: int = 1#
- isoslider_color: str = 'black'#
- isoslider_style: str = 'modern'#
- isoslider_title: str = 'Energy iso-value'#
- max_distance: float = 0.2#
- mode: FermiSurfaceMode = 'plain'#
- orbit_gif_n_points: int = 36#
- orbit_gif_step: float = 0.05#
- orbit_mp4_n_points: int = 36#
- orbit_mp4_step: float = 0.05#
- plotter_camera_pos: List[int]#
- plotter_offscreen: bool = False#
- projection_accuracy: str = 'high'#
- property: FermiSurfaceProperty = 'fermi_speed'#
- property_name: str = 'fermi_speed'#
- scalar_bar_bold: bool = False#
- scalar_bar_color: str = 'black'#
- scalar_bar_italic: bool = False#
- scalar_bar_label_font_size: float | None = None#
- scalar_bar_labels: int = 6#
- scalar_bar_position_x: float = 0.4#
- scalar_bar_position_y: float = 0.01#
- scalar_bar_title: str | None = None#
- scalar_bar_title_font_size: float | None = None#
- spin_colors: Tuple[str] | None = (None, None)#
- supercell: List[int]#
- surface_bands_colors: List[str]#
- surface_clim: List[float] | None = None#
- surface_cmap: str = 'jet'#
- surface_color: str | None = None#
- surface_opacity: float = 1.0#
- texture_cmap: str = 'jet'#
- texture_color: str | None = None#
- texture_opacity: float = 1.0#
- texture_scale: bool = False#
- texture_size: float = 0.1#
- x_axes_label: str = 'Kx'#
- y_axes_label: str = 'Ky'#
- z_axes_label: str = 'Kz'#
- class pyprocar.cfg.fermi_surface_3d.FermiSurfaceMode(value)[source]#
Bases:
Enum
An enumeration for defining the modes of Fermi surface representations.
- Variables:
PLAIN (str) – Represents the Fermi surface in a simple, where the colors are the different bands.
PARAMETRIC (str) – Represents the Fermi surface in a parametric form, summing over the projections.
SPIN_TEXTURE (str) – Enhances the Fermi surface representation with spin texture information
- PARAMETRIC = 'parametric'#
- PLAIN = 'plain'#
- SPIN_TEXTURE = 'spin_texture'#
- class pyprocar.cfg.fermi_surface_3d.FermiSurfaceProperty(value)[source]#
Bases:
Enum
An enumeration for defining the properties that can be visualized on the Fermi surface.
- Variables:
FERMI_SPEED (str) – Visualizes the scalar speed at which electrons travel at the Fermi level.
FERMI_VELOCITY (str) – Visualizes the vector velocity of electrons moving at the Fermi level.
HARMONIC_AVERAGE_EFFECTIVE_MASS (str) – Displays the harmonic average of the effective mass of electrons, reflecting the electron mobility.
- FERMI_SPEED = 'fermi_speed'#
- FERMI_VELOCITY = 'fermi_velocity'#
- HARMONIC_AVERAGE_EFFECTIVE_MASS = 'harmonic_effective_mass'#