csiborgtools/scripts_plots/paper_environment.ipynb
Richard Stiskalek 9e4b34f579
Overlap fixing and more (#107)
* Update README

* Update density field reader

* Update name of SDSSxALFAFA

* Fix quick bug

* Add little fixes

* Update README

* Put back fit_init

* Add paths to initial snapshots

* Add export

* Remove some choices

* Edit README

* Add Jens' comments

* Organize imports

* Rename snapshot

* Add additional print statement

* Add paths to initial snapshots

* Add masses to the initial files

* Add normalization

* Edit README

* Update README

* Fix bug in CSiBORG1 so that does not read fof_00001

* Edit README

* Edit README

* Overwrite comments

* Add paths to init lag

* Fix Quijote path

* Add lagpatch

* Edit submits

* Update README

* Fix numpy int problem

* Update README

* Add a flag to keep the snapshots open when fitting

* Add a flag to keep snapshots open

* Comment out some path issue

* Keep snapshots open

* Access directly snasphot

* Add lagpatch for CSiBORG2

* Add treatment of x-z coordinates flipping

* Add radial velocity field loader

* Update README

* Add lagpatch to Quijote

* Fix typo

* Add setter

* Fix typo

* Update README

* Add output halo cat as ASCII

* Add import

* Add halo plot

* Update README

* Add evaluating field at radial distanfe

* Add field shell evaluation

* Add enclosed mass computation

* Add BORG2 import

* Add BORG boxsize

* Add BORG paths

* Edit run

* Add BORG2 overdensity field

* Add bulk flow clauclation

* Update README

* Add new plots

* Add nbs

* Edit paper

* Update plotting

* Fix overlap paths to contain simname

* Add normalization of positions

* Add default paths to CSiBORG1

* Add overlap path simname

* Fix little things

* Add CSiBORG2 catalogue

* Update README

* Add import

* Add TNG density field constructor

* Add TNG density

* Add draft of calculating BORG ACL

* Fix bug

* Add ACL of enclosed density

* Add nmean acl

* Add galaxy bias calculation

* Add BORG acl notebook

* Add enclosed mass calculation

* Add TNG300-1 dir

* Add TNG300 and BORG1 dir

* Update nb
2024-01-30 16:14:07 +00:00

829 KiB

In [1]:
import sys
import numpy as np
import h5py
import matplotlib.pyplot as plt
import scienceplots
from glob import glob

sys.path.append("../")
import csiborgtools


%matplotlib widget
%load_ext autoreload
%autoreload 2
In [5]:
paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)
files = glob("/mnt/extraspace/rstiskalek/CSiBORG/overlap/overlap_0*")

nsim0 = 7444
files = [f for f in files if str(nsim0) in f]

nsimxs = np.sort([int(f.split("_")[-1].split(".")[0][1:]) for f in files])
In [7]:
csiborgtools.read.get_cross_sims(7444, paths, True)
Out[7]:
[7468,
 7492,
 7516,
 7540,
 7564,
 7588,
 7612,
 7636,
 7660,
 7684,
 7708,
 7732,
 7756,
 7780,
 7804,
 7828,
 7852,
 7876,
 7900,
 7924,
 7948,
 7972,
 7996,
 8020,
 8044,
 8068,
 8092,
 8116,
 8140,
 8164,
 8188,
 8212,
 8236,
 8260,
 8284,
 8308,
 8332,
 8356,
 8380,
 8404,
 8428,
 8452,
 8476,
 8500,
 8524,
 8548,
 8572,
 8596,
 8620,
 8644,
 8668,
 8692,
 8716,
 8740,
 8764,
 8788,
 8812,
 8836,
 8860,
 8884,
 8908,
 8932,
 8956,
 8980,
 9004,
 9028,
 9052,
 9076,
 9100,
 9124,
 9148,
 9172,
 9196,
 9220,
 9244,
 9268,
 9292,
 9316,
 9340,
 9364,
 9388,
 9412,
 9436,
 9460,
 9484,
 9508,
 9532,
 9556,
 9580,
 9604,
 9628,
 9652,
 9676,
 9700,
 9724,
 9748,
 9772,
 9796,
 9820,
 9844]
In [ ]:

In [3]:
cat0 = csiborgtools.read.HaloCatalogue(nsim0, paths, minmass=("totpartmass", 1e12))
catxs = [csiborgtools.read.HaloCatalogue(nsimx, paths, minmass=("totpartmass", 1e12)) for nsimx in nsimxs]
In [4]:
reader = csiborgtools.read.NPairsOverlap(cat0, catxs, paths)
100%|██████████| 100/100 [02:36<00:00,  1.56s/it]
In [5]:
x = reader.cat0("totpartmass")
y1 = reader.summed_overlap(False)
100%|██████████| 100/100 [00:33<00:00,  3.02it/s]
In [6]:
y2 = reader.prob_nomatch(False)
100%|██████████| 100/100 [00:55<00:00,  1.80it/s]
In [8]:
plt.figure()
plt.scatter(1 - np.mean(y1, axis=1), np.mean(y2, axis=1), c=np.log10(x), s=2)
plt.colorbar(label=r"$\log_{10} M_{\rm halo} / M_\odot$")

t = np.linspace(0.3, 1, 100)
plt.plot(t, t, color="red", linestyle="--")

