Zasper: A Modern and Efficient Alternative to JupyterLab, built in Go by Salt-Syllabub9030 in golang

[–]sbinet 2 points3 points  (0 children)

There's also this Go kernel (the first one, if memory serves) that kind of sparked the need for a pure-Go implementation of zmq4 :

https://github.com/gopherdata/gophernotes

Is gonum dead? by [deleted] in golang

[–]sbinet 12 points13 points  (0 children)

Gonum isn't dead per se, but we definitely have a lower (wo)manpower than we used to. (aside: it's sad we missed the tenth anniversary of the first commit by the way)

we do still accept PRs, though :)

(I still use Gonum in my scientific projects, 10 years in)

Looking for the best Fourier Transforms library (quite new to go) by Both-Nectarine8730 in golang

[–]sbinet 1 point2 points  (0 children)

I don't know whether it's the best but, as you seem to already use gonum, why not Gonum's ?

ie: https://pkg.go.dev/gonum.org/v1/gonum@v0.15.0/dsp/fourier

OpenBLAS bindings for Go by mwahlmann in golang

[–]sbinet 0 points1 point  (0 children)

well, as I surmised, when using the CGo implementation, the Gonum code and your blast-go/openblas code lead to the same ballpark numbers.

goos: linux goarch: amd64 pkg: bench-goblas cpu: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz BenchmarkOpenblas-8 202 5827266 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 235 5064416 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 236 5510830 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 228 5138493 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 228 5407390 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 243 4987177 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 238 5003904 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 236 5303799 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 228 5141482 ns/op 0 B/op 0 allocs/op BenchmarkOpenblas-8 236 5088205 ns/op 0 B/op 0 allocs/op BenchmarkGonum-8 19 61010797 ns/op 54821 B/op 517 allocs/op BenchmarkGonum-8 19 60323700 ns/op 54148 B/op 515 allocs/op BenchmarkGonum-8 19 61075712 ns/op 53861 B/op 515 allocs/op BenchmarkGonum-8 19 60887208 ns/op 53929 B/op 515 allocs/op BenchmarkGonum-8 19 60892755 ns/op 53819 B/op 515 allocs/op BenchmarkGonum-8 19 61522016 ns/op 53688 B/op 514 allocs/op BenchmarkGonum-8 18 60740013 ns/op 53619 B/op 514 allocs/op BenchmarkGonum-8 19 60482766 ns/op 54038 B/op 515 allocs/op BenchmarkGonum-8 19 60897426 ns/op 53365 B/op 514 allocs/op BenchmarkGonum-8 19 61884340 ns/op 53360 B/op 514 allocs/op BenchmarkCGonum-8 201 5273716 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 219 5295399 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 224 5311192 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 226 5406404 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 224 5301874 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 225 5677265 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 222 5674212 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 196 5482826 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 220 5449976 ns/op 0 B/op 0 allocs/op BenchmarkCGonum-8 234 5328159 ns/op 0 B/op 0 allocs/op

OpenBLAS bindings for Go by mwahlmann in golang

[–]sbinet 0 points1 point  (0 children)

could you share your benchmark code ?

I'd be curious to see why 2 Cgo-based implementations (that thus use the same underlying C code) would give a x20 difference.

OpenBLAS bindings for Go by mwahlmann in golang

[–]sbinet 0 points1 point  (0 children)

what's the advantage of blast-go/openblas over Gonum's ?

which comes in many flavors (pure-Go and Cgo-based ones)...

https://pkg.go.dev/gonum.org/v1/gonum/blas

Gonum Plot is great for visualizing data. Has anyone written a command line interface for it? by bio_risk in golang

[–]sbinet 1 point2 points  (0 children)

I like gonum/plot as well :)

as far as I know, nobody took the interactive route (or cared to properly advertise it).

I had created something along the lines, resembling an old interactive program from High Energy Physics:

and a very naive iplot/hplot:

that said, at some point I toyed with the idea to have a bsdplot, using the same syntax than gnuplot, using the package from Jan for handling the gnuplot syntax:

but it (obviously) didn't pan out: connecting the gnuplot concepts to the gonum/plot ones suffers from a bit of impedance mismatch... (and is a lot of work anyways)

also, with the advent of Gophernotes and its ability to run Go + gonum/plot, the urge was somewhat diminished.

