Vous êtes ici : Accueil / TECHNICAL PAGES / Archives / Instrument C2 (2002) / Documentation (Archives) / Test C2 / Tests, mesures et calcul d'indicateurs sur C2

Tests, mesures et calcul d'indicateurs sur C2

Mesure du bruit

Préparation du fichier de KW

dfits '../C2/obscam_2002*/raw/\*fits\*' > KW2002.txt

dfits '../C2/obscam_2003*/raw/\*fits\*' > KW2003.txt

dfits '../C2/obscam_2004*/raw/\*fits\*' > KW2004.txt

# test des fichiersw .txt

# list de tous les existants KWs

cat KW2004.txt | gawk '{i=1; sep=""; kw=""; while ($i != "=" && i<=NF) {kw=kw sep $i; sep="."; i++}; if (i<NF) {print NR " " kw}}' | sort -k2 -u

# list de tous les changement de structure des headers

gawk '{if ($1=="====>") {nkw=0;f=$2} else {if ($1=="END") { if (nkw1!=nkw) {print nkw1 " " f1; nkw " " f; fa=fa sep f; sep=","}; nkw1=nkw; f1=f; nkw=0; f=""} else {nkw=nkw+1}}} END {print fa}' KW2004.txt

# echantillonage des KW..txt

gawk -v MOD=10 'BEGIN {if (NPR==0) {NPR=9999999}}{if (int(nkw/MOD)*MOD==nkw&&NPR>nkw/MOD) {print $0}; if ($1=="END") {nkw=nkw+1}}' KW2004.txt > 4.t

 

cat KW200?.txt | fitshow > KW25.r

cat < KW25.r | addcol c1 c2 | compute 'c1=toupper(File);c2=toupper(OBJECT);if (length(OBJECT)==0) {c2="UNDEF"}' | row '(c1~"BIAS"||c1~"DARK"||c1~"FLAT"||c1~"FF"||c1~"DOME"||c2~"BIAS"||c2~"DARK"||c2~"FLAT"||c2~"FF"||c2~"DOME"||length(File)==0||(NAXIS1!=2147&&NAXIS1!=2087&&NAXIS1!=2085&&length(NAXIS1)!=0))==0' | rmcol c1 c2 | rmcol -r DUMMY > KW25ok.r

 

# fichier source pour le traitement

wc -l < KW24ok.r | gawk '{for (i==100;i<$1+100;i=i+100) {print "C2over.py `cat KW24ok.r | column File | headoff | head -" i "| tail -100 | files >> Over20024.txt"}}' > C2over20024.src

# puis editer pour la derniere tranche et "source C2over20024.src"

 

# Preparation du C2over modifie 20051202

txt2r < Over2005all2.txt | sorttable File | jointable -j File - KW.r | addcol objet fi date un no nnuit dtel dazi dele drot | compute 'nsl=split(File,fs,"/"); nd=split(fs[3],ss,"_"); date=ss[2]; nss=split(fs[nsl],ss,"_"); un=ss[1]; fi=substr(ss[3],1,2); npp=split(ss[nss],sss,"."); objet=sss[1]' | sorttable -nr un | compute 'if (date1!=date||objet1!=objet) {if (date1==date) {no=1}} else {no=0};dazi=int(AZI_DP-azi1);dele=int(ELE_DP-ele1);drot=int(ROT_DP-rot1);azi1=AZI_DP;ele1=ELE_DP;rot1=ROT_DP;objet1=objet;date1=date;dtel=max(abs(dazi),abs(dele),abs(drot));if (length(no)==0) {no=0}' | sorttable -n un | compute 'if (date!=date1) {date1=date;ncur=ncur+1}; nnuit=ncur' | sorttable date | jointable -a1 -j date - C2events.r | compute 'if (length(event)==0) {event=-1}' |rename event ev | sorttable -n un > 2005a.r

 

# 2002-4

