- Module circular_buffer
perform circular buffer testing on an isolated core, with one test per executable
implement a circular buffer with fixed power-of-two size to test &
modulo
- Class mx::AO::analysis::aoAtmosphere< _realT >
layer outer scales need work
layer PSD params isn't finished. Need to push that to PSD itself, and manage things like wavelength dependence.
- Member mx::AO::analysis::aoAtmosphere< _realT >::dumpAtmosphere (iosT &ios)
- update for new vector components (L_0, etc.)
- Member mx::AO::analysis::aoAtmosphere< _realT >::f_g ()
- derive full value of the constant
- Member mx::AO::analysis::aoAtmosphere< _realT >::fwhm (realT lam_sci)
- this needs to handle layers with different L_0
- Member mx::AO::analysis::aoAtmosphere< _realT >::tau_0 ()
- derive full value of the constant
- Member mx::AO::analysis::aoAtmosphere< _realT >::update_v_wind ()
- handle dir_wind averaging across 0/2pi
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::C0var (realT m, realT n)
- handle multiple layers
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::C1var (realT m, realT n)
- handle multiple layers
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::C4var (realT m, realT n)
- handle multiple layers
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::C5var (realT m, realT n)
- handle multiple layers
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::C7var (realT m, realT n)
- this needs to handle multiple layers – do we violate an assumption of L_0 isn't constant?
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::d_opt ()
this should be in a separate valideModes function
investigate why we tolerate m_d_min = 0 here. Is this just a config error?
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::fittingError (realT m, realT n)
- handle multiple layers
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::loadConfig (app::appConfigurator &config)
- : "\test Loading aoAtmosphere config settings \ref tests_ao_analysis_aoAtmosphere_config "[test doc]""
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::optimumTauWFS (realT m, realT n)
- Check inclusion of X in parameters
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::optimumTauWFS (realT m, realT n, realT d, int b)
Check inclusion of X in parameters
handle multiple layers
- Member mx::AO::analysis::aoSystem< _realT, _inputSpectT, iosT >::timeDelayError (realT m, realT n, realT d, int b)
- handle multiple layers
- Member mx::AO::analysis::fourierCovariance< realT, aosysT >::getVariance (realT &error)
document me
handle gsl errors
- Class mx::AO::analysis::fourierTemporalPSD< _realT, aosysT >
Split off the integration parameters in a separate structure.
once integration parameters are in a separate structure, make this a class with protected members.
GSL error handling
- Member mx::AO::analysis::fourierTemporalPSD< _realT, aosysT >::intensityPSD (const std::string &subDir, const std::string &psdDir, const std::string &CvdPath, int mnMax, int mnCon, const std::string &si_or_lp, std::vector< realT > &mags, int lifetimeTrials, bool writePSDs)
- should be able to scale the covar by r0, and possibly D
- Member mx::AO::analysis::fourierTemporalPSD< _realT, aosysT >::multiLayerPSD (std::vector< realT > &PSD, std::vector< realT > &freq, realT m, realT n, int p, realT fmax=0)
implement error checking
handle reports of convergence failures form singleLayerPSD when implemented.
- Member mx::AO::analysis::fourierTemporalPSD< _realT, aosysT >::singleLayerPSD (std::vector< realT > &PSD, std::vector< realT > &freq, realT m, realT n, int layer_i, int p, realT fmax=0)
implement error checking.
need a way to track convergence failures in integral without throwing an error.
need better handling of averaging for the -17/3 extension.
- Member mx::AO::analysis::speckleAmpPSD (std::vector< realT > &spFreq, std::vector< realT > &spPSD, const std::vector< realT > &freq, const std::vector< realT > &fmPSD, const std::vector< std::complex< realT >> &fmXferFxn, const std::vector< realT > &nPSD, const std::vector< std::complex< realT >> &nXferFxn, int N, std::vector< realT > *vars=nullptr, std::vector< realT > *bins=nullptr, bool noPSD=false)
Figure out what's going on with psdFilter normalization!
probably need to not do overlapped averaging in periodogram. Could drop mean-sub then.
- Member mx::AO::analysis::vonKarmanSpectrum< realT >::dumpPSD (iosT &ios)
- generatlize for different alpha and beta
- Member mx::AO::analysis::vonKarmanSpectrum< realT >::operator() (psdParamsT &par, size_t layer_i, realT k, realT sec_zeta)
- this needs to handle layers with different L_0
- Class mx::AO::analysis::zernikeTemporalPSD< _realT, aosysT >
Split off the integration parameters in a separate structure.
once integration parameters are in a separate structure, make this a class with protected members.
GSL error handling
- Member mx::AO::analysis::zernikeTemporalPSD< _realT, aosysT >::multiLayerPSD (std::vector< realT > &PSD, std::vector< realT > &freq, int zern_j, realT fmax=0)
implement error checking
handle reports of convergence failures form singleLayerPSD when implemented.
- Member mx::AO::analysis::zernikeTemporalPSD< _realT, aosysT >::singleLayerPSD (std::vector< realT > &PSD, std::vector< realT > &freq, int zern_j, int layer_i, realT fmax=0)
implement error checking.
need a way to track convergence failures in integral without throwing an error.
need better handling of averaging for the -17/3 extension.
- Class mx::AO::sim::generalIntegrator< _realT >
document the math for the G.I.
document the filter coefficients, etc.
- Class mx::AO::sim::turbAtmosphere< _aoSystemT >
add facility for switching interpolators
need to include wrap detection when using subharmonics (e.g. frames needs to be right)
- Member mx::AO::sim::turbAtmosphere< _aoSystemT >::m_forceGen
- need check for changes in parameters to decide if saved frames are valid per layer
- Class mx::AO::sim::turbLayer< _aoSystemT >
document this
add facility for changing interpolator
- Class mx::app::appConfigurator
add handling of += in subsequent files.
should just swith to strict TOML
- Member mx::app::appConfigurator::readConfig (const std::string &fname, bool reportFileNotFound=true)
handle += here, by appending to the last value as if a vector.
update error handling to include >0 (line numer of parse error) and -2 memory allocation error.
- Member mx::app::iniFile::insert (const char *section, const char *name, const char *value)
- need error checking.
- Member mx::astro::baseSpectrum< realT >::charFlux (realT &flambda0, realT &fnu0, realT &fphot0, const realT &lambda_0, const std::vector< realT > &lambda, const filterT &trans)
use unit conversions to make it work for everything.
check on integration method, should it be trap?
- Member mx::astro::baseSpectrum< realT >::charFlux (realT &flambda0, realT &fnu0, realT &fphot0, const realT &lambda_0, const std::vector< realT > &lambda, const std::vector< realT > &trans)
use unit conversions to make it work for everything.
check on integration method, should it be trap?
- Member mx::astro::getGMST (realT &GMST, int Yr, int Mo, int Dy, int hr, int min, realT sec)
handle SOFA error.
handle SOFA error.
handle SOFA error.
handle SOFA error.
- Member mx::fits::fitsFile< dataT >::read (dataT *data)
- test if there is a speed difference for full reads for fits_read_pix/subset
- Member mx::fits::fitsFile< dataT >::read (arrT &data)
- this can probably be made part of one read function (or call read(data *)) with a call to resize with SFINAE
- Member mx::improc::HCIobservation< _realT >::coaddImages (int coaddCombineMethod, int coaddMaxImno, int coaddMaxTime, std::vector< std::string > &coaddKeywords, std::vector< double > &imageMJD, std::vector< fits::fitsHeader > &heads, eigenCube< realT > &ims)
this should really include end of exposure too.
this needs to handle averaging of angles
- Member mx::improc::HCIobservation< _realT >::m_comboWeights
- check how comboWeights are handled in coadding
- Member mx::improc::HCIobservation< _realT >::outputPreProcessed ()
- Should add a HISTORY card here
- Member mx::improc::HCIobservation< _realT >::readMask ()
- here re-size mask if needed to match imSize
- Member mx::improc::imageDownSample (imageOutT &imout, const imageInT &imin)
- Allow selection of interpolator, providing a default version.
- Member mx::improc::imageXCorrFFT< _ccImT >::normalize (bool no)
- check if this has side effects that should be triggered
- Member mx::improc::imCenterCircleSym< realT >::center (realT &x, realT &y, eigenImage< realT > &im, realT x0, realT y0)
- This needs to be able to handle highly non-symmetric peaks much better.
- Member mx::improc::imCenterRadon< transformT >::fitGrid (realT &x, realT &y, eigenImage< realT > grid)
- This needs to be able to handle highly non-symmetric peaks much better.
- Member mx::ioutils::getSequentialFilename (const std::string &basename, const std::string &extension="", const int startat=0, int ndigit=4)
- switch to using a regex or something so we can detect the missing file.
- Member mx::ioutils::readColumns (const std::string &fname, arrTs &... arrays)
- lineSize should be configurable
- Class mx::ioutils::textTable
have ability to add whole row, with a variadic template to handle different types
allow non-wrapping (i.e. unlimited width) columns
headers and footers
add centering (h and v) and right and bottom justification
have a latex() setup function
add sort capability, with vector of column choices to sort first by column N, then M, etc.
- Class mx::math::fft::fftT< _inputT, _outputT, _rank, 0 >
add execute interface with fftw like signature
add plan interface where user passes in pointers (to avoid allocations)
- Member mx::math::func::root_epsilon ()
- this isn't, but should be constexpr – need constr sqrt.
- Class mx::math::gnuPlot
- Use mxError for error reporting.
- Member mx::math::gnuPlot::checkResponse (std::string &response, double timeout=0)
- investigate having a second thread monitor for responses.
- Member mx::math::gsl_interpolate (const gsl_interp_type *interpT, realT *xin, realT *yin, size_t Nin, realT *xout, realT *yout, size_t Nout)
- report errors iaw mxlib standard in gsl_interpolate
- Member mx::math::radprofIntegral (vectorScT r, vectorT p, bool inczero=false)
- the trapezoid rule may not be strictly valid as implemented. Is there a weighting to apply based on r?
- Class mx::math::syevrMem< floatT >
- this should have the working memory for the first exploratory call to ?syevr as well.
- Member mx::sigproc::autocorrelation (std::vector< T > &ac, std::vector< T > &sig)
- this should probably re-allocate if ac.size() != sig.size(), or at least <
- Class mx::sigproc::linearPredictor< _realT >
- document linearPredictor
- Member mx::sigproc::makeFourierModeFreqs_Circ (std::vector< fourierModeDef > &spf, int N)
- use push_back instead of resize
- Member mx::sigproc::makeFourierModeFreqs_PandV (std::vector< fourierModeDef > &spf, int N)
- use push_back instead of resize
- Class mx::sigproc::psdFilter< _realT, 1 >
- once fftT has a plan interface with pointers for working memory, use it.
- Class mx::sigproc::psdFilter< _realT, _rank, 0 >
- once fftT has a plan interface with pointers for working memory, use it.
- Class mx::sigproc::psdVarMean< paramsT >
- document the paramsT interface
- Member mx::sigproc::psdVarMean< paramsT >::init ()
- We'll get the occasional failure to reach tolerance error, just ignore them all for now.
- Member mx::sigproc::psdVarMeanParams< _realT >::psdVal (realT k)
- implement better extrapolation past max-freq.
- Member mx::sigproc::zernikeQNorm (realT k, realT phi, int n, int m)
- need a more robust jinc_n function for n > 1
- Member mx::wfp::drawLine (arrayT &im, typename arrayT::Scalar x0, typename arrayT::Scalar y0, typename arrayT::Scalar x1, typename arrayT::Scalar y1, typename arrayT::Scalar halfWidth)
- should handle width much more intelligently, this only works for ~45 degree lines.
- Class mx::wfp::fraunhoferPropagator< _wavefrontT >
- check if we should reverse the FFT orders to be proper
- File zernike.hpp
- the basic zernike polys should be in math::func.