Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F85578476
gmkgmov
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Sep 30, 02:09
Size
8 KB
Mime Type
text/x-python
Expires
Wed, Oct 2, 02:09 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21208627
Attached To
rPNBODY pNbody
gmkgmov
View Options
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
from
optparse
import
OptionParser
import
os
,
sys
import
glob
from
pNbody
import
*
from
pNbody.param
import
Params
def
parse_options
():
usage
=
"usage: %prog [options] file"
parser
=
OptionParser
(
usage
=
usage
)
parser
.
add_option
(
"-p"
,
action
=
"store"
,
dest
=
"parameterfile"
,
type
=
"string"
,
default
=
None
,
help
=
"parameterfile file"
,
metavar
=
" FILE"
)
parser
.
add_option
(
"-o"
,
action
=
"store"
,
dest
=
"outputfile"
,
type
=
"string"
,
default
=
'film.gmv'
,
help
=
"output file"
,
metavar
=
" FILE"
)
parser
.
add_option
(
"-d"
,
action
=
"store"
,
dest
=
"directory"
,
type
=
"string"
,
default
=
None
,
help
=
"directroy containing files"
,
metavar
=
" DIRECTORY"
)
parser
.
add_option
(
"--pio"
,
action
=
"store_true"
,
dest
=
"pio"
,
default
=
False
,
help
=
"parallele io"
,
metavar
=
" BOOL"
)
parser
.
add_option
(
"--mkfits"
,
action
=
"store_true"
,
dest
=
"mkfits"
,
default
=
True
,
help
=
"create fits outputs"
,
metavar
=
" BOOL"
)
parser
.
add_option
(
"--fitsdir"
,
action
=
"store"
,
dest
=
"fitsdir"
,
type
=
"string"
,
default
=
'fits'
,
help
=
"outputdirectory for fits files"
,
metavar
=
" DIRECTORY"
)
parser
.
add_option
(
"--shape"
,
action
=
"store"
,
dest
=
"shape"
,
type
=
"string"
,
default
=
None
,
help
=
"shape (x,y)"
,
metavar
=
" STRING"
)
(
options
,
args
)
=
parser
.
parse_args
()
files
=
args
return
files
,
options
def
InitParameters
(
nh
,
nw
):
params
=
[]
for
i
in
range
(
nh
*
nw
):
param
=
{}
# read default pNbody parameters
gparams
=
Params
(
PARAMETERFILE
,
None
)
# create new params
for
p
in
gparams
.
params
:
param
[
p
[
0
]]
=
p
[
3
]
# geometry parameters
#param['obs']=None
#param['x0']=None
#param['xp']=None
#param['alpha']=0
#param['view']='xy'
#param['size']=(150,150)
#param['mode']='m'
#param['filter_name'] = None
#param['filter_opts'] = None
#param['scale'] = 'log'
#param['mn'] = 0
#param['mx'] = 0
#param['cd'] = 0
#param['frsp'] = 0.
# additionnal default parameters
param
[
'id'
]
=
i
param
[
'tdir'
]
=
None
param
[
'pfile'
]
=
None
param
[
'components'
]
=
[
'all'
]
param
[
'ftype'
]
=
'gadget'
param
[
'time'
]
=
'nb.atime'
param
[
'exec'
]
=
None
param
[
'macro'
]
=
None
param
[
'select'
]
=
None
params
.
append
(
param
)
return
params
def
ReadNbodyParameters
(
paramname
):
'''
read param from a parameter Nbody file
'''
gparams
=
Params
(
paramname
,
None
)
param
=
{}
# create new params
for
p
in
gparams
.
params
:
param
[
p
[
0
]]
=
p
[
3
]
return
param
#######################################################################
#
# M A I N
#
#######################################################################
files
,
opt
=
parse_options
()
if
opt
.
parameterfile
==
None
:
print
"you must specify a parameter file"
sys
.
exit
()
if
not
os
.
path
.
exists
(
opt
.
parameterfile
):
print
"file
%s
does not exists"
%
opt
.
parameterfile
sys
.
exit
()
if
opt
.
mkfits
:
if
not
os
.
path
.
exists
(
opt
.
fitsdir
):
os
.
mkdir
(
opt
.
fitsdir
)
##############################
# read parameter file
##############################
execfile
(
opt
.
parameterfile
)
##############################
# create files
##############################
if
len
(
files
)
==
0
:
print
"no files defined, using tdir"
# check that all frame have tdir
for
param
in
params
:
if
param
[
'tdir'
]
==
None
:
print
"frame
%d
does not have 'tdir' defined "
%
param
[
'id'
]
sys
.
exit
()
# take the files from first parameters
directory
=
params
[
0
][
'tdir'
]
tfiles
=
glob
.
glob
(
os
.
path
.
join
(
directory
,
"*"
))
tfiles
.
sort
()
# construct files list
files
=
[]
for
tfile
in
tfiles
:
filename
=
os
.
path
.
basename
(
tfile
[:
-
6
])
file
=
os
.
path
.
join
(
opt
.
directory
,
filename
)
if
not
os
.
path
.
exists
(
file
):
print
"
%s
does not exists"
%
file
sys
.
exit
()
files
.
append
(
file
)
# check that all files have a correspondant in tdir
for
param
in
params
:
tfiles
=
glob
.
glob
(
os
.
path
.
join
(
directory
,
"*"
))
tfiles
.
sort
()
for
tfile
in
tfiles
:
filename
=
os
.
path
.
basename
(
tfile
[:
-
6
])
file
=
os
.
path
.
join
(
opt
.
directory
,
filename
)
if
not
os
.
path
.
exists
(
file
):
print
"
%s
(in param
%d
) does not exists"
%
(
param
[
'id'
],
file
)
sys
.
exit
()
###################################################################################
###################################################################################
##
## main loop over all files
##
###################################################################################
###################################################################################
ifile
=
-
1
itfile
=
-
1
# loop over all files
for
file
in
files
:
ifile
=
ifile
+
1
itfile
=
itfile
+
1
# loop over all sub-frames
for
param
in
params
:
# loop over all components
for
component
in
param
[
'components'
]:
if
component
[
0
]
==
'&'
:
extcomponent
=
True
rendering
=
string
.
split
(
component
,
"&"
)[
1
]
fname
=
string
.
split
(
component
,
"&"
)[
2
]
print
"reading "
,
fname
,
param
[
'id'
],
component
nb
=
Nbody
(
fname
,
ftype
=
param
[
'ftype'
],
pio
=
opt
.
pio
)
component
=
os
.
path
.
basename
(
fname
)
else
:
extcomponent
=
False
print
"reading "
,
file
,
param
[
'id'
],
component
nb
=
Nbody
(
file
,
ftype
=
param
[
'ftype'
],
pio
=
opt
.
pio
)
if
not
extcomponent
:
oldparam
=
param
newparam
=
None
##########################
# compute param from pfile
##########################
if
param
[
'pfile'
]
!=
None
:
if
not
os
.
path
.
isfile
(
param
[
'pfile'
]):
print
"parameter file
%s
does not exists(1)..."
%
(
param
[
'pfile'
])
sys
.
exit
()
newparam
=
ReadNbodyParameters
(
param
[
'pfile'
])
##########################
# compute param from tdir
##########################
if
param
[
'tdir'
]
!=
None
:
# find the right filename
tfile
=
os
.
path
.
join
(
param
[
'tdir'
],
os
.
path
.
basename
(
file
))
tfile
=
"
%s
.
%05d
"
%
(
tfile
,
itfile
)
if
not
os
.
path
.
isfile
(
tfile
):
itfile
=
0
tfile
=
os
.
path
.
join
(
param
[
'tdir'
],
os
.
path
.
basename
(
file
))
tfile
=
"
%s
.
%05d
"
%
(
tfile
,
itfile
)
if
not
os
.
path
.
isfile
(
tfile
):
print
"parameter file
%s
does not exists(2)..."
%
(
tfile
)
sys
.
exit
()
newparam
=
ReadNbodyParameters
(
tfile
)
# add usefull but values not incuded in Nbody parameters
if
newparam
!=
None
:
newparam
[
'id'
]
=
param
[
'id'
]
newparam
[
'pfile'
]
=
param
[
'pfile'
]
newparam
[
'tdir'
]
=
param
[
'tdir'
]
newparam
[
'components'
]
=
param
[
'components'
]
newparam
[
'ftype'
]
=
param
[
'ftype'
]
newparam
[
'time'
]
=
param
[
'time'
]
newparam
[
'exec'
]
=
param
[
'exec'
]
newparam
[
'macro'
]
=
param
[
'macro'
]
newparam
[
'select'
]
=
param
[
'select'
]
newparam
[
'rendering'
]
=
param
[
'rendering'
]
# replace
param
=
newparam
# use old params
param
[
'frsp'
]
=
oldparam
[
'frsp'
]
param
[
'filter_name'
]
=
oldparam
[
'filter_name'
]
param
[
'filter_opts'
]
=
oldparam
[
'filter_opts'
]
##########################
# apply all parameters
##########################
# select component
if
not
extcomponent
:
nb
=
nb
.
select
(
component
)
else
:
param
[
'rendering'
]
=
rendering
# set shape
if
opt
.
shape
==
None
:
param
[
'shape'
]
=
(
width
,
height
)
else
:
exec
(
"param['shape'] =
%s
"
%
(
opt
.
shape
))
# set time
exec
(
"nb.tnow =
%s
"
%
param
[
'time'
])
# exec
if
param
[
'exec'
]
!=
None
:
exec
(
param
[
'exec'
])
# macro
if
param
[
'macro'
]
!=
None
:
execfile
(
param
[
'macro'
])
# select
if
param
[
'select'
]
!=
None
:
nb
=
nb
.
select
(
param
[
'select'
])
# compute map
if
opt
.
mkfits
:
mat
=
nb
.
CombiMap
(
param
)
# save output
output
=
'
%04d
_
%04d
-
%s
.fits'
%
(
ifile
,
param
[
'id'
],
component
)
output
=
os
.
path
.
join
(
opt
.
fitsdir
,
output
)
if
os
.
path
.
exists
(
output
):
os
.
remove
(
output
)
header
=
[(
'TIME'
,
nb
.
tnow
,
'snapshot time'
)]
io
.
WriteFits
(
transpose
(
mat
),
output
,
extraHeader
=
header
)
Event Timeline
Log In to Comment