Data loader

To populate SkyPortal with initial data, use tools/data_loader.py. This is also used when doing make load_seed_data and make load_demo_data.

The data loader reads a data file in YAML format. This YAML files matches the SkyPortal API: each entry corresponds to an API endpoint, and contains a list of objects to post (see data/db_demo.yaml for an example).

References

The attributes of a posted object can be saved as references:

groups:
  - name: Program A
    group_admins:
      - testadmin@cesium-ml.org
    =id: program_A

Here, the id field of the created group is stored as program_A. This can now be used when, e.g., posting a telescope:

telescope:
  - name: Palomar 1.5m
    nickname: P60
    lat: 33.3633675
    lon: -116.8361345
    elevation: 1870
    diameter: 1.5
    skycam_link: http://bianca.palomar.caltech.edu/images/allsky/AllSkyCurrentImage.JPG
    group_ids:
      - =program_A

Endpoints can also contain references:

groups/=program_A/users:
  - username: viewonlyuser@cesium-ml.org
    admin: false

Here, the endpoint will become, e.g., groups/6/users.

Files

Lists of objects to post can be loaded through a top-level file entry:

telescope:
  file: telescopes.yaml

If objects reference png files, those will be read in and posted as b64-encoded bytes:

thumbnail:
  - obj_id: 14gqr
    ttype: new
    data:
      file: ../skyportal/tests/data/14gqr_new.png

CSV files are read as columns, each of which becomes an entry in the posted object:

photometry:
  - obj_id: 14gqr_unsaved_copy
    file: phot.csv
    group_ids:
      - =program_A

Here, phot.csv has columns filter, mjd, etc., so each of those would become an entry in the posted object, each with a list of values.