Giter Club home page Giter Club logo

astropaint's People

Contributors

arfon avatar dependabot[bot] avatar maamari avatar s-ksm avatar syasini avatar zpace avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

astropaint's Issues

cut mask (experiment footprint) based on input keyword

Currently, the canvas.cut_mask() method takes in the healpix map of an experiment footprint. It would be nice to allow the user to apply such cuts using experiment footprints. For example

canvas.cut_mask("CMB-S4", inplace=True) 
canvas.cut_mask("DESI", inplace=True) 

would limit the catalog to the common footprint between S4 and DESI.

TODO: Add masks from cmb x galaxy web app to the data directory.

Add tSZ to Battaglia16

Add the tSZ/y parameter profiles to Battaglia16.py.

Methods are already available in python (courtesy of Emmanuel Schaan) and just need to be added to the module in s structured manner.

Leave a comment for further clarification on this.

scipy requirement

I'm just wondering if there is for specifying such an old version of scipy?

scipy==1.3.0

This scipy release appears to be over a year old, and from some minor experimentation locally AstroPaint works perfectly with later versions of scipy (even the latest version).

There are actually a few hardcoded version numbers, which could maybe be relaxed, slightly.

Einasto Profile

Implement the Einasto profile module. The new module should live here astropaint/profiles/Einasto.py. The structure can be identical to NFW. Essentially the only difference would be the rho_3D function.

The other profiles (kSZ, deflection_angle, etc) should be factorized into a separate module and then called into NFW and Einasto. Will open another issue for this soon.

Selective updating on catalog parameters

Before running build_dataframe() check to see if parameters already exist in the catalog.

At the moment all parameters are calculated upon instantiation which causes large catalogs to load slowly.

Mass conversion (200c vs 200m)

Add transformation method for converting different mass definitions to each other, in particular, M_200m -> M_200c.

The current version only takes in M_200c, but for example, WebSky only provides M_200m. A transformation function is needed (in the lib.transform module) to convert the mass.

comment for further clarification on details.

GitHub Actions Workflow

Add CI workflow with GitHub Actions.

The workflow should lint the code and run the tests on push and pull request events.

profiling the code

decorate the methods with CPU and memory profile decorators to find the bottlenecks in the code.

Easel object

Create a new object called Easel for handling and manipulating input maps (output of canvas.pixels).

Methods should include: zoom, show_map, save_to_file, get_Cl, etc.

Add more tests

Current test cases are very limited. More tests needed.

Comment to discuss cases.

Dataset Download Module

Add a method for manually downloading the datasets in case git lfs is not installed.

Use case example for the method:

astropaint.download_dataset("WebSky_lite")

should download the WebSky_lite.csv file from here to the local data directory. The path_dir variable under paint_bucket can be used to find the local data directory` like this:

data_dir = os.path.join(path_dir, 'data')

other available methods include

astropaint.download_dataset("All")

to download all the files under data.

Replace disc lists with generators

In most cases, the discs are solely used in the spray function so it might not be necessary to save them as a list. Replacing them with a generator will save a lot of memory and speed up the process.

Change disc query functions in Canvas so they return generators instead of lists.

Change n_cpus manually

Add a new argument to Painter.spray for manually setting the number of CPUs in parallel painting. This can probably replace the parallel=True argument.

An example use case would be:

Painter.spray(canvas, n_cpus=-1)

to use all the cpus available (same as parallel=True now)

and e.g.

Painter.spray(canvas, n_cpus=k)

to only use k cpus.

Add support for Pixell

Create a canvas for pixell. Ideally, there should be a metaclass for the Canvas from which the healpy and pixell classes inherit from. The methods should be identical between the two modes (if possible).

Factorize NFW profiles

Move the profiles in NFW (kSZ, deflection_angle) etc to another module and call them into NFW and Einasto. This will avoid code repetition in various modules.

Comment below for further clarification.

Automate r and r_hat calculations based on template

The distances from the halo center r are automatically calculated (even if they are not needed) and r_hat has to be explicitly calculated using canvas.find_discs_2center_vec(). These should be automated based on the arguments passed to the profile function.

painter.spray(..., parallel=True) fails ("unexpected keyword argument")

JOSS reviewer here, again! (openjournals/joss-reviews#2608)

I'm working your tutorial notebook, and I have run into a problem with Painter.spray()'s parallel=True argument. It seems that parallel=True is being passed to the function used as the template argument of the Painter instance. This is happening because Painter.spray() has no argument by that name. Eliminating this argument from the call to Painter.spray() yields the expected output.

I'm on version 0.1.1, which appears to be the most current. FWIW, this error also manifests with the public binder.

I suspect that the n_cpus argument has replaced parallel. If this is correct, please do update all public tutorials to reflect this.

Stack the signal

Stack the signals and average to make sure we get the radial profile back.

add LICENSE file

Hello, I am one of your JOSS reviewers! (openjournals/joss-reviews#2608)

I haven't been able to locate a plain-text LICENSE file in this repo. I see that an MIT license is listed in setup.py, so it would suffice to add the text from here into a new file called LICENSE in the top-level directory.

parallel perfomance

I find that in my local example problems (which are mostly derivatives of those given in the docs) that n_cpus=1 is faster than any other choice.

However, the code defaults to n_cpus=-1 for all problems. Do you expect / also find that serial tasks should be faster? Do you expect a particular problem size at which parallel jobs are faster?

If this result is typical, perhaps n_cpus=1 is a better default, or a value which can switch depending on the inferred problem size.

This is just little thought I had - and maybe, my experience is isolated and the whole issue is redundant.

public documentation: Statement of need

JOSS reviewer here! (openjournals/joss-reviews#2608)

Please add a Statement of Need to the public-facing documentation of this repo. You could paraphrase the text already included in the JOSS manuscript submission; and then insert it into either your existing repo README, include it in the RTD homepage (see #54), or preferably both!

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.