corset.display#

Utilities for formatting values with units in plots and tables.

class corset.display.FormattedDataFrame(*args, formatters, **kwargs)#

A subclass of pandas DataFrame that allows for custom formatting of columns when displayed in HTML for Jupyter notebooks.

Parameters:

formatters (dict[str, Callable])

to_html(buf=None, *, notebook=False, **kwargs) str#

Render the DataFrame as an HTML table with the specified formatters applied.

See pandas.DataFrame.to_html() for details on the parameters.

Parameters:
  • buf (None, default: None) – Buffer to write the HTML to. If None, returns the HTML as a string.

  • notebook (bool, default: False) – Whether to format the HTML for display in a Jupyter notebook.

  • **kwargs – Additional keyword arguments passed to pandas.DataFrame.to_html().

Return type:

str

Returns:

The HTML representation of the DataFrame as a string.

class corset.display.FractionUnit(unicode, tex, factor, decimals) None#

Unit for fractional quantities, e.g. overlap or axis coupling.

Parameters:
class corset.display.LengthUnit(unicode, tex, factor, decimals) None#

Unit for length quantities, e.g. coordinates along the beam or beam radii.

Parameters:
class corset.display.SensitivityUnit(unicode, tex, factor, decimals) None#

Unit for sensitivity analysis, e.g. overlap sensitivity per unit length squared.

Parameters:
class corset.display.Unit(unicode, tex, factor, decimals) None#

Unit for displaying values in plots and tables.

Can also be used as unit literals for multiplication with values, e.g. 2 * Units.Length.MILLIMETER == 0.002.

Parameters:
axis_formatter(decimals=None, include_unit=False) FuncFormatter#

Create a matplotlib axis formatter for this unit.

Parameters:
  • decimals (int | None, default: None) – The number of decimal places to display. If None, use the default number of decimals for this unit.

  • include_unit (bool, default: False) – Whether to include the unit in the formatted string.

Return type:

FuncFormatter

Returns:

A matplotlib FuncFormatter that formats axis ticks with this unit.

format(value, *, dev=None, decimals=None, tex=False, array_threshold=5) str#

Format a value with this unit.

Parameters:
  • value (float | list[float] | ndarray | None) – The value to format.

  • dev (float | None, default: None) – The deviation of the value.

  • decimals (int | None, default: None) – The number of decimal places to display.

  • tex (bool, default: False) – Whether to use the LaTeX representation of the unit.

  • array_threshold (int, default: 5) – The threshold for displaying arrays. If the number of elements in the array exceeds this threshold, it will be truncated.

Return type:

str

Returns:

A string representation of the value with the unit.

decimals: int#

Default number of decimals to display when formatting values with this unit

property dollar_tex: str#

LaTeX representation of the unit wrapped in dollar signs for use in Matplotlib labels.

factor: float#

Conversion factor to the SI base unit

tex: str#

LaTeX representation of the unit

unicode: str#

ASCII representation of the unit

class corset.display.Units#

Namespace for units used in the package.

class Fraction#

Units for overlap.

PERCENT = FractionUnit(unicode='%', tex='\\%', factor=0.01, decimals=1)#

Overlap and coupling in percent

UNITY = FractionUnit(unicode='', tex='', factor=1, decimals=3)#

Overlap and coupling as a fraction, i.e. unitless

Type:

#

class Length#

Units for length.

CENTIMETER = LengthUnit(unicode='cm', tex='\\mathrm{cm}', factor=0.01, decimals=1)#
METER = LengthUnit(unicode='m', tex='\\mathrm{m}', factor=1, decimals=3)#
MICROMETER = LengthUnit(unicode='μm', tex='\\mathrm{\\mu m}', factor=1e-06, decimals=0)#
MILLIMETER = LengthUnit(unicode='mm', tex='\\mathrm{mm}', factor=0.001, decimals=0)#
NANOMETER = LengthUnit(unicode='nm', tex='\\mathrm{nm}', factor=1e-09, decimals=0)#
class Sensitivity#

Units for sensitivity analysis.

PERCENT_PER_CENTIMETER2 = SensitivityUnit(unicode='%/cm²', tex='\\%/\\mathrm{cm}^2', factor=100.0, decimals=2)#
PERCENT_PER_MILLIMETER2 = SensitivityUnit(unicode='%/mm²', tex='\\%/\\mathrm{mm}^2', factor=10000.0, decimals=0)#
PER_METER2 = SensitivityUnit(unicode='%/m²', tex='\\%/\\mathrm{m}^2', factor=1, decimals=0)#
cm = LengthUnit(unicode='cm', tex='\\mathrm{cm}', factor=0.01, decimals=1)#

Alias for Units.Length.CENTIMETER

m = LengthUnit(unicode='m', tex='\\mathrm{m}', factor=1, decimals=3)#

Alias for Units.Length.METER

mm = LengthUnit(unicode='mm', tex='\\mathrm{mm}', factor=0.001, decimals=0)#

Alias for Units.Length.MILLIMETER

nm = LengthUnit(unicode='nm', tex='\\mathrm{nm}', factor=1e-09, decimals=0)#

Alias for Units.Length.NANOMETER

pct = FractionUnit(unicode='%', tex='\\%', factor=0.01, decimals=1)#

Alias for Units.Fraction.PERCENT

pct_per_cm2 = SensitivityUnit(unicode='%/cm²', tex='\\%/\\mathrm{cm}^2', factor=100.0, decimals=2)#

Alias for Units.Sensitivity.PERCENT_PER_CENTIMETER2

pct_per_mm2 = SensitivityUnit(unicode='%/mm²', tex='\\%/\\mathrm{mm}^2', factor=10000.0, decimals=0)#

Alias for Units.Sensitivity.PERCENT_PER_MILLIMETER2

per_m2 = SensitivityUnit(unicode='%/m²', tex='\\%/\\mathrm{m}^2', factor=1, decimals=0)#

Alias for Units.Sensitivity.PER_METER2

ul = FractionUnit(unicode='', tex='', factor=1, decimals=3)#

Alias for Units.Fraction.UNITY

um = LengthUnit(unicode='μm', tex='\\mathrm{\\mu m}', factor=1e-06, decimals=0)#

Alias for Units.Length.MICROMETER