Git Product home page Git Product logo

halotools's Introduction

Halotools

Halotools is a specialized python package for building and testing models of the galaxy-halo connection, and analyzing catalogs of dark matter halos. The core feature of Halotools is a modular platform for creating mock universes of galaxies starting from a catalog of dark matter halos obtained from a cosmological simulation. Functionality of the package includes:

  • Fast generation of synthetic galaxy populations using HODs, abundance matching, and related methods
  • Efficient algorithms for calculating galaxy clustering, lensing, z-space distortions, and other astronomical statistics
  • A modular, object-oriented framework for designing your own galaxy evolution model
  • End-to-end support for downloading publicly-available halo catalogs and reducing them to fast-loading hdf5 files

The code is publicly available at https://github.com/astropy/halotools.

Installation

The simplest and most reliable way to install the latest release of the code is with conda-forge:

conda install -c conda-forge halotools

Pip installation is not recommended because the conda-forge dependency solver is much more robust. However, users who prefer pip can install via:

pip install halotools

You can find detailed installation instructions halotools.readthedocs.io.

After installing the package, you should navigate to the Quickstart Guides and Tutorials section and follow the Getting started with Halotools 10-minute tutorial. This will get you set up with the default halo catalog so that you can quickly get started with creating mock galaxy populations.

Documentation

The latest build of the documentation can be found at http://halotools.readthedocs.io. The documentation includes installation instructions, quickstart guides and step-by-step tutorials. The Basic features section below gives an overview of the primary functionality of the package.

Basic features

Once you have installed the code and downloaded the default halo catalog (see the Getting Started guide in the documentation), you can use Halotools models to populate mock galaxy populations.

# Select a model
from halotools.empirical_models import PrebuiltHodModelFactory
model = PrebuiltHodModelFactory('zheng07')

# Select a halo catalog
from halotools.sim_manager import CachedHaloCatalog
halocat = CachedHaloCatalog(simname='bolshoi', redshift=0, halo_finder='rockstar')

# populate the catalog with the model
model.populate_mock(halocat)

After calling populate_mock, your model will have a mock attribute storing your synthetic galaxy population. All Halotools models have a populate_mock method that works in this way, regardless of the features of the model. There are no restrictions on the simulation or halo-finder with which you can use the populate_mock method.

Creating alternate mocks

All Halotools models have a param_dict that controls the behavior of the model. By changing the parameters in this dictionary, you can create alternative versions of your mock universe by re-populating the halo catalog as follows.

model.param_dict['logMmin'] = 12.1
model.mock.populate()

Note how much faster the call to mock.populate is relative to model.populate_mock(halocat). This is due to a large amount of one-time-only pre-processing that is carried out upon creation of the first mock universe. The process of varying param_dict values and repeatedly calling model.mock.populate() is part of a typical workflow in an MCMC-type analysis conducted with Halotools.

Modeling the galaxy-halo connection

The pre-built model factories give you a wide range of models to choose from, each based on an existing publication. Alternatively, you can use the Halotools factories to design a customized model of your own creation, such as models for stellar mass, color, size, morphology, or any property of your choosing. The modular design of the empirical_models sub-package allows you to mix-and-match an arbitrary number or kind of features to create your own composite model of the full galaxy population. You can choose from component models provided by Halotools, components exclusively written by you, or anywhere in between. Whatever science features you choose, any Halotools model can populate any Halotools-formatted halo catalog with the same syntax shown above.

Making mock observations

The mock_observables sub-package contains a wide variety of optimized functions that you can use to study your mock galaxy population. For example, you can calculate projected clustering via the wp function, identify friends-of-friends groups with FoFGroups, or compute galaxy-galaxy lensing with mean_delta_sigma.

from halotools.mock_observables import wp
from halotools.mock_observables import FoFGroups
from halotools.mock_observables import mean_delta_sigma

There are many other functions provided by the mock_observables package, such as RSD multipoles, pairwise velocities, generalized marked correlation functions, customizable isolation criteria, void statistics, and more.

Managing simulation data

