Menu

[r1138]: / trunk / htdocs / screenshots / helpers.py  Maximize  Restore  History

Download this file

94 lines (75 with data), 2.7 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import time, datetime
from matplotlib.numerix import *
from matplotlib.numerix.mlab import *
from matplotlib.dates import date2num
import zlib
import sys
def load_quotes(fname, maxq=None):
"""
Load quotes from the representative data files vineet sent If any
of the values are missing I force all missing. Quotes are sorted
in increasing time. Return value is a list of tuples
(epoch, open, high, low, close, volume )
"""
quotes = []
for i, line in enumerate(file(fname)):
if maxq is not None and i>maxq: break
ts,o,h,l,c,v = line.split(',')
dt = datetime.datetime(*time.strptime(ts.strip('"'), '%Y%m%d%H%M%S')[:6]) # convert to float days
d = date2num(dt)
o,h,l,c,v = [float(val) for val in o,h,l,c,v]
if o==-1 or h==-1 or l==-1 or c==-1 or v==-1:
o,h,l,c,v = -1, -1, -1, -1,-1
quotes.append((d,o,h,l,c,v))
quotes.sort() # increasing time
return quotes
def movavg(s, n):
"""
returns an n period moving average for the time series s
s is a list ordered from oldest (index 0) to most recent (index -1)
n is an integer
returns a numeric array of the moving average
"""
s = array(s)
c = cumsum(s)
return (c[n-1:] - c[:-n+1]) / float(n-1)
def fill_over(ax, x, y, val, color, over=True):
"""
Plot filled x,y for all y over val
if over = False, fill all areas < val
"""
ybase = asarray(y)-val
crossings = nonzero(less(ybase[:-1] * ybase[1:],0))
if ybase[0]>=0: fillon = over
else: fillon = not over
indLast = 0
for ind in crossings:
if fillon:
thisX = x[indLast:ind+1]
thisY = y[indLast:ind+1]
thisY[0] = val
thisY[-1] = val
ax.fill(thisX, thisY, color)
fillon = not fillon
indLast = ind
def random_signal(N, tau):
'generate a length N random signal with time constant tau'
t = arange(float(N))
filter = exp(-t/tau)
return convolve( randn(N), filter, mode=2)[:len(t)]
def load_hst_data():
"""reconstruct the numerix arrays from the data files"""
import matplotlib.numerix as n
#hst = n.fromfile('hst.dat',typecode=n.UInt8, shape=(812,592,3))/255.
str = open('data/hst.zdat').read()
dstr = zlib.decompress(str)
hst = n.fromstring(dstr, n.UInt8)
hst.shape = (812, 592, 3)
hst = hst/255.
str = open('data/chandra.dat').read()
chandra = n.fromstring(str, n.Int16)
chandra.shape = (812,592)
if sys.byteorder == 'little':
chandra.byteswapped()
# note that both HST and Chandra data are normalized to be between 0 and 1
return hst, chandra/16000.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.