From 6b8a7fba0633d03caa287d52b58e1879bc0f9fe2 Mon Sep 17 00:00:00 2001 From: Aidan-Z Date: Sat, 8 Jun 2024 17:28:55 -0300 Subject: [PATCH] go routines --- cli/normalize.go | 10 ++++++---- cli/standardise.go | 10 ++++++---- data/equations.go | 31 ++++++++++++++++++------------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/cli/normalize.go b/cli/normalize.go index 06cffbf..be45bab 100644 --- a/cli/normalize.go +++ b/cli/normalize.go @@ -1,11 +1,10 @@ package cli import ( - "github.com/Aidan-Zamfir/normalizer/data" - "log" - "github.com/Aidan-Zamfir/normalizer/csvData" + "github.com/Aidan-Zamfir/normalizer/data" "github.com/spf13/cobra" + "log" ) var normalizeCmd = &cobra.Command{ @@ -13,6 +12,7 @@ var normalizeCmd = &cobra.Command{ Short: "Will return normalized values as .csv file", //decide Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { + c := make(chan []float64) da, head, err := csvData.GetCSVData(args[0]) if err != nil { @@ -22,7 +22,9 @@ var normalizeCmd = &cobra.Command{ cols := [][]float64{} for i := range da { - result := data.MinMax(da[i]) + go data.MinMax(da[i], c) + result := <-c + //result := data.MinMax(da[i]) cols = append(cols, result) } diff --git a/cli/standardise.go b/cli/standardise.go index 7238c14..f959ee4 100644 --- a/cli/standardise.go +++ b/cli/standardise.go @@ -1,11 +1,10 @@ package cli import ( - "github.com/Aidan-Zamfir/normalizer/data" - "log" - "github.com/Aidan-Zamfir/normalizer/csvData" + "github.com/Aidan-Zamfir/normalizer/data" "github.com/spf13/cobra" + "log" ) var standardiseCmd = &cobra.Command{ @@ -13,6 +12,8 @@ var standardiseCmd = &cobra.Command{ Short: "Will return standardised values as .csv file", //decide Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { + c := make(chan []float64) + da, head, err := csvData.GetCSVData(args[0]) if err != nil { log.Fatal(err) @@ -21,7 +22,8 @@ var standardiseCmd = &cobra.Command{ cols := [][]float64{} for i := range da { - result := data.Standardise(da[i]) + go data.MinMax(da[i], c) + result := <-c cols = append(cols, result) } diff --git a/data/equations.go b/data/equations.go index acd1147..fa73418 100644 --- a/data/equations.go +++ b/data/equations.go @@ -2,22 +2,25 @@ package data import ( "math" + "time" ) -func MinMax(arr []float64) []float64 { +func MinMax(arr []float64, c chan []float64) { mn := minimum(arr) mx := maximum(arr) - n := []float64{} //stores minmax normalization data -> put in table (?) + n := []float64{} for i := 0; i < len(arr); i++ { ni := (arr[i] - mn) / (mx - mn) n = append(n, ni) } - return n + c <- n + time.Sleep(time.Millisecond * 10) + close(c) } -func Standardise(arr []float64) []float64 { //currently return array +func Standardise(arr []float64, c chan []float64) { mean := mean(arr) x := standardDeviation(arr) n := []float64{} @@ -27,10 +30,12 @@ func Standardise(arr []float64) []float64 { //currently return array n = append(n, s) } - return n + c <- n + time.Sleep(time.Millisecond * 10) + close(c) } -func minimum(arr []float64) float64 { //return single value -> fl +func minimum(arr []float64) float64 { //return single value -> fl64 min := arr[0] for _, i := range arr { if i < min { @@ -40,14 +45,14 @@ func minimum(arr []float64) float64 { //return single value -> fl return min } -func maximum(arr []float64) float64 { //return single value -> fl - max := arr[0] +func maximum(arr []float64) float64 { //return single value -> fl64 + mmax := arr[0] for _, i := range arr { - if i > max { - max = i + if i > mmax { + mmax = i } } - return max + return mmax } func mean(arr []float64) float64 { @@ -56,7 +61,7 @@ func mean(arr []float64) float64 { t += i } - var mean float64 = t / float64((len(arr))) + var mean = t / float64((len(arr))) return mean } @@ -64,7 +69,7 @@ func mean(arr []float64) float64 { func standardDeviation(arr []float64) float64 { //works var standardDev float64 = 0 var powNums float64 = 0 - var sum float64 = float64(len(arr)) + var sum = float64(len(arr)) xm := float64(mean(arr))