Halotools provides end-to-end support for downloading simulation data, reducing it to a fast-loading hdf5 file with metadata to help with the bookkeeping, and creating a persistent memory of where your data is stored on disk. This functionality is handled by the sim_manager sub-package:

from halotools import sim_manager

The sim_manager package comes with a memory-efficient TabularAsciiReader designed to handle the very large file sizes that are typical of contemporary cosmological simulations. There are 20 halo catalogs available for download from the Halotools website using the download_additional_halocat script.py, including simulations run with different volumes, resolutions and cosmologies, and also catalogs identified using different halo-finders and at different redshift. Any simulation you store in cache can be loaded into memory in the same way, and all such catalogs have a halo_table attribute storing the actual data.

from halotools.sim_manager import CachedHaloCatalog
halocat = CachedHaloCatalog(simname=any_simname, redshift=any_redshift, halo_finder=any_halo_finder)
print(halocat.halo_table[0:10])

You are not limited to use the halo catalogs pre-processed by Halotools. The UserSuppliedHaloCatalog allows you to use your own simulation data and transform it into a Halotools-formatted catalog in a simple way.

from halotools.sim_manager import UserSuppliedHaloCatalog

Although the sim_manager provides an object-oriented framework for creating a persistent memory of where you store your halo catalogs, your cache is stored in a simple, human-readable ASCII log in the following location:

$HOME/.astropy/cache/halotools/halo_table_cache_log.txt

Project status

Halotools is a fully open-source package with contributing scientists spread across many universities. The latest stable release of the package, v0.8, is now available on pip and conda-forge. You can also install the development version of the package by cloning the master branch on GitHub and locally building the source code, as described in the installation instructions.

## Asking questions and staying up-to-date

You can contact Andrew Hearin directly by email at ahearin-at-anl-dot-gov, or by tagging @aphearin on GitHub.

Citing Halotools

If you use Halotools modules to support your science publication, please cite Hearin et al. (2017), ideally taking note of the version of the code you used, e.g., v0.8:

@ARTICLE{halotools,
       author = {{Hearin}, Andrew P. and {Campbell}, Duncan and {Tollerud}, Erik and {Behroozi}, Peter and {Diemer}, Benedikt and {Goldbaum}, Nathan J. and {Jennings}, Elise and {Leauthaud}, Alexie and {Mao}, Yao-Yuan and {More}, Surhud and {Parejko}, John and {Sinha}, Manodeep and {Sip{\"o}cz}, Brigitta and {Zentner}, Andrew},
        title = "{Forward Modeling of Large-scale Structure: An Open-source Approach with Halotools}",
      journal = {The Astronomical Journal},
     keywords = {cosmology: theory, galaxies: halos, galaxies: statistics, large-scale structure of universe, Astrophysics - Instrumentation and Methods for Astrophysics, Astrophysics - Cosmology and Nongalactic Astrophysics, Astrophysics - Astrophysics of Galaxies},
         year = 2017,
        month = nov,
       volume = {154},
       number = {5},
          eid = {190},
        pages = {190},
          doi = {10.3847/1538-3881/aa859f},
archivePrefix = {arXiv},
       eprint = {1606.04106},
 primaryClass = {astro-ph.IM},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2017AJ....154..190H},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

License

Halotools is licensed by Argonne National Lab under a 3-clause BSD style license - see the licenses/LICENSE.rst file.

halotools's People

Contributors

alanpearl avatar alanxuhaojie avatar andrew-zentner avatar aphearin avatar astrofrog avatar beckermr avatar bsipocz avatar cdeil avatar christopher-bradshaw avatar duncandc avatar eiffl avatar embray avatar eteq avatar kbarbary avatar larrybradley avatar manodeep avatar mclaughlin6464 avatar mdboom avatar mwcraig avatar nbeckman avatar neutrinoceros avatar nickhand avatar nvanalfen avatar pllim avatar rainwoodman avatar shuleicao avatar surhudm avatar syrte avatar wkerzendorf avatar yymao 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

halotools's Issues

Dangerous bug in cache_config

Currently, I use this method defensively_create_directory, or something like that. In the current implementation, if 'nonsense' is passed to this method, an empty directory /.../cache/raw_halos/nonsense/ is created. This is a nuisance, because if a typo is passed to the method, a nonsense directory is created, and never removed. Even worse, the current implementation is dangerous: if this method were called in a loop, an arbitrary number of subdirectories would be created.

Relax MPI compatibility problem

The way mock_observables is currently written, the test suite automatically fails if the platform does not have MPI installed. But MPI should be optional. The way to handle this is

  • Step 0: Do all development in a virtual environment which does not have MPI installed, so that package-dependency errors such as this are caught from the get-go.
  • Step 1: Follow astropy's try/except-based pattern of implementing a global variable HAS_MPI, and add a py.test decorator marker. This is implemented throughout astropy with HAS_SCIPY, HAS_MATPLOTLIB, etc, so that is the place to look to see how to do it.

@duncandc - can you handle this?

bug in parallelization of pair counter

If the pair counter is called more than a few times from within a single python session, the session crashes due to "too many files open". The bug traces to the fact that the pools are never closed at the end of the parallelization. The fix is simple: simply add pool.close() whenever the parallel job is complete.

I'll fix this one very soon, @duncandc - but I thought this was worth pointing out.

aggregation module API

I do not understand the proposed API for this module. The API will depend on the attributes of the mock objects. Let me sketch out my understanding of the mock strucutre as it relates to this module

1.) Mocks will have attributes for all the halo and galaxy props. e.g. mock.mstar will be an array of stellar masses, and mock.halo_id will be an array of halo ID numbers.
2.) For convenience the user can bundle these into astropy tables. One for galaxies and one for haloes. These tables will have keyword access, e.g. mock.gal_table['mstar'].
3.) We don't want those tables to be the default because they are too slow to create.

