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