plt.xlabel(r"$1 - \langle \mathcal{O}_a^{\mathcal{A} \mathcal{B}} \rangle_{\mathcal{B}}$")
plt.ylabel(r"$\langle \eta_a^{\mathcal{A} \mathcal{B}} \rangle_{\mathcal{B}}$")
plt.tight_layout()
plt.savefig("../plots/prob_nomatch_vs_overlap_nosmooth.png", dpi=450)
plt.show()
Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [9]:
plt.close("all")
ks = [1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for k in ks:
    plt.figure()
    plt.title(r"Crossing with ${}$ simulations.".format(k))
    plt.hexbin(x, np.mean(y1[:, :k], axis=1), mincnt=1, xscale="log", bins="log", gridsize=50)
    plt.colorbar()
    plt.xlabel(r"$M_{\rm tot} / M_\odot$")
    plt.ylabel("Mean overlap")
    plt.tight_layout()
    plt.ylim(0, 1)
    # plt.savefig("../plots/overlap_std_{}.png".format(k), dpi=300, bbox_inches="tight")
    plt.show()
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [ ]:

In [136]:
x = reader.cat0("totpartmass")
mu, std = reader.counterpart_mass(True, 0.1, return_full=False)
100%|██████████| 40/40 [01:18<00:00,  1.96s/it]
100%|██████████| 40/40 [00:21<00:00,  1.82it/s]
In [137]:
plt.figure()
plt.scatter(x, mu, s=1)
# plt.hexbin(x, np.mean(y, axis=1), mincnt=1, xscale="log", bins="log", gridsize=50)
t = np.linspace(1e12, 1e15, 100)
plt.plot(t, t, c="red", ls="--")
plt.xscale("log")
plt.yscale("log")
plt.xlabel(r"Reference $M_{\rm tot} / M_\odot$")
plt.ylabel(r"Cross $M_{\rm tot} / M_\odot$")
plt.tight_layout()
# plt.savefig("../plots/prob_nomatch_vs_mass.png", dpi=300, bbox_inches="tight")
plt.show()
Figure
No description has been provided for this image
In [126]:
plt.figure()
plt.hexbin(x, np.mean(y, axis=1), mincnt=1, xscale="log", bins="log", gridsize=50)
plt.xlabel(r"$M_{\rm tot} / M_\odot$")
plt.ylabel("Mean probability of no match")
plt.tight_layout()
plt.savefig("../plots/prob_nomatch_vs_mass.png", dpi=300, bbox_inches="tight")
plt.show()
Figure
No description has been provided for this image
In [ ]:

In [84]:

In [118]:

In [117]:
import imageio
images = []
for k in ks:
    filename = "../plots/overlap_{}.png".format(k)
    images.append(imageio.imread(filename))
imageio.mimsave("../plots/overlap_movie.gif", images, duration=0.5)
/tmp/ipykernel_28288/2049075485.py:5: DeprecationWarning: Starting with ImageIO v3 the behavior of this function will switch to that of iio.v3.imread. To keep the current behavior (and make this warning disappear) use `import imageio.v2 as imageio` or call `imageio.v2.imread` directly.
  images.append(imageio.imread(filename))
In [ ]:

In [ ]:

In [ ]:

In [21]:

In [22]:
clumpmap0 = csiborgtools.read.read_h5(paths.particles_path(nsim0))["clumpmap"]
parts0 = csiborgtools.read.read_h5(paths.initmatch_path(nsim0, "particles"))["particles"]
clid2map0 = {clid: i for i, clid in enumerate(clumpmap0[:, 0])}

# # clumpmapx = csiborgtools.read.read_h5(paths.particles_path(nsimx))["clumpmap"]
# # partsx = csiborgtools.read.read_h5(paths.initmatch_path(nsimx, "particles"))["particles"]
# # clid2mapx = {clid: i for i, clid in enumerate(clumpmapx[:, 0])}

cat0 = csiborgtools.read.HaloCatalogue(nsim0, paths, load_initial=True, minmass=None, with_lagpatch=True, load_clumps_cat=True)
catx = csiborgtools.read.HaloCatalogue(nsimx, paths, load_initial=True, minmass=None, with_lagpatch=True, load_clumps_cat=True)
In [24]:
f = np.load(paths.velocity_field_path("PCS", 7444))
In [28]:
plt.figure()
plt.imshow(np.sum(f[0, ...], axis=0))
plt.show()
Figure
No description has been provided for this image
In [ ]:

In [76]:
x = pair.dist(in_initial=True, norm_kind="sum_patch")
y = pair.overlap(False)

x = np.concatenate(x)
y = np.concatenate(y)
In [80]:
from scipy.special import comb
from itertools import combinations
In [81]:
ics = paths.get_ics()
In [88]:
import random

combs = list(combinations(ics, 2))
random.shuffle(combs)
In [91]:
random.Random(32).shuffle(combs)
In [92]:
combs
Out[92]:
[(8236, 9676),
 (7756, 7924),
 (7684, 9796),
 (7996, 9244),
 (8380, 8476),
 (8596, 8956),
 (9220, 9268),
 (8572, 9604),
 (7588, 9028),
 (7636, 7732),
 (7588, 8884),
 (7636, 8980),
 (7564, 9460),
 (8092, 9292),
 (7900, 8548),
 (7804, 9508),
 (8500, 9004),
 (8212, 9148),
 (7516, 8548),
 (7684, 8140),
 (8476, 8908),
 (8308, 8452),
 (7756, 8188),
 (8620, 9772),
 (8932, 9388),
 (8692, 9028),
 (7732, 9028),
 (8476, 8716),
 (7924, 8188),
 (9388, 9700),
 (8620, 9364),
 (9148, 9412),
 (7540, 8860),
 (8500, 9244),
 (8548, 9508),
 (7972, 8596),
 (8356, 8524),
 (7684, 8764),
 (7588, 8524),
 (8044, 8188),
 (7924, 9364),
 (7492, 8716),
 (8332, 8404),
 (7804, 8260),
 (8044, 8524),
 (7804, 8812),
 (8692, 8812),
 (8332, 8956),
 (9100, 9316),
 (7684, 9844),
 (7852, 8932),
 (7468, 9316),
 (7900, 9196),
 (7780, 8188),
 (8284, 8428),
 (8500, 9028),
 (7732, 9004),
 (8980, 9556),
 (7444, 7876),
 (9028, 9340),
 (8476, 8788),
 (9508, 9796),
 (9292, 9820),
 (7828, 8740),
 (7876, 9556),
 (7468, 9220),
 (8404, 8668),
 (7924, 8596),
 (8524, 9196),
 (7948, 9364),
 (8740, 8788),
 (8308, 8956),
 (9364, 9772),
 (7492, 9364),
 (7876, 9388),
 (7804, 8212),
 (9052, 9220),
 (7468, 9628),
 (8236, 8308),
 (8548, 9028),
 (7564, 7756),
 (8884, 9652),
 (9460, 9532),
 (7444, 9772),
 (8860, 8908),
 (7924, 9196),
 (7636, 8164),
 (7468, 8404),
 (7516, 8836),
 (8212, 8980),
 (8356, 9004),
 (9004, 9340),
 (8428, 8956),
 (8404, 9700),
 (8140, 8716),
 (7708, 8788),
 (7660, 8260),
 (8836, 9196),
 (7876, 9748),
 (7684, 8740),
 (8500, 8884),
 (7924, 8092),
 (9652, 9772),
 (8548, 9124),
 (7948, 8764),
 (7516, 8164),
 (7708, 9364),
 (7540, 7828),
 (8404, 9004),
 (7612, 9004),
 (8836, 9796),
 (8428, 8500),
 (8644, 9580),
 (8020, 8812),
 (8644, 8884),
 (7852, 9628),
 (9340, 9652),
 (7588, 9484),
 (7900, 8668),
 (7516, 9700),
 (8212, 8500),
 (8308, 9724),
 (7468, 8020),
 (7516, 7900),
 (7828, 8788),
 (8524, 9412),
 (7684, 7972),
 (9148, 9748),
 (7708, 9412),
 (7732, 9580),
 (7924, 8428),
 (9388, 9844),
 (8068, 8908),
 (8140, 9052),
 (7564, 9652),
 (7468, 9124),
 (7660, 9796),
 (8260, 9532),
 (7564, 8476),
 (7492, 8932),
 (8932, 9124),
 (8212, 8236),
 (8596, 9100),
 (8860, 9604),
 (8956, 9676),
 (8308, 9172),
 (8380, 8500),
 (7900, 7996),
 (8692, 9388),
 (7996, 8740),
 (8524, 9148),
 (7444, 8692),
 (8596, 9412),
 (8020, 8860),
 (7900, 9340),
 (8044, 9364),
 (7780, 8212),
 (7612, 9196),
 (8692, 9796),
 (8596, 8692),
 (7732, 9436),
 (8668, 9724),
 (8212, 8956),
 (8404, 9628),
 (9532, 9820),
 (8764, 9004),
 (8188, 8332),
 (7924, 8692),
 (7756, 9676),
 (7756, 9316),
 (8452, 9748),
 (8476, 9004),
 (7732, 9484),
 (8452, 9844),
 (8260, 8284),
 (8044, 9748),
 (7564, 8620),
 (8260, 8836),
 (8740, 9556),
 (8452, 9292),
 (8140, 8380),
 (8500, 8572),
 (7516, 8572),
 (8236, 9628),
 (8332, 9196),
 (8644, 9364),
 (8428, 9196),
 (8812, 9172),
 (8836, 9076),
 (7828, 8404),
 (8092, 8788),
 (8644, 9388),
 (8308, 9244),
 (8188, 9268),
 (8284, 8764),
 (8500, 9388),
 (7564, 8812),
 (7588, 8644),
 (8212, 8764),
 (7732, 8044),
 (7588, 7828),
 (7852, 9436),
 (8668, 9388),
 (7828, 8164),
 (8044, 9316),
 (8116, 8956),
 (8284, 8692),
 (8884, 9100),
 (7468, 9820),
 (8596, 8860),
 (9316, 9772),
 (9004, 9172),
 (8212, 9364),
 (7828, 9724),
 (8500, 9124),
 (8716, 9364),
 (7900, 8020),
 (8404, 9772),
 (7468, 8692),
 (7876, 9148),
 (9076, 9844),
 (8596, 9340),
 (8548, 8956),
 (9148, 9268),
 (8116, 9700),
 (8092, 9532),
 (7948, 8980),
 (7564, 8716),
 (8308, 9508),
 (8524, 9796),
 (8020, 9460),
 (7564, 9796),
 (8740, 9028),
 (9412, 9460),
 (7492, 9652),
 (7468, 8884),
 (9196, 9844),
 (7732, 9172),
 (9028, 9412),
 (7756, 9196),
 (8332, 9796),
 (8548, 9484),
 (8404, 8956),
 (8836, 9220),
 (8356, 9076),
 (8308, 9196),
 (8884, 9244),
 (9580, 9676),
 (7876, 7972),
 (7564, 9820),
 (9076, 9700),
 (7804, 9196),
 (7876, 8572),
 (8788, 9388),
 (8188, 8236),
 (7540, 8284),
 (7612, 8692),
 (8500, 8908),
 (8428, 9172),
 (7948, 8500),
 (7660, 8236),
 (7828, 9796),
 (7852, 8020),
 (8260, 9724),
 (8020, 9172),
 (9340, 9700),
 (7444, 8644),
 (7900, 8236),
 (8164, 8788),
 (8620, 9004),
 (7564, 8308),
 (7996, 8428),
 (8236, 9700),
 (8188, 8308),
 (7660, 9052),
 (9100, 9292),
 (7444, 8884),
 (7828, 8260),
 (8404, 9268),
 (7972, 9076),
 (7444, 8212),
 (8524, 9364),
 (8308, 8668),
 (8500, 8812),
 (7996, 8788),
 (8020, 8140),
 (8764, 9412),
 (9244, 9436),
 (8908, 9724),
 (8212, 9532),
 (8692, 8956),
 (8212, 9268),
 (7924, 8044),
 (7612, 8092),
 (8956, 9004),
 (8788, 9436),
 (9004, 9484),
 (8020, 9244),
 (8812, 9508),
 (8116, 8236),
 (9268, 9388),
 (8668, 9460),
 (8212, 8836),
 (8908, 9508),
 (7636, 8260),
 (8692, 8788),
 (9148, 9844),
 (7588, 9844),
 (9076, 9436),
 (7900, 8524),
 (7516, 9244),
 (8332, 8884),
 (7708, 8116),
 (7972, 9652),
 (7804, 7924),
 (7660, 9364),
 (8092, 9484),
 (8380, 9700),
 (8356, 8860),
 (8596, 8908),
 (7972, 8812),
 (7804, 8236),
 (8236, 9340),
 (7756, 9148),
 (8068, 9676),
 (8788, 9292),
 (7972, 9220),
 (8044, 9580),
 (9604, 9628),
 (8716, 9604),
 (8404, 8476),
 (8668, 9676),
 (8308, 8980),
 (7828, 8188),
 (8500, 8980),
 (7732, 7804),
 (8356, 8908),
 (8884, 8932),
 (7636, 9604),
 (8188, 8788),
 (8020, 9004),
 (8812, 9412),
 (7564, 9772),
 (7996, 9844),
 (8572, 9004),
 (8572, 9340),
 (7972, 8764),
 (8548, 9340),
 (7852, 9340),
 (8332, 8788),
 (8164, 9460),
 (8596, 8620),
 (8212, 9292),
 (7564, 8212),
 (8092, 9436),
 (7612, 7804),
 (7660, 9148),
 (8356, 9052),
 (9100, 9148),
 (8596, 8932),
 (7732, 8236),
 (7900, 9364),
 (7708, 7972),
 (7636, 8404),
 (9316, 9340),
 (8692, 9604),
 (8764, 9196),
 (9460, 9508),
 (7588, 8764),
 (8260, 9652),
 (7444, 7612),
 (8332, 9676),
 (7684, 8308),
 (8524, 9220),
 (8188, 9700),
 (7996, 8980),
 (8284, 9580),
 (8140, 9508),
 (8572, 8836),
 (7924, 9748),
 (8884, 9748),
 (9148, 9772),
 (8116, 8140),
 (8308, 9028),
 (8980, 9052),
 (8116, 8788),
 (8164, 8836),
 (8620, 9796),
 (7828, 8908),
 (8908, 9172),
 (8572, 8692),
 (7684, 8260),
 (8764, 9436),
 (8092, 9724),
 (8404, 9748),
 (7636, 8476),
 (9412, 9652),
 (8404, 8860),
 (8812, 9292),
 (8548, 8932),
 (9388, 9628),
 (7780, 8788),
 (8140, 9148),
 (7588, 9268),
 (7924, 9340),
 (9268, 9412),
 (8236, 9772),
 (7780, 8548),
 (7444, 9580),
 (7564, 8836),
 (7636, 9292),
 (7660, 9196),
 (7564, 9076),
 (8716, 9532),
 (7540, 8644),
 (8476, 9772),
 (7708, 9100),
 (8884, 9268),
 (9148, 9508),
 (8644, 9076),
 (8836, 8860),
 (7564, 8140),
 (8644, 9244),
 (7852, 8620),
 (7876, 8212),
 (7444, 8812),
 (8524, 8836),
 (7492, 8644),
 (8164, 9076),
 (8020, 9436),
 (8692, 9172),
 (8116, 9076),
 (8572, 8716),
 (8116, 8668),
 (7684, 8116),
 (9532, 9748),
 (8764, 9340),
 (8692, 9244),
 (8572, 9148),
 (8500, 9556),
 (8500, 9532),
 (7588, 9244),
 (7492, 7852),
 (8356, 8788),
 (9148, 9700),
 (7660, 9460),
 (7780, 8428),
 (8380, 9052),
 (7588, 8812),
 (7780, 8980),
 (8452, 9628),
 (8644, 8860),
 (8188, 9412),
 (9244, 9556),
 (7996, 8068),
 (7756, 9412),
 (7804, 8524),
 (7828, 7852),
 (8788, 9628),
 (8884, 9556),
 (7516, 9268),
 (9100, 9820),
 (9220, 9340),
 (7660, 9604),
 (8188, 8980),
 (7468, 7804),
 (9292, 9580),
 (7732, 9076),
 (8620, 9052),
 (7444, 8452),
 (8068, 8884),
 (8332, 9700),
 (9076, 9652),
 (8332, 9172),
 (7756, 9388),
 (8284, 9820),
 (9556, 9772),
 (7972, 8044),
 (7852, 9244),
 (7852, 9316),
 (7612, 9172),
 (8332, 9052),
 (7588, 8692),
 (9340, 9388),
 (8116, 9124),
 (8572, 9700),
 (8668, 8788),
 (8236, 8452),
 (8092, 8428),
 (8020, 9556),
 (7468, 7828),
 (7564, 7684),
 (8380, 9004),
 (8212, 9340),
 (7780, 9028),
 (7780, 9700),
 (8404, 8980),
 (7684, 8620),
 (7684, 8524),
 (7876, 9196),
 (8236, 9532),
 (7684, 9364),
 (8260, 8908),
 (7948, 9028),
 (8908, 8980),
 (7516, 8428),
 (8212, 9676),
 (7876, 9796),
 (8140, 9076),
 (8020, 9268),
 (7516, 8812),
 (7468, 8260),
 (7948, 9748),
 (8740, 8908),
 (7444, 7468),
 (8692, 9436),
 (8308, 8428),
 (8404, 9340),
 (8188, 8884),
 (7636, 8092),
 (8404, 9292),
 (8116, 8164),
 (7540, 7996),
 (9460, 9820),
 (9220, 9244),
 (8740, 8932),
 (8716, 9076),
 (8596, 9484),
 (8692, 9076),
 (8116, 8596),
 (7660, 8620),
 (8308, 8860),
 (9124, 9724),
 (8332, 9532),
 (7852, 9196),
 (8932, 9004),
 (7732, 9316),
 (8140, 9220),
 (7804, 9700),
 (8092, 9124),
 (7636, 9700),
 (8020, 9748),
 (7924, 9652),
 (7972, 8452),
 (7588, 9820),
 (8020, 8284),
 (7900, 8836),
 (8020, 8908),
 (7924, 9172),
 (8428, 8644),
 (7516, 8860),
 (7756, 9364),
 (7780, 9340),
 (8716, 8860),
 (8836, 9028),
 (7948, 8236),
 (7900, 9820),
 (7636, 9724),
 (7612, 9268),
 (9388, 9748),
 (7708, 9004),
 (8500, 8764),
 (7516, 8236),
 (8140, 8332),
 (7756, 9556),
 (7852, 9076),
 (8596, 9172),
 (8740, 8884),
 (8572, 9100),
 (8044, 8668),
 (7780, 8380),
 (7804, 9148),
 (8548, 9220),
 (8548, 9004),
 (8860, 9796),
 (7444, 8620),
 (8716, 9052),
 (7924, 9628),
 (8140, 9724),
 (7444, 8020),
 (8476, 8548),
 (7564, 8788),
 (7516, 7972),
 (7948, 9844),
 (8044, 9532),
 (8452, 9148),
 (7564, 7588),
 (8092, 8404),
 (8956, 9580),
 (9340, 9748),
 (7996, 9508),
 (7540, 8716),
 (7732, 9796),
 (7444, 8764),
 (8092, 8980),
 (8476, 8860),
 (7996, 8596),
 (8932, 9724),
 (8836, 9748),
 (8908, 9244),
 (7732, 9292),
 (8404, 9316),
 (7972, 9196),
 (7636, 8284),
 (8764, 8812),
 (7468, 8644),
 (7996, 8452),
 (7660, 7852),
 (8044, 9676),
 (8212, 9436),
 (7540, 8500),
 (9172, 9580),
 (8956, 9172),
 (8980, 9460),
 (7516, 7924),
 (8164, 8452),
 (8308, 8500),
 (8452, 8788),
 (8356, 9820),
 (7564, 8980),
 (9004, 9604),
 (7684, 7876),
 (8572, 8884),
 (7876, 9292),
 (8692, 9700),
 (7804, 8164),
 (8236, 9460),
 (7876, 9244),
 (7876, 8260),
 (8716, 8764),
 (8452, 8620),
 (9628, 9700),
 (7948, 9220),
 (7900, 8260),
 (8668, 8956),
 (7708, 8932),
 (7660, 8980),
 (8596, 9292),
 (8836, 9508),
 (7540, 7564),
 (7948, 8332),
 (8116, 8476),
 (7540, 9196),
 (9412, 9436),
 (8908, 9844),
 (7492, 8188),
 (8380, 8956),
 (9052, 9292),
 (7924, 8212),
 (9244, 9772),
 (8212, 9748),
 (7588, 9460),
 (8572, 9580),
 (7564, 9748),
 (7564, 9580),
 (9052, 9148),
 (8236, 9580),
 (7588, 9412),
 (9292, 9844),
 (7612, 8380),
 (9076, 9580),
 (8044, 9628),
 (8692, 9484),
 (8356, 9484),
 (9124, 9652),
 (7540, 8620),
 (7444, 8572),
 (7756, 8092),
 (8260, 9460),
 (8284, 9172),
 (7852, 8476),
 (8284, 8548),
 (8428, 8476),
 (9244, 9844),
 (8116, 9772),
 (7540, 8044),
 (8356, 8404),
 (8116, 9052),
 (7540, 8236),
 (8020, 8572),
 (8476, 9820),
 (7684, 7852),
 (7828, 9436),
 (7612, 7828),
 (8812, 9436),
 (7564, 9052),
 (8404, 9388),
 (8980, 9412),
 (9028, 9220),
 (8476, 9460),
 (7804, 8692),
 (8308, 9388),
 (8572, 9484),
 (8668, 8692),
 (7468, 8716),
 (8044, 8356),
 (8356, 9604),
 (7900, 7924),
 (8164, 9316),
 (8356, 9676),
 (9484, 9844),
 (7780, 7828),
 (8788, 8884),
 (9172, 9532),
 (7804, 9532),
 (8188, 8692),
 (8236, 9004),
 (8620, 8884),
 (8092, 9172),
 (8092, 8236),
 (7492, 9268),
 (9196, 9508),
 (8044, 8572),
 (8428, 9124),
 (8380, 9292),
 (7660, 9484),
 (7540, 8476),
 (7660, 8908),
 (7564, 7996),
 (7972, 9628),
 (7756, 9748),
 (7948, 9100),
 (7516, 8932),
 (9436, 9676),
 (7516, 9436),
 (7804, 8764),
 (7636, 8932),
 (7972, 9580),
 (8020, 9076),
 (7708, 8212),
 (8188, 8668),
 (8428, 9820),
 (7708, 9340),
 (8452, 9436),
 (8236, 9364),
 (7636, 9220),
 (8068, 9484),
 (7588, 9364),
 (8188, 8404),
 (9244, 9508),
 (7924, 9052),
 (7780, 8956),
 (7612, 8332),
 (7780, 9844),
 (8620, 9196),
 (8044, 9436),
 (8092, 8836),
 (8404, 8596),
 (8716, 8812),
 (8956, 9556),
 (8788, 9340),
 (8788, 8812),
 (7636, 8860),
 (7492, 9484),
 (7564, 9604),
 (8836, 9772),
 (7540, 9748),
 (7780, 8500),
 (7468, 8668),
 (7444, 8932),
 (7588, 8452),
 (8236, 9220),
 (8860, 8980),
 (7756, 9220),
 (7996, 9364),
 (8524, 9484),
 (9004, 9292),
 (7516, 8524),
 (8476, 8572),
 (8116, 9844),
 (7828, 8140),
 (9148, 9388),
 (7948, 7972),
 (9244, 9748),
 (8308, 9748),
 (7996, 8908),
 (8092, 9220),
 (7876, 9676),
 (7612, 9220),
 (8572, 8596),
 (8524, 8812),
 (7516, 9844),
 (8476, 9028),
 (8116, 9412),
 (8212, 9412),
 (7852, 9412),
 (8164, 8260),
 (7660, 8548),
 (8548, 9052),
 (7540, 9388),
 (8452, 9004),
 (8092, 8212),
 (7972, 8380),
 (7708, 8284),
 (9076, 9556),
 (9052, 9844),
 (7996, 8284),
 (7780, 7804),
 (8092, 9772),
 (7804, 8356),
 (8836, 9316),
 (8164, 9412),
 (8956, 9316),
 (8764, 9172),
 (8044, 8692),
 (9004, 9028),
 (7660, 7756),
 (7780, 9364),
 (7756, 9052),
 (8236, 9484),
 (8284, 9676),
 (8932, 9148),
 (8260, 8596),
 (8236, 8956),
 (8404, 9820),
 (7732, 9388),
 (8836, 8956),
 (8644, 9700),
 (7804, 8092),
 (7684, 8548),
 (8788, 8860),
 (8332, 9316),
 (9124, 9820),
 (8932, 9076),
 (8956, 9220),
 (7588, 8116),
 (8788, 9244),
 (9340, 9556),
 (7540, 9076),
 (8188, 9652),
 (7564, 8092),
 (9148, 9676),
 (8404, 8620),
 (7468, 9388),
 (7756, 8212),
 (8452, 8764),
 (7780, 8716),
 (7636, 9388),
 (7684, 8644),
 (7516, 8188),
 (7516, 7588),
 (8812, 8884),
 (7516, 8644),
 (9028, 9292),
 (7900, 8716),
 (9508, 9748),
 (7780, 9100),
 (8908, 9052),
 (7492, 8668),
 (8188, 9292),
 (8140, 9628),
 (9244, 9604),
 (8716, 9028),
 (8452, 9052),
 (7684, 8332),
 (8428, 9844),
 (9172, 9676),
 (8308, 8788),
 (8116, 9100),
 (7636, 9532),
 (8908, 9268),
 (7780, 9628),
 (7516, 8908),
 (9532, 9676),
 (8716, 8836),
 (8692, 8932),
 (8356, 8836),
 (8308, 9772),
 (8572, 8956),
 (7468, 9580),
 (8428, 9004),
 (8044, 8596),
 (8260, 8428),
 (8452, 9700),
 (8356, 9316),
 (7564, 9388),
 (7732, 8932),
 (8860, 9388),
 (8452, 8716),
 (8164, 8212),
 (8188, 9628),
 (7804, 8332),
 (7588, 8380),
 (7564, 9148),
 (8380, 9580),
 (8380, 8692),
 (7492, 8860),
 (8524, 9604),
 (8260, 9292),
 (7780, 7924),
 (8260, 9148),
 (8380, 9220),
 (7972, 8236),
 (8476, 9652),
 (7852, 8596),
 (7540, 7852),
 (7564, 8548),
 (8140, 9388),
 (8356, 8548),
 (9148, 9196),
 (8860, 9820),
 (8140, 8188),
 (8788, 9412),
 (8092, 8356),
 (7828, 9844),
 (8644, 9748),
 (7876, 9220),
 (8380, 9724),
 (7636, 7804),
 (7852, 8236),
 (8428, 9676),
 (7564, 8932),
 (8860, 9772),
 (7900, 9796),
 (9148, 9796),
 (9076, 9484),
 (8308, 8884),
 (8380, 8932),
 (7900, 8284),
 (8644, 9028),
 (8332, 8908),
 (7708, 8164),
 (7684, 8812),
 (7444, 9436),
 (7780, 8620),
 (7900, 8428),
 (8764, 8980),
 (9196, 9700),
 (9316, 9484),
 (7588, 9604),
 (7996, 9628),
 (8092, 8308),
 (7468, 8164),
 (8644, 9556),
 (8620, 8980),
 (8068, 8332),
 (9052, 9652),
 (7708, 8380),
 (8908, 9124),
 (7948, 8644),
 (7900, 9748),
 (8332, 9652),
 (9052, 9244),
 (9172, 9484),
 (7612, 9100),
 (7660, 8932),
 (8188, 8740),
 (8836, 9052),
 (7948, 9484),
 (7468, 8332),
 (7612, 8548),
 (8380, 9316),
 (7924, 8548),
 (7972, 9460),
 (7564, 9292),
 (8164, 8620),
 (8812, 9460),
 (8836, 9292),
 (8140, 8908),
 (8644, 9124),
 (7828, 9412),
 (7444, 7948),
 (7516, 9508),
 (7588, 8932),
 (8164, 8356),
 (8788, 9508),
 (8116, 8644),
 (8332, 9844),
 (7588, 7876),
 (9556, 9748),
 (7612, 9244),
 (7564, 7948),
 (7492, 9388),
 (9172, 9556),
 (7516, 9580),
 (8092, 8500),
 (8404, 8764),
 (8044, 9508),
 (8356, 9748),
 (7492, 8236),
 (8644, 9340),
 (7660, 8404),
 (7804, 9436),
 (7636, 8524),
 (8212, 8380),
 (8404, 9676),
 (9556, 9628),
 (8908, 9412),
 (8524, 9076),
 (8596, 8764),
 (7516, 9796),
 (7540, 8932),
 (7540, 9820),
 (7948, 8164),
 (7468, 9652),
 (7564, 7780),
 (7780, 9484),
 (8332, 9220),
 (7540, 9508),
 (7900, 9028),
 ...]
In [ ]:

In [77]:
plt.figure()
plt.scatter(x, y, s=0.1)
plt.show()
Figure
No description has been provided for this image
In [ ]:

In [53]:
for i in list(clid2map0.keys())[50000:]:
    print(i)
    k = clid2map0[i]

    X = csiborgtools.read.load_parent_particles(k, parts0, clumpmap0, clid2map0, cat0.clumps_cat)
    if X is not None:
        break
X
5029841
5029842
5029843
5029844
5029849
5029851
5029852
5029855
5029857
5029859
5029860
5029861
5029864
5029866
5029869
5029871
5029873
5029874
5029876
5029878
5029879
5029880
5029884
5029897
5029899
5029900
5029905
5029906
5029909
5029910
5029913
5029914
5029918
5029919
5029920
5029922
5029924
5029925
5029928
5029930
5029931
5029933
5029936
5029941
5029943
5029946
5029950
5029952
5029956
5029958
5029959
5029961
5029967
5029968
5029969
5029970
5029974
5029975
5029976
5029978
5029982
5029988
5029990
5029992
5029999
5030000
5030001
5030002
5030003
5030005
5030006
5030012
5030013
5030015
5030016
5030018
5030022
5030025
5030026
5030029
5030030
5030031
5030032
5030033
5030036
5030040
5030043
5030046
5030047
5030051
5030052
5030056
5030057
5030058
5030060
5030064
5030066
5030067
5030071
5030072
5030074
5030075
5030078
5030079
5030080
5030081
5030086
5030087
5030089
5030091
5030092
5030095
5030096
5030113
5030119
5030122
5030126
5030127
5030128
5030138
5030144
5030147
5030156
5030158
5030162
5030171
5030183
5030184
5030187
5030188
5030189
5030191
5030195
5030203
5030206
5030211
5030218
5030221
5030230
5030232
5030247
5030260
5030273
5030295
5030301
5030351
5030374
5030394
5030410
5030467
5030540
5032241
5032279
5032324
5032333
5032344
5032347
5032374
5032381
5032395
5032399
5032405
5032410
5032411
5032424
5032425
5032440
5032454
5032460
5032462
5032464
5032481
5032490
5032509
5032536
5032539
5032568
5032606
5032646
5032680
5032692
5032700
5032715
5032729
5032736
5032744
5032745
5032746
5032756
5032773
5032791
5032792
5032817
5032825
5032829
5032851
5032852
5032879
5032889
5032895
5032899
5032930
5032963
5032968
5032977
5032985
5033003
5033015
5033016
5033029
5033045
5033047
5033049
5033065
5033104
5033115
5033118
5033135
5033184
5033191
5033201
5033225
5033235
5033260
5033273
5033274
5033289
5033299
5033312
5033317
5033352
5033358
5033403
5033423
5033479
5033490
5033500
5033529
5033558
5033563
5033566
5033602
5033688
5033692
5033715
5033729
5033734
5033735
5033748
5033754
5033768
5033791
5033804
5033828
5033842
5033859
5033875
5033876
5033877
5033881
5033902
5033928
5033987
5033993
5033994
5033995
5034073
5034074
5034078
5034079
5034099
5034127
5034131
5034143
5034156
5034217
5034275
5034277
5034303
5034307
5034323
5034325
5034392
5034400
5034404
5034414
5034416
5034431
5034439
5034470
5034494
5034513
5034520
5034526
5034531
5034551
5034580
5034601
5034654
5034659
5034696
5034701
5034720
5034742
5034772
5034777
5034806
5034813
5034822
5034825
5034828
5034853
5034869
5034900
5034902
5034912
5034955
5034962
5034974
5034991
5034999
5035017
5035020
5035061
5035099
5035105
5035123
5035190
5035219
5035295
5035364
5035379
5035412
5035459
5035480
5035517
5035532
5035628
5035690
5035715
5035812
5035831
5035873
5035892
5036097
5036507
5040706
5040971
5041087
5041184
5041214
5041220
5041797
5041988
5042282
5042343
5042352
5042905
5043266
5043361
5043671
5043787
5043830
5043855
5044197
5044333
5044543
5045386
5045681
5049572
5050601
5057241
5068265
5068595
5079055
5104089
5104090
5104093
5104094
5104096
5104101
5104104
5104106
5104107
5104111
5104113
5104115
5104118
5104119
5104120
5104125
5104130
5104132
5104133
5104138
5104140
5104143
5104145
5104146
5104148
5104149
5104152
5104156
5104157
5104158
5104160
5104162
5104163
5104166
5104168
5104170
5104171
5104174
5104180
5104181
5104182
5104183
5104189
5104192
5104193
5104196
5104199
5104202
5104208
5104210
5104213
5104216
5104218
5104222
5104224
5104226
5104233
5104251
5104254
5104263
5104280
5104281
5104283
5104311
5104473
5104531
5104696
5104697
5104701
5104708
5104718
5104731
5104735
5104737
5104755
5104762
5104775
5104778
5104782
5104787
5104788
5104803
5104849
5104850
5104851
5104853
5104854
5104859
5104868
5104870
5104873
5104875
5104879
5104887
5104895
5104898
5104899
5104904
5104905
5104912
5104915
5104919
5104920
5104926
5104927
5104932
5104936
5104939
5104945
5104955
5104958
5104959
5104961
5104971
5104973
5104982
5104985
5104987
5104998
5105016
5105019
5105021
5105022
5105026
5105027
5105037
5105046
5105055
5105081
5105084
5105086
5105087
5105091
5105094
5105098
5105114
5105122
5105123
5105124
5105126
5105134
5105140
5105143
5105147
5105149
5105152
5105154
5105156
5105161
5105164
5105169
5105174
5105178
5105180
5105188
5105190
5105193
5105194
5105195
5105196
5105213
5105215
5105229
5105231
5105237
5105244
5105249
5105251
5105255
5105261
5105271
5105276
5105277
5105278
5105279
5105285
5105288
5105289
5105293
5105316
5105318
5105325
5105329
5105331
5105337
5105347
5105357
5105361
5105371
5105384
5105385
5105395
5105398
5105407
5105420
5105424
5105425
5105428
5105433
5105438
5105441
5105451
5105456
5105459
5105463
5105471
5105473
5105483
5105485
5105488
5105489
5105492
5105510
5105537
5105539
5105540
5105541
5105553
5105576
5105592
5105599
5105605
5105607
5105609
5105625
5105637
5105639
5105644
5105648
5105677
5105679
5105697
5105699
5105715
5105718
5105719
5105722
5105727
5105731
5105738
5105740
5105741
5105757
5105761
5105763
5105764
5105835
5105846
5105857
5105858
5105862
5105895
5105919
5105920
5105922
5105937
5105942
5105944
5105954
5106005
5106031
5106032
5106038
5106046
5106052
5106126
5106162
5106166
5106196
5106268
5106304
5106329
5106468
5108166
5108394
5108598
5108649
5108670
5108774
5108828
5108845
5108859
5108861
5108890
5108969
5109006
5109007
5109027
5109041
5109054
5109057
5109070
5109072
5109116
5109118
5109166
5109181
5109193
5109218
5109224
5109273
5109334
5109342
5109366
5109424
5109443
5109444
5109454
5109457
5109507
5109522
5109555
5109578
5109622
5109629
5109646
5109654
5109686
5109690
5109700
5109716
5109726
5109734
5109735
5109754
5109843
5109849
5109901
5109905
5109912
5109916
5109949
5109970
5109971
5110022
5110026
5110048
5110052
5110074
5110089
5110157
5110171
5110175
5110214
5110224
5110295
5110331
5110362
5110392
5110397
5110432
5110437
5110470
5110474
5110488
5110514
5110515
5110521
5110526
5110535
5110617
5110688
5110698
5110713
5110741
5110802
5110814
5110821
5110883
5110911
5110956
5110997
5111042
5111050
5111109
5111112
5111172
5111202
5111231
5111233
5111242
5111313
5111322
5111337
5111377
5111391
5111423
5111444
5111493
5111502
5111529
5111569
5111641
5111643
5111654
5111674
5111688
5111692
5111762
5111857
5111870
5111891
5112023
5112078
5112110
5112204
5112208
5112228
5112280
5112315
5112316
5112343
5112351
5112429
5112461
5112493
5112505
5112520
5112689
5112695
5112711
5112787
5112790
5112796
5112797
5112819
5112830
5112841
5112861
5112866
5112884
5112903
5112988
5113017
5113084
5113101
5113201
5113205
5113243
5113298
5113335
5113516
5113529
5113552
5113570
5113606
5113613
5113673
5113849
5113900
5114050
5114065
5114126
5114216
5114217
5114268
5114300
5114674
5114687
5114713
5114790
5114863
5114877
5114892
5114921
5115123
5115381
5115680
5116142
5116243
5116461
5117037
5117060
5117104
5117255
5118180
5118624
5118681
5118901
5120549
5120837
5121138
5121523
5121526
5121994
5122597
5122662
5122741
5122888
5123257
5123933
5124109
5124150
5124278
5125059
5125092
5125312
5125547
5126054
5126131
5126459
5126592
5127482
5127655
5127932
5127960
5128051
5128232
5128307
5128340
5128699
5128712
5128726
5128927
5129120
5129187
5129236
5129280
5129694
5129754
5129821
5129972
5130275
5130486
5130581
5131046
5131406
5131669
5131703
5131901
5132213
5132461
5132683
5132937
5132992
5133106
5133728
5133815
5134061
5134136
5134195
5134426
5134511
5134581
5135484
5135536
5135550
5135608
5135778
5135798
5136061
5136952
5137171
5137407
5137497
5137929
5137993
5138069
5138357
5138891
5139085
5139621
5139683
5139749
5139994
5140124
5140149
5140177
5140473
5140952
5141220
5141346
5141532
5141677
5142404
5142455
5142653
5142744
5142939
5143466
5144202
5144249
5144631
5147102
5147207
5147559
5147650
5148967
5149007
5149234
5149503
5150725
5151013
5151725
5152203
5152378
5152397
5153936
5154079
5154093
5154152
5154442
5155546
5155868
5156604
5156846
5156925
5157059
5157236
5157435
5157590
5157834
5158362
5158704
5158798
5159039
5159308
5159738
5159839
5160108
5160121
5160918
5160951
5162217
5162383
5162511
5162982
5163458
5164142
5164153
5164408
5164484
5164641
5164802
5164847
5164866
5165968
5166894
5167004
5167202
5167337
5167506
5167960
5168148
5168277
5168336
5168579
5168815
5169332
5169559
5169935
5170166
5170566
5170857
5171277
5171624
5171969
5172155
5172228
5172388
5172548
5173276
5173843
5174267
5174472
5174593
5174624
5191765
5191766
5191767
5191770
5191772
5191773
5191774
5191776
5191777
5191779
5191781
5191782
5191783
5191784
5191785
5191786
5191787
5191788
5191790
5191792
5191793
5191794
5191795
5191797
5191799
5191800
5191801
5191802
5191807
5191808
5191810
5191814
5191815
5191817
5191818
5191819
5191821
5191826
5191839
5191843
5191861
5191886
5191905
5191931
5191936
5191962
5191966
5191970
5191973
5191974
5191975
5191979
5191980
5191989
5191992
5191995
5191996
5192000
5192001
5192004
5192005
5192010
5192012
5192015
5192016
5192021
5192027
5192029
5192032
5192038
5192039
5192040
5192042
5192043
5192044
5192049
5192053
5192054
5192058
5192059
5192066
5192067
5192069
5192074
5192076
5192080
5192082
5192085
5192086
5192087
5192089
5192092
5192094
5192104
5192105
5192107
5192108
5192109
5192111
5192113
5192115
5192116
5192119
5192120
5192123
5192125
5192127
5192128
5192135
5192136
5192137
5192139
5192140
5192141
5192142
5192145
5192148
5192149
5192158
5192159
5192162
5192164
5192165
5192168
5192172
5192173
5192178
5192179
5192182
5192185
5192186
5192189
5192191
5192192
5192195
5192196
5192198
5192203
5192204
5192208
5192211
5192214
5192222
5192225
5192227
5192228
5192229
5192230
5192233
5192234
5192238
5192239
5192240
5192241
5192242
5192246
5192248
5192249
5192252
5192253
5192254
5192256
5192258
5192260
5192272
5192273
5192274
5192275
5192278
5192279
5192280
5192283
5192291
5192292
5192295
5192296
5192300
5192301
5192304
5192311
5192312
5192318
5192319
5192321
5192324
5192327
5192328
5192329
5192330
5192333
5192334
5192338
5192339
5192342
5192343
5192345
5192352
5192355
5192360
5192361
5192364
5192368
5192369
5192370
5192371
5192372
5192374
5192377
5192382
5192383
5192385
5192386
5192387
5192388
5192389
5192398
5192401
5192402
5192405
5192406
5192407
5192408
5192409
5192415
5192417
5192421
5192422
5192424
5192432
5192433
5192434
5192435
5192436
5192437
5192438
5192439
5192441
5192443
5192445
5192446
5192448
5192452
5192453
5192454
5192460
5192462
5192463
5192467
5192468
5192470
5192471
5192473
5192474
5192478
5192479
5192482
5192486
5192496
5192497
5192501
5192503
5192508
5192509
5192510
5192513
5192527
5192528
5192529
5192531
5192534
5192536
5192537
5192538
5192541
5192546
5192548
5192549
5192553
5192555
5192558
5192559
5192563
5192565
5192568
5192569
5192575
5192579
5192590
5192591
5192598
5192604
5192610
5192623
5192626
5192629
5192638
5192658
5192660
5192671
5192678
5192685
5192687
5192688
5192691
5192700
5192764
5192782
5192807
5192846
5192887
5192969
5193048
5193134
5193145
5193178
5193477
5193731
5193763
5193799
5193800
5193897
5193915
5193927
5193945
5193954
5193958
5193977
5194003
5194038
5194048
5194061
5194068
5194075
5194086
5194117
5194142
5194165
5194168
5194189
5194207
5194223
5194235
5194236
5194243
5194279
5194303
5194307
5194309
5194318
5194348
5194357
5194366
5194373
5194382
5194389
5194398
5194404
5194405
5194406
5194437
5194446
5194456
5194496
5194531
5194540
5194542
5194556
5194557
5194572
5194574
5194579
5194582
5194586
5194608
5194619
5194634
5194635
5194648
5194656
5194668
5194678
5194688
5194692
5194693
5194705
5194718
5194743
5194760
5194764
5194765
5194772
5194780
5194785
5194792
5194823
5194826
5194833
5194852
5194853
5194859
5194863
5194915
5194922
5194923
5194943
5194947
5194959
5194963
5194974
5194986
5194991
5194993
5195001
5195030
5195062
5195073
5195082
5195097
5195113
5195116
5195135
5195141
5195153
5195155
5195157
5195161
5195201
5195204
5195219
5195231
5195241
5195255
5195263
5195267
5195298
5195323
5195331
5195337
5195353
5195357
5195363
5195373
5195386
5195400
5195417
5195445
5195464
5195465
5195476
5195491
5195495
5195501
5195504
5195529
5195539
5195540
5195556
5195557
5195562
5195583
5195584
5195608
5195631
5195680
5195690
5195709
5195710
5195712
5195779
5195825
5195826
5195833
5195838
5195841
5195846
5195851
5195876
5195880
5195925
5195942
5195954
5195963
5195977
5196005
5196010
5196034
5196065
5196076
5196080
5196084
5196112
5196121
5196124
5196131
5196150
5196163
5196165
5196169
5196180
5196187
5196202
5196207
5196219
5196227
5196257
5196261
5196273
5196275
5196285
5196334
5196339
5196355
5196372
5196382
5196408
5196409
5196439
5196479
5196486
5196496
5196519
5196548
5196563
5196575
5196588
5196608
5196609
5196628
5196636
5196640
5196646
5196708
5196726
5196744
5196748
5196755
5196774
5196803
5196852
5196874
5196933
5196952
5196953
5197030
5197099
5197102
5197169
5197179
5197180
5197195
5197251
5197257
5197272
5197280
5197335
5197427
5197442
5197619
5197663
5197678
5197786
5197813
5197857
5197956
5198014
5198138
5198139
5198163
5198204
5198212
5198266
5198633
5198642
5199012
5199024
5199141
5199447
5199635
5199750
5201079
5201322
5201344
5201601
5201774
5201783
5201931
5201962
5201975
5202067
5202108
5202339
5202473
5202478
5202500
5202608
5202685
5202809
5202824
5203035
5203184
5203365
5203399
5203404
5203480
5203530
5203543
5203577
5203597
5203704
5203742
5203845
5203909
5204114
5204156
5204173
5204307
5204545
5204931
5205100
5205197
5205842
5205877
5206090
5206125
5206214
5206321
5206542
5206565
5206772
5207226
5207569
5207787
5208062
5208105
5208637
5208737
5208979
5209050
5209373
5209390
5209657
5210382
5210400
5210544
5210756
5210822
5210944
5211088
5211184
5211315
5211621
5211662
5211908
5212041
5212410
5212730
5212741
5212821
5213006
5213106
5213350
5213481
5213560
5213702
5213769
5213873
5213893
5213935
5214039
5214316
5214321
5214589
5214655
5214927
5215095
5215309
5215317
5215505
5215564
5215597
5215874
5216045
5216148
5216167
5216541
5216651
5216763
5216882
5217082
5217390
5217401
5217438
5217501
5217515
5217628
5217725
5217776
5217789
5217980
5218366
5218676
5218853
5219127
5219258
5219357
5219411
5219490
5219850
5219883
5220155
5220234
5220243
5220289
5220357
5220358
5220796
5220948
5220960
5221053
5221209
5221246
5221248
5221306
5222119
5222147
5222192
5222308
5222382
5222464
5222496
5222685
5222762
5222803
5222844
5223467
5223634
5224164
5224197
5224326
5224478
5224512
5224763
5224816
5224897
5225225
5225302
5225525
5225640
5225663
5225693
5225706
5225731
5225885
5225907
5226067
5226110
5226190
5226301
5226309
5226616
5226726
5226793
5226833
5227395
5227401
5227796
5227909
5227994
5228116
5228277
5228726
5228989
5229203
5229553
5229558
5229869
5230219
5230271
5230295
5230317
5230948
5230973
5231174
5231209
5231586
5231644
5231786
5231823
5231988
5232001
5232097
5232247
5232291
5232307
5232556
5232597
5232621
5232652
5233309
5233401
5233565
5233870
5233873
5233945
5234036
5234072
5234092
5234140
5234324
5234379
5234979
5235029
5235237
5235349
5235369
5235611
5235702
5235721
5235898
5236345
5236555
5236743
5237199
5237743
5238244
5238301
5238995
5239034
5239056
5239357
5239636
5239746
5239960
5240232
5240827
5240976
5241194
5241866
5241954
5242005
5242085
5242402
5242428
5242780
5242843
5258188
5258196
5258197
5258198
5258199
5258201
5258202
5258204
5258205
5258206
5258207
5258208
5258209
5258210
5258211
5258212
5258216
5258220
5258221
5258223
5258224
5258226
5258227
5258228
5258231
5258233
5258236
5258237
5258239
5258240
5258244
5258248
5258251
5258255
5258256
5258257
5258258
5258265
5258267
5258268
5258269
5258286
5258287
5258290
5258292
5258293
5258296
5258302
5258314
5258324
5258331
5258350
5258366
5258382
5258418
5258655
5258670
5258684
5258695
5258710
5258712
5258713
5258724
5258731
5258734
5258739
5258742
5258746
5258755
5258758
5258763
5258764
5258772
5258773
5258774
5258781
5258786
5258797
5258810
5258813
5258814
5258816
5258825
5258827
5258832
5258834
5258835
5258837
5258843
5258845
5258848
5258851
5258858
5258863
5258868
5258869
5258874
5258875
5258876
5258880
5258886
5258891
5258893
5258894
5258897
5258898
5258901
5258904
5258910
5258911
5258917
5258918
5258923
5258927
5258929
5258940
5258941
5258945
5258948
5258953
5258959
5258960
5258963
5258971
5258976
5258980
5258983
5258984
5258986
5258989
5258990
5258993
5258994
5258997
5259000
5259006
5259008
5259009
5259010
5259015
5259020
5259023
5259025
5259031
5259033
5259039
5259041
5259043
5259049
5259053
5259058
5259059
5259062
5259063
5259065
5259066
5259069
5259070
5259071
5259073
5259074
5259079
5259080
5259085
5259087
5259088
5259091
5259096
5259104
5259106
5259108
5259110
5259112
5259122
5259126
5259129
5259134
5259137
5259140
5259145
5259146
5259149
5259153
5259155
5259156
5259157
5259159
5259165
5259167
5259168
5259169
5259172
5259174
5259175
5259176
5259177
5259180
5259181
5259183
5259188
5259189
5259191
5259194
5259196
5259199
5259203
5259205
5259207
5259213
5259214
5259215
5259218
5259220
5259231
5259232
5259236
5259239
5259242
5259244
5259246
5259257
5259258
5259259
5259263
5259272
5259274
5259277
5259281
5259283
5259284
5259294
5259297
5259300
5259301
5259304
5259307
5259325
5259337
5259340
5259342
5259350
5259359
5259372
5259375
5259393
5259397
5259399
5259410
5259417
5259432
5259433
5259467
5259468
5259489
5259516
5259530
5259594
5259597
5259691
5259700
5259799
5259813
5259893
5259983
5261534
5261704
5261787
5261829
5261832
5261834
5261878
5261976
5261978
5261981
5261984
5262002
5262014
5262017
5262035
5262091
5262110
5262133
5262139
5262161
5262195
5262207
5262267
5262277
5262292
5262304
5262307
5262332
5262334
5262346
5262349
5262361
5262375
5262385
5262440
5262460
5262463
5262476
5262517
5262527
5262534
5262565
5262584
5262598
5262611
5262614
5262628
5262641
5262643
5262652
5262661
5262672
5262679
5262699
5262740
5262806
5262809
5262810
5262830
5262837
5262859
5262875
5262895
5262918
5262923
5262924
5262949
5262972
5262990
5262993
5262997
5263023
5263024
5263044
5263048
5263052
5263059
5263086
5263116
5263138
5263141
5263163
5263173
5263186
5263190
5263211
5263224
5263243
5263249
5263292
5263313
5263320
5263325
5263336
5263367
5263371
5263393
5263429
5263440
5263450
5263452
5263462
5263466
5263473
5263474
5263495
5263512
5263515
5263522
5263528
5263531
5263547
5263553
5263567
5263576
5263577
5263579
5263588
5263591
5263596
5263598
5263602
5263605
5263638
5263652
5263656
5263668
5263671
5263689
5263697
5263708
5263710
5263754
5263762
5263771
5263799
5263802
5263818
5263827
5263843
5263861
5263865
5263883
5263887
5263892
5263909
5263913
5263963
5263964
5263967
5263973
5263991
5263996
5264001
5264013
5264014
5264020
5264042
5264053
5264070
5264084
5264089
5264115
5264122
5264124
5264157
5264179
5264192
5264220
5264246
5264274
5264279
5264287
5264291
5264294
5264297
5264304
5264311
5264313
5264322
5264346
5264360
5264372
5264389
5264395
5264406
5264427
5264459
5264464
5264466
5264471
5264478
5264480
5264489
5264495
5264563
5264630
5264633
5264671
5264680
5264687
5264691
5264723
5264741
5264772
5264791
5264843
5264859
5264863
5264873
5264878
5264882
5265008
5265010
5265054
5265055
5265127
5265156
5265202
5265225
5265296
5265307
5265363
5265378
5265458
5265564
5265619
5265644
5265796
5265878
5265890
5265896
5265946
5266188
5266296
5270773
5270944
5271028
5271512
5271579
5271790
5271818
5272118
5272385
5272492
5272857
5273174
5273239
5273564
5273580
5273581
5273624
5273776
5274135
5274333
5274675
5274746
5274936
5275090
5275286
5275498
5275642
5275677
5275706
5276270
5276451
5276730
5276901
5276963
5279121
5279551
5279659
5279909
5280153
5281746
5298598
5306416
5335127
5335128
5335129
5335130
5335132
5335133
5335134
5335135
5335136
5335137
5335138
5335139
5335140
5335141
5335142
5335145
5335148
5335149
5335152
5335153
5335154
5335156
5335157
5335159
5335161
5335162
5335164
5335166
5335168
5335169
5335175
5335176
5335177
5335180
5335186
5335194
5335344
5335349
5335350
5335353
5335359
5335365
5335366
5335367
5335370
5335371
5335372
5335376
5335377
5335380
5335381
5335383
5335388
5335390
5335391
5335394
5335395
5335396
5335397
5335399
5335403
5335406
5335409
5335412
5335413
5335415
5335417
5335418
5335419
5335422
5335424
5335428
5335429
5335430
5335432
5335433
5335434
5335435
5335437
5335440
5335443
5335444
5335445
5335449
5335450
5335451
5335452
5335457
5335458
5335459
5335460
5335461
5335462
5335463
5335464
5335469
5335474
5335477
5335478
5335479
5335481
5335484
5335485
5335486
5335487
5335488
5335489
5335490
5335491
5335492
5335494
5335496
5335497
5335498
5335502
5335503
5335505
5335506
5335507
5335508
5335510
5335511
5335512
5335516
5335517
5335519
5335520
5335521
5335522
5335523
5335527
5335528
5335529
5335530
5335532
5335534
5335535
5335536
5335538
5335539
5335540
5335541
5335543
5335546
5335548
5335549
5335550
5335552
5335553
5335554
5335555
5335556
5335558
5335559
5335560
5335562
5335566
5335567
5335569
5335570
5335571
5335575
5335577
5335579
5335580
5335587
5335588
5335590
5335591
5335592
5335595
5335596
5335598
5335599
5335600
5335601
5335602
5335603
5335604
5335606
5335607
5335608
5335609
5335610
5335611
5335613
5335615
5335616
5335617
5335618
5335619
5335620
5335621
5335624
5335627
5335628
5335629
5335630
5335634
5335636
5335637
5335639
5335641
5335644
5335645
5335647
5335648
5335650
5335652
5335653
5335655
5335656
5335657
5335658
5335662
5335663
5335664
5335665
5335666
5335668
5335669
5335670
5335671
5335672
5335673
5335674
5335676
5335677
5335680
5335684
5335690
5335693
5335695
5335696
5335701
5335702
5335703
5335704
5335705
5335708
5335710
5335714
5335715
5335717
5335718
5335720
5335728
5335729
5335731
5335732
5335736
5335737
5335738
5335743
5335744
5335748
5335750
5335753
5335755
5335757
5335758
5335759
5335760
5335763
5335764
5335768
5335772
5335776
5335780
5335786
5335789
5335791
5335793
5335796
5335797
5335799
5335806
5335807
5335820
5335822
5335841
5335843
5335851
5335857
5335862
5335864
5335868
5335899
5335902
5335916
5335921
5335931
5335949
5336028
5337168
5337179
5337197
5337216
5337222
5337231
5337248
5337252
5337280
5337282
5337284
5337288
5337295
5337300
5337307
5337309
5337311
5337327
5337334
5337336
5337338
5337345
5337354
5337363
5337364
5337389
5337397
5337409
5337418
5337432
5337433
5337438
5337440
5337466
5337467
5337475
5337483
5337484
5337489
5337492
5337494
5337496
5337498
5337521
5337532
5337534
5337537
5337549
5337557
5337569
5337584
5337585
5337598
5337612
5337614
5337620
5337637
5337644
5337650
5337657
5337665
5337669
5337670
5337694
5337699
5337703
5337727
5337746
5337757
5337759
5337777
5337782
5337792
5337809
5337810
5337817
5337819
5337836
5337843
5337876
5337878
5337898
5337905
5337930
5337956
5337963
5337965
5337966
5337972
5337981
5338003
5338007
5338011
5338029
5338031
5338032
5338045
5338051
5338063
5338071
5338078
5338080
5338092
5338093
5338113
5338116
5338129
5338134
5338135
5338155
5338166
5338167
5338168
5338173
5338181
5338188
5338196
5338217
5338236
5338256
5338265
5338272
5338299
5338304
5338310
5338328
5338329
5338339
5338353
5338360
5338373
5338381
5338391
5338418
5338430
5338436
5338443
5338444
5338459
5338465
5338480
5338494
5338527
5338530
5338531
5338539
5338551
5338552
5338559
5338560
5338575
5338582
5338603
5338607
5338617
5338618
5338620
5338643
5338663
5338667
5338668
5338672
5338706
5338722
5338745
5338764
5338767
5338786
5338806
5338820
5338826
5338840
5338841
5338843
5338854
5338866
5338870
5338877
5338879
5338887
5338896
5338901
5338906
5338908
5338917
5338921
5338928
5338931
5338933
5338943
5338958
5338963
5338975
5338976
5338999
5339006
5339012
5339019
5339022
5339023
5339041
5339045
5339046
5339052
5339067
5339074
5339080
5339088
5339097
5339099
5339109
5339128
5339130
5339131
5339138
5339139
5339142
5339161
5339166
5339182
5339190
5339202
5339208
5339226
5339227
5339228
5339230
5339236
5339246
5339254
5339261
5339263
5339265
5339269
5339271
5339279
5339281
5339305
5339311
5339318
5339339
5339348
5339349
5339357
5339371
5339378
5339380
5339382
5339383
5339401
5339403
5339406
5339423
5339431
5339437
5339444
5339450
5339464
5339480
5339484
5339507
5339508
5339509
5339516
5339536
5339540
5339545
5339587
5339597
5339620
5339623
5339665
5339715
5339748
5339753
5339760
5339789
5339792
5339800
5339802
5339821
5339839
5339847
5339871
5339889
5339891
5339904
5339926
5339927
5339962
5339976
5340007
5340035
5340037
5340053
5340056
5340076
5340078
5340085
5340117
5340144
5340152
5340556
5340734
5344233
5344260
5344276
5344415
5344611
5344636
5344722
5344748
5344761
5344899
5344968
5344996
5345152
5345322
5345381
5345395
5345520
5345573
5345688
5345898
5346032
5346201
5346406
5346537
5346827
5346919
5347947
5349198
5349345
5349911
5351744
5351886
5352592
5354492
5356564
5366976
5370654
5399204
5399205
5399206
5399207
5399208
5399209
5399210
5399214
5399217
5399218
5399220
5399221
5399222
5399224
5399228
5399230
5399231
5399232
5399233
5399238
5399242
5399246
5399247
5399252
5399255
5399256
5399257
5399259
5399262
5399271
5399272
5399276
5399279
5399280
5399474
5399484
5399486
5399491
5399492
5399495
5399504
5399510
5399511
5399514
5399520
5399522
5399523
5399527
5399529
5399531
5399534
5399538
5399541
5399542
5399543
5399545
5399550
5399552
5399553
5399554
5399556
5399557
5399558
5399560
5399562
5399567
5399568
5399572
5399581
5399582
5399586
5399590
5399591
5399593
5399595
5399596
5399597
5399598
5399599
5399600
5399602
5399605
5399608
5399610
5399613
5399615
5399616
5399618
5399622
5399623
5399625
5399629
5399630
5399631
5399632
5399633
5399637
5399638
5399639
5399641
5399642
5399643
5399644
5399647
5399648
5399650
5399651
5399655
5399657
5399659
5399660
5399662
5399665
5399666
5399667
5399668
5399669
5399670
5399676
5399678
5399681
5399682
5399685
5399689
5399690
5399691
5399692
5399693
5399697
5399698
5399699
5399701
5399703
5399704
5399705
5399706
5399708
5399709
5399711
5399712
5399714
5399718
5399720
5399721
5399722
5399725
5399727
5399728
5399729
5399730
5399731
5399732
5399733
5399734
5399735
5399738
5399739
5399741
5399745
5399746
5399747
5399748
5399749
5399750
5399751
5399752
5399753
5399757
5399759
5399761
5399765
5399767
5399768
5399769
5399770
5399771
5399772
5399775
5399776
5399777
5399778
5399784
5399785
5399787
5399788
5399789
5399790
5399791
5399793
5399794
5399795
5399797
5399798
5399801
5399802
5399805
5399807
5399811
5399814
5399815
5399817
5399819
5399820
5399821
5399822
5399823
5399828
5399829
5399831
5399833
5399835
5399838
5399840
5399841
5399842
5399844
5399845
5399847
5399848
5399851
5399856
5399858
5399861
5399862
5399863
5399869
5399870
5399874
5399875
5399876
5399877
5399880
5399882
5399885
5399886
5399890
5399894
5399896
5399898
5399900
5399901
5399902
5399903
5399904
5399905
5399907
5399908
5399910
5399920
5399923
5399924
5399928
5399929
5399931
5399932
5399933
5399934
5399942
5399944
5399948
5399949
5399955
5399957
5399961
5399965
5399967
5399973
5399978
5399982
5399983
5399984
5399991
5399992
5399994
5399999
5400000
5400003
5400005
5400018
5400033
5400041
5400049
5400059
5400069
5400077
5400101
5400180
5401427
5401429
5401454
5401461
5401464
5401500
5401506
5401511
5401522
5401538
5401564
5401574
5401598
5401599
5401604
5401621
5401623
5401626
5401629
5401646
5401659
5401669
5401670
5401676
5401686
5401687
5401715
5401730
5401748
5401756
5401792
5401802
5401808
5401811
5401818
5401822
5401832
5401833
5401836
5401845
5401848
5401851
5401858
5401861
5401863
5401869
5401874
5401895
5401912
5401917
5401943
5401945
5401947
5401951
5401954
5401971
5401972
5401974
5401980
5401993
5402002
5402007
5402009
5402011
5402016
5402021
5402027
5402038
5402046
5402061
5402101
5402111
5402112
5402121
5402129
5402133
5402134
5402136
5402137
5402144
5402182
5402202
5402207
5402217
5402221
5402224
5402237
5402239
5402242
5402246
5402260
5402262
5402273
5402280
5402284
5402285
5402302
5402312
5402314
5402323
5402344
5402350
5402364
5402366
5402367
5402378
5402383
5402386
5402387
5402391
5402395
5402399
5402414
5402423
5402429
5402433
5402436
5402444
5402452
5402464
5402475
5402483
5402486
5402490
5402516
5402522
5402557
5402569
5402574
5402585
5402596
5402609
5402612
5402615
5402624
5402642
5402647
5402653
5402657
5402658
5402685
5402689
5402698
5402702
5402713
5402714
5402719
5402728
5402733
5402738
5402755
5402756
5402759
5402763
5402773
5402774
5402782
5402807
5402818
5402827
5402832
5402837
5402838
5402839
5402845
5402864
5402874
5402888
5402892
5402920
5402932
5402939
5402940
5402943
5402953
5402955
5402963
5402966
5402972
5402995
5403003
5403008
5403009
5403016
5403022
5403025
5403032
5403043
5403055
5403071
5403081
5403089
5403092
5403108
5403122
5403126
5403132
5403137
5403143
5403150
5403151
5403153
5403161
5403180
5403182
5403187
5403205
5403206
5403207
5403225
5403231
5403245
5403255
5403257
5403264
5403267
5403270
5403291
5403295
5403300
5403307
5403308
5403320
5403336
5403343
5403345
5403346
5403350
5403360
5403378
5403383
5403391
5403401
5403403
5403411
5403412
5403419
5403425
5403427
5403428
5403442
5403458
5403468
5403477
5403484
5403488
5403503
5403514
5403515
5403516
5403533
5403537
5403550
5403561
5403568
5403575
5403576
5403578
5403580
5403600
5403611
5403628
5403640
5403641
5403646
5403656
5403664
5403669
5403680
5403689
5403693
5403700
5403701
5403711
5403714
5403751
5403762
5403765
5403778
5403800
5403803
5403822
5403830
5403851
5403860
5403912
5403931
5403933
5403937
5403950
5403978
5403985
5404060
5404108
5404121
5404171
5404180
5404203
5404208
5404222
5404268
5404332
5404377
5404388
5404419
5404426
5404428
5404463
5404519
5404520
5404575
5404664
5404724
5408549
5408717
5409082
5409181
5409206
5409570
5409600
5409624
5409873
5409909
5409928
5409933
5410099
5410255
5410537
5410816
5410858
5410915
5410999
5411210
5411344
5411628
5411786
5411819
5411995
5412283
5412294
5412299
5412531
5412574
5412582
5412625
5412868
5413128
5413279
5413316
5413428
5413645
5414511
5415170
5415253
5416430
5416519
5417907
5417926
5419066
5419190
5420524
5421440
5464344
5464345
5464346
5464347
5464348
5464349
5464350
5464352
5464353
5464354
5464355
5464356
5464357
5464358
5464359
5464361
5464363
5464364
5464365
5464366
5464371
5464372
5464374
5464382
5464383
5464387
5464389
5464391
5464393
5464396
5464397
5464404
5464436
5464536
5464554
5464588
5464591
5464593
5464599
5464605
5464609
5464612
5464614
5464618
5464620
5464622
5464625
5464627
5464630
5464631
5464635
5464636
5464645
5464650
5464652
5464653
5464656
5464663
5464664
5464672
5464674
5464678
5464679
5464686
5464687
5464688
5464690
5464692
5464694
5464700
5464703
5464704
5464706
5464707
5464709
5464711
5464713
5464715
5464716
5464720
5464724
5464726
5464727
5464729
5464730
5464731
5464732
5464733
5464735
5464736
5464737
5464739
5464740
5464741
5464744
5464745
5464750
5464751
5464752
5464754
5464759
5464760
5464762
5464763
5464764
5464765
5464768
5464769
5464772
5464773
5464774
5464779
5464782
5464789
5464790
5464791
5464796
5464800
5464807
5464808
5464809
5464810
5464813
5464815
5464816
5464817
5464821
5464823
5464825
5464827
5464828
5464829
5464830
5464832
5464835
5464836
5464837
5464838
5464839
5464840
5464843
5464845
5464846
5464847
5464850
5464851
5464852
5464853
5464856
5464859
5464860
5464864
5464870
5464871
5464872
5464873
5464874
5464876
5464878
5464879
5464880
5464884
5464888
5464889
5464890
5464894
5464898
5464899
5464900
5464902
5464904
5464905
5464908
5464909
5464910
5464912
5464915
5464918
5464922
5464923
5464924
5464925
5464926
5464928
5464933
5464938
5464941
5464943
5464947
5464949
5464954
5464959
5464961
5464963
5464966
5464968
5464972
5464973
5464975
5464977
5464979
5464980
5464983
5464988
5464990
5464991
5464993
5464994
5465001
5465002
5465003
5465007
5465008
5465009
5465014
5465016
5465018
5465019
5465020
5465023
5465025
5465029
5465035
5465038
5465042
5465046
5465047
5465050
5465052
5465056
5465058
5465059
5465063
5465066
5465068
5465070
5465071
5465073
5465074
5465076
5465078
5465082
5465089
5465096
5465100
5465101
5465102
5465107
5465108
5465110
5465112
5465115
5465120
5465131
5465137
5465142
5465152
5465159
5465163
5465169
5465174
5465178
5465179
5465182
5465204
5465206
5465209
5465214
5465229
5465235
5465269
5465273
5465459
5465776
5466444
5466516
5466550
5466565
5466581
5466596
5466611
5466621
5466622
5466626
5466651
5466654
5466672
5466686
5466687
5466690
5466708
5466715
5466747
5466748
5466754
5466755
5466761
5466764
5466765
5466780
5466788
5466799
5466808
5466810
5466827
5466836
5466837
5466850
5466856
5466859
5466876
5466881
5466886
5466887
5466903
5466905
5466924
5466932
5466934
5466942
5466976
5466986
5467013
5467014
5467031
5467042
5467052
5467054
5467057
5467077
5467080
5467099
5467115
5467153
5467155
5467166
5467180
5467184
5467202
5467226
5467228
5467231
5467260
5467262
5467274
5467287
5467295
5467298
5467347
5467349
5467353
5467364
5467383
5467396
5467406
5467423
5467447
5467450
5467459
5467463
5467472
5467476
5467490
5467525
5467528
5467532
5467533
5467538
5467541
5467546
5467551
5467557
5467567
5467579
5467588
5467592
5467595
5467598
5467619
5467627
5467630
5467635
5467637
5467644
5467659
5467666
5467672
5467683
5467693
5467709
5467713
5467714
5467725
5467731
5467740
5467749
5467765
5467770
5467775
5467777
5467795
5467799
5467802
5467803
5467804
5467833
5467841
5467849
5467856
5467875
5467880
5467882
5467898
5467912
5467922
5467924
5467934
5467935
5467941
5467952
5467956
5467963
5467968
5467969
5467979
5467987
5467997
5468031
5468038
5468041
5468048
5468051
5468054
5468066
5468093
5468100
5468118
5468125
5468129
5468133
5468140
5468157
5468167
5468174
5468175
5468179
5468185
5468191
5468204
5468207
5468216
5468245
5468282
5468298
5468304
5468307
5468332
5468336
5468355
5468366
5468369
5468372
5468380
5468381
5468385
5468407
5468415
5468426
5468429
5468443
5468462
5468464
5468468
5468472
5468477
5468485
5468488
5468489
5468491
5468506
5468512
5468514
5468525
5468555
5468567
5468570
5468589
5468592
5468616
5468624
5468661
5468668
5468679
5468680
5468689
5468695
5468700
5468705
5468734
5468740
5468785
5468794
5468802
5468854
5468862
5468867
5468882
5468887
5468890
5468892
5468909
5468911
5468914
5468915
5468925
5468932
5468934
5468950
5468953
5468956
5468966
5469007
5469011
5469018
5469020
5469095
5469142
5469149
5469158
5469162
5469174
5469208
5469260
5469304
5469325
5469336
5469377
5469388
5469401
5469445
5469447
5469467
5469475
5469476
5469494
5469498
5469500
5469503
5469518
5469528
5469533
5469538
5469571
5469654
5469747
5469760
5469800
5469812
5469814
5469867
5470021
5470151
5470159
5470243
5470282
5470546
5470547
5470720
5471033
5471038
5471236
5471472
5471618
5472163
5472331
5472434
5473004
5473435
5473665
5473908
5473923
5474005
5474233
5474234
5474332
5474366
5474562
5474594
5474646
5474660
5474668
5474681
5474758
5474764
5474839
5474921
5475248
5475439
5475613
5475618
5475793
5475880
5475908
5476095
5476462
5476927
5477033
5477107
5477115
5477282
5477340
5477354
5477702
5478073
5478089
5478196
5478209
5478321
5478905
5479021
5479045
5479187
5479269
5479277
5479506
5479529
5479551
5479651
5479811
5479908
5480223
5480619
5481519
5481605
5481802
5482413
5483146
5483401
5483673
5484193
5484342
5484386
5484587
5485317
5485319
5485494
5485738
5485949
5486245
5486448
5486766
5486810
5487072
5487248
5487387
5487621
5487915
5487931
5487958
5488159
5488433
5488619
5488796
5488962
5489247
5489538
5489600
5490351
5490367
5491034
5491117
5491428
5492166
5492179
5492201
5492493
5493386
5493488
5494272
5494409
5494845
5494947
5495648
5496274
5496600
5496615
5496623
5496766
5497114
5497763
5497978
5498053
5498147
5498455
5498456
5498551
5499305
5499562
5499563
5499999
5500064
5500075
5500500
5500533
5500737
5500893
5500923
5501047
5501115
5501391
5501685
5501713
5501742
5501789
5502350
5503491
5503672
5503897
5504216
5504423
5504817
5505292
5505308
5505676
5506297
5506727
5506802
5506895
5507010
5507140
5507192
5507517
5507556
5507586
5507757
5507831
5507892
5508033
5508077
5508530
5508641
5508730
5509372
5510191
5510548
5511049
5511092
5511099
5511157
5511570
5511791
5511799
5511891
5512276
5512361
5512751
5512760
5512931
5513014
5513528
5513642
5528457
5528460
5528462
5528463
5528464
5528466
5528468
5528469
5528470
5528471
5528472
5528474
5528475
5528476
5528477
5528478
5528479
5528480
5528481
5528482
5528484
5528485
5528487
5528488
5528492
5528493
5528496
5528505
5528507
5528510
5528514
5528519
5528583
5528618
5528620
5528622
5528624
5528632
5528633
5528634
5528637
5528638
5528641
5528642
5528645
5528648
5528649
5528652
5528653
5528654
5528655
5528656
5528657
5528659
5528662
5528664
5528665
5528670
5528673
5528674
5528675
5528676
5528681
5528682
5528683
5528684
5528686
5528687
5528690
5528694
5528696
5528697
5528699
5528703
5528705
5528708
5528710
5528712
5528713
5528714
5528715
5528718
5528723
5528724
5528725
5528726
5528727
5528728
5528729
5528730
5528731
5528732
5528733
5528734
5528735
5528738
5528739
5528740
5528741
5528742
5528743
5528744
5528745
5528746
5528750
5528752
5528755
5528757
5528758
5528763
5528765
5528766
5528767
5528771
5528772
5528773
5528774
5528775
5528776
5528778
5528780
5528782
5528785
5528786
5528787
5528788
5528790
5528792
5528793
5528794
5528795
5528796
5528797
5528798
5528799
5528800
5528801
5528803
5528804
5528805
5528806
5528808
5528809
5528811
5528812
5528814
5528815
5528817
5528818
5528820
5528821
5528823
5528826
5528833
5528834
5528835
5528838
5528842
5528843
5528844
5528845
5528846
5528848
5528849
5528853
5528854
5528855
5528856
5528857
5528859
5528861
5528862
5528863
5528865
5528866
5528869
5528874
5528877
5528878
5528879
5528880
5528881
5528886
5528887
5528889
5528891
5528893
5528894
5528895
5528896
5528897
5528899
5528902
5528903
5528904
5528905
5528908
5528909
5528910
5528911
5528915
5528917
5528918
5528919
5528921
5528922
5528926
5528927
5528928
5528932
5528933
5528937
5528938
5528939
5528941
5528942
5528943
5528944
5528945
5528946
5528947
5528948
5528949
5528950
5528951
5528952
5528953
5528955
5528956
5528957
5528958
5528960
5528961
5528963
5528964
5528965
5528967
5528968
5528969
5528970
5528971
5528972
5528973
5528974
5528975
5528978
5528979
5528984
5528986
5528987
5528989
5528990
5528991
5528993
5528994
5528998
5528999
5529000
5529004
5529006
5529007
5529014
5529015
5529016
5529026
5529033
5529040
5529041
5529042
5529046
5529050
5529052
5529055
5529063
5529071
5529073
5529075
5529076
5529080
5529082
5529090
5529099
5529118
5529122
5529128
5529134
5529165
5529170
5529491
5529583
5529748
5529782
5529952
5529966
5530047
5530052
5530118
5530134
5530185
5530195
5530197
5530202
5530227
5530233
5530235
5530276
5530278
5530295
5530299
5530301
5530308
5530313
5530316
5530325
5530354
5530355
5530363
5530372
5530386
5530389
5530393
5530398
5530412
5530415
5530417
5530420
5530421
5530426
5530429
5530431
5530432
5530448
5530452
5530457
5530458
5530463
5530465
5530467
5530478
5530482
5530484
5530490
5530493
5530496
5530523
5530525
5530529
5530544
5530546
5530549
5530552
5530562
5530565
5530581
5530596
5530603
5530608
5530614
5530617
5530641
5530645
5530649
5530653
5530657
5530665
5530668
5530670
5530678
5530689
5530690
5530701
5530705
5530718
5530729
5530744
5530751
5530769
5530786
5530788
5530789
5530791
5530806
5530808
5530832
5530859
5530862
5530876
5530877
5530878
5530880
5530888
5530889
5530906
5530913
5530914
5530924
5530944
5530958
5530959
5530960
5530963
5530981
5530987
5530992
5530996
5531005
5531010
5531018
5531020
5531029
5531035
5531036
5531047
5531072
5531074
5531102
5531104
5531119
5531125
5531134
5531137
5531141
5531142
5531144
5531147
5531154
5531157
5531165
5531166
5531182
5531187
5531198
5531208
5531215
5531218
5531222
5531224
5531225
5531231
5531237
5531263
5531284
5531296
5531302
5531305
5531306
5531321
5531329
5531332
5531347
5531355
5531360
5531377
5531385
5531393
5531394
5531396
5531411
5531416
5531422
5531424
5531427
5531435
5531438
5531443
5531447
5531463
5531467
5531476
5531486
5531494
5531495
5531527
5531532
5531542
5531561
5531565
5531576
5531593
5531595
5531599
5531604
5531608
5531611
5531637
5531638
5531664
5531666
5531671
5531673
5531680
5531691
5531698
5531699
5531712
5531719
5531723
5531746
5531754
5531762
5531763
5531764
5531767
5531784
5531787
5531788
5531789
5531791
5531793
5531794
5531796
5531797
5531805
5531816
5531818
5531843
5531844
5531849
5531887
5531890
5531905
5531906
5531954
5531959
5531981
5531983
5531988
5531996
5532000
5532001
5532012
5532019
5532042
5532044
5532050
5532051
5532053
5532059
5532066
5532076
5532085
5532087
5532100
5532103
5532117
5532123
5532135
5532139
5532151
5532153
5532213
5532247
5532275
5532296
5532304
5532314
5532356
5532376
5532379
5532400
5532410
5532424
5532450
5532455
5532456
5532462
5532466
5532470
5532473
5532481
5532489
5532507
5532517
5532565
5532579
5532581
5532586
5532587
5532607
5532613
5532619
5532624
5532627
5532647
5532661
5532678
5532689
5532698
5532702
5532711
5532744
5532748
5532758
5532791
5532797
5532824
5532825
5532826
5532844
5532858
5532869
5532905
5532949
5532978
5533061
5533143
5533155
5533178
5533182
5533208
5533387
5533390
5533520
5533863
5536551
5536679
5536773
5536867
5537131
5537134
5537171
5537286
5537301
5537322
5537373
5537401
5537504
5537580
5537681
5537759
5537860
5537945
5537968
5538007
5538044
5538109
5538114
5538240
5538394
5538633
5538765
5538779
5538807
5538841
5538865
5538939
5538944
5539216
5539348
5539851
5540004
5540528
5540554
5540601
5540649
5541349
5541441
5541526
5542404
5542762
5542954
5542966
5543091
5543096
5544071
5544200
5544236
5544267
5545162
5545265
5545604
5546146
5546893
5547260
5547635
5547655
5547662
5548641
5549126
5549356
5549768
5550010
5550357
5551340
5551800
5554758
5556075
5558309
5558897
5558910
5559353
5559930
5560103
5561292
5561884
5562106
5563503
5563710
5563772
5564701
5565742
5566083
5567614
5568024
5568259
5568420
5568827
5569292
5570130
5570660
5572014
5575871
5575902
5591868
5591869
5591870
5591871
5591872
5591874
5591875
5591876
5591877
5591878
5591879
5591880
5591882
5591883
5591884
5591885
5591886
5591887
5591893
5591897
5591901
5591996
5592000
5592003
5592006
5592014
5592018
5592025
5592026
5592031
5592033
5592035
5592038
5592039
5592040
5592047
5592049
5592050
5592051
5592053
5592054
5592055
5592057
5592060
5592062
5592064
5592068
5592069
5592074
5592075
5592077
5592078
5592080
5592081
5592083
5592086
5592088
5592091
5592092
5592094
5592096
5592097
5592098
5592099
5592101
5592102
5592103
5592104
5592107
5592110
5592111
5592113
5592114
5592115
5592116
5592117
5592119
5592120
5592121
5592123
5592124
5592127
5592128
5592129
5592130
5592131
5592133
5592134
5592135
5592136
5592137
5592138
5592139
5592140
5592141
5592142
5592144
5592145
5592146
5592147
5592149
5592150
5592151
5592152
5592154
5592155
5592156
5592158
5592159
5592160
5592161
5592162
5592163
5592164
5592165
5592166
5592167
5592168
5592171
5592173
5592175
5592178
5592179
5592180
5592181
5592182
5592183
5592184
5592185
5592186
5592188
5592190
5592191
5592192
5592193
5592195
5592196
5592197
5592199
5592200
5592201
5592202
5592203
5592204
5592205
5592206
5592207
5592209
5592210
5592211
5592213
5592214
5592216
5592218
5592219
5592221
5592224
5592225
5592227
5592229
5592231
5592233
5592234
5592235
5592236
5592238
5592240
5592241
5592242
5592244
5592245
5592246
5592247
5592249
5592250
5592251
5592252
5592253
5592255
5592256
5592260
5592261
5592262
5592263
5592264
5592265
5592267
5592268
5592270
5592271
5592272
5592274
5592275
5592276
5592279
5592280
5592281
5592284
5592287
5592290
5592291
5592293
5592295
5592298
5592301
5592302
5592304
5592305
5592306
5592307
5592311
5592312
5592313
5592316
5592320
5592321
5592322
5592323
5592325
5592326
5592328
5592329
5592330
5592333
5592339
5592341
5592342
5592344
5592347
5592348
5592350
5592351
5592352
5592355
5592356
5592360
5592361
5592365
5592367
5592372
5592374
5592404
5592423
5592507
5592511
5593125
5593131
5593132
5593180
5593190
5593196
5593231
5593238
5593255
5593258
5593263
5593268
5593272
5593273
5593274
5593277
5593281
5593289
5593296
5593300
5593303
5593317
5593319
5593327
5593330
5593337
5593352
5593353
5593354
5593359
5593362
5593363
5593366
5593374
5593377
5593382
5593389
5593396
5593406
5593408
5593413
5593417
5593420
5593423
5593426
5593430
5593434
5593438
5593447
5593454
5593463
5593470
5593474
5593483
5593501
5593512
5593513
5593519
5593521
5593523
5593525
5593526
5593528
5593534
5593535
5593536
5593543
5593545
5593551
5593554
5593556
5593557
5593562
5593564
5593567
5593569
5593574
5593596
5593602
5593606
5593607
5593609
5593611
5593613
5593617
5593621
5593622
5593626
5593627
5593635
5593639
5593643
5593655
5593658
5593663
5593671
5593682
5593691
5593694
5593696
5593700
5593705
5593708
5593709
5593710
5593711
5593718
5593731
5593737
5593741
5593745
5593746
5593756
5593759
5593764
5593765
5593772
5593775
5593780
5593788
5593791
5593793
5593796
5593797
5593819
5593824
5593837
5593845
5593847
5593849
5593851
5593852
5593854
5593860
5593869
5593874
5593884
5593888
5593908
5593910
5593916
5593919
5593923
5593924
5593927
5593928
5593937
5593940
5593943
5593951
5593955
5593956
5593965
5593967
5593975
5593981
5593987
5593988
5593992
5594007
5594010
5594014
5594015
5594017
5594019
5594020
5594024
5594030
5594040
5594052
5594053
5594054
5594055
5594068
5594070
5594074
5594076
5594079
5594083
5594087
5594096
5594097
5594105
5594109
5594113
5594128
5594129
5594134
5594139
5594143
5594149
5594153
5594156
5594159
5594164
5594173
5594178
5594179
5594180
5594189
5594190
5594195
5594196
5594201
5594207
5594209
5594210
5594211
5594226
5594230
5594234
5594236
5594237
5594239
5594242
5594243
5594246
5594252
5594255
5594257
5594259
5594282
5594296
5594311
5594327
5594337
5594340
5594349
5594370
5594375
5594376
5594381
5594386
5594393
5594394
5594396
5594397
5594401
5594405
5594409
5594414
5594420
5594423
5594426
5594430
5594433
5594445
5594457
5594463
5594468
5594471
5594474
5594479
5594481
5594483
5594485
5594490
5594493
5594502
5594504
5594512
5594515
5594516
5594520
5594529
5594533
5594557
5594568
5594574
5594586
5594593
5594594
5594595
5594600
5594602
5594626
5594630
5594646
5594653
5594662
5594672
5594673
5594691
5594703
5594715
5594718
5594720
5594721
5594723
5594724
5594731
5594744
5594747
5594748
5594755
5594765
5594781
5594802
5594803
5594807
5594824
5594826
5594832
5594841
5594842
5594843
5594846
5594852
5594860
5594862
5594871
5594881
5594893
5594898
5594903
5594905
5594913
5594925
5594937
5594939
5594944
5594948
5594963
5594967
5594987
5594991
5595000
5595009
5595011
5595025
5595034
5595039
5595050
5595051
5595052
5595066
5595068
5595069
5595078
5595085
5595095
5595107
5595108
5595113
5595130
5595136
5595145
5595146
5595151
5595155
5595161
5595169
5595188
5595193
5595206
5595208
5595209
5595221
5595230
5595267
5595284
5595290
5595297
5595307
5595309
5595319
5595391
5595411
5595420
5595442
5595523
5595530
5595649
5595658
5595663
5595762
5598364
5598441
5598519
5598716
5598786
5598803
5598951
5598956
5598995
5599054
5599097
5599120
5599166
5599210
5599324
5599455
5599737
5599770
5599773
5599969
5600246
5600405
5600667
5600695
5600934
5601093
5601166
5601183
5601565
5601764
5601840
5601931
5602249
5602683
5602847
5603082
5603106
5603185
5604592
5605270
5606234
5608697
5609788
5615313
5645511
5645512
5645513
5645514
5645515
5645516
5645517
5645518
5645520
5645521
5645522
5645523
5645524
5645525
5645526
5645527
5645528
5645529
5645530
5645531
5645532
5645533
5645534
5645542
5645544
5645546
5645548
5645549
5645551
5645556
5645557
5645559
5645562
5645647
5645658
5645673
5645677
5645689
5645697
5645698
5645705
5645706
5645709
5645713
5645714
5645717
5645718
5645721
5645722
5645723
5645724
5645728
5645729
5645737
5645739
5645744
5645748
5645750
5645751
5645752
5645757
5645758
5645759
5645760
5645761
5645762
5645765
5645768
5645775
5645776
5645778
5645780
5645785
5645786
5645788
5645789
5645791
5645793
5645795
5645797
5645799
5645800
5645802
5645806
5645808
5645809
5645810
5645811
5645812
5645814
5645815
5645816
5645818
5645820
5645822
5645823
5645824
5645825
5645827
5645828
5645831
5645834
5645838
5645839
5645842
5645845
5645849
5645851
5645853
5645854
5645855
5645856
5645859
5645860
5645862
5645865
5645867
5645868
5645869
5645874
5645875
5645876
5645877
5645878
5645879
5645880
5645881
5645883
5645885
5645886
5645888
5645890
5645891
5645893
5645894
5645895
5645898
5645900
5645902
5645903
5645904
5645909
5645910
5645913
5645917
5645919
5645923
5645927
5645930
5645932
5645933
5645935
5645936
5645937
5645939
5645941
5645942
5645946
5645949
5645950
5645951
5645953
5645954
5645955
5645957
5645959
5645960
5645966
5645967
5645968
5645969
5645970
5645971
5645973
5645974
5645975
5645976
5645977
5645978
5645983
5645985
5645987
5645988
5645990
5645991
5645992
5645995
5645998
5646000
5646007
5646008
5646009
5646010
5646011
5646014
5646016
5646019
5646021
5646022
5646023
5646025
5646026
5646028
5646032
5646033
5646035
5646036
5646038
5646039
5646043
5646045
5646046
5646047
5646048
5646049
5646052
5646056
5646058
5646061
5646062
5646063
5646064
5646065
5646070
5646075
5646078
5646085
5646087
5646092
5646093
5646094
5646100
5646103
5646104
5646105
5646109
5646111
5646114
5646115
5646117
5646119
5646128
5646129
5646134
5646135
5646136
5646137
5646138
5646139
5646143
5646146
5646157
5646158
5646160
5646161
5646163
5646164
5646165
5646169
5646176
5646179
5646195
5646202
5646206
5646209
5646210
5646214
5646284
5646293
5646323
5646363
5646384
5646555
5646556
5646783
5646793
5646805
5646831
5646874
5646931
5646939
5647133
5647158
5647161
5647295
5647302
5647303
5647314
5647322
5647339
5647354
5647375
5647383
5647401
5647403
5647420
5647426
5647438
5647445
5647448
5647451
5647452
5647472
5647486
5647489
5647491
5647508
5647512
5647516
5647521
5647554
5647560
5647579
5647590
5647626
5647648
5647650
5647656
5647661
5647676
5647678
5647685
5647694
5647702
5647708
5647711
5647719
5647726
5647730
5647736
5647751
5647754
5647780
5647790
5647796
5647806
5647812
5647814
5647822
5647843
5647849
5647854
5647877
5647891
5647894
5647908
5647924
5647928
5647945
5647951
5647953
5647964
5647980
5647988
5648004
5648019
5648020
5648021
5648025
5648041
5648049
5648053
5648061
5648062
5648069
5648081
5648088
5648093
5648106
5648111
5648132
5648134
5648143
5648151
5648162
5648163
5648166
5648184
5648187
5648191
5648194
5648200
5648201
5648239
5648242
5648243
5648246
5648255
5648258
5648261
5648277
5648291
5648301
5648306
5648307
5648318
5648321
5648331
5648336
5648354
5648363
5648366
5648376
5648395
5648402
5648445
5648451
5648452
5648459
5648467
5648483
5648491
5648505
5648515
5648525
5648529
5648533
5648557
5648570
5648573
5648598
5648600
5648604
5648611
5648624
5648627
5648631
5648638
5648639
5648650
5648651
5648665
5648669
5648672
5648674
5648684
5648728
5648740
5648745
5648748
5648757
5648763
5648773
5648786
5648787
5648792
5648798
5648808
5648826
5648851
5648856
5648865
5648866
5648869
5648878
5648895
5648906
5648911
5648920
5648943
5648950
5648954
5648962
5648966
5648974
5648989
5648991
5648995
5648996
5648999
5649004
5649007
5649021
5649023
5649029
5649036
5649073
5649076
5649079
5649081
5649089
5649104
5649111
5649115
5649126
5649132
5649138
5649148
5649155
5649159
5649160
5649164
5649166
5649172
5649188
5649191
5649210
5649216
5649233
5649239
5649247
5649254
5649271
5649304
5649326
5649327
5649336
5649342
5649364
5649399
5649401
5649404
5649413
5649428
5649450
5649473
5649480
5649483
5649488
5649517
5649518
5649527
5649542
5649547
5649551
5649568
5649576
5649589
5649600
5649612
5649647
5649700
5649706
5649717
5649735
5649739
5649751
5649773
5649786
5649790
5649826
5649831
5649842
5649846
5649884
5649888
5649898
5649904
5649911
5649918
5649922
5649950
5649961
5649972
5650017
5650034
5650035
5650046
5650052
5650058
5650068
5650093
5650101
5650110
5650115
5650264
5650288
5650324
5650347
5650382
5650461
5650471
5650488
5650526
5650527
5650542
5650600
5650652
5650660
5650791
5650798
5650857
5650897
5650934
5651053
5651070
5651234
5651664
5651668
5651893
5651934
5652273
5653297
5653607
5653633
5653895
5654048
5654158
5654169
5654183
5654275
5654317
5654339
5654356
5654439
5654569
5654609
5654618
5654645
5654659
5654681
5654713
5654775
5654823
5655074
5655112
5655331
5655616
5655778
5656117
5656281
5656375
5656521
5656898
5657184
5657249
5657403
5657586
5657695
5657900
5658031
5658066
5658077
5658233
5658458
5658503
5658752
5658805
5658820
5659411
5659446
5659588
5659771
5659813
5660013
5660156
5660575
5660739
5660773
5660813
5662098
5662141
5662146
5662950
5662966
5663055
5663067
5663265
5663583
5663939
5664172
5664221
5664338
5664415
5664613
5664680
5664791
5664920
5665060
5665243
5665282
5665459
5665623
5665689
5665720
5666250
5666361
5666659
5666781
5666824
5666910
5667008
5667103
5667303
5667361
5667770
5667821
5667980
5668225
5668240
5668320
5668458
5668698
5668743
5668842
5668936
5668985
5669127
5669183
5669278
5670476
5670668
5671016
5671029
5671330
5671361
5671535
5671901
5672445
5672794
5672858
5673232
5673934
5674471
5674763
5674910
5675761
5675830
5675887
5675935
5676723
5676977
5677507
5677846
5677883
5677992
5678764
5679003
5679374
5679476
5680109
5680491
5680598
5680605
5680618
5681421
5681447
5681888
5682345
5682520
5682713
5682859
5682932
5683221
5683299
5683561
5683563
5684777
5685231
5685650
5685672
5685826
5686126
5686335
5688285
5688335
5689059
5689431
5689491
5690094
5690192
5690281
5690366
5690556
5690614
5704483
5704484
5704487
5704488
5704489
5704490
5704491
5704492
5704493
5704494
5704495
5704496
5704499
5704500
5704501
5704503
5704505
5704506
5704507
5704509
5704511
5704512
5704514
5704515
5704516
5704521
5704523
5704526
5704527
5704537
5704538
5704539
5704541
5704542
5704545
5704692
5704700
5704705
5704715
5704716
5704722
5704724
5704725
5704731
5704734
5704736
5704740
5704741
5704742
5704743
5704745
5704746
5704747
5704749
5704750
5704755
5704758
5704759
5704763
5704767
5704768
5704770
5704773
5704774
5704776
5704777
5704778
5704780
5704784
5704786
5704792
5704793
5704794
5704797
5704798
5704799
5704802
5704803
5704807
5704810
5704811
5704817
5704818
5704819
5704820
5704821
5704823
5704824
5704829
5704830
5704831
5704835
5704836
5704837
5704838
5704839
5704849
5704850
5704851
5704852
5704855
5704858
5704859
5704860
5704861
5704863
5704864
5704867
5704869
5704871
5704872
5704874
5704875
5704876
5704877
5704880
5704886
5704891
5704893
5704894
5704898
5704899
5704901
5704902
5704907
5704908
5704909
5704910
5704912
5704913
5704916
5704918
5704919
5704920
5704922
5704926
5704927
5704929
5704931
5704932
5704933
5704936
5704943
5704944
5704946
5704947
5704952
5704953
5704956
5704960
5704961
5704962
5704964
5704969
5704971
5704972
5704978
5704979
5704981
5704984
5704986
5704988
5704991
5704992
5704993
5704995
5704996
5704997
5705000
5705001
5705002
5705005
5705008
5705010
5705011
5705012
5705013
5705015
5705018
5705022
5705024
5705025
5705026
5705027
5705028
5705034
5705035
5705036
5705038
5705039
5705041
5705042
5705044
5705046
5705047
5705048
5705049
5705056
5705061
5705063
5705064
5705065
5705066
5705067
5705068
5705069
5705071
5705073
5705075
5705079
5705080
5705084
5705085
5705087
5705089
5705090
5705091
5705097
5705098
5705101
5705102
5705103
5705112
5705114
5705115
5705122
5705126
5705127
5705128
5705131
5705132
5705136
5705138
5705143
5705144
5705145
5705146
5705147
5705149
5705152
5705157
5705158
5705164
5705168
5705172
5705178
5705179
5705180
5705188
5705193
5705194
5705197
5705198
5705201
5705206
5705212
5705214
5705218
5705221
5705227
5705244
5705247
5705249
5705255
5705256
5705264
5705270
5705272
5705274
5705360
5705812
5705890
5706288
5706298
5706307
5706344
5706360
5706374
5706389
5706406
5706416
5706427
5706442
5706448
5706465
5706470
5706474
5706478
5706479
5706481
5706489
5706507
5706520
5706536
5706545
5706548
5706549
5706551
5706552
5706562
5706575
5706577
5706587
5706588
5706590
5706591
5706603
5706605
5706611
5706622
5706625
5706626
5706631
5706645
5706670
5706715
5706717
5706723
5706728
5706739
5706766
5706768
5706769
5706771
5706776
5706780
5706797
5706801
5706804
5706807
5706820
5706830
5706838
5706841
5706851
5706864
5706865
5706876
5706882
5706889
5706894
5706897
5706909
5706919
5706938
5706942
5706964
5706971
5706975
5706978
5706991
5706994
5707003
5707007
5707015
5707029
5707030
5707045
5707052
5707064
5707081
5707086
5707088
5707098
5707103
5707105
5707111
5707117
5707125
5707130
5707131
5707132
5707140
5707145
5707155
5707156
5707160
5707186
5707189
5707195
5707203
5707222
5707235
5707246
5707254
5707258
5707259
5707261
5707282
5707283
5707291
5707301
5707309
5707316
5707329
5707330
5707339
5707343
5707351
5707353
5707354
5707360
5707368
5707396
5707405
5707421
5707424
5707425
5707445
5707457
5707459
5707467
5707468
5707488
5707494
5707496
5707515
5707536
5707553
5707555
5707556
5707562
5707576
5707579
5707584
5707593
5707595
5707598
5707600
5707618
5707624
5707629
5707632
5707635
5707638
5707645
5707653
5707656
5707664
5707669
5707675
5707676
5707694
5707712
5707725
5707732
5707750
5707752
5707779
5707814
5707821
5707847
5707853
5707857
5707863
5707894
5707907
5707930
5707939
5707941
5707950
5707962
5707964
5707966
5707974
5707975
5707977
5707999
5708009
5708028
5708031
5708032
5708045
5708048
5708054
5708058
5708059
5708070
5708075
5708077
5708085
5708089
5708090
5708095
5708102
5708106
5708134
5708140
5708150
5708153
5708180
5708202
5708203
5708238
5708247
5708252
5708266
5708281
5708302
5708348
5708359
5708362
5708374
5708410
5708492
5708497
5708503
5708512
5708524
5708536
5708537
5708547
5708548
5708576
5708584
5708591
5708614
5708618
5708622
5708640
5708651
5708656
5708658
5708674
5708675
5708676
5708677
5708703
5708710
5708720
5708737
5708751
5708765
5708768
5708778
5708808
5708829
5708845
5708892
5708915
5708934
5708939
5708945
5708950
5708970
5708972
5709008
5709028
5709060
5709085
5709098
5709127
5709128
5709147
5709159
5709184
5709194
5709200
5709227
5709236
5709247
5709297
5709305
5709319
5709329
5709340
5709341
5709355
5709357
5709362
5709400
5709419
5709422
5709443
5709471
5709512
5709555
5709568
5709622
5709676
5709736
5710027
5710110
5712019
5712223
5712878
5713079
5713235
5713333
5713467
5713619
5713655
5713692
5713728
5713750
5713845
5713914
5714114
5714369
5714408
5714792
5715331
5715904
5716942
5717273
5717426
5717650
5717740
5718188
5718403
5720002
5720432
5720821
5721069
5721222
5723904
5724357
5724970
5725882
5726634
5727643
5727695
5738968
5739895
5747862
5748708
5750705
5766557
5766558
5766559
5766561
5766562
5766563
5766564
5766565
5766566
5766567
5766569
5766571
5766572
5766573
5766574
5766576
5766578
5766582
5766583
5766584
5766585
5766586
5766587
5766588
5766591
5766593
5766594
5766596
5766598
5766603
5766606
5766608
5766610
5766613
5766614
5766622
5766624
5766627
5766642
5766649
5766806
5766814
5766817
5766825
5766826
5766827
5766829
5766831
5766834
5766835
5766839
5766842
5766843
5766844
5766845
5766847
5766849
5766852
5766853
5766855
5766858
5766861
5766862
5766867
5766870
5766873
5766876
5766878
5766879
5766880
5766881
5766884
5766885
5766886
5766889
5766893
5766897
5766898
5766900
5766904
5766910
5766911
5766912
5766915
5766916
5766922
5766925
5766926
5766928
5766929
5766930
5766931
5766935
5766939
5766940
5766942
5766943
5766944
5766951
5766956
5766957
5766958
5766959
5766964
5766965
5766966
5766967
5766973
5766974
5766977
5766979
5766982
5766984
5766987
5766990
5766991
5766992
5766993
5766994
5766996
5766997
5767000
5767002
5767003
5767005
5767010
5767013
5767015
5767017
5767019
5767020
5767021
5767022
5767023
5767025
5767026
5767027
5767030
5767031
5767032
5767033
5767034
5767035
5767036
5767040
5767041
5767046
5767048
5767049
5767050
5767054
5767056
5767060
5767061
5767062
5767064
5767065
5767066
5767071
5767072
5767073
5767075
5767077
5767078
5767080
5767081
5767083
5767086
5767088
5767089
5767091
5767092
5767094
5767096
5767097
5767099
5767100
5767102
5767105
5767106
5767107
5767108
5767111
5767112
5767114
5767115
5767117
5767118
5767119
5767121
5767122
5767125
5767126
5767127
5767129
5767130
5767131
5767132
5767133
5767137
5767142
5767143
5767145
5767147
5767150
5767152
5767155
5767159
5767160
5767165
5767167
5767169
5767170
5767171
5767175
5767181
5767183
5767185
5767186
5767188
5767190
5767193
5767195
5767196
5767198
5767200
5767203
5767204
5767206
5767207
5767210
5767211
5767214
5767215
5767217
5767220
5767221
5767223
5767224
5767225
5767227
5767228
5767231
5767232
5767233
5767234
5767239
5767240
5767241
5767243
5767244
5767245
5767249
5767256
5767260
5767261
5767265
5767273
5767275
5767276
5767286
5767287
5767290
5767293
5767298
5767300
5767308
5767309
5767314
5767320
5767328
5767340
5767345
5767349
5767351
5767361
5767371
5767375
5767388
5767407
5767408
5767428
5767441
5767453
5767462
5767464
5767465
5767479
5768654
5768660
5768665
5768676
5768727
5768812
5768888
5768892
5768894
5768907
5768916
5768920
5768930
5768936
5768943
5768973
5768977
5768987
5768989
5769020
5769030
5769039
5769042
5769047
5769055
5769067
5769072
5769084
5769101
5769108
5769121
5769126
5769140
5769145
5769148
5769161
5769165
5769220
5769221
5769222
5769241
5769244
5769257
5769258
5769264
5769271
5769277
5769285
5769291
5769303
5769315
5769321
5769327
5769342
5769343
5769344
5769347
5769353
5769355
5769359
5769406
5769414
5769421
5769461
5769470
5769471
5769480
5769481
5769487
5769493
5769494
5769504
5769507
5769510
5769511
5769528
5769531
5769542
5769563
5769573
5769600
5769621
5769630
5769644
5769645
5769646
5769659
5769661
5769665
5769667
5769683
5769686
5769689
5769702
5769708
5769709
5769726
5769729
5769732
5769738
5769764
5769784
5769798
5769804
5769807
5769808
5769810
5769817
5769819
5769820
5769832
5769862
5769870
5769877
5769882
5769888
5769914
5769934
5769943
5769977
5769993
5769996
5770000
5770020
5770022
5770024
5770026
5770031
5770039
5770070
5770087
5770090
5770110
5770113
5770122
5770134
5770136
5770142
5770147
5770153
5770159
5770161
5770169
5770201
5770224
5770243
5770266
5770269
5770274
5770275
5770286
5770293
5770303
5770310
5770315
5770316
5770321
5770323
5770341
5770367
5770381
5770384
5770386
5770395
5770403
5770424
5770466
5770471
5770485
5770488
5770494
5770509
5770525
5770526
5770538
5770541
5770551
5770567
5770583
5770595
5770601
5770611
5770616
5770644
5770650
5770671
5770672
5770675
5770689
5770694
5770699
5770704
5770746
5770761
5770770
5770773
5770776
5770786
5770793
5770794
5770808
5770813
5770844
5770845
5770881
5770884
5770911
5770947
5770952
5770954
5770970
5770999
5771000
5771001
5771003
5771008
5771010
5771018
5771054
5771058
5771085
5771095
5771116
5771123
5771135
5771139
5771145
5771160
5771161
5771194
5771201
5771212
5771220
5771226
5771253
5771307
5771337
5771339
5771361
5771422
5771423
5771426
5771428
5771448
5771459
5771473
5771477
5771480
5771491
5771495
5771501
5771507
5771640
5771643
5771661
5771682
5771702
5771785
5771807
5771808
5771826
5771827
5771828
5771873
5771882
5771919
5771958
5771970
5771989
5772098
5772157
5772214
5772256
5772293
5772308
5772373
5772607
5772649
5776291
5776414
5776488
5776577
5777247
5777276
5777483
5777555
5777656
5777745
5777752
5777953
5778416
5778675
5778931
5779086
5779096
5779200
5779655
5780199
5780737
5780998
5781757
5782055
5782108
5782515
5784691
5785058
5785736
5798505
5837725
5837726
5837727
5837729
5837731
5837733
5837734
5837735
5837736
5837738
5837739
5837740
5837742
5837743
5837744
5837746
5837748
5837755
5837756
5837757
5837760
5837765
5837766
5837767
5837769
5837773
5837774
5837775
5837776
5837777
5837781
5837782
5837787
5837788
5837791
5837792
5837798
5837805
5837807
5837815
5837831
5837834
5837866
5837867
5838108
5838140
5838144
5838148
5838155
5838159
5838169
5838176
5838180
5838184
5838187
5838193
5838198
5838201
5838203
5838214
5838221
5838222
5838223
5838228
5838233
5838234
5838235
5838236
5838246
5838249
5838252
5838255
5838257
5838259
5838261
5838264
5838266
5838268
5838269
5838273
5838275
5838281
5838286
5838288
5838289
5838290
5838291
5838293
5838298
5838303
5838304
5838305
5838309
5838312
5838313
5838320
5838321
5838323
5838326
5838329
5838335
5838342
5838343
5838346
5838347
5838348
5838350
5838352
5838358
5838360
5838362
5838363
5838364
5838365
5838369
5838373
5838374
5838377
5838379
5838383
5838384
5838393
5838400
5838404
5838414
5838415
5838418
5838419
5838422
5838423
5838426
5838428
5838430
5838431
5838433
5838434
5838436
5838437
5838438
5838443
5838445
5838447
5838448
5838449
5838451
5838454
5838456
5838457
5838460
5838463
5838464
5838465
5838470
5838473
5838474
5838477
5838482
5838483
5838484
5838485
5838486
5838490
5838493
5838494
5838499
5838500
5838510
5838512
5838513
5838514
5838516
5838517
5838518
5838525
5838528
5838530
5838531
5838532
5838533
5838534
5838537
5838538
5838541
5838545
5838546
5838554
5838562
5838564
5838565
5838568
5838569
5838573
5838574
5838575
5838576
5838585
5838587
5838588
5838590
5838592
5838596
5838597
5838598
5838599
5838600
5838604
5838607
5838609
5838611
5838612
5838617
5838622
5838629
5838631
5838633
5838634
5838636
5838637
5838638
5838639
5838641
5838643
5838649
5838654
5838656
Out[53]:
array([[4.3213072e-01, 3.3612296e-01, 4.9542564e-01, 1.1641532e-10],
       [4.2634511e-01, 3.3506793e-01, 4.9537191e-01, 1.1641532e-10],
       [4.2104098e-01, 3.3217159e-01, 4.9831006e-01, 1.1641532e-10],
       ...,
       [4.3010166e-01, 3.2942852e-01, 4.9635866e-01, 1.1641532e-10],
       [4.2487869e-01, 3.3458143e-01, 4.9207175e-01, 1.1641532e-10],
       [4.2629939e-01, 3.2695419e-01, 4.9106851e-01, 1.1641532e-10]],
      dtype=float32)
In [54]:
plt.figure()
plt.scatter(X[:, 0], X[:, 1], s=1)

plt.show()
Figure
No description has been provided for this image
In [ ]:

In [5]:
parts = csiborgtools.read.read_h5(paths.particles_path(nsim0))["particles"]
In [6]:
box = csiborgtools.read.CSiBORGBox(nsnap0, nsim0, paths)

field = csiborgtools.field.DensityField(box, "CIC")
In [7]:
rho = np.load(paths.density_field_path("PCS", 7444, False))
rho_rsp = np.load(paths.density_field_path("PCS", 7444, True))
In [14]:
plt.figure()
plt.imshow(np.sum(rho, axis=1))
plt.show()
Figure
No description has been provided for this image
In [13]:
plt.figure()
plt.imshow(np.sum(rho_rsp, axis=1))
plt.show()
Figure
No description has been provided for this image
In [ ]:

In [25]:
np.abs(x - 1).max()
Out[25]:
0.0018435717
In [ ]:

In [94]:
k0 = clumpmap0[clid2map0[0], 2] + 1
# parts.shape[0]
In [96]:
parts.shape[0] - k0
Out[96]:
182510395
In [44]:
clumps_cat = csiborgtools.read.ClumpsCatalogue(nsim0, paths, load_fitted=True, minmass=None, maxdist=155 / 0.705)
In [119]:
cat = csiborgtools.read.HaloCatalogue(nsim0, paths, minmass=None)
In [124]:
cat['ID']
Out[124]:
array([       1,        3,        5, ..., 21809643, 21810694, 21818034],
      dtype=int32)
In [114]:
len(cat)
Out[114]:
153575
In [118]:
numpy.isnan(cat["lagpatch"]).sum()
Out[118]:
1355
In [ ]:

In [88]:
cat['x0']
Out[88]:
array([-42.401093 , -32.8627   , -45.08371  , ...,   9.587616 ,
         5.0563965,  12.45813  ], dtype=float32)
In [ ]:

In [46]:
len(clumps_cat)
Out[46]:
265246
In [50]:
m = numpy.isfinite(clumps_cat["lambda200c"])

plt.figure()
plt.hist(np.log10(clumps_cat["lambda200c"][m]), bins="auto")

plt.show()
Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [5]:
clumps_cat["index"][:10]
Out[5]:
array([ 1,  2,  3,  5,  6,  7,  9, 11, 12, 13], dtype=int32)
In [6]:
X = csiborgtools.read.load_parent_particles(3, parts, clumpmap0, clid2map0, clumps_cat)
In [29]:
clump = csiborgtools.fits.Clump(X, clumps_cat[2], box)
clumps_cat[2]["index"]
Out[29]:
3
In [37]:
clump.spherical_overdensity_mass(200)
Out[37]:
(0.0008713664483347365, 1.8111896e-06)
In [26]:
def f(mass):
    return numpy.cumsum(mass)

@jit(nopython=True)
def g(mass):
    return numpy.cumsum(mass)

x  = clump['M']
In [25]:
%timeit f(x)
73.4 µs ± 401 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
In [28]:
%timeit g(x)
31.8 µs ± 385 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
In [ ]:

In [19]:
%timeit clump.spherical_overdensity_mass(200)
3.79 ms ± 47.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [14]:
plt.figure()
plt.plot(rs, y)
plt.yscale("log")
plt.xscale("log")
plt.show()
Figure
No description has been provided for this image
In [16]:
%timeit clump.r()
224 µs ± 4.17 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [87]:
x, y, z = clump['x'], clump['y'], clump['z']
x0, y0, z0 = clumps_cat[3]['x'], clumps_cat[3]['y'], clumps_cat[3]['z']
In [93]:
%timeit ((x - x0)**2 + (y - y0)**2 + (z - z0)**2)**0.5
145 µs ± 539 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
In [92]:
%timeit clump.r()
242 µs ± 6.44 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [267]:
delta_bckg *= 2
In [260]:
%timeit delta1, delta2, cellmins, nonzero = overlapper.make_deltas(pos, pos2, mass, mass)
# __ = overlapper.make_deltas(pos, pos2, mass, mass)
1.23 ms ± 6.98 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [271]:
%timeit overlapper(pos, pos2, mass, mass, delta_bckg)
1.75 ms ± 11.8 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
In [259]:
fig, axs = plt.subplots(ncols=2, figsize=(10, 5))
axs[0].imshow(np.sum(delta1, axis=0))
axs[1].imshow(np.sum(delta2, axis=0))
fig.tight_layout()
Figure
No description has been provided for this image
In [93]:
delta = overlapper.make_bckg_delta(pos, mass / mass)
In [282]:
from functools import cache 
from functools import lru_cache
In [283]:
from time import sleep

@lru_cache(maxsize=1024)
def f(x):
    sleep(0.5)
    return x * x
In [286]:
%timeit f(2)
79 ns ± 0.372 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
In [77]:
clumpmap0[:]
Out[77]:
array([[        0,         0, 277961071],
       [        1, 277961072, 277980356],
       [        2, 277980357, 277985437],
       ...,
       [ 21836472, 460470781, 460470782],
       [ 21836487, 460470783, 460471462],
       [ 21836785, 460471463, 460471466]], dtype=int32)
In [72]:
dens = overlapper.make_delta(pos, mass, subbox=True)
In [75]:

Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [55]:
x.shape, x0.shape
Out[55]:
((134842, 7), (134842, 4))
In [56]:
plt.figure()
# plt.scatter(x[:, 0], x[:, 1], s=0.1)
plt.scatter(x0[:, 0], x0[:, 1], s=0.1)

plt.show()
Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [11]:
unique_clump_ids = numpy.unique(clump_ids)
In [22]:
unique_clump_ids[:100]
Out[22]:
array([  0,   1,   2,   3,   5,   6,   7,   9,  11,  12,  13,  14,  15,
        17,  19,  21,  22,  23,  29,  32,  34,  39,  43, 134, 137, 138,
       139, 149, 151, 156, 157, 158, 159, 161, 163, 165, 167, 168, 169,
       172, 173, 175, 178, 179, 181, 183, 186, 187, 188, 189, 191, 193,
       194, 196, 197, 198, 204, 207, 209, 211, 212, 213, 214, 215, 216,
       217, 218, 221, 223, 225, 227, 228, 231, 232, 237, 238, 240, 243,
       245, 247, 248, 249, 252, 257, 258, 259, 260, 262, 263, 264, 267,
       268, 269, 270, 272, 273, 274, 275, 276, 278], dtype=int32)
In [26]:
%timeit numpy.nan == numpy.nan
131 ns ± 0.529 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)
In [27]:
%timeit numpy.isnan(numpy.nan)
791 ns ± 5.14 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
In [29]:
test = {"asd": 1}
with h5py.File("test.hp", 'w') as f:
    f.create_dataset("test", data=test)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[29], line 3
      1 test = {"asd": 1}
      2 with h5py.File("test.hp", 'w') as f:
----> 3     f.create_dataset("test", data=test)

File ~/csiborgtools/venv_csiborg/lib/python3.9/site-packages/h5py/_hl/group.py:183, in Group.create_dataset(self, name, shape, dtype, data, **kwds)
    180         parent_path, name = name.rsplit(b'/', 1)
    181         group = self.require_group(parent_path)
--> 183 dsid = dataset.make_new_dset(group, shape, dtype, data, name, **kwds)
    184 dset = dataset.Dataset(dsid)
    185 return dset

File ~/csiborgtools/venv_csiborg/lib/python3.9/site-packages/h5py/_hl/dataset.py:88, in make_new_dset(parent, shape, dtype, data, name, chunks, compression, shuffle, fletcher32, maxshape, compression_opts, fillvalue, scaleoffset, track_times, external, track_order, dcpl, dapl, efile_prefix, virtual_prefix, allow_unknown_filter, rdcc_nslots, rdcc_nbytes, rdcc_w0)
     86     else:
     87         dtype = numpy.dtype(dtype)
---> 88     tid = h5t.py_create(dtype, logical=1)
     90 # Legacy
     91 if any((compression, shuffle, fletcher32, maxshape, scaleoffset)) and chunks is False:

File h5py/h5t.pyx:1664, in h5py.h5t.py_create()