The aggregation API should be able to do aggregation operations on either an astropy table, or mock object directly. The functions should return the same result in both cases.

Questions:
1.) what should the functions return?
a.) an array
b.) a table with a new column
c.) a mock with a new attribute
2.) Should we internally bundle the needed mock attributes into a table or rec array?
3.) How should the aggregation functions themselves be structured? Right now they operate on slices of record arrays.

Thoughts:
I think the aggregation operations will take time comparable to creating an astropy table (or longer). It may be over optimization to have them be able to run on anything other than a table.

mock_observables optimizations

@duncandc - I'm using your code to build fast calculators for the PVD. I just noticed that your loops have calls to len() within the range() function, rather than outside the loop ravel. This minor change should not have a significant impact on performance, but there is no reason not to change it.

cython building error

@aphearin @eteq

I get the following error when building a clean clone of halotools once I add a cython module:

"Cython must be installed to build from a git checkout."

I do in fact have cython installed.

igraph dependency bug

@duncandc - not sure what the problem is yet, but I'm looking into it. Here's the summary:

test_igraph_functionality fails in my virtualenv. The traceback leads to the following:

      g = igraph.Graph(zip(sources, targets), n=matrix.shape[0], directed=directed,\
                            edge_attrs={'weight': weights},\
                            vertex_attrs={'x':x, 'y':y, 'z':z })

E AttributeError: 'module' object has no attribute 'Graph'

Bug in the cross correlation function calculation

In observalbles.py:
When computing the cross-correlation function using the function 'TP_estimator' we are accounting for the same normalization factor for the two sets of data points (sample1 and sample2).
The right calculation should be:
xi_gm = [D1D2/(N1N2)]/[N_rN_rRR]
instead of
xi_gm = [D1D2/(N1N1)]/[N_rN_rRR]

The best thing to do will be to add factor3 = (len(sample1)0.5)*((len(sample2)0.5))/len(randoms) and to pass this factor to 'TP_estimator' when computing the cross-correlation function.

This bug has to be fixed in both:

  1. two_point_correlation_function
  2. two_point_correlation_function_jackknife

Shany

TPCF no random pairs

The TPCF functions should throw a warning when there are no random pairs in a radial bin. As of now, they continue ahead and return 'inf'. This can be confusing to the user.

Recognizing the cache dir from within the py.test framework

