cacao  Release 0.1.03-dev
Compute And Control For Adaptive Optics
AOloopControl_perfTest.c File Reference

Adaptive Optics Control loop engine testing. More...

#include <string.h>
#include <math.h>
#include <pthread.h>
#include <dirent.h>
#include <stdio.h>
#include "CommandLineInterface/CLIcore.h"
#include "00CORE/00CORE.h"
#include "COREMOD_tools/COREMOD_tools.h"
#include "COREMOD_iofits/COREMOD_iofits.h"
#include "COREMOD_memory/COREMOD_memory.h"
#include "statistic/statistic.h"
#include "AOloopControl/AOloopControl.h"
#include "AOloopControl_perfTest/AOloopControl_perfTest.h"
Include dependency graph for AOloopControl_perfTest.c:

Data Structures

struct  StreamDataFile
 

Macros

#define MODULE_SHORTNAME_DEFAULT   ""
 
#define MODULE_DESCRIPTION   "AO loop control performance monitoring and testing"
 
#define MODULE_APPLICATION   "cacao"
 
#define _GNU_SOURCE
 
#define MaxNBdatFiles   100000
 

Functions

AOloopControl - 9. STATUS / TESTING / PERF MEASUREMENT
errno_t AOcontrolLoop_perfTest_TestDMSpeed_cli ()
 CLI function for AOcontrolLoop_TestDMSpeed. More...
 
errno_t AOcontrolLoop_perfTest_TestSystemLatency_cli ()
 
errno_t AOloopControl_perfTest_TestDMmodeResp_cli ()
 CLI function for AOloopControl_TestDMmodeResp. More...
 
errno_t AOloopControl_perfTest_TestDMmodes_Recovery_cli ()
 CLI function for AOloopControl_TestDMmodes_Recovery. More...
 
errno_t AOloopControl_perfTest_blockstats_cli ()
 CLI function for AOloopControl_blockstats. More...
 
errno_t AOloopControl_perfTest_InjectMode_cli ()
 CLI function for AOloopControl_InjectMode. More...
 
errno_t AOloopControl_perfTest_loopMonitor_cli ()
 CLI function for AOloopControl_loopMonitor. More...
 
errno_t AOloopControl_perfTest_statusStats_cli ()
 CLI function for AOloopControl_statusStats. More...
 
errno_t AOloopControl_perfTest_mkTestDynamicModeSeq_cli ()
 CLI function for AOloopControl_mkTestDynamicModeSeq. More...
 
errno_t AOloopControl_perfTest_AnalyzeRM_sensitivity_cli ()
 CLI function for AOloopControl_AnalyzeRM_sensitivity. More...
 
errno_t AOloopControl_LoopTimer_Analysis_cli ()
 
errno_t AOloopControl_perfTest_mkSyncStreamFiles2_cli ()
 
errno_t AOloopControl_perfTest_ComputeSimilarityMatrix_cli ()
 
errno_t AOloopControl_perfTest_StatAnalysis_2streams_cli ()
 
errno_t AOloopControl_perfTest_SelectWFSframes_from_PSFframes_cli ()
 
errno_t AOcontrolLoop_perfTest_TestSystemLatency_FPCONF (char *fpsname, uint32_t CMDmode)
 
errno_t AOcontrolLoop_perfTest_TestSystemLatency_RUN (char *fpsname)
 
errno_t AOcontrolLoop_perfTest_TestSystemLatency (const char *dmname, char *wfsname, float OPDamp, long NBiter)
 
imageID AOloopControl_perfTest_blockstats (long loop, const char *IDout_name)
 
errno_t AOloopControl_perfTest_InjectMode (long index, float ampl)
 
errno_t AOloopControl_perfTest_AnalyzeRM_sensitivity (const char *IDdmmodes_name, const char *IDdmmask_name, const char *IDwfsref_name, const char *IDwfsresp_name, const char *IDwfsmask_name, float amplimitnm, float lambdanm, const char *foutname)
 
imageID AOloopControl_perfTest_mkTestDynamicModeSeq (const char *IDname_out, long NBpt, long NBmodes, long StartMode)
 
errno_t AOloopControl_LoopTimer_Analysis (char *IDname, char *fnametxt, char *outfname)
 
char * remove_ext (char *mystr, char dot, char sep)
 
void quicksort_StreamDataFile (StreamDataFile *datfile, long left, long right)
 
errno_t AOloopControl_perfTest_mkTimingFile (char *inTimingfname, char *outTimingfname, char *tmpstring)
 
errno_t AOloopControl_perfTest_mkSyncStreamFiles2 (char *datadir, char *stream0, char *stream1, double tstart, double tend, double dt, double dtlag)
 
errno_t AOloopControl_perfTest_ComputeSimilarityMatrix (char *IDname, char *IDname_out)
 
