From bc367e6d401ce8574cbabc69b7e4102640e5c263 Mon Sep 17 00:00:00 2001
From: Ayushi Daksh <37770155+AyushiDaksh@users.noreply.github.com>
Date: Tue, 18 Jul 2023 11:56:30 -0400
Subject: [PATCH 01/13] Grotrian Diagram Plot Appearance (#2313)
* Grotrian diagram mockup 0
* Use atomic data to get energy levels
* Get line data from simulation object using LastLineInteraction class
* Remove transition where start and end (merged) levels is the same
* Refactor to GrotrianWidget class
* Add hovertext and colorbar
* Fix NUM_SHELLS variable
* Convert code into modular format
* Normalize wavelength by min and max value of the selected ion, instead of global min and max
* Create APIs for setting plot wavelength range manually
* Make y-axis linear in level_number instead of level_energy
* Rename num_electrons to standard_log_num_electrons while building plot
* Stardardize level population numbers
* Fix stardardization division by zero if only one element present in data
* Fix roman notation of ion number
* Display ground level too
* Change level populations to scientific notation in hovertext
* Put Angstrom symbol in colorbar instead of full name
* Standardize num_electrons using a common range for both excitation and de-excitation lines
* Fix the problem of arrows not touching the levels. (Used add_traces for arrows instead of add_annotation)
* Refactor duplicated code logic
* Put hoverinfo on transition arrows
* Put standardization logic into compute functions instead of draw functions
* Add width scale for level populations
* Format electron count to be an int instead of float in hovertext
* Wavelength range in colorbar should be confined to the displayed transitions only by default
* Set default colorscale to Rainbow for wavelengths
* Allow user to set atomic number and ion number simultaneously
* Handle ground state transitions correctly. Display dashed lines for levels with no level population
* Add basic docstrings
* Scientific formatting for level energies
* Display level populations based on supernova zone
* Put relative x-coordinate
* Add width scale for transition arrow widths
* Change y-axis from level number to log energies
* Minor margin changes
* Disable zooming
* Move width references to the left and colorbar to the right
* Refactor code. Remove duplication and hardcodings
* Add in/out last line interaction shell ids for real and virtual packets
* Add API for filtering data by supernova shell
* Add selected shell in plot title
* Do not handle last_line_interaction_in_shell_id and last_line_interaction_out_shell_id separately
* Do not reset custom wavelength range when the shell is changed
* Sync mockup notebook with master
* Fixed plot width and reference bars
* Added docstrings for remaining methods
* Added log option for y-scale
* Resolve Black issue
* Fix docstrings and make variable names more informative
* - Renamed 'colorscale' to 'cmapname'
- Allow 'colorscale' to be changed by user
- Fixed the access specifiers of editable attributes vs non-editable attributes
* Force user to set ion explicitly before plotting
* Add information for the configurable attributes in the class docstring
* Remove hardcoding in the unit conversion for level energies
* Fix arrowhead issue in VSCode
* Display info message that wavelengths will be reset when ion changes
* Add ability to change level_diff_threshold, max_levels, and filter_mode
* Added default parameter values in docstrings and updated comments
* Make all setters atomic operations
---
tardis/analysis.py | 56 +-
tardis/visualization/widgets/grotrian.py | 947 +++++++++++
.../widgets/grotrian_mockup.ipynb | 1434 +++++++++++++++++
3 files changed, 2425 insertions(+), 12 deletions(-)
create mode 100644 tardis/visualization/widgets/grotrian.py
create mode 100644 tardis/visualization/widgets/grotrian_mockup.ipynb
diff --git a/tardis/analysis.py b/tardis/analysis.py
index 987ee5fe0c0..6ead15f9a43 100644
--- a/tardis/analysis.py
+++ b/tardis/analysis.py
@@ -10,6 +10,8 @@
import numpy as np
import pandas as pd
+INVALID_ION_ERROR_MSG = "Atomic number, ion_number pair not present in model"
+
class LastLineInteraction(object):
@classmethod
@@ -86,8 +88,13 @@ def atomic_number(self):
@atomic_number.setter
def atomic_number(self, value):
- self._atomic_number = value
- self.update_last_interaction_filter()
+ old_atomic_number = self._atomic_number
+ try:
+ self._atomic_number = value
+ self.update_last_interaction_filter()
+ except:
+ self._atomic_number = old_atomic_number
+ raise ValueError(INVALID_ION_ERROR_MSG)
@property
def ion_number(self):
@@ -95,8 +102,25 @@ def ion_number(self):
@ion_number.setter
def ion_number(self, value):
- self._ion_number = value
- self.update_last_interaction_filter()
+ old_ion_number = self._ion_number
+ try:
+ self._ion_number = value
+ self.update_last_interaction_filter()
+ except:
+ self._ion_number = old_ion_number
+ raise ValueError(INVALID_ION_ERROR_MSG)
+
+ def set_ion(self, atomic_number, ion_number):
+ old_atomic_number = self._atomic_number
+ old_ion_number = self._ion_number
+ try:
+ self._atomic_number = atomic_number
+ self._ion_number = ion_number
+ self.update_last_interaction_filter()
+ except:
+ self._atomic_number = old_atomic_number
+ self._ion_number = old_ion_number
+ raise ValueError(INVALID_ION_ERROR_MSG)
@property
def shell(self):
@@ -104,8 +128,13 @@ def shell(self):
@shell.setter
def shell(self, value):
- self._shell = value
- self.update_last_interaction_filter()
+ old_shell = self._shell
+ try:
+ self._shell = value
+ self.update_last_interaction_filter()
+ except:
+ self._shell = old_shell
+ raise ValueError("Invalid shell number")
def update_last_interaction_filter(self):
if self.packet_filter_mode == "packet_out_nu":
@@ -137,29 +166,32 @@ def update_last_interaction_filter(self):
self.last_line_interaction_shell_id == self.shell
)
- self.last_line_in = self.lines.iloc[
+ last_line_in = self.lines.iloc[
self.last_line_interaction_in_id[packet_filter]
]
- self.last_line_out = self.lines.iloc[
+ last_line_out = self.lines.iloc[
self.last_line_interaction_out_id[packet_filter]
]
if self.atomic_number is not None:
- self.last_line_in = self.last_line_in.xs(
+ last_line_in = last_line_in.xs(
self.atomic_number, level="atomic_number", drop_level=False
)
- self.last_line_out = self.last_line_out.xs(
+ last_line_out = last_line_out.xs(
self.atomic_number, level="atomic_number", drop_level=False
)
if self.ion_number is not None:
- self.last_line_in = self.last_line_in.xs(
+ last_line_in = last_line_in.xs(
self.ion_number, level="ion_number", drop_level=False
)
- self.last_line_out = self.last_line_out.xs(
+ last_line_out = last_line_out.xs(
self.ion_number, level="ion_number", drop_level=False
)
+ self.last_line_in = last_line_in
+ self.last_line_out = last_line_out
+
last_line_in_count = self.last_line_in.line_id.value_counts()
last_line_out_count = self.last_line_out.line_id.value_counts()
diff --git a/tardis/visualization/widgets/grotrian.py b/tardis/visualization/widgets/grotrian.py
new file mode 100644
index 00000000000..9ee196fb346
--- /dev/null
+++ b/tardis/visualization/widgets/grotrian.py
@@ -0,0 +1,947 @@
+"""
+Grotrian Diagram Widget for TARDIS simulation models.
+
+This widget displays a Grotrian Diagram of the last line interactions of the simulation packets
+"""
+from tardis.analysis import LastLineInteraction
+from tardis.util.base import int_to_roman
+import plotly.graph_objects as go
+from plotly.subplots import make_subplots
+import numpy as np
+import pandas as pd
+import matplotlib
+import matplotlib.pyplot as plt
+from astropy import units as u
+import ipywidgets as ipw
+
+ANGSTROM_SYMBOL = "\u212B"
+
+
+def standardize(
+ values,
+ transform=lambda x: x,
+ min_value=None,
+ max_value=None,
+ zero_undefined=False,
+ zero_undefined_offset=0,
+):
+ """
+ Utility function to standardize displayed values like wavelengths, num_packets, levels populations to the range [0, 1]
+ This helps in computing visual elements like widths, colors, etc.
+
+ Parameters
+ ----------
+ values : pandas.Series
+ The data to standardize
+ transform : function, optional
+ Transformations like np.log, np.exp, etc. to apply on the data. Defaults to identity
+ min_value : float, optional
+ The lower bound of the range
+ max_value : float, optional
+ The upper bound of the range
+ zero_undefined : bool, optional
+ When applying transformations (like log) where output of 0 is undefined, set this to True
+ Default value is False
+ zero_undefined_offset : int, optional
+ This is useful for log transformation because log(0) is -inf.
+ Hence, value=0 gives y=0 while the
+ output for other values start at `zero_undefined_offset` (y = log(value) + zero_undefined_offset)
+ Default value is 0
+
+ Returns
+ -------
+ pandas.Series
+ Values after standardization
+ """
+ if zero_undefined and zero_undefined_offset == 0:
+ raise ValueError(
+ "If zero of the transformation is undefined, then provide an offset greater than 0"
+ )
+
+ # Compute lower and upper bounds of values
+ if min_value is None:
+ if zero_undefined:
+ min_value = values[values > 0].min()
+ else:
+ min_value = values.min()
+ if max_value is None:
+ if zero_undefined:
+ max_value = values[values > 0].max()
+ else:
+ max_value = values.max()
+
+ # Apply transformation if given
+ transformed_min_value = transform(min_value)
+ transformed_max_value = transform(max_value)
+ transformed_values = transform(values)
+
+ # Compute range
+ value_range = transformed_max_value - transformed_min_value
+
+ # Apply standardization
+ if value_range > 0:
+ transformed_values = (
+ transformed_values - transformed_min_value
+ ) / value_range
+ if zero_undefined:
+ transformed_values = transformed_values + zero_undefined_offset
+ transformed_values.mask(values == 0, 0, inplace=True)
+ else:
+ # If only single value present in table, then place it at 0
+ transformed_values = 0 * values
+
+ return transformed_values
+
+
+class GrotrianWidget:
+ """Class for the Grotrian Diagram
+
+ Parameters
+ ----------
+ atom_data : pandas.DataFrame
+ Mapping from atomic number to symbol and name
+ level_energy_data : pandas.Series
+ Level energies (in eV) indexed by (atomic_number, ion_number, level_number)
+ level_population_data : pandas.DataFrame
+ Level populations indexed by (atomic_number, ion_number, level_number)
+ and each column representing the supernova shell
+ line_interaction_analysis : tardis.analysis.LastLineInteraction
+ LastLineInteraction object with the appropriate filters
+
+ Configurable Attributes
+ -----------------------
+ atomic_number : int
+ Atomic number of the ion for which the diagram is plotted
+ Note: User should set the atomic_number and ion_number together using set_ion function.
+ ion_number : int
+ Ion number of the ion for which the diagram is plotted
+ Note: User should set the atomic_number and ion_number together using set_ion function.
+ shell : int or None
+ The supernova shell to filter on.
+ If None, the level populations are averaged across all shells,
+ and all last line interaction are considered
+ Default value is None
+ max_levels : int
+ The maximum number of levels to plot.
+ Default value is 10
+ level_diff_threshold : float
+ The percentage threshold under which levels are merged
+ Default value is 1% (0.01)
+ min_wavelength : float
+ The minimum wavelength allowed for the transitions
+ max_wavelength : float
+ The maximum wavelength allowed for the transitions
+ filter_mode : {"packet_out_nu", "packet_in_nu"}
+ The type of wavelength to apply wavelength range filter on
+ Default value is packet_out_nu
+ y_scale : {"Log", "Linear"}
+ The scale to plot the energy levels on the y-axis
+ Default value is Linear
+ cmapname : str
+ The name of the colormap used to denote wavelengths. Default value is "rainbow"
+ level_width_scale : float
+ The multiplier to convert standardized level populations to level widths
+ Default value is 3
+ level_width_offset : float
+ The offset for level widths (to add to the scaled standardized level populations)
+ Default value is 1
+ transition_width_scale : float
+ The multiplier to convert standardized packet count to transition widths
+ Default value is 2
+ transition_width_offset : float
+ The offset for transition widths (to add to the scaled standardized packet counts)
+ Default value is 1
+ """
+
+ FILTER_MODES = ("packet_out_nu", "packet_in_nu")
+ FILTER_MODES_DESC = ("Emitted Wavelength", "Absorbed Wavelength")
+ Y_SCALE_OPTION = {"Linear": (lambda x: x), "Log": np.log}
+
+ @classmethod
+ def from_simulation(cls, sim, **kwargs):
+ """Creates a GrotrianWidget object from a Simulation object
+
+ Parameters
+ ----------
+ sim : tardis.simulation.Simulation
+ TARDIS simulation object
+
+ Returns
+ -------
+ tardis.visualization.widgets.grotrian.GrotrianWidget
+ GrotrianWidget object
+ """
+ atom_data = sim.plasma.atomic_data.atom_data
+ level_energy_data = pd.Series(
+ sim.plasma.atomic_data.levels.energy * u.erg.to(u.electronvolt),
+ name="energy",
+ )
+ level_population_data = sim.plasma.level_number_density
+ line_interaction_analysis = {
+ filter_mode: LastLineInteraction.from_model(sim, filter_mode)
+ for filter_mode in cls.FILTER_MODES
+ }
+ return cls(
+ atom_data=atom_data,
+ level_energy_data=level_energy_data,
+ level_population_data=level_population_data,
+ line_interaction_analysis=line_interaction_analysis,
+ **kwargs,
+ )
+
+ def __init__(
+ self,
+ atom_data,
+ level_energy_data,
+ level_population_data,
+ line_interaction_analysis,
+ ):
+ # Set data members
+ self._atom_data = atom_data
+ self._level_energy_data = level_energy_data
+ self._level_population_data = level_population_data
+ self._line_interaction_analysis = line_interaction_analysis
+
+ # Max number of levels to display
+ self._max_levels = 10
+
+ # Energy difference threshold below which levels are merged
+ self._level_diff_threshold = 0.01
+
+ # Filter mode for the wavelength range
+ self._min_wavelength = None
+ self._max_wavelength = None
+ self._filter_mode = self.FILTER_MODES[0]
+
+ # Selected Species
+ self._atomic_number = None
+ self._ion_number = None
+ self._shell = None
+
+ ### Define default parameters for visual elements related to energy levels
+ self.level_width_scale, self.level_width_offset = 3, 1
+ self._level_width_transform = np.log # Scale of the level widths
+ self._population_spacer = np.geomspace # To space width bar counts
+ ### Scale of the y-axis
+ self._y_scale = "Linear"
+ self._y_coord_transform = self.Y_SCALE_OPTION[self._y_scale]
+
+ ### Define default parameters for visual elements related to transitions
+ self.transition_width_scale, self.transition_width_offset = 2, 1
+ self._transition_width_transform = np.log # Scale of the arrow widths
+ self._transition_count_spacer = (
+ np.geomspace
+ ) # To space width bar counts
+ self.arrowhead_size = 9
+
+ ### Define default parameters for visual elements related to wavelengths
+ self.cmapname = "rainbow"
+ self._wavelength_color_transform = np.log # Scale of wavelength color
+ self._wavelength_spacer = np.geomspace # To space colorbar wavelengths
+
+ # Coordinate end points of levels
+ self.x_min, self.x_max = 0, 1
+
+ @property
+ def min_wavelength(self):
+ return self._min_wavelength
+
+ @min_wavelength.setter
+ def min_wavelength(self, value):
+ self._min_wavelength = value
+ self._compute_transitions()
+
+ @property
+ def max_wavelength(self):
+ return self._max_wavelength
+
+ @max_wavelength.setter
+ def max_wavelength(self, value):
+ self._max_wavelength = value
+ self._compute_transitions()
+
+ def reset_selected_plot_wavelength_range(self):
+ """
+ Resets the wavelength range of the selected plot
+ """
+ self.min_wavelength = None
+ self.max_wavelength = None
+
+ @property
+ def max_levels(self):
+ return self._max_levels
+
+ @max_levels.setter
+ def max_levels(self, value):
+ assert type(value) is int
+ self._max_levels = value
+ self._compute_level_data()
+ self._compute_transitions()
+
+ @property
+ def level_diff_threshold(self):
+ return self._level_diff_threshold
+
+ @level_diff_threshold.setter
+ def level_diff_threshold(self, value):
+ assert 0 >= value and value < 1
+ self._level_diff_threshold = value
+ self._compute_level_data()
+ self._compute_transitions()
+
+ @property
+ def filter_mode(self):
+ return self._filter_mode
+
+ @filter_mode.setter
+ def filter_mode(self, value):
+ assert value in self.FILTER_MODES
+
+ # Set the atomic_number and ion_number in the appropriate analysis object
+ self._line_interaction_analysis[value].set_ion(
+ self.atomic_number, self.ion_number
+ )
+ self._line_interaction_analysis[value].shell = self.shell
+
+ self._filter_mode = value
+
+ self._compute_transitions()
+
+ @property
+ def atomic_number(self):
+ if self._atomic_number is None:
+ raise ValueError("Atomic number is not set")
+ return self._atomic_number
+
+ def set_ion(self, atomic_number, ion_number):
+ """
+ Sets the atomic number and ion number
+ """
+ assert type(atomic_number) is int and type(ion_number) is int
+ if (atomic_number, ion_number) not in self._level_energy_data.index or (
+ atomic_number,
+ ion_number,
+ ) not in self._level_population_data.index:
+ raise ValueError(
+ "The (atomic_number, ion_number) pair doesn't exist in model"
+ )
+ self._line_interaction_analysis[self.filter_mode].set_ion(
+ atomic_number, ion_number
+ )
+
+ self._atomic_number = atomic_number
+ self._ion_number = ion_number
+ self._compute_level_data()
+ print(
+ "Changing the ion will reset custom wavelength ranges, if any were set"
+ )
+
+ # Reset any custom wavelengths if user changes ion
+ self.reset_selected_plot_wavelength_range() # Also computes transition lines so we don't need to call it "_compute_transitions()" explicitly
+
+ @property
+ def ion_number(self):
+ if self._ion_number is None:
+ raise ValueError("Ion number is not set")
+ return self._ion_number
+
+ @property
+ def atomic_name(self):
+ return self._atom_data.loc[self.atomic_number]["name"]
+
+ @property
+ def atomic_symbol(self):
+ return self._atom_data.loc[self.atomic_number]["symbol"]
+
+ @property
+ def shell(self):
+ return self._shell
+
+ @shell.setter
+ def shell(self, value):
+ assert value is None or type(value) is int
+ self._line_interaction_analysis[self.filter_mode].shell = value
+ self._shell = value
+ self._compute_level_data()
+ self._compute_transitions()
+
+ @property
+ def y_scale(self):
+ return self._y_scale
+
+ @y_scale.setter
+ def y_scale(self, value):
+ assert value in self.Y_SCALE_OPTION
+ self._y_scale = value
+ self._y_coord_transform = self.Y_SCALE_OPTION[self._y_scale]
+
+ def _compute_transitions(self):
+ """
+ Computes the excitation/de-excitation line transition data for the arrows in the widget
+ """
+ ### Get the excitation/de-excitation transitions from LastLineInteraction object
+ excite_lines = (
+ self._line_interaction_analysis[self.filter_mode]
+ .last_line_in.reset_index()
+ .groupby(["level_number_lower", "level_number_upper"])
+ .agg(
+ num_electrons=("line_id", "count"), # Take count of lines
+ wavelength=("wavelength", "first"), # Take first of wavelengths
+ )
+ .reset_index()
+ )
+
+ deexcite_lines = (
+ self._line_interaction_analysis[self.filter_mode]
+ .last_line_out.reset_index()
+ .groupby(["level_number_lower", "level_number_upper"])
+ .agg(
+ num_electrons=("line_id", "count"), # Take count of lines
+ wavelength=("wavelength", "first"), # Take first of wavelengths
+ )
+ .reset_index()
+ )
+
+ ### Filter transitions to only include transitions up to the self.max_levels
+ excite_lines = excite_lines.loc[
+ excite_lines.level_number_upper <= self.max_levels
+ ]
+ deexcite_lines = deexcite_lines.loc[
+ deexcite_lines.level_number_upper <= self.max_levels
+ ]
+
+ ### Map the levels to merged levels
+ excite_lines[
+ "merged_level_number_lower"
+ ] = excite_lines.level_number_lower.map(self.level_mapping)
+ excite_lines[
+ "merged_level_number_upper"
+ ] = excite_lines.level_number_upper.map(self.level_mapping)
+ deexcite_lines[
+ "merged_level_number_lower"
+ ] = deexcite_lines.level_number_lower.map(self.level_mapping)
+ deexcite_lines[
+ "merged_level_number_upper"
+ ] = deexcite_lines.level_number_upper.map(self.level_mapping)
+
+ ### Group by level pairs
+ excite_lines = (
+ excite_lines.groupby(
+ ["merged_level_number_lower", "merged_level_number_upper"]
+ )
+ .agg(
+ wavelength=("wavelength", "mean"), # Take mean of wavelength
+ num_electrons=("num_electrons", "sum"), # Take sum of counts
+ )
+ .reset_index()
+ )
+ deexcite_lines = (
+ deexcite_lines.groupby(
+ ["merged_level_number_lower", "merged_level_number_upper"]
+ )
+ .agg(
+ wavelength=("wavelength", "mean"), # Take mean of wavelength
+ num_electrons=("num_electrons", "sum"), # Take sum of counts
+ )
+ .reset_index()
+ )
+
+ ### Remove the rows where start and end (merged) level is the same
+ excite_lines = excite_lines.loc[
+ excite_lines.merged_level_number_lower
+ != excite_lines.merged_level_number_upper
+ ]
+ deexcite_lines = deexcite_lines.loc[
+ deexcite_lines.merged_level_number_lower
+ != deexcite_lines.merged_level_number_upper
+ ]
+
+ ### Compute default wavelengths if not set by user
+ if self.min_wavelength is None: # Compute default wavelength
+ self._min_wavelength = np.min(
+ np.concatenate(
+ (excite_lines.wavelength, deexcite_lines.wavelength)
+ )
+ )
+ if self.max_wavelength is None: # Compute default wavelength
+ self._max_wavelength = np.max(
+ np.concatenate(
+ (excite_lines.wavelength, deexcite_lines.wavelength)
+ )
+ )
+
+ ### Remove the rows outside the wavelength range for the plot
+ excite_lines = excite_lines.loc[
+ (excite_lines.wavelength >= self.min_wavelength)
+ & (excite_lines.wavelength <= self.max_wavelength)
+ ]
+ deexcite_lines = deexcite_lines.loc[
+ (deexcite_lines.wavelength >= self.min_wavelength)
+ & (deexcite_lines.wavelength <= self.max_wavelength)
+ ]
+
+ ### Compute the standardized log number of electrons for arrow line width
+ transition_width_coefficient = standardize(
+ np.concatenate(
+ (excite_lines.num_electrons, deexcite_lines.num_electrons)
+ ),
+ transform=self._transition_width_transform,
+ )
+ excite_lines[
+ "transition_width_coefficient"
+ ] = transition_width_coefficient[: len(excite_lines)]
+ deexcite_lines[
+ "transition_width_coefficient"
+ ] = transition_width_coefficient[len(excite_lines) :]
+
+ self.excite_lines = excite_lines
+ self.deexcite_lines = deexcite_lines
+
+ def _compute_level_data(self):
+ """
+ Computes the level population data for the horizontal platforms in the widget
+ """
+ ### Get energy levels and convert to eV
+ raw_energy_levels = self._level_energy_data.loc[
+ self.atomic_number, self.ion_number
+ ].loc[0 : self.max_levels]
+
+ ### Get level populations
+ raw_level_populations = self._level_population_data.loc[
+ self.atomic_number, self.ion_number
+ ].loc[0 : self.max_levels]
+
+ ### Average out the level populations across all zones, if zone not selected
+ if self.shell is None:
+ raw_level_populations = raw_level_populations.mean(axis=1)
+ else:
+ raw_level_populations = raw_level_populations[self.shell]
+
+ raw_level_populations = pd.Series(
+ raw_level_populations, name="population"
+ )
+
+ ### Join level populations and energy values
+ raw_level_data = pd.merge(
+ raw_energy_levels,
+ raw_level_populations,
+ left_index=True,
+ right_index=True,
+ )
+
+ ### Merge the levels if energy difference is less than threshold
+ # Get new level numbers
+ # TODO: Find a better way to find close levels (less than 0.03 diff in y-coord)
+ raw_level_data["merged_level_number"] = (
+ (raw_level_data["energy"] + 1).pct_change().abs()
+ > self.level_diff_threshold
+ ).cumsum()
+
+ # Group data with new level numbers
+ self.level_data = (
+ raw_level_data.reset_index()
+ .groupby("merged_level_number")
+ .agg(
+ energy=(
+ "energy",
+ "mean",
+ ), # Set energy as mean of merged levels
+ population=("population", "sum"),
+ )
+ ) # Add the populations of merged levels
+
+ ### Standardize the level populations to get width coefficient of levels
+ self.level_data["level_width_coefficient"] = standardize(
+ self.level_data.population,
+ transform=self._level_width_transform,
+ zero_undefined=True,
+ zero_undefined_offset=1e-3,
+ )
+
+ ### Create a mapping from original levels to merged levels
+ self.level_mapping = raw_level_data.merged_level_number
+
+ def _draw_energy_levels(self):
+ """
+ Draws the horizontal energy levels on the widget
+ """
+ # Transform energies and standardize result to get y-coordinate in range [0, 1]
+ self.level_data["y_coord"] = standardize(
+ self.level_data.energy,
+ transform=self._y_coord_transform,
+ zero_undefined=True,
+ zero_undefined_offset=0.1,
+ )
+
+ ### Create the energy levels from level data
+ for level_number, level_info in self.level_data.iterrows():
+ # Add the horizontal line
+ self.fig.add_trace(
+ go.Scatter(
+ x=np.linspace(self.x_min - 0.05, self.x_max + 0.05, 10),
+ y=level_info.y_coord * np.ones(10),
+ mode="lines",
+ hovertemplate=f"Energy: {level_info.energy:.2e} eV
"
+ + f"Population: {level_info.population:.2e}"
+ + "",
+ line=dict(
+ color="black",
+ width=level_info.level_width_coefficient
+ * self.level_width_scale
+ + self.level_width_offset,
+ )
+ if level_info.population > 0
+ else dict(color="grey", dash="dash"),
+ showlegend=False,
+ ),
+ row=1,
+ col=2,
+ )
+
+ # Add label for energy
+ self.fig.add_annotation(
+ x=self.x_max + 0.1,
+ y=level_info.y_coord,
+ text=f"n={level_number}",
+ showarrow=False,
+ xref="x2",
+ yref="y2",
+ )
+
+ def _draw_population_width_scale(self):
+ """
+ Displays the level population width reference bar
+ """
+ ### Create width scale
+ ### Find lower and upper bounds of populations and corresponding widths
+ min_population_idx = self.level_data.population[
+ self.level_data.population > 0
+ ].idxmin()
+ max_population_idx = self.level_data.population.idxmax()
+
+ min_population = self.level_data.population[min_population_idx]
+ max_population = self.level_data.population[max_population_idx]
+
+ min_width = (
+ self.level_data.level_width_coefficient[min_population_idx]
+ * self.level_width_scale
+ + self.level_width_offset
+ )
+ max_width = (
+ self.level_data.level_width_coefficient[max_population_idx]
+ * self.level_width_scale
+ + self.level_width_offset
+ )
+
+ ### Space the populations (log) and corresponding widths (linear) equally
+ scale_granularity = 10 # Number of scale ticks to display
+ population_ticks = self._population_spacer(
+ min_population, max_population, scale_granularity
+ )
+ width_ticks = np.linspace(min_width, max_width, scale_granularity)
+ y_positions = np.linspace(0, 1, scale_granularity)
+
+ ### Draw the scale lines
+ for population, width, y_pos in zip(
+ population_ticks, width_ticks, y_positions
+ ):
+ self.fig.add_shape(
+ type="line",
+ line_width=width,
+ x0=0.1,
+ x1=0.2,
+ y0=y_pos,
+ y1=y_pos,
+ xref="x1",
+ yref="y1",
+ )
+ self.fig.add_annotation(
+ x=0.35,
+ y=y_pos,
+ text=f"{population:.1e}",
+ showarrow=False,
+ xref="x1",
+ yref="y1",
+ )
+ # Add title of the width bar
+ self.fig.add_annotation(
+ x=0.28,
+ y=-0.08,
+ text="Populations",
+ showarrow=False,
+ xref="x1",
+ yref="y1",
+ )
+
+ def _draw_transitions(self, is_excitation):
+ """
+ Draws the transition arrows on the widget
+ """
+ lines = self.excite_lines if is_excitation else self.deexcite_lines
+ lines["color_coefficient"] = standardize(
+ lines.wavelength,
+ transform=self._wavelength_color_transform,
+ min_value=self.min_wavelength,
+ max_value=self.max_wavelength,
+ )
+
+ self._cmap = plt.get_cmap(self.cmapname) # Float to color map
+
+ ### Plot excitation transitions
+ for _, line_info in lines.iterrows():
+ lower, upper = (
+ line_info.merged_level_number_lower,
+ line_info.merged_level_number_upper,
+ )
+ wavelength, transition_width_coefficient = (
+ line_info.wavelength,
+ line_info.transition_width_coefficient,
+ )
+ energy_lower, energy_upper = (
+ self.level_data.loc[lower].energy,
+ self.level_data.loc[upper].energy,
+ )
+
+ # Get the end x-coordinate (proportional to energy difference between levels)
+ merged_max_energy_level = self.level_data.energy.max()
+ x_end = (
+ (energy_upper - energy_lower)
+ * (self.x_max - self.x_min)
+ / (merged_max_energy_level - energy_lower)
+ )
+
+ # Get the appropriate y-coordinate (computed in _draw_energy_levels)
+ y_lower = self.level_data.loc[lower].y_coord
+ y_upper = self.level_data.loc[upper].y_coord
+
+ # Get the end arrow color (proportional to log wavelength)
+ color_coef = line_info.color_coefficient
+ color = matplotlib.colors.rgb2hex(self._cmap(color_coef)[:3])
+
+ # Draw arrow
+ self.fig.add_trace(
+ go.Scatter(
+ x=[self.x_min, x_end],
+ y=[y_lower, y_upper]
+ if is_excitation
+ else [y_upper, y_lower],
+ hovertemplate=f"Count: {int(line_info.num_electrons)}
"
+ + f"Wavelength: {wavelength:.2e} {ANGSTROM_SYMBOL}"
+ + "",
+ marker=dict(
+ size=self.arrowhead_size,
+ color=color,
+ symbol="arrow-up",
+ angleref="previous",
+ ),
+ line=dict(
+ color=color,
+ width=transition_width_coefficient
+ * self.transition_width_scale
+ + self.transition_width_offset,
+ ),
+ ),
+ row=1,
+ col=2,
+ )
+
+ def _draw_transition_width_scale(self):
+ """
+ Displays the transition count width reference bar
+ """
+ ### Find lower and upper bounds of num_electrons and corresponding widths
+ max_num_electrons = np.max(
+ np.concatenate(
+ (
+ self.excite_lines.num_electrons,
+ self.deexcite_lines.num_electrons,
+ )
+ )
+ )
+ min_num_electrons = np.min(
+ np.concatenate(
+ (
+ self.excite_lines.num_electrons,
+ self.deexcite_lines.num_electrons,
+ )
+ )
+ )
+
+ max_width_coefficient = np.max(
+ np.concatenate(
+ (
+ self.excite_lines.transition_width_coefficient,
+ self.deexcite_lines.transition_width_coefficient,
+ )
+ )
+ )
+ min_width_coefficient = np.min(
+ np.concatenate(
+ (
+ self.excite_lines.transition_width_coefficient,
+ self.deexcite_lines.transition_width_coefficient,
+ )
+ )
+ )
+
+ min_width = (
+ min_width_coefficient * self.transition_width_scale
+ + self.transition_width_offset
+ )
+ max_width = (
+ max_width_coefficient * self.transition_width_scale
+ + self.transition_width_offset
+ )
+
+ ### Space the num_electrons (log) and corresponding widths (linear) equally
+ scale_granularity = 10
+ num_electrons_ticks = self._transition_count_spacer(
+ min_num_electrons, max_num_electrons, scale_granularity
+ )
+ width_ticks = np.linspace(min_width, max_width, scale_granularity)
+ y_positions = np.linspace(0, 1, scale_granularity)
+
+ ### Draw the width bar
+ for num_electrons, width, y_pos in zip(
+ num_electrons_ticks, width_ticks, y_positions
+ ):
+ self.fig.add_shape(
+ type="line",
+ line_width=width,
+ x0=0.65,
+ x1=0.75,
+ y0=y_pos,
+ y1=y_pos,
+ xref="x1",
+ yref="y1",
+ )
+ self.fig.add_annotation(
+ x=0.9,
+ y=y_pos,
+ text=f"{num_electrons:.1e}",
+ showarrow=False,
+ xref="x1",
+ yref="y1",
+ )
+ # Add title of the width bar
+ self.fig.add_annotation(
+ x=0.83,
+ y=-0.08,
+ text="#Packets",
+ showarrow=False,
+ xref="x1",
+ yref="y1",
+ )
+
+ def _draw_transition_color_scale(self):
+ """
+ Displays the transition wavelength colorbar
+ """
+ # Add a dummy Scatter trace to display colorbar
+ tickvals = self._wavelength_spacer(
+ self.min_wavelength, self.max_wavelength, 10
+ )
+ ticktext = [f"{val:.1e}" for val in tickvals]
+ self.fig.add_trace(
+ go.Scatter(
+ x=[None],
+ y=[None],
+ mode="markers",
+ marker=dict(
+ colorscale=self.cmapname,
+ showscale=True,
+ cmin=self._wavelength_color_transform(self.min_wavelength),
+ cmax=self._wavelength_color_transform(self.max_wavelength),
+ colorbar=dict(
+ title=dict(
+ text=f"Wavelength ({ANGSTROM_SYMBOL})
",
+ font_size=12,
+ ),
+ thickness=5,
+ tickvals=self._wavelength_color_transform(tickvals),
+ ticktext=ticktext,
+ outlinewidth=0,
+ ),
+ ),
+ hoverinfo="none",
+ ),
+ row=1,
+ col=2,
+ )
+
+ def display(self):
+ """
+ Parent function to draw the widget (calls other draw methods independently)
+ """
+ ### Create figure and set metadata
+ self.fig = make_subplots(
+ rows=1,
+ cols=2,
+ column_width=[0.3, 0.7],
+ specs=[[{}, {}]],
+ horizontal_spacing=0.14,
+ )
+
+ # Update fig layout
+ self.fig.update_layout(
+ title=(
+ f"Grotrian Diagram for {self.atomic_name} {int_to_roman(self.ion_number + 1)} "
+ f"(Shell: {self.shell if self.shell is not None else 'All'})"
+ ),
+ title_x=0.5,
+ plot_bgcolor="white",
+ autosize=False,
+ width=1000,
+ height=700,
+ margin=dict(),
+ showlegend=False,
+ )
+
+ # Remove ticklabels in the reference bars subplot
+ self.fig.update_yaxes(
+ showticklabels=False, fixedrange=True, row=1, col=1
+ )
+ self.fig.update_xaxes(
+ showticklabels=False, fixedrange=True, row=1, col=1
+ )
+
+ ### Create energy level platforms and width reference scale
+ self._draw_energy_levels()
+ self._draw_population_width_scale()
+
+ # Remove ticklabels from x-axis
+ self.fig.update_xaxes(
+ showticklabels=False, fixedrange=True, row=1, col=2
+ )
+ # Update y-ticks to reflect actual energy values
+ self.fig.update_yaxes(
+ title=dict(text="Energy (eV)", standoff=5),
+ range=[0, None],
+ tickmode="array",
+ tickvals=self.level_data.y_coord,
+ ticktext=[f"{energy:.2e}" for energy in self.level_data.energy],
+ fixedrange=True,
+ row=1,
+ col=2,
+ )
+
+ # Add separator between width scales
+ self.fig.add_shape(
+ type="line",
+ line=dict(color="grey", dash="dash"),
+ line_width=0.5,
+ x0=0.55,
+ x1=0.55,
+ y0=0,
+ y1=1,
+ xref="x1",
+ yref="y1",
+ )
+
+ ### Create transition lines and corresponding width and color scales
+ self._draw_transitions(is_excitation=True)
+ self._draw_transitions(is_excitation=False)
+ self._draw_transition_width_scale()
+ self._draw_transition_color_scale()
+
+ return self.fig
diff --git a/tardis/visualization/widgets/grotrian_mockup.ipynb b/tardis/visualization/widgets/grotrian_mockup.ipynb
new file mode 100644
index 00000000000..07e73cc9b7d
--- /dev/null
+++ b/tardis/visualization/widgets/grotrian_mockup.ipynb
@@ -0,0 +1,1434 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Iterations: 0/? [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Packets: 0/? [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from tardis.io.config_reader import Configuration\n",
+ "from tardis.simulation import Simulation\n",
+ "from tardis.plasma.standard_plasmas import assemble_plasma\n",
+ "from tardis.model import Radial1DModel\n",
+ "from tardis.io.atom_data import AtomData\n",
+ "from tardis.visualization.widgets.grotrian import GrotrianWidget\n",
+ "from tardis.io.config_internal import get_data_dir\n",
+ "from plotly.offline import init_notebook_mode\n",
+ "import plotly.io as pio\n",
+ "import os\n",
+ "\n",
+ "init_notebook_mode(connected=True)\n",
+ "pio.renderers.default = \"notebook_connected\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Abundances have not been normalized to 1. - normalizing\n",
+ "Zeta_data missing - replaced with 1s. Missing ions: [(12, 13), (14, 15), (16, 17), (18, 19), (20, 21)]\n",
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "divide by zero encountered in true_divide\n",
+ "\n",
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "invalid value encountered in true_divide\n",
+ "\n",
+ "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n",
+ "Zeta_data missing - replaced with 1s. Missing ions: [(12, 13), (14, 15), (16, 17), (18, 19), (20, 21)]\n",
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "divide by zero encountered in true_divide\n",
+ "\n",
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "invalid value encountered in true_divide\n",
+ "\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "66c4ca69e4a34c90a0d72175c1b623e2",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "TqdmHBox(children=(HTML(value='Iterations:', layout=Layout(width='6%')), FloatProgress(value=0.0, layout=Layou…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "ecc572232c574f1cb4f951a51cc7b067",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "TqdmHBox(children=(HTML(value='Packets: ', layout=Layout(width='6%')), FloatProgress(value=0.0, layout=Layou…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 9.93e+03 | \n",
+ " 1.01e+04 | \n",
+ " 0.4 | \n",
+ " 0.525 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 9.85e+03 | \n",
+ " 1.03e+04 | \n",
+ " 0.211 | \n",
+ " 0.196 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 9.78e+03 | \n",
+ " 1.02e+04 | \n",
+ " 0.143 | \n",
+ " 0.115 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 9.71e+03 | \n",
+ " 9.88e+03 | \n",
+ " 0.105 | \n",
+ " 0.0843 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "divide by zero encountered in true_divide\n",
+ "\n",
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "invalid value encountered in true_divide\n",
+ "\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "a649a405332c41c6b0f2069e25b282b9",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "VBox(children=(FigureWidget({\n",
+ " 'data': [{'type': 'scatter', 'uid': '0ae55c4d-f0da-4cbd-8121-c5c2bf1fea1b', …"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.01e+04 | \n",
+ " 1.1e+04 | \n",
+ " 0.525 | \n",
+ " 0.544 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.03e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.196 | \n",
+ " 0.204 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.02e+04 | \n",
+ " 1.08e+04 | \n",
+ " 0.115 | \n",
+ " 0.125 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 9.88e+03 | \n",
+ " 1.06e+04 | \n",
+ " 0.0843 | \n",
+ " 0.0914 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "divide by zero encountered in true_divide\n",
+ "\n",
+ "/Users/archil/Documents/tardis_ayushi/tardis/plasma/properties/radiative_properties.py:93: RuntimeWarning:\n",
+ "\n",
+ "invalid value encountered in true_divide\n",
+ "\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.1e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.544 | \n",
+ " 0.501 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.11e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.204 | \n",
+ " 0.185 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.08e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.125 | \n",
+ " 0.115 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.06e+04 | \n",
+ " 1.08e+04 | \n",
+ " 0.0914 | \n",
+ " 0.086 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.501 | \n",
+ " 0.487 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.14e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.185 | \n",
+ " 0.181 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.11e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.115 | \n",
+ " 0.112 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.08e+04 | \n",
+ " 1.08e+04 | \n",
+ " 0.086 | \n",
+ " 0.0819 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.487 | \n",
+ " 0.497 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.14e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.181 | \n",
+ " 0.178 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.11e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.112 | \n",
+ " 0.107 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.08e+04 | \n",
+ " 1.1e+04 | \n",
+ " 0.0819 | \n",
+ " 0.0779 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.497 | \n",
+ " 0.488 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.14e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.178 | \n",
+ " 0.184 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.107 | \n",
+ " 0.113 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.1e+04 | \n",
+ " 1.08e+04 | \n",
+ " 0.0779 | \n",
+ " 0.082 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.488 | \n",
+ " 0.496 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.14e+04 | \n",
+ " 1.15e+04 | \n",
+ " 0.184 | \n",
+ " 0.175 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.11e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.113 | \n",
+ " 0.109 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.08e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.082 | \n",
+ " 0.0816 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.496 | \n",
+ " 0.49 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.15e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.175 | \n",
+ " 0.174 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.12e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.109 | \n",
+ " 0.106 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0816 | \n",
+ " 0.0802 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.49 | \n",
+ " 0.49 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.15e+04 | \n",
+ " 0.174 | \n",
+ " 0.174 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.14e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.106 | \n",
+ " 0.104 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0802 | \n",
+ " 0.0799 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.49 | \n",
+ " 0.496 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.15e+04 | \n",
+ " 1.15e+04 | \n",
+ " 0.174 | \n",
+ " 0.177 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.104 | \n",
+ " 0.105 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0799 | \n",
+ " 0.081 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.11e+04 | \n",
+ " 0.496 | \n",
+ " 0.501 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.15e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.177 | \n",
+ " 0.174 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.14e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.105 | \n",
+ " 0.104 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.081 | \n",
+ " 0.0809 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.11e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.501 | \n",
+ " 0.485 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.174 | \n",
+ " 0.17 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.14e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.104 | \n",
+ " 0.105 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.1e+04 | \n",
+ " 0.0809 | \n",
+ " 0.0777 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.485 | \n",
+ " 0.483 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.17 | \n",
+ " 0.174 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.105 | \n",
+ " 0.105 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.1e+04 | \n",
+ " 1.1e+04 | \n",
+ " 0.0777 | \n",
+ " 0.0789 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.483 | \n",
+ " 0.48 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.174 | \n",
+ " 0.174 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.14e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.105 | \n",
+ " 0.105 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.1e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0789 | \n",
+ " 0.0789 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.48 | \n",
+ " 0.486 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.15e+04 | \n",
+ " 0.174 | \n",
+ " 0.18 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.105 | \n",
+ " 0.108 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0789 | \n",
+ " 0.0793 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.486 | \n",
+ " 0.486 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.15e+04 | \n",
+ " 1.15e+04 | \n",
+ " 0.18 | \n",
+ " 0.177 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.12e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.108 | \n",
+ " 0.107 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0793 | \n",
+ " 0.0811 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.486 | \n",
+ " 0.483 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.15e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.177 | \n",
+ " 0.17 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.107 | \n",
+ " 0.107 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0811 | \n",
+ " 0.0799 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.483 | \n",
+ " 0.482 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.16e+04 | \n",
+ " 0.17 | \n",
+ " 0.172 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.107 | \n",
+ " 0.105 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.09e+04 | \n",
+ " 0.0799 | \n",
+ " 0.0807 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Shell No. | t_rad | next_t_rad | w | next_w |
\n",
+ " \n",
+ " 0 | \n",
+ " 1.12e+04 | \n",
+ " 1.12e+04 | \n",
+ " 0.482 | \n",
+ " 0.478 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 1.16e+04 | \n",
+ " 1.14e+04 | \n",
+ " 0.172 | \n",
+ " 0.177 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 1.13e+04 | \n",
+ " 1.13e+04 | \n",
+ " 0.105 | \n",
+ " 0.107 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 1.09e+04 | \n",
+ " 1.08e+04 | \n",
+ " 0.0807 | \n",
+ " 0.0814 | \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "### Run Simulation\n",
+ "config = Configuration.from_yaml(\"../../../docs/tardis_example.yml\")\n",
+ "atom_data = AtomData.from_hdf(\n",
+ " os.path.join(get_data_dir(), \"kurucz_cd23_chianti_H_He.h5\")\n",
+ ")\n",
+ "model = Radial1DModel.from_config(config, atom_data=atom_data)\n",
+ "plasma = assemble_plasma(config, model, atom_data=atom_data)\n",
+ "sim = Simulation.from_config(config, model=model, plasma=plasma)\n",
+ "sim.run_convergence()\n",
+ "sim.run_final()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/archil/miniforge3/envs/tardis/lib/python3.8/site-packages/pandas/core/series.py:679: RuntimeWarning:\n",
+ "\n",
+ "divide by zero encountered in log\n",
+ "\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag = GrotrianWidget.from_simulation(sim)\n",
+ "diag.set_ion(2, 0) # He I\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Change color scale\n",
+ "diag.cmapname = \"viridis\"\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag.shell = 6\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag = GrotrianWidget.from_simulation(sim)\n",
+ "diag.set_ion(8, 0) # O I\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag.shell = 0\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag.y_scale = \"Log\"\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag = GrotrianWidget.from_simulation(sim)\n",
+ "diag.set_ion(14, 1) # Si II\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "diag.shell = 5\n",
+ "diag.display()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 6, 0, -1, ..., -1, -1, -1])"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sim.transport.last_line_interaction_shell_id"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.16"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
From 527e3e8cf60656a36444e634191d0b72ae9ade23 Mon Sep 17 00:00:00 2001
From: Andrew
Date: Tue, 18 Jul 2023 14:59:38 -0400
Subject: [PATCH 02/13] Rename NumbaPlasma to OpacityState (#2359)
Including places where it is referred to as numba_plasma
---
tardis/montecarlo/montecarlo_numba/base.py | 12 +--
.../montecarlo_numba/formal_integral.py | 14 +--
.../montecarlo_numba/interaction.py | 94 ++++++++++---------
.../montecarlo/montecarlo_numba/macro_atom.py | 18 ++--
.../montecarlo_numba/numba_interface.py | 12 +--
.../montecarlo/montecarlo_numba/opacities.py | 46 ++++-----
.../montecarlo/montecarlo_numba/r_packet.py | 8 +-
.../montecarlo_numba/single_packet_loop.py | 30 +++---
.../montecarlo_numba/tests/conftest.py | 6 +-
.../tests/test_cuda_formal_integral.py | 10 +-
.../tests/test_interaction.py | 12 +--
.../montecarlo_numba/tests/test_macro_atom.py | 8 +-
.../tests/test_numba_interface.py | 4 +-
.../montecarlo_numba/tests/test_packet.py | 6 +-
.../tests/test_single_packet_loop.py | 6 +-
.../montecarlo_numba/tests/test_vpacket.py | 28 +++---
tardis/montecarlo/montecarlo_numba/vpacket.py | 28 +++---
tardis/transport/r_packet_transport.py | 14 +--
18 files changed, 180 insertions(+), 176 deletions(-)
diff --git a/tardis/montecarlo/montecarlo_numba/base.py b/tardis/montecarlo/montecarlo_numba/base.py
index bf9fd3b847a..bb39dbf54e0 100644
--- a/tardis/montecarlo/montecarlo_numba/base.py
+++ b/tardis/montecarlo/montecarlo_numba/base.py
@@ -16,7 +16,7 @@
VPacketCollection,
RPacketTracker,
NumbaModel,
- numba_plasma_initialize,
+ opacity_state_initialize,
Estimators,
)
@@ -57,7 +57,7 @@ def montecarlo_radial1d(
numba_model = NumbaModel(
model.model_state.time_explosion.to("s").value,
)
- numba_plasma = numba_plasma_initialize(
+ opacity_state = opacity_state_initialize(
plasma, transport.line_interaction_type
)
estimators = Estimators(
@@ -95,7 +95,7 @@ def montecarlo_radial1d(
packet_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
transport.spectrum_frequency.value,
number_of_vpackets,
@@ -151,7 +151,7 @@ def montecarlo_main_loop(
packet_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
spectrum_frequency,
number_of_vpackets,
@@ -171,7 +171,7 @@ def montecarlo_main_loop(
packet_collection : PacketCollection
numba_radial_1d_geometry : NumbaRadial1DGeometry
numba_model : NumbaModel
- numba_plasma : NumbaPlasma
+ opacity_state : OpacityState
estimators : NumbaEstimators
spectrum_frequency : astropy.units.Quantity
frequency binspas
@@ -280,7 +280,7 @@ def montecarlo_main_loop(
r_packet,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
vpacket_collection,
rpacket_tracker,
diff --git a/tardis/montecarlo/montecarlo_numba/formal_integral.py b/tardis/montecarlo/montecarlo_numba/formal_integral.py
index 983e927479a..6e2db7bbdde 100644
--- a/tardis/montecarlo/montecarlo_numba/formal_integral.py
+++ b/tardis/montecarlo/montecarlo_numba/formal_integral.py
@@ -14,9 +14,9 @@
from tardis.montecarlo.montecarlo_numba.numba_config import SIGMA_THOMSON
from tardis.montecarlo.montecarlo_numba import njit_dict, njit_dict_no_parallel
from tardis.montecarlo.montecarlo_numba.numba_interface import (
- numba_plasma_initialize,
+ opacity_state_initialize,
NumbaModel,
- NumbaPlasma,
+ OpacityState,
)
from tardis.montecarlo.montecarlo_numba.formal_integral_cuda import (
CudaFormalIntegrator,
@@ -211,7 +211,7 @@ def numba_formal_integral(
# integrator_spec = [
# ("model", NumbaModel.class_type.instance_type),
-# ("plasma", NumbaPlasma.class_type.instance_type),
+# ("plasma", OpacityState.class_type.instance_type),
# ("points", int64),
# ]
@@ -285,7 +285,7 @@ def __init__(self, model, plasma, transport, points=1000):
self.transport = transport
self.points = points
if plasma:
- self.plasma = numba_plasma_initialize(
+ self.plasma = opacity_state_initialize(
plasma, transport.line_interaction_type
)
self.atomic_data = plasma.atomic_data
@@ -306,21 +306,21 @@ def generate_numba_objects(self):
self.numba_model = NumbaModel(
self.model.time_explosion.cgs.value,
)
- self.numba_plasma = numba_plasma_initialize(
+ self.opacity_state = opacity_state_initialize(
self.original_plasma, self.transport.line_interaction_type
)
if self.transport.use_gpu:
self.integrator = CudaFormalIntegrator(
self.numba_radial_1d_geometry,
self.numba_model,
- self.numba_plasma,
+ self.opacity_state,
self.points,
)
else:
self.integrator = NumbaFormalIntegrator(
self.numba_radial_1d_geometry,
self.numba_model,
- self.numba_plasma,
+ self.opacity_state,
self.points,
)
diff --git a/tardis/montecarlo/montecarlo_numba/interaction.py b/tardis/montecarlo/montecarlo_numba/interaction.py
index aaf7225ab2b..277ddafa57d 100644
--- a/tardis/montecarlo/montecarlo_numba/interaction.py
+++ b/tardis/montecarlo/montecarlo_numba/interaction.py
@@ -30,7 +30,7 @@
@njit(**njit_dict_no_parallel)
def determine_bf_macro_activation_idx(
- numba_plasma, nu, chi_bf_contributions, active_continua
+ opacity_state, nu, chi_bf_contributions, active_continua
):
"""
Determine the macro atom activation level after bound-free absorption.
@@ -56,22 +56,22 @@ def determine_bf_macro_activation_idx(
# Perform a MC experiment to determine whether thermal or
# ionization energy is created
- nu_threshold = numba_plasma.photo_ion_nu_threshold_mins[continuum_id]
+ nu_threshold = opacity_state.photo_ion_nu_threshold_mins[continuum_id]
fraction_ionization = nu_threshold / nu
if (
np.random.random() < fraction_ionization
): # Create ionization energy (i-packet)
- destination_level_idx = numba_plasma.photo_ion_activation_idx[
+ destination_level_idx = opacity_state.photo_ion_activation_idx[
continuum_id
]
else: # Create thermal energy (k-packet)
- destination_level_idx = numba_plasma.k_packet_idx
+ destination_level_idx = opacity_state.k_packet_idx
return destination_level_idx
@njit(**njit_dict_no_parallel)
def determine_continuum_macro_activation_idx(
- numba_plasma, nu, chi_bf, chi_ff, chi_bf_contributions, active_continua
+ opacity_state, nu, chi_bf, chi_ff, chi_bf_contributions, active_continua
):
"""
Determine the macro atom activation level after a continuum absorption.
@@ -100,15 +100,15 @@ def determine_continuum_macro_activation_idx(
# scattering event happens and need one less RNG call.
if np.random.random() < fraction_bf: # Bound-free absorption
destination_level_idx = determine_bf_macro_activation_idx(
- numba_plasma, nu, chi_bf_contributions, active_continua
+ opacity_state, nu, chi_bf_contributions, active_continua
)
else: # Free-free absorption (i.e. k-packet creation)
- destination_level_idx = numba_plasma.k_packet_idx
+ destination_level_idx = opacity_state.k_packet_idx
return destination_level_idx
@njit(**njit_dict_no_parallel)
-def sample_nu_free_free(numba_plasma, shell):
+def sample_nu_free_free(opacity_state, shell):
"""
Attributes
----------
@@ -116,13 +116,13 @@ def sample_nu_free_free(numba_plasma, shell):
Frequency of the free-free emission process
"""
- temperature = numba_plasma.t_electrons[shell]
+ temperature = opacity_state.t_electrons[shell]
zrand = np.random.random()
return -K_B * temperature / H * np.log(zrand)
@njit(**njit_dict_no_parallel)
-def sample_nu_free_bound(numba_plasma, shell, continuum_id):
+def sample_nu_free_bound(opacity_state, shell, continuum_id):
"""
Attributes
----------
@@ -130,10 +130,10 @@ def sample_nu_free_bound(numba_plasma, shell, continuum_id):
Frequency of the free-bounds emission process
"""
- start = numba_plasma.photo_ion_block_references[continuum_id]
- end = numba_plasma.photo_ion_block_references[continuum_id + 1]
- phot_nus_block = numba_plasma.phot_nus[start:end]
- em = numba_plasma.emissivities[start:end, shell]
+ start = opacity_state.photo_ion_block_references[continuum_id]
+ end = opacity_state.photo_ion_block_references[continuum_id + 1]
+ phot_nus_block = opacity_state.phot_nus[start:end]
+ em = opacity_state.emissivities[start:end, shell]
zrand = np.random.random()
idx = np.searchsorted(em, zrand, side="right")
@@ -147,7 +147,7 @@ def sample_nu_free_bound(numba_plasma, shell, continuum_id):
def continuum_event(
r_packet,
time_explosion,
- numba_plasma,
+ opacity_state,
chi_bf_tot,
chi_ff,
chi_bf_contributions,
@@ -160,7 +160,7 @@ def continuum_event(
----------
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
time_explosion : float
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
continuum : tardis.montecarlo.montecarlo_numba.numba_interface.Continuum
"""
old_doppler_factor = get_doppler_factor(
@@ -179,7 +179,7 @@ def continuum_event(
r_packet.nu = comov_nu * inverse_doppler_factor
destination_level_idx = determine_continuum_macro_activation_idx(
- numba_plasma,
+ opacity_state,
comov_nu,
chi_bf_tot,
chi_ff,
@@ -188,13 +188,13 @@ def continuum_event(
)
macro_atom_event(
- destination_level_idx, r_packet, time_explosion, numba_plasma
+ destination_level_idx, r_packet, time_explosion, opacity_state
)
@njit(**njit_dict_no_parallel)
def macro_atom_event(
- destination_level_idx, r_packet, time_explosion, numba_plasma
+ destination_level_idx, r_packet, time_explosion, opacity_state
):
"""
Macroatom event handler - run the macroatom and handle the result
@@ -204,31 +204,31 @@ def macro_atom_event(
destination_level_idx : int
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
time_explosion : float
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
"""
transition_id, transition_type = macro_atom(
- destination_level_idx, r_packet.current_shell_id, numba_plasma
+ destination_level_idx, r_packet.current_shell_id, opacity_state
)
if (
montecarlo_configuration.CONTINUUM_PROCESSES_ENABLED
and transition_type == MacroAtomTransitionType.FF_EMISSION
):
- free_free_emission(r_packet, time_explosion, numba_plasma)
+ free_free_emission(r_packet, time_explosion, opacity_state)
elif (
montecarlo_configuration.CONTINUUM_PROCESSES_ENABLED
and transition_type == MacroAtomTransitionType.BF_EMISSION
):
bound_free_emission(
- r_packet, time_explosion, numba_plasma, transition_id
+ r_packet, time_explosion, opacity_state, transition_id
)
elif (
montecarlo_configuration.CONTINUUM_PROCESSES_ENABLED
and transition_type == MacroAtomTransitionType.BF_COOLING
):
- bf_cooling(r_packet, time_explosion, numba_plasma)
+ bf_cooling(r_packet, time_explosion, opacity_state)
elif (
montecarlo_configuration.CONTINUUM_PROCESSES_ENABLED
@@ -237,13 +237,13 @@ def macro_atom_event(
adiabatic_cooling(r_packet)
elif transition_type == MacroAtomTransitionType.BB_EMISSION:
- line_emission(r_packet, transition_id, time_explosion, numba_plasma)
+ line_emission(r_packet, transition_id, time_explosion, opacity_state)
else:
raise Exception("No Interaction Found!")
@njit(**njit_dict_no_parallel)
-def bf_cooling(r_packet, time_explosion, numba_plasma):
+def bf_cooling(r_packet, time_explosion, opacity_state):
"""
Bound-Free Cooling - Determine and run bf emission from cooling
@@ -251,10 +251,10 @@ def bf_cooling(r_packet, time_explosion, numba_plasma):
----------
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
time_explosion : float
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
"""
- fb_cooling_prob = numba_plasma.p_fb_deactivation[
+ fb_cooling_prob = opacity_state.p_fb_deactivation[
:, r_packet.current_shell_id
]
p = fb_cooling_prob[0]
@@ -264,7 +264,7 @@ def bf_cooling(r_packet, time_explosion, numba_plasma):
i += 1
p += fb_cooling_prob[i]
continuum_idx = i
- bound_free_emission(r_packet, time_explosion, numba_plasma, continuum_idx)
+ bound_free_emission(r_packet, time_explosion, opacity_state, continuum_idx)
@njit(**njit_dict_no_parallel)
@@ -301,7 +301,7 @@ def get_current_line_id(nu, line_list):
@njit(**njit_dict_no_parallel)
-def free_free_emission(r_packet, time_explosion, numba_plasma):
+def free_free_emission(r_packet, time_explosion, opacity_state):
"""
Free-Free emission - set the frequency from electron-ion interaction
@@ -309,15 +309,15 @@ def free_free_emission(r_packet, time_explosion, numba_plasma):
----------
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
time_explosion : float
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
"""
inverse_doppler_factor = get_inverse_doppler_factor(
r_packet.r, r_packet.mu, time_explosion
)
- comov_nu = sample_nu_free_free(numba_plasma, r_packet.current_shell_id)
+ comov_nu = sample_nu_free_free(opacity_state, r_packet.current_shell_id)
r_packet.nu = comov_nu * inverse_doppler_factor
- current_line_id = get_current_line_id(comov_nu, numba_plasma.line_list_nu)
+ current_line_id = get_current_line_id(comov_nu, opacity_state.line_list_nu)
r_packet.next_line_id = current_line_id
if montecarlo_configuration.full_relativity:
@@ -327,7 +327,7 @@ def free_free_emission(r_packet, time_explosion, numba_plasma):
@njit(**njit_dict_no_parallel)
-def bound_free_emission(r_packet, time_explosion, numba_plasma, continuum_id):
+def bound_free_emission(r_packet, time_explosion, opacity_state, continuum_id):
"""
Bound-Free emission - set the frequency from photo-ionization
@@ -335,7 +335,7 @@ def bound_free_emission(r_packet, time_explosion, numba_plasma, continuum_id):
----------
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
time_explosion : float
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
continuum_id : int
"""
@@ -344,10 +344,10 @@ def bound_free_emission(r_packet, time_explosion, numba_plasma, continuum_id):
)
comov_nu = sample_nu_free_bound(
- numba_plasma, r_packet.current_shell_id, continuum_id
+ opacity_state, r_packet.current_shell_id, continuum_id
)
r_packet.nu = comov_nu * inverse_doppler_factor
- current_line_id = get_current_line_id(comov_nu, numba_plasma.line_list_nu)
+ current_line_id = get_current_line_id(comov_nu, opacity_state.line_list_nu)
r_packet.next_line_id = current_line_id
if montecarlo_configuration.full_relativity:
@@ -394,7 +394,9 @@ def thomson_scatter(r_packet, time_explosion):
@njit(**njit_dict_no_parallel)
-def line_scatter(r_packet, time_explosion, line_interaction_type, numba_plasma):
+def line_scatter(
+ r_packet, time_explosion, line_interaction_type, opacity_state
+):
"""
Line scatter function that handles the scattering itself, including new angle drawn, and calculating nu out using macro atom
@@ -403,7 +405,7 @@ def line_scatter(r_packet, time_explosion, line_interaction_type, numba_plasma):
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
time_explosion : float
line_interaction_type : enum
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
"""
old_doppler_factor = get_doppler_factor(
@@ -420,21 +422,21 @@ def line_scatter(r_packet, time_explosion, line_interaction_type, numba_plasma):
if line_interaction_type == LineInteractionType.SCATTER:
line_emission(
- r_packet, r_packet.next_line_id, time_explosion, numba_plasma
+ r_packet, r_packet.next_line_id, time_explosion, opacity_state
)
else: # includes both macro atom and downbranch - encoded in the transition probabilities
comov_nu = r_packet.nu * old_doppler_factor # Is this necessary?
r_packet.nu = comov_nu * inverse_new_doppler_factor
- activation_level_id = numba_plasma.line2macro_level_upper[
+ activation_level_id = opacity_state.line2macro_level_upper[
r_packet.next_line_id
]
macro_atom_event(
- activation_level_id, r_packet, time_explosion, numba_plasma
+ activation_level_id, r_packet, time_explosion, opacity_state
)
@njit(**njit_dict_no_parallel)
-def line_emission(r_packet, emission_line_id, time_explosion, numba_plasma):
+def line_emission(r_packet, emission_line_id, time_explosion, opacity_state):
"""
Sets the frequency of the RPacket properly given the emission channel
@@ -443,7 +445,7 @@ def line_emission(r_packet, emission_line_id, time_explosion, numba_plasma):
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
emission_line_id : int
time_explosion : float
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
"""
r_packet.last_line_interaction_out_id = emission_line_id
@@ -455,10 +457,10 @@ def line_emission(r_packet, emission_line_id, time_explosion, numba_plasma):
r_packet.r, r_packet.mu, time_explosion
)
r_packet.nu = (
- numba_plasma.line_list_nu[emission_line_id] * inverse_doppler_factor
+ opacity_state.line_list_nu[emission_line_id] * inverse_doppler_factor
)
r_packet.next_line_id = emission_line_id + 1
- nu_line = numba_plasma.line_list_nu[emission_line_id]
+ nu_line = opacity_state.line_list_nu[emission_line_id]
if montecarlo_configuration.full_relativity:
r_packet.mu = angle_aberration_CMF_to_LF(
diff --git a/tardis/montecarlo/montecarlo_numba/macro_atom.py b/tardis/montecarlo/montecarlo_numba/macro_atom.py
index 19916c60b1f..d44472a4161 100644
--- a/tardis/montecarlo/montecarlo_numba/macro_atom.py
+++ b/tardis/montecarlo/montecarlo_numba/macro_atom.py
@@ -21,14 +21,14 @@ class MacroAtomTransitionType(IntEnum):
@njit(**njit_dict_no_parallel)
-def macro_atom(activation_level_id, current_shell_id, numba_plasma):
+def macro_atom(activation_level_id, current_shell_id, opacity_state):
"""
Parameters
----------
activation_level_id : int
Activation level idx of the macro atom.
current_shell_id : int
- numba_plasma : tardis.montecarlo.numba_interface.numba_plasma.NumbaPlasma
+ opacity_state : tardis.montecarlo.numba_interface.opacity_state.OpacityState
Returns
-------
@@ -38,23 +38,25 @@ def macro_atom(activation_level_id, current_shell_id, numba_plasma):
probability = 0.0
probability_event = np.random.random()
- block_start = numba_plasma.macro_block_references[activation_level_id]
- block_end = numba_plasma.macro_block_references[activation_level_id + 1]
+ block_start = opacity_state.macro_block_references[activation_level_id]
+ block_end = opacity_state.macro_block_references[
+ activation_level_id + 1
+ ]
# looping through the transition probabilities
for transition_id in range(block_start, block_end):
- transition_probability = numba_plasma.transition_probabilities[
+ transition_probability = opacity_state.transition_probabilities[
transition_id, current_shell_id
]
probability += transition_probability
if probability > probability_event:
- activation_level_id = numba_plasma.destination_level_id[
+ activation_level_id = opacity_state.destination_level_id[
transition_id
]
- current_transition_type = numba_plasma.transition_type[
+ current_transition_type = opacity_state.transition_type[
transition_id
]
break
@@ -68,6 +70,6 @@ def macro_atom(activation_level_id, current_shell_id, numba_plasma):
# current_transition_type = MacroAtomTransitionType(current_transition_type)
return (
- numba_plasma.transition_line_id[transition_id],
+ opacity_state.transition_line_id[transition_id],
current_transition_type,
)
diff --git a/tardis/montecarlo/montecarlo_numba/numba_interface.py b/tardis/montecarlo/montecarlo_numba/numba_interface.py
index ee12a3ac4fe..848ba3cfe10 100644
--- a/tardis/montecarlo/montecarlo_numba/numba_interface.py
+++ b/tardis/montecarlo/montecarlo_numba/numba_interface.py
@@ -32,7 +32,7 @@ def __init__(self, time_explosion):
self.time_explosion = time_explosion
-numba_plasma_spec = [
+opacity_state_spec = [
("electron_density", float64[:]),
("t_electrons", float64[:]),
("line_list_nu", float64[:]),
@@ -58,8 +58,8 @@ def __init__(self, time_explosion):
]
-@jitclass(numba_plasma_spec)
-class NumbaPlasma(object):
+@jitclass(opacity_state_spec)
+class OpacityState(object):
def __init__(
self,
electron_density,
@@ -135,9 +135,9 @@ def __init__(
self.k_packet_idx = k_packet_idx
-def numba_plasma_initialize(plasma, line_interaction_type):
+def opacity_state_initialize(plasma, line_interaction_type):
"""
- Initialize the NumbaPlasma object and copy over the data over from TARDIS Plasma
+ Initialize the OpacityState object and copy over the data over from TARDIS Plasma
Parameters
----------
@@ -239,7 +239,7 @@ def numba_plasma_initialize(plasma, line_interaction_type):
photo_ion_activation_idx = np.zeros(0, dtype=np.int64)
k_packet_idx = np.int64(-1)
- return NumbaPlasma(
+ return OpacityState(
electron_densities,
t_electrons,
line_list_nu,
diff --git a/tardis/montecarlo/montecarlo_numba/opacities.py b/tardis/montecarlo/montecarlo_numba/opacities.py
index 54279aad6db..e043b280c06 100644
--- a/tardis/montecarlo/montecarlo_numba/opacities.py
+++ b/tardis/montecarlo/montecarlo_numba/opacities.py
@@ -30,13 +30,13 @@
@njit(**njit_dict_no_parallel)
-def chi_electron_calculator(numba_plasma, nu, shell):
+def chi_electron_calculator(opacity_state, nu, shell):
"""
Calculate chi for Thomson scattering
Parameters
----------
- numba_plasma : NumbaPlasma
+ opacity_state : OpacityState
nu : float
Comoving frequency of the r-packet.
shell : int
@@ -47,7 +47,7 @@ def chi_electron_calculator(numba_plasma, nu, shell):
numpy.ndarray, dtype int
Continuum ids for which absorption is possible for frequency `nu`.
"""
- return numba_plasma.electron_density[shell] * SIGMA_THOMSON
+ return opacity_state.electron_density[shell] * SIGMA_THOMSON
@njit(**njit_dict_no_parallel)
@@ -69,13 +69,13 @@ def calculate_tau_electron(electron_density, distance):
@njit(**njit_dict_no_parallel)
-def get_current_bound_free_continua(numba_plasma, nu):
+def get_current_bound_free_continua(opacity_state, nu):
"""
Determine bound-free continua for which absorption is possible.
Parameters
----------
- numba_plasma : NumbaPlasma
+ opacity_state : OpacityState
nu : float
Comoving frequency of the r-packet.
@@ -84,14 +84,14 @@ def get_current_bound_free_continua(numba_plasma, nu):
numpy.ndarray, dtype int
Continuum ids for which absorption is possible for frequency `nu`.
"""
- nu_mins = numba_plasma.photo_ion_nu_threshold_mins
- nu_maxs = numba_plasma.photo_ion_nu_threshold_maxs
+ nu_mins = opacity_state.photo_ion_nu_threshold_mins
+ nu_maxs = opacity_state.photo_ion_nu_threshold_maxs
current_continua = np.where(np.logical_and(nu >= nu_mins, nu <= nu_maxs))[0]
return current_continua
@njit(**njit_dict_no_parallel)
-def chi_bf_interpolator(numba_plasma, nu, shell):
+def chi_bf_interpolator(opacity_state, nu, shell):
"""
Interpolate the bound-free opacity.
@@ -100,7 +100,7 @@ def chi_bf_interpolator(numba_plasma, nu, shell):
Parameters
----------
- numba_plasma : NumbaPlasma
+ opacity_state : OpacityState
nu : float, dtype float
Comoving frequency of the r-packet.
shell : int, dtype float
@@ -120,23 +120,23 @@ def chi_bf_interpolator(numba_plasma, nu, shell):
which absorption is possible for frequency `nu`.
"""
- current_continua = get_current_bound_free_continua(numba_plasma, nu)
+ current_continua = get_current_bound_free_continua(opacity_state, nu)
chi_bfs = np.zeros(len(current_continua))
x_sect_bfs = np.zeros(len(current_continua))
for i, continuum_id in enumerate(current_continua):
- start = numba_plasma.photo_ion_block_references[continuum_id]
- end = numba_plasma.photo_ion_block_references[continuum_id + 1]
- phot_nus_continuum = numba_plasma.phot_nus[start:end]
+ start = opacity_state.photo_ion_block_references[continuum_id]
+ end = opacity_state.photo_ion_block_references[continuum_id + 1]
+ phot_nus_continuum = opacity_state.phot_nus[start:end]
nu_idx = np.searchsorted(phot_nus_continuum, nu)
interval = phot_nus_continuum[nu_idx] - phot_nus_continuum[nu_idx - 1]
high_weight = nu - phot_nus_continuum[nu_idx - 1]
low_weight = phot_nus_continuum[nu_idx] - nu
- chi_bfs_continuum = numba_plasma.chi_bf[start:end, shell]
+ chi_bfs_continuum = opacity_state.chi_bf[start:end, shell]
chi_bfs[i] = (
chi_bfs_continuum[nu_idx] * high_weight
+ chi_bfs_continuum[nu_idx - 1] * low_weight
) / interval
- x_sect_bfs_continuum = numba_plasma.x_sect[start:end]
+ x_sect_bfs_continuum = opacity_state.x_sect[start:end]
x_sect_bfs[i] = (
x_sect_bfs_continuum[nu_idx] * high_weight
+ x_sect_bfs_continuum[nu_idx - 1] * low_weight
@@ -164,11 +164,11 @@ def chi_bf_interpolator(numba_plasma, nu, shell):
@njit(**njit_dict_no_parallel)
-def chi_ff_calculator(numba_plasma, nu, shell):
+def chi_ff_calculator(opacity_state, nu, shell):
"""
Attributes
----------
- numba_plasma : NumbaPlasma
+ opacity_state : OpacityState
nu : float64
Comoving frequency of the r_packet
shell : int64
@@ -181,19 +181,19 @@ def chi_ff_calculator(numba_plasma, nu, shell):
"""
chi_ff = (
FF_OPAC_CONST
- * numba_plasma.ff_opacity_factor[shell]
+ * opacity_state.ff_opacity_factor[shell]
/ nu**3
- * (1 - np.exp(-H * nu / (K_B * numba_plasma.t_electrons[shell])))
+ * (1 - np.exp(-H * nu / (K_B * opacity_state.t_electrons[shell])))
)
return chi_ff
@njit(**njit_dict_no_parallel)
-def chi_continuum_calculator(numba_plasma, nu, shell):
+def chi_continuum_calculator(opacity_state, nu, shell):
"""
Attributes
----------
- numba_plasma : NumbaPlasma
+ opacity_state : OpacityState
nu : float64
Comoving frequency of the r_packet
shell : int64
@@ -220,8 +220,8 @@ def chi_continuum_calculator(numba_plasma, nu, shell):
chi_bf_contributions,
current_continua,
x_sect_bfs,
- ) = chi_bf_interpolator(numba_plasma, nu, shell)
- chi_ff = chi_ff_calculator(numba_plasma, nu, shell)
+ ) = chi_bf_interpolator(opacity_state, nu, shell)
+ chi_ff = chi_ff_calculator(opacity_state, nu, shell)
return (
chi_bf_tot,
chi_bf_contributions,
diff --git a/tardis/montecarlo/montecarlo_numba/r_packet.py b/tardis/montecarlo/montecarlo_numba/r_packet.py
index 719e9193a14..a6d927e5eee 100644
--- a/tardis/montecarlo/montecarlo_numba/r_packet.py
+++ b/tardis/montecarlo/montecarlo_numba/r_packet.py
@@ -64,16 +64,16 @@ def __init__(self, r, mu, nu, energy, seed, index=0):
self.last_line_interaction_out_id = -1
self.last_line_interaction_shell_id = -1
- def initialize_line_id(self, numba_plasma, numba_model):
- inverse_line_list_nu = numba_plasma.line_list_nu[::-1]
+ def initialize_line_id(self, opacity_state, numba_model):
+ inverse_line_list_nu = opacity_state.line_list_nu[::-1]
doppler_factor = get_doppler_factor(
self.r, self.mu, numba_model.time_explosion
)
comov_nu = self.nu * doppler_factor
- next_line_id = len(numba_plasma.line_list_nu) - np.searchsorted(
+ next_line_id = len(opacity_state.line_list_nu) - np.searchsorted(
inverse_line_list_nu, comov_nu
)
- if next_line_id == len(numba_plasma.line_list_nu):
+ if next_line_id == len(opacity_state.line_list_nu):
next_line_id -= 1
self.next_line_id = next_line_id
diff --git a/tardis/montecarlo/montecarlo_numba/single_packet_loop.py b/tardis/montecarlo/montecarlo_numba/single_packet_loop.py
index 2c8ed42feae..71d319590ec 100644
--- a/tardis/montecarlo/montecarlo_numba/single_packet_loop.py
+++ b/tardis/montecarlo/montecarlo_numba/single_packet_loop.py
@@ -42,7 +42,7 @@ def single_packet_loop(
r_packet,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
vpacket_collection,
rpacket_tracker,
@@ -53,7 +53,7 @@ def single_packet_loop(
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
numba_radial_1d_geometry : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaRadial1DGeometry
numba_model : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaModel
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
estimators : tardis.montecarlo.montecarlo_numba.numba_interface.Estimators
vpacket_collection : tardis.montecarlo.montecarlo_numba.numba_interface.VPacketCollection
rpacket_collection : tardis.montecarlo.montecarlo_numba.numba_interface.RPacketCollection
@@ -70,14 +70,14 @@ def single_packet_loop(
set_packet_props_full_relativity(r_packet, numba_model)
else:
set_packet_props_partial_relativity(r_packet, numba_model)
- r_packet.initialize_line_id(numba_plasma, numba_model)
+ r_packet.initialize_line_id(opacity_state, numba_model)
trace_vpacket_volley(
r_packet,
vpacket_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
)
if montecarlo_configuration.RPACKET_TRACKING:
@@ -92,7 +92,7 @@ def single_packet_loop(
)
comov_nu = r_packet.nu * doppler_factor
chi_e = chi_electron_calculator(
- numba_plasma, comov_nu, r_packet.current_shell_id
+ opacity_state, comov_nu, r_packet.current_shell_id
)
if montecarlo_configuration.CONTINUUM_PROCESSES_ENABLED:
(
@@ -102,7 +102,7 @@ def single_packet_loop(
x_sect_bfs,
chi_ff,
) = chi_continuum_calculator(
- numba_plasma, comov_nu, r_packet.current_shell_id
+ opacity_state, comov_nu, r_packet.current_shell_id
)
chi_continuum = chi_e + chi_bf_tot + chi_ff
@@ -113,7 +113,7 @@ def single_packet_loop(
r_packet,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
chi_continuum,
escat_prob,
@@ -124,10 +124,10 @@ def single_packet_loop(
r_packet.current_shell_id,
distance,
estimators,
- numba_plasma.t_electrons[r_packet.current_shell_id],
+ opacity_state.t_electrons[r_packet.current_shell_id],
x_sect_bfs,
current_continua,
- numba_plasma.bf_threshold_list_nu,
+ opacity_state.bf_threshold_list_nu,
)
else:
escat_prob = 1.0
@@ -138,7 +138,7 @@ def single_packet_loop(
r_packet,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
chi_continuum,
escat_prob,
@@ -163,14 +163,14 @@ def single_packet_loop(
r_packet,
numba_model.time_explosion,
line_interaction_type,
- numba_plasma,
+ opacity_state,
)
trace_vpacket_volley(
r_packet,
vpacket_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
)
elif interaction_type == InteractionType.ESCATTERING:
@@ -186,7 +186,7 @@ def single_packet_loop(
vpacket_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
)
elif (
montecarlo_configuration.CONTINUUM_PROCESSES_ENABLED
@@ -199,7 +199,7 @@ def single_packet_loop(
continuum_event(
r_packet,
numba_model.time_explosion,
- numba_plasma,
+ opacity_state,
chi_bf_tot,
chi_ff,
chi_bf_contributions,
@@ -211,7 +211,7 @@ def single_packet_loop(
vpacket_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
)
else:
pass
diff --git a/tardis/montecarlo/montecarlo_numba/tests/conftest.py b/tardis/montecarlo/montecarlo_numba/tests/conftest.py
index 45c78ac791c..6b2c92b5308 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/conftest.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/conftest.py
@@ -10,7 +10,7 @@
from tardis.montecarlo.montecarlo_numba.numba_interface import (
- numba_plasma_initialize,
+ opacity_state_initialize,
NumbaModel,
Estimators,
VPacketCollection,
@@ -26,8 +26,8 @@ def nb_simulation_verysimple(config_verysimple, atomic_dataset):
@pytest.fixture(scope="package")
-def verysimple_numba_plasma(nb_simulation_verysimple):
- return numba_plasma_initialize(
+def verysimple_opacity_state(nb_simulation_verysimple):
+ return opacity_state_initialize(
nb_simulation_verysimple.plasma, line_interaction_type="macroatom"
)
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_cuda_formal_integral.py b/tardis/montecarlo/montecarlo_numba/tests/test_cuda_formal_integral.py
index 7a76a1c95c9..d3412ff1919 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_cuda_formal_integral.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_cuda_formal_integral.py
@@ -258,7 +258,7 @@ def test_calculate_p_values(N):
not GPUs_available, reason="No GPU is available to test CUDA function"
)
@pytest.mark.parametrize("nu_insert", np.linspace(3e12, 3e16, 10))
-def test_line_search_cuda(nu_insert, verysimple_numba_plasma):
+def test_line_search_cuda(nu_insert, verysimple_opacity_state):
"""
Initializes the test of the cuda version
against the numba implementation of the
@@ -266,7 +266,7 @@ def test_line_search_cuda(nu_insert, verysimple_numba_plasma):
"""
actual = np.zeros(1)
expected = np.zeros(1)
- line_list_nu = verysimple_numba_plasma.line_list_nu
+ line_list_nu = verysimple_opacity_state.line_list_nu
expected[0] = formal_integral_numba.line_search(
line_list_nu, nu_insert, len(line_list_nu)
@@ -295,7 +295,7 @@ def line_search_cuda_caller(line_list_nu, nu_insert, actual):
@pytest.mark.parametrize(
"nu_insert", [*np.linspace(3e12, 3e16, 10), 288786721666522.1]
)
-def test_reverse_binary_search(nu_insert, verysimple_numba_plasma):
+def test_reverse_binary_search(nu_insert, verysimple_opacity_state):
"""
Initializes the test of the cuda version
against the numba implementation of the
@@ -304,7 +304,7 @@ def test_reverse_binary_search(nu_insert, verysimple_numba_plasma):
"""
actual = np.zeros(1)
expected = np.zeros(1)
- line_list_nu = verysimple_numba_plasma.line_list_nu
+ line_list_nu = verysimple_opacity_state.line_list_nu
imin = 0
imax = len(line_list_nu) - 1
@@ -382,7 +382,7 @@ def test_full_formal_integral(
formal_integrator_numba.integrator = NumbaFormalIntegrator(
formal_integrator_numba.numba_radial_1d_geometry,
formal_integrator_numba.numba_model,
- formal_integrator_numba.numba_plasma,
+ formal_integrator_numba.opacity_state,
formal_integrator_numba.points,
)
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_interaction.py b/tardis/montecarlo/montecarlo_numba/tests/test_interaction.py
index bcdaa8f1736..969292de543 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_interaction.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_interaction.py
@@ -32,16 +32,16 @@ def test_line_scatter(
line_interaction_type,
packet,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
):
init_mu = packet.mu
init_nu = packet.nu
init_energy = packet.energy
- packet.initialize_line_id(verysimple_numba_plasma, verysimple_numba_model)
+ packet.initialize_line_id(verysimple_opacity_state, verysimple_numba_model)
time_explosion = verysimple_numba_model.time_explosion
interaction.line_scatter(
- packet, time_explosion, line_interaction_type, verysimple_numba_plasma
+ packet, time_explosion, line_interaction_type, verysimple_opacity_state
)
assert np.abs(packet.mu - init_mu) > 1e-7
@@ -82,19 +82,19 @@ def test_line_scatter(
def test_line_emission(
packet,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
test_packet,
expected,
):
emission_line_id = test_packet["emission_line_id"]
packet.mu = test_packet["mu"]
packet.energy = test_packet["energy"]
- packet.initialize_line_id(verysimple_numba_plasma, verysimple_numba_model)
+ packet.initialize_line_id(verysimple_opacity_state, verysimple_numba_model)
time_explosion = verysimple_numba_model.time_explosion
interaction.line_emission(
- packet, emission_line_id, time_explosion, verysimple_numba_plasma
+ packet, emission_line_id, time_explosion, verysimple_opacity_state
)
assert packet.next_line_id == emission_line_id + 1
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_macro_atom.py b/tardis/montecarlo/montecarlo_numba/tests/test_macro_atom.py
index 752b2dba81d..e2ab2a016d0 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_macro_atom.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_macro_atom.py
@@ -9,7 +9,7 @@
)
def test_macro_atom(
static_packet,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
verysimple_numba_model,
set_seed_fixture,
seed,
@@ -17,15 +17,15 @@ def test_macro_atom(
):
set_seed_fixture(seed)
static_packet.initialize_line_id(
- verysimple_numba_plasma, verysimple_numba_model
+ verysimple_opacity_state, verysimple_numba_model
)
- activation_level_id = verysimple_numba_plasma.line2macro_level_upper[
+ activation_level_id = verysimple_opacity_state.line2macro_level_upper[
static_packet.next_line_id
]
result, transition_type = macro_atom.macro_atom(
activation_level_id,
static_packet.current_shell_id,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
)
assert result == expected
assert transition_type == -1 # line transition
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_numba_interface.py b/tardis/montecarlo/montecarlo_numba/tests/test_numba_interface.py
index 232866600ff..b11b9315912 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_numba_interface.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_numba_interface.py
@@ -5,10 +5,10 @@
@pytest.mark.parametrize("input_params", ["scatter", "macroatom", "downbranch"])
-def test_numba_plasma_initialize(nb_simulation_verysimple, input_params):
+def test_opacity_state_initialize(nb_simulation_verysimple, input_params):
line_interaction_type = input_params
plasma = nb_simulation_verysimple.plasma
- actual = numba_interface.numba_plasma_initialize(
+ actual = numba_interface.opacity_state_initialize(
plasma, line_interaction_type
)
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_packet.py b/tardis/montecarlo/montecarlo_numba/tests/test_packet.py
index 2d8dba261e3..752378cb51b 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_packet.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_packet.py
@@ -268,17 +268,17 @@ def test_update_line_estimators(
def test_trace_packet(
packet,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
verysimple_estimators,
set_seed_fixture,
):
set_seed_fixture(1963)
- packet.initialize_line_id(verysimple_numba_plasma, verysimple_numba_model)
+ packet.initialize_line_id(verysimple_opacity_state, verysimple_numba_model)
distance, interaction_type, delta_shell = r_packet_transport.trace_packet(
packet,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
verysimple_estimators,
)
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_single_packet_loop.py b/tardis/montecarlo/montecarlo_numba/tests/test_single_packet_loop.py
index 9eccd5a9313..7eb45bd7394 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_single_packet_loop.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_single_packet_loop.py
@@ -13,7 +13,7 @@
def test_verysimple_single_packet_loop(
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
verysimple_estimators,
verysimple_vpacket_collection,
verysimple_packet_collection,
@@ -22,7 +22,7 @@ def test_verysimple_single_packet_loop(
packet_collection = verysimple_packet_collection
vpacket_collection = verysimple_vpacket_collection
numba_model = verysimple_numba_model
- numba_plasma = verysimple_numba_plasma
+ opacity_state = verysimple_opacity_state
numba_estimators = verysimple_estimators
i = 0
@@ -37,7 +37,7 @@ def test_verysimple_single_packet_loop(
r_packet,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
numba_estimators,
vpacket_collection,
)
diff --git a/tardis/montecarlo/montecarlo_numba/tests/test_vpacket.py b/tardis/montecarlo/montecarlo_numba/tests/test_vpacket.py
index 493e60648b0..21ad8647d40 100644
--- a/tardis/montecarlo/montecarlo_numba/tests/test_vpacket.py
+++ b/tardis/montecarlo/montecarlo_numba/tests/test_vpacket.py
@@ -31,13 +31,13 @@ def v_packet():
)
-def v_packet_initialize_line_id(v_packet, numba_plasma, numba_model):
- inverse_line_list_nu = numba_plasma.line_list_nu[::-1]
+def v_packet_initialize_line_id(v_packet, opacity_state, numba_model):
+ inverse_line_list_nu = opacity_state.line_list_nu[::-1]
doppler_factor = get_doppler_factor(
v_packet.r, v_packet.mu, numba_model.time_explosion
)
comov_nu = v_packet.nu * doppler_factor
- next_line_id = len(numba_plasma.line_list_nu) - np.searchsorted(
+ next_line_id = len(opacity_state.line_list_nu) - np.searchsorted(
inverse_line_list_nu, comov_nu
)
v_packet.next_line_id = next_line_id
@@ -47,11 +47,11 @@ def test_trace_vpacket_within_shell(
v_packet,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
):
# Give the vpacket a reasonable line ID
v_packet_initialize_line_id(
- v_packet, verysimple_numba_plasma, verysimple_numba_model
+ v_packet, verysimple_opacity_state, verysimple_numba_model
)
(
@@ -62,7 +62,7 @@ def test_trace_vpacket_within_shell(
v_packet,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
)
npt.assert_almost_equal(tau_trace_combined, 8164850.891288479)
@@ -74,21 +74,21 @@ def test_trace_vpacket(
v_packet,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
):
# Set seed because of RNG in trace_vpacket
np.random.seed(1)
# Give the vpacket a reasonable line ID
v_packet_initialize_line_id(
- v_packet, verysimple_numba_plasma, verysimple_numba_model
+ v_packet, verysimple_opacity_state, verysimple_numba_model
)
tau_trace_combined = vpacket.trace_vpacket(
v_packet,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
)
npt.assert_almost_equal(tau_trace_combined, 8164850.891288479)
@@ -108,19 +108,19 @@ def test_trace_vpacket_volley(
verysimple_3vpacket_collection,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
):
# Set seed because of RNG in trace_vpacket
np.random.seed(1)
- packet.initialize_line_id(verysimple_numba_plasma, verysimple_numba_model)
+ packet.initialize_line_id(verysimple_opacity_state, verysimple_numba_model)
vpacket.trace_vpacket_volley(
packet,
verysimple_3vpacket_collection,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
)
@@ -141,11 +141,11 @@ def test_trace_bad_vpacket(
broken_packet,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
):
vpacket.trace_vpacket(
broken_packet,
verysimple_numba_radial_1d_geometry,
verysimple_numba_model,
- verysimple_numba_plasma,
+ verysimple_opacity_state,
)
diff --git a/tardis/montecarlo/montecarlo_numba/vpacket.py b/tardis/montecarlo/montecarlo_numba/vpacket.py
index b500fadd636..76f8c25deac 100644
--- a/tardis/montecarlo/montecarlo_numba/vpacket.py
+++ b/tardis/montecarlo/montecarlo_numba/vpacket.py
@@ -72,7 +72,7 @@ def __init__(
@njit(**njit_dict_no_parallel)
def trace_vpacket_within_shell(
- v_packet, numba_radial_1d_geometry, numba_model, numba_plasma
+ v_packet, numba_radial_1d_geometry, numba_model, opacity_state
):
"""
Trace VPacket within one shell (relatively simple operation)
@@ -88,7 +88,7 @@ def trace_vpacket_within_shell(
# e scattering initialization
- cur_electron_density = numba_plasma.electron_density[
+ cur_electron_density = opacity_state.electron_density[
v_packet.current_shell_id
]
chi_e = cur_electron_density * SIGMA_THOMSON
@@ -108,7 +108,7 @@ def trace_vpacket_within_shell(
x_sect_bfs,
chi_ff,
) = chi_continuum_calculator(
- numba_plasma, comov_nu, v_packet.current_shell_id
+ opacity_state, comov_nu, v_packet.current_shell_id
)
chi_continuum = chi_e + chi_bf_tot + chi_ff
@@ -123,18 +123,18 @@ def trace_vpacket_within_shell(
cur_line_id = start_line_id
- for cur_line_id in range(start_line_id, len(numba_plasma.line_list_nu)):
+ for cur_line_id in range(start_line_id, len(opacity_state.line_list_nu)):
# if tau_trace_combined > 10: ### FIXME ?????
# break
- nu_line = numba_plasma.line_list_nu[cur_line_id]
+ nu_line = opacity_state.line_list_nu[cur_line_id]
# TODO: Check if this is what the C code does
- tau_trace_line = numba_plasma.tau_sobolev[
+ tau_trace_line = opacity_state.tau_sobolev[
cur_line_id, v_packet.current_shell_id
]
- is_last_line = cur_line_id == len(numba_plasma.line_list_nu) - 1
+ is_last_line = cur_line_id == len(opacity_state.line_list_nu) - 1
distance_trace_line = calculate_distance_line(
v_packet,
@@ -150,7 +150,7 @@ def trace_vpacket_within_shell(
tau_trace_combined += tau_trace_line
else:
- if cur_line_id == (len(numba_plasma.line_list_nu) - 1):
+ if cur_line_id == (len(opacity_state.line_list_nu) - 1):
cur_line_id += 1
v_packet.next_line_id = cur_line_id
@@ -159,7 +159,7 @@ def trace_vpacket_within_shell(
@njit(**njit_dict_no_parallel)
def trace_vpacket(
- v_packet, numba_radial_1d_geometry, numba_model, numba_plasma
+ v_packet, numba_radial_1d_geometry, numba_model, opacity_state
):
"""
Trace single vpacket.
@@ -167,7 +167,7 @@ def trace_vpacket(
----------
v_packet
numba_model
- numba_plasma
+ opacity_state
Returns
-------
@@ -181,7 +181,7 @@ def trace_vpacket(
distance_boundary,
delta_shell,
) = trace_vpacket_within_shell(
- v_packet, numba_radial_1d_geometry, numba_model, numba_plasma
+ v_packet, numba_radial_1d_geometry, numba_model, opacity_state
)
tau_trace_combined += tau_trace_combined_shell
@@ -222,7 +222,7 @@ def trace_vpacket_volley(
vpacket_collection,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
):
"""
Shoot a volley of vpackets (the vpacket collection specifies how many)
@@ -238,7 +238,7 @@ def trace_vpacket_volley(
[description]
numba_model : [type]
[description]
- numba_plasma : [type]
+ opacity_state : [type]
[description]
"""
@@ -323,7 +323,7 @@ def trace_vpacket_volley(
)
tau_vpacket = trace_vpacket(
- v_packet, numba_radial_1d_geometry, numba_model, numba_plasma
+ v_packet, numba_radial_1d_geometry, numba_model, opacity_state
)
v_packet.energy *= math.exp(-tau_vpacket)
diff --git a/tardis/transport/r_packet_transport.py b/tardis/transport/r_packet_transport.py
index b050b43989b..579e387866d 100644
--- a/tardis/transport/r_packet_transport.py
+++ b/tardis/transport/r_packet_transport.py
@@ -28,7 +28,7 @@ def trace_packet(
r_packet,
numba_radial_1d_geometry,
numba_model,
- numba_plasma,
+ opacity_state,
estimators,
chi_continuum,
escat_prob,
@@ -41,7 +41,7 @@ def trace_packet(
r_packet : tardis.montecarlo.montecarlo_numba.r_packet.RPacket
numba_radial_1d_geometry : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaRadial1DGeometry
numba_model : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaModel
- numba_plasma : tardis.montecarlo.montecarlo_numba.numba_interface.NumbaPlasma
+ opacity_state : tardis.montecarlo.montecarlo_numba.numba_interface.OpacityState
estimators : tardis.montecarlo.montecarlo_numba.numba_interface.Estimators
Returns
@@ -72,13 +72,13 @@ def trace_packet(
distance_continuum = tau_event / chi_continuum
cur_line_id = start_line_id # initializing varibale for Numba
# - do not remove
- last_line_id = len(numba_plasma.line_list_nu) - 1
- for cur_line_id in range(start_line_id, len(numba_plasma.line_list_nu)):
+ last_line_id = len(opacity_state.line_list_nu) - 1
+ for cur_line_id in range(start_line_id, len(opacity_state.line_list_nu)):
# Going through the lines
- nu_line = numba_plasma.line_list_nu[cur_line_id]
+ nu_line = opacity_state.line_list_nu[cur_line_id]
# Getting the tau for the next line
- tau_trace_line = numba_plasma.tau_sobolev[
+ tau_trace_line = opacity_state.tau_sobolev[
cur_line_id, r_packet.current_shell_id
]
@@ -158,7 +158,7 @@ def trace_packet(
else: # Executed when no break occurs in the for loop
# We are beyond the line list now and the only next thing is to see
# if we are interacting with the boundary or electron scattering
- if cur_line_id == (len(numba_plasma.line_list_nu) - 1):
+ if cur_line_id == (len(opacity_state.line_list_nu) - 1):
# Treatment for last line
cur_line_id += 1
if distance_continuum < distance_boundary:
From 1e651e955600d28e8497abbeefa42871ce7488a9 Mon Sep 17 00:00:00 2001
From: Wolfgang Kerzendorf
Date: Tue, 18 Jul 2023 16:00:22 -0400
Subject: [PATCH 03/13] add deprecated decorator (#2361)
* add deprecated decorator
* blackify
---
tardis/util/base.py | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tardis/util/base.py b/tardis/util/base.py
index ebc5d3124a6..9862b61d70e 100644
--- a/tardis/util/base.py
+++ b/tardis/util/base.py
@@ -17,6 +17,8 @@
from IPython import get_ipython, display
import tqdm
import tqdm.notebook
+import functools
+import warnings
k_B_cgs = constants.k_B.cgs.value
c_cgs = constants.c.cgs.value
@@ -761,3 +763,21 @@ def fix_bar_layout(bar, no_of_packets=None, total_iterations=None):
bar.reset(total=total_iterations)
else:
pass
+
+
+def deprecated(func):
+ """
+ A decorator to add a deprecation warning to a function that is no longer used
+
+ Parameters
+ ----------
+
+ func : function
+ """
+
+ @functools.wraps(func)
+ def wrapper(*args, **kwargs):
+ warnings.warn("This function is deprecated.", DeprecationWarning)
+ return func(*args, **kwargs)
+
+ return wrapper
From 9dfc74410b763c033f951a44e44e875302881427 Mon Sep 17 00:00:00 2001
From: Wolfgang Kerzendorf
Date: Tue, 18 Jul 2023 16:57:16 -0400
Subject: [PATCH 04/13] restructure configuration object (#2360)
* restructure configuration object
* cleaned up the classes
* cleanup
* fix issue with negative temeprature
* blackify
* blackify tests
* Update tardis/io/config_reader.py
* Update tardis/io/config_reader.py
* Fix tests
---------
Co-authored-by: Andrew
---
tardis/io/config_reader.py | 304 +++++++++++++-------------
tardis/io/tests/test_config_reader.py | 6 +-
2 files changed, 161 insertions(+), 149 deletions(-)
diff --git a/tardis/io/config_reader.py b/tardis/io/config_reader.py
index 4a53d75a89b..c50af13a0ae 100644
--- a/tardis/io/config_reader.py
+++ b/tardis/io/config_reader.py
@@ -22,34 +22,6 @@ class ConfigurationError(ValueError):
pass
-def parse_convergence_section(convergence_section_dict):
- """
- Parse the convergence section dictionary
-
- Parameters
- ----------
- convergence_section_dict : dict
- dictionary
- """
-
- convergence_parameters = ["damping_constant", "threshold"]
-
- for convergence_variable in ["t_inner", "t_rad", "w"]:
- if convergence_variable not in convergence_section_dict:
- convergence_section_dict[convergence_variable] = {}
- convergence_variable_section = convergence_section_dict[
- convergence_variable
- ]
- for param in convergence_parameters:
- if convergence_variable_section.get(param, None) is None:
- if param in convergence_section_dict:
- convergence_section_dict[convergence_variable][
- param
- ] = convergence_section_dict[param]
-
- return convergence_section_dict
-
-
class ConfigurationNameSpace(dict):
"""
The configuration name space class allows to wrap a dictionary and adds
@@ -284,118 +256,14 @@ def from_config_dict(cls, config_dict, validate=True, config_dirname=""):
validated_config_dict["config_dirname"] = config_dirname
- # Montecarlo Section Implementation
montecarlo_section = validated_config_dict["montecarlo"]
- if montecarlo_section["convergence_strategy"]["type"] == "damped":
- montecarlo_section[
- "convergence_strategy"
- ] = parse_convergence_section(
- montecarlo_section["convergence_strategy"]
- )
- elif montecarlo_section["convergence_strategy"]["type"] == "custom":
- raise NotImplementedError(
- 'convergence_strategy is set to "custom"; '
- "you need to implement your specific convergence treatment"
- )
- else:
- raise ValueError(
- 'convergence_strategy is not "damped" ' 'or "custom"'
- )
-
- enable_full_relativity = montecarlo_section["enable_full_relativity"]
- spectrum_integrated = (
- validated_config_dict["spectrum"]["method"] == "integrated"
- )
- if enable_full_relativity and spectrum_integrated:
- raise NotImplementedError(
- "The spectrum method is set to 'integrated' and "
- "enable_full_relativity to 'True'.\n"
- "The FormalIntegrator is not yet implemented for the full "
- "relativity mode. "
- )
+ Configuration.validate_montecarlo_section(montecarlo_section)
if "csvy_model" in validated_config_dict.keys():
pass
elif "model" in validated_config_dict.keys():
-
- # Model Section Validation
model_section = validated_config_dict["model"]
-
- if model_section["structure"]["type"] == "specific":
- start_velocity = model_section["structure"]["velocity"]["start"]
- stop_velocity = model_section["structure"]["velocity"]["stop"]
- if stop_velocity.value < start_velocity.value:
- raise ValueError(
- "Stop Velocity Cannot Be Less than Start Velocity. \n"
- f"Start Velocity = {start_velocity} \n"
- f"Stop Velocity = {stop_velocity}"
- )
- elif model_section["structure"]["type"] == "file":
- v_inner_boundary = model_section["structure"][
- "v_inner_boundary"
- ]
- v_outer_boundary = model_section["structure"][
- "v_outer_boundary"
- ]
- if v_outer_boundary.value < v_inner_boundary.value:
- raise ValueError(
- "Outer Boundary Velocity Cannot Be Less than Inner Boundary Velocity. \n"
- f"Inner Boundary Velocity = {v_inner_boundary} \n"
- f"Outer Boundary Velocity = {v_outer_boundary}"
- )
- if "density" in model_section["structure"].keys():
- if (
- model_section["structure"]["density"]["type"]
- == "exponential"
- ):
- rho_0 = model_section["structure"]["density"]["rho_0"]
- v_0 = model_section["structure"]["density"]["v_0"]
- if not rho_0.value > 0:
- raise ValueError(
- f"Density Specified is Invalid, {rho_0}"
- )
- if not v_0.value > 0:
- raise ValueError(
- f"Velocity Specified is Invalid, {v_0}"
- )
- if "time_0" in model_section["structure"]["density"].keys():
- time_0 = model_section["structure"]["density"]["time_0"]
- if not time_0.value > 0:
- raise ValueError(
- f"Time Specified is Invalid, {time_0}"
- )
- elif (
- model_section["structure"]["density"]["type"] == "power_law"
- ):
- rho_0 = model_section["structure"]["density"]["rho_0"]
- v_0 = model_section["structure"]["density"]["v_0"]
- if not rho_0.value > 0:
- raise ValueError(
- f"Density Specified is Invalid, {rho_0}"
- )
- if not v_0.value > 0:
- raise ValueError(
- f"Velocity Specified is Invalid, {v_0}"
- )
- if "time_0" in model_section["structure"]["density"].keys():
- time_0 = model_section["structure"]["density"]["time_0"]
- if not time_0.value > 0:
- raise ValueError(
- f"Time Specified is Invalid, {time_0}"
- )
- elif model_section["structure"]["density"]["type"] == "uniform":
- value = model_section["structure"]["density"]["value"]
- if not value.value > 0:
- raise ValueError(
- f"Density Value Specified is Invalid, {value}"
- )
- if "time_0" in model_section["structure"]["density"].keys():
- time_0 = model_section["structure"]["density"]["time_0"]
- if not time_0.value > 0:
- raise ValueError(
- f"Time Specified is Invalid, {time_0}"
- )
-
+ Configuration.validate_model_section(model_section)
# SuperNova Section Validation
supernova_section = validated_config_dict["supernova"]
@@ -406,7 +274,7 @@ def from_config_dict(cls, config_dict, validate=True, config_dirname=""):
luminosity_wavelength_end = supernova_section[
"luminosity_wavelength_end"
]
- if not time_explosion.value > 0:
+ if time_explosion.value <= 0:
raise ValueError(
f"Time Of Explosion is Invalid, {time_explosion}"
)
@@ -425,28 +293,170 @@ def from_config_dict(cls, config_dict, validate=True, config_dirname=""):
initial_t_inner = plasma_section["initial_t_inner"]
initial_t_rad = plasma_section["initial_t_rad"]
- if not initial_t_inner.value >= -1:
+ if initial_t_inner.value < -1:
raise ValueError(
f"Initial Temperature of Inner Boundary Black Body is Invalid, {initial_t_inner}"
)
- if not initial_t_rad.value >= -1:
+ if initial_t_rad.value < -1:
raise ValueError(
- f"Initial Radiative Temperature is Invalid, {initial_t_inner}"
+ f"Initial Radiative Temperature is Invalid, {initial_t_rad}"
)
- # Spectrum Section Validation
- spectrum_section = validated_config_dict["spectrum"]
+ spectrum_section = validated_config_dict["spectrum"]
+ Configuration.validate_spectrum_section(
+ spectrum_section, montecarlo_section["enable_full_relativity"]
+ )
+
+ return cls(validated_config_dict)
+
+ @staticmethod
+ def validate_spectrum_section(
+ spectrum_section, enable_full_relativity=False
+ ):
+ """
+ Validate the spectrum section dictionary
+
+ Parameters
+ ----------
+ spectrum_section : dict
+ """
+ # Spectrum Section Validation
+
+ start = spectrum_section["start"]
+ stop = spectrum_section["stop"]
+ if start.value > stop.value:
+ raise ValueError(
+ "Start Value of Spectrum Cannot be Greater than Stop Value. \n"
+ f"Start : {start} \n"
+ f"Stop : {stop}"
+ )
+
+ spectrum_integrated = spectrum_section["method"] == "integrated"
+ if enable_full_relativity and spectrum_integrated:
+ raise NotImplementedError(
+ "The spectrum method is set to 'integrated' and "
+ "enable_full_relativity to 'True'.\n"
+ "The FormalIntegrator is not yet implemented for the full "
+ "relativity mode. "
+ )
+
+ @staticmethod
+ def validate_model_section(model_section):
+ """
+ Parse the model section dictionary
+
+ Parameters
+ ----------
+
+ model_section : dict
+ """
- start = spectrum_section["start"]
- stop = spectrum_section["stop"]
- if start.value > stop.value:
+ if model_section["structure"]["type"] == "specific":
+ start_velocity = model_section["structure"]["velocity"]["start"]
+ stop_velocity = model_section["structure"]["velocity"]["stop"]
+ if stop_velocity.value < start_velocity.value:
raise ValueError(
- "Start Value of Spectrum Cannot be Greater than Stop Value. \n"
- f"Start : {start} \n"
- f"Stop : {stop}"
+ "Stop Velocity Cannot Be Less than Start Velocity. \n"
+ f"Start Velocity = {start_velocity} \n"
+ f"Stop Velocity = {stop_velocity}"
)
+ elif model_section["structure"]["type"] == "file":
+ v_inner_boundary = model_section["structure"]["v_inner_boundary"]
+ v_outer_boundary = model_section["structure"]["v_outer_boundary"]
+ if v_outer_boundary.value < v_inner_boundary.value:
+ raise ValueError(
+ "Outer Boundary Velocity Cannot Be Less than Inner Boundary Velocity. \n"
+ f"Inner Boundary Velocity = {v_inner_boundary} \n"
+ f"Outer Boundary Velocity = {v_outer_boundary}"
+ )
+ if "density" in model_section["structure"].keys():
+ if model_section["structure"]["density"]["type"] == "exponential":
+ rho_0 = model_section["structure"]["density"]["rho_0"]
+ v_0 = model_section["structure"]["density"]["v_0"]
+ if rho_0.value <= 0:
+ raise ValueError(f"Density Specified is Invalid, {rho_0}")
+ if v_0.value <= 0:
+ raise ValueError(f"Velocity Specified is Invalid, {v_0}")
+ if "time_0" in model_section["structure"]["density"].keys():
+ time_0 = model_section["structure"]["density"]["time_0"]
+ if time_0.value <= 0:
+ raise ValueError(f"Time Specified is Invalid, {time_0}")
+ elif model_section["structure"]["density"]["type"] == "power_law":
+ rho_0 = model_section["structure"]["density"]["rho_0"]
+ v_0 = model_section["structure"]["density"]["v_0"]
+ if rho_0.value <= 0:
+ raise ValueError(f"Density Specified is Invalid, {rho_0}")
+ if v_0.value <= 0:
+ raise ValueError(f"Velocity Specified is Invalid, {v_0}")
+ if "time_0" in model_section["structure"]["density"].keys():
+ time_0 = model_section["structure"]["density"]["time_0"]
+ if time_0.value <= 0:
+ raise ValueError(f"Time Specified is Invalid, {time_0}")
+ elif model_section["structure"]["density"]["type"] == "uniform":
+ density = model_section["structure"]["density"]["value"]
+ if density.value <= 0:
+ raise ValueError(
+ f"Density Value Specified is Invalid, {density}"
+ )
+ if "time_0" in model_section["structure"]["density"].keys():
+ time_0 = model_section["structure"]["density"]["time_0"]
+ if time_0.value <= 0:
+ raise ValueError(f"Time Specified is Invalid, {time_0}")
- return cls(validated_config_dict)
+ @staticmethod
+ def validate_montecarlo_section(montecarlo_section):
+ """
+ Validate the montecarlo section dictionary
+
+ Parameters
+ ----------
+
+ montecarlo_section : dict
+ """
+
+ if montecarlo_section["convergence_strategy"]["type"] == "damped":
+ montecarlo_section[
+ "convergence_strategy"
+ ] = Configuration.parse_convergence_section(
+ montecarlo_section["convergence_strategy"]
+ )
+ elif montecarlo_section["convergence_strategy"]["type"] == "custom":
+ raise NotImplementedError(
+ 'convergence_strategy is set to "custom"; '
+ "you need to implement your specific convergence treatment"
+ )
+ else:
+ raise ValueError(
+ 'convergence_strategy is not "damped" ' 'or "custom"'
+ )
+
+ @staticmethod
+ def parse_convergence_section(convergence_section_dict):
+ """
+ Parse the convergence section dictionary
+
+ Parameters
+ ----------
+ convergence_section_dict : dict
+ dictionary
+ """
+
+ convergence_parameters = ["damping_constant", "threshold"]
+
+ for convergence_variable in ["t_inner", "t_rad", "w"]:
+ if convergence_variable not in convergence_section_dict:
+ convergence_section_dict[convergence_variable] = {}
+ convergence_variable_section = convergence_section_dict[
+ convergence_variable
+ ]
+ for param in convergence_parameters:
+ if convergence_variable_section.get(param, None) is None:
+ if param in convergence_section_dict:
+ convergence_section_dict[convergence_variable][
+ param
+ ] = convergence_section_dict[param]
+
+ return convergence_section_dict
def __init__(self, config_dict):
super(Configuration, self).__init__(config_dict)
diff --git a/tardis/io/tests/test_config_reader.py b/tardis/io/tests/test_config_reader.py
index d69221e1420..e1bdac07e7c 100644
--- a/tardis/io/tests/test_config_reader.py
+++ b/tardis/io/tests/test_config_reader.py
@@ -30,8 +30,10 @@ def test_convergence_section_parser():
"t_rad": {"damping_constant": 1.0},
}
- parsed_convergence_section = config_reader.parse_convergence_section(
- test_convergence_section
+ parsed_convergence_section = (
+ config_reader.Configuration.parse_convergence_section(
+ test_convergence_section
+ )
)
assert_almost_equal(
From 754351f8ed9050c3e8e4523865fd452a5b2a9422 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20Fl=C3=B6rs?=
<33418619+afloers@users.noreply.github.com>
Date: Wed, 19 Jul 2023 15:12:59 +0200
Subject: [PATCH 05/13] removed duplicate entry of afloers (#2354)
---
.zenodo.json | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/.zenodo.json b/.zenodo.json
index 199ce7b3ec1..01a68e48b36 100644
--- a/.zenodo.json
+++ b/.zenodo.json
@@ -199,9 +199,6 @@
{
"name": "Jain, Rinkle"
},
- {
- "name": "Floers, Andreas"
- },
{
"name": "Reichenbach, John"
},
@@ -320,4 +317,4 @@
"name": "Kolliboyina, Chaitanya"
}
]
-}
\ No newline at end of file
+}
From 9831b9eded2031ac9bbe5db9daa2c6ff98158c45 Mon Sep 17 00:00:00 2001
From: Wolfgang Kerzendorf
Date: Fri, 21 Jul 2023 10:46:08 -0400
Subject: [PATCH 06/13] New packet source (extending 2352) (#2366)
* Restructure packet_source
* Add skeleton for EnergyDepositionSource
* Copy direction sampling from BlackBodySimpleSource
* Restructure codebase according to new packet source structure
* Sample packet radii from gamma ray energies
* Create placeholders for frequency and energies
* Use linear normalization instead of softmax to get shell probabilities
* remove gammaray stuff
---------
Co-authored-by: xansh <1928013@kiit.ac.in>
---
docs/io/optional/custom_source.ipynb | 120 +++++----
docs/physics/montecarlo/initialization.ipynb | 85 +++---
tardis/montecarlo/base.py | 27 +-
tardis/montecarlo/packet_source.py | 245 +++++++++++++-----
tardis/montecarlo/tests/test_packet_source.py | 9 +-
5 files changed, 316 insertions(+), 170 deletions(-)
diff --git a/docs/io/optional/custom_source.ipynb b/docs/io/optional/custom_source.ipynb
index 046fe626100..101df3df447 100644
--- a/docs/io/optional/custom_source.ipynb
+++ b/docs/io/optional/custom_source.ipynb
@@ -5,7 +5,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# Running TARDIS with a Custom Packet Source"
+ "# Running TARDIS with a Custom Packet Source\n"
]
},
{
@@ -13,17 +13,22 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "By default, TARDIS generates energy packets using its `BasePacketSource` class, which models the photosphere of the supernova as a perfect blackbody (see [Energy Packet Initialization](../../physics/montecarlo/initialization.ipynb)). However, users may create their own packet source, as will be shown in this notebook. In order to do this, a user must create a class (that can but does not have to inherit from `BasePacketSource`) which contains a method `create_packets` that takes in (in this order):\n",
- "- the photospheric temperature\n",
- "- the number of packets\n",
- "- a random number generator\n",
- "- the photospheric radius\n",
+ "By default, TARDIS generates energy packets using its interface `BasePacketSource` class, which has a derived class `BlackBodySimpleSource`, which models the photosphere of the supernova as a perfect blackbody (see [Energy Packet Initialization](../../physics/montecarlo/initialization.ipynb)). However, users may create their own packet source, as will be shown in this notebook. In order to do this, a user must create a class (that inherits from `BasePacketSource`) and implement the following abstract functions:\n",
"\n",
- "and returns arrays of the radii, frequencies, propogation directions, and energies of the ensemble of packets (once again see [Energy Packet Initialization](../../physics/montecarlo/initialization.ipynb) for more information). To use your packet source in a run of TARDIS, you must pass an instance of your class into the `run_tardis` function under the `packet_source` keyword argument.\n",
+ "- create_packet_radii (returns array of packet radii)\n",
+ "- create_packet_nus (returns array of packet frequencies)\n",
+ "- create_packet_mus (returns array of packet directions)\n",
+ "- create_packet_energies (returns array of packet energies. See [Energy Packet Initialization](../../physics/montecarlo/initialization.ipynb) for more information)\n",
+ "- create_packets (wrapper which calls the above 4 functions, and is the function used by external code)\n",
+ "- set_state_from_model (set the state of the source from a model object)\n",
"\n",
- ".. note:: In both the `BasePacketSource` class and in the example here, all packets are generated at the same radius. This need not be true in general (although the `create_packets` method should only take in a single radius as its argument).\n",
+ "[Note: In this notebook, we have extended the `BlackBodySimpleSource` class because it already implements some of the above functions]\n",
"\n",
- "We show an example of how a custom packet source is used:"
+ "To use your packet source in a run of TARDIS, you must pass an instance of your class into the `run_tardis` function under the `packet_source` keyword argument.\n",
+ "\n",
+ ".. note:: In both the `BlackBodySimpleSource` class and in the example here, all packets are generated at the same radius. This need not be true in general (though one call of the `create_packets` method will pick the same radius from the packet source state).\n",
+ "\n",
+ "We show an example of how a custom packet source is used:\n"
]
},
{
@@ -36,7 +41,7 @@
"import numpy as np\n",
"from tardis import constants as const\n",
"from astropy import units as u\n",
- "from tardis.montecarlo.packet_source import BasePacketSource\n",
+ "from tardis.montecarlo.packet_source import BlackBodySimpleSource\n",
"from tardis import run_tardis\n",
"import matplotlib.pyplot as plt\n",
"from tardis.io.atom_data import download_atom_data"
@@ -49,7 +54,7 @@
"outputs": [],
"source": [
"# Download the atomic data used for a run of TARDIS\n",
- "download_atom_data('kurucz_cd23_chianti_H_He')"
+ "download_atom_data(\"kurucz_cd23_chianti_H_He\")"
]
},
{
@@ -59,65 +64,81 @@
"outputs": [],
"source": [
"# Create a packet source class that contains a create_packets method\n",
- "class TruncBlackbodySource(BasePacketSource):\n",
+ "class TruncBlackbodySource(BlackBodySimpleSource):\n",
" \"\"\"\n",
- " Custom inner boundary source class to replace the Blackbody source\n",
- " with a truncated Blackbody source.\n",
+ " Custom inner boundary source class to replace the Blackbody source\n",
+ " with a truncated Blackbody source.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " truncation_wavelength : float\n",
+ " truncation wavelength in Angstrom.\n",
+ " Only wavelengths higher than the truncation wavelength\n",
+ " will be sampled.\n",
+ " radius : float64\n",
+ " Initial packet radius\n",
+ " temperature : float\n",
+ " Absolute Temperature.\n",
+ " base_seed : int\n",
+ " Base Seed for random number generator\n",
" \"\"\"\n",
- " \n",
- " def __init__(self, base_seed, truncation_wavelength):\n",
- " super().__init__(base_seed)\n",
- " self.rng = np.random.default_rng(seed=base_seed)\n",
+ "\n",
+ " def __init__(self, truncation_wavelength=None, **kwargs):\n",
" self.truncation_wavelength = truncation_wavelength\n",
- " \n",
- " def create_packets(self, T, no_of_packets, radius,\n",
- " drawing_sample_size=None):\n",
+ " super().__init__(**kwargs)\n",
+ "\n",
+ " def create_packets(self, no_of_packets, drawing_sample_size=None):\n",
" \"\"\"\n",
" Packet source that generates a truncated Blackbody source.\n",
- " \n",
+ "\n",
" Parameters\n",
" ----------\n",
- " T : float\n",
- " Blackbody temperature\n",
" no_of_packets : int\n",
" number of packets to be created\n",
- " truncation_wavelength : float\n",
- " truncation wavelength in Angstrom. \n",
- " Only wavelengths higher than the truncation wavelength\n",
- " will be sampled.\n",
+ "\n",
+ " Returns\n",
+ " -------\n",
+ " array\n",
+ " Packet radii\n",
+ " array\n",
+ " Packet frequencies\n",
+ " array\n",
+ " Packet directions\n",
+ " array\n",
+ " Packet energies\n",
" \"\"\"\n",
- " \n",
- " # Makes uniform array of packet radii\n",
- " radii = np.ones(no_of_packets) * radius\n",
+ "\n",
+ " # Makes uniform array of packet radii from blackbody source\n",
+ " radii = self.create_packet_radii(no_of_packets)\n",
"\n",
" # Use mus and energies from normal blackbody source.\n",
- " mus = self.create_zero_limb_darkening_packet_mus(no_of_packets)\n",
- " energies = self.create_uniform_packet_energies(no_of_packets)\n",
+ " mus = self.create_packet_mus(no_of_packets)\n",
+ " energies = self.create_packet_energies(no_of_packets)\n",
"\n",
" # If not specified, draw 2 times as many packets and reject any beyond no_of_packets.\n",
" if drawing_sample_size is None:\n",
" drawing_sample_size = 2 * no_of_packets\n",
"\n",
" # Blackbody will be truncated below truncation_wavelength / above truncation_frequency.\n",
- " truncation_frequency = u.Quantity(self.truncation_wavelength, u.Angstrom).to(\n",
- " u.Hz, equivalencies=u.spectral()).value\n",
- " \n",
+ " truncation_frequency = (\n",
+ " u.Quantity(self.truncation_wavelength, u.Angstrom)\n",
+ " .to(u.Hz, equivalencies=u.spectral())\n",
+ " .value\n",
+ " )\n",
+ "\n",
" # Draw nus from blackbody distribution and reject based on truncation_frequency.\n",
" # If more nus.shape[0] > no_of_packets use only the first no_of_packets.\n",
- " nus = self.create_blackbody_packet_nus(T, drawing_sample_size)\n",
- " nus = nus[nus no_of_packets.\n",
" while nus.shape[0] < no_of_packets:\n",
- " additional_nus = self.create_blackbody_packet_nus(\n",
- " T, drawing_sample_size\n",
- " )\n",
+ " additional_nus = self.create_packet_nus(drawing_sample_size)\n",
" mask = additional_nus < truncation_frequency\n",
" additional_nus = additional_nus[mask][:no_of_packets]\n",
" nus = np.hstack([nus, additional_nus])[:no_of_packets]\n",
- " \n",
+ "\n",
" return radii, nus, mus, energies"
]
},
@@ -129,7 +150,7 @@
"source": [
"# Call an instance of the packet source class\n",
"packet_source = TruncBlackbodySource(\n",
- " 53253, truncation_wavelength=2000\n",
+ " truncation_wavelength=2000, base_seed=53253\n",
")"
]
},
@@ -138,7 +159,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "We now run TARDIS both with and without our custom packet source, and we compare the results:"
+ "We now run TARDIS both with and without our custom packet source, and we compare the results:\n"
]
},
{
@@ -147,9 +168,8 @@
"metadata": {},
"outputs": [],
"source": [
- "mdl = run_tardis('tardis_example.yml',\n",
- " packet_source=packet_source)\n",
- "mdl_norm = run_tardis('tardis_example.yml')"
+ "mdl = run_tardis(\"tardis_example.yml\", packet_source=packet_source)\n",
+ "mdl_norm = run_tardis(\"tardis_example.yml\")"
]
},
{
diff --git a/docs/physics/montecarlo/initialization.ipynb b/docs/physics/montecarlo/initialization.ipynb
index dc8da7f0021..f53662dee62 100644
--- a/docs/physics/montecarlo/initialization.ipynb
+++ b/docs/physics/montecarlo/initialization.ipynb
@@ -67,7 +67,7 @@
"\n",
"## Code Example\n",
"\n",
- "We now demonstrate the TARDIS packet initialization framework:"
+ "We now demonstrate the TARDIS packet initialization framework:\n"
]
},
{
@@ -90,7 +90,7 @@
"id": "4ae02998",
"metadata": {},
"source": [
- "The following cell contains values that you can change to see how it affects the spectrum (in an actual simulation, the seed and number of packets are set in the [Monte Carlo configuration](../../io/configuration/components/montecarlo.rst), and the photospheric radius is calculated as a part of the [model](../setup/model.ipynb)):"
+ "The following cell contains values that you can change to see how it affects the spectrum (in an actual simulation, the seed and number of packets are set in the [Monte Carlo configuration](../../io/configuration/components/montecarlo.rst), and the photospheric radius is calculated as a part of the [model](../setup/model.ipynb)):\n"
]
},
{
@@ -118,7 +118,7 @@
"id": "450faf76",
"metadata": {},
"source": [
- "We set the temperature of the photosphere $T_\\mathrm{inner}$, which will determine the photospheric luminosity (in an actual simulation, $T_\\mathrm{inner}$ is initially calculated as a part of the [model](../setup/model.ipynb) and updated as a part of the [Updating Plasma and Convergence](../update_and_conv/update_and_conv.ipynb) process):"
+ "We set the temperature of the photosphere $T_\\mathrm{inner}$, which will determine the photospheric luminosity (in an actual simulation, $T_\\mathrm{inner}$ is initially calculated as a part of the [model](../setup/model.ipynb) and updated as a part of the [Updating Plasma and Convergence](../update_and_conv/update_and_conv.ipynb) process):\n"
]
},
{
@@ -131,12 +131,18 @@
"# Temperature in K\n",
"temperature_inner = 10000 * u.K\n",
"\n",
- "luminosity_inner = 4 * np.pi * (r_boundary_inner**2) * const.sigma_sb * (temperature_inner**4)\n",
+ "luminosity_inner = (\n",
+ " 4\n",
+ " * np.pi\n",
+ " * (r_boundary_inner**2)\n",
+ " * const.sigma_sb\n",
+ " * (temperature_inner**4)\n",
+ ")\n",
"\n",
"# Makes sure the luminosity is given in erg/s\n",
- "luminosity_inner = luminosity_inner.to('erg/s')\n",
+ "luminosity_inner = luminosity_inner.to(\"erg/s\")\n",
"\n",
- "print('Luminosity of photosphere:', luminosity_inner)"
+ "print(\"Luminosity of photosphere:\", luminosity_inner)"
]
},
{
@@ -145,7 +151,7 @@
"id": "516633c5",
"metadata": {},
"source": [
- "We now generate the ensemble of packets. The array of packet energies and radii are also shown."
+ "We now generate the ensemble of packets. The array of packet energies and radii are also shown.\n"
]
},
{
@@ -156,14 +162,17 @@
"outputs": [],
"source": [
"# We define our packet source\n",
- "packet_source = BlackBodySimpleSource(base_seed)\n",
+ "packet_source = BlackBodySimpleSource(base_seed=base_seed)\n",
"\n",
+ "# Create separate packet seeds to sample each packet's montecarlo trajectory\n",
"packet_seeds = packet_source.create_packet_seeds(n_packets, seed_offset)\n",
"\n",
- "radii, nus, mus, energies = packet_source.create_packets(\n",
- " temperature_inner.value, \n",
- " n_packets, \n",
- " r_boundary_inner)\n",
+ "# Set radii and temperature from model\n",
+ "packet_source.radius = r_boundary_inner\n",
+ "packet_source.temperature = temperature_inner.value\n",
+ "\n",
+ "# Create packets\n",
+ "radii, nus, mus, energies = packet_source.create_packets(n_packets)\n",
"\n",
"# Sets the energies in units of ergs\n",
"energies *= u.erg\n",
@@ -171,8 +180,8 @@
"# Sets the frequencies in units of Hz\n",
"nus *= u.Hz\n",
"\n",
- "print('Energies:', energies)\n",
- "print('Radii:', radii)"
+ "print(\"Energies:\", energies)\n",
+ "print(\"Radii:\", radii)"
]
},
{
@@ -181,7 +190,7 @@
"id": "16936bce",
"metadata": {},
"source": [
- "We set the timespan of the simulation so that each packet contributes the appropriate luminosity to the spectrum."
+ "We set the timespan of the simulation so that each packet contributes the appropriate luminosity to the spectrum.\n"
]
},
{
@@ -193,11 +202,11 @@
"source": [
"# Time of simulation\n",
"t_simulation = 1 * u.erg / luminosity_inner\n",
- "print('Time of simulation:', t_simulation)\n",
+ "print(\"Time of simulation:\", t_simulation)\n",
"\n",
"# Array of luminosity contribution by each packet\n",
"lumin_per_packet = energies / t_simulation\n",
- "print('Luminosity per packet:', lumin_per_packet)"
+ "print(\"Luminosity per packet:\", lumin_per_packet)"
]
},
{
@@ -208,7 +217,7 @@
"source": [
"We define important constants, and for comparison's sake, we code the Planck distribution function\n",
"$$L_\\nu (\\nu)=\\frac{8\\pi r_\\mathrm{boundary\\_inner}^2 h\\nu^3}{c^2}\\frac{1}{\\exp\\left(\\frac{h\\nu}{k_BT_\\mathrm{inner}}\\right)-1}$$\n",
- "where $L_\\nu$ is the luminosity density (see [Basic Spectrum Generation](../spectrum/basic.ipynb)) with respect to frequency, $\\nu$ is frequency, $h$ is Planck's constant, $c$ is the speed of light, and $k_B$ is Boltzmann's constant:"
+ "where $L_\\nu$ is the luminosity density (see [Basic Spectrum Generation](../spectrum/basic.ipynb)) with respect to frequency, $\\nu$ is frequency, $h$ is Planck's constant, $c$ is the speed of light, and $k_B$ is Boltzmann's constant:\n"
]
},
{
@@ -224,8 +233,16 @@
"c2 = const.c.cgs**2\n",
"kB = const.k_B.cgs\n",
"\n",
+ "\n",
"def planck_function(nu):\n",
- " return 8 * np.pi**2 * r_boundary_inner**2 * h * nu**3 / (c2 * (np.exp(h * nu / (kB * temperature_inner)) - 1))"
+ " return (\n",
+ " 8\n",
+ " * np.pi**2\n",
+ " * r_boundary_inner**2\n",
+ " * h\n",
+ " * nu**3\n",
+ " / (c2 * (np.exp(h * nu / (kB * temperature_inner)) - 1))\n",
+ " )"
]
},
{
@@ -234,7 +251,7 @@
"id": "78230177",
"metadata": {},
"source": [
- "We plot the Planck distribution and a histogram of the generated packet distribution:"
+ "We plot the Planck distribution and a histogram of the generated packet distribution:\n"
]
},
{
@@ -249,17 +266,15 @@
"nus_planck = np.linspace(min(nus), max(nus), bins)\n",
"bin_width = nus_planck[1] - nus_planck[0]\n",
"\n",
- "# In the histogram plot below, the weights argument is used \n",
+ "# In the histogram plot below, the weights argument is used\n",
"# to make sure our plotted spectrum has the correct y-axis scale\n",
- "plt.hist(nus.value,\n",
- " bins=bins,\n",
- " weights=lumin_per_packet/bin_width)\n",
+ "plt.hist(nus.value, bins=bins, weights=lumin_per_packet / bin_width)\n",
"\n",
"# We plot the planck function for comparison\n",
"plt.plot(nus_planck, planck_function(nus_planck))\n",
"\n",
- "plt.xlabel('Frequency (Hz)')\n",
- "plt.ylabel('Luminosity density w.r.t. frequency (erg/s/Hz)')\n",
+ "plt.xlabel(\"Frequency (Hz)\")\n",
+ "plt.ylabel(\"Luminosity density w.r.t. frequency (erg/s/Hz)\")\n",
"plt.show()"
]
},
@@ -269,7 +284,7 @@
"id": "ad4f0f0e",
"metadata": {},
"source": [
- "We finally plot the generated $\\mu$ density distribution, followed by the generated $\\theta=\\arccos (\\mu)$ density distribution, compared with the respective curves $\\rho = 2\\mu$ and $\\rho = \\sin(2\\theta)$:"
+ "We finally plot the generated $\\mu$ density distribution, followed by the generated $\\theta=\\arccos (\\mu)$ density distribution, compared with the respective curves $\\rho = 2\\mu$ and $\\rho = \\sin(2\\theta)$:\n"
]
},
{
@@ -282,9 +297,9 @@
"x = np.linspace(0, 1, 1000)\n",
"\n",
"plt.hist(mus, bins=bins, density=True)\n",
- "plt.plot(x, 2*x)\n",
- "plt.xlabel('Propagation direction')\n",
- "plt.ylabel('Probability density')\n",
+ "plt.plot(x, 2 * x)\n",
+ "plt.xlabel(\"Propagation direction\")\n",
+ "plt.ylabel(\"Probability density\")\n",
"plt.show()"
]
},
@@ -295,12 +310,12 @@
"metadata": {},
"outputs": [],
"source": [
- "thetas = np.linspace(0, np.pi/2, 1000)\n",
+ "thetas = np.linspace(0, np.pi / 2, 1000)\n",
"\n",
"plt.hist(np.arccos(mus), bins=bins, density=True)\n",
- "plt.plot(thetas, np.sin(2*thetas))\n",
- "plt.xlabel('Angle with normal (rad)')\n",
- "plt.ylabel('Probability density')\n",
+ "plt.plot(thetas, np.sin(2 * thetas))\n",
+ "plt.xlabel(\"Angle with normal (rad)\")\n",
+ "plt.ylabel(\"Probability density\")\n",
"plt.show()"
]
},
@@ -312,7 +327,7 @@
"source": [
"## Custom Packet Source\n",
"\n",
- "TARDIS allows for the user to input a custom function that generates energy packets instead of the basic blackbody source described here. See [Running TARDIS with a Custom Packet Source](../../io/optional/custom_source.ipynb) for more information."
+ "TARDIS allows for the user to input a custom function that generates energy packets instead of the basic blackbody source described here. See [Running TARDIS with a Custom Packet Source](../../io/optional/custom_source.ipynb) for more information.\n"
]
}
],
diff --git a/tardis/montecarlo/base.py b/tardis/montecarlo/base.py
index b116d73f265..123974eaf22 100644
--- a/tardis/montecarlo/base.py
+++ b/tardis/montecarlo/base.py
@@ -198,9 +198,7 @@ def _initialize_geometry_arrays(self, model):
self.v_inner_cgs = model.v_inner.to("cm/s").value
self.v_outer_cgs = model.v_outer.to("cm/s").value
- def _initialize_packets(
- self, temperature, no_of_packets, iteration, radius, time_explosion
- ):
+ def _initialize_packets(self, model, no_of_packets, iteration):
# the iteration (passed as seed_offset) is added each time to preserve randomness
# across different simulations with the same temperature,
# for example.
@@ -208,14 +206,13 @@ def _initialize_packets(
no_of_packets, iteration
)
- if not self.enable_full_relativity:
- radii, nus, mus, energies = self.packet_source.create_packets(
- temperature, no_of_packets, radius
- )
- else:
- radii, nus, mus, energies = self.packet_source.create_packets(
- temperature, no_of_packets, radius, time_explosion
- )
+ # Set latest state of packet source
+ self.packet_source.set_state_from_model(model)
+
+ # Create packets
+ radii, nus, mus, energies = self.packet_source.create_packets(
+ no_of_packets
+ )
self.input_r = radii
self.input_nu = nus
@@ -342,11 +339,9 @@ def run(
self._initialize_geometry_arrays(model)
self._initialize_packets(
- model.t_inner.value,
+ model,
no_of_packets,
iteration,
- model.r_inner[0],
- model.time_explosion,
)
configuration_initialize(self, no_of_virtual_packets)
@@ -672,11 +667,11 @@ def from_config(
if packet_source is None:
if not config.montecarlo.enable_full_relativity:
packet_source = source.BlackBodySimpleSource(
- config.montecarlo.seed
+ base_seed=config.montecarlo.seed
)
else:
packet_source = source.BlackBodySimpleSourceRelativistic(
- config.montecarlo.seed
+ base_seed=config.montecarlo.seed
)
return cls(
diff --git a/tardis/montecarlo/packet_source.py b/tardis/montecarlo/packet_source.py
index fc2b18b443c..f90397515c0 100644
--- a/tardis/montecarlo/packet_source.py
+++ b/tardis/montecarlo/packet_source.py
@@ -9,12 +9,23 @@
class BasePacketSource(abc.ABC):
+ """
+ Abstract base packet source
+
+ Parameters
+ ----------
+ base_seed : int
+ Base Seed for random number generator
+ legacy_secondary_seed : int
+ Secondary seed for global numpy rng (Deprecated: Legacy reasons only)
+ """
+
# MAX_SEED_VAL must be multiple orders of magnitude larger than no_of_packets;
# otherwise, each packet would not have its own seed. Here, we set the max
# seed val to the maximum allowed by numpy.
MAX_SEED_VAL = 2**32 - 1
- def __init__(self, base_seed, legacy_second_seed=None):
+ def __init__(self, base_seed=None, legacy_second_seed=None):
self.base_seed = base_seed
if (
montecarlo_configuration.LEGACY_MODE_ENABLED
@@ -38,45 +49,107 @@ def create_packet_seeds(self, no_of_packets, seed_offset):
return seeds
@abc.abstractmethod
- def create_packets(self, **kwargs):
+ def set_state_from_model(self, model):
pass
- def create_zero_limb_darkening_packet_mus(self, no_of_packets):
- """
- Create zero-limb-darkening packet :math:`\mu` distributed
- according to :math:`\\mu=\\sqrt{z}, z \isin [0, 1]`
+ @abc.abstractmethod
+ def create_packet_radii(self, no_of_packets, *args, **kwargs):
+ pass
+
+ @abc.abstractmethod
+ def create_packet_nus(self, no_of_packets, *args, **kwargs):
+ pass
+
+ @abc.abstractmethod
+ def create_packet_mus(self, no_of_packets, *args, **kwargs):
+ pass
+
+ @abc.abstractmethod
+ def create_packet_energies(self, no_of_packets, *args, **kwargs):
+ pass
+
+ def create_packets(self, no_of_packets, *args, **kwargs):
+ """Generate packet properties as arrays
Parameters
----------
no_of_packets : int
- number of packets to be created
+ Number of packets
+
+ Returns
+ -------
+ array
+ Packet radii
+ array
+ Packet frequencies
+ array
+ Packet directions
+ array
+ Packet energies
"""
+ radii = self.create_packet_radii(no_of_packets, *args, **kwargs)
+ nus = self.create_packet_nus(no_of_packets, *args, **kwargs)
+ mus = self.create_packet_mus(no_of_packets, *args, **kwargs)
+ energies = self.create_packet_energies(no_of_packets, *args, **kwargs)
+
+ return radii, nus, mus, energies
- # For testing purposes
- if montecarlo_configuration.LEGACY_MODE_ENABLED:
- return np.sqrt(np.random.random(no_of_packets))
- else:
- return np.sqrt(self.rng.random(no_of_packets))
- def create_uniform_packet_energies(self, no_of_packets):
+class BlackBodySimpleSource(BasePacketSource):
+ """
+ Simple packet source that generates Blackbody packets for the Montecarlo
+ part.
+
+ Parameters
+ ----------
+ radius : float64
+ Initial packet radius
+ temperature : float
+ Absolute Temperature.
+ base_seed : int
+ Base Seed for random number generator
+ legacy_secondary_seed : int
+ Secondary seed for global numpy rng (Deprecated: Legacy reasons only)
+ """
+
+ @classmethod
+ def from_model(cls, model, *args, **kwargs):
+ return cls(model.r_inner[0], model.t_inner.value, *args, **kwargs)
+
+ def __init__(self, radius=None, temperature=None, **kwargs):
+ self.radius = radius
+ self.temperature = temperature
+ super().__init__(**kwargs)
+
+ def set_state_from_model(self, model):
"""
- Uniformly distribute energy in arbitrary units where the ensemble of
- packets has energy of 1.
+ Set state of packet source (correct state should be ensured before creating packets)
+ """
+ self.radius = model.r_inner[0]
+ self.temperature = model.t_inner.value
+
+ def create_packets(self, no_of_packets, *args, **kwargs):
+ if self.radius is None or self.temperature is None:
+ raise ValueError("Black body Radius or Temperature isn't set")
+ return super().create_packets(no_of_packets, *args, **kwargs)
+
+ def create_packet_radii(self, no_of_packets):
+ """
+ Create packet radii
Parameters
----------
no_of_packets : int
- number of packets
+ number of packets to be created
Returns
-------
- energies for packets : numpy.ndarray
+ Radii for packets
+ numpy.ndarray
"""
- return np.ones(no_of_packets) / no_of_packets
+ return np.ones(no_of_packets) * self.radius
- def create_blackbody_packet_nus(
- self, temperature, no_of_packets, l_samples=1000
- ):
+ def create_packet_nus(self, no_of_packets, l_samples=1000):
"""
Create packet :math:`\\nu` distributed using the algorithm described in
Bjorkman & Wood 2001 (page 4) which references
@@ -92,18 +165,18 @@ def create_blackbody_packet_nus(
.. math::
x = -\\ln{(\\xi_1\\xi_2\\xi_3\\xi_4)}/l_{\\rm min}\\;.
where :math:`x=h\\nu/kT`
+
Parameters
----------
- temperature : float
- Absolute Temperature.
no_of_packets : int
l_samples : int
number of l_samples needed in the algorithm
+
Returns
-------
- array of frequencies: numpy.ndarray
+ array of frequencies
+ numpy.ndarray
"""
- l_samples = l_samples
l_array = np.cumsum(np.arange(1, l_samples, dtype=np.float64) ** -4)
l_coef = np.pi**4 / 90.0
@@ -117,61 +190,95 @@ def create_blackbody_packet_nus(
xis_prod = np.prod(xis[1:], 0)
x = ne.evaluate("-log(xis_prod)/l")
- return x * (const.k_B.cgs.value * temperature) / const.h.cgs.value
+ return x * (const.k_B.cgs.value * self.temperature) / const.h.cgs.value
+ def create_packet_mus(self, no_of_packets):
+ """
+ Create zero-limb-darkening packet :math:`\mu` distributed
+ according to :math:`\\mu=\\sqrt{z}, z \isin [0, 1]`
-class BlackBodySimpleSource(BasePacketSource):
- """
- Simple packet source that generates Blackbody packets for the Montecarlo
- part.
- """
+ Parameters
+ ----------
+ no_of_packets : int
+ number of packets to be created
- def create_packets(self, temperature, no_of_packets, radius):
- """Generate black-body packet properties as arrays
+ Returns
+ -------
+ Directions for packets
+ numpy.ndarray
+ """
+
+ # For testing purposes
+ if montecarlo_configuration.LEGACY_MODE_ENABLED:
+ return np.sqrt(np.random.random(no_of_packets))
+ else:
+ return np.sqrt(self.rng.random(no_of_packets))
+
+ def create_packet_energies(self, no_of_packets):
+ """
+ Uniformly distribute energy in arbitrary units where the ensemble of
+ packets has energy of 1.
Parameters
----------
- temperature : float64
no_of_packets : int
- Number of packets
- radius : float64
- Initial packet radius
+ number of packets
Returns
-------
- array
- Packet radii
- array
- Packet frequencies
- array
- Packet directions
- array
- Packet energies
+ energies for packets
+ numpy.ndarray
"""
- radii = np.ones(no_of_packets) * radius
- nus = self.create_blackbody_packet_nus(temperature, no_of_packets)
- mus = self.create_zero_limb_darkening_packet_mus(no_of_packets)
- energies = self.create_uniform_packet_energies(no_of_packets)
-
- return radii, nus, mus, energies
+ return np.ones(no_of_packets) / no_of_packets
class BlackBodySimpleSourceRelativistic(BlackBodySimpleSource):
- def create_packets(
- self, temperature, no_of_packets, radius, time_explosion
- ):
+ """
+ Simple packet source that generates Blackbody packets for the Montecarlo
+ part.
+
+ Parameters
+ ----------
+ time_explosion : float 64
+ Time elapsed since explosion
+ radius : float64
+ Initial packet radius
+ temperature : float
+ Absolute Temperature.
+ base_seed : int
+ Base Seed for random number generator
+ legacy_secondary_seed : int
+ Secondary seed for global numpy rng (Deprecated: Legacy reasons only)
+ """
+
+ @classmethod
+ def from_model(cls, model, *args, **kwargs):
+ return cls(
+ model.time_explosion,
+ model.r_inner[0],
+ model.t_inner.value,
+ *args,
+ **kwargs,
+ )
+
+ def __init__(self, time_explosion=None, **kwargs):
+ self.time_explosion = time_explosion
+ super().__init__(**kwargs)
+
+ def set_state_from_model(self, model):
+ """
+ Set state of packet source (correct state should be ensured before creating packets)
+ """
+ self.time_explosion = model.time_explosion
+ super().set_state_from_model(model)
+
+ def create_packets(self, no_of_packets):
"""Generate relativistic black-body packet properties as arrays
Parameters
----------
- temperature : float64
- Absolute Temperature
no_of_packets : int
Number of packets
- radius : float64
- Initial packet radius
- time_explosion: float64
- Time elapsed since explosion
Returns
-------
@@ -184,10 +291,12 @@ def create_packets(
array
Packet energies
"""
- self.beta = ((radius / time_explosion) / const.c).to("")
- return super().create_packets(temperature, no_of_packets, radius)
+ if self.radius is None or self.time_explosion is None:
+ raise ValueError("Black body Radius or Time of Explosion isn't set")
+ self.beta = ((self.radius / self.time_explosion) / const.c).to("")
+ return super().create_packets(no_of_packets)
- def create_zero_limb_darkening_packet_mus(self, no_of_packets):
+ def create_packet_nus(self, no_of_packets):
"""
Create zero-limb-darkening packet :math:`\mu^\prime` distributed
according to :math:`\\mu^\\prime=2 \\frac{\\mu^\\prime + \\beta}{2 \\beta + 1}`.
@@ -198,12 +307,17 @@ def create_zero_limb_darkening_packet_mus(self, no_of_packets):
----------
no_of_packets : int
number of packets to be created
+
+ Returns
+ -------
+ array of frequencies
+ numpy.ndarray
"""
z = self.rng.random(no_of_packets)
beta = self.beta
return -beta + np.sqrt(beta**2 + 2 * beta * z + z)
- def create_uniform_packet_energies(self, no_of_packets):
+ def create_packet_energies(self, no_of_packets):
"""
Uniformly distribute energy in arbitrary units where the ensemble of
packets has energy of 1 multiplied by relativistic correction factors.
@@ -215,7 +329,8 @@ def create_uniform_packet_energies(self, no_of_packets):
Returns
-------
- energies for packets : numpy.ndarray
+ energies for packets
+ numpy.ndarray
"""
beta = self.beta
gamma = 1.0 / np.sqrt(1 - beta**2)
diff --git a/tardis/montecarlo/tests/test_packet_source.py b/tardis/montecarlo/tests/test_packet_source.py
index 11407cc3e93..259db6c54b5 100644
--- a/tardis/montecarlo/tests/test_packet_source.py
+++ b/tardis/montecarlo/tests/test_packet_source.py
@@ -17,7 +17,7 @@ def packet_unit_test_fpath(tardis_ref_path):
def test_bb_packet_sampling(request, tardis_ref_data, packet_unit_test_fpath):
montecarlo_configuration.LEGACY_MODE_ENABLED = True
- bb = BlackBodySimpleSource(1963, legacy_second_seed=2508)
+ bb = BlackBodySimpleSource(base_seed=1963, legacy_second_seed=2508)
# ref_df = pd.read_hdf('test_bb_sampling.h5')
if request.config.getoption("--generate-reference"):
ref_bb = pd.read_hdf(packet_unit_test_fpath, key="/blackbody")
@@ -27,9 +27,10 @@ def test_bb_packet_sampling(request, tardis_ref_data, packet_unit_test_fpath):
pytest.skip("Reference data was generated during this run.")
ref_df = tardis_ref_data["/packet_unittest/blackbody"]
- nus = bb.create_blackbody_packet_nus(10000, 100)
- mus = bb.create_zero_limb_darkening_packet_mus(100)
- unif_energies = bb.create_uniform_packet_energies(100)
+ bb.temperature = 10000
+ nus = bb.create_packet_nus(100)
+ mus = bb.create_packet_mus(100)
+ unif_energies = bb.create_packet_energies(100)
assert np.all(np.isclose(nus, ref_df["nus"]))
assert np.all(np.isclose(mus, ref_df["mus"]))
assert np.all(np.isclose(unif_energies, ref_df["energies"]))
From 11019a4073756c461a15b098f7689345bfff9f27 Mon Sep 17 00:00:00 2001
From: Wolfgang Kerzendorf
Date: Fri, 21 Jul 2023 16:26:42 -0400
Subject: [PATCH 07/13] integrate new packetsource (#2367)
* integrate new packetsource
* integrate packet source further
* add setter for packet_source
* cleanup
---
tardis/model/base.py | 36 +++++++++++++++++-------------
tardis/montecarlo/packet_source.py | 17 ++++++++++++++
tardis/simulation/base.py | 2 +-
3 files changed, 39 insertions(+), 16 deletions(-)
diff --git a/tardis/model/base.py b/tardis/model/base.py
index 77bbbb78ed2..a0c8920b170 100644
--- a/tardis/model/base.py
+++ b/tardis/model/base.py
@@ -21,6 +21,7 @@
from tardis.io.util import HDFWriterMixin
from tardis.io.decay import IsotopeAbundances
from tardis.model.density import HomologousDensity
+from tardis.montecarlo.packet_source import BlackBodySimpleSource
logger = logging.getLogger(__name__)
@@ -270,29 +271,25 @@ def __init__(
time_explosion=self.time_explosion,
)
+ self.blackbody_packet_source = BlackBodySimpleSource(
+ self.r_inner[0], t_inner
+ )
if t_inner is None:
if luminosity_requested is not None:
- self.t_inner = (
- (
- luminosity_requested
- / (
- 4
- * np.pi
- * self.r_inner[0] ** 2
- * constants.sigma_sb
- )
- )
- ** 0.25
- ).to("K")
+ self.blackbody_packet_source.set_temperature_from_luminosity(
+ luminosity_requested
+ )
else:
raise ValueError(
"Both t_inner and luminosity_requested cannot " "be None."
)
else:
- self.t_inner = t_inner
+ self.blackbody_packet_source.temperature = t_inner
if t_radiative is None:
- lambda_wien_inner = constants.b_wien / self.t_inner
+ lambda_wien_inner = (
+ constants.b_wien / self.blackbody_packet_source.temperature
+ )
self._t_radiative = constants.b_wien / (
lambda_wien_inner
* (1 + (self.v_middle - self.v_boundary_inner) / constants.c)
@@ -328,6 +325,14 @@ def t_rad(self):
def t_rad(self, value):
self.t_radiative = value
+ @property
+ def t_inner(self):
+ return self.blackbody_packet_source.temperature
+
+ @t_inner.setter
+ def t_inner(self, value):
+ self.blackbody_packet_source.temperature = value
+
@property
def dilution_factor(self):
if len(self._dilution_factor) == self.no_of_shells:
@@ -431,7 +436,6 @@ def r_middle(self):
@property
def velocity(self):
-
if self._velocity is None:
self._velocity = self.raw_velocity[
self.v_boundary_inner_index : self.v_boundary_outer_index + 1
@@ -641,6 +645,8 @@ def from_config(cls, config, atom_data=None):
else:
t_radiative = None
+ #### Here starts the packetsource section
+
if config.plasma.initial_t_inner < 0.0 * u.K:
luminosity_requested = config.supernova.luminosity_requested
t_inner = None
diff --git a/tardis/montecarlo/packet_source.py b/tardis/montecarlo/packet_source.py
index f90397515c0..095fca194c4 100644
--- a/tardis/montecarlo/packet_source.py
+++ b/tardis/montecarlo/packet_source.py
@@ -7,6 +7,8 @@
montecarlo_configuration as montecarlo_configuration,
)
+from astropy import units as u
+
class BasePacketSource(abc.ABC):
"""
@@ -231,6 +233,21 @@ def create_packet_energies(self, no_of_packets):
"""
return np.ones(no_of_packets) / no_of_packets
+ def set_temperature_from_luminosity(self, luminosity: u.Quantity):
+ """
+ Set blackbody packet source temperature from luminosity
+
+ Parameters
+ ----------
+
+ luminosity : u.Quantity
+
+ """
+ self.temperature = (
+ (luminosity / (4 * np.pi * self.radius**2 * const.sigma_sb))
+ ** 0.25
+ ).to("K")
+
class BlackBodySimpleSourceRelativistic(BlackBodySimpleSource):
"""
diff --git a/tardis/simulation/base.py b/tardis/simulation/base.py
index 081926544b1..ea2ae90eb32 100644
--- a/tardis/simulation/base.py
+++ b/tardis/simulation/base.py
@@ -342,7 +342,7 @@ def advance_state(self):
)
self.model.t_rad = next_t_rad
self.model.w = next_w
- self.model.t_inner = next_t_inner
+ self.model.blackbody_packet_source.temperature = next_t_inner
# model.calculate_j_blues() equivalent
# model.update_plasmas() equivalent
From d2fbed8a13d9b9c39038e985d362302d22db0a38 Mon Sep 17 00:00:00 2001
From: tardis-bot <60989672+tardis-bot@users.noreply.github.com>
Date: Sun, 23 Jul 2023 11:47:02 -0300
Subject: [PATCH 08/13] Pre-release 2023.07.23 (#2368)
Automated changes for pre-release 2023.07.23
---
.zenodo.json | 75 +++---
conda-linux-64.lock | 43 ++--
conda-lock.yml | 560 ++++++++++++++++++++++++++++----------------
conda-osx-64.lock | 47 ++--
4 files changed, 444 insertions(+), 281 deletions(-)
diff --git a/.zenodo.json b/.zenodo.json
index 01a68e48b36..4b2336d4fd7 100644
--- a/.zenodo.json
+++ b/.zenodo.json
@@ -144,19 +144,19 @@
"name": "Savel, Arjun"
},
{
- "name": "Reinecke, Martin"
+ "name": "Eweis, Youssef"
},
{
- "name": "Eweis, Youssef"
+ "name": "Reinecke, Martin"
},
{
"name": "Bylund, Tomas"
},
{
- "name": "Bentil, Laud"
+ "name": "Black, William"
},
{
- "name": "Black, William"
+ "name": "Bentil, Laud"
},
{
"name": "Eguren, Jordi",
@@ -169,16 +169,13 @@
"name": "Alam, Arib"
},
{
- "name": "Magee, Mark"
+ "name": "Varma Buddaraju, Rohith"
},
{
"name": "Kumar, Ansh"
},
{
- "name": "Varma Buddaraju, Rohith"
- },
- {
- "name": "Shields, Joshua"
+ "name": "Magee, Mark"
},
{
"name": "Livneh, Ran"
@@ -187,44 +184,47 @@
"name": "Kambham, Satwik"
},
{
- "name": "Rajagopalan, Srinath"
+ "name": "Shields, Joshua"
},
{
"name": "Mishra, Sashank",
"orcid": "0000-0001-8302-1584"
},
{
- "name": "Actions, GitHub"
+ "name": "Rajagopalan, Srinath"
},
{
- "name": "Jain, Rinkle"
+ "name": "Actions, GitHub"
},
{
"name": "Reichenbach, John"
},
{
- "name": "Holas, Alexander"
+ "name": "Jain, Rinkle"
},
{
- "name": "Singh, Sourav"
+ "name": "Daksh, Ayushi"
},
{
- "name": "Chaumal, Aarya"
+ "name": "Floers, Andreas"
+ },
+ {
+ "name": "Brar, Antreev"
},
{
"name": "Singh, Shreyas"
},
{
- "name": "Brar, Antreev"
+ "name": "Chaumal, Aarya"
},
{
- "name": "Bhakar, Jayant"
+ "name": "Holas, Alexander"
},
{
- "name": "Daksh, Ayushi"
+ "name": "Singh, Sourav"
},
{
- "name": "Kowalski, Nathan"
+ "name": "Bhakar, Jayant"
},
{
"name": "Sofiatti, Caroline"
@@ -233,55 +233,55 @@
"name": "Kumar, Aman"
},
{
- "name": "Talegaonkar, Chinmay"
+ "name": "Patidar, Abhishek"
},
{
- "name": "Selsing, Jonatan"
+ "name": "Kowalski, Nathan"
},
{
- "name": "Patidar, Abhishek"
+ "name": "Selsing, Jonatan"
},
{
- "name": "Sharma, Sampark"
+ "name": "Talegaonkar, Chinmay"
},
{
- "name": "Zaheer, Musabbiha"
+ "name": "Gupta, Suyash"
},
{
- "name": "Patel, Pratik"
+ "name": "Yap, Kevin"
},
{
- "name": "Singh Rathore, Parikshit"
+ "name": "Martinez, Laureano"
},
{
- "name": "Patra, Nilesh"
+ "name": "Sandler, Morgan"
},
{
- "name": "Sarafina, Nance"
+ "name": "Zaheer, Musabbiha"
},
{
- "name": "Gupta, Harshul"
+ "name": "Sarafina, Nance"
},
{
- "name": "Sandler, Morgan"
+ "name": "Patra, Nilesh"
},
{
- "name": "Martinez, Laureano"
+ "name": "Singh Rathore, Parikshit"
},
{
- "name": "Yap, Kevin"
+ "name": "Patel, Pratik"
},
{
- "name": "Prasad, Shilpi"
+ "name": "Sharma, Sampark"
},
{
"name": "Venkat, Shashank"
},
{
- "name": "Kumar, Atul"
+ "name": "Prasad, Shilpi"
},
{
- "name": "Gupta, Suyash"
+ "name": "Gupta, Harshul"
},
{
"name": "Lemoine, Thom"
@@ -315,6 +315,9 @@
},
{
"name": "Kolliboyina, Chaitanya"
+ },
+ {
+ "name": "Kumar, Atul"
}
]
-}
+}
\ No newline at end of file
diff --git a/conda-linux-64.lock b/conda-linux-64.lock
index 036564ee9f0..8b20599c62f 100644
--- a/conda-linux-64.lock
+++ b/conda-linux-64.lock
@@ -3,7 +3,7 @@
# input_hash: 194f32030a99facb7ac5f9a78964cce932938f095803210ea7c5ec622080147f
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
-https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.5.7-hbcca054_0.conda#f5c65075fc34438d5b456c7f3f5ab695
+https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda#a73ecd2988327ad4c8f2c331482917f2
https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45
https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6
https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb
@@ -107,9 +107,9 @@ https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#5
https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06
https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py38hfa26641_9.conda#d056745008e5ed73210a31dcfd4d183a
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
-https://conda.anaconda.org/conda-forge/noarch/certifi-2023.5.7-pyhd8ed1ab_0.conda#5d1b71c942b8421285934dad1d891ebc
+https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda#313516e9a4b08b12dfb1e1cd390a96e3
-https://conda.anaconda.org/conda-forge/noarch/click-8.1.5-unix_pyh707e725_0.conda#4f63f3e01a26e7058eabfa5f984cd6f3
+https://conda.anaconda.org/conda-forge/noarch/click-8.1.6-unix_pyh707e725_0.conda#64dbb3b205546691a61204d1cfb208e3
https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99
https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb
https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
@@ -130,11 +130,12 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#3427
https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352
https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
+https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85c22a3beb102a48cd123df84c2a6
-https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.4-pyhd8ed1ab_0.conda#68037be2d9adb4f2646328f0c0198be7
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.1-pyhd8ed1ab_0.tar.bz2#9e79315db0f0742b9a2215e122ef8fc9
https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py38h43d8883_1.tar.bz2#41ca56d5cac7bfc7eb4fcdbee878eb84
https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28
-https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.1.2-hca28451_1.conda#b3bcefde107f8ac4f114574df0e1972e
+https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.2.0-hca28451_0.conda#73d6b3c8d9a8f7f2703ef9163ab92b0e
https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569
https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.36.0-py38h4630a5e_0.tar.bz2#a805cb9a530a6524f7f832cce981fa0e
https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py38h0ef1326_0.conda#f9b8c58aade85e2f76ae31c832dbcb9c
@@ -166,13 +167,13 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda
https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.19.3-py38h1de0b5d_0.conda#a33157288d499397a2a56da4d724948d
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-dokuwiki-1.3.3-pyhd8ed1ab_0.tar.bz2#a13dedbf73a833f0fbb2cb34467db1a3
-https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.17.1-pyhd8ed1ab_0.conda#dd4f393d857e9283eef2442234bd05e3
+https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda#3be9466311564f80f8056c0851fc5bb7
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31
https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h0a891b7_5.tar.bz2#0856c59f9ddb710c640dc0428d66b1b7
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.0-py38h509eb50_0.conda#33872b6650886eba869408b76c96994c
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
-https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.8.10-py38h0cc4f7c_0.conda#c7caadfd6d9e01bf718cc824cf1677fd
+https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.9.2-py38h0cc4f7c_0.conda#b735f2645ae63f01a36d8615a49acff7
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2
https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_1.tar.bz2#da023e4a9c777abc28434d7a6473dcc2
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
@@ -197,12 +198,13 @@ https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.ta
https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py38h0a891b7_0.tar.bz2#44421904760e9f5ae2035193e04360f0
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda#c34d9325a609381a0b0e8a5b4f325147
-https://conda.anaconda.org/conda-forge/noarch/wheel-0.40.0-pyhd8ed1ab_1.conda#c95fac682453aeffa12db7ae5a721bec
+https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda#66beb36a1fa7e0dc9d9bf843a80eb82c
https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec
https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530
https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda#2da0451b54c4563c32490cb1b7cf68a1
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda#bf7f54dd0f25c3f06ecb82a07341841a
+https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda#a3d2d43b74e042567cc4b5e328534885
https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda#ac432e732804a81ddcf29c92ead57cde
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
@@ -214,7 +216,7 @@ https://conda.anaconda.org/conda-forge/noarch/comm-0.1.3-pyhd8ed1ab_0.conda#168a
https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2#6aa0173c14befcd577ded130cf6f22f5
https://conda.anaconda.org/conda-forge/linux-64/coverage-7.2.7-py38h01eb140_0.conda#08ec729e43c468bf658e8795dbf7fb22
https://conda.anaconda.org/conda-forge/noarch/dot2tex-2.11.3-pyhd8ed1ab_0.tar.bz2#fb28e38d17dee34abc13cf6ad916534a
-https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.0-py38h01eb140_0.conda#badab474003e57dc09220994bc4ab204
+https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.1-py38h01eb140_0.conda#4f78fe4f58e6d708b28139c192f854c2
https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.2-nompi_h4df4325_101.conda#162a25904af6586b234b2dd52ee99c61
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.0.0-pyhd8ed1ab_1.conda#a08b6be5bf18b9d2a927d3457750f82e
@@ -229,12 +231,12 @@ https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.8.3-py38h97b1c41_100.t
https://conda.anaconda.org/conda-forge/noarch/overrides-7.3.1-pyhd8ed1ab_0.tar.bz2#a5745ced46e69aa9754053ba061974ab
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/linux-64/pillow-10.0.0-py38h885162f_0.conda#777c54134d5422a867aed7084cf5db5e
-https://conda.anaconda.org/conda-forge/noarch/pip-23.2-pyhd8ed1ab_0.conda#fb90dfe13ce16c0a3374e3d34e3291c5
+https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/plotly-5.15.0-pyhd8ed1ab_0.conda#48573e7cca7860509648522a3b8507d7
https://conda.anaconda.org/conda-forge/linux-64/pyerfa-2.0.0.1-py38h71d37f0_2.tar.bz2#b48ecd9c0b22ddc465daba45d1ff7488
https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.0-pyhd8ed1ab_0.conda#3cfe9b9e958e7238a386933c75d190db
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
-https://conda.anaconda.org/conda-forge/noarch/referencing-0.29.1-pyhd8ed1ab_0.conda#ec2794be57ba0a88e8e0277d51d58361
+https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.0-pyhd8ed1ab_0.conda#13bf095e3ecd18999d65b4d3ac5b15d5
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/linux-64/scipy-1.5.3-py38hb2138dd_0.tar.bz2#e0ab8ace182b8d88a43c7e25a3ed092f
https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-6.4.2-pyhd8ed1ab_0.tar.bz2#4b55bf84b0f8113833a653d7ba1f52c8
@@ -244,7 +246,7 @@ https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyh41d4057_0.cond
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/tqdm-4.65.0-pyhd8ed1ab_1.conda#ed792aff3acb977d09c7013358097f83
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2
-https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.3-pyhd8ed1ab_1.conda#89efeecbb24c62e2f1ed0b8ca959ec69
+https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda#18badd8fa3648d1beb1fcc7f2e0f756e
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py38h0a891b7_3.tar.bz2#efcaa056d265a3138d2038a4b6b68791
https://conda.anaconda.org/conda-forge/linux-64/astropy-5.0.4-py38h71d37f0_0.tar.bz2#4156d702236001f841bc3404a007ea74
https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1005.tar.bz2#e99e08812dfff30fdd17b3f8838e2759
@@ -252,12 +254,12 @@ https://conda.anaconda.org/conda-forge/linux-64/cryptography-40.0.2-py38h3d167d9
https://conda.anaconda.org/conda-forge/linux-64/h5py-3.7.0-nompi_py38h045baee_101.tar.bz2#43f0ea307e05261913c6988d4537308f
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-7.3.0-hdb3a94d_0.conda#765bc76c0dfaf24ff9d8a2935b2510df
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
-https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.6.1-pyhd8ed1ab_0.conda#f1c5c9ad5e7885a4c99d516fa4c791b4
+https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda#7c0965e1d4a0ee1529e8eaa03a78a5b3
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.3-py38h38b5ce0_2.tar.bz2#0db5b110946be87a04643c1ba95c6ef9
https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e
https://conda.anaconda.org/conda-forge/noarch/pbr-5.11.1-pyhd8ed1ab_0.conda#5bde4ebca51438054099b9527c904ecb
-https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.0-pyhd8ed1ab_0.conda#9e3fd9b032f71b9518b13b61551f219c
+https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda#044e7a1e0ad42c4e67110bd078150a63
https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba
https://conda.anaconda.org/conda-forge/linux-64/pytables-3.7.0-py38hf632491_2.tar.bz2#a53a269544f1c3e27204dc35d0b6cdc7
https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda#06eb685a3a0b146347a58dda979485da
@@ -269,7 +271,7 @@ https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.cond
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.6-pyhd8ed1ab_0.conda#078979d33523cb477bd1916ce41aacc9
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
https://conda.anaconda.org/conda-forge/noarch/black-22.3.0-pyhd8ed1ab_0.tar.bz2#7ecbfaae9a30b73c1a6e36e4a0debc03
-https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.3-pyhd8ed1ab_0.conda#66f117feaf02e29f1b71c500cc0848cb
+https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda#7356151a32ebd9a20158d2f26d224bfa
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.3.0-py38h578d9bd_0.conda#d75b783a348cf33c6d3d75480300fecd
https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-heaa33ce_1.conda#cde553e0e32389e26595db4eacf859eb
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.39-pyha770c72_0.conda#a4986c6bb5b0d05a38855b0880a5f425
@@ -298,15 +300,18 @@ https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#
https://conda.anaconda.org/conda-forge/noarch/sphinx-astropy-1.9.1-pyhd8ed1ab_0.conda#b6a0939e7b6b3a854b8c8f04606da1a7
https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-1.2.2-pyha770c72_0.conda#5ef6aaf2cfb3b656cdadb431daed6a9f
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.24.0-pyh71e2992_0.conda#cfafc9387c32a43a1b6d63633489cbc9
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.6.0-pyhd8ed1ab_0.conda#879782bde4bbdb4c7b5d4054504a20d5
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda#0cda9f218d791ed71c639c1e6cc52c92
https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.11-py38h83a7919_0.conda#ba5ed53d0f0f62048fd42790f897caba
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.7.0-pyhd8ed1ab_0.conda#7488cd1f4d35a2af96faa765b7e5b2f0
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.6.0-pyhd8ed1ab_0.conda#e8172ca42f2869bb90185c9356899e81
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.6.0-pyhd8ed1ab_0.conda#59976ee8df1c6f82c4aa94b5fd6b745e
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda#00a7300181018085bab62b6ffa630ac4
+https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda#38589f4104d11f2a59ff01a9f4e3bfb3
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda#942aa06b962c7e507884c6fbeb4d1f7d
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda#6f119203c5648ed2b0c36e4fa8b6b504
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.3-pyhd8ed1ab_0.conda#c861cae50ac4cbc6d573a947f67a2d0c
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.2-pyhd8ed1ab_0.conda#d1212b423fdd10d2da59601385561ff7
-https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.4-pyha770c72_0.conda#ec4ce3ce0a55ce21b6f5b86049b97af9
+https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.0-pyhd8ed1ab_0.conda#a8aa205f2b275a786cf6e55bb60a2d1a
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.4-pyhd8ed1ab_0.conda#39f955095a360b5cb5e15ada01eb62a5
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.7.5-pyhd8ed1ab_0.conda#24f3b831999b272ef42e2c1a6e9a0462
https://conda.anaconda.org/conda-forge/noarch/qgrid-1.3.1-pyhd8ed1ab_4.tar.bz2#fff68c7404813a1eb2678425f00e9917
diff --git a/conda-lock.yml b/conda-lock.yml
index 05a8ca8b9ab..93ec2f0e755 100644
--- a/conda-lock.yml
+++ b/conda-lock.yml
@@ -37,14 +37,14 @@ package:
- category: main
dependencies: {}
hash:
- md5: f5c65075fc34438d5b456c7f3f5ab695
- sha256: 0cf1bb3d0bfc5519b60af2c360fa4888fb838e1476b1e0f65b9dbc48b45c7345
+ md5: a73ecd2988327ad4c8f2c331482917f2
+ sha256: 525b7b6b5135b952ec1808de84e5eca57c7c7ff144e29ef3e96ae4040ff432c1
manager: conda
name: ca-certificates
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.5.7-hbcca054_0.conda
- version: 2023.5.7
+ url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda
+ version: 2023.7.22
- category: main
dependencies: {}
hash:
@@ -1385,14 +1385,14 @@ package:
dependencies:
python: '>=3.7'
hash:
- md5: 5d1b71c942b8421285934dad1d891ebc
- sha256: f839a6e04d94069f90dd85337ea9108f058dc76771bb469a413f32bb1ba0b256
+ md5: 7f3dbc9179b4dde7da98dfb151d0ad22
+ sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31
manager: conda
name: certifi
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.5.7-pyhd8ed1ab_0.conda
- version: 2023.5.7
+ url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda
+ version: 2023.7.22
- category: main
dependencies:
python: '>=3.7'
@@ -1410,14 +1410,14 @@ package:
__unix: ''
python: '>=3.8'
hash:
- md5: 4f63f3e01a26e7058eabfa5f984cd6f3
- sha256: fa46a7053309ff3f4b90b9c32b3c2a7353e3cf1e9807c08e75aed480630848b7
+ md5: 64dbb3b205546691a61204d1cfb208e3
+ sha256: 73392cf4851bf7c89e99518effea01d531360a4894c4218e768d5e03e89d7943
manager: conda
name: click
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.5-unix_pyh707e725_0.conda
- version: 8.1.5
+ url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.6-unix_pyh707e725_0.conda
+ version: 8.1.6
- category: main
dependencies:
python: '>=3.7'
@@ -1678,6 +1678,18 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2
version: 0.2.0
+- category: main
+ dependencies:
+ python: '>=3.7,<4.0'
+ hash:
+ md5: dac1dabba2b5a9d1aee175c5fcc7b436
+ sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
+ manager: conda
+ name: json5
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
+ version: 0.9.14
- category: main
dependencies:
python: ''
@@ -1692,16 +1704,16 @@ package:
version: '2.0'
- category: main
dependencies:
- python: '>=3.7'
+ python: '>=3.6'
hash:
- md5: 68037be2d9adb4f2646328f0c0198be7
- sha256: a7c1f40465c1d1df35e9b1b6a73f8f000d674cb3254d7fbc1efa2765029983d6
+ md5: 9e79315db0f0742b9a2215e122ef8fc9
+ sha256: bb05e43efe7dbd90caac7c303720b1a1c6581ac8e4e789719434e0e4a91b60f7
manager: conda
name: jupyterlab_widgets
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.4-pyhd8ed1ab_0.conda
- version: 1.1.4
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.1-pyhd8ed1ab_0.tar.bz2
+ version: 1.1.1
- category: main
dependencies:
libgcc-ng: '>=12'
@@ -1741,14 +1753,14 @@ package:
openssl: '>=3.1.1,<4.0a0'
zstd: '>=1.5.2,<1.6.0a0'
hash:
- md5: b3bcefde107f8ac4f114574df0e1972e
- sha256: b051122bf6e73715231a907c8bb2424638ced5e98170f96c7d3248083ec40be9
+ md5: 73d6b3c8d9a8f7f2703ef9163ab92b0e
+ sha256: 319f4db55b33ca6de0e0581305a3c73a83cfffa53c11b83013b1ec50542191da
manager: conda
name: libcurl
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.1.2-hca28451_1.conda
- version: 8.1.2
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.2.0-hca28451_0.conda
+ version: 8.2.0
- category: main
dependencies:
giflib: '>=5.2.1,<5.3.0a0'
@@ -2156,14 +2168,14 @@ package:
dependencies:
python: '>=3.3'
hash:
- md5: dd4f393d857e9283eef2442234bd05e3
- sha256: b7a8b9b2310b3ee74ba99eef9692e477bb8bddf110eff45784dee7d81a693455
+ md5: 3be9466311564f80f8056c0851fc5bb7
+ sha256: 73985a9a2dd7ccf77b7428a12148e1b381c8635e9195e47a652397e9a56284ce
manager: conda
name: python-fastjsonschema
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.17.1-pyhd8ed1ab_0.conda
- version: 2.17.1
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda
+ version: 2.18.0
- category: main
dependencies:
python: '>=3.6'
@@ -2238,14 +2250,14 @@ package:
python: '>=3.8,<3.9.0a0'
python_abi: 3.8.* *_cp38
hash:
- md5: c7caadfd6d9e01bf718cc824cf1677fd
- sha256: 403f86e99c9ec47b32909d131719a26c67191cba69ff1a1151083402afd1db51
+ md5: b735f2645ae63f01a36d8615a49acff7
+ sha256: 9260d66ab4a12e55e98360173d0c7af2d46c25942e590564e18f94e9a5141ee0
manager: conda
name: rpds-py
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.8.10-py38h0cc4f7c_0.conda
- version: 0.8.10
+ url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.9.2-py38h0cc4f7c_0.conda
+ version: 0.9.2
- category: main
dependencies:
__linux: ''
@@ -2546,14 +2558,14 @@ package:
dependencies:
python: '>=3.7'
hash:
- md5: c95fac682453aeffa12db7ae5a721bec
- sha256: e91cbb3c0ad9a9507dd030f5493831cb52da120329e0d0793711e8300a36db22
+ md5: 66beb36a1fa7e0dc9d9bf843a80eb82c
+ sha256: c35e6b6c8100e9e42ed0968aef99680b1d1ec5358d4ca0d2b2175f68c6b21dd6
manager: conda
name: wheel
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.40.0-pyhd8ed1ab_1.conda
- version: 0.40.0
+ url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda
+ version: 0.41.0
- category: main
dependencies:
libgcc-ng: '>=12'
@@ -2623,6 +2635,19 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda
version: 2.2.1
+- category: main
+ dependencies:
+ python: '>=3.8'
+ typing_extensions: '>=4.0.0'
+ hash:
+ md5: a3d2d43b74e042567cc4b5e328534885
+ sha256: 673d57dd2c7acb5b1685f8ddeb992d246fcdd658f2c7bba9b4ea3c023bacaf93
+ manager: conda
+ name: async-lru
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda
+ version: 2.0.3
- category: main
dependencies:
python: '>=3.7'
@@ -2797,14 +2822,14 @@ package:
python_abi: 3.8.* *_cp38
unicodedata2: '>=14.0.0'
hash:
- md5: badab474003e57dc09220994bc4ab204
- sha256: 931a76e846059fb85839c7927d14bb681a5cb1e7f2d6fbde61586a2ecb27a5e6
+ md5: 4f78fe4f58e6d708b28139c192f854c2
+ sha256: 3aa57c8ff1c7038906eb421e4e76d6f6178610913bc46b62269899c99ceb0fba
manager: conda
name: fonttools
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.0-py38h01eb140_0.conda
- version: 4.41.0
+ url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.1-py38h01eb140_0.conda
+ version: 4.41.1
- category: main
dependencies:
libaec: '>=1.0.6,<2.0a0'
@@ -3030,14 +3055,14 @@ package:
setuptools: ''
wheel: ''
hash:
- md5: fb90dfe13ce16c0a3374e3d34e3291c5
- sha256: 31e71fc25dbc411c1595661c8eb2c2491e71895ce6954ea2d0e9a585d39eed57
+ md5: e2783aa3f9235225eec92f9081c5b801
+ sha256: 9e401b171856e12f6aa32ae5cc1ae1d3708aa7d705ddf359ee7dd0dffd73c2b5
manager: conda
name: pip
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/pip-23.2-pyhd8ed1ab_0.conda
- version: '23.2'
+ url: https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda
+ version: 23.2.1
- category: main
dependencies:
packaging: ''
@@ -3104,14 +3129,14 @@ package:
python: '>=3.8'
rpds-py: '>=0.7.0'
hash:
- md5: ec2794be57ba0a88e8e0277d51d58361
- sha256: 82529d844a0a8e099a11e38558ae8d0466be3b4e6b8a69538cc3631afced1c09
+ md5: 13bf095e3ecd18999d65b4d3ac5b15d5
+ sha256: 870e8bdb4a14ad831e3fa5656827bfc6a129433ba9c7ab537f0aedb95064dbcd
manager: conda
name: referencing
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.29.1-pyhd8ed1ab_0.conda
- version: 0.29.1
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.0-pyhd8ed1ab_0.conda
+ version: 0.30.0
- category: main
dependencies:
python: '>=3.5'
@@ -3248,14 +3273,14 @@ package:
pysocks: '>=1.5.6,<2.0,!=1.5.7'
python: '>=3.7'
hash:
- md5: 89efeecbb24c62e2f1ed0b8ca959ec69
- sha256: 60b64b483b2c662f946837043d95c1a5d90948464a834403b0e3bce373a96a1e
+ md5: 18badd8fa3648d1beb1fcc7f2e0f756e
+ sha256: 06a62b6bff8828161b9cd17dd394e47177f320ca5050f806bc7840f9519e8ea7
manager: conda
name: urllib3
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.3-pyhd8ed1ab_1.conda
- version: 2.0.3
+ url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda
+ version: 2.0.4
- category: main
dependencies:
cffi: '>=1.0.1'
@@ -3374,14 +3399,14 @@ package:
python: '>=3.8'
referencing: '>=0.25.0'
hash:
- md5: f1c5c9ad5e7885a4c99d516fa4c791b4
- sha256: 21cf2f9075afdb430aa0929319d8ea2148771d0de6b68000f5f3236ec5109c4f
+ md5: 7c27ea1bdbe520bb830dcadd59f55cbf
+ sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc
manager: conda
name: jsonschema-specifications
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.6.1-pyhd8ed1ab_0.conda
- version: 2023.6.1
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda
+ version: 2023.7.1
- category: main
dependencies:
python: '>=3.8'
@@ -3458,14 +3483,14 @@ package:
python: '>=3.7'
typing-extensions: '>=4.6.3'
hash:
- md5: 9e3fd9b032f71b9518b13b61551f219c
- sha256: 43935aaf0843d29271e9698a790b224e31fefa424cdd8ec6e62907beb9a5a3f6
+ md5: 044e7a1e0ad42c4e67110bd078150a63
+ sha256: 885611bd528abaf3e31bc0bfaad3a619cfe89db61d886b53c2a9ec9ff50edebe
manager: conda
name: platformdirs
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.0-pyhd8ed1ab_0.conda
- version: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda
+ version: 3.9.1
- category: main
dependencies:
latexcodec: '>=1.0.4'
@@ -3650,14 +3675,14 @@ package:
referencing: '>=0.28.4'
rpds-py: '>=0.7.1'
hash:
- md5: 66f117feaf02e29f1b71c500cc0848cb
- sha256: 4aa27035e88d27aa6d269f718b4e9a335e0d444e3c6b245dfc6c6065a3d79806
+ md5: 7356151a32ebd9a20158d2f26d224bfa
+ sha256: 09e339fc7895af45c3e183f51944f7fadf4ae3f837f6c85f6397023993336a3b
manager: conda
name: jsonschema
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.3-pyhd8ed1ab_0.conda
- version: 4.18.3
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda
+ version: 4.18.4
- category: main
dependencies:
platformdirs: '>=2.5'
@@ -4163,18 +4188,18 @@ package:
packaging: ''
pandocfilters: '>=1.4.1'
pygments: '>=2.4.1'
- python: '>=3.7'
+ python: '>=3.8'
tinycss2: ''
traitlets: '>=5.0'
hash:
- md5: 879782bde4bbdb4c7b5d4054504a20d5
- sha256: cebfc8c620bdc950e92f72562d281fc57d696497e30bef5bc9e517be757b1c2f
+ md5: 0cda9f218d791ed71c639c1e6cc52c92
+ sha256: c4a0931f1673050b174a90976e415502156d330962b5189af212ba2645765567
manager: conda
name: nbconvert-core
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.6.0-pyhd8ed1ab_0.conda
- version: 7.6.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda
+ version: 7.7.2
- category: main
dependencies:
graphviz: '>=8.0.5,<9.0a0'
@@ -4222,32 +4247,66 @@ package:
version: 2.7.0
- category: main
dependencies:
- nbconvert-core: 7.6.0 pyhd8ed1ab_0
+ nbconvert-core: 7.7.2 pyhd8ed1ab_0
pandoc: ''
- python: '>=3.7'
+ python: '>=3.8'
hash:
- md5: e8172ca42f2869bb90185c9356899e81
- sha256: 07204ee7a7f429aa30c78897629c79859a60ef77fd1c2b9d9a1ad084c144a84f
+ md5: 00a7300181018085bab62b6ffa630ac4
+ sha256: ed7ac2f87bc04c84a123be06c2c1a090c2b8ea546674575dd00317698470c9cb
manager: conda
name: nbconvert-pandoc
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.6.0-pyhd8ed1ab_0.conda
- version: 7.6.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda
+ version: 7.7.2
+- category: main
+ dependencies:
+ importlib-metadata: '>=4.8.3'
+ jupyter_server: '>=1.1.2'
+ python: '>=3.8'
+ hash:
+ md5: 38589f4104d11f2a59ff01a9f4e3bfb3
+ sha256: 16fc7b40024adece716ba7227e5c123a2deccc13f946a10d9a3270493908d11c
+ manager: conda
+ name: jupyter-lsp
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda
+ version: 2.2.0
- category: main
dependencies:
- nbconvert-core: 7.6.0 pyhd8ed1ab_0
- nbconvert-pandoc: 7.6.0 pyhd8ed1ab_0
+ babel: '>=2.10'
+ importlib-metadata: '>=4.8.3'
+ jinja2: '>=3.0.3'
+ json5: '>=0.9.0'
+ jsonschema: '>=4.17.3'
+ jupyter_server: '>=1.21,<3'
+ packaging: '>=21.3'
python: '>=3.7'
+ requests: '>=2.28'
hash:
- md5: 59976ee8df1c6f82c4aa94b5fd6b745e
- sha256: c4fa59b7a23456c7488863b9521bfca2a62ed5061150402b7f66c6c8b3b332ea
+ md5: 942aa06b962c7e507884c6fbeb4d1f7d
+ sha256: 4f19476ef5d4cc712bc0323f36fb06ef5b1a24abcaec4fd87e5efc12ef9d6073
+ manager: conda
+ name: jupyterlab_server
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda
+ version: 2.23.0
+- category: main
+ dependencies:
+ nbconvert-core: 7.7.2 pyhd8ed1ab_0
+ nbconvert-pandoc: 7.7.2 pyhd8ed1ab_0
+ python: '>=3.8'
+ hash:
+ md5: 6f119203c5648ed2b0c36e4fa8b6b504
+ sha256: 9209b5facc69561dac9fe8c8e51471d1c5bcdd4ded396a1ae465497b7eea4162
manager: conda
name: nbconvert
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.6.0-pyhd8ed1ab_0.conda
- version: 7.6.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda
+ version: 7.7.2
- category: main
dependencies:
jupyter_server: '>=1.8,<3'
@@ -4261,6 +4320,32 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
version: 0.2.3
+- category: main
+ dependencies:
+ async-lru: '>=1.0.0'
+ importlib_metadata: '>=4.8.3'
+ importlib_resources: '>=1.4'
+ ipykernel: ''
+ jinja2: '>=3.0.3'
+ jupyter-lsp: '>=2.0.0'
+ jupyter_core: ''
+ jupyter_server: '>=2.4.0,<3'
+ jupyterlab_server: '>=2.19.0,<3'
+ notebook-shim: '>=0.2'
+ packaging: ''
+ python: '>=3.8'
+ tomli: ''
+ tornado: '>=6.2.0'
+ traitlets: ''
+ hash:
+ md5: c861cae50ac4cbc6d573a947f67a2d0c
+ sha256: 57b15a0503b0c261e6dbafd1cfb40089ea994ca08c6b89bf43d37a53b3c28b4e
+ manager: conda
+ name: jupyterlab
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.3-pyhd8ed1ab_0.conda
+ version: 4.0.3
- category: main
dependencies:
argon2-cffi: ''
@@ -4310,32 +4395,22 @@ package:
version: 0.9.2
- category: main
dependencies:
- argon2-cffi: ''
- ipykernel: ''
- ipython_genutils: ''
- jinja2: ''
- jupyter_client: '>=5.3.4'
- jupyter_core: '>=4.6.1'
- nbclassic: '>=0.4.7'
- nbconvert-core: '>=5'
- nbformat: ''
- nest-asyncio: '>=1.5'
- prometheus_client: ''
- python: '>=3.7'
- pyzmq: '>=17'
- send2trash: '>=1.8.0'
- terminado: '>=0.8.3'
- tornado: '>=6.1'
- traitlets: '>=4.2.1'
+ importlib_resources: '>=5.0'
+ jupyter_server: '>=2.4.0,<3'
+ jupyterlab: '>=4.0.2,<5'
+ jupyterlab_server: '>=2.22.1,<3'
+ notebook-shim: '>=0.2,<0.3'
+ python: '>=3.8'
+ tornado: '>=6.2.0'
hash:
- md5: ec4ce3ce0a55ce21b6f5b86049b97af9
- sha256: f1fb8078ac594ff6dbca271e1432b4312cc10c16c6fbddfe77d4102c778235cf
+ md5: a8aa205f2b275a786cf6e55bb60a2d1a
+ sha256: 5dd2f155dda813d2294a25cebf33fc3b0fbaa63685771c34866447f33ed7d602
manager: conda
name: notebook
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.4-pyha770c72_0.conda
- version: 6.5.4
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.0-pyhd8ed1ab_0.conda
+ version: 7.0.0
- category: main
dependencies:
notebook: '>=4.4.1'
@@ -4408,14 +4483,14 @@ package:
- category: main
dependencies: {}
hash:
- md5: b704e4b79ba0d887c4870b7b09d6a4df
- sha256: a06c9c788de81da3a3868ac56781680cc1fc50a0b5a545d4453818975c141b2c
+ md5: bf2c54c18997bf3542af074c10191771
+ sha256: 27de15e18a12117e83ac1eb8a8e52eb65731cc7f0b607a7922206a15e2460c7b
manager: conda
name: ca-certificates
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2023.5.7-h8857fd0_0.conda
- version: 2023.5.7
+ url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2023.7.22-h8857fd0_0.conda
+ version: 2023.7.22
- category: main
dependencies: {}
hash:
@@ -4873,14 +4948,14 @@ package:
dependencies:
llvm-openmp: '>=8.0.0'
hash:
- md5: 5a544130e584b1f204ac896ff071d5b3
- sha256: 42ae06bbb3cf7f7c3194482894f4287fad7bc39214d1a0dbf0c43f8efb8d3c1a
+ md5: 0f2fa6f0d82c0ab4086273e6aaf676f0
+ sha256: 5cbf349415f87c9b2ecd37b511e34b12160acc5e644923879bb5996bc7fca32c
manager: conda
name: libgfortran5
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.2.0-he409387_31.conda
- version: 12.2.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_0.conda
+ version: 12.3.0
- category: main
dependencies:
libzlib: '>=1.2.13,<1.3.0a0'
@@ -5140,13 +5215,13 @@ package:
dependencies:
libgfortran5: ''
hash:
- md5: 97451338600bd9c5b535eb224ef6c471
- sha256: 55d3c81ce8cd931260c3cb8c85868e36223d2bd0d5e2f35a79503810ee172769
+ md5: 61ac1068cc7720b5fad685b08e43c344
+ sha256: f257c979dc528d771c46a950db97d3cc21893ab0bbc968c5d49625a798971a9b
manager: conda
name: libgfortran
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-11_3_0_h97931a8_31.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_0.conda
version: 5.0.0
- category: main
dependencies:
@@ -5426,14 +5501,14 @@ package:
dependencies:
python: '>=3.7'
hash:
- md5: 5d1b71c942b8421285934dad1d891ebc
- sha256: f839a6e04d94069f90dd85337ea9108f058dc76771bb469a413f32bb1ba0b256
+ md5: 7f3dbc9179b4dde7da98dfb151d0ad22
+ sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31
manager: conda
name: certifi
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.5.7-pyhd8ed1ab_0.conda
- version: 2023.5.7
+ url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda
+ version: 2023.7.22
- category: main
dependencies:
python: '>=3.7'
@@ -5451,14 +5526,14 @@ package:
__unix: ''
python: '>=3.8'
hash:
- md5: 4f63f3e01a26e7058eabfa5f984cd6f3
- sha256: fa46a7053309ff3f4b90b9c32b3c2a7353e3cf1e9807c08e75aed480630848b7
+ md5: 64dbb3b205546691a61204d1cfb208e3
+ sha256: 73392cf4851bf7c89e99518effea01d531360a4894c4218e768d5e03e89d7943
manager: conda
name: click
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.5-unix_pyh707e725_0.conda
- version: 8.1.5
+ url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.6-unix_pyh707e725_0.conda
+ version: 8.1.6
- category: main
dependencies:
python: '>=3.7'
@@ -5697,6 +5772,18 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2
version: 0.2.0
+- category: main
+ dependencies:
+ python: '>=3.7,<4.0'
+ hash:
+ md5: dac1dabba2b5a9d1aee175c5fcc7b436
+ sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
+ manager: conda
+ name: json5
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
+ version: 0.9.14
- category: main
dependencies:
python: ''
@@ -5711,16 +5798,16 @@ package:
version: '2.0'
- category: main
dependencies:
- python: '>=3.7'
+ python: '>=3.6'
hash:
- md5: 68037be2d9adb4f2646328f0c0198be7
- sha256: a7c1f40465c1d1df35e9b1b6a73f8f000d674cb3254d7fbc1efa2765029983d6
+ md5: 9e79315db0f0742b9a2215e122ef8fc9
+ sha256: bb05e43efe7dbd90caac7c303720b1a1c6581ac8e4e789719434e0e4a91b60f7
manager: conda
name: jupyterlab_widgets
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.4-pyhd8ed1ab_0.conda
- version: 1.1.4
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.1-pyhd8ed1ab_0.tar.bz2
+ version: 1.1.1
- category: main
dependencies:
libcxx: '>=14.0.4'
@@ -5757,14 +5844,14 @@ package:
openssl: '>=3.1.1,<4.0a0'
zstd: '>=1.5.2,<1.6.0a0'
hash:
- md5: 93b84dbd72610ffd883c017123df0283
- sha256: dfcd3144b6066337eac4e9057d394a6ef92073f503303ade7e226bfdd0dc30d0
+ md5: d4a20b5cacc98af6020576836b408a82
+ sha256: 26e2f378d307beed19dfb024ce13c058f374b72b15d219eec1a20ab70bebe7f0
manager: conda
name: libcurl
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.1.2-h5f667d7_1.conda
- version: 8.1.2
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.2.0-h5f667d7_0.conda
+ version: 8.2.0
- category: main
dependencies:
libgfortran: 5.*
@@ -6175,14 +6262,14 @@ package:
dependencies:
python: '>=3.3'
hash:
- md5: dd4f393d857e9283eef2442234bd05e3
- sha256: b7a8b9b2310b3ee74ba99eef9692e477bb8bddf110eff45784dee7d81a693455
+ md5: 3be9466311564f80f8056c0851fc5bb7
+ sha256: 73985a9a2dd7ccf77b7428a12148e1b381c8635e9195e47a652397e9a56284ce
manager: conda
name: python-fastjsonschema
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.17.1-pyhd8ed1ab_0.conda
- version: 2.17.1
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda
+ version: 2.18.0
- category: main
dependencies:
python: '>=3.6'
@@ -6254,14 +6341,14 @@ package:
python: '>=3.8,<3.9.0a0'
python_abi: 3.8.* *_cp38
hash:
- md5: 7e08730edd98d3b1c69ad70464f1cdde
- sha256: be407fd54fc599bf837d62efcb5797c0f30aaf5101229fab6cd18a18f4b19909
+ md5: bbd51a20bd2a5ad644516f860b9570aa
+ sha256: 97455d82429325030d0f2b0056daaad9089cc565c421e6988638b71109ad5fc3
manager: conda
name: rpds-py
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.8.10-py38h7510fb3_0.conda
- version: 0.8.10
+ url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.9.2-py38h7510fb3_0.conda
+ version: 0.9.2
- category: main
dependencies:
python: '>=3.8,<3.9.0a0'
@@ -6546,14 +6633,14 @@ package:
dependencies:
python: '>=3.7'
hash:
- md5: c95fac682453aeffa12db7ae5a721bec
- sha256: e91cbb3c0ad9a9507dd030f5493831cb52da120329e0d0793711e8300a36db22
+ md5: 66beb36a1fa7e0dc9d9bf843a80eb82c
+ sha256: c35e6b6c8100e9e42ed0968aef99680b1d1ec5358d4ca0d2b2175f68c6b21dd6
manager: conda
name: wheel
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.40.0-pyhd8ed1ab_1.conda
- version: 0.40.0
+ url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda
+ version: 0.41.0
- category: main
dependencies:
python: '>=3.8'
@@ -6595,6 +6682,19 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda
version: 2.2.1
+- category: main
+ dependencies:
+ python: '>=3.8'
+ typing_extensions: '>=4.0.0'
+ hash:
+ md5: a3d2d43b74e042567cc4b5e328534885
+ sha256: 673d57dd2c7acb5b1685f8ddeb992d246fcdd658f2c7bba9b4ea3c023bacaf93
+ manager: conda
+ name: async-lru
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda
+ version: 2.0.3
- category: main
dependencies:
python: '>=3.7'
@@ -6759,14 +6859,14 @@ package:
python_abi: 3.8.* *_cp38
unicodedata2: '>=14.0.0'
hash:
- md5: 5a0d8ce9639c035bafcd25757bf82fb7
- sha256: 40ae53c0c8e2610e976efa57bd127d4e0e4941d0aced801699dbf17a919a9cdd
+ md5: 720e11c21be65a5f62a7861026afa3ce
+ sha256: 6a1d6043627ea2bf6206f93178cf22bb91be22d07394dd2a71092470777cda13
manager: conda
name: fonttools
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.41.0-py38hcafd530_0.conda
- version: 4.41.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.41.1-py38hcafd530_0.conda
+ version: 4.41.1
- category: main
dependencies:
gmp: '>=6.2.1,<7.0a0'
@@ -6982,14 +7082,14 @@ package:
setuptools: ''
wheel: ''
hash:
- md5: fb90dfe13ce16c0a3374e3d34e3291c5
- sha256: 31e71fc25dbc411c1595661c8eb2c2491e71895ce6954ea2d0e9a585d39eed57
+ md5: e2783aa3f9235225eec92f9081c5b801
+ sha256: 9e401b171856e12f6aa32ae5cc1ae1d3708aa7d705ddf359ee7dd0dffd73c2b5
manager: conda
name: pip
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/pip-23.2-pyhd8ed1ab_0.conda
- version: '23.2'
+ url: https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda
+ version: 23.2.1
- category: main
dependencies:
packaging: ''
@@ -7056,14 +7156,14 @@ package:
python: '>=3.8'
rpds-py: '>=0.7.0'
hash:
- md5: ec2794be57ba0a88e8e0277d51d58361
- sha256: 82529d844a0a8e099a11e38558ae8d0466be3b4e6b8a69538cc3631afced1c09
+ md5: 13bf095e3ecd18999d65b4d3ac5b15d5
+ sha256: 870e8bdb4a14ad831e3fa5656827bfc6a129433ba9c7ab537f0aedb95064dbcd
manager: conda
name: referencing
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.29.1-pyhd8ed1ab_0.conda
- version: 0.29.1
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.0-pyhd8ed1ab_0.conda
+ version: 0.30.0
- category: main
dependencies:
python: '>=3.5'
@@ -7164,14 +7264,14 @@ package:
pysocks: '>=1.5.6,<2.0,!=1.5.7'
python: '>=3.7'
hash:
- md5: 89efeecbb24c62e2f1ed0b8ca959ec69
- sha256: 60b64b483b2c662f946837043d95c1a5d90948464a834403b0e3bce373a96a1e
+ md5: 18badd8fa3648d1beb1fcc7f2e0f756e
+ sha256: 06a62b6bff8828161b9cd17dd394e47177f320ca5050f806bc7840f9519e8ea7
manager: conda
name: urllib3
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.3-pyhd8ed1ab_1.conda
- version: 2.0.3
+ url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda
+ version: 2.0.4
- category: main
dependencies:
cffi: '>=1.0.1'
@@ -7250,14 +7350,14 @@ package:
python: '>=3.8'
referencing: '>=0.25.0'
hash:
- md5: f1c5c9ad5e7885a4c99d516fa4c791b4
- sha256: 21cf2f9075afdb430aa0929319d8ea2148771d0de6b68000f5f3236ec5109c4f
+ md5: 7c27ea1bdbe520bb830dcadd59f55cbf
+ sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc
manager: conda
name: jsonschema-specifications
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.6.1-pyhd8ed1ab_0.conda
- version: 2023.6.1
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda
+ version: 2023.7.1
- category: main
dependencies:
python: '>=3.8'
@@ -7313,14 +7413,14 @@ package:
python: '>=3.7'
typing-extensions: '>=4.6.3'
hash:
- md5: 9e3fd9b032f71b9518b13b61551f219c
- sha256: 43935aaf0843d29271e9698a790b224e31fefa424cdd8ec6e62907beb9a5a3f6
+ md5: 044e7a1e0ad42c4e67110bd078150a63
+ sha256: 885611bd528abaf3e31bc0bfaad3a619cfe89db61d886b53c2a9ec9ff50edebe
manager: conda
name: platformdirs
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.0-pyhd8ed1ab_0.conda
- version: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda
+ version: 3.9.1
- category: main
dependencies:
latexcodec: '>=1.0.4'
@@ -7511,14 +7611,14 @@ package:
referencing: '>=0.28.4'
rpds-py: '>=0.7.1'
hash:
- md5: 66f117feaf02e29f1b71c500cc0848cb
- sha256: 4aa27035e88d27aa6d269f718b4e9a335e0d444e3c6b245dfc6c6065a3d79806
+ md5: 7356151a32ebd9a20158d2f26d224bfa
+ sha256: 09e339fc7895af45c3e183f51944f7fadf4ae3f837f6c85f6397023993336a3b
manager: conda
name: jsonschema
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.3-pyhd8ed1ab_0.conda
- version: 4.18.3
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda
+ version: 4.18.4
- category: main
dependencies:
platformdirs: '>=2.5'
@@ -8197,18 +8297,18 @@ package:
packaging: ''
pandocfilters: '>=1.4.1'
pygments: '>=2.4.1'
- python: '>=3.7'
+ python: '>=3.8'
tinycss2: ''
traitlets: '>=5.0'
hash:
- md5: 879782bde4bbdb4c7b5d4054504a20d5
- sha256: cebfc8c620bdc950e92f72562d281fc57d696497e30bef5bc9e517be757b1c2f
+ md5: 0cda9f218d791ed71c639c1e6cc52c92
+ sha256: c4a0931f1673050b174a90976e415502156d330962b5189af212ba2645765567
manager: conda
name: nbconvert-core
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.6.0-pyhd8ed1ab_0.conda
- version: 7.6.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda
+ version: 7.7.2
- category: main
dependencies:
graphviz: '>=8.0.5,<9.0a0'
@@ -8276,32 +8376,66 @@ package:
version: 2.7.0
- category: main
dependencies:
- nbconvert-core: 7.6.0 pyhd8ed1ab_0
+ nbconvert-core: 7.7.2 pyhd8ed1ab_0
pandoc: ''
- python: '>=3.7'
+ python: '>=3.8'
hash:
- md5: e8172ca42f2869bb90185c9356899e81
- sha256: 07204ee7a7f429aa30c78897629c79859a60ef77fd1c2b9d9a1ad084c144a84f
+ md5: 00a7300181018085bab62b6ffa630ac4
+ sha256: ed7ac2f87bc04c84a123be06c2c1a090c2b8ea546674575dd00317698470c9cb
manager: conda
name: nbconvert-pandoc
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.6.0-pyhd8ed1ab_0.conda
- version: 7.6.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda
+ version: 7.7.2
+- category: main
+ dependencies:
+ importlib-metadata: '>=4.8.3'
+ jupyter_server: '>=1.1.2'
+ python: '>=3.8'
+ hash:
+ md5: 38589f4104d11f2a59ff01a9f4e3bfb3
+ sha256: 16fc7b40024adece716ba7227e5c123a2deccc13f946a10d9a3270493908d11c
+ manager: conda
+ name: jupyter-lsp
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda
+ version: 2.2.0
- category: main
dependencies:
- nbconvert-core: 7.6.0 pyhd8ed1ab_0
- nbconvert-pandoc: 7.6.0 pyhd8ed1ab_0
+ babel: '>=2.10'
+ importlib-metadata: '>=4.8.3'
+ jinja2: '>=3.0.3'
+ json5: '>=0.9.0'
+ jsonschema: '>=4.17.3'
+ jupyter_server: '>=1.21,<3'
+ packaging: '>=21.3'
python: '>=3.7'
+ requests: '>=2.28'
hash:
- md5: 59976ee8df1c6f82c4aa94b5fd6b745e
- sha256: c4fa59b7a23456c7488863b9521bfca2a62ed5061150402b7f66c6c8b3b332ea
+ md5: 942aa06b962c7e507884c6fbeb4d1f7d
+ sha256: 4f19476ef5d4cc712bc0323f36fb06ef5b1a24abcaec4fd87e5efc12ef9d6073
+ manager: conda
+ name: jupyterlab_server
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda
+ version: 2.23.0
+- category: main
+ dependencies:
+ nbconvert-core: 7.7.2 pyhd8ed1ab_0
+ nbconvert-pandoc: 7.7.2 pyhd8ed1ab_0
+ python: '>=3.8'
+ hash:
+ md5: 6f119203c5648ed2b0c36e4fa8b6b504
+ sha256: 9209b5facc69561dac9fe8c8e51471d1c5bcdd4ded396a1ae465497b7eea4162
manager: conda
name: nbconvert
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.6.0-pyhd8ed1ab_0.conda
- version: 7.6.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda
+ version: 7.7.2
- category: main
dependencies:
jupyter_server: '>=1.8,<3'
@@ -8315,6 +8449,32 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
version: 0.2.3
+- category: main
+ dependencies:
+ async-lru: '>=1.0.0'
+ importlib_metadata: '>=4.8.3'
+ importlib_resources: '>=1.4'
+ ipykernel: ''
+ jinja2: '>=3.0.3'
+ jupyter-lsp: '>=2.0.0'
+ jupyter_core: ''
+ jupyter_server: '>=2.4.0,<3'
+ jupyterlab_server: '>=2.19.0,<3'
+ notebook-shim: '>=0.2'
+ packaging: ''
+ python: '>=3.8'
+ tomli: ''
+ tornado: '>=6.2.0'
+ traitlets: ''
+ hash:
+ md5: c861cae50ac4cbc6d573a947f67a2d0c
+ sha256: 57b15a0503b0c261e6dbafd1cfb40089ea994ca08c6b89bf43d37a53b3c28b4e
+ manager: conda
+ name: jupyterlab
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.3-pyhd8ed1ab_0.conda
+ version: 4.0.3
- category: main
dependencies:
argon2-cffi: ''
@@ -8364,32 +8524,22 @@ package:
version: 0.9.2
- category: main
dependencies:
- argon2-cffi: ''
- ipykernel: ''
- ipython_genutils: ''
- jinja2: ''
- jupyter_client: '>=5.3.4'
- jupyter_core: '>=4.6.1'
- nbclassic: '>=0.4.7'
- nbconvert-core: '>=5'
- nbformat: ''
- nest-asyncio: '>=1.5'
- prometheus_client: ''
- python: '>=3.7'
- pyzmq: '>=17'
- send2trash: '>=1.8.0'
- terminado: '>=0.8.3'
- tornado: '>=6.1'
- traitlets: '>=4.2.1'
+ importlib_resources: '>=5.0'
+ jupyter_server: '>=2.4.0,<3'
+ jupyterlab: '>=4.0.2,<5'
+ jupyterlab_server: '>=2.22.1,<3'
+ notebook-shim: '>=0.2,<0.3'
+ python: '>=3.8'
+ tornado: '>=6.2.0'
hash:
- md5: ec4ce3ce0a55ce21b6f5b86049b97af9
- sha256: f1fb8078ac594ff6dbca271e1432b4312cc10c16c6fbddfe77d4102c778235cf
+ md5: a8aa205f2b275a786cf6e55bb60a2d1a
+ sha256: 5dd2f155dda813d2294a25cebf33fc3b0fbaa63685771c34866447f33ed7d602
manager: conda
name: notebook
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.4-pyha770c72_0.conda
- version: 6.5.4
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.0-pyhd8ed1ab_0.conda
+ version: 7.0.0
- category: main
dependencies:
notebook: '>=4.4.1'
diff --git a/conda-osx-64.lock b/conda-osx-64.lock
index 6f06e2dbd0a..ff38860331b 100644
--- a/conda-osx-64.lock
+++ b/conda-osx-64.lock
@@ -4,7 +4,7 @@
@EXPLICIT
https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5
https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.19.1-h0dc2134_0.conda#b3e62631b4e1b9801477523ce1d6f355
-https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2023.5.7-h8857fd0_0.conda#b704e4b79ba0d887c4870b7b09d6a4df
+https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2023.7.22-h8857fd0_0.conda#bf2c54c18997bf3542af074c10191771
https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45
https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6
https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb
@@ -45,7 +45,7 @@ https://conda.anaconda.org/conda-forge/osx-64/libaec-1.0.6-hf0c8a7f_1.conda#7c0f
https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.0.9-hb7f2c08_9.conda#4043ef9fe42e178785e0e1853b79bdf9
https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.0.9-hb7f2c08_9.conda#b64d4dcc70aa141db7fccbf13bad81e1
https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2#6016a8a1d0e63cac3de2c352cd40208b
-https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.2.0-he409387_31.conda#5a544130e584b1f204ac896ff071d5b3
+https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_0.conda#0f2fa6f0d82c0ab4086273e6aaf676f0
https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.39-ha978bb4_0.conda#35e4928794c5391aec14ffdf1deaaee5
https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.42.0-h58db7d2_0.conda#a7d3b44b7b0c9901ac7813b7a0462893
https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda#5513f57e0238c87c12dffedbcc9c1a4a
@@ -66,7 +66,7 @@ https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-hb7f2c08_9.conda#
https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab
https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h3f81eb7_1.conda#852224ea3e8991a8342228eab274840e
https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.1-hb884880_0.conda#d4989bfe4cc9daec567a9935f5ad520b
-https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-11_3_0_h97931a8_31.conda#97451338600bd9c5b535eb224ef6c471
+https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_0.conda#61ac1068cc7720b5fad685b08e43c344
https://conda.anaconda.org/conda-forge/osx-64/libglib-2.76.4-hc62aa5d_0.conda#05c728fccc40277119bf94cf08e38384
https://conda.anaconda.org/conda-forge/osx-64/libllvm10-10.0.1-h009f743_3.tar.bz2#cc65eb0b26253d2789320bfd661852f9
https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.52.0-he2ab024_0.conda#12ac7d100bf260263e30a019517f42a2
@@ -87,9 +87,9 @@ https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda#5
https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-hb7f2c08_9.conda#53cff90f0cea22e13e5b791f0e5a8e7d
https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.0.9-py38h4cd09af_9.conda#f958e25488ff7e044031bca8a6c5267b
https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a
-https://conda.anaconda.org/conda-forge/noarch/certifi-2023.5.7-pyhd8ed1ab_0.conda#5d1b71c942b8421285934dad1d891ebc
+https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda#313516e9a4b08b12dfb1e1cd390a96e3
-https://conda.anaconda.org/conda-forge/noarch/click-8.1.5-unix_pyh707e725_0.conda#4f63f3e01a26e7058eabfa5f984cd6f3
+https://conda.anaconda.org/conda-forge/noarch/click-8.1.6-unix_pyh707e725_0.conda#64dbb3b205546691a61204d1cfb208e3
https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99
https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb
https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
@@ -109,11 +109,12 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#3427
https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352
https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287
+https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda#dac1dabba2b5a9d1aee175c5fcc7b436
https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85c22a3beb102a48cd123df84c2a6
-https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.4-pyhd8ed1ab_0.conda#68037be2d9adb4f2646328f0c0198be7
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.1-pyhd8ed1ab_0.tar.bz2#9e79315db0f0742b9a2215e122ef8fc9
https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.4-py38h98b9b1b_1.tar.bz2#c11eff21a36bc5809b8e23a05ee71df8
https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.15-h2dcdeff_1.conda#f1df9b0c2d9fbe985e62f4b24773a9e4
-https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.1.2-h5f667d7_1.conda#93b84dbd72610ffd883c017123df0283
+https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.2.0-h5f667d7_0.conda#d4a20b5cacc98af6020576836b408a82
https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.23-openmp_h429af6e_0.conda#7000a828e29608e4f57e662b5502d2c9
https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.3.1-hc961f54_0.conda#ac4284f6ef79242e1f1eeb2e6cbdffc4
https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.36.0-py38h872f124_0.tar.bz2#4f2f6cb8e2212d9933fbf8729c5641e5
@@ -146,13 +147,13 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda
https://conda.anaconda.org/conda-forge/osx-64/pyrsistent-0.19.3-py38hef030d1_0.conda#01ca11f08679d88fc881a19902a0a008
https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025
https://conda.anaconda.org/conda-forge/noarch/python-dokuwiki-1.3.3-pyhd8ed1ab_0.tar.bz2#a13dedbf73a833f0fbb2cb34467db1a3
-https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.17.1-pyhd8ed1ab_0.conda#dd4f393d857e9283eef2442234bd05e3
+https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda#3be9466311564f80f8056c0851fc5bb7
https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960
https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31
https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py38hef030d1_5.tar.bz2#e27d698dc29c6d5b49f1385bcd1d50f9
https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.0-py38h3b70857_0.conda#a48761bc98b3bc22d209e9bb2f3dc5c1
https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f
-https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.8.10-py38h7510fb3_0.conda#7e08730edd98d3b1c69ad70464f1cdde
+https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.9.2-py38h7510fb3_0.conda#bbd51a20bd2a5ad644516f860b9570aa
https://conda.anaconda.org/conda-forge/osx-64/setuptools-59.8.0-py38h50d1736_1.tar.bz2#c25b5974862472ee3e681a920ceaceb4
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2
https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2#dd6cbc539e74cb1f430efbd4575b9303
@@ -176,10 +177,11 @@ https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.ta
https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.0.0-py38hef030d1_0.tar.bz2#51020c740c53f14657f6307b9eb23f85
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda#c34d9325a609381a0b0e8a5b4f325147
-https://conda.anaconda.org/conda-forge/noarch/wheel-0.40.0-pyhd8ed1ab_1.conda#c95fac682453aeffa12db7ae5a721bec
+https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda#66beb36a1fa7e0dc9d9bf843a80eb82c
https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda#2da0451b54c4563c32490cb1b7cf68a1
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda#bf7f54dd0f25c3f06ecb82a07341841a
+https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda#a3d2d43b74e042567cc4b5e328534885
https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda#ac432e732804a81ddcf29c92ead57cde
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
@@ -191,7 +193,7 @@ https://conda.anaconda.org/conda-forge/noarch/comm-0.1.3-pyhd8ed1ab_0.conda#168a
https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2#6aa0173c14befcd577ded130cf6f22f5
https://conda.anaconda.org/conda-forge/osx-64/coverage-7.2.7-py38hcafd530_0.conda#868ae7c3c94b2fffbe28687a64646f53
https://conda.anaconda.org/conda-forge/noarch/dot2tex-2.11.3-pyhd8ed1ab_0.tar.bz2#fb28e38d17dee34abc13cf6ad916534a
-https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.41.0-py38hcafd530_0.conda#5a0d8ce9639c035bafcd25757bf82fb7
+https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.41.1-py38hcafd530_0.conda#720e11c21be65a5f62a7861026afa3ce
https://conda.anaconda.org/conda-forge/osx-64/gmpy2-2.1.2-py38h919de47_1.tar.bz2#21cb4c3f251a09bfe2ac7bd2556664df
https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.12.2-nompi_h48135f9_101.conda#2ee4811ba5f72f7f12f69b3ec2d6cd96
https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946
@@ -206,12 +208,12 @@ https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab
https://conda.anaconda.org/conda-forge/noarch/overrides-7.3.1-pyhd8ed1ab_0.tar.bz2#a5745ced46e69aa9754053ba061974ab
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2#330448ce4403cc74990ac07c555942a1
https://conda.anaconda.org/conda-forge/osx-64/pillow-10.0.0-py38h16710f9_0.conda#8f73f0573ab381d56588e001754c53d3
-https://conda.anaconda.org/conda-forge/noarch/pip-23.2-pyhd8ed1ab_0.conda#fb90dfe13ce16c0a3374e3d34e3291c5
+https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801
https://conda.anaconda.org/conda-forge/noarch/plotly-5.15.0-pyhd8ed1ab_0.conda#48573e7cca7860509648522a3b8507d7
https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-9.2-py38h095c2e5_0.conda#8dbb4798b2066b678d8da47734d1c763
https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.0-pyhd8ed1ab_0.conda#3cfe9b9e958e7238a386933c75d190db
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984
-https://conda.anaconda.org/conda-forge/noarch/referencing-0.29.1-pyhd8ed1ab_0.conda#ec2794be57ba0a88e8e0277d51d58361
+https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.0-pyhd8ed1ab_0.conda#13bf095e3ecd18999d65b4d3ac5b15d5
https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520
https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-6.4.2-pyhd8ed1ab_0.tar.bz2#4b55bf84b0f8113833a653d7ba1f52c8
https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda#d9750d7c0ef0ab69cbee7557e88dd128
@@ -219,18 +221,18 @@ https://conda.anaconda.org/conda-forge/noarch/terminado-0.17.1-pyhd1c38e8_0.cond
https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48
https://conda.anaconda.org/conda-forge/noarch/tqdm-4.65.0-pyhd8ed1ab_1.conda#ed792aff3acb977d09c7013358097f83
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2
-https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.3-pyhd8ed1ab_1.conda#89efeecbb24c62e2f1ed0b8ca959ec69
+https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda#18badd8fa3648d1beb1fcc7f2e0f756e
https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py38hef030d1_3.tar.bz2#fc1bc20add8eff07c367973bba25e8eb
https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38hef030d1_1005.tar.bz2#2fa6826f6f94c847bf26709f2162a09c
https://conda.anaconda.org/conda-forge/osx-64/cryptography-40.0.2-py38h4257468_0.conda#e60e91caecdb7719724e6e2124e4cffc
https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-7.3.0-h413ba03_0.conda#52a090078d890befdd4865270d1164ec
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
-https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.6.1-pyhd8ed1ab_0.conda#f1c5c9ad5e7885a4c99d516fa4c791b4
+https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda#7c0965e1d4a0ee1529e8eaa03a78a5b3
https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-17_osx64_openblas.conda#380151ca00704172b242a63701b7bf8a
https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-17_osx64_openblas.conda#6ab83532872bf3659613638589dd10af
https://conda.anaconda.org/conda-forge/noarch/pbr-5.11.1-pyhd8ed1ab_0.conda#5bde4ebca51438054099b9527c904ecb
-https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.0-pyhd8ed1ab_0.conda#9e3fd9b032f71b9518b13b61551f219c
+https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda#044e7a1e0ad42c4e67110bd078150a63
https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba
https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-9.2-py38h095c2e5_0.conda#fa3e3307ff143e7a9e823ce7bbc916ad
https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda#06eb685a3a0b146347a58dda979485da
@@ -243,7 +245,7 @@ https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.6-pyhd8ed1ab_0.conda#078979d33523cb477bd1916ce41aacc9
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
https://conda.anaconda.org/conda-forge/noarch/black-22.3.0-pyhd8ed1ab_0.tar.bz2#7ecbfaae9a30b73c1a6e36e4a0debc03
-https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.3-pyhd8ed1ab_0.conda#66f117feaf02e29f1b71c500cc0848cb
+https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda#7356151a32ebd9a20158d2f26d224bfa
https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.3.1-py38h50d1736_0.conda#03a3619e222793567b29b5966c2a821d
https://conda.anaconda.org/conda-forge/osx-64/numpy-1.19.5-py38h5cb586d_3.tar.bz2#669da8c6123bb2f34e6bce634d6fb060
https://conda.anaconda.org/conda-forge/osx-64/pango-1.50.14-hbce5e75_1.conda#32514c385f1a25896c5106aa99fc8a3e
@@ -282,16 +284,19 @@ https://conda.anaconda.org/conda-forge/noarch/radioactivedecay-0.4.18-pyhd8ed1ab
https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.13.0-pyhd8ed1ab_0.conda#26c51b97ce59bbcce6a35ff45bc5c900
https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-1.2.2-pyha770c72_0.conda#5ef6aaf2cfb3b656cdadb431daed6a9f
https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.24.0-pyh5fb750a_0.conda#2a8ffa559d393fea47237b9d23ddf74f
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.6.0-pyhd8ed1ab_0.conda#879782bde4bbdb4c7b5d4054504a20d5
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda#0cda9f218d791ed71c639c1e6cc52c92
https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.11-py38h92dd6f0_0.conda#986fbee52d338eec520117351d918755
https://conda.anaconda.org/conda-forge/noarch/sphinx-astropy-1.9.1-pyhd8ed1ab_0.conda#b6a0939e7b6b3a854b8c8f04606da1a7
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.7.0-pyhd8ed1ab_0.conda#7488cd1f4d35a2af96faa765b7e5b2f0
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.6.0-pyhd8ed1ab_0.conda#e8172ca42f2869bb90185c9356899e81
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.6.0-pyhd8ed1ab_0.conda#59976ee8df1c6f82c4aa94b5fd6b745e
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda#00a7300181018085bab62b6ffa630ac4
+https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda#38589f4104d11f2a59ff01a9f4e3bfb3
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda#942aa06b962c7e507884c6fbeb4d1f7d
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda#6f119203c5648ed2b0c36e4fa8b6b504
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.3-pyhd8ed1ab_0.conda#c861cae50ac4cbc6d573a947f67a2d0c
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.2-pyhd8ed1ab_0.conda#d1212b423fdd10d2da59601385561ff7
-https://conda.anaconda.org/conda-forge/noarch/notebook-6.5.4-pyha770c72_0.conda#ec4ce3ce0a55ce21b6f5b86049b97af9
+https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.0-pyhd8ed1ab_0.conda#a8aa205f2b275a786cf6e55bb60a2d1a
https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.4-pyhd8ed1ab_0.conda#39f955095a360b5cb5e15ada01eb62a5
https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.7.5-pyhd8ed1ab_0.conda#24f3b831999b272ef42e2c1a6e9a0462
https://conda.anaconda.org/conda-forge/noarch/qgrid-1.3.1-pyhd8ed1ab_4.tar.bz2#fff68c7404813a1eb2678425f00e9917
From 64404836d867d5014486f9a7b5a47a7ffab671bf Mon Sep 17 00:00:00 2001
From: tardis-bot <60989672+tardis-bot@users.noreply.github.com>
Date: Sun, 23 Jul 2023 15:28:33 -0300
Subject: [PATCH 09/13] Post-release 2023.07.23 (#2369)
Automated changes for post-release 2023.07.23
---
CHANGELOG.md | 13 ++++-
CITATION.cff | 106 ++++++++++++++++++-------------------
README.rst | 68 ++++++++++++------------
docs/resources/credits.rst | 68 ++++++++++++------------
4 files changed, 132 insertions(+), 123 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index db22a30a7dd..c3de60cc627 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,16 @@
## Change Log
+### release-2023.07.23 (2023/07/23 14:47 +00:00)
+- [#2368](https://github.com/tardis-sn/tardis/pull/2368) Pre-release 2023.07.23 (#2368) (@tardis-bot)
+- [#2367](https://github.com/tardis-sn/tardis/pull/2367) integrate new packetsource (#2367) (@wkerzendorf)
+- [#2366](https://github.com/tardis-sn/tardis/pull/2366) New packet source (extending 2352) (#2366) (@wkerzendorf)
+- [#2354](https://github.com/tardis-sn/tardis/pull/2354) removed duplicate entry of afloers (#2354) (@afloers)
+- [#2360](https://github.com/tardis-sn/tardis/pull/2360) restructure configuration object (#2360) (@wkerzendorf)
+- [#2361](https://github.com/tardis-sn/tardis/pull/2361) add deprecated decorator (#2361) (@wkerzendorf)
+- [#2359](https://github.com/tardis-sn/tardis/pull/2359) Rename NumbaPlasma to OpacityState (#2359) (@andrewfullard)
+- [#2313](https://github.com/tardis-sn/tardis/pull/2313) Grotrian Diagram Plot Appearance (#2313) (@AyushiDaksh)
+- [#2357](https://github.com/tardis-sn/tardis/pull/2357) Post-release 2023.07.16 (#2357) (@tardis-bot)
+
### release-2023.07.16 (2023/07/16 19:15 +00:00)
- [#2356](https://github.com/tardis-sn/tardis/pull/2356) Pre-release 2023.07.16 (#2356) (@tardis-bot)
- [#2355](https://github.com/tardis-sn/tardis/pull/2355) Fixed spelling mistake in Wien's displacement law (#2355) (@afloers)
@@ -342,8 +353,6 @@
- [#1748](https://github.com/tardis-sn/tardis/pull/1748) Tracking RPacket Properties in Montecarlo Single Packet Loop Function (#1748) (@DhruvSondhi)
- [#1706](https://github.com/tardis-sn/tardis/pull/1706) Changed to fstring (#1706) (@svenkat19)
- [#1833](https://github.com/tardis-sn/tardis/pull/1833) Editing instructions for contributing to the documentation (#1833) (@smithis7)
-
-### release-2021.12.5 (2021/12/02 19:14 +00:00)
- [#1832](https://github.com/tardis-sn/tardis/pull/1832) Convert quantities to arrays when plotting in SDEC plot (#1832) (@atharva-2001)
- [#1830](https://github.com/tardis-sn/tardis/pull/1830) Name plotly traces in SDEC plot (#1830) (@atharva-2001)
- [#1825](https://github.com/tardis-sn/tardis/pull/1825) changed all files to import constants from only tardis (#1825) (@shilpiprd)
diff --git a/CITATION.cff b/CITATION.cff
index c5ad2e6936d..c5b02e7814a 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -3,8 +3,8 @@
cff-version: 1.0.3
message: If you use this software, please cite it using these metadata.
# FIXME title as repository name might not be the best name, please make human readable
-title: 'tardis-sn/tardis: TARDIS v2023.07.16'
-doi: 10.5281/zenodo.8152569
+title: 'tardis-sn/tardis: TARDIS v2023.07.23'
+doi: 10.5281/zenodo.8175810
# FIXME splitting of full names is error prone, please check if given/family name are correct
authors:
- given-names: Wolfgang
@@ -112,16 +112,16 @@ authors:
family-names: Chitchyan
- given-names: Arjun
family-names: Savel
-- given-names: Martin
- family-names: Reinecke
- given-names: Youssef
family-names: Eweis
+- given-names: Martin
+ family-names: Reinecke
- given-names: Tomas
family-names: Bylund
-- given-names: Laud
- family-names: Bentil
- given-names: William
family-names: Black
+- given-names: Laud
+ family-names: Bentil
- given-names: Jordi
family-names: Eguren
orcid: https://orcid.org/0000-0002-2328-8030
@@ -129,84 +129,82 @@ authors:
family-names: Bartnik
- given-names: Arib
family-names: Alam
-- given-names: Mark
- family-names: Magee
-- given-names: Ansh
- family-names: Kumar
- given-names: Rohith
family-names: Varma Buddaraju
-- given-names: Joshua
- family-names: Shields
+- given-names: Ansh
+ family-names: Kumar
+- given-names: Mark
+ family-names: Magee
- given-names: Ran
family-names: Livneh
- given-names: Satwik
family-names: Kambham
-- given-names: Srinath
- family-names: Rajagopalan
+- given-names: Joshua
+ family-names: Shields
- given-names: Sashank
family-names: Mishra
orcid: https://orcid.org/0000-0001-8302-1584
+- given-names: Srinath
+ family-names: Rajagopalan
- given-names: GitHub
family-names: Actions
+- given-names: John
+ family-names: Reichenbach
- given-names: Rinkle
family-names: Jain
+- given-names: Ayushi
+ family-names: Daksh
- given-names: Andreas
family-names: Floers
-- given-names: John
- family-names: Reichenbach
-- given-names: Alexander
- family-names: Holas
-- given-names: Sourav
+- given-names: Antreev
+ family-names: Brar
+- given-names: Shreyas
family-names: Singh
- given-names: Aarya
family-names: Chaumal
-- given-names: Shreyas
+- given-names: Alexander
+ family-names: Holas
+- given-names: Sourav
family-names: Singh
-- given-names: Antreev
- family-names: Brar
- given-names: Jayant
family-names: Bhakar
-- given-names: Ayushi
- family-names: Daksh
-- given-names: Nathan
- family-names: Kowalski
- given-names: Caroline
family-names: Sofiatti
- given-names: Aman
family-names: Kumar
-- given-names: Chinmay
- family-names: Talegaonkar
-- given-names: Jonatan
- family-names: Selsing
- given-names: Abhishek
family-names: Patidar
-- given-names: Sampark
- family-names: Sharma
+- given-names: Nathan
+ family-names: Kowalski
+- given-names: Jonatan
+ family-names: Selsing
+- given-names: Chinmay
+ family-names: Talegaonkar
+- given-names: Suyash
+ family-names: Gupta
+- given-names: Kevin
+ family-names: Yap
+- given-names: Laureano
+ family-names: Martinez
+- given-names: Morgan
+ family-names: Sandler
- given-names: Musabbiha
family-names: Zaheer
-- given-names: Pratik
- family-names: Patel
-- given-names: Parikshit
- family-names: Singh Rathore
-- given-names: Nilesh
- family-names: Patra
- given-names: Nance
family-names: Sarafina
-- given-names: Harshul
- family-names: Gupta
-- given-names: Morgan
- family-names: Sandler
-- given-names: Laureano
- family-names: Martinez
-- given-names: Kevin
- family-names: Yap
-- given-names: Shilpi
- family-names: Prasad
+- given-names: Nilesh
+ family-names: Patra
+- given-names: Parikshit
+ family-names: Singh Rathore
+- given-names: Pratik
+ family-names: Patel
+- given-names: Sampark
+ family-names: Sharma
- given-names: Shashank
family-names: Venkat
-- given-names: Atul
- family-names: Kumar
-- given-names: Suyash
+- given-names: Shilpi
+ family-names: Prasad
+- given-names: Harshul
family-names: Gupta
- given-names: Thom
family-names: Lemoine
@@ -230,7 +228,9 @@ authors:
family-names: Nayak U
- given-names: Chaitanya
family-names: Kolliboyina
-version: release-2023.07.16
-date-released: 2023-07-16
+- given-names: Atul
+ family-names: Kumar
+version: release-2023.07.23
+date-released: 2023-07-23
repository-code: https://github.com/tardis-sn/tardis
license: other-open
diff --git a/README.rst b/README.rst
index cce077b44d4..d6fac921a9b 100644
--- a/README.rst
+++ b/README.rst
@@ -110,14 +110,14 @@ The following BibTeX entries are needed for the references:
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
-.. |CITATION| replace:: kerzendorf_wolfgang_2023_8152569
+.. |CITATION| replace:: kerzendorf_wolfgang_2023_8175810
-.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8152569-blue
- :target: https://doi.org/10.5281/zenodo.8152569
+.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8175810-blue
+ :target: https://doi.org/10.5281/zenodo.8175810
.. code-block:: bibtex
- @software{kerzendorf_wolfgang_2023_8152569,
+ @software{kerzendorf_wolfgang_2023_8175810,
author = {Kerzendorf, Wolfgang and
Sim, Stuart and
Vogl, Christian and
@@ -156,53 +156,52 @@ The following BibTeX entries are needed for the references:
Rathi, Shikha and
Chitchyan, Sona and
Savel, Arjun and
- Reinecke, Martin and
Eweis, Youssef and
+ Reinecke, Martin and
Bylund, Tomas and
- Bentil, Laud and
Black, William and
+ Bentil, Laud and
Eguren, Jordi and
Bartnik, Matthew and
Alam, Arib and
- Magee, Mark and
- Kumar, Ansh and
Varma Buddaraju, Rohith and
- Shields, Joshua and
+ Kumar, Ansh and
+ Magee, Mark and
Livneh, Ran and
Kambham, Satwik and
- Rajagopalan, Srinath and
+ Shields, Joshua and
Mishra, Sashank and
+ Rajagopalan, Srinath and
Actions, GitHub and
+ Reichenbach, John and
Jain, Rinkle and
+ Daksh, Ayushi and
Floers, Andreas and
- Reichenbach, John and
+ Brar, Antreev and
+ Singh, Shreyas and
+ Chaumal, Aarya and
Holas, Alexander and
Singh, Sourav and
- Chaumal, Aarya and
- Singh, Shreyas and
- Brar, Antreev and
Bhakar, Jayant and
- Daksh, Ayushi and
- Kowalski, Nathan and
Sofiatti, Caroline and
Kumar, Aman and
- Talegaonkar, Chinmay and
- Selsing, Jonatan and
Patidar, Abhishek and
- Sharma, Sampark and
+ Kowalski, Nathan and
+ Selsing, Jonatan and
+ Talegaonkar, Chinmay and
+ Gupta, Suyash and
+ Yap, Kevin and
+ Martinez, Laureano and
+ Sandler, Morgan and
Zaheer, Musabbiha and
- Patel, Pratik and
- Singh Rathore, Parikshit and
- Patra, Nilesh and
Sarafina, Nance and
- Gupta, Harshul and
- Sandler, Morgan and
- Martinez, Laureano and
- Yap, Kevin and
- Prasad, Shilpi and
+ Patra, Nilesh and
+ Singh Rathore, Parikshit and
+ Patel, Pratik and
+ Sharma, Sampark and
Venkat, Shashank and
- Kumar, Atul and
- Gupta, Suyash and
+ Prasad, Shilpi and
+ Gupta, Harshul and
Lemoine, Thom and
Wahi, Ujjwal and
Aggarwal, Yash and
@@ -213,14 +212,15 @@ The following BibTeX entries are needed for the references:
Truong, Le and
Kharkar, Atharwa and
Nayak U, Ashwin and
- Kolliboyina, Chaitanya},
- title = {tardis-sn/tardis: TARDIS v2023.07.16},
+ Kolliboyina, Chaitanya and
+ Kumar, Atul},
+ title = {tardis-sn/tardis: TARDIS v2023.07.23},
month = jul,
year = 2023,
publisher = {Zenodo},
- version = {release-2023.07.16},
- doi = {10.5281/zenodo.8152569},
- url = {https://doi.org/10.5281/zenodo.8152569}
+ version = {release-2023.07.23},
+ doi = {10.5281/zenodo.8175810},
+ url = {https://doi.org/10.5281/zenodo.8175810}
}
*******
diff --git a/docs/resources/credits.rst b/docs/resources/credits.rst
index 224733e85c2..4153b501ae5 100644
--- a/docs/resources/credits.rst
+++ b/docs/resources/credits.rst
@@ -74,14 +74,14 @@ The following BibTeX entries are needed for the references:
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
-.. |CITATION| replace:: kerzendorf_wolfgang_2023_8152569
+.. |CITATION| replace:: kerzendorf_wolfgang_2023_8175810
-.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8152569-blue
- :target: https://doi.org/10.5281/zenodo.8152569
+.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8175810-blue
+ :target: https://doi.org/10.5281/zenodo.8175810
.. code-block:: bibtex
- @software{kerzendorf_wolfgang_2023_8152569,
+ @software{kerzendorf_wolfgang_2023_8175810,
author = {Kerzendorf, Wolfgang and
Sim, Stuart and
Vogl, Christian and
@@ -120,53 +120,52 @@ The following BibTeX entries are needed for the references:
Rathi, Shikha and
Chitchyan, Sona and
Savel, Arjun and
- Reinecke, Martin and
Eweis, Youssef and
+ Reinecke, Martin and
Bylund, Tomas and
- Bentil, Laud and
Black, William and
+ Bentil, Laud and
Eguren, Jordi and
Bartnik, Matthew and
Alam, Arib and
- Magee, Mark and
- Kumar, Ansh and
Varma Buddaraju, Rohith and
- Shields, Joshua and
+ Kumar, Ansh and
+ Magee, Mark and
Livneh, Ran and
Kambham, Satwik and
- Rajagopalan, Srinath and
+ Shields, Joshua and
Mishra, Sashank and
+ Rajagopalan, Srinath and
Actions, GitHub and
+ Reichenbach, John and
Jain, Rinkle and
+ Daksh, Ayushi and
Floers, Andreas and
- Reichenbach, John and
+ Brar, Antreev and
+ Singh, Shreyas and
+ Chaumal, Aarya and
Holas, Alexander and
Singh, Sourav and
- Chaumal, Aarya and
- Singh, Shreyas and
- Brar, Antreev and
Bhakar, Jayant and
- Daksh, Ayushi and
- Kowalski, Nathan and
Sofiatti, Caroline and
Kumar, Aman and
- Talegaonkar, Chinmay and
- Selsing, Jonatan and
Patidar, Abhishek and
- Sharma, Sampark and
+ Kowalski, Nathan and
+ Selsing, Jonatan and
+ Talegaonkar, Chinmay and
+ Gupta, Suyash and
+ Yap, Kevin and
+ Martinez, Laureano and
+ Sandler, Morgan and
Zaheer, Musabbiha and
- Patel, Pratik and
- Singh Rathore, Parikshit and
- Patra, Nilesh and
Sarafina, Nance and
- Gupta, Harshul and
- Sandler, Morgan and
- Martinez, Laureano and
- Yap, Kevin and
- Prasad, Shilpi and
+ Patra, Nilesh and
+ Singh Rathore, Parikshit and
+ Patel, Pratik and
+ Sharma, Sampark and
Venkat, Shashank and
- Kumar, Atul and
- Gupta, Suyash and
+ Prasad, Shilpi and
+ Gupta, Harshul and
Lemoine, Thom and
Wahi, Ujjwal and
Aggarwal, Yash and
@@ -177,13 +176,14 @@ The following BibTeX entries are needed for the references:
Truong, Le and
Kharkar, Atharwa and
Nayak U, Ashwin and
- Kolliboyina, Chaitanya},
- title = {tardis-sn/tardis: TARDIS v2023.07.16},
+ Kolliboyina, Chaitanya and
+ Kumar, Atul},
+ title = {tardis-sn/tardis: TARDIS v2023.07.23},
month = jul,
year = 2023,
publisher = {Zenodo},
- version = {release-2023.07.16},
- doi = {10.5281/zenodo.8152569},
- url = {https://doi.org/10.5281/zenodo.8152569}
+ version = {release-2023.07.23},
+ doi = {10.5281/zenodo.8175810},
+ url = {https://doi.org/10.5281/zenodo.8175810}
}
From 0cb1929fd89f2c6f885a076a1d9c6373cb06c2f8 Mon Sep 17 00:00:00 2001
From: Jing Lu <48139543+DeerWhale@users.noreply.github.com>
Date: Wed, 26 Jul 2023 15:02:24 -0400
Subject: [PATCH 10/13] Prevent empty convergence plot Error when n_iteration=1
(#2371)
* Add an argument check the convergence plot is empty or not before exporting the plot, prevent the sim fail due to plot is empty
* added my infotmation in mailmap
---
.mailmap | 2 ++
tardis/visualization/tools/convergence_plot.py | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/.mailmap b/.mailmap
index a8b4cf2773b..c005d9048fe 100644
--- a/.mailmap
+++ b/.mailmap
@@ -95,6 +95,8 @@ Jenny Yu
Jenny Yu yuyizh
Jenny Yu Jenny Yu <80535029+yuyizheng1112@users.noreply.github.com>
+Jing Lu
+
John Reichenbach <56849859+jreichenbach-msu@users.noreply.github.com>
Jordi Eguren
diff --git a/tardis/visualization/tools/convergence_plot.py b/tardis/visualization/tools/convergence_plot.py
index 56655036647..5417b85e2a8 100644
--- a/tardis/visualization/tools/convergence_plot.py
+++ b/tardis/visualization/tools/convergence_plot.py
@@ -424,7 +424,7 @@ def update(self, export_convergence_plots=False, last=False):
# the display function expects a Widget, while
# fig.show() returns None, which causes the TraitError.
- if export_convergence_plots:
+ if export_convergence_plots and (self.plasma_plot is not None):
with suppress(TraitError):
display(
widgets.VBox(
From f0f26bd0963e833189e900935f52477b1a930d9c Mon Sep 17 00:00:00 2001
From: Wolfgang Kerzendorf
Date: Thu, 27 Jul 2023 07:54:35 -0700
Subject: [PATCH 11/13] integrate radiation field (#2365)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Add radiationfield property
Co-authored-by: Alexander Grunewald
Co-authored-by: Andreas Flörs
Co-authored-by: Jack O'Brien
Co-authored-by: Andrew Fullard
* insert radiation_field
* cleanup radiation field and introduce changes to model
* integrate radiation field
* further cleanup
* change to packet_source
* blackify
* remove radiation field
---------
Co-authored-by: Alexander Grunewald
Co-authored-by: Andreas Flörs
Co-authored-by: Jack O'Brien
Co-authored-by: Andrew Fullard
---
tardis/model/base.py | 121 +++++--------------
tardis/radiation_field/base.py | 34 ++++++
tardis/radiation_field/opacities/__init__.py | 1 +
3 files changed, 64 insertions(+), 92 deletions(-)
create mode 100644 tardis/radiation_field/base.py
create mode 100644 tardis/radiation_field/opacities/__init__.py
diff --git a/tardis/model/base.py b/tardis/model/base.py
index a0c8920b170..44a3e5212f6 100644
--- a/tardis/model/base.py
+++ b/tardis/model/base.py
@@ -23,6 +23,8 @@
from tardis.model.density import HomologousDensity
from tardis.montecarlo.packet_source import BlackBodySimpleSource
+from tardis.radiation_field.base import MonteCarloRadiationFieldState
+
logger = logging.getLogger(__name__)
@@ -290,24 +292,37 @@ def __init__(
lambda_wien_inner = (
constants.b_wien / self.blackbody_packet_source.temperature
)
- self._t_radiative = constants.b_wien / (
+ t_radiative = constants.b_wien / (
lambda_wien_inner
* (1 + (self.v_middle - self.v_boundary_inner) / constants.c)
)
+ elif len(t_radiative) != self.no_of_shells:
+ t_radiative = t_radiative[
+ self.v_boundary_inner_index
+ + 1 : self.v_boundary_outer_index
+ + 1
+ ]
else:
- # self._t_radiative = t_radiative[self.v_boundary_inner_index + 1:self.v_boundary_outer_index]
- self._t_radiative = t_radiative
+ assert len(t_radiative) == self.no_of_shells
if dilution_factor is None:
- self._dilution_factor = 0.5 * (
+ dilution_factor = 0.5 * (
1
- np.sqrt(
1 - (self.r_inner[0] ** 2 / self.r_middle**2).to(1).value
)
)
- else:
- # self.dilution_factor = dilution_factor[self.v_boundary_inner_index + 1:self.v_boundary_outer_index]
- self._dilution_factor = dilution_factor
+ elif len(dilution_factor) != self.no_of_shells:
+ dilution_factor = dilution_factor[
+ self.v_boundary_inner_index
+ + 1 : self.v_boundary_outer_index
+ + 1
+ ]
+ assert len(dilution_factor) == self.no_of_shells
+
+ self.radiation_field = MonteCarloRadiationFieldState(
+ t_radiative, dilution_factor, None, None
+ )
@property
def w(self):
@@ -335,41 +350,12 @@ def t_inner(self, value):
@property
def dilution_factor(self):
- if len(self._dilution_factor) == self.no_of_shells:
- return self._dilution_factor
-
- # if self.v_boundary_inner in self.raw_velocity:
- # v_inner_ind = np.argwhere(self.raw_velocity == self.v_boundary_inner)[0][0]
- # else:
- # v_inner_ind = np.searchsorted(self.raw_velocity, self.v_boundary_inner) - 1
- # if self.v_boundary_outer in self.raw_velocity:
- # v_outer_ind = np.argwhere(self.raw_velocity == self.v_boundary_outer)[0][0]
- # else:
- # v_outer_ind = np.searchsorted(self.raw_velocity, self.v_boundary_outer)
-
- return self._dilution_factor[
- self.v_boundary_inner_index + 1 : self.v_boundary_outer_index + 1
- ]
+ return self.radiation_field.dilution_factor
@dilution_factor.setter
def dilution_factor(self, value):
- if len(value) == len(self._dilution_factor):
- self._dilution_factor = value
- elif len(value) == self.no_of_shells:
- # if self.v_boundary_inner in self.raw_velocity:
- # v_inner_ind = np.argwhere(self.raw_velocity == self.v_boundary_inner)[0][0]
- # else:
- # v_inner_ind = np.searchsorted(self.raw_velocity, self.v_boundary_inner) - 1
- # if self.v_boundary_outer in self.raw_velocity:
- # v_outer_ind = np.argwhere(self.raw_velocity == self.v_boundary_outer)[0][0]
- # else:
- # v_outer_ind = np.searchsorted(self.raw_velocity, self.v_boundary_outer)
- # assert v_outer_ind - v_inner_ind == self.no_of_shells, "trad shape different from number of shells"
- self._dilution_factor[
- self.v_boundary_inner_index
- + 1 : self.v_boundary_outer_index
- + 1
- ] = value
+ if len(value) == self.no_of_shells:
+ self.radiation_field.dilution_factor = value
else:
raise ValueError(
"Trying to set dilution_factor for unmatching number"
@@ -378,44 +364,15 @@ def dilution_factor(self, value):
@property
def t_radiative(self):
- if len(self._t_radiative) == self.no_of_shells:
- return self._t_radiative
-
- # if self.v_boundary_inner in self.raw_velocity:
- # v_inner_ind = np.argwhere(self.raw_velocity == self.v_boundary_inner)[0][0]
- # else:
- # v_inner_ind = np.searchsorted(self.raw_velocity, self.v_boundary_inner) - 1
- # if self.v_boundary_outer in self.raw_velocity:
- # v_outer_ind = np.argwhere(self.raw_velocity == self.v_boundary_outer)[0][0]
- # else:
- # v_outer_ind = np.searchsorted(self.raw_velocity, self.v_boundary_outer)
-
- return self._t_radiative[
- self.v_boundary_inner_index + 1 : self.v_boundary_outer_index + 1
- ]
+ return self.radiation_field.t_radiative
@t_radiative.setter
def t_radiative(self, value):
- if len(value) == len(self._t_radiative):
- self._t_radiative = value
- elif len(value) == self.no_of_shells:
- # if self.v_boundary_inner in self.raw_velocity:
- # v_inner_ind = np.argwhere(self.raw_velocity == self.v_boundary_inner)[0][0]
- # else:
- # v_inner_ind = np.searchsorted(self.raw_velocity, self.v_boundary_inner) - 1
- # if self.v_boundary_outer in self.raw_velocity:
- # v_outer_ind = np.argwhere(self.raw_velocity == self.v_boundary_outer)[0][0]
- # else:
- # v_outer_ind = np.searchsorted(self.raw_velocity, self.v_boundary_outer)
- # assert v_outer_ind - v_inner_ind == self.no_of_shells, "trad shape different from number of shells"
- self._t_radiative[
- self.v_boundary_inner_index
- + 1 : self.v_boundary_outer_index
- + 1
- ] = value
+ if len(value) == self.no_of_shells:
+ self.radiation_field.t_radiative = value
else:
raise ValueError(
- "Trying to set t_radiative for unmatching number" "of shells."
+ "Trying to set t_radiative for unmatching number of shells."
)
@property
@@ -567,26 +524,6 @@ def v_boundary_outer_index(self):
)
return v_outer_ind
- # @property
- # def v_boundary_inner_index(self):
- # if self.v_boundary_inner <= self.raw_velocity[0]:
- # return 0
- # else:
- # idx = max(0,
- # self.raw_velocity.searchsorted(self.v_boundary_inner) - 1)
- # # check for zero volume of designated first cell
- # if np.isclose(self.v_boundary_inner, self.raw_velocity[idx + 1],
- # atol=1e-8 * u.km / u.s) and (self.v_boundary_inner <=
- # self.raw_velocity[idx + 1]):
- # idx += 1
- # return idx
- #
- # @property
- # def v_boundary_outer_index(self):
- # if self.v_boundary_outer >= self.raw_velocity[-1]:
- # return None
- # return self.raw_velocity.searchsorted(self.v_boundary_outer) + 1
-
@classmethod
def from_config(cls, config, atom_data=None):
"""
diff --git a/tardis/radiation_field/base.py b/tardis/radiation_field/base.py
new file mode 100644
index 00000000000..602c98719a0
--- /dev/null
+++ b/tardis/radiation_field/base.py
@@ -0,0 +1,34 @@
+import numpy as np
+from astropy import units as u
+
+from tardis.montecarlo.packet_source import BasePacketSource
+from tardis.montecarlo.montecarlo_numba.numba_interface import OpacityState
+
+
+class MonteCarloRadiationFieldState:
+ """_summary_
+
+ Parameters
+ ----------
+ t_radiative : u.Quantity
+ Radiative temperature in each shell
+ dilution_factor : numpy.ndarray
+ Dilution Factors in each shell
+ opacities : OpacityState
+ Opacity container object
+ packet_source : SourceFunction
+ Source function for radiative transfer, for example a packet_source
+ """
+
+ def __init__(
+ self,
+ t_radiative: u.Quantity,
+ dilution_factor: np.ndarray,
+ opacities: OpacityState,
+ packet_source: BasePacketSource,
+ ):
+ self.t_radiative = t_radiative
+ self.dilution_factor = dilution_factor
+ self.t_rad = self.t_radiative
+ self.opacities = opacities
+ self.packet_source = packet_source
diff --git a/tardis/radiation_field/opacities/__init__.py b/tardis/radiation_field/opacities/__init__.py
new file mode 100644
index 00000000000..47f2c79e60d
--- /dev/null
+++ b/tardis/radiation_field/opacities/__init__.py
@@ -0,0 +1 @@
+from tardis.radiation_field.opacities.base import *
From fbb87556f865c818584689be066895c54b70a63c Mon Sep 17 00:00:00 2001
From: tardis-bot <60989672+tardis-bot@users.noreply.github.com>
Date: Sat, 29 Jul 2023 21:47:11 -0300
Subject: [PATCH 12/13] Pre-release 2023.07.30 (#2372)
Automated changes for pre-release 2023.07.30
---
.zenodo.json | 79 +++++----
conda-linux-64.lock | 26 +--
conda-lock.yml | 412 +++++++++++++++++++++++++++++++-------------
conda-osx-64.lock | 30 ++--
4 files changed, 366 insertions(+), 181 deletions(-)
diff --git a/.zenodo.json b/.zenodo.json
index 4b2336d4fd7..fec235083eb 100644
--- a/.zenodo.json
+++ b/.zenodo.json
@@ -113,10 +113,10 @@
"name": "Arya, Atharva"
},
{
- "name": "Barbosa, Talytha"
+ "name": "Sondhi, Dhruv"
},
{
- "name": "Sondhi, Dhruv"
+ "name": "Barbosa, Talytha"
},
{
"name": "O'Brien, Jack"
@@ -144,10 +144,10 @@
"name": "Savel, Arjun"
},
{
- "name": "Eweis, Youssef"
+ "name": "Reinecke, Martin"
},
{
- "name": "Reinecke, Martin"
+ "name": "Eweis, Youssef"
},
{
"name": "Bylund, Tomas"
@@ -180,108 +180,111 @@
{
"name": "Livneh, Ran"
},
- {
- "name": "Kambham, Satwik"
- },
{
"name": "Shields, Joshua"
},
{
- "name": "Mishra, Sashank",
- "orcid": "0000-0001-8302-1584"
+ "name": "Kambham, Satwik"
},
{
"name": "Rajagopalan, Srinath"
},
{
- "name": "Actions, GitHub"
+ "name": "Mishra, Sashank",
+ "orcid": "0000-0001-8302-1584"
},
{
"name": "Reichenbach, John"
},
{
- "name": "Jain, Rinkle"
+ "name": "Daksh, Ayushi"
},
{
- "name": "Daksh, Ayushi"
+ "name": "Singh, Shreyas"
},
{
"name": "Floers, Andreas"
},
{
- "name": "Brar, Antreev"
+ "name": "Jain, Rinkle"
},
{
- "name": "Singh, Shreyas"
+ "name": "Actions, GitHub"
},
{
- "name": "Chaumal, Aarya"
+ "name": "Singh, Sourav"
},
{
- "name": "Holas, Alexander"
+ "name": "Brar, Antreev"
},
{
- "name": "Singh, Sourav"
+ "name": "Holas, Alexander"
},
{
"name": "Bhakar, Jayant"
},
{
- "name": "Sofiatti, Caroline"
+ "name": "Chaumal, Aarya"
},
{
- "name": "Kumar, Aman"
+ "name": "Sofiatti, Caroline"
},
{
- "name": "Patidar, Abhishek"
+ "name": "Kowalski, Nathan"
},
{
- "name": "Kowalski, Nathan"
+ "name": "Talegaonkar, Chinmay"
},
{
"name": "Selsing, Jonatan"
},
{
- "name": "Talegaonkar, Chinmay"
+ "name": "Kumar, Aman"
},
{
- "name": "Gupta, Suyash"
+ "name": "Patidar, Abhishek"
},
{
- "name": "Yap, Kevin"
+ "name": "Venkat, Shashank"
},
{
- "name": "Martinez, Laureano"
+ "name": "Sarafina, Nance"
},
{
- "name": "Sandler, Morgan"
+ "name": "Sharma, Sampark"
},
{
- "name": "Zaheer, Musabbiha"
+ "name": "Patel, Pratik"
},
{
- "name": "Sarafina, Nance"
+ "name": "Singh Rathore, Parikshit"
},
{
"name": "Patra, Nilesh"
},
{
- "name": "Singh Rathore, Parikshit"
+ "name": "Lu, Jing"
},
{
- "name": "Patel, Pratik"
+ "name": "Zaheer, Musabbiha"
},
{
- "name": "Sharma, Sampark"
+ "name": "Sandler, Morgan"
},
{
- "name": "Venkat, Shashank"
+ "name": "Martinez, Laureano"
+ },
+ {
+ "name": "Yap, Kevin"
+ },
+ {
+ "name": "Gupta, Suyash"
},
{
"name": "Prasad, Shilpi"
},
{
- "name": "Gupta, Harshul"
+ "name": "Dasgupta, Debajyoti"
},
{
"name": "Lemoine, Thom"
@@ -296,10 +299,10 @@
"name": "Matsumura, Yuki"
},
{
- "name": "Volodin, Dmitry"
+ "name": "Gupta, Harshul"
},
{
- "name": "Dasgupta, Debajyoti"
+ "name": "Volodin, Dmitry"
},
{
"name": "PATIDAR, ABHISHEK"
@@ -308,16 +311,16 @@
"name": "Truong, Le"
},
{
- "name": "Kharkar, Atharwa"
+ "name": "Kumar, Atul"
},
{
- "name": "Nayak U, Ashwin"
+ "name": "Kharkar, Atharwa"
},
{
"name": "Kolliboyina, Chaitanya"
},
{
- "name": "Kumar, Atul"
+ "name": "Nayak U, Ashwin"
}
]
}
\ No newline at end of file
diff --git a/conda-linux-64.lock b/conda-linux-64.lock
index 8b20599c62f..52bf6406241 100644
--- a/conda-linux-64.lock
+++ b/conda-linux-64.lock
@@ -8,7 +8,7 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab
https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6
https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb
https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5
-https://conda.anaconda.org/conda-forge/linux-64/git-lfs-3.3.0-ha770c72_0.conda#bed72a66ece736ba7e7898a721738613
+https://conda.anaconda.org/conda-forge/linux-64/git-lfs-3.4.0-ha770c72_0.conda#8b8aef0a35f5b98937a65b67b7d3b536
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3
https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.1.0-h15d22d2_0.conda#afb656a334c409dd9805508af1c89c7a
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.1.0-hfd8a6a1_0.conda#067bcc23164642f4c226da631f2a2e1d
@@ -135,7 +135,7 @@ https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.1-pyhd8ed1ab_0.tar.bz2#9e79315db0f0742b9a2215e122ef8fc9
https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py38h43d8883_1.tar.bz2#41ca56d5cac7bfc7eb4fcdbee878eb84
https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28
-https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.2.0-hca28451_0.conda#73d6b3c8d9a8f7f2703ef9163ab92b0e
+https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.2.1-hca28451_0.conda#96aec6156d58591f5a4e67056521ce1b
https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569
https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.36.0-py38h4630a5e_0.tar.bz2#a805cb9a530a6524f7f832cce981fa0e
https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py38h0ef1326_0.conda#f9b8c58aade85e2f76ae31c832dbcb9c
@@ -152,7 +152,7 @@ https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#
https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda#91cda59e66e1e4afe9476f8ef98f5c30
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
-https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.1-pyhd8ed1ab_0.conda#dbb80d1e8dc2dba5c8b106dc0768ad45
+https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda#e41debb259e68490e3ab81e46b639ab6
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f
https://conda.anaconda.org/conda-forge/noarch/pluggy-1.2.0-pyhd8ed1ab_0.conda#7263924c642d22e311d9e59b839f1b33
@@ -196,6 +196,8 @@ https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.5.5-py38h01eb140_0.c
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda#c39d6a09fe819de4951c2642629d9115
https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92
https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py38h0a891b7_0.tar.bz2#44421904760e9f5ae2035193e04360f0
+https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
+https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda#c34d9325a609381a0b0e8a5b4f325147
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda#66beb36a1fa7e0dc9d9bf843a80eb82c
@@ -204,7 +206,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_
https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda#2da0451b54c4563c32490cb1b7cf68a1
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda#bf7f54dd0f25c3f06ecb82a07341841a
-https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda#a3d2d43b74e042567cc4b5e328534885
+https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb
https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda#ac432e732804a81ddcf29c92ead57cde
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
@@ -248,9 +250,11 @@ https://conda.anaconda.org/conda-forge/noarch/tqdm-4.65.0-pyhd8ed1ab_1.conda#ed7
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda#18badd8fa3648d1beb1fcc7f2e0f756e
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py38h0a891b7_3.tar.bz2#efcaa056d265a3138d2038a4b6b68791
+https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2#fd1967c76eda3a3dd9e8e6cb7a15a028
https://conda.anaconda.org/conda-forge/linux-64/astropy-5.0.4-py38h71d37f0_0.tar.bz2#4156d702236001f841bc3404a007ea74
https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1005.tar.bz2#e99e08812dfff30fdd17b3f8838e2759
https://conda.anaconda.org/conda-forge/linux-64/cryptography-40.0.2-py38h3d167d9_0.conda#5443d5da3591c818482757981424c5b4
+https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/linux-64/h5py-3.7.0-nompi_py38h045baee_101.tar.bz2#43f0ea307e05261913c6988d4537308f
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-7.3.0-hdb3a94d_0.conda#765bc76c0dfaf24ff9d8a2935b2510df
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
@@ -271,6 +275,7 @@ https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.cond
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.6-pyhd8ed1ab_0.conda#078979d33523cb477bd1916ce41aacc9
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
https://conda.anaconda.org/conda-forge/noarch/black-22.3.0-pyhd8ed1ab_0.tar.bz2#7ecbfaae9a30b73c1a6e36e4a0debc03
+https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda#7356151a32ebd9a20158d2f26d224bfa
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.3.0-py38h578d9bd_0.conda#d75b783a348cf33c6d3d75480300fecd
https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-heaa33ce_1.conda#cde553e0e32389e26595db4eacf859eb
@@ -282,8 +287,8 @@ https://conda.anaconda.org/conda-forge/noarch/radioactivedecay-0.4.18-pyhd8ed1ab
https://conda.anaconda.org/conda-forge/noarch/sphinx-6.2.1-pyhd8ed1ab_0.conda#a8b5c0c100cf5421d36e292894868297
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2#855b087883443abb10f5faf6eef40860
https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2#957a0255ab58aaf394a91725d73ab422
+https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.18.4-pyhd8ed1ab_0.conda#219fd261913c5a00c1d58519dffd8fc9
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda#1d018ee4ab13217e2544f795eb0a6798
-https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_0.conda#d98c5196ab6ffeb0c2feca2912801353
https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.1-h98fae49_0.conda#4b827ee65a747c4a24f2a6ac7f3ff093
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.1-pyhd8ed1ab_0.conda#3ec35d84fc1775215061517eb4660693
https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.5.0-pyhd8ed1ab_0.tar.bz2#3c275d7168a6a135329f4acb364c229a
@@ -296,17 +301,18 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.5.0-pyhd8ed
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda#914897066d5873acfb13e75705276ad1
https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb
https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.2-pyh41d4057_0.conda#acebfd89278ecac2a67b60b657e00d5c
+https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/noarch/sphinx-astropy-1.9.1-pyhd8ed1ab_0.conda#b6a0939e7b6b3a854b8c8f04606da1a7
https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-1.2.2-pyha770c72_0.conda#5ef6aaf2cfb3b656cdadb431daed6a9f
-https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.24.0-pyh71e2992_0.conda#cfafc9387c32a43a1b6d63633489cbc9
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda#0cda9f218d791ed71c639c1e6cc52c92
+https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.0-pyh71e2992_0.conda#170114ad7c778072929fc829a86444a7
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda#063c1fda5480050b8d989478c97a4c55
https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.11-py38h83a7919_0.conda#ba5ed53d0f0f62048fd42790f897caba
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.7.0-pyhd8ed1ab_0.conda#7488cd1f4d35a2af96faa765b7e5b2f0
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda#00a7300181018085bab62b6ffa630ac4
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda#f44109e52a40b8149156f5ddd9c11b26
https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda#38589f4104d11f2a59ff01a9f4e3bfb3
-https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda#942aa06b962c7e507884c6fbeb4d1f7d
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda#6f119203c5648ed2b0c36e4fa8b6b504
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda#f53d92ecd7d8563b006107f6a33e55c6
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.3-pyhd8ed1ab_0.conda#c861cae50ac4cbc6d573a947f67a2d0c
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
diff --git a/conda-lock.yml b/conda-lock.yml
index 93ec2f0e755..316c509cf69 100644
--- a/conda-lock.yml
+++ b/conda-lock.yml
@@ -92,14 +92,14 @@ package:
- category: main
dependencies: {}
hash:
- md5: bed72a66ece736ba7e7898a721738613
- sha256: 68301bfc55216fa37403011f25202313b010fcb378adab000e042042175fbfe3
+ md5: 8b8aef0a35f5b98937a65b67b7d3b536
+ sha256: 77c871ba307297dab92ef9a2923ad44bd5d7dcf429b92c45cdbea2bc85209fb3
manager: conda
name: git-lfs
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/linux-64/git-lfs-3.3.0-ha770c72_0.conda
- version: 3.3.0
+ url: https://conda.anaconda.org/conda-forge/linux-64/git-lfs-3.4.0-ha770c72_0.conda
+ version: 3.4.0
- category: main
dependencies: {}
hash:
@@ -1753,14 +1753,14 @@ package:
openssl: '>=3.1.1,<4.0a0'
zstd: '>=1.5.2,<1.6.0a0'
hash:
- md5: 73d6b3c8d9a8f7f2703ef9163ab92b0e
- sha256: 319f4db55b33ca6de0e0581305a3c73a83cfffa53c11b83013b1ec50542191da
+ md5: 96aec6156d58591f5a4e67056521ce1b
+ sha256: def04dfe898cfdcbf13bae00fe4b78308fe0cfc095bb8769395b038c02056fdd
manager: conda
name: libcurl
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.2.0-hca28451_0.conda
- version: 8.2.0
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.2.1-hca28451_0.conda
+ version: 8.2.1
- category: main
dependencies:
giflib: '>=5.2.1,<5.3.0a0'
@@ -1983,14 +1983,14 @@ package:
dependencies:
python: '>=3.7'
hash:
- md5: dbb80d1e8dc2dba5c8b106dc0768ad45
- sha256: d94463e0a140ead5c01990b565a1a21b85cb3831d56fed5955b5446bd5df33fe
+ md5: e41debb259e68490e3ab81e46b639ab6
+ sha256: 7bcfa6d86359d45572ba9ccaeaedc04b0452e2654fe44b6fe378d0d37b8745e1
manager: conda
name: pathspec
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.1-pyhd8ed1ab_0.conda
- version: 0.11.1
+ url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda
+ version: 0.11.2
- category: main
dependencies:
python: '>=3'
@@ -2530,6 +2530,30 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py38h0a891b7_0.tar.bz2
version: 15.0.0
+- category: main
+ dependencies:
+ python: '>=3.7'
+ hash:
+ md5: 0944dc65cb4a9b5b68522c3bb585d41c
+ sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
+ manager: conda
+ name: uri-template
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
+ version: 1.3.0
+- category: main
+ dependencies:
+ python: '>=3.5'
+ hash:
+ md5: 166212fe82dad8735550030488a01d03
+ sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ manager: conda
+ name: webcolors
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ version: '1.13'
- category: main
dependencies:
python: ''
@@ -2640,14 +2664,14 @@ package:
python: '>=3.8'
typing_extensions: '>=4.0.0'
hash:
- md5: a3d2d43b74e042567cc4b5e328534885
- sha256: 673d57dd2c7acb5b1685f8ddeb992d246fcdd658f2c7bba9b4ea3c023bacaf93
+ md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
+ sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
manager: conda
name: async-lru
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda
- version: 2.0.3
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
+ version: 2.0.4
- category: main
dependencies:
python: '>=3.7'
@@ -3296,6 +3320,20 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py38h0a891b7_3.tar.bz2
version: 21.2.0
+- category: main
+ dependencies:
+ python: '>=3.6'
+ python-dateutil: '>=2.7.0'
+ typing_extensions: ''
+ hash:
+ md5: fd1967c76eda3a3dd9e8e6cb7a15a028
+ sha256: a0434c2770cf5b0ab5a33913c0b202b1521bc13f755b762d16a86b110425cdc2
+ manager: conda
+ name: arrow
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2
+ version: 1.2.3
- category: main
dependencies:
importlib-metadata: ''
@@ -3346,6 +3384,19 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-40.0.2-py38h3d167d9_0.conda
version: 40.0.2
+- category: main
+ dependencies:
+ cached-property: '>=1.3.0'
+ python: '>=2.7,<4'
+ hash:
+ md5: 642d35437078749ef23a5dca2c9bb1f3
+ sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
+ manager: conda
+ name: fqdn
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
+ version: 1.5.1
- category: main
dependencies:
cached-property: ''
@@ -3665,6 +3716,19 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/black-22.3.0-pyhd8ed1ab_0.tar.bz2
version: 22.3.0
+- category: main
+ dependencies:
+ arrow: '>=0.15.0'
+ python: '>=3.7'
+ hash:
+ md5: 4cb68948e0b8429534380243d063a27a
+ sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
+ manager: conda
+ name: isoduration
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
+ version: 20.11.0
- category: main
dependencies:
attrs: '>=22.2.0'
@@ -3854,6 +3918,27 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2
version: 2.24.33
+- category: main
+ dependencies:
+ fqdn: ''
+ idna: ''
+ isoduration: ''
+ jsonpointer: '>1.13'
+ jsonschema: '>=4.18.4,<5.0a0'
+ python: ''
+ rfc3339-validator: ''
+ rfc3986-validator: '>0.1.0'
+ uri-template: ''
+ webcolors: '>=1.11'
+ hash:
+ md5: 219fd261913c5a00c1d58519dffd8fc9
+ sha256: e089081c67191f57cefccf8b998ed50f38abd32bcb2129686bd8e58a3a0a4b9a
+ manager: conda
+ name: jsonschema-with-format-nongpl
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.18.4-pyhd8ed1ab_0.conda
+ version: 4.18.4
- category: main
dependencies:
importlib_metadata: '>=4.8.3'
@@ -3872,24 +3957,6 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda
version: 8.3.0
-- category: main
- dependencies:
- jsonschema: '>=3.2'
- python: '>=3.7'
- python-json-logger: '>=2.0.4'
- pyyaml: '>=5.3'
- rfc3339-validator: ''
- rfc3986-validator: '>=0.1.1'
- traitlets: '>=5.3'
- hash:
- md5: d98c5196ab6ffeb0c2feca2912801353
- sha256: 16f73833537e05384d3eef27e62edb31de344d6d26666e1a465c1819014f2655
- manager: conda
- name: jupyter_events
- optional: false
- platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_0.conda
- version: 0.6.3
- category: main
dependencies:
cairo: '>=1.16.0,<2.0a0'
@@ -4095,6 +4162,24 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.2-pyh41d4057_0.conda
version: 8.12.2
+- category: main
+ dependencies:
+ jsonschema-with-format-nongpl: '>=3.2'
+ python: '>=3.7'
+ python-json-logger: '>=2.0.4'
+ pyyaml: '>=5.3'
+ rfc3339-validator: ''
+ rfc3986-validator: '>=0.1.1'
+ traitlets: '>=5.3'
+ hash:
+ md5: 2ac0d00a0fb3f1a4c81c460ba56bb23b
+ sha256: 457e05bfcd6a37fbb8b4a44a500be7512e23bf1ef507e46fbd07497c217a2787
+ manager: conda
+ name: jupyter_events
+ optional: false
+ platform: linux-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda
+ version: 0.6.3
- category: main
dependencies:
jupyter_client: '>=6.1.12'
@@ -4164,14 +4249,14 @@ package:
tornado: '>=6.1'
traitlets: '>=5.4.0'
hash:
- md5: cfafc9387c32a43a1b6d63633489cbc9
- sha256: db2b0e1ad21c95b0b803a2c6208229a4954727cb1d006b46eacb0aa242633218
+ md5: 170114ad7c778072929fc829a86444a7
+ sha256: 9f7b1f0fc96952d1be9f58a6913aa922caa8f92ebb9b21e6a83b8cf9c12fb72f
manager: conda
name: ipykernel
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.24.0-pyh71e2992_0.conda
- version: 6.24.0
+ url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.0-pyh71e2992_0.conda
+ version: 6.25.0
- category: main
dependencies:
beautifulsoup4: ''
@@ -4192,14 +4277,14 @@ package:
tinycss2: ''
traitlets: '>=5.0'
hash:
- md5: 0cda9f218d791ed71c639c1e6cc52c92
- sha256: c4a0931f1673050b174a90976e415502156d330962b5189af212ba2645765567
+ md5: 063c1fda5480050b8d989478c97a4c55
+ sha256: c5db2ba740b2ffddf11a5ba67a3afa7c05bff4656dae3d5f61a9b57c57ea3f8b
manager: conda
name: nbconvert-core
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda
- version: 7.7.2
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda
+ version: 7.7.3
- category: main
dependencies:
graphviz: '>=8.0.5,<9.0a0'
@@ -4247,18 +4332,18 @@ package:
version: 2.7.0
- category: main
dependencies:
- nbconvert-core: 7.7.2 pyhd8ed1ab_0
+ nbconvert-core: 7.7.3 pyhd8ed1ab_0
pandoc: ''
python: '>=3.8'
hash:
- md5: 00a7300181018085bab62b6ffa630ac4
- sha256: ed7ac2f87bc04c84a123be06c2c1a090c2b8ea546674575dd00317698470c9cb
+ md5: f44109e52a40b8149156f5ddd9c11b26
+ sha256: c9fceb914dd4a8fe64b1403a0c7b0c69b5c67fc726aa8239e5ecb450d27e6963
manager: conda
name: nbconvert-pandoc
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda
- version: 7.7.2
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda
+ version: 7.7.3
- category: main
dependencies:
importlib-metadata: '>=4.8.3'
@@ -4285,28 +4370,28 @@ package:
python: '>=3.7'
requests: '>=2.28'
hash:
- md5: 942aa06b962c7e507884c6fbeb4d1f7d
- sha256: 4f19476ef5d4cc712bc0323f36fb06ef5b1a24abcaec4fd87e5efc12ef9d6073
+ md5: 327bfe1c99154f02259d29810bd70afc
+ sha256: 7084223bb168268ba93334fc27410885bdc6e537020d6a91ab0f46f37a3f3ded
manager: conda
name: jupyterlab_server
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda
- version: 2.23.0
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda
+ version: 2.24.0
- category: main
dependencies:
- nbconvert-core: 7.7.2 pyhd8ed1ab_0
- nbconvert-pandoc: 7.7.2 pyhd8ed1ab_0
+ nbconvert-core: 7.7.3 pyhd8ed1ab_0
+ nbconvert-pandoc: 7.7.3 pyhd8ed1ab_0
python: '>=3.8'
hash:
- md5: 6f119203c5648ed2b0c36e4fa8b6b504
- sha256: 9209b5facc69561dac9fe8c8e51471d1c5bcdd4ded396a1ae465497b7eea4162
+ md5: f53d92ecd7d8563b006107f6a33e55c6
+ sha256: 2b9e7bc41ee0882d7829e984cb1a18f039a5f756b5b747f6a3ce352bc72e5103
manager: conda
name: nbconvert
optional: false
platform: linux-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda
- version: 7.7.2
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda
+ version: 7.7.3
- category: main
dependencies:
jupyter_server: '>=1.8,<3'
@@ -4560,14 +4645,14 @@ package:
- category: main
dependencies: {}
hash:
- md5: b282a7c6142993521d8c14c01231269b
- sha256: 17f270ca05ae2a7560b1e14163c6ea7891e9ee55524ae21a293e862444be9fe7
+ md5: 26e1938cad30e5ffbfd4a6e3b814aa9f
+ sha256: 7677cf73b481452625e71e9b29b0358d90ed56055a9fdabfff30c3e5c5f1936d
manager: conda
name: git-lfs
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/git-lfs-3.3.0-h694c41f_0.conda
- version: 3.3.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/git-lfs-3.4.0-h694c41f_0.conda
+ version: 3.4.0
- category: main
dependencies: {}
hash:
@@ -4948,13 +5033,13 @@ package:
dependencies:
llvm-openmp: '>=8.0.0'
hash:
- md5: 0f2fa6f0d82c0ab4086273e6aaf676f0
- sha256: 5cbf349415f87c9b2ecd37b511e34b12160acc5e644923879bb5996bc7fca32c
+ md5: 209e462211f65827cdc01a0d7a72286f
+ sha256: b33deb1bab5fb8f1dbf47a53f3b7352e288427554545157029c084dc27e862a4
manager: conda
name: libgfortran5
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_1.conda
version: 12.3.0
- category: main
dependencies:
@@ -5213,15 +5298,15 @@ package:
version: 1.21.1
- category: main
dependencies:
- libgfortran5: ''
+ libgfortran5: 12.3.0 hbd3c1fe_1
hash:
- md5: 61ac1068cc7720b5fad685b08e43c344
- sha256: f257c979dc528d771c46a950db97d3cc21893ab0bbc968c5d49625a798971a9b
+ md5: 3dfbc4ce09c598763cffcc667686f412
+ sha256: 096794b8155e4b5f9745b18e0a8ba2f9bde3dcf1bdf334d6077ff7937eed7fd5
manager: conda
name: libgfortran
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_1.conda
version: 5.0.0
- category: main
dependencies:
@@ -5844,14 +5929,14 @@ package:
openssl: '>=3.1.1,<4.0a0'
zstd: '>=1.5.2,<1.6.0a0'
hash:
- md5: d4a20b5cacc98af6020576836b408a82
- sha256: 26e2f378d307beed19dfb024ce13c058f374b72b15d219eec1a20ab70bebe7f0
+ md5: cf30b1fa9a77ededa7c1203c68a796bb
+ sha256: c4617b11f0217e6fa81920a8aa070b7c5b33c90385ef95fe19e20265cb95ff4c
manager: conda
name: libcurl
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.2.0-h5f667d7_0.conda
- version: 8.2.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.2.1-h5f667d7_0.conda
+ version: 8.2.1
- category: main
dependencies:
libgfortran: 5.*
@@ -6079,14 +6164,14 @@ package:
dependencies:
python: '>=3.7'
hash:
- md5: dbb80d1e8dc2dba5c8b106dc0768ad45
- sha256: d94463e0a140ead5c01990b565a1a21b85cb3831d56fed5955b5446bd5df33fe
+ md5: e41debb259e68490e3ab81e46b639ab6
+ sha256: 7bcfa6d86359d45572ba9ccaeaedc04b0452e2654fe44b6fe378d0d37b8745e1
manager: conda
name: pathspec
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.1-pyhd8ed1ab_0.conda
- version: 0.11.1
+ url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda
+ version: 0.11.2
- category: main
dependencies:
python: '>=3'
@@ -6605,6 +6690,30 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.0.0-py38hef030d1_0.tar.bz2
version: 15.0.0
+- category: main
+ dependencies:
+ python: '>=3.7'
+ hash:
+ md5: 0944dc65cb4a9b5b68522c3bb585d41c
+ sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
+ manager: conda
+ name: uri-template
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
+ version: 1.3.0
+- category: main
+ dependencies:
+ python: '>=3.5'
+ hash:
+ md5: 166212fe82dad8735550030488a01d03
+ sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ manager: conda
+ name: webcolors
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ version: '1.13'
- category: main
dependencies:
python: ''
@@ -6687,14 +6796,14 @@ package:
python: '>=3.8'
typing_extensions: '>=4.0.0'
hash:
- md5: a3d2d43b74e042567cc4b5e328534885
- sha256: 673d57dd2c7acb5b1685f8ddeb992d246fcdd658f2c7bba9b4ea3c023bacaf93
+ md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
+ sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
manager: conda
name: async-lru
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda
- version: 2.0.3
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
+ version: 2.0.4
- category: main
dependencies:
python: '>=3.7'
@@ -7286,6 +7395,20 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py38hef030d1_3.tar.bz2
version: 21.2.0
+- category: main
+ dependencies:
+ python: '>=3.6'
+ python-dateutil: '>=2.7.0'
+ typing_extensions: ''
+ hash:
+ md5: fd1967c76eda3a3dd9e8e6cb7a15a028
+ sha256: a0434c2770cf5b0ab5a33913c0b202b1521bc13f755b762d16a86b110425cdc2
+ manager: conda
+ name: arrow
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2
+ version: 1.2.3
- category: main
dependencies:
cffi: '>=1.0.0'
@@ -7315,6 +7438,19 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-40.0.2-py38h4257468_0.conda
version: 40.0.2
+- category: main
+ dependencies:
+ cached-property: '>=1.3.0'
+ python: '>=2.7,<4'
+ hash:
+ md5: 642d35437078749ef23a5dca2c9bb1f3
+ sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
+ manager: conda
+ name: fqdn
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
+ version: 1.5.1
- category: main
dependencies:
cairo: '>=1.16.0,<2.0a0'
@@ -7601,6 +7737,19 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/noarch/black-22.3.0-pyhd8ed1ab_0.tar.bz2
version: 22.3.0
+- category: main
+ dependencies:
+ arrow: '>=0.15.0'
+ python: '>=3.7'
+ hash:
+ md5: 4cb68948e0b8429534380243d063a27a
+ sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
+ manager: conda
+ name: isoduration
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
+ version: 20.11.0
- category: main
dependencies:
attrs: '>=22.2.0'
@@ -7815,6 +7964,27 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.7.0-nompi_py38hf55d6a0_101.tar.bz2
version: 3.7.0
+- category: main
+ dependencies:
+ fqdn: ''
+ idna: ''
+ isoduration: ''
+ jsonpointer: '>1.13'
+ jsonschema: '>=4.18.4,<5.0a0'
+ python: ''
+ rfc3339-validator: ''
+ rfc3986-validator: '>0.1.0'
+ uri-template: ''
+ webcolors: '>=1.11'
+ hash:
+ md5: 219fd261913c5a00c1d58519dffd8fc9
+ sha256: e089081c67191f57cefccf8b998ed50f38abd32bcb2129686bd8e58a3a0a4b9a
+ manager: conda
+ name: jsonschema-with-format-nongpl
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.18.4-pyhd8ed1ab_0.conda
+ version: 4.18.4
- category: main
dependencies:
importlib_metadata: '>=4.8.3'
@@ -7833,24 +8003,6 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda
version: 8.3.0
-- category: main
- dependencies:
- jsonschema: '>=3.2'
- python: '>=3.7'
- python-json-logger: '>=2.0.4'
- pyyaml: '>=5.3'
- rfc3339-validator: ''
- rfc3986-validator: '>=0.1.1'
- traitlets: '>=5.3'
- hash:
- md5: d98c5196ab6ffeb0c2feca2912801353
- sha256: 16f73833537e05384d3eef27e62edb31de344d6d26666e1a465c1819014f2655
- manager: conda
- name: jupyter_events
- optional: false
- platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_0.conda
- version: 0.6.3
- category: main
dependencies:
cairo: '>=1.16.0,<2.0a0'
@@ -8168,6 +8320,24 @@ package:
platform: osx-64
url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.2-pyhd1c38e8_0.conda
version: 8.12.2
+- category: main
+ dependencies:
+ jsonschema-with-format-nongpl: '>=3.2'
+ python: '>=3.7'
+ python-json-logger: '>=2.0.4'
+ pyyaml: '>=5.3'
+ rfc3339-validator: ''
+ rfc3986-validator: '>=0.1.1'
+ traitlets: '>=5.3'
+ hash:
+ md5: 2ac0d00a0fb3f1a4c81c460ba56bb23b
+ sha256: 457e05bfcd6a37fbb8b4a44a500be7512e23bf1ef507e46fbd07497c217a2787
+ manager: conda
+ name: jupyter_events
+ optional: false
+ platform: osx-64
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda
+ version: 0.6.3
- category: main
dependencies:
jupyter_client: '>=6.1.12'
@@ -8273,14 +8443,14 @@ package:
tornado: '>=6.1'
traitlets: '>=5.4.0'
hash:
- md5: 2a8ffa559d393fea47237b9d23ddf74f
- sha256: e1342176c31a1da7579f6b837c5c809960c82bc8a47d2593d7af9f457e061dd9
+ md5: fdaa2d313706fac5b173189298c93761
+ sha256: 0a83b26a698ef7c31c99a2dd443785399db0b0a1b134fccafe656c4c55d0729e
manager: conda
name: ipykernel
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.24.0-pyh5fb750a_0.conda
- version: 6.24.0
+ url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.0-pyh5fb750a_0.conda
+ version: 6.25.0
- category: main
dependencies:
beautifulsoup4: ''
@@ -8301,14 +8471,14 @@ package:
tinycss2: ''
traitlets: '>=5.0'
hash:
- md5: 0cda9f218d791ed71c639c1e6cc52c92
- sha256: c4a0931f1673050b174a90976e415502156d330962b5189af212ba2645765567
+ md5: 063c1fda5480050b8d989478c97a4c55
+ sha256: c5db2ba740b2ffddf11a5ba67a3afa7c05bff4656dae3d5f61a9b57c57ea3f8b
manager: conda
name: nbconvert-core
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda
- version: 7.7.2
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda
+ version: 7.7.3
- category: main
dependencies:
graphviz: '>=8.0.5,<9.0a0'
@@ -8376,18 +8546,18 @@ package:
version: 2.7.0
- category: main
dependencies:
- nbconvert-core: 7.7.2 pyhd8ed1ab_0
+ nbconvert-core: 7.7.3 pyhd8ed1ab_0
pandoc: ''
python: '>=3.8'
hash:
- md5: 00a7300181018085bab62b6ffa630ac4
- sha256: ed7ac2f87bc04c84a123be06c2c1a090c2b8ea546674575dd00317698470c9cb
+ md5: f44109e52a40b8149156f5ddd9c11b26
+ sha256: c9fceb914dd4a8fe64b1403a0c7b0c69b5c67fc726aa8239e5ecb450d27e6963
manager: conda
name: nbconvert-pandoc
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda
- version: 7.7.2
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda
+ version: 7.7.3
- category: main
dependencies:
importlib-metadata: '>=4.8.3'
@@ -8414,28 +8584,28 @@ package:
python: '>=3.7'
requests: '>=2.28'
hash:
- md5: 942aa06b962c7e507884c6fbeb4d1f7d
- sha256: 4f19476ef5d4cc712bc0323f36fb06ef5b1a24abcaec4fd87e5efc12ef9d6073
+ md5: 327bfe1c99154f02259d29810bd70afc
+ sha256: 7084223bb168268ba93334fc27410885bdc6e537020d6a91ab0f46f37a3f3ded
manager: conda
name: jupyterlab_server
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda
- version: 2.23.0
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda
+ version: 2.24.0
- category: main
dependencies:
- nbconvert-core: 7.7.2 pyhd8ed1ab_0
- nbconvert-pandoc: 7.7.2 pyhd8ed1ab_0
+ nbconvert-core: 7.7.3 pyhd8ed1ab_0
+ nbconvert-pandoc: 7.7.3 pyhd8ed1ab_0
python: '>=3.8'
hash:
- md5: 6f119203c5648ed2b0c36e4fa8b6b504
- sha256: 9209b5facc69561dac9fe8c8e51471d1c5bcdd4ded396a1ae465497b7eea4162
+ md5: f53d92ecd7d8563b006107f6a33e55c6
+ sha256: 2b9e7bc41ee0882d7829e984cb1a18f039a5f756b5b747f6a3ce352bc72e5103
manager: conda
name: nbconvert
optional: false
platform: osx-64
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda
- version: 7.7.2
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda
+ version: 7.7.3
- category: main
dependencies:
jupyter_server: '>=1.8,<3'
diff --git a/conda-osx-64.lock b/conda-osx-64.lock
index ff38860331b..a9e63ecca8a 100644
--- a/conda-osx-64.lock
+++ b/conda-osx-64.lock
@@ -11,7 +11,7 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77
https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5
https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2#f1c6b41e0f56998ecd9a3e210faa1dc0
https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hb7f2c08_3.conda#aca150b0186836f893ebac79019e5498
-https://conda.anaconda.org/conda-forge/osx-64/git-lfs-3.3.0-h694c41f_0.conda#b282a7c6142993521d8c14c01231269b
+https://conda.anaconda.org/conda-forge/osx-64/git-lfs-3.4.0-h694c41f_0.conda#26e1938cad30e5ffbfd4a6e3b814aa9f
https://conda.anaconda.org/conda-forge/osx-64/icu-72.1-h7336db1_0.conda#c9689510a50a4bb2ae978421671a125e
https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-hb7f2c08_3.conda#6b55131ae9445ef38746dc6b080acda9
https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-hb7f2c08_9.conda#ee1ee8c79c3426229ad03290573be552
@@ -45,7 +45,7 @@ https://conda.anaconda.org/conda-forge/osx-64/libaec-1.0.6-hf0c8a7f_1.conda#7c0f
https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.0.9-hb7f2c08_9.conda#4043ef9fe42e178785e0e1853b79bdf9
https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.0.9-hb7f2c08_9.conda#b64d4dcc70aa141db7fccbf13bad81e1
https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2#6016a8a1d0e63cac3de2c352cd40208b
-https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_0.conda#0f2fa6f0d82c0ab4086273e6aaf676f0
+https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-12.3.0-hbd3c1fe_1.conda#209e462211f65827cdc01a0d7a72286f
https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.39-ha978bb4_0.conda#35e4928794c5391aec14ffdf1deaaee5
https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.42.0-h58db7d2_0.conda#a7d3b44b7b0c9901ac7813b7a0462893
https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda#5513f57e0238c87c12dffedbcc9c1a4a
@@ -66,7 +66,7 @@ https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-hb7f2c08_9.conda#
https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab
https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h3f81eb7_1.conda#852224ea3e8991a8342228eab274840e
https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.1-hb884880_0.conda#d4989bfe4cc9daec567a9935f5ad520b
-https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_0.conda#61ac1068cc7720b5fad685b08e43c344
+https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-12_3_0_h97931a8_1.conda#3dfbc4ce09c598763cffcc667686f412
https://conda.anaconda.org/conda-forge/osx-64/libglib-2.76.4-hc62aa5d_0.conda#05c728fccc40277119bf94cf08e38384
https://conda.anaconda.org/conda-forge/osx-64/libllvm10-10.0.1-h009f743_3.tar.bz2#cc65eb0b26253d2789320bfd661852f9
https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.52.0-he2ab024_0.conda#12ac7d100bf260263e30a019517f42a2
@@ -114,7 +114,7 @@ https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.1-pyhd8ed1ab_0.tar.bz2#9e79315db0f0742b9a2215e122ef8fc9
https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.4-py38h98b9b1b_1.tar.bz2#c11eff21a36bc5809b8e23a05ee71df8
https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.15-h2dcdeff_1.conda#f1df9b0c2d9fbe985e62f4b24773a9e4
-https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.2.0-h5f667d7_0.conda#d4a20b5cacc98af6020576836b408a82
+https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.2.1-h5f667d7_0.conda#cf30b1fa9a77ededa7c1203c68a796bb
https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.23-openmp_h429af6e_0.conda#7000a828e29608e4f57e662b5502d2c9
https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.3.1-hc961f54_0.conda#ac4284f6ef79242e1f1eeb2e6cbdffc4
https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.36.0-py38h872f124_0.tar.bz2#4f2f6cb8e2212d9933fbf8729c5641e5
@@ -132,7 +132,7 @@ https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.0-h13ac156_2.conda#29
https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda#91cda59e66e1e4afe9476f8ef98f5c30
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094
-https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.1-pyhd8ed1ab_0.conda#dbb80d1e8dc2dba5c8b106dc0768ad45
+https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda#e41debb259e68490e3ab81e46b639ab6
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761
https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f
https://conda.anaconda.org/conda-forge/noarch/pluggy-1.2.0-pyhd8ed1ab_0.conda#7263924c642d22e311d9e59b839f1b33
@@ -175,13 +175,15 @@ https://conda.anaconda.org/conda-forge/osx-64/typed-ast-1.5.4-py38hef030d1_1.tar
https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda#c39d6a09fe819de4951c2642629d9115
https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92
https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.0.0-py38hef030d1_0.tar.bz2#51020c740c53f14657f6307b9eb23f85
+https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda#0944dc65cb4a9b5b68522c3bb585d41c
+https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136
https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda#c34d9325a609381a0b0e8a5b4f325147
https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda#66beb36a1fa7e0dc9d9bf843a80eb82c
https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda#2da0451b54c4563c32490cb1b7cf68a1
https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49
https://conda.anaconda.org/conda-forge/noarch/asttokens-2.2.1-pyhd8ed1ab_0.conda#bf7f54dd0f25c3f06ecb82a07341841a
-https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.3-pyhd8ed1ab_0.conda#a3d2d43b74e042567cc4b5e328534885
+https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb
https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda#ac432e732804a81ddcf29c92ead57cde
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda#6b1b907661838a75d067a22f87996b2e
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda#a362ff7d976217f8fa78c0f1c4f59717
@@ -223,8 +225,10 @@ https://conda.anaconda.org/conda-forge/noarch/tqdm-4.65.0-pyhd8ed1ab_1.conda#ed7
https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2
https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda#18badd8fa3648d1beb1fcc7f2e0f756e
https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py38hef030d1_3.tar.bz2#fc1bc20add8eff07c367973bba25e8eb
+https://conda.anaconda.org/conda-forge/noarch/arrow-1.2.3-pyhd8ed1ab_0.tar.bz2#fd1967c76eda3a3dd9e8e6cb7a15a028
https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38hef030d1_1005.tar.bz2#2fa6826f6f94c847bf26709f2162a09c
https://conda.anaconda.org/conda-forge/osx-64/cryptography-40.0.2-py38h4257468_0.conda#e60e91caecdb7719724e6e2124e4cffc
+https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3
https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-7.3.0-h413ba03_0.conda#52a090078d890befdd4865270d1164ec
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b
https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf
@@ -245,6 +249,7 @@ https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.6-pyhd8ed1ab_0.conda#078979d33523cb477bd1916ce41aacc9
https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e
https://conda.anaconda.org/conda-forge/noarch/black-22.3.0-pyhd8ed1ab_0.tar.bz2#7ecbfaae9a30b73c1a6e36e4a0debc03
+https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.18.4-pyhd8ed1ab_0.conda#7356151a32ebd9a20158d2f26d224bfa
https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.3.1-py38h50d1736_0.conda#03a3619e222793567b29b5966c2a821d
https://conda.anaconda.org/conda-forge/osx-64/numpy-1.19.5-py38h5cb586d_3.tar.bz2#669da8c6123bb2f34e6bce634d6fb060
@@ -258,8 +263,8 @@ https://conda.anaconda.org/conda-forge/noarch/sphinx-6.2.1-pyhd8ed1ab_0.conda#a8
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2#855b087883443abb10f5faf6eef40860
https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h7c1209e_2.tar.bz2#307614630946527e302b7dd042a5cfa2
https://conda.anaconda.org/conda-forge/osx-64/h5py-3.7.0-nompi_py38hf55d6a0_101.tar.bz2#c4897e0f9c51c760a750feabb16429ec
+https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.18.4-pyhd8ed1ab_0.conda#219fd261913c5a00c1d58519dffd8fc9
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda#1d018ee4ab13217e2544f795eb0a6798
-https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_0.conda#d98c5196ab6ffeb0c2feca2912801353
https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.56.1-hec3db73_0.conda#19c4afb6c40241051dbbfa32fc63e0d7
https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.3-py38hae485fc_2.tar.bz2#718d7cbae46372fd7972841b82f53f0d
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.1-pyhd8ed1ab_0.conda#3ec35d84fc1775215061517eb4660693
@@ -278,20 +283,21 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1a
https://conda.anaconda.org/conda-forge/osx-64/astropy-5.0.4-py38h4277f33_0.tar.bz2#58445a843bda46aef14f89ba058ea301
https://conda.anaconda.org/conda-forge/osx-64/graphviz-8.1.0-hc7f41f9_0.conda#a840f2eb891fdc5c39c762e16ee09600
https://conda.anaconda.org/conda-forge/noarch/ipython-8.12.2-pyhd1c38e8_0.conda#acc618532cbc899f5721cc96407b16cc
+https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b
https://conda.anaconda.org/conda-forge/osx-64/pytables-3.7.0-py38h83bf2f2_2.tar.bz2#e73c5cffa63e86d5d09a76d669b130e8
https://conda.anaconda.org/conda-forge/noarch/radioactivedecay-0.4.18-pyhd8ed1ab_0.conda#58b31b3a36a75bc0f5d11a8c2885f14f
https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.13.0-pyhd8ed1ab_0.conda#26c51b97ce59bbcce6a35ff45bc5c900
https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-1.2.2-pyha770c72_0.conda#5ef6aaf2cfb3b656cdadb431daed6a9f
-https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.24.0-pyh5fb750a_0.conda#2a8ffa559d393fea47237b9d23ddf74f
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.2-pyhd8ed1ab_0.conda#0cda9f218d791ed71c639c1e6cc52c92
+https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.25.0-pyh5fb750a_0.conda#fdaa2d313706fac5b173189298c93761
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda#063c1fda5480050b8d989478c97a4c55
https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.11-py38h92dd6f0_0.conda#986fbee52d338eec520117351d918755
https://conda.anaconda.org/conda-forge/noarch/sphinx-astropy-1.9.1-pyhd8ed1ab_0.conda#b6a0939e7b6b3a854b8c8f04606da1a7
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.7.0-pyhd8ed1ab_0.conda#7488cd1f4d35a2af96faa765b7e5b2f0
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.2-pyhd8ed1ab_0.conda#00a7300181018085bab62b6ffa630ac4
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda#f44109e52a40b8149156f5ddd9c11b26
https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda#38589f4104d11f2a59ff01a9f4e3bfb3
-https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.23.0-pyhd8ed1ab_0.conda#942aa06b962c7e507884c6fbeb4d1f7d
-https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.2-pyhd8ed1ab_0.conda#6f119203c5648ed2b0c36e4fa8b6b504
+https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc
+https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda#f53d92ecd7d8563b006107f6a33e55c6
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.3-pyhd8ed1ab_0.conda#c861cae50ac4cbc6d573a947f67a2d0c
https://conda.anaconda.org/conda-forge/noarch/nbclassic-1.0.0-pyhb4ecaf3_1.conda#a0be31e9bd84d6eae87cdbf74c56b90b
From 5b361057474ca2014c690b109c570983abb769a8 Mon Sep 17 00:00:00 2001
From: tardis-bot <60989672+tardis-bot@users.noreply.github.com>
Date: Sat, 29 Jul 2023 22:11:43 -0300
Subject: [PATCH 13/13] Post-release 2023.07.30 (#2373)
Automated changes for post-release 2023.07.30
---
CHANGELOG.md | 8 ++-
CITATION.cff | 110 +++++++++++++++++++------------------
README.rst | 67 +++++++++++-----------
docs/resources/credits.rst | 67 +++++++++++-----------
4 files changed, 130 insertions(+), 122 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3de60cc627..81e4f903a68 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
## Change Log
+### release-2023.07.30 (2023/07/30 00:47 +00:00)
+- [#2372](https://github.com/tardis-sn/tardis/pull/2372) Pre-release 2023.07.30 (#2372) (@tardis-bot)
+- [#2365](https://github.com/tardis-sn/tardis/pull/2365) integrate radiation field (#2365) (@wkerzendorf)
+- [#2371](https://github.com/tardis-sn/tardis/pull/2371) Prevent empty convergence plot Error when n_iteration=1 (#2371) (@DeerWhale)
+- [#2369](https://github.com/tardis-sn/tardis/pull/2369) Post-release 2023.07.23 (#2369) (@tardis-bot)
+
### release-2023.07.23 (2023/07/23 14:47 +00:00)
- [#2368](https://github.com/tardis-sn/tardis/pull/2368) Pre-release 2023.07.23 (#2368) (@tardis-bot)
- [#2367](https://github.com/tardis-sn/tardis/pull/2367) integrate new packetsource (#2367) (@wkerzendorf)
@@ -347,8 +353,6 @@
- [#1834](https://github.com/tardis-sn/tardis/pull/1834) Adding Luminosity Integral Explanation to Supernova Configuration (#1834) (@bartnikm)
- [#1842](https://github.com/tardis-sn/tardis/pull/1842) Fixed fstring issue from mixing quotes and reformatted files from fstring PR with black (#1842) (@Rodot-)
- [#1841](https://github.com/tardis-sn/tardis/pull/1841) Fixed the Failing Documentation for Tracking `RPacket` Feature (#1841) (@DhruvSondhi)
-
-### release-2021.12.12 (2021/12/10 17:30 +00:00)
- [#1835](https://github.com/tardis-sn/tardis/pull/1835) Reorganizing docs for website release (#1835) (@smithis7)
- [#1748](https://github.com/tardis-sn/tardis/pull/1748) Tracking RPacket Properties in Montecarlo Single Packet Loop Function (#1748) (@DhruvSondhi)
- [#1706](https://github.com/tardis-sn/tardis/pull/1706) Changed to fstring (#1706) (@svenkat19)
diff --git a/CITATION.cff b/CITATION.cff
index c5b02e7814a..26d92eef60d 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -3,8 +3,8 @@
cff-version: 1.0.3
message: If you use this software, please cite it using these metadata.
# FIXME title as repository name might not be the best name, please make human readable
-title: 'tardis-sn/tardis: TARDIS v2023.07.23'
-doi: 10.5281/zenodo.8175810
+title: 'tardis-sn/tardis: TARDIS v2023.07.30'
+doi: 10.5281/zenodo.8196246
# FIXME splitting of full names is error prone, please check if given/family name are correct
authors:
- given-names: Wolfgang
@@ -91,10 +91,10 @@ authors:
orcid: https://orcid.org/0000-0002-8310-0829
- given-names: Atharva
family-names: Arya
-- given-names: Talytha
- family-names: Barbosa
- given-names: Dhruv
family-names: Sondhi
+- given-names: Talytha
+ family-names: Barbosa
- given-names: Jack
family-names: O'Brien
- given-names: Jenny
@@ -112,10 +112,10 @@ authors:
family-names: Chitchyan
- given-names: Arjun
family-names: Savel
-- given-names: Youssef
- family-names: Eweis
- given-names: Martin
family-names: Reinecke
+- given-names: Youssef
+ family-names: Eweis
- given-names: Tomas
family-names: Bylund
- given-names: William
@@ -137,75 +137,77 @@ authors:
family-names: Magee
- given-names: Ran
family-names: Livneh
-- given-names: Satwik
- family-names: Kambham
- given-names: Joshua
family-names: Shields
+- given-names: Satwik
+ family-names: Kambham
+- given-names: Srinath
+ family-names: Rajagopalan
- given-names: Sashank
family-names: Mishra
orcid: https://orcid.org/0000-0001-8302-1584
-- given-names: Srinath
- family-names: Rajagopalan
-- given-names: GitHub
- family-names: Actions
- given-names: John
family-names: Reichenbach
-- given-names: Rinkle
- family-names: Jain
- given-names: Ayushi
family-names: Daksh
+- given-names: Shreyas
+ family-names: Singh
- given-names: Andreas
family-names: Floers
+- given-names: Rinkle
+ family-names: Jain
+- given-names: GitHub
+ family-names: Actions
+- given-names: Sourav
+ family-names: Singh
- given-names: Antreev
family-names: Brar
-- given-names: Shreyas
- family-names: Singh
-- given-names: Aarya
- family-names: Chaumal
- given-names: Alexander
family-names: Holas
-- given-names: Sourav
- family-names: Singh
- given-names: Jayant
family-names: Bhakar
+- given-names: Aarya
+ family-names: Chaumal
- given-names: Caroline
family-names: Sofiatti
-- given-names: Aman
- family-names: Kumar
-- given-names: Abhishek
- family-names: Patidar
- given-names: Nathan
family-names: Kowalski
-- given-names: Jonatan
- family-names: Selsing
- given-names: Chinmay
family-names: Talegaonkar
-- given-names: Suyash
- family-names: Gupta
-- given-names: Kevin
- family-names: Yap
-- given-names: Laureano
- family-names: Martinez
-- given-names: Morgan
- family-names: Sandler
-- given-names: Musabbiha
- family-names: Zaheer
+- given-names: Jonatan
+ family-names: Selsing
+- given-names: Aman
+ family-names: Kumar
+- given-names: Abhishek
+ family-names: Patidar
+- given-names: Shashank
+ family-names: Venkat
- given-names: Nance
family-names: Sarafina
-- given-names: Nilesh
- family-names: Patra
-- given-names: Parikshit
- family-names: Singh Rathore
-- given-names: Pratik
- family-names: Patel
- given-names: Sampark
family-names: Sharma
-- given-names: Shashank
- family-names: Venkat
+- given-names: Pratik
+ family-names: Patel
+- given-names: Parikshit
+ family-names: Singh Rathore
+- given-names: Nilesh
+ family-names: Patra
+- given-names: Jing
+ family-names: Lu
+- given-names: Musabbiha
+ family-names: Zaheer
+- given-names: Morgan
+ family-names: Sandler
+- given-names: Laureano
+ family-names: Martinez
+- given-names: Kevin
+ family-names: Yap
+- given-names: Suyash
+ family-names: Gupta
- given-names: Shilpi
family-names: Prasad
-- given-names: Harshul
- family-names: Gupta
+- given-names: Debajyoti
+ family-names: Dasgupta
- given-names: Thom
family-names: Lemoine
- given-names: Ujjwal
@@ -214,23 +216,23 @@ authors:
family-names: Aggarwal
- given-names: Yuki
family-names: Matsumura
+- given-names: Harshul
+ family-names: Gupta
- given-names: Dmitry
family-names: Volodin
-- given-names: Debajyoti
- family-names: Dasgupta
- given-names: ABHISHEK
family-names: PATIDAR
- given-names: Le
family-names: Truong
+- given-names: Atul
+ family-names: Kumar
- given-names: Atharwa
family-names: Kharkar
-- given-names: Ashwin
- family-names: Nayak U
- given-names: Chaitanya
family-names: Kolliboyina
-- given-names: Atul
- family-names: Kumar
-version: release-2023.07.23
-date-released: 2023-07-23
+- given-names: Ashwin
+ family-names: Nayak U
+version: release-2023.07.30
+date-released: 2023-07-30
repository-code: https://github.com/tardis-sn/tardis
license: other-open
diff --git a/README.rst b/README.rst
index d6fac921a9b..55de1ffcf72 100644
--- a/README.rst
+++ b/README.rst
@@ -110,14 +110,14 @@ The following BibTeX entries are needed for the references:
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
-.. |CITATION| replace:: kerzendorf_wolfgang_2023_8175810
+.. |CITATION| replace:: kerzendorf_wolfgang_2023_8196246
-.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8175810-blue
- :target: https://doi.org/10.5281/zenodo.8175810
+.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8196246-blue
+ :target: https://doi.org/10.5281/zenodo.8196246
.. code-block:: bibtex
- @software{kerzendorf_wolfgang_2023_8175810,
+ @software{kerzendorf_wolfgang_2023_8196246,
author = {Kerzendorf, Wolfgang and
Sim, Stuart and
Vogl, Christian and
@@ -146,8 +146,8 @@ The following BibTeX entries are needed for the references:
Cawley, Kevin and
Singhal, Jaladh and
Arya, Atharva and
- Barbosa, Talytha and
Sondhi, Dhruv and
+ Barbosa, Talytha and
O'Brien, Jack and
Yu, Jenny and
Patel, Maryam and
@@ -156,8 +156,8 @@ The following BibTeX entries are needed for the references:
Rathi, Shikha and
Chitchyan, Sona and
Savel, Arjun and
- Eweis, Youssef and
Reinecke, Martin and
+ Eweis, Youssef and
Bylund, Tomas and
Black, William and
Bentil, Laud and
@@ -168,59 +168,60 @@ The following BibTeX entries are needed for the references:
Kumar, Ansh and
Magee, Mark and
Livneh, Ran and
- Kambham, Satwik and
Shields, Joshua and
- Mishra, Sashank and
+ Kambham, Satwik and
Rajagopalan, Srinath and
- Actions, GitHub and
+ Mishra, Sashank and
Reichenbach, John and
- Jain, Rinkle and
Daksh, Ayushi and
+ Singh, Shreyas and
Floers, Andreas and
+ Jain, Rinkle and
+ Actions, GitHub and
+ Singh, Sourav and
Brar, Antreev and
- Singh, Shreyas and
- Chaumal, Aarya and
Holas, Alexander and
- Singh, Sourav and
Bhakar, Jayant and
+ Chaumal, Aarya and
Sofiatti, Caroline and
- Kumar, Aman and
- Patidar, Abhishek and
Kowalski, Nathan and
- Selsing, Jonatan and
Talegaonkar, Chinmay and
- Gupta, Suyash and
- Yap, Kevin and
- Martinez, Laureano and
- Sandler, Morgan and
- Zaheer, Musabbiha and
+ Selsing, Jonatan and
+ Kumar, Aman and
+ Patidar, Abhishek and
+ Venkat, Shashank and
Sarafina, Nance and
- Patra, Nilesh and
- Singh Rathore, Parikshit and
- Patel, Pratik and
Sharma, Sampark and
- Venkat, Shashank and
+ Patel, Pratik and
+ Singh Rathore, Parikshit and
+ Patra, Nilesh and
+ Lu, Jing and
+ Zaheer, Musabbiha and
+ Sandler, Morgan and
+ Martinez, Laureano and
+ Yap, Kevin and
+ Gupta, Suyash and
Prasad, Shilpi and
- Gupta, Harshul and
+ Dasgupta, Debajyoti and
Lemoine, Thom and
Wahi, Ujjwal and
Aggarwal, Yash and
Matsumura, Yuki and
+ Gupta, Harshul and
Volodin, Dmitry and
- Dasgupta, Debajyoti and
PATIDAR, ABHISHEK and
Truong, Le and
+ Kumar, Atul and
Kharkar, Atharwa and
- Nayak U, Ashwin and
Kolliboyina, Chaitanya and
- Kumar, Atul},
- title = {tardis-sn/tardis: TARDIS v2023.07.23},
+ Nayak U, Ashwin},
+ title = {tardis-sn/tardis: TARDIS v2023.07.30},
month = jul,
year = 2023,
publisher = {Zenodo},
- version = {release-2023.07.23},
- doi = {10.5281/zenodo.8175810},
- url = {https://doi.org/10.5281/zenodo.8175810}
+ version = {release-2023.07.30},
+ doi = {10.5281/zenodo.8196246},
+ url = {https://doi.org/10.5281/zenodo.8196246}
}
*******
diff --git a/docs/resources/credits.rst b/docs/resources/credits.rst
index 4153b501ae5..a6757cf9ab5 100644
--- a/docs/resources/credits.rst
+++ b/docs/resources/credits.rst
@@ -74,14 +74,14 @@ The following BibTeX entries are needed for the references:
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
-.. |CITATION| replace:: kerzendorf_wolfgang_2023_8175810
+.. |CITATION| replace:: kerzendorf_wolfgang_2023_8196246
-.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8175810-blue
- :target: https://doi.org/10.5281/zenodo.8175810
+.. |DOI_BADGE| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.8196246-blue
+ :target: https://doi.org/10.5281/zenodo.8196246
.. code-block:: bibtex
- @software{kerzendorf_wolfgang_2023_8175810,
+ @software{kerzendorf_wolfgang_2023_8196246,
author = {Kerzendorf, Wolfgang and
Sim, Stuart and
Vogl, Christian and
@@ -110,8 +110,8 @@ The following BibTeX entries are needed for the references:
Cawley, Kevin and
Singhal, Jaladh and
Arya, Atharva and
- Barbosa, Talytha and
Sondhi, Dhruv and
+ Barbosa, Talytha and
O'Brien, Jack and
Yu, Jenny and
Patel, Maryam and
@@ -120,8 +120,8 @@ The following BibTeX entries are needed for the references:
Rathi, Shikha and
Chitchyan, Sona and
Savel, Arjun and
- Eweis, Youssef and
Reinecke, Martin and
+ Eweis, Youssef and
Bylund, Tomas and
Black, William and
Bentil, Laud and
@@ -132,58 +132,59 @@ The following BibTeX entries are needed for the references:
Kumar, Ansh and
Magee, Mark and
Livneh, Ran and
- Kambham, Satwik and
Shields, Joshua and
- Mishra, Sashank and
+ Kambham, Satwik and
Rajagopalan, Srinath and
- Actions, GitHub and
+ Mishra, Sashank and
Reichenbach, John and
- Jain, Rinkle and
Daksh, Ayushi and
+ Singh, Shreyas and
Floers, Andreas and
+ Jain, Rinkle and
+ Actions, GitHub and
+ Singh, Sourav and
Brar, Antreev and
- Singh, Shreyas and
- Chaumal, Aarya and
Holas, Alexander and
- Singh, Sourav and
Bhakar, Jayant and
+ Chaumal, Aarya and
Sofiatti, Caroline and
- Kumar, Aman and
- Patidar, Abhishek and
Kowalski, Nathan and
- Selsing, Jonatan and
Talegaonkar, Chinmay and
- Gupta, Suyash and
- Yap, Kevin and
- Martinez, Laureano and
- Sandler, Morgan and
- Zaheer, Musabbiha and
+ Selsing, Jonatan and
+ Kumar, Aman and
+ Patidar, Abhishek and
+ Venkat, Shashank and
Sarafina, Nance and
- Patra, Nilesh and
- Singh Rathore, Parikshit and
- Patel, Pratik and
Sharma, Sampark and
- Venkat, Shashank and
+ Patel, Pratik and
+ Singh Rathore, Parikshit and
+ Patra, Nilesh and
+ Lu, Jing and
+ Zaheer, Musabbiha and
+ Sandler, Morgan and
+ Martinez, Laureano and
+ Yap, Kevin and
+ Gupta, Suyash and
Prasad, Shilpi and
- Gupta, Harshul and
+ Dasgupta, Debajyoti and
Lemoine, Thom and
Wahi, Ujjwal and
Aggarwal, Yash and
Matsumura, Yuki and
+ Gupta, Harshul and
Volodin, Dmitry and
- Dasgupta, Debajyoti and
PATIDAR, ABHISHEK and
Truong, Le and
+ Kumar, Atul and
Kharkar, Atharwa and
- Nayak U, Ashwin and
Kolliboyina, Chaitanya and
- Kumar, Atul},
- title = {tardis-sn/tardis: TARDIS v2023.07.23},
+ Nayak U, Ashwin},
+ title = {tardis-sn/tardis: TARDIS v2023.07.30},
month = jul,
year = 2023,
publisher = {Zenodo},
- version = {release-2023.07.23},
- doi = {10.5281/zenodo.8175810},
- url = {https://doi.org/10.5281/zenodo.8175810}
+ version = {release-2023.07.30},
+ doi = {10.5281/zenodo.8196246},
+ url = {https://doi.org/10.5281/zenodo.8196246}
}