Maximum masses

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'