Problems with Smoothing Graphics in Python

I am trying to smooth out a plot that is noisy due to the sampling frequency that I use and what it counts. I use the help here - basically a Floating String with PyPlot (although I could not find the "spline" function, and instead I use UnivarinteSpline)

However, no matter what I do, I continue to receive errors with the pyplot error, which "x and y are not of the same length"or that the value scipi.UnivariateSplinematters for w, which is incorrect. I'm not quite sure how to fix this (not really a Python person!). I attached the code, although in the end it's just a build bit that causes problems. Thanks

import os.path
import matplotlib.pyplot as plt
import scipy.interpolate as sci
import numpy as np
def main():
    jcc = "0050"
    dj = "005"
    l = "060"
    D = 20
    hT = 4 * D
    wT1 = 2 * D
    wT2 = 5 * D
    for jcm in ["025","030","035","040","045","050","055","060"]:
        characteristic = "LeadersOnly/Jcm" + jcm + "/Jcc" + jcc + "/dJ" + dj + "/lambda" + l + "/Seed000"
        fingertime1 = []
        fingertime2 = []
        stamp =[]
        finger=[]
        for x in range(0,2500,50):
            if x<10000:
                z=("00"+str(x))
            if x<1000:
                z=("000"+str(x))
            if x<100:
                z=("0000"+str(x))
            if x<10:
                z=("00000"+str(x))
            stamp.append(x)
            path = "LeadersOnly/Jcm" + jcm + "/Jcc" + jcc + "/dJ" + dj + "/lambda" + l + "/Seed000/profile_" + str(z) + ".txt"
            if os.path.exists(path):
                f = open(path, 'r')
                pr1,pr2=np.genfromtxt(path, delimiter='\t', unpack=True)
                p1=[]
                p2=[]
                h1=[]
                h2=[]
                a1=[]
                a2=[]
                finger1 = 0
                finger2 = 0
                for b in range(len(pr1)):
                    p1.append(pr1[b])
                    p2.append(pr2[b])
                for elem in range(len(pr1)-80):
                    h1.append((p1[elem + (2*D)]-0.5*(p1[elem]+p1[elem + (4*D)])))
                    h2.append((p2[elem + (2*D)]-0.5*(p2[elem]+p2[elem + (4*D)])))
                    if h1[elem] >= hT:
                        a1.append(1)
                    else:
                        a1.append(0)
                    if h2[elem]>=hT:        
                        a2.append(1)
                    else:
                        a2.append(0)
                for elem in range(len(a1)-1):
                    if (a1[elem] - a1[elem + 1]) != 0:
                        finger1 = finger1 + 1
                finger1 = finger1 / 2
                for elem in range(len(a2)-1):
                    if (a2[elem] - a2[elem + 1]) != 0:
                        finger2 = finger2 + 1
                finger2 = finger2 / 2
                fingertime1.append(finger1)
                fingertime2.append(finger2)
                finger.append((finger1+finger2)/2)
        namegraph = jcm
        stampnew = np.linspace(stamp[0],stamp[-1],300)
        fingernew = sci.UnivariateSpline(stamp, finger, stampnew)
        plt.plot(stampnew,fingernew,label=namegraph)
    plt.show()      

main()

- ( , , ).

, :

0-th dimension must be fixed to 50 but got 300

error                                     Traceback (most recent call last)

/group/data/Cara/JCMMOTFingers/fingercount_jcm_smooth.py in <module>()
    116
    117 if __name__ == '__main__':
--> 118     main()
    119
    120

/group/data/Cara/JCMMOTFingers/fingercount_jcm_smooth.py in main()
     93                 #print(len(stamp))
     94                 stampnew = np.linspace(stamp[0],stamp[-1],300)
---> 95                 fingernew = sci.UnivariateSpline(stamp, finger, stampnew)
     96                 #print(len(stampnew))
     97                 #print(len(fingernew))

/usr/lib/python2.6/dist-packages/scipy/interpolate/fitpack2.pyc in __init__(self, x, y, w, bbox, k, s)
     86         #_data == x,y,w,xb,xe,k,s,n,t,c,fp,fpint,nrdata,ier
     87         data = dfitpack.fpcurf0(x,y,k,w=w,
---> 88                                 xb=bbox[0],xe=bbox[1],s=s)
     89         if data[-1]==1:
     90             # nest too small, setting to maximum bound

error: failed in converting 1st keyword `w' of dfitpack.fpcurf0 to C/Fortran array
+3
1

, for x in range(0, 2500, 50):

  • z 6 , 0. somestring, z = "{0:06d}".format(x) z = "%06d" % x, .

  • stamp (2500//50)=50.

  • path, , . Pythonic :

    try:
        with open(path,"r") as f:
            do...
    except IOError:
        do something else
    

    with .

  • pr1 pr2, , 1D-, ? p1 p2 :

    p1 = pr1.tolist()
    p2 = pr2.tolist()
    
  • a1, a2 : for elem in range(len(a..)-1) . np.diff.

  • for x in range(...) finger 50 . , , stamp finger , scipy.UnivariateSpline. stamp, path ( , , finger).

  • stampnew 300 , stamp finger 50. - (stampnew) , .

  • fingernew vs stamp. , fingernew - , UnivariateSpline. , , fingernew(stamp), plot.

+4

All Articles