errno_t AOloopControl_perfTest_StatAnalysis_2streams (char *IDname_stream0, char *IDname_stream1, char *IDname_simM0, char *IDname_simM1, long dtmin, unsigned long NBselected)
 
errno_t AOloopControl_perfTest_SelectWFSframes_from_PSFframes (char *IDnameWFS, char *IDnamePSF, float frac, long x0, long x1, long y0, long y1, int EvalMode, float alpha)
 

Variables

static struct timespec tnow
 
long LOOPNUMBER
 
AOLOOPCONTROL_CONFAOconf
 CLI function for AOloopControl_setframesAve. More...
 
AOloopControl_var aoloopcontrol_var
 

Detailed Description

Adaptive Optics Control loop engine testing.

AO engine uses stream data structure

Main files

AOloopControl_perfTest_DM.c Test DM speed and examine DM modes AOloopControl_perfTest_status.c Report loop metrics, loop performance monitor

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

◆ MaxNBdatFiles

#define MaxNBdatFiles   100000

◆ MODULE_APPLICATION

#define MODULE_APPLICATION   "cacao"

◆ MODULE_DESCRIPTION

#define MODULE_DESCRIPTION   "AO loop control performance monitoring and testing"

◆ MODULE_SHORTNAME_DEFAULT

#define MODULE_SHORTNAME_DEFAULT   ""

Function Documentation

◆ AOcontrolLoop_perfTest_TestDMSpeed_cli()

errno_t AOcontrolLoop_perfTest_TestDMSpeed_cli ( )

CLI function for AOcontrolLoop_TestDMSpeed.

◆ AOcontrolLoop_perfTest_TestSystemLatency()

errno_t AOcontrolLoop_perfTest_TestSystemLatency ( const char *  dmname,
char *  wfsname,
float  OPDamp,
long  NBiter 
)

◆ AOcontrolLoop_perfTest_TestSystemLatency_cli()

errno_t AOcontrolLoop_perfTest_TestSystemLatency_cli ( )

◆ AOcontrolLoop_perfTest_TestSystemLatency_FPCONF()

errno_t AOcontrolLoop_perfTest_TestSystemLatency_FPCONF ( char *  fpsname,
uint32_t  CMDmode 
)

◆ AOcontrolLoop_perfTest_TestSystemLatency_RUN()

errno_t AOcontrolLoop_perfTest_TestSystemLatency_RUN ( char *  fpsname)

Purpose

Measure hardware latency between DM and WFS streams

Arguments

Parameters
[in]dmnamechar* DM actuation stream to which function sends pokes
[in]wfsnamechar*
  • WFS image stream
[in]OPDampFLOAT Poke amplitude [um]
[in]NBiterLONG Number of poke cycles

◆ AOloopControl_LoopTimer_Analysis()

errno_t AOloopControl_LoopTimer_Analysis ( char *  IDname,
char *  fnametxt,
char *  outfname 
)

◆ AOloopControl_LoopTimer_Analysis_cli()

errno_t AOloopControl_LoopTimer_Analysis_cli ( )

◆ AOloopControl_perfTest_AnalyzeRM_sensitivity()

errno_t AOloopControl_perfTest_AnalyzeRM_sensitivity ( const char *  IDdmmodes_name,
const char *  IDdmmask_name,
const char *  IDwfsref_name,
const char *  IDwfsresp_name,
const char *  IDwfsmask_name,
float  amplimitnm,
float  lambdanm,
const char *  foutname 
)

◆ AOloopControl_perfTest_AnalyzeRM_sensitivity_cli()

errno_t AOloopControl_perfTest_AnalyzeRM_sensitivity_cli ( )

CLI function for AOloopControl_AnalyzeRM_sensitivity.

◆ AOloopControl_perfTest_blockstats()

imageID AOloopControl_perfTest_blockstats ( long  loop,
const char *  IDout_name 
)

◆ AOloopControl_perfTest_blockstats_cli()

errno_t AOloopControl_perfTest_blockstats_cli ( )

CLI function for AOloopControl_blockstats.

◆ AOloopControl_perfTest_ComputeSimilarityMatrix()

errno_t AOloopControl_perfTest_ComputeSimilarityMatrix ( char *  IDname,
char *  IDname_out 
)

Purpose

Compute similarity matrix between frames of a datacube

◆ AOloopControl_perfTest_ComputeSimilarityMatrix_cli()

errno_t AOloopControl_perfTest_ComputeSimilarityMatrix_cli ( )

◆ AOloopControl_perfTest_InjectMode()

errno_t AOloopControl_perfTest_InjectMode ( long  index,
float  ampl 
)

◆ AOloopControl_perfTest_InjectMode_cli()

