20Function to estimate the size of piecewise model template banks.
31from .
import basis_functions
as bf
32from .
import semicoherent_metric_methods
as scmm
46 logging.debug(
"Dim :" +
str(i))
47 tilingstats = lp.LatticeTilingStatistics(tiling, i)
48 totalpoints.append(tilingstats.total_points)
49 minpoints.append(tilingstats.min_points)
50 maxpoints.append(tilingstats.max_points)
51 minvals.append(tilingstats.min_value)
52 maxvals.append(tilingstats.max_value)
54 logging.info(
"Total points up to dimension: %s",
str(totalpoints))
55 logging.info(
"Min points in dimension: %s",
str(minpoints))
56 logging.info(
"Max points in dimension: %s",
str(maxpoints))
57 logging.info(
"Min value in dimension: %s",
str(minvals))
58 logging.info(
"Max value in dimension: %s",
str(maxvals))
60 alltilingstats = [totalpoints, minpoints, maxpoints, minvals, maxvals]
78 mismatch = tbank.maxmismatch
80 bbox = tbank.flags_bbox
81 intbox = tbank.flags_intbox
85 lp.SetLatticeTilingPiecewiseBounds(
86 tiling, s, fmin, fmax, nmin, nmax, kmin, kmax, knots, bbox, intbox
103 prevalidtempsandnmin=[-1, -1],
107 filename =
"BInd_" +
str(fmin) +
"_" +
str(fmax) +
".txt"
110 return prevalidtempsandnmin
112 finalknot = len(knots)
115 tiling = lp.CreateLatticeTiling(s * finalknot)
118 logging.info(
"Knots list: %s",
str(bf.knotslist))
120 logging.info(
"Computing metric")
123 metric = scmm.metric(s)
125 logging.info(
"Metric calculated")
127 stepsizes = [np.sqrt(2 / metric[i][i])
for i
in range(s * finalknot)]
128 logging.info(
"Maximum parameter step sizes: %s",
str(stepsizes))
131 lp.SetLatticeTilingPiecewiseBounds(
132 tiling, s, fmin, fmax, nmin, nmax, kmin, kmax, knots
136 lp.SetTilingLatticeAndMetric(tiling, lp.TILING_LATTICE_ANSTAR, metric, mismatch)
139 iterator = lp.CreateLatticeTilingIterator(tiling, s * finalknot)
140 lp.ResetLatticeTilingIterator(iterator)
145 p = lal.gsl_vector(s * finalknot)
147 while lp.NextLatticeTilingPoint(iterator, p) != 0:
150 if tiles % printouts == 0:
151 logging.info(
"Current number of tiles: %s",
str(tiles))
152 logging.info(
"Elapsed time: %s",
str(time.time() - start))
157 if lp.NextLatticeTilingPoint(iterator, p) != 0:
161 if prevalidtempsandnmin[0] != -1:
163 "Final recursive step. Valid range found. Frequency range: %s, braking index range: %s",
168 f = open(filename,
"a")
169 f.write(
str([nmin, tiles]) +
"\n")
172 return prevalidtempsandnmin
176 "Final recdepth %s reached with no valid range found. Frequency range: %s, braking index range: %s",
182 f = open(filename,
"a")
183 f.write(
str([nmin, tiles]) +
"\n")
190 "Recursive step %s. No valid range found for this nmin. Frequency range: %s, braking index range: %s",
196 f = open(filename,
"a")
197 f.write(
str([nmin, tiles]) +
"\n")
200 newnmin = nmin + (nmax - nmin) * 2 ** -(recdepth + 1)
212 recdepth=recdepth + 1,
219 "Statistics calculated: %s",
224 iterator=lp.NextLatticeTilingPoint(iterator, p),
229 "Frequency range: %s, Braking index range: %s",
233 logging.info(
"Final tile count: %s",
str(tiles))
234 logging.info(
"Total elapsed time: %s",
str(time.time() - start))
237 "Final recursive step. Valid range found. Frequency range: %s, braking index range: %s",
242 f = open(filename,
"a")
243 f.write(
str([nmin, tiles]) +
"\n")
250 "Statistics calculated: %s",
255 iterator=lp.NextLatticeTilingPoint(iterator, p),
260 "Frequency range: %s, Braking index range: %s",
264 logging.info(
"Final tile count: %s",
str(tiles))
265 logging.info(
"Total elapsed time: %s",
str(time.time() - start))
268 "Recursive step %s. Valid range found for this nmin. Frequency range: %s, braking index range: %s",
274 f = open(filename,
"a")
275 f.write(
str([nmin, tiles]) +
"\n")
278 newnmin = nmin - (nmax - nmin) * 2 ** -(recdepth + 1)
290 prevalidtempsandnmin=[tiles, nmin],
291 recdepth=recdepth + 1,
def tilingstatistics(tiling, dim, iterator=-1)
def recursivetbanksize(s, fmin, fmax, nmin, nmax, kmin, kmax, knots, mismatch, printouts=1000000, recdepth=1, prevalidtempsandnmin=[-1, -1], metric=[])
def setbounds(tiling, tbank)