 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Variables
- func SchemaFileName(sname string) string
- func SchemaName(fname string) string
- type Common
- type ID1A3
- type ID3A
- type ID4B
- type Lite
- type Schema
- func (s *Schema) Keys() ([]string, error)
- func (s *Schema) Load() error
- func (s *Schema) MandatoryKeys() ([]string, error)
- func (s *Schema) OptionalKeys() ([]string, error)
- func (s *Schema) SectionKeys() (map[string][]string, error)
- func (s *Schema) Sections() ([]string, error)
- func (s *Schema) String() string
- func (s *Schema) Validate(rec map[string]any) error
 
- type SchemaKeys
- type SchemaManager
- type SchemaObject
- type SchemaRecord
Constants ¶
This section is empty.
Variables ¶
var SchemaRenewInterval time.Duration
    SchemaRenewInterval setup interal to update schema cache
var SkipKeys = []string{"User", "Date", "Description", "SchemaName", "SchemaFile", "Schema"}
    SkipKeys
Functions ¶
func SchemaFileName ¶ added in v0.0.1
SchemaFileName obtains schema file name from schema name
func SchemaName ¶ added in v0.0.1
SchemaName extracts schema name from schema file name
Types ¶
type Common ¶
type Common struct {
	Facility                  string   `json:"Facility"`
	Cycle                     string   `json:"Cycle"`
	PI                        string   `json:"PI"`
	BTR                       string   `json:"BTR"`
	Experiments               string   `json:"Experiments"`
	Beamline                  []string `json:"Beamline"`
	StaffScientist            []string `json:"StaffScientist"`
	BeamlineFundingPartner    []string `json:"BeamlineFundingPartner"`
	Alignment                 bool     `json:"Alignment"`
	DataLocationRaw           string   `json:"DataLocationRaw"`
	Detectors                 []string `json:"Detectors"`
	CESRConditions            []string `json:"CESRConditions"`
	ExperimentType            []string `json:"ExperimentType"`
	Technique                 []string `json:"Technique"`
	SampleType                []string `json:"SampleType"`
	SampleName                string   `json:"SampleName"`
	Calibration               bool     `json:"Calibration"`
	DataLocationMeta          string   `json:"DataLocationMeta"`
	DataLocationReduced       string   `json:"DataLocationReduced"`
	DataLocationScratch       string   `json:"DataLocationScratch"`
	DataLocationBeamtimeNotes string   `json:"DataLocationBeamtimeNotes"`
}
    Common schema definition
type ID1A3 ¶
type ID1A3 struct {
	Facility                       string   `json:"Facility"`
	Cycle                          string   `json:"Cycle"`
	PI                             string   `json:"PI"`
	BTR                            string   `json:"BTR"`
	Experiments                    string   `json:"Experiments"`
	Beamline                       []string `json:"Beamline"`
	StaffScientist                 []string `json:"StaffScientist"`
	BeamlineFundingPartner         []string `json:"BeamlineFundingPartner"`
	Affiliation                    []string `json:"Affiliation"`
	Alignment                      bool     `json:"Alignment"`
	EnergyScan                     bool     `json:"EnergyScan"`
	EnergyScanDocument             string   `json:"EnergyScanDocument"`
	DataLocationRaw                string   `json:"DataLocationRaw"`
	DataLocationMeta               string   `json:"DataLocationMeta"`
	DataLocationReduced            string   `json:"DataLocationReduced"`
	DataLocationBeamtimeNotes      string   `json:"DataLocationBeamtimeNotes"`
	CESRConditions                 []string `json:"CESRConditions"`
	InsertionDevice                []string `json:"InsertionDevice"`
	Monochromator                  []string `json:"Monochromator"`
	Focusing                       []string `json:"Focusing"`
	BeamMode                       []string `json:"BeamMode"`
	BeamEnergy                     float64  `json:"BeamEnergy"`
	BeamlineSetupDocument          string   `json:"BeamlineSetupDocument"`
	Detectors                      []string `json:"Detectors"`
	ExperimentType                 []string `json:"ExperimentType"`
	Technique                      []string `json:"Technique"`
	InSitu                         bool     `json:"InSitu"`
	MechanicalTest                 bool     `json:"MechanicalTest"`
	MechanicalTestType             []string `json:"MechanicalTestType"`
	MechanicalLoadFrame            []string `json:"MechanicalLoadFrame"`
	MechanicalGrips                []string `json:"MechanicalGrips"`
	SupplementaryTechnique         []string `json:"SupplementaryTechnique"`
	Furnace                        []string `json:"Furnace"`
	SampleName                     string   `json:"SampleName"`
	Calibration                    bool     `json:"Calibration"`
	SampleSpaceGroup               string   `json:"SampleSpaceGroup"`
	SampleGeometry                 string   `json:"SampleGeometry"`
	SampleMatPedHeatTreatment      string   `json:"SampleMatPedHeatTreatment"`
	SampleMatPedProcessingRoute    string   `json:"SampleMatPedProcessingRoute"`
	MaterialSafetyHazardousSamples bool     `json:"MaterialSafetyHazardousSamples"`
	SampleState                    []string `json:"SampleState"`
}
    ID1A3 schema definition
