func TestSecondPass(t *testing.T) { var ncTest lib.Nc var m config.Map var cfg toml.Configtoml var optDebug *bool filetoml := "../configfile/configtoml.toml" cfg = toml.InitToml(filetoml) m = config.InitMap() ncTest.Extras_s = make(map[string]string) ncTest.Extras_f = make(map[string]float64) ncTest.Variables_1D = make(map[string]interface{}) ncTest.Variables_1D["TIME"] = []float64{} ncTest.Variables_1D["LATITUDE"] = []float64{} ncTest.Variables_1D["LONGITUDE"] = []float64{} ncTest.Variables_1D["PROFILE"] = []float64{} profile := GetProfileNumber(&ncTest, 0) TestFile := []string{"../data/20150718-114047-AT_COLCOR.COLCOR"} secondPassTHERMO(&ncTest, &m, cfg, TestFile, optDebug) fmt.Println("Time start :", ncTest.Extras_s[fmt.Sprintf("Starttime:%d", int(profile))]) fmt.Println("Latitude start :", ncTest.Extras_s[fmt.Sprintf("Startlatpos:%d", int(profile))]) fmt.Println("Longitude start :", ncTest.Extras_s[fmt.Sprintf("Startlongpos:%d", int(profile))]) }
func TestSecondPass(t *testing.T) { var ncTest lib.Nc var m config.Map var cfg toml.Configtoml var optDebug *bool filetoml := "../configfile/configtoml.toml" cfg = toml.InitToml(filetoml) m = config.InitMap() ncTest.Extras_s = make(map[string]string) ncTest.Extras_f = make(map[string]float64) ncTest.Variables_1D = make(map[string]interface{}) ncTest.Variables_1D["TIME"] = []float64{} ncTest.Variables_1D["LATITUDE"] = []float64{} ncTest.Variables_1D["LONGITUDE"] = []float64{} ncTest.Variables_1D["PROFILE"] = []float64{} TestFile := []string{"../data/csp00201.lad"} secondPassLADCP(&ncTest, &m, cfg, TestFile, optDebug) fmt.Println("Time :", ncTest.Variables_1D["TIME"]) fmt.Println("Latitude :", ncTest.Variables_1D["LATITUDE"]) fmt.Println("Longitude :", ncTest.Variables_1D["LONGITUDE"]) }
//function for testing GetProfileNumber func TestGetProfile(t *testing.T) { // variable for test var ncTest lib.Nc ncTest.Extras_s = make(map[string]string) Profile := GetProfileNumber(&ncTest, 1) fmt.Println("Profile THERMO Number : ", Profile) }
// read cnv files in two pass, the first to get dimensions // second to get data func ReadSeabird(nc *lib.Nc, m *config.Map, filestruct analyze.Structfile, cfg toml.Configtoml, files []string, optCfgfile string, optAll *bool, optDebug *bool, prefixAll string) { switch { case filestruct.Instrument == cfg.Instrument.Type[0]: config.GetConfigCTD(nc, m, cfg, optCfgfile, filestruct.TypeInstrument, optAll) // first pass, return dimensions fron cnv files nc.Dimensions["TIME"], nc.Dimensions["DEPTH"] = firstPassCTD(nc, m, cfg, files) // initialize 2D data nc.Variables_2D = make(lib.AllData_2D) for i, _ := range m.Map_var { nc.Variables_2D.NewData_2D(i, nc.Dimensions["TIME"], nc.Dimensions["DEPTH"]) } // second pass, read files again, extract data and fill slices secondPassCTD(nc, m, cfg, files, optDebug) // write ASCII file WriteAscii(nc, cfg, m.Map_format, m.Hdr, filestruct.Instrument, prefixAll) // write netcdf file //if err := nc.WriteNetcdf(); err != nil { //log.Fatal(err) //} netcdf.WriteNetcdf(nc, m, cfg, filestruct.Instrument, prefixAll) case filestruct.Instrument == cfg.Instrument.Type[1]: config.GetConfigBTL(nc, m, cfg, optCfgfile, filestruct.TypeInstrument) // first pass, return dimensions fron btl files nc.Dimensions["TIME"], nc.Dimensions["DEPTH"] = firstPassBTL(nc, m, cfg, files) // initialize 2D data nc.Variables_2D = make(lib.AllData_2D) for i, _ := range m.Map_var { nc.Variables_2D.NewData_2D(i, nc.Dimensions["TIME"], nc.Dimensions["DEPTH"]) } // second pass, read files again, extract data and fill slices secondPassBTL(nc, m, cfg, files, optDebug) // write ASCII file WriteAscii(nc, cfg, m.Map_format, m.Hdr, filestruct.Instrument, prefixAll) // write netcdf file //if err := nc.WriteNetcdf(); err != nil { //log.Fatal(err) //} netcdf.WriteNetcdf(nc, m, cfg, filestruct.Instrument, prefixAll) } }
//function for testing GetProfileNumber func TestGetProfile(t *testing.T) { // variable for test fileconfigTest := "../configfile/configtoml.toml" var cfg toml.Configtoml var ncTest lib.Nc cfg = toml.InitToml(fileconfigTest) ncTest.Extras_s = make(map[string]string) TestFile := "../data/csp00201.cnv" Profile := GetProfileNumber(&ncTest, cfg, TestFile) fmt.Println("Profile CTD Number : ", Profile) }
func TestFirstPass(t *testing.T) { var ncTest lib.Nc var m config.Map var cfg toml.Configtoml filetoml := "../configfile/configtoml.toml" cfg = toml.InitToml(filetoml) m = config.InitMap() ncTest.Extras_s = make(map[string]string) ncTest.Extras_f = make(map[string]float64) TestFile := []string{"../data/csp00201.lad"} time, depth := firstPassLADCP(&ncTest, &m, cfg, TestFile) fmt.Println("Time : ", time) fmt.Println("Depth : ", depth) }
func TestFirstPass(t *testing.T) { var ncTest lib.Nc var m config.Map var cfg toml.Configtoml filetoml := "../configfile/configtoml.toml" cfg = toml.InitToml(filetoml) m = config.InitMap() ncTest.Extras_s = make(map[string]string) ncTest.Extras_f = make(map[string]float64) TestFile := []string{"../data/20150718-114047-AT_COLCOR.COLCOR"} time, depth := firstPassTHERMO(&ncTest, &m, cfg, TestFile) fmt.Println("Time : ", time) fmt.Println("Depth : ", depth) }
func TestSecondPass(t *testing.T) { var ncTest lib.Nc var m config.Map var cfg toml.Configtoml var optDebug *bool filetoml := "../configfile/configtoml.toml" cfg = toml.InitToml(filetoml) m = config.InitMap() ncTest.Dimensions = make(map[string]int) ncTest.Attributes = make(map[string]string) ncTest.Extras_f = make(map[string]float64) ncTest.Extras_s = make(map[string]string) ncTest.Variables_1D = make(map[string]interface{}) // initialize map entry from nil interface to empty slice of float64 ncTest.Variables_1D["PROFILE"] = []float64{} ncTest.Variables_1D["TIME"] = []float64{} ncTest.Variables_1D["LATITUDE"] = []float64{} ncTest.Variables_1D["LONGITUDE"] = []float64{} ncTest.Variables_1D["BATH"] = []float64{} ncTest.Variables_1D["TYPECAST"] = []float64{} TestFile := []string{"../data/csp00101.btl"} secondPassBTL(&ncTest, &m, cfg, TestFile, optDebug) fmt.Println("Time :", ncTest.Variables_1D["TIME"]) fmt.Println("Latitude :", ncTest.Variables_1D["LATITUDE"]) fmt.Println("Longitude :", ncTest.Variables_1D["LONGITUDE"]) }
//function for testing Decodedata func TestDecodeData(t *testing.T) { // variable for test var ncTest lib.Nc var m config.Map m = config.InitMap() ncTest.Extras_s = make(map[string]string) fmt.Println("Debut fichier THERMO :") TestFile := "../data/FileTestDecodeData5.TEST" var profileTest float64 = 1 var line int = 0 fid, err := os.Open(TestFile) if err != nil { log.Fatal(err) } defer fid.Close() scanner := bufio.NewScanner(fid) for scanner.Scan() { str := scanner.Text() DecodeData(&ncTest, &m, str, profileTest, TestFile, line) line++ } if err := scanner.Err(); err != nil { log.Fatal(err) } fmt.Println("Number of line : ", line) }
func TestDecodeHeader(t *testing.T) { // variable for test var cfg toml.Configtoml var fileconfig string var ncTest lib.Nc var optDebug *bool fileconfigTest := "../configfile/configtoml.toml" cfg = toml.InitToml(fileconfigTest) fmt.Println("fileconfig ", fileconfig) ncTest.Dimensions = make(map[string]int) ncTest.Attributes = make(map[string]string) ncTest.Extras_f = make(map[string]float64) ncTest.Extras_s = make(map[string]string) ncTest.Variables_1D = make(map[string]interface{}) // initialize map entry from nil interface to empty slice of float64 ncTest.Variables_1D["TIME"] = []float64{} ncTest.Variables_1D["LATITUDE"] = []float64{} ncTest.Variables_1D["LONGITUDE"] = []float64{} var profileTest float64 = 00001 //var StringTest string = "Date = 2015/07/24" //var StringTest string = "Start_Time = 06:11:23" //var StringTest string = "Latitude = -10.9877" var StringTest string = "Longitude : 24 12.78809W" temp := regexp.MustCompile(cfg.Mk21.Longitude) fmt.Println(cfg.Mk21.Longitude) fmt.Println(StringTest) if temp.MatchString(StringTest) { fmt.Println("same") } else { fmt.Println("not same") } DecodeHeader(&ncTest, cfg, StringTest, profileTest, optDebug) }
//function for testing Decodeheader func TestDecodeHeader(t *testing.T) { // variable for test var cfg toml.Configtoml var ncTest lib.Nc var optDebug *bool fileconfigTest := "../configfile/configtoml.toml" cfg = toml.InitToml(fileconfigTest) ncTest.Dimensions = make(map[string]int) ncTest.Attributes = make(map[string]string) ncTest.Extras_f = make(map[string]float64) ncTest.Extras_s = make(map[string]string) ncTest.Variables_1D = make(map[string]interface{}) // initialize map entry from nil interface to empty slice of float64 ncTest.Variables_1D["PROFILE"] = []float64{} ncTest.Variables_1D["TIME"] = []float64{} ncTest.Variables_1D["LATITUDE"] = []float64{} ncTest.Variables_1D["LONGITUDE"] = []float64{} ncTest.Variables_1D["BATH"] = []float64{} ncTest.Variables_1D["TYPECAST"] = []float64{} var profileTest float64 = 00101 var StringTest string = "* System UpLoad Time = Jul 20 2015 06:15:13" //var StringTest string = "* NMEA Latitude = 19 58.55 S" //var StringTest string = "* NMEA Longitude = 168 00.45 E" //var StringTest string = "** Cruise : CASSIOPEE" //var StringTest string = "** Station : 00101" //var StringTest string = "** Bottom Depth: 4937" //var StringTest string = "** Operator: JG-GE-ESL" //var StringTest string = "** Type: PHY" fmt.Println(cfg.Seabird.SystemTime) temp := regexp.MustCompile(cfg.Seabird.SystemTime) if temp.MatchString(StringTest) { fmt.Println("same") } else { fmt.Println("not same") } DecodeHeader(&ncTest, cfg, StringTest, profileTest, optDebug) }
func GetConfigXBT(nc *lib.Nc, m *Map, cfg toml.Configtoml, configFile string, Type string, optAll *bool) { // var split, header, format string var split []string // define map from netcdf structure nc.Dimensions = make(map[string]int) nc.Attributes = make(map[string]string) nc.Extras_f = make(map[string]float64) nc.Extras_s = make(map[string]string) nc.Variables_1D = make(map[string]interface{}) // initialize map entry from nil interface to empty slice of float64 nc.Variables_1D["PROFILE"] = []float64{} nc.Variables_1D["TIME"] = []float64{} nc.Variables_1D["LATITUDE"] = []float64{} nc.Variables_1D["LONGITUDE"] = []float64{} nc.Variables_1D["TYPECAST"] = []float64{} nc.Roscop = roscop.NewRoscop(cfg.Roscopfile) // add some global attributes for profile, change in future nc.Attributes["data_type"] = Type split = cfg.Xbt.Split // stationPrefixLength = cfg.Ctd.StationPrefixLength // TODOS: complete nc.Attributes["cycle_mesure"] = cfg.Cruise.CycleMesure nc.Attributes["plateforme"] = cfg.Cruise.Plateforme nc.Attributes["institute"] = cfg.Cruise.Institute nc.Attributes["pi"] = cfg.Cruise.Pi nc.Attributes["timezone"] = cfg.Cruise.Timezone nc.Attributes["begin_date"] = cfg.Cruise.BeginDate nc.Attributes["end_date"] = cfg.Cruise.EndDate nc.Attributes["creator"] = cfg.Cruise.Creator nc.Attributes["type_instrument"] = cfg.Xbt.TypeInstrument nc.Attributes["instrument_number"] = cfg.Xbt.InstrumentNumber // add specific column(s) to the first header line in ascii file // First column should be PRFL m.Hdr = append(m.Hdr, "PRFL") // fill map_var from split (read in .ini configuration file) // store the position (column) of each physical parameter var fields []string fields = split fmt.Fprintln(lib.Debug, "getConfig: ", fields) // construct header slice from split for i := 0; i < len(fields); i += 2 { if v, err := strconv.Atoi(fields[i+1]); err == nil { m.Map_var[fields[i]] = v - 1 m.Hdr = append(m.Hdr, fields[i]) } } fmt.Fprintln(lib.Debug, "getConfig: ", m.Hdr) // fill map_format from code_roscop for _, key := range m.Hdr { m.Map_format[key] = nc.Roscop.GetAttributesM(key, "format") } }