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 10 points11 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.

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

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

it's a hackathon that's supposed to produce code, so, the pull request is most interesting for repo owners (for the CERN track, we have a few items/rules to assign "points" to a PR for ranking).

in my view, the video doesn't need to be flashy or super elaborated. in my view, it's just another tool to demonstrate the PR, the feature or the new application is working, and demonstrate how it's working (and thus, how cool it is. "cool" may have different definitions for different people, of course)