diff --git a/tardis/analysis.py b/tardis/analysis.py index 32653b6429c..98911129cf3 100644 --- a/tardis/analysis.py +++ b/tardis/analysis.py @@ -89,25 +89,29 @@ def update_last_interaction_filter(self): self.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[self.last_line_in.atomic_number == self.atomic_number] - self.last_line_out = self.last_line_out[self.last_line_out.atomic_number == self.atomic_number] + self.last_line_in = self.last_line_in.xs(self.atomic_number, level='atomic_number', drop_level=False) + self.last_line_out = self.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[self.last_line_in.ion_number == self.ion_number] - self.last_line_out = self.last_line_out[self.last_line_out.ion_number == self.ion_number] + self.last_line_in = self.last_line_in.xs(self.ion_number, level='ion_number', drop_level=False) + self.last_line_out = self.last_line_out.xs(self.ion_number, level='ion_number', drop_level=False) - last_line_in_count = self.last_line_in.wavelength.groupby(level=0).count() - last_line_out_count = self.last_line_out.wavelength.groupby(level=0).count() + last_line_in_count = self.last_line_in.line_id.value_counts() + last_line_out_count = self.last_line_out.line_id.value_counts() - self.last_line_in_table = self.lines[['wavelength', 'atomic_number', 'ion_number', 'level_number_lower', - 'level_number_upper']].ix[last_line_in_count.index] + self.last_line_in_table = self.last_line_in.reset_index()[ + [ + 'wavelength', 'atomic_number', 'ion_number', + 'level_number_lower', 'level_number_upper']] self.last_line_in_table['count'] = last_line_in_count - self.last_line_in_table.sort('count', ascending=False, inplace=True) - self.last_line_out_table = self.lines[['wavelength', 'atomic_number', 'ion_number', 'level_number_lower', - 'level_number_upper']].ix[last_line_out_count.index] + self.last_line_in_table.sort_values(by='count', ascending=False, inplace=True) + self.last_line_out_table = self.last_line_out.reset_index()[ + [ + 'wavelength', 'atomic_number', 'ion_number', + 'level_number_lower', 'level_number_upper']] self.last_line_out_table['count'] = last_line_out_count - self.last_line_out_table.sort('count', ascending=False, inplace=True) + self.last_line_out_table.sort_values(by='count', ascending=False, inplace=True) def update_last_interaction_line_in_nu_filter(self): diff --git a/tardis/gui/widgets.py b/tardis/gui/widgets.py index 5adbed691cc..fe13b70a122 100644 --- a/tardis/gui/widgets.py +++ b/tardis/gui/widgets.py @@ -959,7 +959,7 @@ def __init__(self, line_interaction_analysis, atom_data, lines_data, description self.layout = QtGui.QHBoxLayout() self.line_interaction_analysis = line_interaction_analysis self.atom_data = atom_data - self.lines_data = lines_data + self.lines_data = lines_data.reset_index().set_index('line_id') line_interaction_species_group = \ line_interaction_analysis.last_line_in.groupby(['atomic_number', 'ion_number']) @@ -990,31 +990,34 @@ def on_species_clicked(self, index): last_line_in = self.line_interaction_analysis.last_line_in last_line_out = self.line_interaction_analysis.last_line_out - last_line_in_filter = (last_line_in.atomic_number == current_species[0]).values & \ - (last_line_in.ion_number == current_species[1]).values + current_last_line_in = last_line_in.xs( + key=(current_species[0], current_species[1]), + level=['atomic_number', 'ion_number'], + drop_level=False).reset_index() + current_last_line_out = last_line_out.xs( + key=(current_species[0], current_species[1]), + level=['atomic_number', 'ion_number'], + drop_level=False).reset_index() - current_last_line_in = last_line_in[last_line_in_filter].reset_index() - current_last_line_out = last_line_out[last_line_in_filter].reset_index() - - current_last_line_in['line_id_out'] = current_last_line_out['line_id'] + current_last_line_in['line_id_out'] = current_last_line_out.line_id last_line_in_string = [] last_line_count = [] - grouped_line_interactions = current_last_line_in.groupby(['line_id', - 'line_id_out']) + grouped_line_interactions = current_last_line_in.groupby( + ['line_id', 'line_id_out']) exc_deexc_string = 'exc. %d-%d (%.2f A) de-exc. %d-%d (%.2f A)' for line_id, row in grouped_line_interactions.wavelength.count().iteritems(): - current_line_in = self.lines_data.ix[line_id[0]] - current_line_out = self.lines_data.ix[line_id[1]] + current_line_in = self.lines_data.loc[line_id[0]] + current_line_out = self.lines_data.loc[line_id[1]] last_line_in_string.append(exc_deexc_string % ( current_line_in['level_number_lower'], - current_line_in['level_number_upper'], - current_line_in['wavelength'], - current_line_out['level_number_upper'], - current_line_out['level_number_lower'], - current_line_out['wavelength'])) + current_line_in['level_number_upper'], + current_line_in['wavelength'], + current_line_out['level_number_upper'], + current_line_out['level_number_lower'], + current_line_out['wavelength'])) last_line_count.append(int(row))