Guest User

Untitled

a guest
Jan 23rd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.77 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from math import *
  3. import pyfits
  4. #import matplotlib.pyplot as plt
  5. from pylab import *
  6. from scipy import *
  7. from scipy import optimize
  8. from scipy import special
  9.  
  10. def graafik(pilt, x_kesk, y_kesk, alpha, pool_laius, samm):
  11.     fail=open("data.txt", "w")
  12.     im=pyfits.open(pilt)
  13.     im.info()
  14.     pix=im[0].data
  15.     kaugus=[]
  16.     kiirus=[]
  17.     a=tan(alpha)
  18.     b=y_kesk-a*x_kesk
  19.     for x in range (0, pix.shape[0]-pool_laius, samm):
  20.         y=a*x+b
  21.         summa=0
  22.         arvestatud_punkte=0
  23.         for l in range(-pool_laius, pool_laius+1):
  24.             x_p=x-l*sin(alpha)
  25.             y_p=y+l*cos(alpha)
  26.             if (pix[x_p,y_p]!=pix[1,1]):
  27.                 summa+=pix[x_p,y_p]
  28.                 arvestatud_punkte+=1        
  29.         if summa!=0:
  30.             kaugus.append(x)
  31.             kiirus.append(summa/(arvestatud_punkte*1.0))
  32.             fail.write("%f %f\n\r"%(kaugus[len(kaugus)-1], kiirus[len(kiirus)-1]))
  33.     fail.close()
  34.     return kaugus, kiirus
  35.     #plt.axis('equal')
  36.     #plot(kaugus, kiirus, color='blue', linestyle='solid', marker='s',markerfacecolor='cyan', markersize=5)
  37.     #xlabel("kaugus")
  38.     #ylabel("kiirus")
  39.     #show()
  40.  
  41. def fitting(x_katse,y_katse):
  42.     fitfunc=lambda p,x: p[0]*special.erf(p[3]*(x+p[2]))+p[1]
  43.     errfunc=lambda p,x,y:fitfunc(p,x)-y
  44.     p0=[-144,1650,-250,0.05]
  45.     p1, succes=optimize.leastsq(errfunc, p0[:], args=(x_katse,y_katse))
  46.     r=linspace(x_katse[0], x_katse[len(x_katse)-1], 100)
  47.     plot(x_katse, y_katse, "co", r, fitfunc(p1, r), "b-", r, fitfunc(p0, r), "r--")
  48.     xlabel("kaugus")
  49.     ylabel("kiirus")
  50.     print "%f %f %f"%(p1[0], p1[1], p1[2])
  51.     show()
  52.  
  53. def main ():
  54.     a, b=graafik("N6384_GHAFAS_vlos.fits", 248.7, 239.2, 122, 50, 2)
  55.     fitting(a,b)
  56.    
  57. main()
Add Comment
Please, Sign In to add comment