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\n", + " window.PlotlyConfig = {MathJaxConfig: 'local'};\n", + " if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n", + " if (typeof require !== 'undefined') {\n", + " require.undef(\"plotly\");\n", + " requirejs.config({\n", + " paths: {\n", + " 'plotly': ['https://cdn.plot.ly/plotly-2.18.0.min']\n", + " }\n", + " });\n", + " require(['plotly'], function(Plotly) {\n", + " window._Plotly = Plotly;\n", + " });\n", + " }\n", + " \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": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
09.93e+031.01e+040.40.525
59.85e+031.03e+040.2110.196
109.78e+031.02e+040.1430.115
159.71e+039.88e+030.1050.0843
" + ], + "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": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.01e+041.1e+040.5250.544
51.03e+041.11e+040.1960.204
101.02e+041.08e+040.1150.125
159.88e+031.06e+040.08430.0914
" + ], + "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": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.1e+041.11e+040.5440.501
51.11e+041.14e+040.2040.185
101.08e+041.11e+040.1250.115
151.06e+041.08e+040.09140.086
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.11e+040.5010.487
51.14e+041.14e+040.1850.181
101.11e+041.11e+040.1150.112
151.08e+041.08e+040.0860.0819
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.11e+040.4870.497
51.14e+041.14e+040.1810.178
101.11e+041.13e+040.1120.107
151.08e+041.1e+040.08190.0779
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.12e+040.4970.488
51.14e+041.14e+040.1780.184
101.13e+041.11e+040.1070.113
151.1e+041.08e+040.07790.082
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.11e+040.4880.496
51.14e+041.15e+040.1840.175
101.11e+041.12e+040.1130.109
151.08e+041.09e+040.0820.0816
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.12e+040.4960.49
51.15e+041.16e+040.1750.174
101.12e+041.14e+040.1090.106
151.09e+041.09e+040.08160.0802
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.11e+040.490.49
51.16e+041.15e+040.1740.174
101.14e+041.13e+040.1060.104
151.09e+041.09e+040.08020.0799
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.11e+040.490.496
51.15e+041.15e+040.1740.177
101.13e+041.14e+040.1040.105
151.09e+041.09e+040.07990.081
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.11e+040.4960.501
51.15e+041.16e+040.1770.174
101.14e+041.14e+040.1050.104
151.09e+041.09e+040.0810.0809
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.11e+041.12e+040.5010.485
51.16e+041.16e+040.1740.17
101.14e+041.13e+040.1040.105
151.09e+041.1e+040.08090.0777
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.4850.483
51.16e+041.16e+040.170.174
101.13e+041.14e+040.1050.105
151.1e+041.1e+040.07770.0789
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.4830.48
51.16e+041.16e+040.1740.174
101.14e+041.13e+040.1050.105
151.1e+041.09e+040.07890.0789
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.480.486
51.16e+041.15e+040.1740.18
101.13e+041.12e+040.1050.108
151.09e+041.09e+040.07890.0793
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.4860.486
51.15e+041.15e+040.180.177
101.12e+041.13e+040.1080.107
151.09e+041.09e+040.07930.0811
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.4860.483
51.15e+041.16e+040.1770.17
101.13e+041.13e+040.1070.107
151.09e+041.09e+040.08110.0799
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.4830.482
51.16e+041.16e+040.170.172
101.13e+041.13e+040.1070.105
151.09e+041.09e+040.07990.0807
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Shell No. t_rad next_t_rad w next_w
01.12e+041.12e+040.4820.478
51.16e+041.14e+040.1720.177
101.13e+041.13e+040.1050.107
151.09e+041.08e+040.08070.0814
" + ], + "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} }