mirror of
https://github.com/Richard-Sti/csiborgtools.git
synced 2024-12-22 22:48:02 +00:00
add ascii writing (#12)
This commit is contained in:
parent
469f4988fa
commit
ca45fbd5d9
2 changed files with 47 additions and 2 deletions
|
@ -16,4 +16,4 @@
|
|||
from .readsim import (CSiBORGPaths, ParticleReader, read_mmain, get_positions) # noqa
|
||||
from .make_cat import (HaloCatalogue, CombinedHaloCatalogue) # noqa
|
||||
from .readobs import (PlanckClusters, MCXCClusters, TwoMPPGalaxies, TwoMPPGroups) # noqa
|
||||
from .outsim import (dump_split, combine_splits) # noqa
|
||||
from .outsim import (dump_split, combine_splits, make_ascii_powmes) # noqa
|
||||
|
|
|
@ -18,9 +18,11 @@ I/O functions for analysing the CSiBORG realisations.
|
|||
|
||||
|
||||
import numpy
|
||||
from os.path import join
|
||||
from os.path import (join, dirname, basename, isfile)
|
||||
from os import remove
|
||||
from tqdm import trange
|
||||
from astropy.io import ascii
|
||||
from astropy.table import Table
|
||||
|
||||
I64 = numpy.int64
|
||||
F64 = numpy.float64
|
||||
|
@ -120,3 +122,46 @@ def combine_splits(n_splits, part_reader, cols_add, remove_splits=False,
|
|||
remove(fnamesplit)
|
||||
|
||||
return out
|
||||
|
||||
|
||||
def make_ascii_powmes(particles, fout, verbose=True):
|
||||
"""
|
||||
Write an ASCII file with appropriate formatting for POWMES.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
particles : structured array
|
||||
Array of particles.
|
||||
fout : str
|
||||
File path to store the ASCII file.
|
||||
verbose : bool, optional
|
||||
Verbosity flag. By default `True`.
|
||||
|
||||
Returns
|
||||
-------
|
||||
None
|
||||
"""
|
||||
out = Table()
|
||||
for p in ('x', 'y', 'z', 'M'):
|
||||
out[p] = particles[p]
|
||||
# If fout exists, remove
|
||||
if isfile(fout):
|
||||
remove(fout)
|
||||
|
||||
# Write the temporaty file
|
||||
ftemp = join(dirname(fout), "_" + basename(fout))
|
||||
if verbose:
|
||||
print("Writing temporary file `{}`...".format(ftemp))
|
||||
ascii.write(out, ftemp, overwrite=True, delimiter=",", fast_writer=True)
|
||||
|
||||
# Write to the first line the number of particles
|
||||
if verbose:
|
||||
print("Writing the full file `{}`...".format(fout))
|
||||
with open(ftemp, 'r') as fread, open(fout, 'w') as fwrite:
|
||||
fwrite.write(str(particles.size) + '\n')
|
||||
for i, line in enumerate(fread):
|
||||
if i == 0:
|
||||
continue
|
||||
fwrite.write(line)
|
||||
|
||||
remove(ftemp)
|
||||
|
|
Loading…
Reference in a new issue