File h5py/h5t.pyx:1688, in h5py.h5t.py_create()

File h5py/h5t.pyx:1748, in h5py.h5t.py_create()

TypeError: Object dtype dtype('O') has no native HDF5 equivalent
In [ ]:
f
In [23]:
k0, kf = minmax_clump(259, clump_ids)

kf - k0 + 1
Out[23]:
2360
In [24]:
clump_ids[k0:kf+1]
Out[24]:
array([259, 259, 259, ..., 259, 259, 259], dtype=int32)
In [ ]:

In [3]:
import numpy

nsim = nsim0
nsnap = nsnap0


part0 = h5py.File(paths.initmatch_path(nsim, "particles"), 'r')['particles']
cmap = h5py.File(paths.particles_path(nsim, "clumpmap"), 'r')
partf = h5py.File(paths.particles_path(nsim), 'r')["particles"]
In [8]:
part0[cmap[str(558655)], :]
In [5]:
cat = csiborgtools.read.ClumpsCatalogue(nsim, paths, rawdata=True)
In [44]:
from tqdm import tqdm
y = np.zeros((10000, 2), dtype=np.int32)

for i, hid in tqdm(enumerate(cat["index"][cat.ismain][:10000])):
    n = np.sum(cat["parent"] == hid)
    y[i, :] = hid, n
