From 59a1c744049c3e02dac87a7c88a08a3e84e45916 Mon Sep 17 00:00:00 2001 From: Cees Bassa Date: Tue, 10 Apr 2018 13:22:45 +0200 Subject: [PATCH] Finding significant points --- rffind.c | 37 ++++++++++++++++++++++++++++--------- rfio.c | 14 +++++++++----- rfplot.c | 6 +++--- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/rffind.c b/rffind.c index 389e4d5..4dcb959 100644 --- a/rffind.c +++ b/rffind.c @@ -106,7 +106,7 @@ int main(int argc,char *argv[]) int i,j,k,l,j0,j1,m=2,n; struct spectrogram s; char path[128]; - int isub=0,nsub=60; + int isub=0,nsub=0; char *env; int site_id=0; float avg,std; @@ -171,21 +171,40 @@ int main(int argc,char *argv[]) return 0; } - // Read data - s=read_spectrogram(path,isub,nsub,f0,df0,1,0.0); + if (nsub==0) { + // Read data + for (i=isub;;i++) { + s=read_spectrogram(path,i,nsub,f0,df0,1,0.0); - // Exit on emtpy file - if (s.nsub==0) - return 0; + // Exit on emtpy file + if (s.nsub==0) + break; + + printf("Read spectrogram\n%d channels, %d subints\nFrequency: %g MHz\nBandwidth: %g MHz\n",s.nchan,s.nsub,s.freq*1e-6,s.samp_rate*1e-6); + + // Filter + filter(s,site_id,sigma,filename); + } + } else { + // Read data + s=read_spectrogram(path,isub,nsub,f0,df0,1,0.0); - printf("Read spectrogram\n%d channels, %d subints\nFrequency: %g MHz\nBandwidth: %g MHz\n",s.nchan,s.nsub,s.freq*1e-6,s.samp_rate*1e-6); + // Exit on emtpy file + if (s.nsub==0) + return 0; - // Filter - filter(s,site_id,sigma,filename); + printf("Read spectrogram\n%d channels, %d subints\nFrequency: %g MHz\nBandwidth: %g MHz\n",s.nchan,s.nsub,s.freq*1e-6,s.samp_rate*1e-6); + + // Filter + filter(s,site_id,sigma,filename); + } // Free free(s.z); free(s.mjd); + // free(s.zavg); + // free(s.zstd); + // free(s.length); return 0; } diff --git a/rfio.c b/rfio.c index 90bac00..cfa3574 100644 --- a/rfio.c +++ b/rfio.c @@ -33,12 +33,11 @@ struct spectrogram read_spectrogram(char *prefix,int isub,int nsub,double f0,dou // Read header status=fread(header,sizeof(char),256,file); if (strstr(header,"NBITS 8")==NULL) { - status=sscanf(header,"HEADER\nUTC_START %s\nFREQ %lf Hz\nBW %lf Hz\nLENGTH %f s\nNCHAN %d\n",s.nfd0,&s.freq,&s.samp_rate,&length,&nch); + status=sscanf(header,"HEADER\nUTC_START %s\nFREQ %lf Hz\nBW %lf Hz\nLENGTH %f s\nNCHAN %d\nNSUB %d\n",s.nfd0,&s.freq,&s.samp_rate,&length,&nch,&msub); } else { status=sscanf(header,"HEADER\nUTC_START %s\nFREQ %lf Hz\nBW %lf Hz\nLENGTH %f s\nNCHAN %d\nNSUB %d\nNBITS 8\nMEAN %f\nRMS %f",s.nfd0,&s.freq,&s.samp_rate,&length,&nch,&dummy,&zavg,&zstd); nbits=8; } - s.freq+=foff; // Close file @@ -63,9 +62,13 @@ struct spectrogram read_spectrogram(char *prefix,int isub,int nsub,double f0,dou j1=s.nchan; } + // Read whole file if not specified + if (nsub==0 && msub>0) + nsub=msub; + // Number of subints s.nsub=nsub/nbin; - + // Allocate s.z=(float *) malloc(sizeof(float)*s.nchan*s.nsub); s.zavg=(float *) malloc(sizeof(float)*s.nsub); @@ -90,7 +93,8 @@ struct spectrogram read_spectrogram(char *prefix,int isub,int nsub,double f0,dou file=fopen(filename,"r"); if (file==NULL) { printf("%s does not exist\n",filename); - break; + s.nsub=0; + break; } printf("opened %s\n",filename); @@ -102,7 +106,7 @@ struct spectrogram read_spectrogram(char *prefix,int isub,int nsub,double f0,dou if (status==0) break; if (nbits==-32) - status=sscanf(header,"HEADER\nUTC_START %s\nFREQ %lf Hz\nBW %lf Hz\nLENGTH %f s\nNCHAN %d\n",nfd,&freq,&samp_rate,&length,&nchan); + status=sscanf(header,"HEADER\nUTC_START %s\nFREQ %lf Hz\nBW %lf Hz\nLENGTH %f s\nNCHAN %d\nNSUB %d\n",nfd,&freq,&samp_rate,&length,&nchan,&msub); else if (nbits==8) status=sscanf(header,"HEADER\nUTC_START %s\nFREQ %lf Hz\nBW %lf Hz\nLENGTH %f s\nNCHAN %d\nNSUB %d\nNBITS 8\nMEAN %f\nRMS %f",nfd,&freq,&samp_rate,&length,&nchan,&dummy,&zavg,&zstd); diff --git a/rfplot.c b/rfplot.c index bfb8a6f..47dd1d2 100644 --- a/rfplot.c +++ b/rfplot.c @@ -878,7 +878,7 @@ void plot_traces(struct trace *t,int nsat,float fcen) // Plot label for rising sources if (j>0 && t[i].za[j-1]>90.0 && t[i].za[j]<=90.0) cpgtext((float) j,(float) t[i].freq[j]-fcen,text); - + // Plot line if (flag==0) { cpgmove((float) j,t[i].freq[j]-fcen); @@ -1165,7 +1165,7 @@ void filter(struct spectrogram s,int site_id) else mask[j]=0; } - /* + // Find maximum when points are adjacent for (j=0;j