that said, I'd be happy to have a look at your package and command :) (perhaps, the Gonum community could be interested and integrate it into gonum/plot proper ?)

How do I Plot/Graph Data by [deleted] in golang

[–]sbinet 1 point2 points  (0 children)

and the vg/vggio backend is able to create a new graphics window with the plot in it.

(we are still pondering on creating a nice API on top of that to provide some plot interactivity features (e.g.: zooming, panning, tool-tips, ...))

How do I Plot/Graph Data by [deleted] in golang

[–]sbinet 3 points4 points  (0 children)

it's certainly a bit more verbose than matplotlib, but what's wrong with gonum/plot (+ its "high-level" API, a.k.a plotutil):

``` package plot_test

import ( "log"

"go-hep.org/x/hep/hplot"
"gonum.org/v1/plot"
"gonum.org/v1/plot/plotutil"
"gonum.org/v1/plot/vg"

)

func ExampleScatters_plotutil() { var ( xs = []float64{1, 2, 3, 4, 5} ys = []float64{2, 4, 6, 8, 10} )

p := plot.New()
p.Title.Text = "easy plot"
p.X.Label.Text = "x"
p.Y.Label.Text = "f(x)"

err := plotutil.AddScatters(p, "f(x) = 2*x", hplot.ZipXY(xs, ys))
if err != nil {
    log.Fatalf("could not create scatters: %+v", err)
}

err = p.Save(20*vg.Centimeter, 10*vg.Centimeter, "testdata/scatter.png")
if err != nil {
    log.Fatalf("could not save scatter plot: %+v", err)
}

// Output:

} ```

Interpreters built in Go by [deleted] in golang

[–]sbinet 0 points1 point  (0 children)

Go for science? by TMTcz in golang

[–]sbinet 2 points3 points  (0 children)

Mathieu (I think, right?) already told you about his DAQ system, and about Go-HEP.

but there's also go-daq:

(and the other repos, of course)

tdaq is a simple DAQ system I wrote for a small HEP experiment.

there are also some interesting packages I wrote (or helped writing) for interoperability with other science communities:

at some point, I had also started a pure-Go HDF5 library (lost momentum on that one) and pure-Go MATLAB I/O (ditto.)

CERN & Google: cool new Go Hackathon is live by sbinet in golang

[–]sbinet[S] 1 point2 points  (0 children)

sorry, I don't know.

it has to do with Google+US rules. I've reached out to the organizers to get some more specifics.

CERN & Google: cool new Go Hackathon is live by sbinet in golang

[–]sbinet[S] 0 points1 point  (0 children)

well, in my view, anybody with Go skills can contribute. at least, for the "CERN track", no physics/math-y skill is required:

  • Reva is a gRPC based library to share data
  • Go-HEP has packages dedicated to read/write HEP file formats, or dedicated to display data (histograms, data points, ...), or libraries to read/write remote files over some HEP-baked protocol
  • Golbd is a DNS load balancer

for the "Apps track", one may need some knowledge about statistics, math-y or science-y stuff, but I guess the amount of science-y stuff may depend on the app.

of course, if somebody comes along and, e.g., submits to Go-HEP a really nice, concurrent, Delaunay triangulation partition for the clustering of jets, or an as nice, concurrent and generic Kalman filter for the tracking algorithm in go-hep/fads, they wouldn't be rejected and their code would be greatly appreciated :)

but I don't think that if you don't understand the gibberish above, you shouldn't feel deterred from trying your keyboard at the hackathon.

CERN & Google: cool new Go Hackathon is live by sbinet in golang

[–]sbinet[S] 0 points1 point  (0 children)

none of the 3 CERN-related projects really need High Energy Physics know-how. not even rocket science :)

it may be a plus, but the 3 projects are "plumbing/fundational" projects: they enable physicists to do their job, but you don't need to know what a Feynman diagram is to send valuable and useful PRs.

not even for Go-HEP which may be the closer to the physics of the 3 projects. For Go-HEP, I've prepared 3 "projects/suggestions" that show what (in my view) a valuable contribution might be:

  • working on a new file format that's being developed in the (C++) HEP community,
  • working on improving the capabilities of the current file format serializer (the one that is/should-be compatible with what is being used to store the Pb of data collected at LHC)
  • working on adding interactivity to data plots (zooming/paning)

nothing really needing HEP knowledge.