10000it [00:51, 193.86it/s]
In [8]:
cat["index"][cat["parent"] == 558655]
Out[8]:
array([558655, 558659, 558673, 558675, 558677, 558692, 558705, 558717,
       558724, 558726, 558739, 558746, 558857, 559232, 559256, 559292,
       559325, 559343, 559349, 559384, 559388, 559406, 559415, 559453,
       559467, 559473, 559492, 559496, 559541, 559544, 559548, 559570,
       559571, 559604, 559612, 559637, 559643, 559648, 559655, 559724,
       559735, 559779, 559780, 559792, 559802, 559804, 559817, 559910,
       559918, 559926, 559960, 559977, 559982, 559997, 560012, 560031,
       560122, 560213, 560325, 560375, 560426, 560517, 560798, 562156,
       563235, 563254, 563586, 563651, 563671, 563892, 564050, 564068,
       564138, 564153, 564358, 564525, 564734, 564745, 564779, 564831,
       565008, 565180, 565272, 565276, 565521, 565620, 565701, 565891,
       566046, 566604, 566705, 567047, 567336, 567720, 568897, 569232,
       569376, 569773, 573130, 575459, 575880, 576414, 579319, 579445,
       579722, 579770, 580117, 580388, 580441, 580507, 580518, 581594,
       581767, 582047, 582713, 583256, 586403, 587027, 587239, 588764,
       593803, 595742, 596219, 599285, 600189, 603135, 605484],
      dtype=int32)
