Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New data generators #34

Closed
wants to merge 71 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
34e2b8e
simple mcal test nb
andrevitorelli Jun 22, 2021
8c6707e
smaller ellips, metacal tests
andrevitorelli Jun 23, 2021
46ff248
Merge pull request #21 from CosmoStat/main
andrevitorelli Jun 28, 2021
7002e24
comparing autodifferentiation and finite differences
andrevitorelli Jun 28, 2021
5e5e0a8
Delete metacal_compare_auto_finite.ipynb
andrevitorelli Jun 28, 2021
e5a4375
comparison auto finite differentiations
andrevitorelli Jun 28, 2021
d52b410
notebook work
Jul 2, 2021
8ae483b
minor ch
Jul 2, 2021
d5cf9ff
averaging over many galaxies
Jul 2, 2021
dfda012
further investigations at notebook
Jul 2, 2021
708b20b
prototyping
Jul 6, 2021
056faf2
Add files via upload
andrevitorelli Jul 7, 2021
430167e
Merge pull request #24 from CosmoStat/main
andrevitorelli Jul 12, 2021
d4e7c16
nightly work
Jul 13, 2021
9d71697
nightly work
Jul 13, 2021
fa28761
daily
Jul 13, 2021
f6336c1
daily work
Jul 15, 2021
3a52646
daily work
Jul 19, 2021
226545c
Adding test notebook
EiffL Jul 25, 2021
39879be
Merge pull request #27 from CosmoStat/u/EiffL/test_grads
andrevitorelli Jul 26, 2021
160ad04
notebook work
Jul 29, 2021
9895dd4
adding functions for ellipticities, finite diferences to the package
Jul 29, 2021
6324cf5
name change, tf_ngmix initial work
Aug 6, 2021
30a95ed
name change, tf_ngmix initial work
Aug 6, 2021
6e7c459
restructuring
Aug 6, 2021
b82d393
tf ngmix gaussmom implementation
Aug 6, 2021
9bf09a9
adding the tf_ngmix test file
Aug 6, 2021
6ece5e4
tf_ngmix
Sep 8, 2021
bc89e35
tf_ngmix
Sep 8, 2021
c845c83
removing previous tf_ngmix work
Sep 10, 2021
103c8d9
studying ngmix gauss moments
Sep 13, 2021
cdffddb
further explorations of ngmix...
Sep 15, 2021
d1c3c38
simplified ngmix port (not tf-ied yet)
Sep 21, 2021
f96a9e3
simplified ngmix port (not tf-ied yet)
Sep 21, 2021
582f79b
bug fixes in initial
Sep 21, 2021
f38e8d6
added new test notebook for the autometacal.tf_ngmix transition sub-p…
Sep 21, 2021
5107c97
work on tf_ngmix
Sep 23, 2021
a7f9494
tf port of ngmix, ver 0.1
Sep 28, 2021
7e03937
tf_ngmix testing
Sep 28, 2021
4934961
batched testing tf_ngmix
Sep 29, 2021
e6b0698
corrected name for test_tf_ngmix
Sep 29, 2021
2043c1b
refactoring pixels.py to tf
Oct 1, 2021
364ac0c
fully tf create gmix & testing
Oct 1, 2021
4fb4486
fully tf create gmix & testing
Oct 1, 2021
fa9272e
reworking some of metacal tests
Oct 6, 2021
50431de
restructuring work
Oct 11, 2021
b9aa9af
restructuring work
Oct 11, 2021
9716b83
unit testing current ver of gauss mom
Oct 11, 2021
01f0c38
unit testing current ver of gauss mom
Oct 11, 2021
9e2949d
restructuring
Oct 11, 2021
cd2a272
changing datasets
Oct 12, 2021
ff52953
datasets
Oct 12, 2021
cc1adaf
new dataset work
Oct 12, 2021
85ceb6e
new dataset work
Oct 12, 2021
2f552dd
new dataset work
Oct 12, 2021
7747aa0
Merge branch 'u/andrevitorelli/restructure' into dataset
Oct 12, 2021
a7fa238
working on making simulated galaxies
Oct 18, 2021
eccb4b8
new datasets work/tests
Oct 18, 2021
6532fbe
working on datasets
Oct 19, 2021
c92441e
getting new moments
andrevitorelli Oct 19, 2021
de5a5ee
dataset work
andrevitorelli Oct 20, 2021
a962dd7
dataset work
andrevitorelli Oct 20, 2021
8faa22c
developing datasets
andrevitorelli Oct 20, 2021
9778417
removing old notebooks
andrevitorelli Oct 21, 2021
f33078d
datasets
andrevitorelli Oct 21, 2021
c427037
fixing moments bug (must be g, not e, by galsim defs)
andrevitorelli Oct 21, 2021
296b268
dataset work
andrevitorelli Oct 25, 2021
cd8d2d9
work on datasets
andrevitorelli Oct 27, 2021
f394b48
dataset work
andrevitorelli Oct 27, 2021
dbd6a1f
autodiff-finitediff work
andrevitorelli Nov 3, 2021
18bd037
Merge remote-tracking branch 'origin/main' into dataset
EiffL Nov 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion autometacal/python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
import autometacal.python.tf_ngmix as tf_ngmix
from autometacal.python.metacal import generate_mcal_image, get_metacal_response
from autometacal.python.fitting import fit_multivariate_gaussian, get_ellipticity
from autometacal.python.moments import get_moment_ellipticities, gaussian_moments
from autometacal.python.moments import gaussian_moments, get_moment_ellipticities
1 change: 1 addition & 0 deletions autometacal/python/datasets/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
"""gal_gen dataset."""

