def getcircle(r): tmpcirc = [] for y in range(int(-r), int(r)): tmpcirc.append([circle(y, r), y]) ptmpcirc = Data(tmpcirc) ptmpcirc.set_option_colonsep("with", "l lt -0") return ptmpcirc
def getarc(x0, y0, ang0, ang1, r, lt): tmparc = [] for ang in range(int(min(ang0, ang1)), int(max(ang0, ang1) + 1)): radang = pi / 180. * float(ang) tmparc.append([x0 + r * cos(radang), y0 + r * sin(radang)]) ptmparc = Data(tmparc) ptmparc.set_option_colonsep("with", "l ls %i" % (lt)) radang = pi / 180. * (ang0 + ang1) / 2. labelpos = [x0 + r * 2. / 3. * cos(radang), y0 + r * 2. / 3. * sin(radang)] return ptmparc, labelpos
k=s.split() name2="/data/ivar/berger/Regensburg/2002/"+str(i*10)+"/axlv2_sumspeed_0"+str(i*10)+"-0"+str((i+1)*10)+".dat" f2=open(name2) s2=f2.readline() k2=s2.split() summe+=float(k[2])/(5.*24.) summe2+=float(k2[2])/(5.*24.) hist.append([float(i*10),float(k[2])/(5.*24.),float(k2[2])/(5.*24.)]) hist2.append([float(i*10),float(k[2])/(5.*24.),float(k2[2])/(5.*24.)]) f.close() f2.close() #for i in range(len(hist)/2): # hist[i*2][1]+=hist[i*2+1][1] #for i in range(len(hist)/2): # hist[i+len(hist)/2][1]+=0. gphist=Data(hist) gphist.set_option_colonsep("using", "1:2") gphist.set_option_colonsep("title", "'2005'") gphist2=Data(hist2) gphist2.set_option_colonsep("using", "1:3") gphist2.set_option_colonsep("lt","3") gphist2.set_option_colonsep("title", "'2002'") gp=Gnuplot() gp.plot(gphist,gphist2) print "summe2005 = ",summe print "summe2002 = ",summe2
meancharge[elem].append([float(time),float(k[8])]) elemfile.close() listin.close() """ generate gnuplot data """ #erzeugt plotdaten plotdens=[] for ion in range(len(ionnames)): if (len(iondens[ion])>1): tmpplotdens=Data(iondens[ion]) else: tmpplotdens=Data([[0.,0.]]) tmpplotdens.set_option_colonsep("using", "1:2 ") tmpplotdens.set_option_colonsep("title", "'%s density*10^7'" %(ionnames[ion])) tmpplotdens.set_option_colonsep("with", "points") plotdens.append(tmpplotdens) plotmaxdens=[] for ion in range(len(ionnames)): if (len(ionmaxdens[ion])>1): tmpplotmaxdens=Data(ionmaxdens[ion]) else: tmpplotmaxdens=Data([[0.,0.]]) tmpplotmaxdens.set_option_colonsep("using", "1:2 ") tmpplotmaxdens.set_option_colonsep("title", "'%s density*10^7'" %(ionnames[ion])) tmpplotmaxdens.set_option_colonsep("with", "points") plotmaxdens.append(tmpplotmaxdens) plotvelocity=[] for ion in range(len(ionnames)):
alphanfft = [] for i in range(N): alphanfft.append(alphan[i][1]) psdnraw = fft(alphanfft) psdnges = [] for i in range(len(psdnraw) / 2 + 1): psdnges.append([ (float(i) / (float(N) * timeres)), 2. * abs(psdnraw[i].imag) / N + 2. * abs(psdnraw[i].real) / N ]) if (bin == 0): psdngessum = psdnges if (bin != 0): for i in range(len(psdngessum)): psdngessum[i][1] += psdnges[i][1] plotpsdngessum = Data(psdngessum) plotpsdngessum.set_option_colonsep("with", "lines") gp = Gnuplot() gp("set title '%f , gap = %i'" % (doy, gap)) gp("set logscale x") gp("set logscale y") gp("set yrange[1e-5:0.1]") gp("set xrange[0.001:1.]") gp.plot(plotpsdngessum) gp.hardcopy("%f_%is_%i_%i.ps" % (doy, int(timeres), N, binning), color=True, fontsize=18) del gp
else: phi = pi - atan(mdata.magby[i][1] / mdata.magbx[i][1]) # Ende: Winkel ausrechnen # Jedes binres-te Element neue bin anlegen und letzte normieren if (i % binres == 0): if (i > 0): mbin[len(mbin) - 1][1] /= binres mbin.append([mdata.time[i], phi]) else: mbin[len(mbin) - 1][1] += phi if (i % binres != 0): mbin[len(mbin) - 1][1] /= (i % binres) plotdata = Data(mbin) plotdata.set_option_colonsep("title", "'{/Symbol F}_B'") mp.panel[mpi].adddata(plotdata) mp.panel[mpi].adddata( Data([[timeframe[0], pi / 2 + parkerwinkel], [timeframe[1], pi / 2 + parkerwinkel]])) mp.panel[mpi].adddata( Data([[timeframe[0], parkerwinkel], [timeframe[1], parkerwinkel]])) mp.panel[mpi].adddata( Data([[timeframe[0], pi + parkerwinkel], [timeframe[1], pi + parkerwinkel]])) mp.panel[mpi].setyrange(-2, 6) mp.panel[mpi].setlogscale(0) mp.panel[mpi].setylabel("B-Winkel") mpi += 1 del plotdata del mdata
1.5 * sdata[ion][time][maxflux][7]) and (sdata[ion][time][step][7] <= 1.69 * sdata[ion][time][maxflux][7])): tmpsumme += sdata[ion][time][step][12] if (sdata[ion][time][maxflux][12]): tailbulk = tmpsumme / sdata[ion][time][maxflux][12] else: tailbulk = 0. else: tailbulk = 0. tailbulkdisttmp.append([(279. + time * 5. * 0.00833), tailbulk]) tailbulkdist.append(tailbulkdisttmp) gptailbulkdist = [] for ion in range(len(sdata)): tmpgptailbulk = Data(tailbulkdist[ion]) tmpgptailbulk.set_option_colonsep("using", "1:2") tmpgptailbulk.set_option_colonsep("title", "'%s'" % (ion_list[ion])) gptailbulkdist.append(tmpgptailbulk) gp = Gnuplot() gp("set autoscale") gp("set yrange[0.00001:1.]") gp("set logscale y") gp("set xlabel 'DoY'") gp("set ylabel 'tail/bulk ratio' ") for ion in range(len(sdata)): if (first): gp.plot(gptailbulkdist[ion]) first = 0 else:
dcounts.append(counts) plotcounts = Data(counts) allfiles.append(plotcounts) f.close() offs = 10 for step in range(dim): tmpcounts = 0. tmperrors = 0. for i in range(1): tmpcounts += dcounts[i + offs][step][1] tmperrors += dcounts[i + offs][step][2]**2 sumcounts.append([dcounts[offs][step][0], tmpcounts, sqrt(tmperrors)]) plotsumcounts = Data(sumcounts) plotsumcounts.set_option_colonsep("using", "1:2:3") plotsumcounts.set_option_colonsep("with", "errorbars") i = 18 j = 20 allfiles[i].set_option_colonsep("title", "'Data 18:00-19:00'") allfiles[j].set_option_colonsep("title", "'Data 20:00-21:00'") allfiles[i].set_option_colonsep("with", "errorbars") allfiles[j].set_option_colonsep("with", "errorbars") allfiles[i].set_option_colonsep("using", "1:2:3") allfiles[j].set_option_colonsep("using", "1:2:3") print "ionvel = ", ionvel gp = Gnuplot() gp("set log y") #gp("set log x") #gp("set xrange[250:400]")
interval = int(data.countspec[ts][vs][0] / datah2.vel[ts] / intervalrange) #print interval if (interval < int(maxrange / intervalrange)): datadenssum[i][interval] += data.countspec[ts][vs][1] for interval in range(len(datadenssum[i])): datadenssum[i][interval] /= len(data.countspec) if (datadenssum[i][interval] > 1.e-24): if (datadenssum[i][interval] < datamin[i]): datamin[i] = datadenssum[i][interval] if (datadenssum[i][interval] > datamax[i]): datamax[i] = datadenssum[i][interval] pdata = Data(zip(frange(0, maxrange, intervalrange), datadenssum[i])) pdata.set_option_colonsep("title", "'" + str(swstart) + "'") mp.panel[i].adddata(pdata) del pdata del datadenssum #data = swicsprotondata(ionnames[i],jahr[jh][1],path) #data.load() #gp.plot(Data(data.countspec[0])) for i in range(len(ionnames)): mp.panel[i].setyrange(datamin[i] * 0.9, datamax[i] * 1.1) mp.panel[i].setlogscale(1) mp.panel[i].setylabel(ionnames[i] + " counts per hour") mp.plot()
hist[p,w,:,0] = linspace(0,(bincount-1)*binsize,bincount) + binsize/2 # Ende: Geschwindigkeiten anfügen mp = multiplot(plotcount+1,1) mpi = 0 mp.setgv(1) mp.setxlabel("Geschwindigkeitsbins") mp.setxrange(200,bincount*binsize) #Anfang: Panels plotten for p in range(len(hist)): for w in range(len(marks)): plotdata = Data(hist[p,w,:,0:3]) plotdata.set_option_colonsep("title","'"+title[p]+" "+marktitle[w]+"'") plotdata.set_option_colonsep("with","yerrorline") mp.panel[mpi].adddata(plotdata) mp.panel[mpi].setyrange(ranges[p][0],ranges[p][1]) mp.panel[mpi].setlogscale(log[p]) del plotdata mpi += 1 #Ende: Panels plotten #Anfang: Counts plotten plotdata = Data(zip(hist[0,0,:,0],hist[0,0,:,3])) mp.panel[mpi].adddata(plotdata) plotdata = Data(zip(hist[0,1,:,0],hist[0,1,:,3])) mp.panel[mpi].adddata(plotdata) mp.panel[mpi].setyrange(1,900) mp.panel[mpi].setlogscale(1)
onedaym = histogram(cleanmeanch, 85, 1, 20, 4) onedaym2 = sig_histogram(cleanmeanch, onedaym, 4) onedaym3 = [] for i in range(len(onedaym)): onedaym3.append([onedaym[i][0], onedaym[i][1], onedaym2[i][1]]) #for i in range(16): # nrsum=0 # onedaymean=0. # for j in range(24): # if (fedata.meanch[i*24+j][1]>0. and fedata.meanch[i*24+j][1]<20.): # nrsum+=1 # onedaymean+=fedata.meanch[i*24+j][1] # if (nrsum>0): # onedaym.append([90.5+float(i),onedaymean/nrsum]) ponedaym = Data(onedaym3) ponedaym.set_option_colonsep("using", "1:2:3") ponedaym.set_option_colonsep("with", "yerrorbars lw 3 pt 2") gp = Gnuplot() gp("set grid xtics mxtics noytics back lt -1 lt 0") gp("set yrange[0:20]") gp("set xrange[85:105]") gp("set mxtics 5") gp("set mytics 5") gp("set title 'ACE/SWICS Maximum Likelihood PHA Analyse'") gp("set ylabel 'Qm(Fe)'") gp("set xlabel 'Doy 2001'") gp.plot(ponedaym) gp.hardcopy("meanchfe.ps", color="true")
vax = vp[0][2] + vd[0][2] vay = vp[0][3] + vd[0][3] var = sqrt(vax**2 + vay**2) radius[1] = var vaang = asin(vay / var) * 180. / pi #va=[[0,0,vd[0][2]+vp[0][2],vd[0][3]+vp[0][3]]] va, valabel = getvec(0., 0., var, vaang) vdsw, vdswlabel = getvec(radius[0], 50., radius[1] - radius[0], 0.) vpsw, vpswlabel = getvec(0., 75., radius[0], 0.) vasw, vaswlabel = getvec(0., 100., radius[1], 0.) #vdrec,vdreclabel=getvec(radius[0],25.,radius[0]*cos((180-beta+alpha)*pi/180.)+sqrt(radius[0]**2*cos((180-beta+alpha)*pi/180.)**2+radius[1]**2-radius[0]**2),0.) vdrec, vdreclabel = getvec(radius[0], 25., dv0, 0.) vdrot, vdrotlabel = getvec(vp[0][2], vp[0][3], dv0, alpha) pvp = Data(vp) pvp.set_option_colonsep("with", "vectors size 7,25 filled ls 10") pva = Data(va) pva.set_option_colonsep("with", "vectors size 7,25 filled ls 11") pvd = Data(vd) pvd.set_option_colonsep("with", "vectors size 7,25 filled ls 12") pvdsw = Data(vdsw) pvdsw.set_option_colonsep("with", "vectors heads front size 5,90 ls 13") pvdrec = Data(vdrec) pvdrec.set_option_colonsep("with", "vectors heads front size 5,90ls 12") pvpsw = Data(vpsw) pvpsw.set_option_colonsep("with", "vectors heads front size 5,90 ls 10") pvasw = Data(vasw) pvasw.set_option_colonsep("with", "vectors heads front size 5,90 ls 11") pvdrot = Data(vdrot) pvdrot.set_option_colonsep("with", "vectors size 7,25 filled ls 17") alphaarc, alphaarclabel = getarc(vp[0][2], vp[0][3], 180, 180 + int(alpha),
for i in range(dim): tmpsum = 0. for j in range(len(fftdata) / 2 + 1): tmpsum += sin( float(j) / float(N) * 2 * pi * float(i)) * (fftdata[j].real) + cos( float(j) / float(N) * 2 * pi * float(i)) * (fftdata[j].imag) # tmpsum=tmpsum*2. for j in range(len(fftdata) / 2): tmpsum += sin( float(len(fftdata) - j - 1) / float(N) * 2 * pi * float(i)) * (fftdata[len(fftdata) - j - 1].real) + cos( float(len(fftdata) - j - 1) / float(N) * 2 * pi * float(i)) * (fftdata[len(fftdata) - j - 1].imag) tmpsum = tmpsum / dim sumdata2.append([float(i) / 2., tmpsum]) plotsum = Data(sumdata) plotsum.set_option_colonsep("with", "line") plotsum2 = Data(sumdata2) plotsum2.set_option_colonsep("with", "line") gp = Gnuplot() gp("set logscale y") #gp("set logscale x") gp.plot(plotdata, plotdata2) gp2 = Gnuplot() #gp2("set logscale y") gp2("set samples 12800") gp2("set xrange[80:128]") gp2.plot("(sin(x)+sin(2*x))", plotsum, plotsum2)
N2=len(autoc) for i in range(N2): autocfft.append(autoc[i][1]) psdaraw=fft(autocfft) psdages=[] for i in range(len(psdaraw)/2+1): psdages.append([(float(i)/(float(N2)*timeres)),2.*abs(psdaraw[i].imag)/N2+2.*abs(psdaraw[i].real)/N2]) if (bin==0): psdagessum=psdages if (bin!=0): for i in range(len(psdagessum)): psdagessum[i][1]+=psdages[i][1] if (doautocorr): plotpsdagessum=Data(psdagessum) plotpsdagessum.set_option_colonsep("with", "lines") plotautoc=Data(autoc) plotautoc.set_option_colonsep("with", "lines") if (dofft): plotpsdngessum=Data(psdngessum) plotpsdngessum.set_option_colonsep("with", "lines") plotpsdmagbzges=Data(psdmagbzges) plotpsdmagbzges.set_option_colonsep("with", "lines") plotalphan=Data(alphan) plotalphan.set_option_colonsep("with", "lines") plotbeta=Data(beta) plotbeta.set_option_colonsep("with", "lines") plotpsdbetages=Data(psdbetages) plotpsdbetages.set_option_colonsep("with", "lines") if (dofft):
pspec[len(pspec) - 1].set_option_colonsep("with", "yerrorbars lw 3") pspec[len(pspec) - 1].set_option_colonsep("using", "1:2:3") i += 1 phist = [] i = 0 for spec in histarr: phist.append(Data(spec)) phist[len(phist) - 1].set_option_colonsep("title", "'%s'" % (fedata[i].name)) phist[len(phist) - 1].set_option_colonsep("with", "yerrorbars lw 3") phist[len(phist) - 1].set_option_colonsep("using", "1:2:3") i += 1 psumhist = Data(sumhist) psumhist.set_option_colonsep("title", "'Fe'") psumhist.set_option_colonsep("with", "yerrorbars lw 3") psumhist.set_option_colonsep("using", "1:2:3") gp = Gnuplot() #gp("f(x)=3.e6*x**-5.7") gp("set log yx") gp("set yrange[0.1:1e5]") gp("set xrange[.1:100.]") gp("set format y '10^{%T}'") gp("set xlabel 'keV/amu'") gp("set ylabel 'N[#]'") if (len(hedata.time) == 1): gp("set title '2007 DoY %.3f'" % (hedata.time[0])) else: gp("set title '2007 DoY %.3f-%.3f'" %
tmpq=tmpq+(results[ion+42][interv][1]*(5.+float(ion))) sumfl=sumfl+(results[ion+42][interv][1]) qtmp8.append([results[0][interv][0],(tmpq/sumfl)]) qges.append(qtmp1) qges.append(qtmp2) qges.append(qtmp3) qges.append(qtmp4) qges.append(qtmp5) qges.append(qtmp6) qges.append(qtmp7) qges.append(qtmp8) gpqges=[] for ion in range(8): tmpgpq=Data(qges[ion]) tmpgpq.set_option_colonsep("using", "1:2") tmpgpq.set_option_colonsep("title", "'%s'" %(ion_list2[ion])) gpqges.append(tmpgpq) # qfe.append([results[0][interv][0],(tmpflux2/tmpflux)]) #gpqfe=Data(qfe) #gpqfe.set_option_colonsep("using", "1:2") #gpqfe.set_option_colonsep("title", "'QFe'") tmpgpsumme=Data(summe) tmpgpsumme.set_option_colonsep("using", "1:2") tmpgpsumme.set_option_colonsep("title", "'O'")
histarr2.append(tmphist2) meandvvsvparr[i][2] = tmpsig meandvvsvparr[i][3] = (len(tmpval[j0:-j0 - 1])) dvrmean = [] for ion in dvvsvparr: dvrmean.append([]) for i in range(len(ion) - 20): dvrmean[-1].append(mean(ion[i:i + 20])) magrmean = [] for i in range(len(magarr) - 20): magrmean.append(mean(magarr[i:i + 20])) meanhevse = meandvvsvparr pmeandvvsvparr = Data(meandvvsvparr) pmeandvvsvparr.set_option_colonsep("using", "1:4:2") """ i=-1 for ion in meandvvsvparr: i+=1 tmpsum=0. deltasum=0. nrtmpsum=0 j=-1 for val in ion: j+=1 if (val[0]>0.01 and val[0]<0.4 and meandvvsvparr[-1][j][1]>0.): delta=val[2]/meandvvsvparr[-1][j][1]+val[1]/meandvvsvparr[-1][j][1]**2*meandvvsvparr[-1][j][2] tmpsum+=val[1]/meandvvsvparr[-1][j][1] deltasum+=delta**2 nrtmpsum+=1.
daten[11, :, 1] += tmp[:] tmp = array(get_densratio(odata, pdata, mark[m])) daten[12, :, 1] += tmp[:] del mdata del pdata del he2data del o6data del o7data if len(mark) > 0: daten[:, :, 1] /= len(mark) for i in [1, 2, 10, 5, 3, 11, 12]: plotdata = Data(daten[i]) plotdata.set_option_colonsep("title", "'" + title[i] + "'") if (log[i]): unten = 0.3 * min(daten[i, :24 * 8 - 3, 1]) oben = 3. * max(daten[i, :24 * 8 - 3, 1]) else: unten = min(daten[i, :24 * 8 - 3, 1]) - 0.3 * abs(min(daten[i, :24 * 8 - 3, 1])) oben = max(daten[i, :24 * 8 - 3, 1]) + 0.3 * abs(min(daten[i, :24 * 8 - 3, 1])) if (title[i] == "v_p"): unten = 250 mp.panel[mpi].setyrange(unten, oben) mp.panel[mpi].adddata(plotdata) mp.panel[mpi].setlogscale(log[i])
for i in range(len(points1)): pointsmat[i][i] = 1. xvalpoints[i] = points1[i][0] yvalpoints[i] = points1[i][1] gpdata = GridData(et_mat_plot, xval, yval, binary=0) gpdata.set_option_colonsep("with", "lines") gppoints = GridData(pointsmat, xvalpoints, yvalpoints, binary=0) #gppoints=Data(points1,binary=0) gppoints.set_option_colonsep("with", "p pt 2 lt 5 ps 2.5") #gppoints.set_option_colonsep("at", "bs") gpxerrorp = Data(xerrorp) gpxerrorm = Data(xerrorm) gpyerrorp = Data(yerrorp) gpyerrorm = Data(yerrorm) #gpvectors.set_option_colonsep("using", "1:2:3:4") gpxerrorp.set_option_colonsep("with", "vectors head filled lt 5 lw 2") gpxerrorm.set_option_colonsep("with", "vectors head filled lt 5 lw 2") gpyerrorp.set_option_colonsep("with", "vectors head filled lt 5 lw 2") gpyerrorm.set_option_colonsep("with", "vectors head filled lt 5 lw 2") #yrange=[6,40] #xrange=[100,223] yrange = [2, 20] xrange = [200, 512] #yrange=[0,127] #xrange=[80,330] for ion in range(len(ion_names)): labelx = ((points1[ion][0] - float(xrange[0])) / float(xrange[1] - xrange[0])) - 0.025 labely = (1. - (points1[ion][1] - float(yrange[0])) / (yrange[1] - yrange[0])) - 0.04
alpha = zeros([4, 4]) covar = zeros([4, 4]) ia = zeros([4], int) ia[0] = ia[1] = 1 ia[2] = ia[3] = 1 x = range(-5, 6) x = array(x) y = zeros([11]) sig = zeros([11]) for i in range(len(x)): y[i] = a * x[i]**3 + b * x[i]**2 + c sig[i] = sqrt(abs(y[i])) print x print y merit = 0. merit = maxlifit(x, y, sig, p, ia, covar, alpha, merit, g) data = [] for i in range(len(x)): data.append([x[i], y[i], sig[i]]) pdata = Data(data) pdata.set_option_colonsep("using", "1:2:3") pdata.set_option_colonsep("with", "yerrorbars") gp = Gnuplot() gp("f(x)=%f*x**3+%f*x**2+%f*x+%f" % (p[0], p[1], p[2], p[3])) gp("g(x)=%f*x**2+%f*x+%f" % (p0[0], p0[1], p0[2])) gp.plot(pdata, "f(x)")
s = f.readline() s = f.readline() for s in f: k = s.split() for ion in range(len(ion_names)): if (ion_names[ion] == k[2]): ionpos[ion].append([(float(k[3]) + 0.5) / 2., (float(k[5]) + 0.5) / 2.]) f.close() plotionpos = [] for ion in range(len(ionpos)): tmpion = Data(ionpos[ion]) if (ion_names[ion] != "20Ne8+"): tmpion.set_option_colonsep("title", "'%s'" % (ion_names[ion])) else: tmpion.set_option_colonsep("title", "'Ne8+'") plotionpos.append(tmpion) yrange = [0, 127] xrange = [50, 300] gp = Gnuplot() gp("set mouse") gp("set xlabel 'Time-of-Flight Channel'") gp("set ylabel 'Energy Channel' ") gp("set xrange[%i:%i]" % (xrange[0], xrange[1])) gp("set yrange[%i:%i]" % (yrange[0], yrange[1])) gp.plot(plotionpos[0]) for ion in range(len(ionpos) - 1):
pvthhisttheovs.set_option_colonsep("title","'Model'") pvthhisttheovs.set_option_colonsep("with","steps lt 3 lw 2") pvthhisttheovs.set_option_colonsep("using","1:2") """ a = mag.getvals(["time", "phi"]) b = mag.getvals(["time", "theta"]) c = mag.getvals(["time", "phi"]) for i in range(len(c)): c[i, 1] = acos(cos(a[i, 1]) * cos(b[i, 1])) #c[:,1]-=pi/2. #c[:,1]=-c[:,1] d = iondata.getvals(["time", "vel"]) d[:, 1] /= 100 pa = Data(a) pa.set_option_colonsep("with", "l lt 1") pb = Data(b) pc = Data(c) pc.set_option_colonsep("with", "l lt 3") pd = Data(d) pd.set_option_colonsep("with", "l lt 4") denssw = iondata.getvals(["time", "dens"]) dens = swepam.getvals(["time", "dens"]) vel = iondata.getvals(["time", "vel"]) vels = swepam.getvals(["time", "vel"]) temp = iondata.getvals(["time", "temp"]) temps = swepam.getvals(["time", "temp"]) magb = mag.getvals(["time", "magb"]) prdbb = mag.getvals(["time", "prdbb"]) dbb = mag.getvals(["time", "dbb"])
class error: "Class error : contains errordata\n\t name = array[steps][ions] ..." def __init__(self,filename): self.filename=filename self.name=[] self.ionname="" self.step=0 self.counts=0. self.frac=0. self.error=0. self.fiterg=[] self.normerg=[] self.histogram=[] # self.gp=Gnuplot() """ method : reads in maximum-likelihood-fitresults to generated data. the name of the file is in self.filename """ def readerrordata(self): dim=200 infile=open(self.filename) tmpfitergion1=[] tmpfitergion2=[] tmpnormergion1=[] tmpnormergion2=[] for step in range(dim): s=infile.readline() k=s.split() numions=int(k[5]) numions=2 s=infile.readline() for ion in range(numions): s=infile.readline() k=s.split() if (step==0): self.name.append(k[0]) if (ion==0): tmpfitergion1.append(float(k[10])) tmpnormergion1.append(float(k[11])) if (ion==1): tmpfitergion2.append(float(k[10])) tmpnormergion2.append(float(k[11])) self.fiterg.append(tmpfitergion1) self.fiterg.append(tmpfitergion2) self.normerg.append(tmpnormergion1) self.normerg.append(tmpnormergion2) print "load : ",self.filename """ method : calculates error from already loaded maximum-likelihodd-fitresults (via readerrordata) gethistogram first makes a histogram out of the m-l-fitresults. afterwards getfitpara determines the parameters for the final fitting to the histogram. in the end the fit to the histogram is performed. """ def calcerror(self): gethistogram(self) self.getfitpara() self.geterror() """ method : """ def geterror(self): gp=Gnuplot() # gp("set yrange[0:1e20]") gp("a=%f" %(self.counts)) print len(self.histogram[0]) gp("b=5.") gp("c=200.") gp("f(x)=c/(sqrt(2.*pi)*b)*exp(-((x-a)**2/(2.*b**2)))") self.gphist=Data(self.histogram[0]) self.gphist.set_option_colonsep("with","boxes") if (len(self.histogram[0])>3): gp("fit f(x) '"+self.gphist.filename+"' using 1:2 via a,b") gp("fit f(x) '"+self.gphist.filename+"' using 1:2 via b") else: gp("b=0.1") # gp.plot(self.gphist,"f(x)") # gp("pause 3") self.error=gp.eval("b")/self.counts print self.error """ method : """ def getfitpara(self): positions=[] for i in range(len(self.filename)): if (self.filename[i:i+1]=="_"): positions.append(i) print positions self.ionname=self.filename[positions[2]+1:positions[3]] self.step=int(self.filename[positions[3]+5:positions[4]]) self.counts=float(self.filename[positions[4]+1:positions[5]]) self.frac=float(self.filename[positions[5]+1:positions[6]]) print self.ionname print self.step print self.counts print self.frac print self.name
class cascade: def __init__(self, B, power, index, eff, ions, vsw, valf): "B\t->\t float : magnetic field strength in nT\npower\t->\t float : scales the wavepower spectrum\nindex\t->\t float : spectral index of cascade\neff\t->\t float : efficiency for energy drain from cascade\nions\t->\t [nrions][ioname(str),ionmass(float,in amu),ioncharge(float,in e),iondens(float,in respect to protons)\nvsw\t->\t float : solar wind speed\nvalf\t->\t float : alfven speed" self.B = B * 1e-9 self.power = power self.index = index self.eff = eff self.vsw = vsw self.valf = valf self.name = [] self.dens = [] self.mass = [] self.mqarr = [] self.charge = [] self.sequence = [] for ion in ions: self.name.append(ion[0]) self.mass.append(ion[1]) self.charge.append(ion[2]) self.dens.append(ion[3]) self.mqarr.append(ion[2] / ion[1]) self.sequence.append(0) self.qm0 = 1.602176487e-19 / 1.66053886e-27 self.warr = [] self.dim = len(self.mqarr) self.get_sequence() self.build_warr() self.calc_casc() def set_index(self, a): self.index = a def set_B(self, a): self.B = a * 1e-9 def set_efficiency(self, a): self.eff = a def build_warr(self): "calculates the resonance frequencies" for i in self.sequence: self.warr.append(-(self.mqarr[i] * self.qm0 * self.B) / (1. - self.vsw / self.valf)) def get_sequence(self): mqarr = [] sequence = [] for val in self.mqarr: mqarr.append(val) for i in range(self.dim): maxval = min(mqarr) maxpos = 0 i = 0 while (mqarr[i] != maxval): i += 1 maxpos = i """ for i in range(self.dim): if (mqarr[i]==maxval): maxpos=i """ sequence.append(maxpos) newmqarr = [] for i in range(self.dim): if (i != maxpos): newmqarr.append(mqarr[i]) else: newmqarr.append(100.) mqarr = [] for val in newmqarr: mqarr.append(val) self.sequence = sequence def calc_casc(self): Parr = [[.01, self.power]] dParr = [[.01, 0.]] for i in range(self.dim): Parr.append([self.warr[i], 0.]) dParr.append([self.warr[i], 0.]) Parr[0][1] = (self.power * Parr[0][0]**-self.index) dParr[0][1] = (self.power * Parr[0][0]**-self.index) #dParr[0][1]=0. Parr[1][1] = (self.power * Parr[1][0]**-self.index) - ( self.power * Parr[1][0]**-self.index ) * self.dens[self.sequence[0]] * self.eff * self.charge[ self.sequence[0]]**2 / self.mass[self.sequence[0]] dParr[1][1] = (self.power * Parr[1][0]**-self.index) * self.dens[ self.sequence[0]] * self.eff * self.charge[ self.sequence[0]]**2 / self.mass[self.sequence[0]] for i in range(self.dim - 1): P0 = (self.power * Parr[i + 2][0]**-self.index) - ( (self.power * Parr[i + 1][0]**-self.index) - Parr[i + 1][1]) dP = P0 * self.dens[self.sequence[i + 1]] * self.eff * self.charge[ self.sequence[i + 1]]**2 / self.mass[self.sequence[i + 1]] print "P0,dP" print P0, dP if (dP < P0): Parr[i + 2][1] = P0 - dP else: Parr[i + 2][1] = 1. dP = P0 dParr[i + 2][1] = dP if (i == 0): dParr[i + 2][1] = dP if (i == 1): dParr[i + 2][1] = dP if (i == 2): dParr[i + 2][1] = dP self.Parr = Parr self.dParr = dParr dParr2 = [] dParr3 = [] dVarr = [] E0 = 0. ppos = 0 hepos = 0 for j in range(len(self.sequence)): if (self.name[self.sequence[j]] == "H1+"): ppos = j if (self.name[self.sequence[j]] == "He2+"): hepos = j for i in range(self.dim): pos = self.sequence[i] print "pos = ", i, self.sequence[i], pos print "p,hepos = ", ppos, hepos dParr2.append([ dParr[i + 1][0], (dParr[i + 1][1] / self.dens[pos]) / (dParr[ppos + 1][1] / self.dens[self.sequence[ppos]]) ]) # dv/dvHe #a=sqrt((dParr[i+1][1]*2./self.dens[i]**2)/self.mass[i])*(self.charge[i]**1.5/self.mass[i])/(sqrt((dParr[self.dim-3][1]*2./self.dens[self.dim-4]**2)/self.mass[self.dim-4])*(self.charge[self.dim-4]**1.5/self.mass[self.dim-4])) a = sqrt( (dParr[i + 1][1] * 2. / self.dens[pos]**1.) / self.mass[pos] ) * (self.charge[pos]**1.5 / self.mass[pos]**1.) / (sqrt( (dParr[hepos + 1][1] * 2. / self.dens[self.sequence[hepos]]** 1.) / self.mass[self.sequence[hepos]]) * ( self.charge[self.sequence[hepos]]**1.5 / self.mass[self.sequence[hepos]]**1.)) # b = E/Ep b = (dParr[i + 1][1] / self.dens[pos]) / ( dParr[ppos + 1][1] / self.dens[self.sequence[ppos]]) print a, b #dParr3.append([self.mass[i]/self.charge[i],(a)*(self.charge[i]**1.5/self.mass[i])]) dParr3.append([self.charge[pos] / self.mass[pos], b]) dVarr.append([self.charge[pos] / self.mass[pos], a]) pdParr = [] pdVarr = [] self.pdVarr = [] self.pdParr = [] for j in range(self.dim): for k in range(self.dim): if (self.name[self.sequence[k]] == self.name[j]): pos = k if (self.name[j] != "H1+"): self.pdVarr.append(Data([dVarr[pos]])) self.pdVarr[len(self.pdVarr) - 1].set_option_colonsep( "with", "p pt %i lt 3" % (j + 1)) self.pdParr.append(Data([dParr3[pos]])) if (self.name[j] == "H1+"): self.pdParr[len(self.pdParr) - 1].set_option_colonsep( "title", "'%s'" % ("H^{1+}")) if (self.name[j] == "H1+"): self.pdParr[len(self.pdVarr) - 1].set_option_colonsep( "with", "p pt %i lt 1" % (j + 1)) else: self.pdParr[len(self.pdVarr) - 1].set_option_colonsep( "with", "p pt %i lt 3" % (j + 1)) self.dParr2 = dParr2 self.dParr3 = dParr3 self.dVarr = dVarr def plot(self): self.gp = Gnuplot() #self.gp("set autoscale") self.gp("set size square") self.gp("set xrange[0.01:.1]") self.gp("set yrange[100.:1000.]") self.gp("set format xy '10^%T'") self.gp("set xlabel '{/Symbol w} [Hz]'") self.gp("set ylabel 'Wave Power [arb.]'") self.gp("set logscale xy") self.pParr = Data(self.Parr) self.pParr.set_option_colonsep("with", "lp") self.gp.plot(self.pParr) #self.gp.replot(Data(self.dParr2)) #self.gp.replot(Data(self.dParr2)) self.gp("a=%f" % (self.power)) self.gp("k=%f" % (self.index)) self.gp("f(x)=a*x**-k") self.gp("f2(x)=(a*.7)*x**-(k+.1)") self.gp("f3(x)=(a*1e-5)*x**-(k+4.)") #self.gp.replot("f(x) with l lt 3","f2(x) with l lt 4","f3(x) with l lt 5") self.gp("set term postscript color 18 lw 2 eps") self.gp.hardcopy("Pcascall.ps", color="true", fontsize=18) self.gp2 = Gnuplot() self.gp2("set logscale xy") self.gp2("set title 'theocasc dE'") #gp2("set yrange[1:1.1]") first = 1 for j in range(self.dim): if (first == 1): self.gp2.plot(self.pdParr[j]) first = 0 else: self.gp2.replot(self.pdParr[j]) self.gp3 = Gnuplot() self.gp3("set logscale xy") self.gp3("set title 'theocasc dV'") first = 1 for j in range(self.dim): if (first == 1): self.gp3.plot(self.pdVarr[j]) first = 0 else: self.gp3.replot(self.pdVarr[j])
def mrqcof(self, deriv, plot): from numpy import array, zeros from Gnuplot import Data dim = len(self.yvals[0]) dyda = zeros([self.ma, dim]) tmpdv = [] tmpvth = [] self.chisq = 0. for j in range(self.ma): for k in range(self.ma): self.covar[j][k] = 0. self.da[j] = 0. for i in range(self.ndata): ymod = self.func(self.xvals[i], self.paratry, dyda, deriv, self.ia) if (plot == 1): tmpdv.append([i * 0.2, ymod[0]]) tmpvth.append([i * 0.2, ymod[1]]) sig2i = [] for j in range(dim): if (self.sigvals[i][j] != 0.): sig2i.append(1. / (self.sigvals[i][j]**2)) else: sig2i.append(1.) dy = [] for j in range(dim): dy.append(self.yvals[i][j] - ymod[j]) if (deriv == 1): j = 0 for l in range(self.ma): if (self.ia[l]): wt = [] for n in range(dim): wt.append(dyda[l][n] * sig2i[n]) k = 0 for m in range(l + 1): if (self.ia[m]): for n in range(dim): self.covar[j][k] += wt[n] * dyda[m][n] k += 1 for n in range(dim): self.da[j] += dy[n] * wt[n] j += 1 for n in range(dim): self.chisq += dy[n] * dy[n] * sig2i[n] for j in range(1, self.mfit): for k in range(j): self.covar[k][j] = self.covar[j][k] if (plot == 1): tmpdv.append([1.6, 0.0]) tmpdvplot = Data(tmpdv) # tmpdvplot.set_option_colonsep("title","'chisq=%.2f,bp=%.2f,pb=%.2f,vpara=%.2f,vperp=%.2f'"%(self.chisq,self.paratry[0],self.paratry[1],self.paratry[2],self.paratry[3])) tmpdvplot.set_option_colonsep("title", "'Model'") tmpdvplot.set_option_colonsep("with", "steps lt 3 lw 3") tmpvth.append([1.6, 0.0]) tmpvthplot = Data(tmpvth) tmpvthplot.set_option_colonsep("title", "'Model'") tmpvthplot.set_option_colonsep("with", "steps lt 3 lw 3") self.pthdv.append(tmpdvplot) self.pthvth.append(tmpvthplot) del dyda return
k2=s2.split() aspang.append([time,float(k2[2])]) s2=swicsdatain.readline() k2=s2.split() swicspspeed.append([time,float(k2[2])]) swicsdatain.close() plotaspang=Data(aspang) plotswepamdata=Data(swepamdata) plotswepampdata=Data(swepampdata) plotswicsdata=Data(swicsdata) plotswepamspeed=Data(swepamspeed) plotswicsspeed=Data(swicsspeed) plotswicspspeed=Data(swicspspeed) plotswepamdata.set_option_colonsep("title", "'SWEPAM'") plotswepamspeed.set_option_colonsep("with", "lines") plotswicsdata.set_option_colonsep("with", "points ls 3") plotswicsdata.set_option_colonsep("title", "'SWICS'") plotswicsspeed.set_option_colonsep("with", "lines") plotswicspspeed.set_option_colonsep("with", "lines") plotaspang.set_option_colonsep("with", "lines") gp=Gnuplot() gp("set xrange[0:60]") gp("set format y '10^{%T}'") gp("set xlabel 'DoY 2007'") gp("set ylabel 'He^{2+} Density [1cm^{-3}]'") #gp("set yrange[0.01:1.]") gp("set log y") gp.plot(plotswepamdata,plotswicsdata,plotaspang)
swepamt=[] swepamd=[] swepamr=[] swepamin=open("Swepamd279-289y200516min.dat") for s in swepamin: k=s.split() swepamv.append([float(k[0]),float(k[4])]) swepamt.append([float(k[0]),float(k[2])]) swepamd.append([float(k[0]),float(k[1])]) swepamr.append([float(k[0]),float(k[3])]) plotswepamv=Data(swepamv) plotswepamt=Data(swepamt) plotswepamd=Data(swepamd) plotswepamr=Data(swepamr) plotswepamv.set_option_colonsep("title", "'SWEPAM H1+'") plotswepamt.set_option_colonsep("title", "'SWEPAM H1+'") plotswepamd.set_option_colonsep("title", "'SWEPAM H1+'") plotswepamr.set_option_colonsep("title", "'SWEPAM He2+/H1+'") pathl=open("pathlist2.in") data=[] print "readinding data" for s in pathl: p=s.split() liste=open(p[0]+"list.in") s2=liste.readline() for s2 in liste: filen=s2.split() tmpdata=readres(p[0]+"res_"+filen[0]) data.append(tmpdata)
for ion in range(numberions): for step in range(dim): for val in range((diffrange[ion]*2)): if (fitval[ion][step]==hist[ion][val][0]): hist[ion][val][1]+=1 for val in range((diffrangenorm[ion]*2)): if (normval[ion][step]==histnorm[ion][val][0]): histnorm[ion][val][1]+=1 gphist=[] gphistnorm=[] for ion in range(numberions): gphisttmp=Data(hist[ion]) gphisttmp.set_option_colonsep("using", "1:2") # gphisttmp.set_option_colonsep("title", "'fm0 %s rc:%f mw:%f sig:%f'" %(ion_names[ion],nomcounts[ion],mittelwert[ion],sigma[ion])) gphisttmp.set_option_colonsep("title", "'%s (%i counts generated)'" %(ion_names[ion],nomcounts[ion])) gphisttmp.set_option_colonsep("with","boxes") gphist.append(gphisttmp) for ion in range(numberions): gphisttmp=Data(histnorm[ion]) gphisttmp.set_option_colonsep("using", "1:2") # gphisttmp.set_option_colonsep("title", "'norm fm0 %s rc:%f mw:%f sig:%f'" %(ion_names[ion],nomcounts[ion],mwnorm[ion],signorm[ion])) gphisttmp.set_option_colonsep("title", "'%s'" %(ion_names[ion])) gphisttmp.set_option_colonsep("with","boxes") gphistnorm.append(gphisttmp) #load 2. erg-file f=open("/home/ivar/berger/projects/ionpositions/test_analyse_data/erg_testdata30_1000_fm1.dat")
sumhist[i][3] = step / 2. deg = pi / 180. #corrarr=[1.,sin(.2*deg),sin(5.*deg),sin(90.*deg),0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.] #for i in range(int(dim/step)): # sumhist[i][1]=sumhist[i][1]*corrarr[i] # Plotobjekte werden erzeugt fitspec = [] for val in epaspec[fi]: if (val[0] > fg): fitspec.append(val) pfitspec = Data(fitspec) pfitspec.set_option_colonsep("title", "'%s'" % (fedata[i].name)) pfitspec.set_option_colonsep("with", "xyerrorbars") pfitspec.set_option_colonsep("using", "1:2:5:3") i = 0 while (epaspec[fi][i][0] > fg): i += 1 i = i - 1 print "i = ", i normval = [] xval = [] for j in range(i): if (epaspec[fi][i - j] != 0.): normval.append(epaspec[fi][i - j][1]) xval.append(epaspec[fi][i - j][0]) astring = "("
for i in range(len(dvzeros)): if sum(vivsvparr[i]) > 0.: dvzeros[i][1] /= (sum(vivsvparr[i]) + dvzeros[i][1]) xvals = [] yvals = [] for i in range(nrxbins): #xvals.append(float(i*vxbinwidth)) xvals.append(10**(-3 + float(i * vxbinwidth))) for i in range(nrybins): yvals.append(float(i * vybinwidth) + vyoffset) pvivsvparr = GridData(vivsvparr, xvals, yvals, binary=0) pdvzeros = Data(dvzeros) pdvzeros.set_option_colonsep("with", "l lt -1") xrange = [0., 3.] #xrange=[300.,800.] yrange = [0., 2.] a = [[xrange[0], yrange[0], 1.], [xrange[1], yrange[1], 1.]] pa = Data(a) pa.set_option_colonsep("with", "l lt -1") gp = Gnuplot() gp("set pm3d at bs map explicit corners2color c1") #gp("set pm3d map") gp("set size square") gp("set xrange[%f:%f]" % (xrange[0], xrange[1])) gp("set yrange[%f:%f]" % (yrange[0], yrange[1])) #gp("set logscale x") gp("set palette model RGB functions gray<1.e-20 ? 1 : gray<0.5 ? gray*2 : 1 , gray<1.e-20 ? 1 : gray<0.5 ? gray*2 : 2-gray*2, gray <1.e-20 ? 1 : gray<0.5 ? 1-sqrt(gray*2) : 0" )