type ID3A ¶
type ID3A struct {
	Facility                       string    `json:"Facility"`
	Cycle                          string    `json:"Cycle"`
	PI                             string    `json:"PI"`
	BTR                            string    `json:"BTR"`
	Experiments                    string    `json:"Experiments"`
	Beamline                       []string  `json:"Beamline"`
	StaffScientist                 []string  `json:"StaffScientist"`
	BeamlineFundingPartner         []string  `json:"BeamlineFundingPartner"`
	Affiliation                    []string  `json:"Affiliation"`
	Alignment                      bool      `json:"Alignment"`
	EnergyScan                     bool      `json:"EnergyScan"`
	UndulatorScan                  bool      `json:"UndulatorScan"`
	BeamSlitHorizontalSize         float64   `json:"BeamSlitHorizontalSize"`
	BeamSlitVerticalSize           float64   `json:"BeamSlitVerticalSize"`
	BeamSlitHorizontalPosition     float64   `json:"BeamSlitHorizontalPosition"`
	BeamSlitVerticalPosition       float64   `json:"BeamSlitVerticalPosition"`
	PreSlitHorizontalSize          float64   `json:"PreSlitHorizontalSize"`
	PreSlitVerticalSize            float64   `json:"PreSlitVerticalSize"`
	PreSlitHorizontalPosition      float64   `json:"PreSlitHorizontalPosition"`
	PreSlitVerticalPosition        float64   `json:"PreSlitVerticalPosition"`
	GuardSlitHorizontalSize        float64   `json:"GuardSlitHorizontalSize"`
	GuardSlitVerticalSize          float64   `json:"GuardSlitVerticalSize"`
	GuardSlitHorizontalPosition    float64   `json:"GuardSlitHorizontalPosition"`
	GuardSlitVerticalPosition      float64   `json:"GuardSlitVerticalPosition"`
	DataLocationRaw                string    `json:"DataLocationRaw"`
	DataLocationMeta               string    `json:"DataLocationMeta"`
	DataLocationReduced            string    `json:"DataLocationReduced"`
	DataLocationScratch            string    `json:"DataLocationScratch"`
	DataLocationBeamtimeNotes      string    `json:"DataLocationBeamtimeNotes"`
	CESRConditions                 []string  `json:"CESRConditions"`
	BeamEnergy                     float64   `json:"BeamEnergy"`
	Monochromator                  []string  `json:"Monochromator"`
	Focusing                       []string  `json:"Focusing"`
	AttenMaterial                  []string  `json:"AttenMaterial"`
	AttenThickness                 float64   `json:"AttenThickness"`
	EnergyFoil                     []string  `json:"EnergyFoil"`
	Detectors                      []string  `json:"Detectors"`
	ExperimentType                 []string  `json:"ExperimentType"`
	Technique                      []string  `json:"Technique"`
	InSitu                         bool      `json:"InSitu"`
	MechanicalTest                 bool      `json:"MechanicalTest"`
	MechanicalTestType             []string  `json:"MechanicalTestType"`
	MechanicalLoadFrame            []string  `json:"MechanicalLoadFrame"`
	MechanicalGrips                []string  `json:"MechanicalGrips"`
	SupplementaryTechnique         []string  `json:"SupplementaryTechnique"`
	Furnace                        []string  `json:"Furnace"`
	Processing                     []string  `json:"Processing"`
	Calibration                    bool      `json:"Calibration"`
	ReferenceCalibrantSampleName   string    `json:"ReferenceCalibrantSampleName"`
	ReferenceCalibrantScanNumber   int32     `json:"ReferenceCalibrantScanNumber"`
	ReferenceEnergyScanSampleName  string    `json:"ReferenceEnergyScanSampleName"`
	ReferenceEnergyScanNumber      int32     `json:"ReferenceEnergyScanNumber"`
	SampleName                     string    `json:"SampleName"`
	SampleCommonName               string    `json:"SampleCommonName"`
	SampleChemicalFormula          string    `json:"SampleChemicalFormula"`
	SampleUnitCell                 []float64 `json:"SampleUnitCell"`
	SampleSpaceGroup               int64     `json:"SampleSpaceGroup"`
	SampleGeometry                 string    `json:"SampleGeometry"`
	SampleMatPedHeatTreatment      string    `json:"SampleMatPedHeatTreatment"`
	SampleMatPedProcessingRoute    string    `json:"SampleMatPedProcessingRoute"`
	MaterialSafetyHazardousSamples bool      `json:"MaterialSafetyHazardousSamples"`
}
    ID3A schema