txt2r < Over20024.txt | sorttable File | jointable -j File - KW24ok.r | addcol objet fi date un no nnuit dtel dazi dele drot | compute 'nsl=split(File,fs,"/"); nd=split(fs[3],ss,"_"); date=ss[2]; nss=split(fs[nsl],ss,"_"); un=ss[1]; if (match(un,"[a-z][a-z].")) {un=0}; fi=substr(ss[3],1,2); npp=split(ss[nss],sss,"."); objet=sss[1]' | sorttable -nr un | compute 'if (date1!=date||objet1!=objet) {if (date1==date) {no=1}} else {no=0}; dazi=int(AZI_DP-azi1); dele=int(ELE_DP-ele1); drot=int(ROT_DP-rot1); azi1=AZI_DP; ele1=ELE_DP; rot1=ROT_DP; objet1=objet; date1=date; dtel=max(abs(dazi),abs(dele),abs(drot)); if (length(no)==0) {no=0}' | sorttable -n un | compute 'if (date!=date1) {date1=date;ncur=ncur+1}; nnuit=ncur' | sorttable date | jointable -a12 -j date - C2events.r | compute 'if (length(date)==0) {cdate=d; date=d; cev=event; crem=rem; copye=1} else {if (cdate!=date&&copye>0) {cdate=date;copye=0}}; if (cdate==date) {event=cev;rem=crem}' | rmcol d | row 'length(File)>0' | compute 'if (length(event)==0) {event=-1}' |rename event ev | sorttable -n un > 20024.r

# KWs 2002-2005

union KW24.r KW.r | addcol c1 c2 | compute 'c1=toupper(File);c2=toupper(OBJECT); if (length(OBJECT)==0) {c2="UNDEF"}' | row '(c1~"BIAS"||c1~"DARK"||c1~"FLAT"||c1~"FF"||c1~"DOME"||c2~"BIAS"||c2~"DARK"||c2~"FLAT"||c2~"FF"||c2~"DOME"||length(File)==0||(NAXIS1!=2147&&NAXIS1!=2087&&NAXIS1!=2085&&length(NAXIS1)!=0))==0' | rmcol c1 c2 > KW25ok.r

#Overscann 2002-5

cat Over20024.txt Over2005all2.txt | txt2r | sorttable File | jointable -j File - KW25ok.r | addcol objet fi date un no nnuit dtel dazi dele drot | compute 'nsl=split(File,fs,"/"); nd=split(fs[3],ss,"_"); date=ss[2]; nss=split(fs[nsl],ss,"_"); un=ss[1]; if (match(un,"[a-z][a-z].")) {un=0}; fi=substr(ss[3],1,2); npp=split(ss[nss],sss,"."); objet=sss[1]' | sorttable -nr un | compute 'if (date1!=date||objet1!=objet) {if (date1==date) {no=1}} else {no=0}; dazi=int(AZI_DP-azi1); dele=int(ELE_DP-ele1); drot=int(ROT_DP-rot1); azi1=AZI_DP; ele1=ELE_DP; rot1=ROT_DP; objet1=objet; date1=date; dtel=max(abs(dazi),abs(dele),abs(drot)); if (length(no)==0) {no=0}' | sorttable -n un | compute 'if (date!=date1) {date1=date;ncur=ncur+1}; nnuit=ncur' | sorttable date | jointable -a12 -j date - C2events.r | compute 'if (length(date)==0) {cdate=d; date=d; cev=ev; cdes=des; copye=1} else {if (copye>0) {cdate=date;copye=0}}; if (cdate==date&&length(ev)==0) {ev=cev;des=cdes}' | rmcol d | row 'length(File)>0' | compute 'if (length(ev)==0) {ev=-1}' > 20025.r

 

# cat tt.r | jointable -a12 -j date - C2events.r | compute 'if (length(date)==0) {cdate=d; date=d; cev=ev; cdes=des; copye=1} else {if (copye>0) {cdate=date;copye=0}}; if (cdate==date&&length(ev)==0) {ev=cev;des=cdes}' | rmcol d | row 'length(File)>0' | compute 'if (length(event)==0) {event=-1}' | sorttable -n un | column un date ev des | tro | more

 

# extraction des events avec 'un'

cat 20025.r | column un date ev des | row 'ev!=-1' | uniq -f 1 | tro > C2eventN.txt

 

 

 

 

Le bruit est mesuré sur l'overscan par C2over.py

rmsH/V

rms moyen des lignes (H) et de colonnes du overcan

sigmaH/V

rms des moyennnes des lignes (H) et des moyennes des colonnes (V)

powerH/ipow

L'amplitude (powerH) et la fréquence (ipow) [cycles/frame] du maximum de la TF des moyennnes des lignes

Indicateur sigmaH

C'est un bon indicateur du "saut" vertical - révelateur des bandes sur l'image. Il est relativement peut senbsible au bruit "régulier" qui est revelé par augmentation du "rmsH" et par l'analyse Fourier.

 