The halotools/configuration.py module has a function that is used in the read_nbody module to identify the CATALOGS directory where the halo catalogs are contained. This function behaves properly in all cases except when running the testing suite, evidently because the py.test framework temporarily moves the code to another "clean" directory before running the test suite.

Confirm with an independent machine that APH-machine-specific tests are skipped

@eteq - could you confirm or deny this? The only thing you need to do is just execute the full test suite after checking out bd035cb, which is part of the sim_manager_revamp branch on my personal Halotools fork.

(Do you know a ProTip for how I can provide a GitHub reference to a specific branch, e.g., a symbolic link to " the sim_manager_revamp branch on my personal Halotools fork"?)

Allow users to store halo catalogs in whatever location they like

This is easily managed. The default location is a subdirectory of the astropy home directory. Users may wish to store large halo catalogs on a separate disk, so just add a default_catalog_dir to the configuration module. If None (the default setting in the package), use astropy home. If not None, use the explicit dirname provided there. Whenever loading catalogs, check the state of this variable first.

pair counting testing

See if creating a local variable for grid2.slice_array[icell2] in the _npairs_engine saves memory (and therefore speeds up to avoid cache misses)

py.test and cython

@eteq - I know you have been consulting with @duncandc over the past couple of weeks about cythonization. There is some new and strange phenomenology that I'm wondering if you've encountered before. This may be more efficient to discuss in person, I don't know. But in the current version of master (which has a test failure - see #96 ), I'm no longer able to test specific modules. I can run the entire test suite at once, but if I try "python setup.py test -t fname", I get the following error:

error: [Errno 2] Could not find C file halotools/mock_observables/pair_counters/cpairs/cpairs.c for Cython file halotools/mock_observables/pair_counters/cpairs/cpairs.pyx when building extension halotools.mock_observables.pair_counters.cpairs.cpairs. Cython must be installed to build from a git checkout.: 'halotools/mock_observables/pair_counters/cpairs/cpairs.c'

I strongly suspect this is related to conventions we have discussed previously in #69 .

Bug in Hearin15 satellite fractions

When I populate two mocks with the Hearin15 model, one with a threshold of 10.25, and the other with a satellite fraction of 11.25, the satellite fractions are both ~0.3.

Travis build still failing for numpy < 1.9 builds

As @aphearin noted in #20, some of the travis builds are still failing with an error about TypeError: run_tests() got an unexpected keyword argument 'repeat'

In fact, this is what d62c292 fixed by switching most of the builds to use numpy 1.9 . The underlying problem was that the astropy version installed by conda is only available for numpy < 1.9 as astropy v0.4.1 (which is apparently incompatible due to this bug you noticed). But those last three builds are there specifically to check versions of numpy < 1.9 ... which of course now fail.

At some point the plan is to fix astropy_helpers to make this work again... But until then these builds will fail. Perhaps the best thing is to just comment those out for now and put them back in when/if astropy_helpers is updated?

mock_observables does not import due to ckdtree

In the current version of the repo, the test suite passes, but the mock_observables sub-package fails to import. This seems to trace to ckdtree, which I thought we no longer were going to use, but I'm not sure what other routines may still be dependent on ckdtree.

I think, but am not sure, that this is what is causing the ReadTheDocs build of the documentation to fail. So until @duncandc has a chance to try and fix this, then @eteq should ignore the RTD build problem.

Bug in parsing ASCII

I am getting strange mis-matching between the number of columns in a multidark high-z ASCII data. Still not sure what's causing this. Could also be a problem for other catalogs.

capitalization conventions

@duncandc - With the addition of the group aggregation calculation, it is finally an issue that we need to start using a consistent capitalization convention. The same convention should be adopted in the groups keys and the halos keys.

In particular, under what conditions should a key name contain a capitalized letter? I have been using no capital letters for any halo key, e.g., 'id' denotes the halo ID, and 'vmax' denotes V_{\rm max}.

I know this seems trivial, but this is the sort of that we should decide on now rather than wait until it becomes a bug, because it will become a bug with 100% certainty, and there will be far more code to write in the future than now.

Modify component models to self-express the arrays they need

