Commit 64ac7193 authored by Marco Frailis's avatar Marco Frailis
Browse files

Adding first prototype example with django

parent 10451a1a
Loading
Loading
Loading
Loading

db.sqlite3

0 → 100644
+160 KiB

File added.

No diff preview for this file type.

imagedb/__init__.py

0 → 100644
+0 −0

Empty file added.

imagedb/admin.py

0 → 100644
+9 −0
Original line number Diff line number Diff line
from django.contrib import admin

from .models import(Instrument, NispRawFrame, NispDetector, Astrometry)

# Register your models here.
admin.site.register(Instrument)
admin.site.register(NispRawFrame)
admin.site.register(NispDetector)
admin.site.register(Astrometry)

imagedb/apps.py

0 → 100644
+5 −0
Original line number Diff line number Diff line
from django.apps import AppConfig


class ImagedbConfig(AppConfig):
    name = 'imagedb'

imagedb/models.py

0 → 100644
+184 −0
Original line number Diff line number Diff line

from django.db import models
from composite_field import CompositeField

# Create your models here.


IMAGE_CATEGORY = (
  'SCIENCE',
  'CALIBRATION',
  'SIMULATION'
)

IMAGE_FIRST_GROUP = (
  'OBJECT',
  'STD',
  'BIAS',
  'DARK',
  'FLAT',
  'LINEARITY',
  'OTHER'
)


IMAGE_SECOND_GROUP = (
  'SKY',
  'LAMP',
  'DOME',
  'OTHER'
)

class ImageType(CompositeField):
  
  category = models.CharField(
    max_length=20,
    choices=[(d, d) for d in IMAGE_CATEGORY]
  )
  
  firstType = models.CharField(
    max_length=20,
    choices=[(d,d) for d in IMAGE_FIRST_GROUP]
  )
  
  secondType = models.CharField(
    max_length=20,
    choices=[(d,d) for d in IMAGE_SECOND_GROUP]
  )
  
  
  
class ImageBaseFrame(models.Model):
  exposureTime = models.FloatField()
  imgNumber = models.PositiveSmallIntegerField()
  naxis1 = models.PositiveIntegerField()
  naxis2 = models.PositiveIntegerField()
  imageType = ImageType()
  
  class Meta:
    abstract = True
    

class Instrument(models.Model):
  instrumentName = models.CharField(max_length=100)
  telescopeName = models.CharField(max_length=100)


class Pointing(CompositeField):
  rightAscension = models.FloatField()
  declination = models.FloatField()
  pointingAngle = models.FloatField()


class ImageSpaceFrame(ImageBaseFrame):
  observationDateTime = models.DateTimeField()
  instrument = models.ForeignKey(Instrument, on_delete=models.CASCADE)
  commandedPointing = Pointing()

  class Meta:
    abstract = True


NISP_DETECTOR_ID = (
  '11','12','13','14',
  '21','22','23','24',
  '31','32','33','34',
  '41','42','43','44'
)


class NispDetector(models.Model):
  detectorId = models.CharField(
    max_length=2,
    choices = [(d,d) for d in NISP_DETECTOR_ID]
  )
  gain = models.FloatField()
  readoutNoise = models.FloatField()
  rawFrame = models.ForeignKey('NispRawFrame',
                               related_name='detectors',
                               on_delete=models.CASCADE)


WCS_COORDINATE_TYPE = (
  'RA',
  'DEC',
  'GLON',
  'GLAT',
  'ELON',
  'ELAT'
)

WCS_PROJECTION_TYPE = (
  'LOG',
  'TAN',
  'SIN'
)


class CtypeWcs(CompositeField):
  coordinateType = models.CharField(
    max_length=4,
    choices = [(d,d) for d in WCS_COORDINATE_TYPE]
  )
  projectionType = models.CharField(
    max_length=3,
    choices = [(d,d) for d in WCS_PROJECTION_TYPE]
  )


class Astrometry(models.Model):
  ctpye1 = CtypeWcs()
  ctype2 = CtypeWcs()
  crval1 = models.FloatField()
  crval2 = models.FloatField()
  crpix1 = models.FloatField()
  crpix2 = models.FloatField()
  cd1_1 = models.FloatField()
  cd1_2 = models.FloatField()
  cd2_1 = models.FloatField()
  cd2_2 = models.FloatField()
  detector = models.OneToOneField(NispDetector,
                                  related_name='astrometry',
                                  blank=True,
                                  null=True,
                                  on_delete=models.CASCADE)


NISP_FILTER_WHEEL = (
  'Y',
  'J',
  'H',
  'OPEN',
  'CLOSE'
)

NISP_GRISM_WHEEL = (
  'BLUE0',
  'RED0',
  'RED90',
  'RED180'
  'OPEN'
  'CLOSE'
)

class NispRawFrame(ImageSpaceFrame):
  filterWheelPosition = models.CharField(
    max_length=10,
    choices = [(d,d) for d in NISP_FILTER_WHEEL]
  )

  grismWheelPosition = models.CharField(
    max_length=10,
    choices = [(d,d) for d in NISP_GRISM_WHEEL]
  )





  
  
  
  
  
  
Loading