In [45]:
y[np.argmax(y[:, 1]), :]
Out[45]:
array([558655,    127], dtype=int32)
In [8]:
keys = list(cmap.keys())
In [11]:
csiborgtools.fits.load_parent_particles(558655, part0, cmap, cat)
# Xf = csiborgtools.fits.load_parent_particles(378, partf, cmap, cat)
[558655 558659 558673 558675 558677 558692 558705 558717 558724 558726
 558739 558746 558857 559232 559256 559292 559325 559343 559349 559384
 559388 559406 559415 559453 559467 559473 559492 559496 559541 559544
 559548 559570 559571 559604 559612 559637 559643 559648 559655 559724
 559735 559779 559780 559792 559802 559804 559817 559910 559918 559926
 559960 559977 559982 559997 560012 560031 560122 560213 560325 560375
 560426 560517 560798 562156 563235 563254 563586 563651 563671 563892
 564050 564068 564138 564153 564358 564525 564734 564745 564779 564831
 565008 565180 565272 565276 565521 565620 565701 565891 566046 566604
 566705 567047 567336 567720 568897 569232 569376 569773 573130 575459
 575880 576414 579319 579445 579722 579770 580117 580388 580441 580507
 580518 581594 581767 582047 582713 583256 586403 587027 587239 588764
 593803 595742 596219 599285 600189 603135 605484]
  0%|          | 0/127 [00:00<?, ?it/s]
