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