Note
Go to the end to download the full example code.
JSON Schema for Photometry Settings#
The JSON schema for photometry settings is here.
{
"$defs": {
"AAVSOFilters": {
"description": "The definitive list of AAVSO filters is at https://www.aavso.org/filters",
"enum": [
"U",
"B",
"V",
"RJ",
"R",
"I",
"IJ",
"J",
"H",
"K",
"TG",
"TB",
"TR",
"CV",
"CR",
"SZ",
"SU",
"SG",
"SR",
"SI",
"GG",
"GBP",
"GRP",
"STU",
"STV",
"STB",
"STY",
"STHBW",
"STHBN",
"MA",
"MB",
"MI",
"ZS",
"Y",
"HA",
"HAC",
"CBB",
"O"
],
"title": "AAVSOFilters",
"type": "string"
},
"Camera": {
"additionalProperties": false,
"description": "A class to represent a CCD-based camera.",
"properties": {
"name": {
"description": "Name of the camera",
"examples": [
"SBIG FakeCam",
"ZWO NadaCam",
"CG16m"
],
"title": "Name",
"type": "string"
},
"data_unit": {
"description": "units of the data",
"examples": [
"adu",
"DN",
"count"
],
"title": "Data Unit",
"type": "string"
},
"gain": {
"description": "unit should be consistent with data and read noise",
"examples": [
"1.5 electron / adu",
"1.0 electron / DN",
"1.0 photon / count"
],
"title": "Gain",
"type": "string"
},
"read_noise": {
"description": "unit should be consistent with dark current",
"examples": [
"10.0 electron",
"10.0 electron",
"10.0 photon"
],
"title": "Read Noise",
"type": "string"
},
"dark_current": {
"description": "unit consistent with read noise, per unit time",
"examples": [
"0.01 electron / second",
"0.01 electron / second",
"0.01 photon / second"
],
"title": "Dark Current",
"type": "string"
},
"pixel_scale": {
"description": "units of angle per pixel",
"examples": [
"0.6 arcsec / pix"
],
"title": "Pixel Scale",
"type": "string"
},
"max_data_value": {
"description": "maximum data value while performing photometry",
"examples": [
"50000 adu",
"50000 DN",
"50000 count"
],
"gt": 0,
"title": "Max Data Value",
"type": "string"
}
},
"required": [
"name",
"data_unit",
"gain",
"read_noise",
"dark_current",
"pixel_scale",
"max_data_value"
],
"title": "Camera",
"type": "object"
},
"FwhmMethods": {
"description": "Available methods for finding FWHM of stars.",
"enum": [
"fit",
"moments",
"profile"
],
"title": "FwhmMethods",
"type": "string"
},
"LoggingSettings": {
"additionalProperties": false,
"description": "Settings for logging.",
"properties": {
"logfile": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "File to save log to",
"title": "Logfile"
},
"console_log": {
"default": true,
"description": "Show log on console?",
"title": "Console Log",
"type": "boolean"
}
},
"title": "LoggingSettings",
"type": "object"
},
"Observatory": {
"additionalProperties": false,
"description": "Class to represent an observatory.",
"properties": {
"name": {
"description": "Name of the observatory",
"examples": [
"My Observatory"
],
"title": "Name",
"type": "string"
},
"latitude": {
"description": "Latitude of the observatory",
"examples": [
"46.8738",
"46.8738 degree",
"46:52:25.68 degree",
"46d52m25.68s"
],
"title": "Latitude",
"type": "string"
},
"longitude": {
"description": "Longitude of the observatory",
"examples": [
"-96.7678",
"-96d46m04.08s",
"263.2322 degree",
"263d13m55.92s"
],
"title": "Longitude",
"type": "string"
},
"elevation": {
"description": "Elevation of the observatory",
"examples": [
"1000 m",
"1 km",
"3.241e-14 pc",
"1e12 nm"
],
"title": "Elevation",
"type": "string"
},
"AAVSO_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "AAVSO code for observer",
"title": "Aavso Code"
},
"TESS_telescope_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Code for observatory used by TFOP SG01",
"title": "Tess Telescope Code"
}
},
"required": [
"name",
"latitude",
"longitude",
"elevation"
],
"title": "Observatory",
"type": "object"
},
"PassbandMap": {
"additionalProperties": false,
"description": "Class to represent a mapping from one set of filter names to another that behaves like a `dict`.",
"properties": {
"name": {
"description": "Name of the passband map",
"examples": [
"Filter wheel 1"
],
"title": "Name",
"type": "string"
},
"your_filter_names_to_aavso": {
"items": {
"$ref": "#/$defs/PassbandMapEntry"
},
"title": "Your Filter Names To Aavso",
"type": "array"
}
},
"required": [
"name",
"your_filter_names_to_aavso"
],
"title": "PassbandMap",
"type": "object"
},
"PassbandMapEntry": {
"description": "A mapping from a single filter name to its corresponding AAVSO filter name.",
"properties": {
"your_filter_name": {
"description": "Instrumental Filter Name",
"title": "Your Filter Name",
"type": "string"
},
"aavso_filter_name": {
"$ref": "#/$defs/AAVSOFilters",
"title": "AAVSO Filter Name"
}
},
"required": [
"your_filter_name",
"aavso_filter_name"
],
"title": "PassbandMapEntry",
"type": "object"
},
"PhotometryApertures": {
"additionalProperties": false,
"description": "Settings for aperture photometry.",
"properties": {
"variable_aperture": {
"default": false,
"description": "Should the aperture be variable? If True, the aperture will be calculated from the average FWHM of the stars in each image.",
"title": "Variable Aperture",
"type": "boolean"
},
"radius": {
"autoui": "ipywidgets.BoundedFloatText",
"default": 1,
"description": "radius of circular aperture, in pixels or multiple of FWHM",
"exclusiveMinimum": 0,
"title": "Radius",
"type": "number"
},
"gap": {
"autoui": "ipywidgets.BoundedFloatText",
"default": 1,
"description": "Size of gap between aperture and annulus, in pixels",
"exclusiveMinimum": 0,
"title": "Gap",
"type": "number"
},
"annulus_width": {
"autoui": "ipywidgets.BoundedFloatText",
"default": 1,
"description": "distance between inner and outer radii of annulus in pixels",
"exclusiveMinimum": 0,
"title": "Annulus Width",
"type": "number"
},
"fwhm": {
"default": 1.0,
"description": "FWHM estimate in pixels",
"disabled": true,
"exclusiveMinimum": 0,
"title": "FWHM estimate",
"type": "number"
}
},
"title": "PhotometryApertures",
"type": "object"
},
"PhotometryOptionalSettings": {
"additionalProperties": false,
"description": "Options for performing photometry.",
"properties": {
"include_dig_noise": {
"default": true,
"description": "Should the digitization noise be included in the calculation of the noise for each observation?",
"title": "Include Digitization Noise",
"type": "boolean"
},
"reject_too_close": {
"default": true,
"description": "Should sources that are too close each other be excluded from photometry?",
"title": "Reject Too Close",
"type": "boolean"
},
"reject_background_outliers": {
"default": true,
"description": "Should extreme pixels in the annulus be rejected (e.g. from a star in the annulus)?",
"title": "Reject Background Outliers",
"type": "boolean"
},
"fwhm_by_fit": {
"$ref": "#/$defs/FwhmMethods",
"default": "profile",
"description": "Method for finding the FWHM of the star. 'fit' fits a 1D Gaussian to the star, 'profiile' fits a 1D Gaussian to the radial profile, and 'moments' uses second order moments of the image, which is terrible."
},
"method": {
"default": "exact",
"description": "How to handle partial pixels in the aperture.",
"enum": [
"exact",
"center",
"subpixel"
],
"title": "Method",
"type": "string"
}
},
"title": "PhotometryOptionalSettings",
"type": "object"
},
"SourceLocationSettings": {
"additionalProperties": false,
"description": "Settings for the location of the source list and the image files.",
"properties": {
"source_list_file": {
"autoui": "ipyautoui.custom.FileChooser",
"default": "source_locations.ecsv",
"filter_pattern": [
"*.ecsv",
"*.csv"
],
"title": "Source List File",
"type": "string"
},
"use_coordinates": {
"default": "sky",
"description": "coordinates to use for locating sources in image",
"enum": [
"sky",
"pixel"
],
"title": "Use Coordinates",
"type": "string"
},
"shift_tolerance": {
"default": 5.0,
"description": "Maximum shift between source position in list and in image, in pixels",
"minimum": 0,
"title": "Shift Tolerance",
"type": "number"
}
},
"title": "SourceLocationSettings",
"type": "object"
}
},
"additionalProperties": false,
"description": "Settings for performing aperture photometry.",
"properties": {
"camera": {
"$ref": "#/$defs/Camera",
"show_null": true
},
"observatory": {
"$ref": "#/$defs/Observatory",
"show_null": true
},
"passband_map": {
"anyOf": [
{
"$ref": "#/$defs/PassbandMap"
},
{
"type": "null"
}
],
"description": "Class to represent a mapping from one set of filter names to another that behaves like a `dict`.",
"show_null": true
},
"photometry_apertures": {
"$ref": "#/$defs/PhotometryApertures",
"show_null": true
},
"source_location_settings": {
"$ref": "#/$defs/SourceLocationSettings",
"show_null": true
},
"photometry_optional_settings": {
"$ref": "#/$defs/PhotometryOptionalSettings",
"show_null": true
},
"logging_settings": {
"$ref": "#/$defs/LoggingSettings",
"show_null": true
}
},
"required": [
"camera",
"observatory",
"passband_map",
"photometry_apertures",
"source_location_settings",
"photometry_optional_settings",
"logging_settings"
],
"title": "PhotometrySettings",
"type": "object"
}
import json
from stellarphot.settings import photometry_settings_schema
json_schema = json.dumps(photometry_settings_schema, indent=4)
print(json_schema)
Total running time of the script: (0 minutes 0.004 seconds)