#Histograme de mesures non poluees par le pointage

row 'no==0' < 2005.r | column sigmaH > qq1 ; biggH.py -Z 0,3 -O x11,gif --title 'Exposure not followed by pointing' --xlabel sigmaV 'qq1[sigmaH]'

 

/net/jason/export/diskRAID0/C2db/biggH.qq1.gif

# mesures suivie du pointage

row 'no==1' < 2005.r | column sigmaH > qq2 ; biggH.py -Z 0,3 -O x11,gif --title 'Exposure followed by pointing' --xlabel sigmaH 'qq2[sigmaH]'

 

 

/net/jason/export/diskRAID0/C2db/biggH.qq1.gif

# list des nuits en ordre decroisant de bruit:

sorttable date sigmaH < 2005.r | row 'sigmaH<20' | average date sigmaH | sorttable -nr AsigmaH | tro | more

 

# graphique d'une nuit typique montre la corrélation entre le mouvement du télescope (points rouges) et la présence de bruit

# set DDD=20050118 ; row "date==$DDD" < 20025.r | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}' | column no date averageH un TU_DP rmsH sigmaH > qq ; biggXYZ.py -W 1200 -X 'qq[TU_DP]' -Y '[sigmaH]min=0.5,max=10' -Z '[no]point=color' --title $DDD -W 600 -H 250 -O x11,gif

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

À l'échell d'une nuit on constate que les bruit apparaît quasi-exclusivement lors du mouvement du télescope qui dépasse quelques dizaines de degré sur n'importe quel axe. Tous les axes présentent les charactéristiques similaires

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

Indicateur rmsH

 

C'est le rms moyen des lignes de l'overscan. On obtient l'histogramme similair prenant le rmsH sur la ligne (row) ou sur la colonne

# column File rmsH rmsV < 2005.r > qq ; biggH.py --xlabel 'average RMS of overscan row' -H 200 -O x11,gif 'qq[rmsH]max=8'

/net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

ou rmsV sur la colonne de l'overscan

#column File rmsH rmsV < 2005.r > qq ; biggH.py --xlabel 'average RMS of overscan column' -H 200 -O x11,gif 'qq[rmsV]max=8'

/net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

En examinant le bruit en fonction du numéro de l'observation on a de nouveau la corrélation entre le déplacement du télescope et le bruit elevé réparti au hazard:

# column File un no date rmsH rmsV < 2005a.r > qq ; biggXYZ.py -X 'qq[un]label=frame_number' -Y '[rmsH]max=10' -W 1200 -H 400 -Z '[no]point=color' --title 'Bruit anormal 2005' -W 600 -H 200 -O x11,gif

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

une période du bruit anormalement élévé du 20050506-7-8 les poses (042846-043246) est imputable a une interférence électrique a la fréquence particulière:

 

Avec plus de details la fin 2005:

#column File un no date rmsH rmsV < 2005a.r | row 'un>46000' > qq ; biggXYZ.py -X 'qq[un]label=frame_number' -Y '[rmsH]max=10' -W 1200 -H 400 -Z '[no]point=color' --title 'Bruit anormal 2005' -W 600 -H 200 -O x11,gif

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

 

 

Si on regarde par numero de nuit, on constate qu'une nuit entiere est toujours affectée.

#column File un no nnuit date rmsH rmsV < 2005a.r > qq ; biggXYZ.py -X 'qq[nnuit]label=night_number' -Y '[rmsH]max=10' -W 1200 -H 400 -Z '[no]point=color' --title 'Bruit anormal 2005' -W 600 -H 200 -O x11,gif --xdit -

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

Pour toutes les nuits

#column File un no date rmsH rmsV < 20025.r > qq ; biggXYZ.py -X 'qq[un]label=frame_number' -Y '[rmsH]max=10' -W 1200 -H 400 -Z '[no]point=color' --title 'Bruit anormal 2002-5' -W 600 -H 200 -O x11,gif

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

 

 

 

#C2over1.py -g H -W 600 -O x11,gif ../C2/obscam_20050506/raw/042846_0002_VG_0036_ngc2323.fits.gz

 

/net/jason/export/diskRAID0/C2db/C2overHaverage042846.gif

 

 

/net/jason/export/diskRAID0/C2db/C2overHaverageSpectrum.042846.gif

 

les nuits suivants le bruit a une valeur normale, mais un pic moins intense est toujours présent aux environs 30 c/f:

#C2over1.py -g H -W 600 -O x11,gif ../C2/obscam_20050509/raw/043384_0057_VG_0025_ngc6067.fits.gz

 

/net/jason/export/diskRAID0/C2db/C2overHaverageSpectrum.043384.gif

 

le meme objet pris dans les memes conditions avant la periode incriminee donne:

#C2over1.py -g H -W 600 -O x11,gif ../C2/obscam_20050406/raw/042610_0025_VG_0100_ngc6067_le.fits.gz

 

/net/jason/export/diskRAID0/C2db/C2overHaverageSpectrum.042610.gif

La fin de la mauvaise periode coincide avec la fin d'un pompage Coralie. Ce bruit apparait de facon significative vers 20050312, il est permanent lors d'une mission du 20050506 - 08 inclusif (numeros 42846-43246) pendant 3 nuits puis disparait.

 

Niveau du bias - averageH

Ce niveau varie d'une nuit a l'autre:

#column File date un no nnuit rmsH rmsV sigmaH sigmaV averageH < 2005a.r > qq ; biggXYZ.py -Y 'qq[averageH]max=1100' -X nnuit -Z '[no]point=color' -W 600 -H 200 -O x11,gif --title 'Overscan BIAS level' --xdit -

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

ainsi qu'au cours d'une nuit

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

On peut noter que le brusque changement du niveau a peut-etre lieu plus souvent lors du deplacemnt du télescope. le cas extreme est (hélas un nuit sans log):

 

# set DDD=20050117 ; row "date==$DDD" < 2005.r | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}' | column File no date averageH un TU_DP rmsH sigmaH > qq ; biggXYZ.py -W 1200 -X 'qq[TU_DP]' -Y '[averageH]' -Z '[no]point=color' --title $DDD -W 600 -H 250 -O x11,gif

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

ou encore la nuit 20050312. Là c'est une nuit avec de nombreux changement d'instrument qui impliquent un reboot de la caméra. Le changemenimportant du niveau et la disparution du bruit anormal sont liés au reboot du CCD.

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

On peut détecter les nuits avec le saut important en averageH par:

#addcol dt dH < 2005a.r | row 'sigmaH<2' | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}; if (date!=cdate) {dt=0;dH=0} else {dt=TU_DP-ct; dH=abs(averageH-cH)}; cdate=date; ct=TU_DP; cH=averageH' | column File date rmsH sigmaH averageH dt dH | row 'dt<0.2' | sorttable -nr dH | head | rmcol File |tro

 

date rmsH sigmaH averageH dt dH

-------- ---- ------ -------- -------- -----

20050603 4.5 1.64 1002.95 0.156614 87.04

20050206 4.2 0.99 1074.30 0.128343 58.05

20050603 4.2 1.54 914.75 0.168076 31.41

20050617 4.5 1.95 988.73 0.104677 29.65

20050601 4.2 0.80 989.89 0.12908 23.16

20050206 4.9 1.95 737.53 0.188218 22.44

20050206 4.0 1.00 1009.61 0.144563 20.26

20050504 7.5 1.32 1035.87 0.173168 19.48

 

#set DDD=20050603 ; row "date==$DDD" < 2005a.r | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}' | column File no date averageH un TU_DP rmsH sigmaH > qq ; biggXYZ.py -W 1200 -X 'qq[TU_DP]' -Y '[averageH]' -Z '[no]point=color' --title $DDD -W 600 -H 250 -O x11,gif

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

Nuit C2 seul; les sauts en averageH correspondent au reboot du CCD

 

 

Variation du BIAS (averageH avec la température)

Nuit 20050206 montre une variation extreme du averageH:

 

#set DDD=20050206 ; row "date==$DDD" < 2005a.r | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}' | column File no date averageH un TU_DP rmsH sigmaH > qq ; biggXYZ.py -W 1200 -X 'qq[TU_DP]' -Y '[averageH]' -Z '[no]point=color' --title $DDD -W 600 -H 250 -O x11,gif

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

Du au manque d'azote la température du CCD a variée ce qui permet évaluer les effets de la température sur le niveau du BIAS.

 

#set DDD=20050206 ; row "date==$DDD" < 20025.r | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}' > qq ; biggXYZ.py -Y 'qq[averageH]' -X '[LAKE_CCD]' -M 'arange(-100,-70.) 730-(_x+70)*13' --title 'model nuit 20050206; avH=730-(temp+70)*13' -O x11,gif

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