type ID4B ¶
type ID4B struct {
	Facility                       string   `json:"Facility"`
	Cycle                          string   `json:"Cycle"`
	PI                             string   `json:"PI"`
	BTR                            string   `json:"BTR"`
	Experiments                    string   `json:"Experiments"`
	Beamline                       []string `json:"Beamline"`
	StaffScientist                 []string `json:"StaffScientist"`
	BeamlineFundingPartner         []string `json:"BeamlineFundingPartner"`
	Alignment                      bool     `json:"Alignment"`
	EnergyScan                     bool     `json:"EnergyScan"`
	UndulatorScan                  bool     `json:"UndulatorScan"`
	SpotSize                       string   `json:"SpotSize"`
	DataLocationRaw                string   `json:"DataLocationRaw"`
	DataLocationMeta               string   `json:"DataLocationMeta"`
	DataLocationReduced            string   `json:"DataLocationReduced"`
	DataLocationBeamtimeNotes      string   `json:"DataLocationBeamtimeNotes"`
	DataLocationScientificData     string   `json:"DataLocationScientificData"`
	CESRConditions                 []string `json:"CESRConditions"`
	BeamEnergy                     string   `json:"BeamEnergy"`
	InsertionDevice                []string `json:"InsertionDevice"`
	Monochromator                  []string `json:"Monochromator"`
	EnergyFoil                     []string `json:"EnergyFoil"`
	Detectors                      []string `json:"Detectors"`
	ExperimentType                 []string `json:"ExperimentType"`
	InSitu                         bool     `json:"InSitu"`
	Technique                      []string `json:"Technique"`
	CryoCooler                     []string `json:"CryoCooler"`
	Cryostream11Kto500K            string   `json:"Cryostream11Kto500K"`
	Cryostat3Kto300K               string   `json:"Cryostat3Kto300K"`
	ScanEdgeK                      string   `json:"ScanEdgeK"`
	ScanEdgeL                      string   `json:"ScanEdgeL"`
	Calibration                    []string `json:"Calibration"`
	ReferenceCalibrantSampleName   string   `json:"ReferenceCalibrantSampleName"`
	SampleType                     []string `json:"SampleType"`
	SampleName                     string   `json:"SampleName"`
	SampleChemicalFormula          string   `json:"SampleChemicalFormula"`
	SampleThermalGradient          bool     `json:"SampleThermalGradient"`
	SampleUnitCell                 string   `json:"SampleUnitCell"`
	SampleDSpacing                 float64  `json:"SampleDSpacing"`
	SampleMass                     string   `json:"SampleMass"`
	SampleSpaceGroup               string   `json:"SampleSpaceGroup"`
	SampleMatPedHeatTreatment      string   `json:"SampleMatPedHeatTreatment"`
	SampleMatPedProcessingRoute    string   `json:"SampleMatPedProcessingRoute"`
	SampleState                    []string `json:"SampleState"`
	SamplePreparationDate          string   `json:"SamplePreparationDate"`
	MaterialSafetyHazardousSamples bool     `json:"MaterialSafetyHazardousSamples"`
	HolderLabel                    string   `json:"HolderLabel"`
}
    ID4B schema definition