from .gal_gen import GalGen
from .galaxies import *
133 changes: 65 additions & 68 deletions autometacal/python/datasets/gal_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import tensorflow_datasets as tfds
import tensorflow as tf
import numpy as np

from .galaxies import gs_generate_images, gs_drawKimage
from scipy.stats import truncnorm
from .galaxies import simple

_DESCRIPTION = "This tfds generates random toy-model galaxy stamps."
_CITATION = "{NEEDED}"
Expand All @@ -12,7 +12,13 @@
class GalGenConfig(tfds.core.BuilderConfig):
"""BuilderConfig for GalGen."""

def __init__(self, *,dataset_size=None, stamp_size=None, pixel_scale=None, flux=None, interp_factor=None, padding_factor=None, **kwargs):
def __init__(self,
*,
dataset_size=None,
stamp_size=None,
pixel_scale=None,
flux=None,
**kwargs):
"""BuilderConfig for SQUAD.
Args:
pixel_scale: pixel_scale of the image in arcsec/pixel.
Expand All @@ -33,24 +39,28 @@ def __init__(self, *,dataset_size=None, stamp_size=None, pixel_scale=None, flux=
self.stamp_size = stamp_size
self.pixel_scale = pixel_scale
self.flux = flux
self.interp_factor = 2
self.padding_factor = 1
self.kstamp_size = self.interp_factor*self.padding_factor*self.stamp_size




class GalGen(tfds.core.GeneratorBasedBuilder):
"""Random galaxy image generator."""

MANUAL_DOWNLOAD_INSTRUCTIONS = """\
MANUAL_DOWNLOAD_INSTRUCTIONS = """\
Nothing to download. DataSet is generated at first call.
"""

BUILDER_CONFIGS = [
GalGenConfig(name='small_stamp_100k', dataset_size=100000, stamp_size=50, pixel_scale=.2, flux=1e5),
GalGenConfig(name='large_stamp_100k', dataset_size=100000, stamp_size=100, pixel_scale=.2, flux=1e5),
GalGenConfig(name='small_stamp_100', dataset_size=100, stamp_size=50, pixel_scale=.2, flux=1e5),
GalGenConfig(name='large_stamp_100', dataset_size=100, stamp_size=100, pixel_scale=.2, flux=1e5)
GalGenConfig(name="simple_100",
dataset_size=100,
stamp_size=51,
pixel_scale=.2,
flux=1.e5),
GalGenConfig(name="simple_1k",
dataset_size=1000,
stamp_size=51,
pixel_scale=.2,
flux=1.e5),
]

