Repository: skypyproject/skypy (python)

Issue:
MAINT: Delete CAMB function
## Description
Delete extra CAMB function, any associated unit tests and references


Pull request:
MAINT: Delete CAMB function
## Description
Delete extra CAMB function, any associated unit tests and references
Merging this pull request closes #553 

## Checklist
- [x] Follow the [Contributor Guidelines](https://github.com/skypyproject/skypy/blob/main/CONTRIBUTING.rst)
- [ ] Write unit tests
- [ ] Write documentation strings
- [ ] Assign someone from your working team to review this pull request
- [ ] Assign someone from the infrastructure team to review this pull request


Patch:
diff --git a/skypy/power_spectrum/__init__.py b/skypy/power_spectrum/__init__.py
index 2269345..922b237 100644
--- a/skypy/power_spectrum/__init__.py
+++ b/skypy/power_spectrum/__init__.py
@@ -8,7 +8,7 @@ Linear Power Spectrum
    :nosignatures:
    :toctree: ../api/
 
-   camb
+   CAMB
    classy
    eisenstein_hu
    transfer_no_wiggles
@@ -48,3 +48,4 @@ from ._camb import *  # noqa F401,F403
 from ._eisenstein_hu import *  # noqa F401,F403
 from ._halofit import *  # noqa F401,F403
 from ._growth import *  # noqa F401,F403
+from ._base import * # noqa F401,F403
diff --git a/skypy/power_spectrum/_camb.py b/skypy/power_spectrum/_camb.py
index fefe01f..5f3701f 100644
--- a/skypy/power_spectrum/_camb.py
+++ b/skypy/power_spectrum/_camb.py
@@ -1,98 +1,13 @@
 import numpy as np
 from astropy import units
-from inspect import signature
 from ._base import TabulatedPowerSpectrum
 
 
 __all__ = [
     'CAMB',
-    'camb',
 ]
 
 
-def camb(wavenumber, redshift, cosmology, A_s, n_s):
-    r'''CAMB linear matter power spectrum.
-    Compute the linear matter power spectrum on a two dimensional grid of
-    redshift and wavenumber using CAMB [1]_.
-
-    Parameters
-    ----------
-    wavenumber : (nk,) array_like
-        Array of wavenumbers in units of Mpc-1 at which to
-        evaluate the linear matter power spectrum.
-    redshift : (nz,) array_like
-        Array of redshifts at which to evaluate the linear matter power
-        spectrum.
-    cosmology : astropy.cosmology.Cosmology
-        Cosmology object providing omega_matter, omega_baryon, Hubble
-        parameter and CMB temperature in the present day
-    A_s : float
-        Cosmology parameter, amplitude normalisation of curvature perturbation
-        power spectrum
-    n_s : float
-        Cosmology parameter, spectral index of scalar perturbation power
-        spectrum
-
-    Returns
-    -------
-    power_spectrum : (nz, nk) array_like
-        Array of values for the linear matter power spectrum in Mpc3
-        evaluated at the input wavenumbers for the given primordial power
-        spectrum parameters, cosmology. For nz redshifts and nk wavenumbers
-        the returned array will have shape (nz, nk).
-
-    References
-    ----------
-    .. [1] Lewis, A. and Challinor, A. and Lasenby, A. (2000),
-        doi : 10.1086/309179.
-
-    '''
-
-    try:
-        from camb import CAMBparams, model, get_matter_power_interpolator
-    except ImportError:
-        raise Exception("camb is required to use skypy.power_spectrum.camb")
-
-    return_shape = (*np.shape(redshift), *np.shape(wavenumber))
-    redshift = np.atleast_1d(redshift)
-
-    h2 = cosmology.h * cosmology.h
-
-    pars = CAMBparams()
-    pars.set_cosmology(H0=cosmology.H0.value,
-                       ombh2=cosmology.Ob0 * h2,
-                       omch2=cosmology.Odm0 * h2,
-                       omk=cosmology.Ok0,
-                       TCMB=cosmology.Tcmb0.value,
-                       mnu=np.sum(cosmology.m_nu.to_value(units.eV)),
-                       standard_neutrino_neff=cosmology.Neff
-                       )
-
-    # camb interpolator requires redshifts to be in increasing order
-    redshift_order = np.argsort(redshift)
-    wavenumber_order = np.argsort(wavenumber)
-
-    pars.InitPower.ns = n_s
-    pars.InitPower.As = A_s
-
-    pars.NonLinear = model.NonLinear_none
-
-    if len(redshift) > signature(get_matter_power_interpolator).parameters['nz_step'].default:
-        redshift_kwargs = {'zmin': np.min(redshift), 'zmax': np.max(redshift)}
-    else:
-        redshift_kwargs = {'zs': redshift}
-
-    pk_interp = get_matter_power_interpolator(pars,
-                                              nonlinear=False,
-                                              hubble_units=False, k_hunit=False,
-                                              kmax=np.max(wavenumber),
-                                              **redshift_kwargs)
-
-    pzk = pk_interp.P(redshift[redshift_order], wavenumber[wavenumber_order])
-
-    return pzk[redshift_order].reshape(return_shape)
-
-
 class CAMB(TabulatedPowerSpectrum):
 
     def __init__(self, kmax, redshift, cosmology, A_s, n_s, **kwargs):


Test patch:
diff --git a/skypy/power_spectrum/tests/data/class_result.txt b/skypy/power_spectrum/tests/data/class_result.txt
index a757352..a7d7c88 100644
--- a/skypy/power_spectrum/tests/data/class_result.txt
+++ b/skypy/power_spectrum/tests/data/class_result.txt
@@ -1,2 +1,2 @@
-2.203299707906652657e+03 2.311210914981189035e+03 2.424393684325056256e+03 2.543089193030403749e+03 2.667574062997171495e+03 2.798140540231350315e+03 2.935080938986529873e+03 3.078687638310352668e+03 3.229271237537464003e+03 3.387185448005580838e+03 3.552790215760692263e+03 3.726445486848785094e+03 3.908513461867943988e+03 4.099397373680083547e+03 4.299536247108531825e+03 4.509370307330771539e+03 4.729339779524279948e+03 4.959897197280032742e+03 5.201556695420678807e+03 5.454851640441136624e+03 5.720315405246146838e+03 5.998481828323795526e+03 6.289921141018928211e+03 6.595265473515572012e+03 6.915152978353057733e+03 7.250221808070721636e+03 7.601115871995027192e+03 7.968544737566537151e+03 8.353259739478413394e+03 8.756012882388815342e+03 9.177556172713413616e+03 9.618663422506968345e+03 1.008018464209605372e+04 1.056298647603732388e+04 1.106793556888744570e+04 1.159589983541520269e+04 1.214779161177151218e+04 1.272457822412805035e+04 1.332723041282564009e+04 1.395671891820516612e+04 1.461401776069832886e+04 1.530012587190215527e+04 1.601605361603371057e+04 1.676281141722149187e+04 1.754140968777489979e+04 1.835285471050156411e+04 1.919814258993274780e+04 2.007826789029309293e+04 2.099422517580720159e+04 2.194700397868958680e+04 2.293749637501292818e+04 2.396650617334505296e+04 2.503483399362274213e+04 2.614328045578273668e+04 2.729259429677140724e+04 2.848325299910834656e+04 2.971564569218039469e+04 3.099016145726011018e+04 3.230718663595217004e+04 3.366686606780228612e+04 3.506891752657855977e+04 3.651301510933019745e+04 3.799883291310634377e+04 3.952599173980314663e+04 4.109347187926741026e+04 4.269983021441728488e+04 4.434361609991840669e+04 4.602337888221160392e+04 4.773735819384234492e+04 4.948266387547630438e+04 5.125614822379151155e+04 5.305466353546595928e+04 5.487503947816657455e+04 5.671324621678657422e+04 5.856414893918840244e+04 6.042254013598637539e+04 6.228321229779491841e+04 6.414073675795610325e+04 6.598792490647920931e+04 6.781674740951151762e+04 6.961916971888908301e+04 7.138715543467328825e+04 7.311184622833224421e+04 7.478227292396956182e+04 7.638713219119867426e+04 7.791512069963278191e+04 7.935487574958508776e+04 8.069380910843485617e+04 8.191818006509119004e+04 8.301420316735940287e+04 8.396809296304482268e+04 8.476596707271525520e+04 8.539341364253904612e+04 8.583584092846100975e+04 8.607865703851671424e+04 8.610729170393798267e+04 8.590933926982842968e+04 8.547637465997479740e+04 8.480040042909038311e+04 8.387341913188845501e+04 8.268824371897983656e+04 8.124795941468629462e+04 7.956270677115973376e+04 7.764276474784030870e+04 7.549841232508860412e+04 7.314485985675227130e+04 7.061609340540325502e+04 6.795056684212065011e+04 6.518673403798350046e+04 6.236314876564850420e+04 5.952225037343182339e+04 5.671152681037741422e+04 5.397880354273861303e+04 5.137190569198501908e+04 4.893301963605062338e+04 4.668438320178809954e+04 4.464382491179677163e+04 4.282286733123290469e+04 4.120561622712959797e+04 3.976333426253815560e+04 3.844583397269744455e+04 3.718834540955749253e+04 3.591267006813910848e+04 3.453735368925759394e+04 3.299218647913668246e+04 3.122768353566051883e+04 2.923800656535639791e+04 2.706650664939109629e+04 2.480694198903926372e+04 2.258599681029839485e+04 2.054219970322656809e+04 1.879048011091948501e+04 1.739691927815301096e+04 1.635182855588187158e+04 1.557121475777582418e+04 1.490506756614851656e+04 1.417854950618025759e+04 1.325666563576855151e+04 1.211526599709844231e+04 1.086268048974112753e+04 9.686411525071711367e+03 8.750578292490437889e+03 8.103579862276831591e+03 7.651435685782299515e+03 7.216533364341084962e+03 6.646355637802166711e+03 5.956882203927921182e+03 5.299959839175694469e+03 4.802199836566413978e+03 4.457697701354544733e+03 4.139654836024139513e+03 3.754950150243903863e+03 3.349971739425377109e+03 3.025732553133077545e+03 2.779480408073161470e+03 2.534085896673992011e+03 2.273283519140113185e+03 2.048407774800599327e+03 1.863905651898254064e+03 1.683239975066495617e+03 1.512103238244111026e+03 1.365845002323603239e+03 1.231687614022032221e+03 1.106296770328023285e+03 9.962316709697163333e+02 8.951082549061678719e+02 8.036204997247619986e+02 7.214650741281963064e+02 6.468558396140351761e+02 5.798436574496209914e+02 5.192541227897269209e+02 4.647884285137804454e+02 4.157953487813219340e+02 3.717093036554255718e+02 3.320982192367305856e+02 2.965471788441847139e+02 2.646499678715630921e+02 2.360525028365239564e+02 2.104401004508137305e+02 1.875006872124833137e+02 1.669658283411027071e+02 1.486143340446830621e+02 1.322273745219924024e+02 1.175865065563287004e+02 1.045019894751125094e+02 9.283206557884389554e+01 8.243954197113073690e+01 7.318722575558081189e+01 6.494086889808514229e+01 5.759530676072823496e+01 5.106195070551011383e+01 4.525240484419311571e+01 4.007827884660451900e+01 3.546218033477512677e+01 3.136071796576518977e+01 2.773705079657367989e+01 2.455433788420007346e+01 2.177499035005325823e+01 1.934046371409294096e+01 1.716893289416953650e+01
-8.169921322832720989e+02 8.570108171563794031e+02 8.989851780876145995e+02 9.430047744261788694e+02 9.891723745659867291e+02 1.037596569460824412e+03 1.088385975497979416e+03 1.141649233256627895e+03 1.197501786149590316e+03 1.256075174141015395e+03 1.317503265022443884e+03 1.381919926585416988e+03 1.449459869676962626e+03 1.520273148535485007e+03 1.594523201259327834e+03 1.672373914801023602e+03 1.753989176113104577e+03 1.839537471519060546e+03 1.929210306305467157e+03 2.023206372192383924e+03 2.121724363295075818e+03 2.224963146546800999e+03 2.333135097397821482e+03 2.446475567277645951e+03 2.565222143029439394e+03 2.689612411496368622e+03 2.819886062058289099e+03 2.956306764240710436e+03 3.099153442116342831e+03 3.248705264447505215e+03 3.405241400627338408e+03 3.569048846695836346e+03 3.740441948359834441e+03 3.919741021811328665e+03 4.107266383242315896e+03 4.303338818269211515e+03 4.508295529043181887e+03 4.722494040036389379e+03 4.946293137474315699e+03 5.180051607582468932e+03 5.424129666574232033e+03 5.678898390930728965e+03 5.944733841296318133e+03 6.222012104434339562e+03 6.511109261919752498e+03 6.812399582546237980e+03 7.126252867016717573e+03 7.453038239865608375e+03 7.793124825627318387e+03 8.146879881969554845e+03 8.514634510506639344e+03 8.896687065767293461e+03 9.293334719303858947e+03 9.704874642668663000e+03 1.013158474263526841e+04 1.057364220594392282e+04 1.103119141275331094e+04 1.150437672535670390e+04 1.199334149305647043e+04 1.249813976988283321e+04 1.301866770249661022e+04 1.355480528811245858e+04 1.410643252394500450e+04 1.467340939309225178e+04 1.525535534490507234e+04 1.585173082523826088e+04 1.646199345283542425e+04 1.708560084350971374e+04 1.772190026342948477e+04 1.836983643908216254e+04 1.902826233520995811e+04 1.969603091655509343e+04 2.037198615282936225e+04 2.105463036144880607e+04 2.174202663153278263e+04 2.243220915504928780e+04 2.312321212396638657e+04 2.381298995945843126e+04 2.449886227618843623e+04 2.517784544213424670e+04 2.584695394448654770e+04 2.650320161529113102e+04 2.714331149398989510e+04 2.776325981694914299e+04 2.835890459900706628e+04 2.892610385500179473e+04 2.946069047374664297e+04 2.995797867917509575e+04 3.041279494814273494e+04 3.081994682236396693e+04 3.117424184355315447e+04 3.147046641479885147e+04 3.170329146740376382e+04 3.186734870084862632e+04 3.195726978235703791e+04 3.196769420075986272e+04 3.189404443550058204e+04 3.173318283286548467e+04 3.148212642308034265e+04 3.113789223637092437e+04 3.069779935037323594e+04 3.016299548213412709e+04 2.953725798133557328e+04 2.882441578425204716e+04 2.802829783490212867e+04 2.715455851025648735e+04 2.621580233971173220e+04 2.522628768904375102e+04 2.420027292402841704e+04 2.315205385332625883e+04 2.209738259054013542e+04 2.105390345337244435e+04 2.003938726020992908e+04 1.907160470097129655e+04 1.816622544309325531e+04 1.733148622963127127e+04 1.657398087604394095e+04 1.589796680450112399e+04 1.529754335670806176e+04 1.476205596574797892e+04 1.427292007941060729e+04 1.380614629006946598e+04 1.333264860973936447e+04 1.282197696672218080e+04 1.224824856440880831e+04 1.159317897571869798e+04 1.085434650644811700e+04 1.004861605047984267e+04 9.209416660497074190e+03 8.384955211205602609e+03 7.626166632599562945e+03 6.975925342037266091e+03 6.458500695379613717e+03 6.070530004762256794e+03 5.780781214476804962e+03 5.533570065933360638e+03 5.263738286654737749e+03 4.921557490086091093e+03 4.497790187638189309e+03 4.032732114261302286e+03 3.596017012061617152e+03 3.248624535892444783e+03 3.008406897507815302e+03 2.840568351285121935e+03 2.679115183563475057e+03 2.467475917233809923e+03 2.211457587583752684e+03 1.967594266684561944e+03 1.782802333607400442e+03 1.654916989547497224e+03 1.536832153026960896e+03 1.394014403140221702e+03 1.243662299070582549e+03 1.123298141982568723e+03 1.031871056348076308e+03 9.407724101138215929e+02 8.439562202581603287e+02 7.604686472532837342e+02 6.919655962794691959e+02 6.249017486639138497e+02 5.613656417941500649e+02 5.070708876692686999e+02 4.572630267819340020e+02 4.107075477531604975e+02 3.698512755938050987e+02 3.323040146312443994e+02 2.983437452964743670e+02 2.678443607321100330e+02 2.401432118445162303e+02 2.152646812296342205e+02 1.927722853383984329e+02 1.725520566438248693e+02 1.543636601305944112e+02 1.379973311560080163e+02 1.232915168586189623e+02 1.100924612777798615e+02 9.825012395290012535e+01 8.763327515936649093e+01 7.812490159984299964e+01 6.960895200009956341e+01 6.198566342562281761e+01 5.517290733619083909e+01 4.908943606823985562e+01 4.365414556322568274e+01 3.879659393113936972e+01 3.446416357460656599e+01 3.060593258914536818e+01 2.717097907027387649e+01 2.410947413149482088e+01 2.138238350827838019e+01 1.895682530054453707e+01 1.679998914940483346e+01 1.487906675812324941e+01 1.316533028854911436e+01 1.164266696147453040e+01 1.029739432609936856e+01 9.115829931623688154e+00 8.084013755563756121e+00 7.180208793497410369e+00 6.374038211572703894e+00
+2.203312692310008970e+03 2.311218138721584637e+03 2.424393804363334766e+03 2.543095025784990412e+03 2.667588874919878890e+03 2.798154889984309193e+03 2.935085834278085713e+03 3.078688303012052529e+03 3.229283004241281105e+03 3.387204826807074369e+03 3.552804095843204323e+03 3.726447370527514067e+03 3.908518096888009040e+03 4.099416200086919162e+03 4.299558725618221615e+03 4.509381463202351370e+03 4.729339758064516900e+03 4.959908820081897829e+03 5.201582346460005283e+03 5.454874624393998602e+03 5.720322041487047500e+03 5.998483886710358092e+03 6.289941191193370287e+03 6.595295616222211720e+03 6.915172842897075498e+03 7.250223649010250483e+03 7.601124300280055650e+03 7.968572992532348508e+03 8.353291291755616840e+03 8.756027277435665383e+03 9.177556195263059635e+03 9.618678839114561924e+03 1.008021581192812664e+04 1.056301273345764821e+04 1.106794204361740412e+04 1.159590301678670767e+04 1.214781464410470471e+04 1.272461211104629911e+04 1.332725387438042526e+04 1.395672176433864843e+04 1.461401682145640916e+04 1.530013267885994173e+04 1.601606435333737136e+04 1.676281793448063399e+04 1.754140862616364393e+04 1.835285090809863323e+04 1.919814263327778463e+04 2.007827522187444993e+04 2.099423281652958758e+04 2.194698638535417922e+04 2.293744744351814006e+04 2.396645819543592006e+04 2.503481886936997398e+04 2.614328263510944089e+04 2.729253715385521355e+04 2.848314329742534028e+04 2.971555866844710545e+04 3.099014671718885438e+04 3.230716684742841971e+04 3.366672478451312782e+04 3.506872199107555934e+04 3.651289902286094002e+04 3.799883044671424432e+04 3.952590471789130243e+04 4.109321562298296340e+04 4.269956686262520088e+04 4.434351867488600692e+04 4.602337644629592251e+04 4.773712123606206296e+04 4.948223005007117172e+04 5.125580079770964221e+04 5.305458642394715571e+04 5.487498309463980695e+04 5.671289705147552013e+04 5.856368131025115872e+04 6.042227290252625244e+04 6.228320495630395453e+04 6.414054553347770707e+04 6.598741903305616870e+04 6.781623903731605969e+04 6.961896871083643055e+04 7.138715121129798354e+04 7.311159246653203445e+04 7.478179595572633843e+04 7.638672043545718770e+04 7.791499289307591971e+04 7.935495321070236969e+04 8.069389395741370390e+04 8.191815790702894446e+04 8.301405321362351242e+04 8.396804906902213406e+04 8.476657339395333838e+04 8.539447960513122962e+04 8.583658645576670824e+04 8.607864462554609054e+04 8.610761988386443409e+04 8.591153346928299288e+04 8.547938257675565546e+04 8.480220497778285062e+04 8.387347142499635811e+04 8.268956201977594174e+04 8.125228475941444049e+04 7.956803947636015073e+04 7.764606760708715592e+04 7.549836643106378324e+04 7.314340371057807351e+04 7.061564752856167615e+04 6.795229044282413088e+04 6.518892732119141147e+04 6.235941725711703475e+04 5.950936417205545149e+04 5.669649276107934566e+04 5.397049070276197017e+04 5.137212059054536076e+04 4.893441354134165886e+04 4.668453089769971120e+04 4.464386002212369931e+04 4.282311936976899597e+04 4.120561583008962771e+04 3.976341069482790772e+04 3.844587477825120732e+04 3.718836578089542309e+04 3.591267989841935923e+04 3.453737945583094552e+04 3.299219116554588982e+04 3.122771386825563968e+04 2.923800570658670767e+04 2.706650566310182694e+04 2.480690624387414573e+04 2.258597079653902620e+04 2.054222144521525479e+04 1.879046620933471786e+04 1.739692703131952658e+04 1.635184931581632918e+04 1.557121496391880646e+04 1.490507988869584005e+04 1.417855034426131533e+04 1.325668339977099095e+04 1.211526696480874671e+04 1.086263271421760510e+04 9.686410393942802330e+03 8.750582421850720493e+03 8.103579651439195004e+03 7.651458763275662932e+03 7.216532836365071489e+03 6.646357982254259696e+03 5.956876124980960412e+03 5.299938368955458827e+03 4.802207435165233619e+03 4.457719239812340675e+03 4.139652065510143984e+03 3.754948128508526679e+03 3.349977587191367547e+03 3.025744981249091325e+03 2.779485339064933669e+03 2.534075528804243277e+03 2.273285434740925666e+03 2.048427466581113094e+03 1.863904709414449371e+03 1.683218925998212399e+03 1.512101166583566510e+03 1.365850102621786618e+03 1.231676821260578663e+03 1.106290392504678266e+03 9.962280465286131630e+02 8.951051063444319880e+02 8.036335408741382480e+02 7.214514630515673161e+02 6.468666325632383405e+02 5.798376414697128212e+02 5.192551754500799461e+02 4.647920815490732025e+02 4.157930280643103060e+02 3.717088049933403795e+02 3.321020056976577735e+02 2.965480831149934602e+02 2.646529066333686160e+02 2.360587962393077532e+02 2.104411020906777594e+02 1.875049417558394680e+02 1.669827769595628979e+02 1.486321046366807366e+02 1.322332727622028017e+02 1.175875156852550418e+02 1.045150317601544430e+02 9.285329946733905615e+01 8.245573408152266381e+01 7.319024793744148383e+01 6.493793186344538526e+01 5.759198921178116137e+01 5.105643011171838452e+01 4.524492895277009552e+01 4.007991868989190465e+01 3.549153539944393287e+01 3.141656992445684438e+01 2.779854738145795068e+01 2.458714643661997457e+01 2.173756736247704424e+01 1.921082663297810456e+01 1.697277149118244211e+01
+8.169969620793664262e+02 8.570135025328670508e+02 8.989852219225067529e+02 9.430069495240197739e+02 9.891778944124368991e+02 1.037601914574255716e+03 1.088387796470917237e+03 1.141649482471894089e+03 1.197506182551190250e+03 1.256082410559801701e+03 1.317508445007396858e+03 1.381920627138006012e+03 1.449461607108492672e+03 1.520280197314873021e+03 1.594531614936101050e+03 1.672378089208503070e+03 1.753989167850104877e+03 1.839541827200650914e+03 1.929219921155891598e+03 2.023214993931427216e+03 2.121726860627227325e+03 2.224963908909746806e+03 2.333142574265426902e+03 2.446486834276136051e+03 2.565229598451112452e+03 2.689613123251798243e+03 2.819889127583715890e+03 2.956317141741454634e+03 3.099165089892627293e+03 3.248710633572875395e+03 3.405241401119772490e+03 3.569054283359107103e+03 3.740453038113518232e+03 3.919750382319256914e+03 4.107268687471297198e+03 4.303339964325849905e+03 4.508303749780218823e+03 4.722506039591675290e+03 4.946301319957217856e+03 5.180052545973597262e+03 5.424129783292802131e+03 5.678901783907708705e+03 5.944738683293379836e+03 6.222014971951480220e+03 6.511108794515199406e+03 6.812397823543652521e+03 7.126252495314573935e+03 7.453040685608892090e+03 7.793127571771119619e+03 8.146873447609294089e+03 8.514616571847969681e+03 8.896669514652176076e+03 9.293329289254112155e+03 9.704875469470232929e+03 1.013156333683556295e+04 1.057360109498963357e+04 1.103115863070642263e+04 1.150437091783611322e+04 1.199333435077714603e+04 1.249808838866395308e+04 1.301859684708986242e+04 1.355476391475616401e+04 1.410643226525903992e+04 1.467337546014126019e+04 1.525525607563737867e+04 1.585162767657856239e+04 1.646195307986584157e+04 1.708560012720594750e+04 1.772181934102935702e+04 1.836968733010441429e+04 1.902814506332704696e+04 1.969600796085399998e+04 2.037196102279378829e+04 2.105448805302146502e+04 2.174183814335524585e+04 2.243209993834327906e+04 2.312320777096088932e+04 2.381292232787810281e+04 2.449867777699481303e+04 2.517765728468675297e+04 2.584687770785268003e+04 2.650320089469854429e+04 2.714322608474011940e+04 2.776309753359063689e+04 2.835876574572557365e+04 2.892606220366361958e+04 2.946071242309003719e+04 2.995799343005832270e+04 3.041276815220285789e+04 3.081987913193621353e+04 3.117422443350214235e+04 3.147069926481367293e+04 3.170369816805185110e+04 3.186763413472126922e+04 3.195726859500046339e+04 3.196781522516701079e+04 3.189485737545547818e+04 3.173429912189144306e+04 3.148279738081758114e+04 3.113791241589951824e+04 3.069828651513825753e+04 3.016459513471284299e+04 2.953922988476670071e+04 2.882563621863698427e+04 2.802828091491905798e+04 2.715402523532986379e+04 2.621564859604072626e+04 2.522693859182597953e+04 2.420109217555465875e+04 2.315066503940240000e+04 2.209258886276975682e+04 2.104831140927295201e+04 2.003629478996385660e+04 1.907168473298575555e+04 1.816674711175042103e+04 1.733154430225881515e+04 1.657399393692215745e+04 1.589805965981271220e+04 1.529754321246946711e+04 1.476208438374427715e+04 1.427293495380322747e+04 1.380615381090434857e+04 1.333265248467957099e+04 1.282198577024297083e+04 1.224825149511657401e+04 1.159319050633119150e+04 1.085434305756563845e+04 1.004861511161897033e+04 9.209407865501714696e+03 8.384944362278994959e+03 7.626174923952688005e+03 6.975919665554631138e+03 6.458503539063519383e+03 6.070538308834455165e+03 5.780781293891646783e+03 5.533576023273492865e+03 5.263738277698485035e+03 4.921560119642529571e+03 4.497790715735982303e+03 4.032715224036440304e+03 3.596016596170232788e+03 3.248625614071424934e+03 3.008406834258909839e+03 2.840576614379257990e+03 2.679115006161436213e+03 2.467475715747126742e+03 2.211455572619345730e+03 1.967585875977892101e+03 1.782805106607014523e+03 1.654925319366751864e+03 1.536831349469139923e+03 1.394013123555732136e+03 1.243664358225600836e+03 1.123302857961388781e+03 1.031872885945833787e+03 9.407686178187449286e+02 8.439569298731927347e+02 7.604760054678552024e+02 6.919652516850496795e+02 6.248939903032976417e+02 5.613648033044748900e+02 5.070727472180071800e+02 4.572590644450143600e+02 4.107051301582257565e+02 3.698498830573997793e+02 3.323029274479967512e+02 2.983485669188555107e+02 2.678392943705625839e+02 2.401472087223092160e+02 2.152624779090932350e+02 1.927726672797618619e+02 1.725533673367922916e+02 1.543628685525073649e+02 1.379971626489202379e+02 1.232928331161148492e+02 1.100927528455787865e+02 9.825126713137591139e+01 8.763568294332188202e+01 7.812530065818701530e+01 6.961051764060293578e+01 6.199193696258331698e+01 5.517949436543597841e+01 4.909162317699716027e+01 4.365452078246541845e+01 3.880143735229787438e+01 3.447204879879138417e+01 3.061194655052716485e+01 2.717210225982920946e+01 2.410837919204335122e+01 2.138114164623205582e+01 1.895476483340651797e+01 1.679720736169554129e+01 1.487967611972871929e+01 1.317623385602147401e+01 1.166340876659279324e+01 1.032022974096756229e+01 9.128011542030943559e+00 8.070119894354977674e+00 7.132080717169116291e+00 6.301214031195799592e+00
diff --git a/skypy/power_spectrum/tests/test_base.py b/skypy/power_spectrum/tests/test_base.py
new file mode 100644
index 0000000..500f3de
--- /dev/null
+++ b/skypy/power_spectrum/tests/test_base.py
@@ -0,0 +1,21 @@
+import numpy as np
+
+
+def test_TabulatedPowerSpectrum():
+    from skypy.power_spectrum import TabulatedPowerSpectrum
+
+    def power_spectrum_dummy(wavenumber, redshift):
+        # returns log10 power spectrum on redshift wavelength grid -> 2D
+        return 0.4*redshift[:, np.newaxis] + 0.2*np.log10(wavenumber) + 2
+
+    wavenumber = np.linspace(800, 9000, 100)
+    redshift = np.linspace(0, 3, 50)
+    power_spectrum = np.power(10, power_spectrum_dummy(wavenumber, redshift))
+    tab_power_spectrum = TabulatedPowerSpectrum(wavenumber, redshift, power_spectrum)
+
+    wavenumber_test = np.linspace(1100, 7000, 100)
+    redshift_test = np.linspace(1, 2, 50)
+    interp_power = tab_power_spectrum(wavenumber_test, redshift_test)
+    power_spectrum_test = np.power(10, power_spectrum_dummy(wavenumber_test, redshift_test))
+
+    assert np.allclose(interp_power, power_spectrum_test)
diff --git a/skypy/power_spectrum/tests/test_camb.py b/skypy/power_spectrum/tests/test_camb.py
index fc2762c..84ffadf 100644
--- a/skypy/power_spectrum/tests/test_camb.py
+++ b/skypy/power_spectrum/tests/test_camb.py
@@ -60,28 +60,3 @@ def test_camb_redshift_zero():
     wavenumber = np.logspace(-4.0, np.log10(2.0), 200)
     pzk = ps(wavenumber, redshift)
     assert allclose(pzk, test_pzk[0], rtol=1.e-4)
-
-
-@pytest.mark.skipif(CAMB_NOT_FOUND, reason='CAMB not found')
-def test_camb_interpolation():
-    from camb import get_matter_power_interpolator
-    from inspect import signature
-    from skypy.power_spectrum import camb
-
-    # Number of redshifts above which CAMB will do interpolation
-    nz_step = signature(get_matter_power_interpolator).parameters['nz_step'].default
-
-    # Two redshift arrays. For the first CAMB will calculate the exact power
-    # spectrum. The second contains all of the redshifts from the first as a
-    # subset, but CAMB will calculate the power spectrum using interpolation.
-    z_exact = np.linspace(0, 1, nz_step)
-    z_interp = np.linspace(0, 1, 2*nz_step - 1)
-
-    # Exact power spectrum
-    wavenumber = np.logspace(-3.0, 1, 100)
-    A_s, n_s = 2.2E-9, 0.97
-    p_exact = camb(wavenumber, z_exact, Planck15, A_s, n_s)
-
-    # Interpolated power spectrum at the same redshifts
-    p_interp = camb(wavenumber, z_interp, Planck15, A_s, n_s)[::2]
-    assert allclose(p_exact, p_interp)
diff --git a/skypy/power_spectrum/tests/test_class.py b/skypy/power_spectrum/tests/test_class.py
index f83e164..b7014bf 100644
--- a/skypy/power_spectrum/tests/test_class.py
+++ b/skypy/power_spectrum/tests/test_class.py
@@ -12,13 +12,12 @@ test_pzk = np.loadtxt(class_result_filename)
 # try to import the requirement, if it doesn't exist, skip test
 try:
     __import__('classy')
+    CLASS_294_NOT_FOUND = __import__('classy').__version__ != 'v2.9.4'
 except ImportError:
-    CLASS_NOT_FOUND = True
-else:
-    CLASS_NOT_FOUND = False
+    CLASS_294_NOT_FOUND = True
 
 
-@pytest.mark.skipif(CLASS_NOT_FOUND, reason='classy not found')
+@pytest.mark.skipif(CLASS_294_NOT_FOUND, reason='classy v2.9.4 not found')
 def test_classy():
     '''
     Test a default astropy cosmology