Coder Social home page Coder Social logo

chemapalencia / m_smile Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 212 KB

Code to provide approximate magnification probability distributions under microlensing by compact objects such as stars or PBHs of strongly lensed stars.

License: MIT License

Python 100.00%
dark-matter gravitational-lensing microlensing primordial-black-holes strong-lensing high-redshift-stars

m_smile's Introduction

Magnification Statistics of Micro-Lensing (M_SMiLe)

This repository contains code that computes an approximation of the probability of magnification for a lens system consisting of microlensing by compact objects within a galaxy cluster. The code specifically focuses on the scenario where the galaxy cluster is strongly lensing a background galaxy, and the compact objects, such as stars, are sensitive to this microlensing effect. The microlenses responsible for this effect are stars and stellar remnants, but also exotic objects such as compact dark matter candidates (PBHs, axion mini-halos...) can contribute to this effect.

More information about this code can be obtained from the paper: Statistics of magnification for extremely lensed high redshift stars

Input parameters

This code generates the magnification probability for a system with the desired input parameters, these are:

$z_{\rm s}$: Redshift of the source plane.

$z_{\rm d}$: Redshift of the lens plane. These two combined give, assuming an standard $\Lambda\rm{CDM}$ cosmology, the critical surface mass density, $\Sigma_{\rm crit}$, of the system.

$\mu_{\rm r}$: Radial macro-magnification of the strongly lensed images of the source.

$\mu_{\rm t}$: Tangential macro-magnification of the strongly lensed images of the source. Can be either positive or negative.

$\Sigma_{\ast}$: Surface mass density of microlenses. The product with $\left|\mu_{\rm t}\right|$ gives the effective surface mass density, $\Sigma_{\rm eff}$, that determines the model used to compute the magnification probability.

$\mu_1$: Lower limit to compute the magnification probability.

$\mu_2$: Upper limit to compute the magnification probability.

Outputs

The magnification probability values at different magnification bins are saved to a file of the desired extension, as a two-column .txt file, as a fits table, or as an hdf5 group with two data sets.

In addition, users have the option to generate a plot of the magnification probability curves saved as a .pdf file.

Installation

To use this code you need Python. This code has been written and tested with Python 3.9 but older versions should work.

To install and use this code, follow the steps below:

  1. Starting the terminal
  2. Clone the repository:
$ https://github.com/ChemaPalencia/M_SMiLe.git
  1. Change into the project directory:
$ cd M_SMiLe
  1. Install the required dependencies. It is recommended to set up a virtual environment before installing the dependencies to avoid conflicts with other Python packages:
$ pip install -r requirements.txt

or

$ !conda install --file requirements.txt

Usage

This code can be used in two independent ways:

  • Via terminal.

This code can work as a black box that takes the necessary inputs and generated different files with the desire input.

A detailed description of all the parameters and its effects can be obatined trough:

$ python M_SMiLe.py -h
usage: M-SMiLe.py [-h] [--mu1 mu1] [--mu2 mu2] [--dir [DIR]] [--plot plot]
              [--save save] [--extension extension]
              mu_t mu_r sigma_star zd zs

Given a set of parameters regarding an extragalactic microlensing scheme, this
program computes the probability of magnification in a given range.
    
positional arguments:
  mu_t                  Value of the tangential macro-magnification.
  mu_r                  Value of the radial macro-magnification.
  sigma_star            Surface mass density of microlenses [Msun/pc2].
  zd                    Redshift at the lens plane (cluster).
  zs                    Redshift at the source plane.

optional arguments:
  -h, --help            show this help message and exit
  --mu1 mu1             Minimum magnification to display the pdf.
  --mu2 mu2             Maximum magnification to display the pdf.
  --dir [DIR]           Directory where the results will be stored.
  --plot plot           If "True", plot and save the pdf.
  --save save           If "True", save the pdf in a file.
  --extension extension
                        If save, extension in which the data is saved (txt,
                        fits, h5).
    
Contact: [email protected] / [email protected]

Usage example:

$ python M_SMiLe.py -600 2 5 1 1.7 --dir /foo/bar/test/ --save False --mu2 1000
  • As a python class.

Any python program can import the class microlenses from M_SMiLe.py.

Once we have imported the class we can create and instance of an object and call its methods to save the data in different files, generate plots, or directly get numpy arrays with the value of the magnification probability.

# Import the microlenses class from M_SMiLe.py
from M_SMiLe import microlenses

# Create an object of the class microlenses with the desired inputs
microlens = microlenses(mu_t=200, mu_r=4, sigma_star=12.4, zs=1.3, zd=0.7, mu1=1e-3, mu2=1e5)

# Get magnification probability per logaritmic bin
pdf, log_mu = microlens.get_pdf()

# Save data in a file (h5, txt, fits). Can choose another path.
microlens.save_data(extension='fits')

# Save a plot.
microlens.plot(save_pic=True)

A detailed example of some of the capabilities of the code is shown in the script example.py.

Output examples

Neg_parity_High_sigma.pdf

Neg_parity_Low_sigma.pdf

Pos_parity_High_sigma.pdf

Pos_parity_Low_sigma.pdf

License

This project is licensed under the MIT License. Feel free to use and modify the code according to the terms specified in the license.

Citation

If you use the M_SMiLe code, please tell us and cite its release paper Statistics of magnification for extremely lensed high redshift stars as

Palencia, J. M., Diego, J. M., Kavanagh, B. J., & Martinez, J. 2023, arXiv eprints, arXiv:2307.09505. https://arxiv.org/abs/2307.09505

The corresponding bibtex is:

@ARTICLE{2023arXiv230709505P,
       author = {{Palencia}, J.~M. and {Diego}, J.~M. and {Kavanagh}, B.~J. and {Martinez}, J.},
        title = "{Statistics of magnification for extremely lensed high redshift stars}",
      journal = {arXiv e-prints},
     keywords = {Astrophysics - Cosmology and Nongalactic Astrophysics, Astrophysics - Astrophysics of Galaxies, High Energy Physics - Phenomenology},
         year = 2023,
        month = jul,
          eid = {arXiv:2307.09505},
        pages = {arXiv:2307.09505},
archivePrefix = {arXiv},
       eprint = {2307.09505},
 primaryClass = {astro-ph.CO},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2023arXiv230709505P},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Contact

If you have any questions or inquiries regarding this code or its usage, please contact [email protected] or [email protected]

We hope this code proves to be useful in your research and exploration of magnification probability of high redshift stars by galaxy clusters. Happy computing!

m_smile's People

Contributors

chemapalencia avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.