In [6]:
plt.figure()

plt.scatter(X[:, 0], X[:, 1], s=0.1)
# plt.scatter(Xf[:, 0], Xf[:, 1], s=0.1)

plt.show()
Figure
No description has been provided for this image
In [ ]:

In [3]:
pid_final = np.load("pid_final.npy")
pid_init = np.load("pid_initial.npy")
In [4]:
pid_order = np.argsort(pid_final).astype(np.int32)

pid_order_2 = np.argsort(pid_order).astype(np.int32)
In [6]:
# Sort them

pid_init = pid_init[np.argsort(pid_init)]
In [11]:
np.alltrue(pid_init[pid_order_2] == pid_final)
Out[11]:
True
In [10]:

Out[10]:
array([        6,         7,         8, ..., 429538984, 456581538,
       456482476], dtype=int32)
In [ ]:

In [ ]:

In [ ]:

In [25]:
pid_final[pid_order][pid_order_2]
Out[25]:
array([        6,         7,         8, ..., 429538984, 456581538,
       456482476], dtype=int32)
In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [18]:
part0['ID']
Out[18]:
array([        1,         2,         3, ..., 460357796, 460357797,
       460357798], dtype=int32)
In [ ]:

In [ ]:

In [8]:
indx1 = numpy.argsort(part0['ID'])