VERSION = tfds.core.Version('0.1.0')
Expand All @@ -62,70 +72,57 @@ def _info(self):
# Description and homepage used for documentation
description=_DESCRIPTION,
homepage=_URL,
features=tfds.features.FeaturesDict({'label': tfds.features.Tensor(shape=[2], dtype=tf.float32),
'gal_model': tfds.features.Tensor(shape=[self.builder_config.stamp_size,
self.builder_config.stamp_size],
dtype=tf.float32),
'obs_image': tfds.features.Tensor(shape=[self.builder_config.stamp_size,
self.builder_config.stamp_size],
dtype=tf.float32),
'psf_image': tfds.features.Tensor(shape=[self.builder_config.stamp_size,
self.builder_config.stamp_size],
dtype=tf.float32),
'obs_kimage': tfds.features.Tensor(shape=[2,self.builder_config.kstamp_size,
self.builder_config.kstamp_size],
dtype=tf.float32),
'psf_kimage': tfds.features.Tensor(shape=[2,self.builder_config.kstamp_size,
self.builder_config.kstamp_size],
dtype=tf.float32),
'psf_deconv': tfds.features.Tensor(shape=[2,self.builder_config.kstamp_size,
self.builder_config.kstamp_size],
dtype=tf.float32)
}),
supervised_keys=("obs_image","label"),
features=tfds.features.FeaturesDict(
{'label': tfds.features.Tensor(shape=[2], dtype=tf.float32),
'gal_image': tfds.features.Tensor(
shape=[self.builder_config.stamp_size,self.builder_config.stamp_size],
dtype=tf.float32
),
'psf_image': tfds.features.Tensor(
shape=[self.builder_config.stamp_size,self.builder_config.stamp_size],
dtype=tf.float32
)}
),
supervised_keys=("gal_image" ,"label"),
citation=_CITATION)

def _split_generators(self,dl):
"""Returns generators according to split."""
return {tfds.Split.TRAIN: self._generate_examples(self.builder_config.dataset_size,
self.builder_config.stamp_size,
self.builder_config.pixel_scale,
self.builder_config.flux,
self.builder_config.interp_factor,
self.builder_config.padding_factor)}

def _generate_examples(self, dataset_size, stamp_size, pixel_scale, flux, interp_factor, padding_factor):
return {
tfds.Split.TRAIN: self._generate_examples(
self.builder_config.dataset_size,
self.builder_config.stamp_size,
self.builder_config.pixel_scale,
self.builder_config.flux
)
}

def _generate_examples(self, dataset_size, stamp_size, pixel_scale, flux):
"""Yields examples."""
np.random.seed(31415)

for i in range(dataset_size):

#generate example
label, model, obs_img, psf_img, obs_kimg, psf_kimg, psf_deconv = gs_generate_images(stamp_size = stamp_size,
pixel_scale = pixel_scale,
flux = flux,
interp_factor = interp_factor,
padding_factor = padding_factor)


#store complex arrays in 2,N,N
obs_kimg = decomplexify(obs_kimg.numpy())
psf_kimg = decomplexify(psf_kimg.numpy())
psf_deconv = decomplexify(psf_deconv.numpy())


yield '%d'%i, {'gal_model': model.numpy(), #noiseless PSFless galaxy model
'obs_image': obs_img.numpy(), #observed image
'psf_image': psf_img.numpy(), #psf image
'obs_kimage': obs_kimg, #obs k image
'psf_kimage': psf_kimg, #psf k image
'psf_deconv': psf_deconv, #psf deconv kernel
'label': label.numpy() }
a, b = -.7/.3, .7/.3 #(max_ellip/ellip_sigma)


def decomplexify(arr):
arr=np.array([arr.real,arr.imag])
return arr
for i in range(dataset_size):
g1=g2=1
while g1**2+g2**2>1:
g1 = truncnorm.rvs(a, b, loc=0, scale=.3)
g2 = truncnorm.rvs(a, b, loc=0, scale=.3)

gals, psfs = simple(
snr = 100,
scale = pixel_scale,
stamp_size = stamp_size,
psf_fwhm = 0.9,
gal_hlr = 0.7,
gal_g1 = g1,
gal_g2 = g2,
flux=flux
)

def recomplexify(arl):
return arl[0]+1j*arl[1]

#get example
yield '%d'%i, {'gal_image': gal.numpy(), #galaxy image
'psf_image': psf.numpy(), #psf image
'label': [g1,g2]} #ellipticity
Loading