Currently, HodFactory has kind of a clunky way of passing the correct arrays to each component model. The retrieve_inherited_behavior method only permits one or two arguments to the component models, and these two arguments are always presumed to be prim_haloprop, and prim_haloprop+sec_haloprop, respectively.

This awkwardness and rigidity is easily avoided. Just have require that component models get instantiated with a tuple of strings that are the arguments needed by the critical method of the component model.

Write dedicated module for conc-mass relations

More generally, there should be a separate module that provides common mappings between halos and halo profile parameters. A concentration-mass relation is just one example. Another example pertaining to a generalized NFW profile would be a mapping between the steepness of a cusp and halo mass.

This module governs separate behavior from the actual shape of an NFW, Einasto, etc., and so should be kept separate from the module that provides the mappings between halo radius and halo mass density. This module should be called something like halo_prof_param_components, whereas the latter should be (is already) called halo_prof_components. Classes defined in these two modules are obviously closely associated. In particular, the constructor of a model defined in halo_prof_components (e.g., an NFW profile), will take as input a model object defined in halo_prof_param_components (e.g., a concentration-mass relation).

Add support for user-defined halo catalog properties

Include a composite model option for a user-defined function that can be used to produce a new halo property as a primary or secondary halo property. Implement in mock_factory by calling this model component during the process_halo_catalog method.

TPCF API (jackknife errors)

@aphearin Do we want to have a separate function to calculate a simple TPCF and the TPCF with jackknife errors?

options:
1.) separate functions (tpcf, tpcf_jackknife)
2.) only calculate TPCFs with errors
3.) one function with a complicated API (and code) that has it as an option.

major bug in pair-counting test suite

@duncandc - I just updated my master branch with your latest changes. Did you run the test suite before submitting your PR? When I run the test suite, not only are new errors produced, but in fact, the entire execution of the test suite just fails and the system exits before the suite is done running.

@eteq - how can such a thing happen, anyway?

Bug in assembly bias implementation

For reasons I have not been able to track down yet, the Hearin15 composite model is returning the result that the fractional impact on clustering of assembly bias has no dependence on the amount of underlying scatter, which cannot be correct. In particular, what I compute is the following. I calculate clustering for a model without assembly bias, and for a model with assembly bias, by toggling the central_assembias=True/False and satellite_assembias=True/False in the Hearin15 kwargs. I compute this ratio for scatter 0.2 (default), and for scatter 0.8. I find that the clustering ratio is identical.

One bug I know of for sure is with the satellites. When I directly compute the mean occupations for satellites, I find it has zero dependence on the scatter. This means that the scatter param_dict is not propagating down to AssembiasLeauthaudSats.

However, here is a truly strange thing. When I use this model to compute mean and mc occupation statistics of centrals, I see the expected behavior with changes to scatter. I see that increasing scatter boosts the low-mass occupations, and it also increases the dynamic range over which low- vs. high- concentration halos receive boosted occupations. But bizarrely, when I compute the clustering ratios using the include_crosscorr mechanism, I see zero difference for central-central clustering. I do not see how this can be.

First things first, fix the known satellite bug, and then turn attention to the centrals.

Tests failing on travis due to missing scipy

The problem mentioned in #17 is now mostly fixed (a few of the builds still have it, but a fix is in the works for that from the astropy_helpers side). But now that the tests are actually running on travis, a different problem has showed up. To see an example, take a look at one of the failing builds from https://travis-ci.org/astropy/halotools/builds/49241697 . There, you'll see a bunch of errors like ImportError: No module named scipy.special.

What's happening there is that the default builds do not include scipy. This is because, in astropy, we have a general guideline that scipy is not a strict requirement, but rather it is necessary for certain things (like model fitting) that use scipy. So any test that invokes functionality requiring scipy is skipped if scipy is not installed, but run if it is. For an example of this, see https://github.com/astropy/astropy/blob/v1.0rc1/astropy/modeling/tests/test_fitters.py - you'll see a block at the top that defines the HAS_SCIPY variable, and then tests below that require scipy have decorators that look like @pytest.mark.skipif('not HAS_SCIPY').

