orpheus-npcf 0.2.1__cp310-cp310-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- orpheus/__init__.py +9 -0
- orpheus/catalog.py +1216 -0
- orpheus/covariance.py +153 -0
- orpheus/direct.py +1091 -0
- orpheus/flat2dgrid.py +68 -0
- orpheus/npcf_base.py +766 -0
- orpheus/npcf_fourth.py +1716 -0
- orpheus/npcf_second.py +620 -0
- orpheus/npcf_third.py +1684 -0
- orpheus/orpheus_clib.cpython-310-x86_64-linux-gnu.so +0 -0
- orpheus/patchutils.py +369 -0
- orpheus/utils.py +198 -0
- orpheus_npcf-0.2.1.dist-info/METADATA +67 -0
- orpheus_npcf-0.2.1.dist-info/RECORD +19 -0
- orpheus_npcf-0.2.1.dist-info/WHEEL +5 -0
- orpheus_npcf-0.2.1.dist-info/licenses/LICENSE +674 -0
- orpheus_npcf-0.2.1.dist-info/sboms/auditwheel.cdx.json +1 -0
- orpheus_npcf-0.2.1.dist-info/top_level.txt +1 -0
- orpheus_npcf.libs/libgomp-8949ffbe.so.1.0.0 +0 -0
orpheus/covariance.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
|
|
3
|
+
import ctypes as ct
|
|
4
|
+
import numpy as np
|
|
5
|
+
from numpy.ctypeslib import ndpointer
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
import sys
|
|
8
|
+
from .catalog import Catalog, ScalarTracerCatalog
|
|
9
|
+
from .utils import flatlist, gen_thetacombis_fourthorder, gen_n2n3indices_Upsfourth
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class GGCovarianceNoTomo:
|
|
13
|
+
""" Computes covariance of second-order shear correlation functions
|
|
14
|
+
"""
|
|
15
|
+
def __init__(self,
|
|
16
|
+
bins_xipm,
|
|
17
|
+
method_pairs='analytic', method_triplets='analytic', method_quadruplets='analytic',
|
|
18
|
+
spline_xip=None, spline_xim=None,
|
|
19
|
+
nbar=None, area=None, weights_mean=1., weights_std=0, spl_supression_ww=None,
|
|
20
|
+
pairs=None, triplets=None, quadruplets=None,
|
|
21
|
+
):
|
|
22
|
+
|
|
23
|
+
## Pass arguments from init ##
|
|
24
|
+
self.bins_xipm=bins_xipm
|
|
25
|
+
|
|
26
|
+
self.method_pairs = method_pairs
|
|
27
|
+
self.method_triplets = method_triplets
|
|
28
|
+
self.method_quadruplets = method_quadruplets
|
|
29
|
+
self.xip = spline_xip
|
|
30
|
+
self.xim = spline_xim
|
|
31
|
+
|
|
32
|
+
self.nbar=None
|
|
33
|
+
self.area=None
|
|
34
|
+
self.weights_mean = weights_mean
|
|
35
|
+
self.weights_std = weights_std
|
|
36
|
+
self.spl_supression_ww = spl_supression_ww
|
|
37
|
+
|
|
38
|
+
self.pairs = pairs
|
|
39
|
+
self.triplets = triplets
|
|
40
|
+
self.quadruplets = quadruplets
|
|
41
|
+
|
|
42
|
+
# Init different contributions to covariance (cf SKL 2002)
|
|
43
|
+
self.D = None
|
|
44
|
+
self.qpp = None
|
|
45
|
+
self.qmm = None
|
|
46
|
+
self.qpm = None
|
|
47
|
+
self.rp0 = None
|
|
48
|
+
self.rp1 = None
|
|
49
|
+
self.rm0 = None
|
|
50
|
+
self.rm1 = None
|
|
51
|
+
self.rpm = None
|
|
52
|
+
self.cov_pp = None
|
|
53
|
+
self.cov_mm = None
|
|
54
|
+
self.cov_pm = None
|
|
55
|
+
|
|
56
|
+
## PREPARE ALL DATA RELATED TO MULTIPLET COUNTS ##
|
|
57
|
+
# If required, load the multiplet counts from file or compute
|
|
58
|
+
if self.method_pairs=='discrete' and type(self.pairs) is str:
|
|
59
|
+
self.pairs = self.__loadpairs(self.pairs)
|
|
60
|
+
elif self.method_pairs=='discrete' and self.pairs is None:
|
|
61
|
+
self.pairs = self.computeDiscrete('pairs')
|
|
62
|
+
elif self.method_pairs=='analytic':
|
|
63
|
+
self.pairs = self.pairs_analytic
|
|
64
|
+
else:
|
|
65
|
+
raise ValueError('Incorrect parameters for pair contribution')
|
|
66
|
+
if self.method_triplets=='discrete' and type(self.triplets) is str:
|
|
67
|
+
self.triplets = self.__loadtriplets(self.triplets)
|
|
68
|
+
elif self.method_triplets=='discrete' and self.triplets is None:
|
|
69
|
+
self.triplets = self.computeDiscrete('triplets')
|
|
70
|
+
elif self.method_triplets=='analytic':
|
|
71
|
+
self.triplets = self.triplets_analytic
|
|
72
|
+
else:
|
|
73
|
+
raise ValueError('Incorrect parameters for triplets contribution')
|
|
74
|
+
if self.method_quadruplets=='discrete' and type(self.quadruplets) is str:
|
|
75
|
+
self.triplequadrupletsts = self.__loadquadruplets(self.quadruplets)
|
|
76
|
+
elif self.method_quadruplets=='discrete' and self.quadruplets is None:
|
|
77
|
+
self.quadruplets = self.computeDiscrete('quadruplets')
|
|
78
|
+
elif self.method_quadruplets=='analytic':
|
|
79
|
+
self.quadruplets = self.quadruplets_analytic
|
|
80
|
+
else:
|
|
81
|
+
raise ValueError('Incorrect parameters for quadruplets contribution')
|
|
82
|
+
|
|
83
|
+
## COMPUTATION OF INDIVIDUAL TERMS ##
|
|
84
|
+
# TODO (MARTINA): IMPLEMENT THIS
|
|
85
|
+
def getD(self):
|
|
86
|
+
if self.method_pairs=='analytic':
|
|
87
|
+
# self.D = ...
|
|
88
|
+
raise NotImplementedError
|
|
89
|
+
if self.method_pairs=='discrete':
|
|
90
|
+
# self.D = ...
|
|
91
|
+
raise NotImplementedError
|
|
92
|
+
|
|
93
|
+
def getNpairs(self):
|
|
94
|
+
raise NotImplementedError
|
|
95
|
+
|
|
96
|
+
def getqpp(self):
|
|
97
|
+
raise NotImplementedError
|
|
98
|
+
|
|
99
|
+
## HELPERS ##
|
|
100
|
+
# TODO (LUCAS): Link this to orpheus multiplet computatoin
|
|
101
|
+
def computeDiscrete(self, contribution):
|
|
102
|
+
if contribution=='pairs':
|
|
103
|
+
raise NotImplementedError
|
|
104
|
+
if contribution=='triplets':
|
|
105
|
+
raise NotImplementedError
|
|
106
|
+
if contribution=='quadruplets':
|
|
107
|
+
raise NotImplementedError
|
|
108
|
+
|
|
109
|
+
def get_pairs(self):
|
|
110
|
+
''' Returns all paircounts '''
|
|
111
|
+
if self.method_pairs=='analytic':
|
|
112
|
+
return self.analyticpairs()
|
|
113
|
+
else:
|
|
114
|
+
raise NotImplementedError
|
|
115
|
+
|
|
116
|
+
def get_triplets(self):
|
|
117
|
+
''' Returns all the triplets '''
|
|
118
|
+
if self.method_triplets=='analytic':
|
|
119
|
+
return self.analytictriplets()
|
|
120
|
+
else:
|
|
121
|
+
raise NotImplementedError
|
|
122
|
+
|
|
123
|
+
# TODO (MARTINA): Make sure the selection is consistent with self.analyticquadruplets
|
|
124
|
+
def get_quadruplets(self):
|
|
125
|
+
''' Returns selection of quadruplets '''
|
|
126
|
+
if self.method_quadruplets=='analytic':
|
|
127
|
+
return self.analyticquadruplets()
|
|
128
|
+
else:
|
|
129
|
+
raise NotImplementedError
|
|
130
|
+
|
|
131
|
+
# TODO (MARTINA): Add your implementation-- output the full tensor
|
|
132
|
+
def analyticpairs(self):
|
|
133
|
+
raise NotImplementedError
|
|
134
|
+
|
|
135
|
+
# TODO (MARTINA): Add your implementation -- output the full tensor
|
|
136
|
+
def analytictriplets(self):
|
|
137
|
+
raise NotImplementedError
|
|
138
|
+
|
|
139
|
+
# TODO (MARTINA): Add your implementation-- output part of tensor that fits most to your parametrisation
|
|
140
|
+
def analyticquadruplets(self):
|
|
141
|
+
raise NotImplementedError
|
|
142
|
+
|
|
143
|
+
def __loadpairs(self, fname):
|
|
144
|
+
# TODO (LUCAS): Check consistency with class parameters
|
|
145
|
+
raise NotImplementedError
|
|
146
|
+
|
|
147
|
+
def __loadtriplets(self, fname):
|
|
148
|
+
# TODO (LUCAS): Check consistency with class parameters
|
|
149
|
+
raise NotImplementedError
|
|
150
|
+
|
|
151
|
+
def __loadquadruplets(self, fname):
|
|
152
|
+
# TODO (LUCAS): Check consistency with class parameters
|
|
153
|
+
raise NotImplementedError
|