On constate que le BIAS suit avec un delai négligeable la température et varie de -13 ADU/degC.

 

 

Seulement 2 nuits ont des variations de température max-min significatives suite à un problème d'azote.

 

#addcol dt dT dH < 2005a.r | row 'sigmaH<2' | compute 'if (TU_DP>12) {TU_DP=TU_DP-24}; if (date!=cdate) {dt=0; cT1=LAKE_CCD; cT2=cT1; dH=0} else {dt=TU_DP-ct; dH=abs(averageH-cH); cT1=max(LAKE_CCD,cT1); cT2=min(LAKE_CCD,cT2)}; cdate=date; ct=TU_DP; cH=averageH; dT=sprintf("%5.2f",cT1-cT2)' | column File date rmsH sigmaH averageH dt dT dH | row 'dT>0.1' | sorttable -nr date dT | column dT date | uniq -f 1 | tro

 

dT date

----- --------

0.15 20050529

0.35 20050305

0.46 20050303

0.46 20050302

30.26 20050206

35.22 20050110

 

En conclusion sur l'indicateur 'averageH'; celui-ci est peu significatif pour la qualite des donnees. Il n'est pas explicable par la variation de la temperature du CCD. La variation typique observee au cours d'une nuit est de l'ordre +-5 ADU et elle correspond à la variation +-0.4 deg alors que le sigma de LAKE_CCD (temp. ccd) est <0.001 deg

 

#column File un no date averageH < 20025.r | row 'no==0' | sorttable date | average date averageH > qq ; biggH.py -O x11,gif 'qq[SigaverageH]'

 

/net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

 

Differences entre les periodes

Histogramme du sigmaH (label x faux sur les graphiques)

 

#row 'no==0&&date>20050000' < 20025.r | column sigmaH > qq ; biggH.py -Z 0,3 -O x11,gif --title 'No pointing - periode 3' --xlabel sigmaH -W 200 -H 200 'qq[sigmaH]'

/net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

Période 2 - de la réparation 20030708 au début 2005 (début des pompages mensuelles)

Période 3 - 2005

 

 

 

Histogramme de la frequence du pic du spectre de puissance "vertical" sur l'overscan

# row 'no<=1&&date>20030708&&date>20050000' < 20025.r | column ipow > qq ; biggH.py -Z 0,1000 -O x11,gif --title 'Periode 3' --xlabel 'Noise peak freq [c/frame]' -W 200 -H 200 'qq[ipow]'

/net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

# row 'date<20030708&&date<20050000' < 20025.r | column ipow powerH > qq ; biggH.py -O x11,gif --title 'Periode 1' --xlabel 'Noise peak amplitude [ADU]' -W 200 -H 200 -Z 0,5 'qq[powerH]'

 

/net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

# row 'date>20030708&&date<20050000&&ipow>5' < 20025.r | column ipow powerH > qq ; biggXYZ.py -X 'qq[powerH]max=2' -Y '[ipow]max=600' --title 'Periode 1' -O x11,gif -W 200 -H 200

 

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif /net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif /net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

le spectre detaille des bruits base fréquence lors de la derniere periode:

# row 'date>20030708&&date>20050000' < 20025.r | column ipow powerH > qq ; biggXYZ.py -X 'qq[powerH]max=0.7' -Y '[ipow]' --title 'Periode 3' -O x11,gif -W 200 -H 200

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif /net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif /net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

Le bruit LF apparait progressivement, (le bruit HF ne disparait pas, mais le pic LF est plus fort -> detecte en priorite)

Le bruit LF entre 10-60 c/frame est totalment absent avant la reparation, quasi absent avant le pompage regulier et

 

Spectre du bruit "horozontal", on fait la moyenne de la TF de la ligne d'overscan, montre la presence du bruit a ~27 kHz, totalement correle avec le cas du rmsH eleve pendant toute une nuit. les nuits affectees sont:

row 'rmsH>7&&rmsH<9' < 20025.r | column date | average date date | row 'Ndate>10' | column date

 

a l'exception de la nuit 20040504, 20040301, 20030227, qui sont des nuits à bruit fort mais du a LF toutes les nuits presentes le meme pic a 27.5 kHz

 