As it stands, however, even that will not work for halotools - this is because there are at least some places where scipy is imported at the top level. (E.g., https://github.com/astropy/halotools/blob/master/halotools/halo_occupation.py imports a variety of things from scipy). In astropy, the convention (where possible) is to have scipy imports always inside a function/method, so that the error only happens when that functionality is used, rather than when the package is imported. So then stuff that requires scipy fails, but everything else can still succeed.

So there are two different solutions:

  1. Update halotools both to skip the scipy-requiring tests and move all scipy imports inside functions.
  2. Just take the stance that scipy is a dependency of halotools. setup.py should updated to add scipy to the requires list, and travis can be updated so that scipy is always installed (both of those are pretty much one-line changes).

I can set up option 2 myself if thats the way you want to go, @aphearin, but of course someone more familiar with halotools would have to do option 1.

Two failures with Test

=================================== FAILURES ===================================
[doctest] halotools.empirical_models.sfr_components.BinaryGalpropInterpolModel.init
192 and 90% for massive cluster centrals (:math:M_{\\mathrm{vir}}=10^{15}M_{\odot}).
193 We can use the BinaryGalpropInterpolModel to implement this as follows:
194
195 >>> abcissa, ordinates = [12, 15], [1/3., 0.9]
196 >>> cen_quiescent_model = BinaryGalpropInterpolModel(galprop_key='quiescent', abcissa=abcissa, ordinates=ordinates, prim_haloprop_key='mvir', gal_type='cens')
197
198 The cen_quiescent_model has a built-in method that computes the quiescent fraction
199 as a function of mass:
200
201 >>> quiescent_frac = cen_quiescent_model.mean_quiescent_fraction(prim_haloprop=1e12)
UNEXPECTED EXCEPTION: IndexError("0-d arrays can't be indexed.",)
Traceback (most recent call last):

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/doctest.py", line 1289, in __run
compileflags, 1) in test.globs

File "<doctest halotools.empirical_models.sfr_components.BinaryGalpropInterpolModel.init[2]>", line 1, in

File "halotools/empirical_models/sfr_components.py", line 326, in _mean_galprop_fraction
mean_galprop_fraction[mean_galprop_fraction<0]=0

IndexError: 0-d arrays can't be indexed.

halotools/empirical_models/sfr_components.py:201: UnexpectedException
______________________________ test_unbiased_nfw _______________________________

def test_unbiased_nfw():
    nfw_prof = hpc.NFWProfile()
    gal_type = 'satellites'

    sat_prof = gpf.GalProfFactory(gal_type, nfw_prof)

    snapshot = FakeSim()
    composite_model = Kravtsov04()
    mock = HodMockFactory(snapshot=snapshot, model=composite_model)

    # Check that mc_radii gives reasonable results for FakeSim
    satellite_boolean = mock.galaxy_table['gal_type'] == gal_type
    conc_key = mock.model.gal_prof_param_list[0]
    satellite_conc = mock.galaxy_table[conc_key][satellite_boolean]
    satellite_radii = sat_prof.mc_radii(satellite_conc)
    assert np.all(satellite_radii < 1)
    assert np.all(satellite_radii > 0)
    # Check that mc_radii scales properly for high- and low-concentrations
    conc_array_ones = np.ones_like(satellite_conc)
    conc_array_tens = np.ones_like(satellite_conc)*10
    high_conc_radii = sat_prof.mc_radii(conc_array_tens)
    low_conc_radii = sat_prof.mc_radii(conc_array_ones)
    assert high_conc_radii.mean() < satellite_radii.mean() < low_conc_radii.mean()

    # verify that all mc_angles points are on the unit sphere
    x, y, z = sat_prof.mc_angles(1000)
    unit_sphere_pts = np.array([x, y, z]).T
  norms = np.linalg.norm(unit_sphere_pts, axis=1)

E TypeError: norm() got an unexpected keyword argument 'axis'

halotools/empirical_models/test_empirical_models/test_gal_prof_factory.py:74: TypeError
===================== 2 failed, 71 passed in 12.64 seconds =====================

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.