From 212453e9aa090f36489b95ddf1266f2f820ae3bf Mon Sep 17 00:00:00 2001 From: David Hendriks <davidhendriks93@gmail.com> Date: Mon, 27 May 2019 10:22:30 +0100 Subject: [PATCH] Updated manual and project description. Made scripts to read out ascii files. Working on binaryfile readout. --- manuals/nbody.pdf | Bin 0 -> 52962 bytes project_description.md | 1 + .../ascii_readout_nbody6pp_example.py | 24 ++ python_scripts_for_nbody6/out.hdf5 | Bin 0 -> 800 bytes python_scripts_for_nbody6/readout_script.py | 4 +- .../readout_script_nbody6pp_binaries.py | 396 ++++++++++++++++++ python_scripts_for_nbody6/test_input.py | 28 ++ requirements.txt | 22 + 8 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 manuals/nbody.pdf create mode 100644 python_scripts_for_nbody6/ascii_readout_nbody6pp_example.py create mode 100644 python_scripts_for_nbody6/out.hdf5 create mode 100644 python_scripts_for_nbody6/readout_script_nbody6pp_binaries.py create mode 100644 python_scripts_for_nbody6/test_input.py create mode 100644 requirements.txt diff --git a/manuals/nbody.pdf b/manuals/nbody.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dd0f5a60c39a7659e839c7233cf8f430108ff438 GIT binary patch literal 52962 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 G*#8Ik5DZcP literal 0 HcmV?d00001 diff --git a/project_description.md b/project_description.md index dfa2a6c..396d03f 100644 --- a/project_description.md +++ b/project_description.md @@ -34,6 +34,7 @@ Start of july - End of August (exact dates YTBD) * http://adsabs.harvard.edu/abs/2013MNRAS.432.2779B * http://adsabs.harvard.edu/abs/2019arXiv190207718B * [Website containing some lectures on N-body integration](http://silkroad.bao.ac.cn/web/index.php/seminars/lectures) +* https://arxiv.org/abs/1711.09100 ## Some watching material: * https://www.cita.utoronto.ca/presentation-archive/?talk_id=745 diff --git a/python_scripts_for_nbody6/ascii_readout_nbody6pp_example.py b/python_scripts_for_nbody6/ascii_readout_nbody6pp_example.py new file mode 100644 index 0000000..a8f8eba --- /dev/null +++ b/python_scripts_for_nbody6/ascii_readout_nbody6pp_example.py @@ -0,0 +1,24 @@ +# Ascii readout script for nbody6++ files. Leading it into something that caries the dataframe +# Will prove as an example to other likewise scripts + +import os +import pandas as pd + +# TODO: put this into a function or a class. + +# Point to the source directory. +source_dir = '/vol/ph/astro_code/dhendriks/work_dir/nbody6' + +# Create the header line labels and data line labels +header_line_labels = ['NS', 'TIME[Myr]'] +N_LABEL = ['TIME[NB]', 'I', 'NAME', 'K*', 'RI[RC]', 'M[M*]', 'Log10(L[L*])', 'LOG10(RS[R*])' , 'LOG10(Teff[K]'] + +# Go through file +with open(os.path.join(source_dir, 'sev.83_0'), 'r') as f: + header_1_data = f.readline().split() + + data = [] + for line in f: + data.append(line.split()) + +df = pd.DataFrame(data, columns=N_LABEL) \ No newline at end of file diff --git a/python_scripts_for_nbody6/out.hdf5 b/python_scripts_for_nbody6/out.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..82daee09f5d9bab4d4ef6cf1c24d6067e7457f8a GIT binary patch literal 800 zcmeD5aB<`1lHy_j0S*oZ76t(@6Gr@p0tIG>2#gPtPk=HQp>zk7Ucm%mFfxE31A_!q zTo7tLy1I}cS67e{nE5aos%?}S;UVDR>KFhDf(U3ha6su3&~ygng3}s^4OR>jq<{th Dq@*Z_ literal 0 HcmV?d00001 diff --git a/python_scripts_for_nbody6/readout_script.py b/python_scripts_for_nbody6/readout_script.py index 8ba12d5..f963163 100644 --- a/python_scripts_for_nbody6/readout_script.py +++ b/python_scripts_for_nbody6/readout_script.py @@ -381,5 +381,5 @@ def main(): f5.close() -if __name__ == '__main__': - main() \ No newline at end of file +# if __name__ == '__main__': +# main() \ No newline at end of file diff --git a/python_scripts_for_nbody6/readout_script_nbody6pp_binaries.py b/python_scripts_for_nbody6/readout_script_nbody6pp_binaries.py new file mode 100644 index 0000000..6c53615 --- /dev/null +++ b/python_scripts_for_nbody6/readout_script_nbody6pp_binaries.py @@ -0,0 +1,396 @@ +# Initially written by Mark Gieles. +# Modified by David Hendriks + +# Code to convert NBODY6 OUT3 file to HDF5 file format +import numpy as np +import struct +import h5py +import sys +import argparse + +# TODO: Fix cuda +# import pycuda.autoinit +# import pycuda.driver as drv +# from pycuda.compiler import SourceModule + +import matplotlib.pyplot as plt +import os +import argparse + + +# Script for nbody6++ binary output files to hdf5. +def read_nbody6pp(f5, input_filename, sev): + """ + Read in the nbody6 output file(s). + + Keyword arguments: + f5 -- The hdf5 object where the data will be written to + input_filename -- The OUT3 file generated by nbody6 + sev -- flag to include output of stellar evolution + """ + + # open NBODY6 file + with open(input_filename, "rb") as f: + # start looping over time and reading the nbody6 data. + # itime tracks the number of timesteps outputted. + itime = -1 + + # runs on some computers seem to generate extra bytes after the record length. + # 'extra' and its associated reads below take care of that. + extra = 0 + + # Do stuff with byte. + byte = f.read(4) # begin header block + model = 0 + + + # Read out first header: + blocksize1 = struct.unpack('i', byte)[0] # header block size + print(blocksize1) + if extra == 1: + f.read(4) + itime = itime + 1 + # read the header for this time + ntot = struct.unpack('i',f.read(4))[0] #ntot + if ntot < 10 and itime == 0: + # check for a nonsensical ntot value, + # which is symptomatic of bizarre extra record padding that occurs on some + # systems. if needed, include extra reads to deal with these. + extra = 1 + ntot = struct.unpack('i',f.read(4))[0] + print('extra! '+str(extra)) + + model = struct.unpack('i',f.read(4))[0] #model + nrun = struct.unpack('i',f.read(4))[0] #nrun + nk = struct.unpack('i',f.read(4))[0] #nk + print(f'ntot:{ntot}, model:{model}, nrun:{nrun}, nk:{nk}') + + #print(struct.unpack('i',f.read(4))) + # Readout second header: + #byte = f.read(4) # begin header block + #blocksize2 = struct.unpack('i', byte)[0] # header block size + #print(blocksize2) + time = struct.unpack('i', f.read(4))[0] + npairs = struct.unpack('i', f.read(4))[0] + ding2 = struct.unpack('i', f.read(4))[0] + ding3 = struct.unpack('i', f.read(4))[0] + print(f'time:{time} npairs {npairs} ding2{ding2} ding3{ding3}') + + + + + + + # print(blocksize1) + # if extra == 1: + # f.read(4) + # itime = itime + 1 + # # read the header for this time + # ntot = struct.unpack('i',f.read(4))[0] #ntot + # if ntot < 10 and itime == 0: + # # check for a nonsensical ntot value, + # # which is symptomatic of bizarre extra record padding that occurs on some + # # systems. if needed, include extra reads to deal with these. + # extra = 1 + # ntot = struct.unpack('i',f.read(4))[0] + # print('extra! '+str(extra)) + + # model = struct.unpack('i',f.read(4))[0] #model + # nrun = struct.unpack('i',f.read(4))[0] #nrun + # nk = struct.unpack('i',f.read(4))[0] #nk + + + + + + + + + quit() + # # while byte: + # blocksize1 = struct.unpack('i', byte)[0] # header block size + # print(blocksize1) + # if extra == 1: + # f.read(4) + # itime = itime + 1 + # # read the header for this time + # ntot = struct.unpack('i',f.read(4))[0] #ntot + # if ntot < 10 and itime == 0: + # # check for a nonsensical ntot value, + # # which is symptomatic of bizarre extra record padding that occurs on some + # # systems. if needed, include extra reads to deal with these. + # extra = 1 + # ntot = struct.unpack('i',f.read(4))[0] + # print('extra! '+str(extra)) + + # model = struct.unpack('i',f.read(4))[0] #model + # nrun = struct.unpack('i',f.read(4))[0] #nrun + # nk = struct.unpack('i',f.read(4))[0] #nk + + + + +def read_nbody6(f5, file, sev): + """Read in the nbody6 output file(s). + + Keyword arguments: + filename -- the OUT3 file generated by nbody6 + + """ + # open NBODY6 file + f = open(file,'r') + + # start looping over time and reading the nbody6 data. + # itime tracks the number of timesteps outputted. + itime = -1 + + # runs on some computers seem to generate extra bytes after the record length. + # 'extra' and its associated reads below take care of that. + extra = 0 + + byte = f.read(4) # begin header block + model = 0 + + while byte != "": + blocksize1 = struct.unpack('i',byte)[0] # header block size + if extra == 1: + f.read(4) + itime = itime + 1 + # read the header for this time + ntot = struct.unpack('i',f.read(4))[0] #ntot + if ntot < 10 and itime == 0: + # check for a nonsensical ntot value, + # which is symptomatic of bizarre extra record padding that occurs on some + # systems. if needed, include extra reads to deal with these. + extra = 1 + ntot = struct.unpack('i',f.read(4))[0] + print('extra! '+str(extra)) + + model = struct.unpack('i',f.read(4))[0] #model + nrun = struct.unpack('i',f.read(4))[0] #nrun + nk = struct.unpack('i',f.read(4))[0] #nk + + blocksize2 = struct.unpack('i',f.read(4))[0] #end header block size + if extra == 1: + f.read(4) + + # check for consistency + if blocksize1 != blocksize2: + print('header trouble! t = '+str(itime)+' '+str(blocksize1)+' '+str(blocksize2)) + sys.exit(1) + + # now read the star data + blocksize1 = struct.unpack('i',f.read(4))[0] #begin data block size + if extra == 1: + f.read(4) + + alist = [] + for i in range(nk): + alist.append(struct.unpack('f',f.read(4))[0]) #Sverre's 'as' + alist.append(ntot) + + stardata = np.zeros((ntot, 11)) + datalist=[] # masses + for i in range(ntot): + datalist.append(struct.unpack('f',f.read(4))[0]) + + stardata[:,0] = datalist + + datalistx=[] # positions + datalisty=[] + datalistz=[] + for i in range(ntot): + datalistx.append(struct.unpack('f',f.read(4))[0]) + datalisty.append(struct.unpack('f',f.read(4))[0]) + datalistz.append(struct.unpack('f',f.read(4))[0]) + + stardata[:,1] = datalistx + stardata[:,2] = datalisty + stardata[:,3] = datalistz + + datalistx=[] # velocities + datalisty=[] + datalistz=[] + + for i in range(ntot): + datalistx.append(struct.unpack('f',f.read(4))[0]) + datalisty.append(struct.unpack('f',f.read(4))[0]) + datalistz.append(struct.unpack('f',f.read(4))[0]) + + stardata[:,4] = datalistx + stardata[:,5] = datalisty + stardata[:,6] = datalistz + + datalist=[] # names + for i in range(ntot): + datalist.append(struct.unpack('i',f.read(4))[0]) + stardata[:,7] = datalist + + if (sev): + datalist=[] # kstar + for i in range(ntot): + datalist.append(struct.unpack('i',f.read(4))[0]) + stardata[:,8] = datalist + + datalist=[] # lum + for i in range(ntot): + datalist.append(struct.unpack('f',f.read(4))[0]) + stardata[:,9] = datalist + + datalist=[] # teff + for i in range(ntot): + datalist.append(struct.unpack('f',f.read(4))[0]) + stardata[:,10] = datalist + + blocksize2 = struct.unpack('i',f.read(4))[0] #end data block size + if extra == 1: + f.read(4) + + # check for consistency + if blocksize1 != blocksize2: + print('star data trouble! '+str(itime)) + sys.exit(3) + + splitarray = np.hsplit(stardata, [1,4,7,8,9,10]) + + # Output snapshot in hdf5 file + h5output(f5, alist, splitarray, model-1, sev) + + # next header blocksize for loop control + byte = f.read(4) # begin header block + + # close OUT3 and other files if present + f.close() + + +def h5output(f5, alist, splitarray, model, sev): + """output the nbody6 snapshot data in hdf5 format. Plots the first snapshot + just to make sure it's sensible looking. + + Keyword arguments: + outputfilename -- the name of the hdf5 file to create + alist -- header data from the nbody6 data. this is sverre's AS list. + splitarray -- the data that has been parsed from the nbody6 files + """ + + # Create model group + modgrp = f5.create_group("%05d"%model) + f5.attrs["nmod"]=model+1 # Number of models, updated everytime a snapshot is written + + # create groups for the "stars" and "cluster" data + stargrp = f5.create_group("%05d/stars"%model) + clustergrp = f5.create_group("%05d/cluster"%model) + + # Compute bound particles + nbound,mbound,vcom,bound,kinbound,potbound = compute_energies(splitarray[0][:,0],splitarray[1],splitarray[2], np.array(alist[6:9]),alist[1]) + + + # Assume the following for AS list: + # AS(1) = TTOT + # AS(2) = NBIN + # AS(3) = RBAR + # AS(4) = ZMBAR + # AS(5) = TSTAR + # AS(6) = VSTAR + # AS(7:9) = RDENS + # AS(10:12) = RG + # AS(13:15) = VG + # AS(16) = RC + # AS(17) = NC + + + # Populate the groups with data + massdset = stargrp.create_dataset('mass', data = alist[3]*splitarray[0][:,0],dtype='float32') + posdset = stargrp.create_dataset('pos', data = alist[2]*splitarray[1],dtype='float32') + veldset = stargrp.create_dataset('vel', data = alist[5]*splitarray[2],dtype='float32') + namedset = stargrp.create_dataset('id', data = splitarray[3][:,0],dtype='i') + if (sev): + kstardset = stargrp.create_dataset('kstar', data = splitarray[4][:,0],dtype='i') + lumdset = stargrp.create_dataset('lum', data = splitarray[5][:,0],dtype='float32') + teffdset = stargrp.create_dataset('teff', data = splitarray[6][:,0],dtype='float32') + bounddset = stargrp.create_dataset('bound', data = bound,dtype='bool') + + timedset = clustergrp.create_dataset('age', data = alist[0]*alist[4]) + nbindset = clustergrp.create_dataset('nbin', data = alist[1],dtype='i') + rdensdset = clustergrp.create_dataset('rdens',data = np.array(alist[6:9])*alist[2]) + vcomdset = clustergrp.create_dataset('vcom' ,data = np.array(vcom)*alist[5]) + rgdset = clustergrp.create_dataset('rg', data = np.array(alist[9:12])) + vgdset = clustergrp.create_dataset('vg', data = np.array(alist[12:15])) + rcdset = clustergrp.create_dataset('rcore',data = alist[2]*alist[15]) + + # Compute half-mass radii + rh = compute_rh(alist[3]*splitarray[0][:,0],alist[2]*splitarray[1], np.array(alist[6:9])*alist[2],splitarray[4][:,0],bound, sev) + rhndset = clustergrp.create_dataset('rhn', data = rh[0],dtype='float32') + rhn300dset = clustergrp.create_dataset('rhn300',data = rh[1],dtype='float32') + rhmdset = clustergrp.create_dataset('rhm', data = rh[2],dtype='float32') + + ncdset = clustergrp.create_dataset('ncore', data = alist[16],dtype='i') + + nbdset = clustergrp.create_dataset('nbound',data = nbound,dtype='i') + mbdset = clustergrp.create_dataset('mbound',data = mbound*alist[3],dtype='float32') + kinbdset = clustergrp.create_dataset('kinbound',data = kinbound,dtype='float32') + potbdset = clustergrp.create_dataset('potbound',data = potbound,dtype='float32') + + print(" T = %10.3f [NBODY] %10.3f [MYR]; M(bound) = %10.3f, rhn = %10.3f; rhm = %10.3f"%(alist[0],alist[0]*alist[4],mbound, rh[0], rh[2])) + + + + # Units information as attributes + massdset.attrs["unit"] = "[Msun]" + posdset.attrs["unit"] = "[pc] in guide centre reference frame" + veldset.attrs["unit"] = "[km/s] in guide centre reference frame" + + if (sev): + lumdset.attrs["unit"] = "[log10 Lsun]" + teffdset.attrs["unit"] = "[log10 Teff]" + + timedset.attrs["unit"] = "[Myr]" + rdensdset.attrs["unit"] = "[pc] in guide centre reference frame" + vcomdset.attrs["unit"] = "[km/s] in guide centre reference frame" + + rgdset.attrs["unit"] = "[kpc] in Galactic reference frame" + vgdset.attrs["unit"] = "[km/s] in Galactic reference frame" + + rcdset.attrs["unit"] = "[pc]" + mbdset.attrs["unit"] = "[Msun]" + + return() + + +def main(): + parser = argparse.ArgumentParser(description='Converts NBODY6++ output file to HDF5 format') + parser.add_argument('-f', dest='files', action="store", default='OUT3', help='NBODY6 files to convert [default="OUT3"]. delimited list input.') + parser.add_argument('-s', dest='sev', action="store_true", default=False, help='activate reading stellar evolution data [default=False]') + + args = parser.parse_args() + + # open up the hdf5 file + f5 = h5py.File('out.hdf5', 'w') + + # Loop over all the given binary + for file in args.files.split(): + print(f"Converting {file}") + read_nbody6pp(f5, file, args.sev) + + f5.close() + + +if __name__=='__main__': + main() + +# def main(): +# parser = argparse.ArgumentParser(description='Converts OUT3 data from NBODY6 to HDF5 format') +# parser.add_argument('-f',dest='files',action="store",default='OUT3',help='NBODY6 files to convert [default="OUT3"]') +# parser.add_argument('-s', dest='sev', action="store_true", default=False, help='activate reading stellar evolution data [default=False]') + +# args = parser.parse_args() + +# # open up the hdf5 file! +# f5 = h5py.File('out.hdf5','w') + +# # Loop over all NBODY6 OUT3 files +# for file in args.files.split(): +# print " File = ",file +# read_nbody6(f5, file, args.sev) + +# f5.close() \ No newline at end of file diff --git a/python_scripts_for_nbody6/test_input.py b/python_scripts_for_nbody6/test_input.py new file mode 100644 index 0000000..6448541 --- /dev/null +++ b/python_scripts_for_nbody6/test_input.py @@ -0,0 +1,28 @@ +from scipy.io import FortranFile +import struct + +fname = '/vol/ph/astro_code/dhendriks/work_dir/nbody6/conf.3_0' +f = FortranFile('/vol/ph/astro_code/dhendriks/work_dir/nbody6/conf.3_0', 'r') + +f.read_ints() + +# a = f.read_reals(dtype=float) +# print(a) + +# import numpy as np +# with open(fname,'rb') as f: +# for k in range(4): +# data = np.fromfile(f, dtype=np.float32, count = 2*3) +# print(np.reshape(data,(2,3))) + +# with open(fname, 'rb') as f: +# while True: +# raw = f.read(4) +# if len(raw)!=4: +# break # ignore the incomplete "record" if any +# record = struct.unpack("I", raw ) +# print(record) + +# with open(fname, 'rb') as f: +# for line in f: +# print(f.readline()) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6973aea --- /dev/null +++ b/requirements.txt @@ -0,0 +1,22 @@ +appdirs==1.4.3 +atomicwrites==1.3.0 +attrs==19.1.0 +cycler==0.10.0 +decorator==4.4.0 +h5py==2.9.0 +kiwisolver==1.1.0 +Mako==1.0.10 +MarkupSafe==1.1.1 +matplotlib==3.1.0 +more-itertools==7.0.0 +numpy==1.16.3 +pandas==0.24.2 +pluggy==0.11.0 +py==1.8.0 +pyparsing==2.4.0 +pytest==4.5.0 +python-dateutil==2.8.0 +pytools==2019.1.1 +pytz==2019.1 +six==1.12.0 +wcwidth==0.1.7 -- GitLab