JuliaPhysics / juliaphysics.github.io

JuliaPhysics organisation website:
https://juliaphysics.github.io/
21 stars 8 forks source link

Ecosystem overview #1

Open asinghvi17 opened 5 years ago

asinghvi17 commented 5 years ago
carstenbauer commented 5 years ago

First of all, great idea to make a website guys! Unfortunately I couldn't attend JuliaCon this year. :(

  • Short tutorial with common physics problems

I've recently created a small example: Machine Learning the Ising Transition. The Monte Carlo configurations can be downloaded here or created with this simple notebook. A Flux#zygote based version is here but is currently much slower, see this issue.

Also I took @kshyatt's Quantum Ising chain example and updated it to Julia 1.1 (and rewrote parts/sllimmed it down), see here.

We should also mention the various sparse eigenvalue solvers in the ecosystem, in particular the pure Julia implementations aside from ARPACK, since ED of sparse matrices is, of course, very common. I mention a couple in the context of free fermions here.

I feel that if we polish what is already available across many of our repos we'll have a set of great resources, which will definitely help people orientate themselves.

karajan9 commented 5 years ago

What do you think about including more general or basic tools like things for linear fitting or least squares, Monte Carlo, or even root finding, integration (pick one), interpolation...?

These are tools I need quite often (even just to make something else happen) and I think a list of those might be helpful, especially to students (who don't have a need for the advanced stuff yet) or beginners of Julia (who might not know where to find all of this/which to pick).

carstenbauer commented 5 years ago

What do you think about including more general or basic tools like things for linear fitting or least squares, Monte Carlo, or even root finding, integration (pick one), interpolation...?

Good question. My feeling is that we should start with proper physics applications first, since this is what you expect from a JuliaPhysics organization and information about basic tools can be found elsewhere already. Providing an overview of more specialized physics organizations through small examples could be our unique sellingpoint.

By the way, the Monte Carlo package you linked (MonteCarloMeasurements.jl) isn't really a Monte Carlo package for simulating physical systems but rather similar to Measurements.jl in that it lets you propagate uncertainties. I created MonteCarlo.jl at some point for lattice physics Monte Carlo. However, to be honest, I'm not so sure anymore whether such a package makes that much sense, since physicists tend to implement their own Monte Carlo codes anyways and small helper packages would presumably much more useful. That's why I'm currently not devoting any time on it, but it's out there and should be functional.

Note that there is also the lightweight package BinningAnalysis.jl which provides a couple of tools for estimating the standard errors of Monte Carlo observables (logarithmic binning, jackknife, etc.).

karajan9 commented 5 years ago

Good question. My feeling is that we should start with proper physics applications first, since this is what you expect from a JuliaPhysics organization and information about basic tools can be found elsewhere already.

Sure. I think there is also some benefit to include that information with the rest listed above ("if you are here already, let me give you the full package"), and it doesn't have to be as prominent. It shouldn't really hurt to include that somewhere?

I guess my argument is mostly for newer users. When I started out with Julia, these were the things I needed first, and right now there are (for example, and if I counted correctly) 4 interpolation and integration packages each and it can be hard to tell which is the right one for you. But maybe the situation has gotten better with the knew ways to search for packages, it's hard for me to tell since by now I know where to get what I need.

By the way, the Monte Carlo package you linked (MonteCarloMeasurements.jl) isn't really a Monte Carlo package for simulating physical systems but rather similar to Measurements.jl in that it lets you propagate uncertainties.

Yes, I'm aware, I should have clarified. I happen to do "that kind" of Monte Carlo more often and I thought it would fit with the Measurements package mentioned before.

carstenbauer commented 5 years ago

Note that I created JuliaPhysics/PhysicsTutorials to collect physics related tutorials/instructive showcases.

asinghvi17 commented 5 years ago

Would it make sense to store those as Literate/Weave notebooks instead, so that they can be included in this website?

carstenbauer commented 5 years ago

That sounds like a good idea.

giordano commented 5 years ago

Would it make sense to store those as Literate/Weave notebooks instead, so that they can be included in this website?

I think the tutorials in https://github.com/JuliaDiffEq/DiffEqTutorials.jl are done with Weave.jl, right? I really like how they're rendered now.

carstenbauer commented 5 years ago

Reading over the current ecosystem overview I realized that we absolutely have to elaborate a couple of general principles according to which we add and categorize packages on the ecosystem page.

First, I think we need to define a notion of "minimal maturity" and "minimal relevance" for packages to be on the list. In particular, the "Solid State" section around JuliaAtom is, in my opinion, too fine grained for an overview page. There are packages like CoulombIntegrals.jl which has failing tests, no stars, a single contributor, and no documentation.

A somewhat orthogonal issue is where we want to draw the line between relevant for physics or not. For example, currently we also list plotting packages.

If the latter it feels like we should include HDF5.jl and things like that as well.

I'm curious to hear your thoughts on this guys.

carstenbauer commented 5 years ago

Answering my own questions I'd currently lean towards the following answers:

Yes, Yes, Yes, Separate section for workflow like packages.

giordano commented 5 years ago

There are packages like CoulombIntegrals.jl which has failing tests, no stars, a single contributor, and no documentation.

Yes, I agree that a certain quality control would be valuable. For this case in particular, I shamelessly took all packages listed in JuliaAtom website, if I remember correctly.

karajan9 commented 5 years ago

Yes, Yes, Yes, Separate section for workflow like packages.

I'd answer the same and I guess something like that workflow/tools list is what I had in mind.

jagot commented 5 years ago

To be fair, I only mentioned in the Slack physics channel that I was working on a suite for Hartree–Fock calculations for atoms. Although the HF calculations do work, the usability is somewhat limited at the moment and nothing can really be released yet, since I am depending on ContinuumArrays.jl which is very much in flux still.

Furthermore, JuliaAtoms is not really solid state physics, right now, it's only atomic physics :)

EDIT: Actually, I think I preferred it as it was before (i.e. a few days ago), where it only listed the JuliaAtoms organization page, not the individual packages.

carstenbauer commented 5 years ago

Inspired by DiffEqTutorials.jl, PhysicsTutorials.jl now holds all tutorials (currently only a single basic one) in PDF, HTML, Markdown, and Jupyter notebook format.

@giordano , to have the HTML versions rendered nicely as webpages, I believe they must be placed on a webserver (someone correct me if I'm wrong). GitHub doesn't render them, see https://github.com/JuliaPhysics/PhysicsTutorials.jl/blob/master/tutorials/general/matrix_types.html.

UPDATE: Rendered version can be found here: https://juliaphysics.github.io/PhysicsTutorials.jl/tutorials/general/matrix_types.html