The following two scripts look through a set of files with paired xy values but not necessarily the same number of x values in each file, extracts all the x values from all the files (script numero uno), then makes sure that all x values are present in all files (and zero-fills to make up for missing data). In short, it's a way of creating files that can be used to generate a matrix of values where all rows have the same number of fields.
The first script:
homogenise.sh
#!/bin/bash
for e in {0..200..10} {220..300..20}
do
cat $e.dat | gawk '{ printf("%s\t",$1) }'
echo ""
done
The second script:
makelist.py
#!/usr/bin/python2.6
import sys
infile=sys.argv[1]
f=open(infile,'r')
arr=[]
for line in f:
line=line.rstrip('\n')
line=line.split('\t')
try:
for i in line:
i=float(i)
if i not in arr:
arr+=[i]
except:
arr=arr
f.close
arr.sort()
mylist=arr
last = mylist[-1]
for i in range(len(mylist)-2, -1, -1):
if last == mylist[i]:
del mylist[i]
else:
last = mylist[i]
voltages=[0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,220,240,260,280,300]
myys=[0]*len(mylist)
for n in voltages:
print "voltage: ',n,'\n'
f=open(str(n)+'.dat','r')
g=open(str(n)+'full.dat','w')
arrx=[]
arry=[]
for line in f:
line=line.rstrip('\n')
line=line.split(' ')
try:
line[0]=float(line[0])
line[1]=float(line[1])
arrx+=[line[0]]
arry+=[line[1]]
except:
#do nothing
print "fail"
for i in range(0,len(arrx)-1):
try:
myys[mylist.index(arrx[i])]=arry[i]
except:
a=0
for i in range(0,len(myys)-1):
g.write(str(mylist[i])+'\t'+str(myys[i])+'\n')
f.close
g.close
The first script:
homogenise.sh
#!/bin/bash
for e in {0..200..10} {220..300..20}
do
cat $e.dat | gawk '{ printf("%s\t",$1) }'
echo ""
done
The second script:
makelist.py
#!/usr/bin/python2.6
import sys
infile=sys.argv[1]
f=open(infile,'r')
arr=[]
for line in f:
line=line.rstrip('\n')
line=line.split('\t')
try:
for i in line:
i=float(i)
if i not in arr:
arr+=[i]
except:
arr=arr
f.close
arr.sort()
mylist=arr
last = mylist[-1]
for i in range(len(mylist)-2, -1, -1):
if last == mylist[i]:
del mylist[i]
else:
last = mylist[i]
voltages=[0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,220,240,260,280,300]
myys=[0]*len(mylist)
for n in voltages:
print "voltage: ',n,'\n'
f=open(str(n)+'.dat','r')
g=open(str(n)+'full.dat','w')
arrx=[]
arry=[]
for line in f:
line=line.rstrip('\n')
line=line.split(' ')
try:
line[0]=float(line[0])
line[1]=float(line[1])
arrx+=[line[0]]
arry+=[line[1]]
except:
#do nothing
print "fail"
for i in range(0,len(arrx)-1):
try:
myys[mylist.index(arrx[i])]=arry[i]
except:
a=0
for i in range(0,len(myys)-1):
g.write(str(mylist[i])+'\t'+str(myys[i])+'\n')
f.close
g.close
ConversionConversion EmoticonEmoticon