TimeFrequencyZap.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2018 by Paul Demorest
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9#ifndef __Pulsar_TimeFrequencyZap_h
10#define __Pulsar_TimeFrequencyZap_h
11
12#include "Pulsar/Transformation.h"
13#include "Pulsar/Archive.h"
14#include "Pulsar/TimeFrequencySmooth.h"
15#include "Pulsar/TimeFrequencyMask.h"
16#include "Pulsar/ScrunchFactor.h"
17
18namespace Pulsar {
19
20 class ArchiveStatistic;
21
23
27 class TimeFrequencyZap : public Transformation<Archive>
28 {
29
30 public:
31
32 TimeFrequencyZap();
33
34 void transform (Archive*);
35
38
39 // Text interface to the TimeFrequencyZap class
40 class Interface : public TextInterface::To<TimeFrequencyZap> {
41 public:
42 Interface (TimeFrequencyZap* = 0);
43 };
44
46 void set_expression (const std::string&);
47
49 std::string get_expression () const { return expression; }
50
53
56
58 void set_logarithmic (bool flag = true) { logarithmic = flag; }
59
61 bool get_logarithmic () const { return logarithmic; }
62
65
68
71
74
76 void set_cutoff_threshold (float t) { masker->set_threshold(t); }
77
79 float get_cutoff_threshold () const { return masker->get_threshold(); }
80
83
85 const ScrunchFactor get_fscrunch () const { return fscrunch_factor; }
86
89
91 const ScrunchFactor get_bscrunch () const { return bscrunch_factor; }
92
94 void set_max_iterations (unsigned n) { max_iterations = n; }
95
97 unsigned get_max_iterations () const { return max_iterations; }
98
100 void set_jobs (const std::string& p) { jobs = p; }
101
103 std::string get_jobs () const { return jobs; }
104
106 void set_polarizations (const std::string& p) { polns = p; }
107
109 std::string get_polarizations () const { return polns; }
110
112 void set_recompute (bool flag = true) { recompute = flag; }
113
115 bool get_recompute () const { return recompute; }
116
118 void set_report (bool flag = true) { report = flag; }
119
121 bool get_report () const { return report; }
122
124 void set_filename (const std::string& name) { filename = name; }
125
127 const std::string& get_filename () const { return filename; }
128
130 void set_aux_filename (const std::string& name) { aux_filename = name; }
131
133 const std::string& get_aux_filename () const { return aux_filename; }
134
135 protected:
136
138 void compute_mask (Archive* data);
139
141 virtual void compute_stat (Archive* data);
142
144 virtual void update_mask();
145
147 void apply_mask (Archive* archive,
149 unsigned chan_offset = 0);
150
152 std::string expression;
153
156
159
162
165
168
171
173 std::string jobs;
174
176 std::string polns;
177
180
183
185 unsigned nchan;
186
188 unsigned nsubint;
189
191 unsigned npol;
192
194 std::vector<unsigned> pol_i;
195
197 std::vector<float> freq;
198
200 std::vector<float> time;
201
203 std::vector<float> stat;
204
206 std::vector<float> mask;
207
209 unsigned idx(unsigned isubint, unsigned ichan) const {
210 return nchan*isubint + ichan;
211 }
212
214 unsigned idx(unsigned isubint, unsigned ichan, unsigned ipol) const {
215 return nchan*npol*isubint + npol*ichan + ipol;
216 }
217
219 void iteration (Archive* archive);
220
223
226
229
231 bool report;
232
234 std::string filename;
235
237 std::string aux_filename;
238
239 private:
240
242 unsigned nmasked;
243
245 unsigned nmasked_original;
246
248 unsigned nmasked_during_iterations;
249
251
252 std::vector<bool> compute_subint;
253
255
256 std::vector<bool> compute_chan;
257
259 Reference::To<Archive> last_dedispersed;
260
262 Reference::To<Archive> dedispersed_clone;
263 };
264
265}
266
267#endif
Commmon statistics that can be derived from an Archive.
Definition ArchiveStatistic.h:25
The primary interface to pulsar observational data.
Definition Archive.h:46
Manages a combined scrunch factor or target dimension.
Definition ScrunchFactor.h:21
static const ScrunchFactor none
Useful for passing default = disabled.
Definition ScrunchFactor.h:30
Compute mask from statistic vs time/freq.
Definition TimeFrequencyMask.h:23
Smooth a statistic vs time freq.
Definition TimeFrequencySmooth.h:23
bool get_logarithmic() const
Get flag to compute the logarithm of the statistic.
Definition TimeFrequencyZap.h:61
Reference::To< TimeFrequencyMask > masker
Method to use for constructing the mask.
Definition TimeFrequencyZap.h:182
void set_polarizations(const std::string &p)
Set the list of polns to look at.
Definition TimeFrequencyZap.h:106
std::vector< float > freq
Frequencies.
Definition TimeFrequencyZap.h:197
std::string polns
The list of polarizations to analyze.
Definition TimeFrequencyZap.h:176
TimeFrequencySmooth * get_smoother() const
Get the smoother.
Definition TimeFrequencyZap.C:733
bool report
Print a report on stdout.
Definition TimeFrequencyZap.h:231
bool recompute
Recompute the statistic on each iteration.
Definition TimeFrequencyZap.h:225
ScrunchFactor fscrunch_factor
Compute mask from fscrunched clone of data (twice)
Definition TimeFrequencyZap.h:167
std::vector< float > mask
The current weights mask.
Definition TimeFrequencyZap.h:206
TextInterface::Parser * get_interface()
Get the text interface to the configuration attributes.
Definition TimeFrequencyZap.C:35
const ScrunchFactor get_bscrunch() const
Get the phase bin scrunch factor.
Definition TimeFrequencyZap.h:91
void set_report(bool flag=true)
Set flag to print a one-line report.
Definition TimeFrequencyZap.h:118
void set_cutoff_threshold(float t)
Set the cut-off threshold.
Definition TimeFrequencyZap.h:76
void set_max_iterations(unsigned n)
Set the maximum number of iterations.
Definition TimeFrequencyZap.h:94
unsigned nsubint
num subints in the current archive
Definition TimeFrequencyZap.h:188
unsigned idx(unsigned isubint, unsigned ichan) const
Index into the freqs, mask arrays vs chan and subint.
Definition TimeFrequencyZap.h:209
void set_recompute(bool flag=true)
Set flag to recompute the statistic on each iteration.
Definition TimeFrequencyZap.h:112
std::vector< float > time
Times.
Definition TimeFrequencyZap.h:200
std::string get_expression() const
Get the statistical expression.
Definition TimeFrequencyZap.h:49
const ScrunchFactor get_fscrunch() const
Get the frequency scrunch factor.
Definition TimeFrequencyZap.h:85
bool pscrunch
pscrunch first
Definition TimeFrequencyZap.h:164
unsigned max_iterations
Maximum number of times to loop.
Definition TimeFrequencyZap.h:222
void set_filename(const std::string &name)
Set name of file to which data are printed.
Definition TimeFrequencyZap.h:124
void set_statistic(ArchiveStatistic *)
Set the statistic.
Definition TimeFrequencyZap.C:707
virtual void compute_stat(Archive *data)
compute the relevant statistic
Definition TimeFrequencyZap.C:489
void set_bscrunch(const ScrunchFactor &f)
Compute covariance matrix from bscrunched clone of data.
Definition TimeFrequencyZap.h:88
unsigned idx(unsigned isubint, unsigned ichan, unsigned ipol) const
Index into the stat array vs chan and subint and pol.
Definition TimeFrequencyZap.h:214
void set_fscrunch(const ScrunchFactor &f)
Set the frequency scrunch factor.
Definition TimeFrequencyZap.h:82
bool regions_from_total
Use the archive total profile to determine on/off pulse regions.
Definition TimeFrequencyZap.h:161
void set_logarithmic(bool flag=true)
Set flag to compute the logarithm of the statistic.
Definition TimeFrequencyZap.h:58
std::string aux_filename
Name of file to which auxiliary data is printed on first iteration.
Definition TimeFrequencyZap.h:237
std::vector< unsigned > pol_i
List of polarizations to analyze.
Definition TimeFrequencyZap.h:194
virtual void update_mask()
determine the time/freq mask
Definition TimeFrequencyZap.C:623
void iteration(Archive *archive)
One iteration of the transformation.
Definition TimeFrequencyZap.C:308
void set_aux_filename(const std::string &name)
Set name of file to which auxiliary data are printed.
Definition TimeFrequencyZap.h:130
std::string get_jobs() const
Get tasks performed on clone before computing statistic.
Definition TimeFrequencyZap.h:103
void transform(Archive *)
Defined by derived classes.
Definition TimeFrequencyZap.C:194
Reference::To< ArchiveStatistic > statistic
The statistic to be derived from each profile.
Definition TimeFrequencyZap.h:155
bool get_recompute() const
Get flag to recompute the statistic on each iteration.
Definition TimeFrequencyZap.h:115
std::string filename
Name of file to which statistics are printed on first iteration.
Definition TimeFrequencyZap.h:234
void apply_mask(Archive *archive, const ScrunchFactor &fscrunch=ScrunchFactor::none, unsigned chan_offset=0)
apply the current mask to the archive
Definition TimeFrequencyZap.C:648
unsigned get_max_iterations() const
Get the maximum number of iterations.
Definition TimeFrequencyZap.h:97
unsigned nchan
num channels in the current archive
Definition TimeFrequencyZap.h:185
std::string get_polarizations() const
Get the list of polns to look at.
Definition TimeFrequencyZap.h:109
std::string expression
The statistical expression.
Definition TimeFrequencyZap.h:152
ArchiveStatistic * get_statistic() const
Get the statistic.
Definition TimeFrequencyZap.C:721
bool get_report() const
Get flag to print a one-line report.
Definition TimeFrequencyZap.h:121
std::vector< float > stat
The current statistic values.
Definition TimeFrequencyZap.h:203
std::string jobs
Tasks performed on clone before computing statistic.
Definition TimeFrequencyZap.h:173
unsigned npol
num poln in the current archive
Definition TimeFrequencyZap.h:191
void set_expression(const std::string &)
Set the statistical expression.
Definition TimeFrequencyZap.C:714
bool recompute_original
Iterate and recompute after masking the original data.
Definition TimeFrequencyZap.h:228
const std::string & get_filename() const
Get name of file to which data are printed.
Definition TimeFrequencyZap.h:127
void set_smoother(TimeFrequencySmooth *)
Set the smoother.
Definition TimeFrequencyZap.C:727
Reference::To< TimeFrequencySmooth > smoother
Method to use for constructing the smoothed stat vs time/freq/pol.
Definition TimeFrequencyZap.h:179
void compute_mask(Archive *data)
computer the mask
Definition TimeFrequencyZap.C:416
TimeFrequencyMask * get_masker() const
Get the masker.
Definition TimeFrequencyZap.C:745
const std::string & get_aux_filename() const
Get name of file to which auxiliary data are printed.
Definition TimeFrequencyZap.h:133
float get_cutoff_threshold() const
Get the cut-off threshold.
Definition TimeFrequencyZap.h:79
ScrunchFactor bscrunch_factor
Compute covariance matrix from bscrunched clone of data.
Definition TimeFrequencyZap.h:170
void set_masker(TimeFrequencyMask *)
Set the masker.
Definition TimeFrequencyZap.C:739
bool logarithmic
Use the logarithm of the statistic.
Definition TimeFrequencyZap.h:158
void set_jobs(const std::string &p)
Set tasks performed on clone before computing statistic.
Definition TimeFrequencyZap.h:100
Algorithms that modify data in the Container.
Definition Transformation.h:20
Defines the PSRCHIVE library.
Definition CalSource.h:17
void fscrunch(Container *, const ScrunchFactor &)
Integrate frequency channels.
Definition ScrunchFactor.h:102

Generated using doxygen 1.14.0