root = '/home/bcarry/work/mining/vista/' dirIn = root+'input/' dirFilt=root+'filters/' dirCol=root+'colors/' readcol, root+'vhs.list', list, format='(A)', /Silent nbSSO = n_elements(list) print, nbSSO thresMin = 30. fColor= [ 'Red', 'Blue', 'Green', 'Black' ] fSymb = ['OpenCircle', 'FilledSquare', 'FilledCircle', 'OpenSquare'] plotMag = 01 plotCoord = 0 filters=['Y', 'J', 'H', 'Ks'] nbFilt = n_elements(filters) nbComb = factorial(nbFilt)/(2*factorial(nbFilt-2)) empty={ok:0, name:'', val:0., unc:0., dt:0., n1:0, n2:0 } cols=replicate(empty, nbSSO, nbComb) ssoInfo = replicate({num:0L, name:''}, nbSSO) void = -9.9999949E8 for kSSO=0, nbSSO-1 do begin ;---- read magnitude readcol, dirIn+list[kSSO]+'.csv', format='(A,F,F,F,F,F,F,F,F,F,F)', $ date, ra, dec, y, yu, j, ju, h, hu, k, ku, /Silent, delimiter=',' magArr = [ [y], [j], [h], [k] ] ;- time,filter uncArr = [ [yu], [ju], [hu], [ku] ] ;- time,filter ;--- get target ID s = strSplit(list[kSSO],'_',/Extract) ssoId = s[0] ssodnet = voSsODNet_resolver(ssoId,/Quiet) dimS = size(ssodnet) if valid_num(ssoId) then begin ssoNum =round(float(ssoId)) if dims[dims[0]+1] eq 8 then ssoName=ssodnet.name else ssoName='' endif else begin ssoName=strTrim(ssoId,2) if isnumeric(ssoName) then ssoName=strmid(ssoName,0,4)+' '+strmid(ssoName,4,10) if dims[dims[0]+1] eq 8 then begin s=strSplit(ssodnet.others,',',/Extract) if valid_num(s[0]) then ssoNum= round(float(s[0])) endif else ssoNum=0 endelse nbObs = n_elements(date) ;-time span of observations iso = strarr(nbObs) jd = dblarr(nbObs) for kObs=0, nbObs-1 do begin year= strMid(date[kObs],0,4) mon = strMid(date[kObs],4,2) day = strMid(date[kObs],6,2) iso1 = year+'-'+mon+'-'+day+'T00:00:00' jd1 = date_conv(iso1,'JULIAN') frac = float( strMid(date[kObs],8,12) ) jd[kObs] = jd1 + frac iso[kObs]=date_conv(jd[kObs],'FITS') endfor ecartDate = (max(jd)-min(jd))*24.*60. if ecartDate le thresMin then begin print, ssoNum, ' '+ssoName, ecartDate ssoInfo[kSSO].num = ssoNum ssoInfo[kSSO].name= ssoName ; forprint, iso, y,j,h,k, textout=2 kCC = 0 for k1=0, nbFilt-1 do begin for k2=k1+1, nbFilt-1 do begin ; print, filters[k1]+'-'+filters[k2] cols[kSSO,kCC].name = filters[k1]+'-'+filters[k2] sel1 = where( magArr[*,k1] ne void, n1 ) sel2 = where( magArr[*,k2] ne void, n2 ) if n1 ne 0 and n2 ne 0 then begin cols[kSSO,kCC].ok = 1 mag1 = meanWithUnc( magArr[sel1,k1], uncArr[sel1,k1] ) jd1 = mean( jd[sel1] ) mag2 = meanWithUnc( magArr[sel2,k2], uncArr[sel2,k2] ) jd2 = mean( jd[sel2] ) cols[kSSO,kCC].val = mag1[0]-mag2[0] cols[kSSO,kCC].unc = sqrt( mag1[1]^2 + mag2[1]^2 ) cols[kSSO,kCC].dt = (jd1-jd2) cols[kSSO,kCC].n1 = n1 cols[kSSO,kCC].n2 = n2 endif kCC++ endfor endfor ok = where( cols[kSSO,*].ok eq 1 ) ; forprint, cols[kSSO,*].name, cols[kSSO,*].val, cols[kSSO,*].unc, cols[kSSO,*].dt*24.*60, $ ; textout=2, format='(A-5,2x,F6.3,2x,F6.3,2x,F5.1)', subset=ok ; ; stop endif endfor cols.dt *= 24.*60 header = 'Number, Name' for kC=0, nbComb-1 do begin s = strSplit(cols[0,kC].name,'-',/Extract) header+= ', '+cols[0,kC].name+', '+$ 'd('+cols[0,kC].name+'), '+$ '('+cols[0,kC].name+')_Dt, '+$ 'N_'+s[0]+', '+$ 'N_'+s[1] endfor forprint, ssoInfo.num, ssoInfo.name, $ cols[*,0].val, cols[*,0].unc, cols[*,0].dt, cols[*,0].n1, cols[*,0].n2, $ cols[*,1].val, cols[*,1].unc, cols[*,1].dt, cols[*,1].n1, cols[*,1].n2, $ cols[*,2].val, cols[*,2].unc, cols[*,2].dt, cols[*,2].n1, cols[*,2].n2, $ cols[*,3].val, cols[*,3].unc, cols[*,3].dt, cols[*,3].n1, cols[*,3].n2, $ cols[*,4].val, cols[*,4].unc, cols[*,4].dt, cols[*,4].n1, cols[*,4].n2, $ cols[*,5].val, cols[*,5].unc, cols[*,5].dt, cols[*,5].n1, cols[*,5].n2, $ format='(I6,",",A-22,6(",",F6.3,",",F6.3,",",F7.2,",",I3,",",I3))', /Silent, $ textout=dirCol+'vhs-col.csv', $ comment=header ; ; ; ; ; ; for kC=0, nbComb-1 do begin ; ; sel = where( cols[*,kC].ok eq 1, nbSel ) ; ; print, cols[0,kC].name, nbSel, format='(A-5,2x,I4)' ; window, 0 ; cgHistoPlot, abs(cols[sel,*].dt)*24.*60, binSize=1, xTitle='Time interval (min)' ; ; window, 2 ; cgHistoPlot, cols[sel,*].val, xTitle=cols[0,kC].name ; ; ; endfor ; ; ; ; ; x= 5 ; y= 3 ; ; sel = where( cols[*,x].ok eq 1 and cols[*,y].ok eq 1, nbSel ) ; cgPlot, cols[sel,x].val, cols[sel,y].val, psym='Filled circle', $ ; xTitle=cols[0,x].name, $ ; yTitle=cols[0,y].name end