C2over.py -W 900 -H 300 -Z 0,4 -g -P `row 'rmsH>7&&rmsH<9' < 20025.r | column File date | uniq -f 1 | row '20030708==date||20030709==date||20030710==date||20030711==date||20030712==date||20030713==date||20030714==date||20030715==date||20031202==date||20031203==date||20040521==date||20040524==date||20040525==date||20040526==date||20040527==date||20040528==date||20040714==date||20040715==date||20040716==date||20040717==date||20040718==date||20040808==date||20041017==date||20041029==date||20041030==date||20041031==date||20041101==date||20041102==date||20050506==date||20050507==date||20050508==date||20050803==date||20050809==date||20050825==date||20050910==date||20050920==date||20051001==date' | headoff |files`

 

/net/jason/export/diskRAID0/C2db/C2overHaverageSpectrumAll.047589.gif

Le bruit est deja present lors de l'installation (nuits 20020920, |20020923, |20030210)

# selectioner les nuits

set ROW=`row 'rmsH>7&&rmsH<9' < 20025.r | column date | average date date | row 'Ndate>10' | column date | headoff | gawk '{cond=cond sep $1 "==date"; sep="||"} END {print cond}'`

 

 

 

Qualification des mesures

Elimination simple

 

Fichier 20025.r contient 24716 mesures. Une leimination basee sur rmsH<5 laisse 14733 mesures valides

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

 

 

 

Élimination des nuits

 

Nuit avec une forte variation du rmsH

# column File un no date rmsH rmsV < 20025.r | sorttable date | average date rmsH | sorttable -n SigrmsH > qq ; biggH.py -Z 0,1.5 -O x11,gif --title 'rmsH night scatter' --xlabel SigrmsH -W 200 -H 200 'qq[SigrmsH]]'; biggH.py -O x11,gif --title 'rmsH night scatter' --xlabel ArmsH -W 200 -H 200 'qq[ArmsH]]'

 

/net/jason/export/diskRAID0/C2db/biggH.qq.gif /net/jason/export/diskRAID0/C2db/biggH.qq.gif

 

Examen des bonne (ok==1) ou mauvaises (ok==0) nuits:

# toutes les nuits a eliminer a cause du bruit eleve (HF)

 

# les (66) nuits a eleminer imperativement et en entier sont:

column File un no date rmsH rmsV < 20025.r | row 'no==0' | sorttable date | average -c 1 date rmsH | addcol ok | compute 'if (SigrmsH>0.35||ArmsH>6.5) {ok=0} else {ok=1}' | row 'ok==0'

 

# dans les (215) nuits qui restent on peut trier selon la qualite et me retenir que les nuits avec SigrmsH==0

column File un no date rmsH rmsV < 20025.r | row 'no==0' | sorttable date | average -c 1 date rmsH | addcol ok | compute 'if (SigrmsH>0.35||ArmsH>6.5) {ok=0} else {ok=1}' | row 'ok==1' | compute 'if (SigrmsH<0.0001) {SigrmsH=0}' | sorttable -n SigrmsH

 

# On fabrique les qualifictaurs des nuits

## 'ok1' - base sur 'rmsH' avec un clipping a 1-sigma

column File un no date rmsH rmsV < 20025.r | row 'no==0' | sorttable date | average -c 1 date rmsH | addcol ok | compute 'if (SigrmsH>0.35||ArmsH>6.5) {ok=0} else {ok=1}' | compute 'if (SigrmsH<0.0001) {SigrmsH=0}' | sorttable -n date | column date ok NTrmsH NrmsH ArmsH SigrmsH | rename NTrmsH nt1 NrmsH n1 ArmsH av1 SigrmsH sig1 | rename ok ok1 > ok1.r

## et on calcule aussi le sigma avec clipping a 3 sigma

column File un no date rmsH rmsV < 20025.r | row 'no==0' | sorttable date | average -c 3 date rmsH | column date ArmsH SigrmsH | rename ArmsH av3 SigrmsH sig3 | jointable -j date ok1.r - > ok13.r

 

Elimination des images individuelles et la selection finale

 

# et on l'utilise pour fabriquer le flag oki permettant de selectionner les images individuelles a 3-sigma de la moyenne des bonnes mesures de nuit; ok1=1 pour les bonnes nuits et oki=1 pour les bonnes mesures (bonne nuit a 3-sigma, mauvaise nuits a 1-sigma)

 

addcol oki < 20025.r | jointable -n -j date - ok13.r | compute 'if (ok==0) {nsig=1} else {nsig=3}; oki=(rmsH<av1+max(0.1,nsig*sig1)&&av1<6.5)' | addcol tu | compute 'tu=TU_DP; if (tu> 12 ) {tu=tu-24}' > 20025oki.r

 

