|
1 | 1 | """This module provides utilities to deal with RDRx files."""
|
2 |
| -from diviner import file_utils as fu |
3 | 2 | import pandas as pd
|
4 | 3 |
|
| 4 | +from diviner import file_utils as fu |
| 5 | + |
5 | 6 | # this list are the column names in rdrr that have detector specific data.
|
6 | 7 | to_melt = [
|
7 | 8 | 'cemis',
|
@@ -72,6 +73,36 @@ def get_edr_data(self):
|
72 | 73 | return self.df.filter(regex='edr_')
|
73 | 74 |
|
74 | 75 |
|
| 76 | +class RDRS(object): |
| 77 | + """Class to enable extracting data from RDRx.""" |
| 78 | + |
| 79 | + def __init__(self, tstr_or_filename): |
| 80 | + self.df = fu.RDRS_Reader(tstr_or_filename).open() |
| 81 | + |
| 82 | + @property |
| 83 | + def columns(self): |
| 84 | + return self.df.columns |
| 85 | + |
| 86 | + def get_column(self, colbase): |
| 87 | + return self.df.filter(regex='^' + colbase + '_') |
| 88 | + |
| 89 | + def get_counts(self): |
| 90 | + return self.get_column('counts') |
| 91 | + |
| 92 | + def get_molten_col(self, colbase, channel): |
| 93 | + rdr1 = self.df |
| 94 | + df = rdr1[colnames(colbase, channel)] |
| 95 | + df = df.rename(columns=lambda x: int(x.split('_')[-1])) |
| 96 | + return pd.melt(df.reset_index(), id_vars=['index'], |
| 97 | + var_name='det', value_name=colbase) |
| 98 | + |
| 99 | + def merge_with_molten(self, colbase, channel, target_df): |
| 100 | + molten = self.get_molten_col(colbase, channel) |
| 101 | + return target_df.merge(molten, on=['index', 'det']) |
| 102 | + |
| 103 | + def get_edr_data(self): |
| 104 | + return self.df.filter(regex='edr_') |
| 105 | + |
75 | 106 | no_melt = [
|
76 | 107 | 'jdate',
|
77 | 108 | 'orbit',
|
|
0 commit comments