errno_t AOloopControl_perfTest_InjectMode_cli ( )

CLI function for AOloopControl_InjectMode.

◆ AOloopControl_perfTest_loopMonitor_cli()

errno_t AOloopControl_perfTest_loopMonitor_cli ( )

CLI function for AOloopControl_loopMonitor.

◆ AOloopControl_perfTest_mkSyncStreamFiles2()

errno_t AOloopControl_perfTest_mkSyncStreamFiles2 ( char *  datadir,
char *  stream0,
char *  stream1,
double  tstart,
double  tend,
double  dt,
double  dtlag 
)

Purpose

Synchronize two telemetry streams

Arguments

savedir is the location of the telemetry, for example /media/data/20180202

dtlag: positive when stream0 is earlier than stream1

◆ AOloopControl_perfTest_mkSyncStreamFiles2_cli()

errno_t AOloopControl_perfTest_mkSyncStreamFiles2_cli ( )

◆ AOloopControl_perfTest_mkTestDynamicModeSeq()

imageID AOloopControl_perfTest_mkTestDynamicModeSeq ( const char *  IDname_out,
long  NBpt,
long  NBmodes,
long  StartMode 
)

◆ AOloopControl_perfTest_mkTestDynamicModeSeq_cli()

errno_t AOloopControl_perfTest_mkTestDynamicModeSeq_cli ( )

CLI function for AOloopControl_mkTestDynamicModeSeq.

◆ AOloopControl_perfTest_mkTimingFile()

errno_t AOloopControl_perfTest_mkTimingFile ( char *  inTimingfname,
char *  outTimingfname,
char *  tmpstring 
)

Purpose

Create timing summary file

◆ AOloopControl_perfTest_SelectWFSframes_from_PSFframes()

errno_t AOloopControl_perfTest_SelectWFSframes_from_PSFframes ( char *  IDnameWFS,
char *  IDnamePSF,
float  frac,
long  x0,
long  x1,
long  y0,
long  y1,
int  EvalMode,
float  alpha 
)

PSF evaluation window is (x0,y0) to (x1,y1)

Optional input: PSFmask, to be multiplied by PSF

EvalMode = 0 : Maximize Energy concentration EvalMode = 1 : Maximize flux EvalMode = 2 : Minimize flux

output:

imwfsbest imwfsall

impsfbest impsfall

◆ AOloopControl_perfTest_SelectWFSframes_from_PSFframes_cli()

errno_t AOloopControl_perfTest_SelectWFSframes_from_PSFframes_cli ( )

◆ AOloopControl_perfTest_StatAnalysis_2streams()

errno_t AOloopControl_perfTest_StatAnalysis_2streams ( char *  IDname_stream0,
char *  IDname_stream1,
char *  IDname_simM0,
char *  IDname_simM1,
long  dtmin,
unsigned long  NBselected 
)

Purpose

Perform statistical analysis of two streams from similarity matrices

Details

Selects the NBselected most similar pairs in stream0 and stream1 separated by at least dtmin frames

Computes the differences between the corresponding pairs in the other stream

Output

sim0pairs.txt : best NBselected stream0 pairs
sim1pairs.txt : best NBselected stream1 pairs
sim2Ddistrib : 2D similarity distribution image
sim0diff0 : best sim pairs 0, differences stream 0 images
sim0diff1 : best sim pairs 0, differences stream 1 images
sim1diff0 : best sim pairs 1, differences stream 0 images
sim1diff1 : best sim pairs 1, differences stream 1 images

◆ AOloopControl_perfTest_StatAnalysis_2streams_cli()

errno_t AOloopControl_perfTest_StatAnalysis_2streams_cli ( )

◆ AOloopControl_perfTest_statusStats_cli()

errno_t AOloopControl_perfTest_statusStats_cli ( )

CLI function for AOloopControl_statusStats.

◆ AOloopControl_perfTest_TestDMmodeResp_cli()

errno_t AOloopControl_perfTest_TestDMmodeResp_cli ( )

CLI function for AOloopControl_TestDMmodeResp.

◆ AOloopControl_perfTest_TestDMmodes_Recovery_cli()

errno_t AOloopControl_perfTest_TestDMmodes_Recovery_cli ( )

CLI function for AOloopControl_TestDMmodes_Recovery.

◆ quicksort_StreamDataFile()

void quicksort_StreamDataFile ( StreamDataFile datfile,
long  left,
long  right 
)

◆ remove_ext()

char* remove_ext ( char *  mystr,
char  dot,
char  sep 
)

Variable Documentation

◆ AOconf

CLI function for AOloopControl_setframesAve.

◆ aoloopcontrol_var

AOloopControl_var aoloopcontrol_var

◆ LOOPNUMBER

long LOOPNUMBER

◆ tnow

struct timespec tnow
static