# voir les images idividuelles eliminees au cours de mauvaise nuits- les bonnes: noir ou vert

column File un no date rmsH rmsV ok1 oki av1 sig3 < 20025oki.r | row 'ok1==0&&av1<6.5' | average date rmsH | compute 'date="set DDD=" date ";row \\\042date==$DDD\\\042 < 20025oki.r | compute \047oki=2*no+(1-oki)\047 | column File no date averageH un tu rmsH sigmaH oki sig3 av1 > qq ; biggXYZ.py -X \047qq[tu]\047 --title $DDD -W 600 -H 250 -O x11 -Y \047[rmsH]max=10,min=3\047 -Z \047[oki]point=color\047"' | column date | headoff

 

# images selectionnees; il y a 13359 images oki=1 et 11359 oki=0

row 'oki=1' < 20025oki.r | column File

 

# une selection "brutale" donne 14733 images utilisables

row 'rmsH<5' < 20025oki.r | wc -l

 

 

Mise à jour des fichiers rdb 20025oki.r

 

On va maintenir le fichier a jour dans 2oki.r (initalement la copie du 20025oki.r)

 

# putz preliminaire

rm tmpKW*

#extraction des KW's

set LDATE=`column date < 2oki.r | sorttable -n | tail -1`

ls -1d ../C2/obscam_200* | gawk -v ldate=$LDATE '{split($1,dd,"_"); date=substr(dd[2],1,length(dd[2])-1); if (date>ldate) {print "dfits \047" $1 "raw/*.fits*\047 > tmpKW" date}}' > tmpKW.src

 

# mise en fichier /rdb compatible avec les anciennes donnees

tailtable -1 KW25ok.r | tabletolist | gawk '{if (length($1)>0) {if (NR==2) {print "====> " $2 " (main) <===="} else {if (length($2)==0) {$2="qq"}; printf "%-12s = %-40s\n",$1,$2" / comment"}}} END {print "END"}' > tmpKW

 

cat tmpKW tmpKW200* | fitshow | gawk '{if (NR!=3) {print $0}}' > tmpKW.r

 

cat < tmpKW.r | addcol c1 c2 | compute 'c1=toupper(File);c2=toupper(OBJECT);if (length(OBJECT)==0) {c2="UNDEF"}' | row '(c1~"BIAS"||c1~"DARK"||c1~"FLAT"||c1~"FF"||c1~"DOME"||c2~"BIAS"||c2~"DARK"||c2~"FLAT"||c2~"FF"||c2~"DOME"||length(File)==0||(NAXIS1!=2147&&NAXIS1!=2087&&NAXIS1!=2085&&length(NAXIS1)!=0))==0' | rmcol c1 c2 | rmcol -r DUMMY > KW.r

 

# fichier source pour C2over.py

rm C2over.txt; wc -l < KW.r | gawk '{$1=$1-2; ni=int($1/100); if (ni*100!=$1) {li=$1-ni*100; ni=ni+1} else {li=100}; for (i=1;i<=ni;i++) {if (i==ni) {ntail=li} else {ntail=100}; print "C2over.py `cat KW.r | column File | headoff | head -" i*100 "| tail -" ntail " | files` >> C2over.txt"}}' > C2over.src

 

source C2over C2over.src

 

txt2r < C2over.txt | sorttable File | jointable -j File - KW.r | addcol objet fi date un no nnuit dtel dazi dele drot | compute 'nsl=split(File,fs,"/"); nd=split(fs[3],ss,"_"); date=ss[2]; nss=split(fs[nsl],ss,"_"); un=ss[1]; if (match(un,"[a-z][a-z].")) {un=0}; fi=substr(ss[3],1,2); npp=split(ss[nss],sss,"."); objet=sss[1]' | sorttable -nr un | compute 'if (date1!=date||objet1!=objet) {if (date1==date) {no=1}} else {no=0}; dazi=int(AZI_DP-azi1); dele=int(ELE_DP-ele1); drot=int(ROT_DP-rot1); azi1=AZI_DP; ele1=ELE_DP; rot1=ROT_DP; objet1=objet; date1=date; dtel=max(abs(dazi),abs(dele),abs(drot)); if (length(no)==0) {no=0}' | sorttable -n un | compute 'if (date!=date1) {date1=date;ncur=ncur+1}; nnuit=ncur' | sorttable date | jointable -a12 -j date - C2events.r | compute 'if (length(date)==0) {cdate=d; date=d; cev=event; crem=rem; copye=1} else {if (cdate!=date&&copye>0) {cdate=date;copye=0}}; if (cdate==date) {event=cev;rem=crem}' | rmcol d | row 'length(File)>0' | compute 'if (length(event)==0) {event=-1}' |rename event ev | sorttable -n un > 2000.r

 

 

