8.2. Maximum masses#
In this tutorial, you will learn how to extract the maximum masses collected in the toolkit. They have two origins: radio-astronomy, that set lower boundary on the neutron star maximum mass, and GW parameter estimation, that provide information on the neutron star’s masses before merging.
Import the libraries that will be employed in this tutorial.
# Import numpy
import numpy as np
# Import matplotlib
import matplotlib.pyplot as plt
# Import nucleardatapy package
import nucleardatapy as nuda
You can simply print out the properties of the nuda’s function that we will use:
# Explore the nucleardatapy module to find the correct attribute
print(dir(nuda.astro.setupMasses))
print(dir(nuda.astro.setupMup))
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'print_latex', 'print_output']
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'print_latex', 'print_output']
Complete list of available sources from radio observations:
sources, sources_small = nuda.astro.masses_sources( )
print('sources:',sources)
sources: ['J1614–2230', 'J0348+0432', 'J2215+5135', 'J0740+6620', 'J1600+3053']
List all existing observations (obss
) associated to a given source:
source = 'J1614–2230'
obss = nuda.astro.masses_obss( source = source )
print(f'source: {source}, obss: {obss}')
source: J1614–2230, obss: [1, 2, 3, 4, 5]
print outputs for all sources and observations:
for source in sources:
obss = nuda.astro.masses_obss( source = source )
print(f'source: {source}, obss: {obss}')
for obs in obss:
obs = nuda.astro.setupMasses( source = source, obs = obs )
obs.print_output()
obsav = nuda.astro.setupMassesAverage( source = source )
obsav.print_output()
source: J1614–2230, obss: [1, 2, 3, 4, 5]
- Print output:
source: J1614–2230
obs: 1
mass: 1.97
sigma(mass): 0.04 0.04
latexCite: PDemorest:2010
ref: P. Demorest, T. Pennucci, S. Ransom, M. Roberts, J. Hessels, Nature 467, 1081 (2010)
label: J1614–2230 Demorest 2010
note: write here notes about this observation.
- Print output:
source: J1614–2230
obs: 2
mass: 1.928
sigma(mass): 0.017 0.017
latexCite: EFonseca:2016
ref: E. Fonseca, et al., ApJ 832(2), 167 (2016)
label: J1614–2230 Fonseca 2016
note: write here notes about this observation.
- Print output:
source: J1614–2230
obs: 3
mass: 1.908
sigma(mass): 0.016 0.016
latexCite: ZArzoumanian:2018
ref: Z. Arzoumanian, et al., ApJ Suppl. 235(2), 37 (2018)
label: J1614–2230 Arzoumanian 2018
note: write here notes about this observation.
- Print output:
source: J1614–2230
obs: 4
mass: 1.922
sigma(mass): 0.015 0.015
latexCite: MdFAlam:2021
ref: M. Alam, Z. Arzoumanian, P. Baker, H. Blumer et al., ApJ Suppl. 252(1) (2021)
label: J1614–2230 Alam 2021
note: write here notes about this observation.
- Print output:
source: J1614–2230
obs: 5
mass: 1.937
sigma(mass): 0.014 0.014
latexCite: GAgazie:2023
ref: G. Agazie, M.F. Alam, A. Anumarlapudi, A.M. Archibald et al., ApJ Lett. 951, L9 (2023)
label: J1614–2230 Agazie 2023
note: write here notes about this observation.
- No output for source J1614–2230 (average). To get output, write 'verb_output = True' in env.py.
source: J0348+0432, obss: [1]
- Print output:
source: J0348+0432
obs: 1
mass: 2.01
sigma(mass): 0.04 0.04
latexCite: JAntoniadis:2013
ref: J. Antoniadis, P.C. Freire, N. Wex, T.M. Tauris, et al., Science 340, 6131 (2013)
label: J0348+0432 Antoniadis 2013
note: write here notes about this observation.
- No output for source J0348+0432 (average). To get output, write 'verb_output = True' in env.py.
source: J2215+5135, obss: [1]
- Print output:
source: J2215+5135
obs: 1
mass: 2.27
sigma(mass): 0.15 0.15
latexCite: MLinares:2018
ref: M. Linares, T. Shahbaz, J. Casares, ApJ 859, 54 (2018)
label: J2215+5135 Linares 2018
note: write here notes about this observation.
- No output for source J2215+5135 (average). To get output, write 'verb_output = True' in env.py.
source: J0740+6620, obss: [1, 2, 3]
- Print output:
source: J0740+6620
obs: 1
mass: 2.14
sigma(mass): 0.1 0.09
latexCite: HTCromartie:2019
ref: H.T. Cromartie, E. Fonseca, S.M. Ransom, P.B. Demorest, et al., Nature Astron. 4(1), 72 (2019)
label: J0740+6620 Cromartie 2019
note: write here notes about this observation.
- Print output:
source: J0740+6620
obs: 2
mass: 2.08
sigma(mass): 0.07 0.07
latexCite: EFonseca:2021
ref: E. Fonseca, H.T. Cromartie, T.T. Pennucci, P.S. Ray, 915, L12 (2021)
label: J0740+6620 Fonseca 2021
note: write here notes about this observation.
- Print output:
source: J0740+6620
obs: 3
mass: 1.99
sigma(mass): 0.07 0.07
latexCite: GAgazie:2023
ref: G. Agazie, M.F. Alam, A. Anumarlapudi, A.M. Archibald et al., ApJ Lett. 951, L9 (2023)
label: J0740+6620 Agazie 2023
note: write here notes about this observation.
- No output for source J0740+6620 (average). To get output, write 'verb_output = True' in env.py.
source: J1600+3053, obss: [1]
- Print output:
source: J1600+3053
obs: 1
mass: 2.5
sigma(mass): 0.9 0.7
latexCite: ZArzoumanian:2018
ref: Z. Arzoumanian, et al., ApJ Suppl. 235(2), 37 (2018)
label: J1600+3053 Arzoumanian 2018
note: write here notes about this observation.
- No output for source J1600+3053 (average). To get output, write 'verb_output = True' in env.py.
Figure:
nuda.fig.astro_setupMasses_fig( None, sources )
Plot name: None
source: J1614–2230, obss: [1, 2, 3, 4, 5]
- table: J1614–2230 & 1 & $1.97^{0.04}_{-0.04}$ & \cite{PDemorest:2010} \\\\
- table: J1614–2230 & 2 & $1.93^{0.017}_{-0.017}$ & \cite{EFonseca:2016} \\\\
- table: J1614–2230 & 3 & $1.91^{0.016}_{-0.016}$ & \cite{ZArzoumanian:2018} \\\\
- table: J1614–2230 & 4 & $1.92^{0.015}_{-0.015}$ & \cite{MdFAlam:2021} \\\\
- table: J1614–2230 & 5 & $1.94^{0.014}_{-0.014}$ & \cite{GAgazie:2023} \\\\
- table: J1614–2230 & av & $1.93\pm0.031$ \\\\
source: J0348+0432, obss: [1]
- table: J0348+0432 & 1 & $2.01^{0.04}_{-0.04}$ & \cite{JAntoniadis:2013} \\\\
- table: J0348+0432 & av & $2.01\pm0.039$ \\\\
source: J2215+5135, obss: [1]
- table: J2215+5135 & 1 & $2.27^{0.15}_{-0.15}$ & \cite{MLinares:2018} \\\\
- table: J2215+5135 & av & $2.27\pm0.148$ \\\\
source: J0740+6620, obss: [1, 2, 3]
- table: J0740+6620 & 1 & $2.14^{0.1}_{-0.09}$ & \cite{HTCromartie:2019} \\\\
- table: J0740+6620 & 2 & $2.08^{0.07}_{-0.07}$ & \cite{EFonseca:2021} \\\\
- table: J0740+6620 & 3 & $1.99^{0.07}_{-0.07}$ & \cite{GAgazie:2023} \\\\
- table: J0740+6620 & av & $2.07\pm0.101$ \\\\
source: J1600+3053, obss: [1]
- table: J1600+3053 & 1 & $2.50^{0.9}_{-0.7}$ & \cite{ZArzoumanian:2018} \\\\
- table: J1600+3053 & av & $2.58\pm0.792$ \\\\
Complete list of available sources from GW parameter estimation:
sources, sources_small = nuda.astro.mup_sources( )
print('sources:',sources)
sources: ['GW170817', 'GW190814']
List all existing hypotheses (hyps
) associated to a given source:
for source in sources:
hyps = nuda.astro.mup_hyps( source = source )
print(f'source: {source}, hyps: {hyps}')
source: GW170817, hyps: [1, 2, 3, 4]
source: GW190814, hyps: [1]
print output for all sources and hypotheses:
for source in sources:
hyps = nuda.astro.mup_hyps( source = source )
print(f'source: {source}, hyps: {hyps}')
for hyp in hyps:
mup = nuda.astro.setupMup( source = source, hyp = hyp )
mup.print_output()
mupav = nuda.astro.setupMupAverage( source = source )
mupav.print_output()
source: GW170817, hyps: [1, 2, 3, 4]
- Print output:
source: GW170817
hyp: 1
mup: 2.74
sigma(mup): 0.04 0.01
latexCite: BPAbbott:2017
ref: B.P. Abbott, R. Abbott, T.D. Abbott, et al., PRL 119, 161101 (2017)
label: GW170817 low-spin Abbott 2017
note: write here notes about this observation.
- Print output:
source: GW170817
hyp: 2
mup: 2.82
sigma(mup): 0.47 0.09
latexCite: BPAbbott:2017
ref: B.P. Abbott, R. Abbott, T.D. Abbott, et al., PRL 119, 161101 (2017)
label: GW170817 high-spin Abbott 2017
note: write here notes about this observation.
- Print output:
source: GW170817
hyp: 3
mup: 2.73
sigma(mup): 0.04 0.01
latexCite: BPAbbott:2019
ref: B.P. Abbott, R. Abbott, T.D. Abbott, F. Acernese, et al., PRX 9, 011001 (2019)
label: GW170817 low-spin Abbott 2019
note: write here notes about this observation.
- Print output:
source: GW170817
hyp: 4
mup: 2.77
sigma(mup): 0.22 0.05
latexCite: BPAbbott:2019
ref: B.P. Abbott, R. Abbott, T.D. Abbott, F. Acernese, et al., PRX 9, 011001 (2019)
label: GW170817 high-spin Abbott 2019
note: write here notes about this observation.
- No output for source GW170817 (average). To get output, write 'verb_output = True' in env.py.
source: GW190814, hyps: [1]
- Print output:
source: GW190814
hyp: 1
mup: 2.59
sigma(mup): 0.08 0.09
latexCite: BPAbbott:2020
ref: B.P. Abbott, R. Abbott, T.D. Abbott, et al., ApJL 892, L3 (2020)
label: GW190814 Abbott 2020
note: write here notes about this observation.
- No output for source GW190814 (average). To get output, write 'verb_output = True' in env.py.
Figure:
nuda.plot.astro_setupMup_fig( None, sources )
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[10], line 1
----> 1 nuda.plot.astro_setupMup_fig( None, sources )
AttributeError: module 'nucleardatapy' has no attribute 'plot'