Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F65906973
plot_zero_set_3.py
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
Fri, Jun 7, 00:27
Size
6 KB
Mime Type
text/x-python
Expires
Sun, Jun 9, 00:27 (2 d)
Engine
blob
Format
Raw Data
Handle
18144435
Attached To
R6746 RationalROMPy
plot_zero_set_3.py
View Options
import
warnings
from
copy
import
deepcopy
as
copy
import
numpy
as
np
from
matplotlib
import
pyplot
as
plt
def
plotZeroSet3
(
murange
,
murangeEff
,
approx
,
mu0
,
nSamples
=
200
,
marginal
=
[
None
,
None
,
.
05
],
exps
=
[
2.
,
1.
,
1.
],
clip
=
-
1
,
imagTol
=
1e-8
):
mNone
=
[
i
for
i
,
m
in
enumerate
(
marginal
)
if
m
is
None
]
nNone
=
len
(
mNone
)
if
nNone
not
in
[
1
,
2
,
3
]:
raise
if
nNone
==
1
:
exp
=
exps
[
mNone
[
0
]]
if
hasattr
(
approx
,
"mus"
):
mu2x
=
approx
.
mus
(
mNone
[
0
])
**
exp
else
:
mu2x
=
mu0
[
0
]
**
exp
murangeExp
=
[[
murange
[
0
][
mNone
[
0
]]
**
exp
],
[
murange
[
1
][
mNone
[
0
]]
**
exp
]]
mu1
=
np
.
linspace
(
murangeEff
[
0
][
mNone
[
0
]]
**
exp
,
murangeEff
[
1
][
mNone
[
0
]]
**
exp
,
nSamples
)
mu1s
=
np
.
power
(
mu1
,
1.
/
exp
)
mus
=
[]
mBase
=
copy
(
marginal
)
for
m1
in
mu1s
:
mBase
[
mNone
[
0
]]
=
m1
mus
+=
[
copy
(
mBase
)]
mu1
=
np
.
real
(
mu1
)
Z
=
approx
.
trainedModel
.
getQVal
(
mus
)
Zabs
=
np
.
abs
(
Z
)
Zmin
,
Zmax
=
np
.
min
(
Zabs
),
np
.
max
(
Zabs
)
plt
.
figure
(
figsize
=
(
15
,
7
))
plt
.
jet
()
plt
.
semilogy
(
mu1
,
Zabs
)
for
l_
in
approx
.
trainedModel
.
getPoles
(
marginal
):
plt
.
plot
([
np
.
real
(
l_
**
exp
)]
*
2
,
[
Zmin
,
Zmax
],
'b--'
)
plt
.
plot
(
mu2x
,
[
Zmax
]
*
len
(
mu2x
),
'kx'
)
plt
.
plot
([
murangeExp
[
0
][
0
]]
*
2
,
[
Zmin
,
Zmax
],
'm:'
)
plt
.
plot
([
murangeExp
[
1
][
0
]]
*
2
,
[
Zmin
,
Zmax
],
'm:'
)
plt
.
xlim
(
mu1
[
0
],
mu1
[
-
1
])
plt
.
title
(
"|Q(mu)|"
)
plt
.
grid
()
plt
.
show
()
return
mus
,
Z
if
nNone
==
2
:
exps
=
[
exps
[
m
]
for
m
in
mNone
]
if
hasattr
(
approx
,
"mus"
):
mu2x
=
approx
.
mus
(
mNone
[
0
])
**
exps
[
0
]
mu2y
=
approx
.
mus
(
mNone
[
1
])
**
exps
[
1
]
else
:
mu2x
,
mu2y
=
mu0
[
mNone
[
0
]]
**
exps
[
0
],
mu0
[
mNone
[
1
]]
**
exps
[
1
]
murangeExp
=
[[
murange
[
0
][
mNone
[
0
]]
**
exps
[
0
],
murange
[
0
][
mNone
[
1
]]
**
exps
[
1
]],
[
murange
[
1
][
mNone
[
0
]]
**
exps
[
0
],
murange
[
1
][
mNone
[
1
]]
**
exps
[
1
]]]
mu1
=
np
.
linspace
(
murangeEff
[
0
][
mNone
[
0
]]
**
exps
[
0
],
murangeEff
[
1
][
mNone
[
0
]]
**
exps
[
0
],
nSamples
)
mu2
=
np
.
linspace
(
murangeEff
[
0
][
mNone
[
1
]]
**
exps
[
1
],
murangeEff
[
1
][
mNone
[
1
]]
**
exps
[
1
],
nSamples
)
mu1s
=
np
.
power
(
mu1
,
1.
/
exps
[
0
])
mu2s
=
np
.
power
(
mu2
,
1.
/
exps
[
1
])
Mu1
,
Mu2
=
np
.
meshgrid
(
np
.
real
(
mu1
),
np
.
real
(
mu2
))
mus
=
[]
mBase
=
copy
(
marginal
)
for
m2
in
mu2s
:
mBase
[
mNone
[
1
]]
=
m2
for
m1
in
mu1s
:
mBase
[
mNone
[
0
]]
=
m1
mus
+=
[
copy
(
mBase
)]
Z
=
approx
.
trainedModel
.
getQVal
(
mus
)
.
reshape
(
Mu1
.
shape
)
Zabs
=
np
.
log10
(
np
.
abs
(
Z
))
Zabsmin
,
Zabsmax
=
np
.
min
(
Zabs
),
np
.
max
(
Zabs
)
if
clip
>
0
:
Zabsmin
+=
clip
*
(
Zabsmax
-
Zabsmin
)
cmap
=
plt
.
cm
.
bone_r
else
:
cmap
=
plt
.
cm
.
jet
warnings
.
simplefilter
(
"ignore"
,
category
=
UserWarning
)
plt
.
figure
(
figsize
=
(
15
,
7
))
plt
.
jet
()
p
=
plt
.
contourf
(
Mu1
,
Mu2
,
Zabs
,
cmap
=
cmap
,
levels
=
np
.
linspace
(
Zabsmin
,
Zabsmax
,
50
))
if
clip
>
0
:
plt
.
contour
(
Mu1
,
Mu2
,
Zabs
,
[
Zabsmin
])
plt
.
contour
(
Mu1
,
Mu2
,
np
.
real
(
Z
),
[
0.
],
linestyles
=
'dashed'
)
plt
.
contour
(
Mu1
,
Mu2
,
np
.
imag
(
Z
),
[
0.
],
linewidths
=
1
,
linestyles
=
'dotted'
)
plt
.
plot
(
mu2x
,
mu2y
,
'kx'
)
plt
.
plot
([
murangeExp
[
0
][
0
]]
*
2
,
[
murangeExp
[
0
][
1
],
murangeExp
[
1
][
1
]],
'm:'
)
plt
.
plot
([
murangeExp
[
0
][
0
],
murangeExp
[
1
][
0
]],
[
murangeExp
[
1
][
1
]]
*
2
,
'm:'
)
plt
.
plot
([
murangeExp
[
1
][
0
]]
*
2
,
[
murangeExp
[
1
][
1
],
murangeExp
[
0
][
1
]],
'm:'
)
plt
.
plot
([
murangeExp
[
1
][
0
],
murangeExp
[
0
][
0
]],
[
murangeExp
[
0
][
1
]]
*
2
,
'm:'
)
plt
.
colorbar
(
p
)
plt
.
title
(
"log10|Q(mu)|"
)
plt
.
grid
()
plt
.
show
()
return
mus
,
Z
if
nNone
==
3
:
exps
=
[
exps
[
m
]
for
m
in
mNone
]
if
hasattr
(
approx
,
"mus"
):
mu2x
=
approx
.
mus
(
mNone
[
0
])
**
exps
[
0
]
mu2y
=
approx
.
mus
(
mNone
[
1
])
**
exps
[
1
]
mu2z
=
approx
.
mus
(
mNone
[
2
])
**
exps
[
2
]
else
:
mu2x
=
mu0
[
mNone
[
0
]]
**
exps
[
0
]
mu2y
=
mu0
[
mNone
[
1
]]
**
exps
[
1
]
mu2z
=
mu0
[
mNone
[
2
]]
**
exps
[
2
]
murangeExp
=
[[
murange
[
0
][
mNone
[
0
]]
**
exps
[
0
],
murange
[
0
][
mNone
[
1
]]
**
exps
[
1
],
murange
[
0
][
mNone
[
2
]]
**
exps
[
2
]],
[
murange
[
1
][
mNone
[
0
]]
**
exps
[
0
],
murange
[
1
][
mNone
[
1
]]
**
exps
[
1
],
murange
[
1
][
mNone
[
2
]]
**
exps
[
2
]]]
mu1
=
np
.
linspace
(
murangeEff
[
0
][
mNone
[
0
]]
**
exps
[
0
],
murangeEff
[
1
][
mNone
[
0
]]
**
exps
[
0
],
nSamples
)
mu2
=
np
.
linspace
(
murangeEff
[
0
][
mNone
[
1
]]
**
exps
[
1
],
murangeEff
[
1
][
mNone
[
1
]]
**
exps
[
1
],
nSamples
)
mu3
=
np
.
linspace
(
murangeEff
[
0
][
mNone
[
2
]]
**
exps
[
2
],
murangeEff
[
1
][
mNone
[
2
]]
**
exps
[
2
],
nSamples
)
mu1s
=
np
.
power
(
mu1
,
1.
/
exps
[
0
])
mu2s
=
np
.
power
(
mu2
,
1.
/
exps
[
1
])
mu3s
=
np
.
power
(
mu3
,
1.
/
exps
[
2
])
Mu1
,
Mu2
,
Mu3
=
np
.
meshgrid
(
np
.
real
(
mu1
),
np
.
real
(
mu2
),
np
.
real
(
mu3
),
indexing
=
'ij'
)
mus
=
[]
mBase
=
copy
(
marginal
)
for
m1
in
mu1s
:
mBase
[
mNone
[
0
]]
=
m1
for
m2
in
mu2s
:
mBase
[
mNone
[
1
]]
=
m2
for
m3
in
mu3s
:
mBase
[
mNone
[
2
]]
=
m3
mus
+=
[
copy
(
mBase
)]
Z
=
approx
.
trainedModel
.
getQVal
(
mus
)
.
reshape
(
Mu1
.
shape
)
pts
=
[]
for
jdir
in
range
(
len
(
Mu3
)):
z
=
Mu3
[
0
,
0
,
jdir
]
xis
,
yis
,
fis
=
Mu1
[:,
:,
jdir
],
Mu2
[:,
:,
jdir
],
Z
[:,
:,
jdir
]
plt
.
figure
()
CS
=
plt
.
contour
(
xis
,
yis
,
np
.
real
(
fis
),
levels
=
[
0.
])
plt
.
close
()
for
i
,
CSc
in
enumerate
(
CS
.
allsegs
):
if
np
.
isclose
(
CS
.
cvalues
[
i
],
0.
):
for
j
,
CScj
in
enumerate
(
CSc
):
for
k
in
range
(
len
(
CScj
)):
pts
+=
[[
CScj
[
k
,
0
],
CScj
[
k
,
1
],
z
]]
pts
+=
[[
np
.
nan
]
*
3
]
pts
=
np
.
array
(
pts
)
if
np
.
size
(
pts
)
>
0
:
from
mpl_toolkits.mplot3d
import
Axes3D
fig
=
plt
.
figure
(
figsize
=
(
8
,
6
))
ax
=
Axes3D
(
fig
)
ax
.
plot
(
pts
[:,
0
],
pts
[:,
1
],
pts
[:,
2
],
'k-'
)
ax
.
scatter
(
mu2x
,
mu2y
,
mu2z
,
'.'
)
ax
.
set_xlim
(
murangeExp
[
0
][
0
],
murangeExp
[
1
][
0
])
ax
.
set_ylim
(
murangeExp
[
0
][
1
],
murangeExp
[
1
][
1
])
ax
.
set_zlim
(
murangeExp
[
0
][
2
],
murangeExp
[
1
][
2
])
plt
.
show
()
plt
.
close
()
return
pts
Event Timeline
Log In to Comment