type Lite ¶
type Lite struct {
	Facility                  string   `json:"Facility"`
	Cycle                     string   `json:"Cycle"`
	PI                        string   `json:"PI"`
	BTR                       string   `json:"BTR"`
	Experiments               string   `json:"Experiments"`
	Beamline                  []string `json:"Beamline"`
	StaffScientist            []string `json:"StaffScientist"`
	BeamlineFundingPartner    []string `json:"BeamlineFundingPartner"`
	Affiliation               []string `json:"Affiliation"`
	Alignment                 bool     `json:"Alignment"`
	DataLocationRaw           string   `json:"DataLocationRaw"`
	Detectors                 []string `json:"Detectors"`
	CESRConditions            []string `json:"CESRConditions"`
	ExperimentType            []string `json:"ExperimentType"`
	Technique                 []string `json:"Technique"`
	SampleType                []string `json:"SampleType"`
	SampleName                string   `json:"SampleName"`
	Calibration               bool     `json:"Calibration"`
	DataLocationMeta          string   `json:"DataLocationMeta"`
	DataLocationReduced       string   `json:"DataLocationReduced"`
	DataLocationScratch       string   `json:"DataLocationScratch"`
	DataLocationBeamtimeNotes string   `json:"DataLocationBeamtimeNotes"`
}
    Lite schema definition
type Schema ¶ added in v0.0.1
type Schema struct {
	FileName       string                  `json:"fileName`
	Map            map[string]SchemaRecord `json:"map"`
	WebSectionKeys map[string][]string     `json:"webSectionKeys"`
	Verbose        int                     `json:"verbose"`
}
    Schema provides structure of schema file
func (*Schema) MandatoryKeys ¶ added in v0.0.1
MandatoryKeys provides list of madatory keys of the schema
func (*Schema) OptionalKeys ¶ added in v0.0.1
OptionalKeys provides list of optional keys of the schema
func (*Schema) SectionKeys ¶ added in v0.0.1
SectionKeys provides map of section keys
type SchemaKeys ¶ added in v0.0.1
SchemaKeys represents full collection of schema keys across all schemas
type SchemaManager ¶ added in v0.0.1
type SchemaManager struct {
	Map     map[string]*SchemaObject
	Verbose int
}
    SchemaManager holds current map of MetaData schema objects
func (*SchemaManager) Load ¶ added in v0.0.1
func (m *SchemaManager) Load(fname string) (*Schema, error)
Schema returns either cached schema map or load it from provided file
func (*SchemaManager) String ¶ added in v0.0.1
func (m *SchemaManager) String() string
Schema returns either cached schema map or load it from provided file
type SchemaObject ¶ added in v0.0.1
SchemaObject holds current MetaData schema
type SchemaRecord ¶ added in v0.0.1
type SchemaRecord struct {
	Key         string `json:"key"`
	Type        string `json:"type"`
	Optional    bool   `json:"optional"`
	Multiple    bool   `json:"multiple"`
	Section     string `json:"section"`
	Value       any    `json:"value"`
	Placeholder string `json:"placeholder"`
	Description string `json:"description"`
}
    SchemaRecord provide schema record structure