Source code for marvin.contrib.vacs.galaxyzoo

# !usr/bin/env python
# -*- coding: utf-8 -*-
#
# Modified from mangahi.py by Karen Masters.

from __future__ import print_function, division, absolute_import

import astropy
import marvin.tools

from .base import VACMixIn


[docs]class GZVAC(VACMixIn): """Provides access to the MaNGA Galaxy Zoo Morphology VAC. VAC name: MaNGA Morphologies from Galaxy Zoo URL: https://www.sdss.org/dr17/data_access/value-added-catalogs/?vac_id=manga-morphologies-from-galaxy-zoo Description Returns Galaxy Zoo morphology for MaNGA galaxies. The Galaxy Zoo (GZ) data for SDSS galaxies has been split over several iterations of www.galaxyzoo.org, with the MaNGA target galaxies being spread over five different GZ data sets. In this value added catalog, for DR15, we bring all of these galaxies into one single catalog and re-run the debiasing code (Hart et al. 2016) in a consistent manner across the all the galaxies. This catalog includes data from Galaxy Zoo 2 (previously published in Willett et al. 2013) and newer data from Galaxy Zoo 4 (currently unpublished). For DR17, we provide new and updated Galaxy Zoo (GZ) data for the final MaNGA galaxies. This has been split over three files, each corresponding to a separate GZ catalogue. We have `MaNGA_GZD_auto-v1_0_1.fits`, which corresponds to the automated classifications GZ DECaLS, described in Walmsley et al. 2021. There is also `MaNGA_gzUKIDSS-v1_0_1.fits`, which correponds to GZ:UKIDSS. Finally, we have put the rest of GZ (so not including GZ DECaLS and GZ:UKIDSS) in `MaNGA_gz-v2_0_1.fits`. For more information, please refer to the datamodels provided. Authors: Coleman Krawczyk, Karen Masters, Tobias Géron and the rest of the Galaxy Zoo Team. """ # Required parameters name = "galaxyzoo" description = "Returns Galaxy Zoo morphology" version = {"MPL-7": "v1_0_1", "MPL-8": "v1_0_1", "DR15": "v1_0_1", "DR16": "v1_0_1", "MPL-11" : None, "DR17" : None} display_name = 'Galaxy Zoo' url = 'https://www.sdss.org/dr17/data_access/value-added-catalogs/?vac_id=manga-morphologies-from-galaxy-zoo' # optional Marvin Tools to attach your vac to include = (marvin.tools.cube.Cube, marvin.tools.maps.Maps, marvin.tools.modelcube.ModelCube) # Required method
[docs] def set_summary_file(self, release): ''' Sets the path to the GalaxyZoo summary file. Sets the paths to the GalaxyZoom summary file(s). For DR15 this is a single summary file, while for DR17, this has been split into three files, so ``self.summary_file`` and ``self.path_params`` return lists for DR17. ''' self.summary_file = [] self.path_params = [] # define the variables to build a unique path to your VAC file if release in ["DR17", "MPL-11"]: # for DR17, path is more complicated as we have three files. files = ['GZD_auto', 'gzUKIDSS', 'gz'] version_DR17 = {"GZD_auto": "v1_0_1", "gzUKIDSS": "v1_0_1", "gz": "v2_0_1"} for file in files: params = {"file" : file, "ver" : version_DR17[file]} self.path_params.append(params) # get_path returns False if the files do not exist locally self.summary_file.append(self.get_path("mangagalaxyzoo", path_params=params)) self.data_container = dict(zip(files, self.summary_file)) else: # for other releases prior to DR17, simply do based on release as before self.path_params.append({"ver": self.version[release], "file": "gz"}) self.summary_file.append(self.get_path("mangagalaxyzoo", path_params=self.path_params[0]))
# Required method
[docs] def get_target(self, parent_object): ''' Accesses VAC data for a specific target from a Marvin Tool object ''' # get any parameters you need from the parent object mangaid = parent_object.mangaid # download the vac from the SAS if it does not already exist locally for i in range(len(self.summary_file)): if not self.file_exists(self.summary_file[i]): self.summary_file[i] = self.download_vac("mangagalaxyzoo", path_params=self.path_params[i]) # Open the file(s) using fits.getdata for extension 1 data = [] for i in range(len(self.summary_file)): data.append(astropy.io.fits.getdata(self.summary_file[i], 1)) # Return selected line(s) result = {} keys = ['gz_auto','gz_ukidss', 'gz'] for i in range(len(self.summary_file)): indata = mangaid in data[i]["mangaid"] if not indata: pass # passes instead of adding an empty key-value pair. else: idx = data[i]["mangaid"] == mangaid result[keys[i]] = data[i][idx] # return the result if len(self.summary_file) == 1: # to make sure output stays the same if version is < DR17 return list(result.values())[0] else: # for DR17, return dict with classifications of all three files return result