Peano
Loading...
Searching...
No Matches
CSVMerge.py
Go to the documentation of this file.
1import numpy as np
2import matplotlib.pyplot as plt
3from scipy import io
4import os
5import time
6import argparse
7
8parser = argparse.ArgumentParser(description='csv_merger')
9parser.add_argument("-iname", "--input-name", dest="input_name", required="True", type=str, help="input csv file prefix" )
10parser.add_argument("-path", "--input-path", dest="path", default=".", type=str, help="input csv file directory" )
11parser.add_argument("-of", "--output-file", dest="output_name", default=" ", type=str, help="output file name" )
12args = parser.parse_args()
13
14
16
17path=args.path
18input_name=args.input_name
19lis_file=[]
20lis=os.listdir(path)
21for item in lis:
22 if item.startswith(input_name): lis_file.append(item)
23
24#print(lis_file)
25particle_collection={}
26ID1=-999; ID2=-999
27for filename in lis_file:
28 f=open(path+"/"+filename)
29 print("Read in datafile: "+path+"/"+filename)
30 dat=f.readlines()[1:]
31 for line in dat:
32 tem=list(map(float,line.split(', ')))
33 if (not (tem[0],tem[1]) in particle_collection) and (not all(data==0 for data in tem[6:])):
34 particle_collection[(tem[0],tem[1])]=[[]]
35 particle_collection[(tem[0],tem[1])][0]=tem[2:]
36 elif (not tem[2] in np.array(particle_collection[(tem[0],tem[1])])[:,0] ) and (not all(data==0 for data in tem[6:])):
37 particle_collection[(tem[0],tem[1])].append(tem[2:])
38
39 f.close()
40
41for items in particle_collection.values():
42 items.sort(reverse=True)
43
44
45print("number of valid tracers: "+str(len(particle_collection.keys())) )
46
47if args.output_name==" ":
48 output_name=path+"/merged_"+input_name+".csv"
49else:
50 output_name=path+"/"+args.output_name+".csv"
51
52f=open(output_name,"w")
53f.write("t, number(0), number(1), x(0), x(1), x(2), data \n")
54
55for number, data in particle_collection.items():
56 for snapshot in data:
57 f.write( str(snapshot[0])+", "+str(int(number[0]))+", "+str(int(number[1])) )
58 for variable in snapshot[1:]:
59 f.write(", "+str(variable))
60 f.write("\n")
61
62f.close()
63
64
65
66
67
68
69
70