column File un no date rmsH rmsV < 2000.r | row 'no==0' | sorttable date | average -c 1 date rmsH | addcol ok | compute 'if (SigrmsH>0.35||ArmsH>6.5) {ok=0} else {ok=1}' | compute 'if (SigrmsH<0.0001) {SigrmsH=0}' | sorttable -n date | column date ok NTrmsH NrmsH ArmsH SigrmsH | rename NTrmsH nt1 NrmsH n1 ArmsH av1 SigrmsH sig1 | rename ok ok1 > ok1.r

## et on calcule aussi le sigma avec clipping a 3 sigma

column File un no date rmsH rmsV < 2000.r | row 'no==0' | sorttable date | average -c 3 date rmsH | column date ArmsH SigrmsH | rename ArmsH av3 SigrmsH sig3 | jointable -j date ok1.r - > ok13.r

 

addcol oki < 2000.r | jointable -n -j date - ok13.r | compute 'if (ok==0) {nsig=1} else {nsig=3}; oki=(rmsH<av1+max(0.1,nsig*sig1)&&av1<6.5)' | addcol tu | compute 'tu=TU_DP; if (tu> 12 ) {tu=tu-24}' > 2000oki.r

 

cp 2000oki.r `column date < 2000oki.r | headoff | gawk '{if (NR==1) {nom=$1 "to"}} END {nom=nom $1 "oki.r"; print nom}'`

 

cat 20025oki.r 2000oki.r | union > 2oki.r

 

Fin 2005

 

Toutes les mesures a partir de 20051001 presentent le bruit anormal > 6.5

/net/jason/export/diskRAID0/C2db/biggXYZ.qq.gif

#C2over.py -O x11,gif -g -p -W 600 `row 'oki==0&&rmsH>7.5&&rmsH<10&&(date==20050920||date==20051001)' < 2oki.r | column File date | uniq -f 1 | column File | headoff |files`

 

L'analyse Fourier montre une nouvelle frequence. La derniere muavais nuit avant le changement 20050920 montre un pic à ~27kHz

/net/jason/export/diskRAID0/C2db/C2overHaverageSpectrum.047486.gif

alors que la nuit 20051001 a un nouveau pic a 11kHz. Toutes les nuits suivantes sont pareilles.

 

/net/jason/export/diskRAID0/C2db/C2overHaverageSpectrum.047589.gif

 

Surveillance de nuits

 

Notes plus détaillées pour les utilisateurs.

 

Le SW tourne sur castor (Genève), installée chez Blecha, utilisable par tous.Toutes les commandes Python ('—-.py) ainsi que les scripts rdb sont munis de l'option '-h' pour aide

 

À Genève

 

ssh castor

source ~blecha/scripts/C2init

# verifier peut etre le $DISPLAY

 

# voir le graphique du spectre de bruit de 3 premieres images d'une nuit

C2over.py -g -p -W 1200 -H 500 `...path_de_la_nuit../raw/*.fits* | head -3`

(EX.: C2over.py -g -p -W 1200 -H 500 `ls /net/jason/export/diskRAID0/C2/obscam_20051230/raw/*.fits*`)

 

# Calculer les indicateurs de bruit pour toutes les images de la nuit a l'exception du dark et bias:

(EX.: C2over.py `ls /net/jason/export/diskRAID0/C2/obscam_20051230/raw/*.fits*;*BIAS*,*DARK*' > | txt2r > over.r)

 

# sortir la liste des mauvaises images:

row 'rmsH>5' < over.r | column File rmsH | tro | more

 

# liste complete avec les nom des images abreges (impression trop large autroement)

compute 'n=split(File,nn,"/");File=nn[n]' < over.r |rmcol PR PG S RDT | tro | more

 

# graphique du bruit pour les mauvaises images

C2over.py -g -p -W 1200 -H 500 `row 'rmsH>5' < over.r | column File |headoff`