-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbinsrc2.py
61 lines (33 loc) · 1.2 KB
/
binsrc2.py
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
# v2: no more spectrum version needed (in hilx/ there used to be verstr='_v2'
# PURPOSE: bins the in or out spectrum in 33 spectral bins.
# OUTPUT: mfe_CLU/spec/binsrcin.txt OR mfe_CLU/spec/binsrcout.txt
import pdb
import numpy as nn
def bin( clu, srctxt ) :
sfile = open( 'mfe_'+clu+'/spec/'+srctxt, 'r' )
intermed=sfile.readline()
ee=[]
cc=[]
while intermed != '' and intermed != '\n' :
if intermed[0] != '#' :
ee.append( float(intermed.split()[0]) )
cc.append( float(intermed.split()[1]) )
intermed=sfile.readline()
ee=nn.array(ee)
cc=nn.array(cc)
nlines=len(ee)
eelo= nn.linspace(.3, 6.9, 34)
eehi= eelo+0.2
eemid=eelo+0.1
bincc= nn.zeros(34, dtype=nn.float)
for jj in range(34) :
integ_range = nn.where( (ee >= eelo[jj]) & (ee < eehi[jj]) )
#pdb.set_trace()
if len(integ_range[0])> 1 : bincc[jj] = nn.trapz(ee[integ_range], cc[integ_range])
elif len(integ_range[0])==0 : bincc[jj] = 0.
elif len(integ_range[0])==1 : bincc[jj] = 0.2 * cc[integ_range]
# normalize the spectrum:
normbc = bincc / nn.sum(bincc)
filebin = open( 'mfe_'+clu+'/spec/bin'+srctxt, 'w')
for jj in range(34): filebin.write(str(eemid[jj])+' '+str(normbc[jj])+'\n')
filebin.close()