openbrain/object/vectorset_upload.go

58 lines
1.4 KiB
Go

package object
import (
"fmt"
"strings"
"github.com/openbrainorg/openbrain/util"
)
func (vectorset *Vectorset) LoadVectors(pathPrefix string) {
path := util.GetUploadFilePath(fmt.Sprintf("%s%s", pathPrefix, vectorset.FileName))
var nameArray []string
var dataArray [][]float64
if strings.HasSuffix(vectorset.FileName, ".csv") {
if strings.Contains(vectorset.FileName, "_Dim_") {
nameArray, dataArray = util.LoadVectorFileByCsv2(path)
} else {
nameArray, dataArray = util.LoadVectorFileByCsv(path)
}
} else {
nameArray, dataArray = util.LoadVectorFileBySpace(path)
}
exampleVectors := []*Vector{}
vectors := []*Vector{}
vectorMap := map[string]*Vector{}
for i := 0; i < len(nameArray); i++ {
vector := &Vector{
Name: nameArray[i],
Data: dataArray[i],
}
if i < 100 {
exampleVectors = append(exampleVectors, vector)
}
vectors = append(vectors, vector)
vectorMap[vector.Name] = vector
}
vectorset.Vectors = exampleVectors
vectorset.AllVectors = vectors
vectorset.VectorMap = vectorMap
}
func (vectorset *Vectorset) WriteVectors(pathPrefix string) {
path := util.GetUploadFilePath(fmt.Sprintf("%s%s", pathPrefix, vectorset.FileName))
rows := [][]string{}
for _, vector := range vectorset.AllVectors {
row := util.FloatsToStrings(vector.Data)
row = append([]string{vector.Name}, row...)
rows = append(rows, row)
}
util.WriteCsvFile(path, &rows)
}