indx2 = numpy.argsort(pid)

indx1_inv = numpy.argsort(indx1)
part0 = part0[indx2][indx1_inv]
# pid = pid[indx2]
In [9]:
part0
Out[9]:
array([(0.6463347 , 0.5915494 , 0.3729033 , 1.1641532e-10, 285313656),
       (0.22073722, 0.49019635, 0.9627326 , 5.9604645e-08,  58672855),
       (0.7210556 , 0.18949312, 0.37298316, 5.9604645e-08, 459417395),
       ...,
       (0.46851808, 0.2966002 , 0.44987014, 1.1641532e-10,   2684309),
       (0.7481397 , 0.02954267, 0.8927611 , 5.9604645e-08, 402473389),
       (0.9159686 , 0.8301242 , 0.67392564, 5.9604645e-08, 287235917)],
      dtype=[('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('M', '<f4'), ('ID', '<i4')])
In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [10]:
pid
Out[10]:
array([        6,         7,         8, ..., 429538984, 456581538,
       456482476], dtype=int32)
In [6]:
pid
Out[6]:
array([        1,         2,         3, ..., 460471465, 460471466,
       460471467], dtype=int32)
In [9]:
cat = csiborgtools.read.ClumpsCatalogue(nsim, paths, load_fitted=False, rawdata=True)
parent_ids = cat["index"][cat.ismain]

parent_ids[:50]
Out[9]:
array([  1,   2,   3,   5,   6,   7,   9,  11,  12,  13,  15,  17,  19,
        21,  22,  23,  29,  32,  34,  39, 134, 137, 138, 139, 149, 151,
       156, 157, 158, 159, 161, 163, 167, 168, 169, 172, 173, 175, 178,
       181, 186, 188, 189, 191, 196, 197, 198, 204, 209, 211], dtype=int32)
In [54]:
i = cat["index"][np.argsort(cat["mass_cl"])[::-3][213]]
i
Out[54]:
11031538
In [55]:
# clid = 10170336
# clid = 10170336 + 12
clid = i


mmain_indxs = cat["index"][cat["parent"] == clid]
# mask = clump_ids == clid
# print(mask.sum())
print(mmain_indxs)

print([numpy.sum(clump_ids == j) for j in mmain_indxs])
[11031538 11032027 11033906 11034471 11034477 11034692 11035306 11049411
 11057461 11058959]
[24440, 256, 133, 0, 0, 0, 113, 0, 0, 0]
In [56]:
mask = numpy.isin(clump_ids, mmain_indxs)
mask.sum()
Out[56]:
24942
In [57]:
# coords = part0[mask, :]
plt.figure()
plt.scatter(part0['x'][mask], part0['y'][mask], s=1)

plt.show()
Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [193]:
particles0 = h5py.File(paths.initmatch_path(nsim0, "particles"), 'r')['particles']
particlesx = h5py.File(paths.initmatch_path(nsimx, "particles") , 'r')['particles']
In [4]:
# delta_bckg = overlapper.make_bckg_delta(particles0, verbose=True)
# delta_bckg = overlapper.make_bckg_delta(particlesx, delta=delta_bckg, verbose=True)
# np.save("./bckg_{}_{}.npy".format(nsim0, nsimx), delta_bckg)
# delta_bckg = np.load("./bckg_{}_{}.npy".format(nsim0, nsimx))
In [194]:
map0 = h5py.File(paths.initmatch_path(nsim0, "halomap"), 'r')
mapx = h5py.File(paths.initmatch_path(nsimx, "halomap"), 'r')
In [174]:
keys = np.array(sorted([int(x) for x in mapx.keys()]))
In [175]:
paths = csiborgtools.read.Paths(**csiborgtools.paths_glamdring)

halocat = csiborgtools.read.HaloCatalogue(nsimx, paths, rawdata=True)
clumpcat = csiborgtools.read.ClumpsCatalogue(nsimx, paths, rawdata=True)
In [176]:
clid = 2


np.sum(clumpcat["parent"] == clid)

# mmain_indxs = clumpcat["index"][clumpcat["parent"] == clid]

# mmain_indxs
# mmain_mask = numpy.isin(clump_ids, mmain_indxs, assume_unique=True)
Out[176]:
10
In [195]:
fs = list(map0.keys())
In [196]:
from tqdm import tqdm
tot = 0
for f in tqdm(fs):
    tot += map0[f].shape[0]

print(tot)
100%|██████████| 173643/173643 [01:29<00:00, 1947.49it/s]
362439022

In [197]:
particles0
Out[197]:
<HDF5 dataset "particles": shape (182510395, 4), type "<f4">
In [198]:
tot / 182510395
Out[198]:
1.9858541317605498
In [172]:
particlesx
Out[172]:
<HDF5 dataset "particles": shape (182036133, 4), type "<f4">
In [177]:
i = 10170336


k = np.where(cat["ID"] == i)[0][0]
k
Out[177]:
86031
In [178]:
# i = np.random.choice(keys[keys<100000])

# # i = 10040155 #+ 11

print(i)
# i = 32


mask = map0[str(i)]
mask
10170336
Out[178]:
<HDF5 dataset "10170336": shape (2085,), type "<i8">
In [183]:
halo = particlesx[mask, :]
In [184]:
np.sum(halo[:, 3]) / 1.1641532e-10
Out[184]:
2085.000032720428
In [186]:
plt.figure()
plt.scatter(halo[:, 0], halo[:, 1], s=2)
# plt.scatter(cat['x'][k], cat['y'][k], s=10, c='r')

plt.xlabel(r"x")
plt.ylabel(r"y")

plt.show()
Figure
No description has been provided for this image
In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [21]:
plt.figure()
plt.imshow(np.log10(np.sum(delta_bckg, axis=0)))
plt.show()
/tmp/ipykernel_7442/2249068321.py:2: RuntimeWarning: divide by zero encountered in log10
  plt.imshow(np.log10(np.sum(delta_bckg, axis=0)))
Figure
No description has been provided for this image
In [2]:
f = h5py.File("../data/particles_7444.h5", "r")
In [8]:
f["particles"][0, :]
Out[8]:
array([ 4.42346358e-01,  7.09757663e-03,  4.64053304e-01, -1.96926287e-03,
       -2.67177823e-03, -6.45721859e-04,  1.16415322e-10])
In [ ]: