Julia - what interesting things are you doing?

Same thing I do every day.

TRY AND TAKE OVER THE WORLD.

But I’m doing it in my spare time after crunching measurement data from all sorts of instruments, so it’s taking longer than I expect.

Also, making a half-hearted attempt at writing FDTD code. Making progress, but like all projects you do in your spare time, takes a while…

6 Likes

EHTC is a quite loose collaboration and people are using their tools of choice. I am currently doing some diagnostic plots of the raw data with FITSIO.jl, DimensionalData.jl and PlotlyJS.jl. All development is of course done using Pluto.jl. Some dynamic imaging experiments follow later :slight_smile:.

Just ramping up on Julia for now, but planing to use it for a CRM project.
As a side note by day I work on cyber security products and Julia would be an amazing fit for the space.
You could essentially use it for Server, Endpoint Agent, and ML models.

I’m trying a few seismology related projects

  • Optimal experimental design of mixed networks containing both distributed acoustic sensing (fiber optic cable based seismometers) and traditional point sensors
  • Level set tomography of structures in the LA basin and underneath Yellowstone using a kalman-filter based inversion scheme

My current grand goal though is to set up a framework for deep Gaussian process based regularization of geophysical inverse problems using the SPDE approach (like R-INLA) and use it to invert for fluid injection into faults by predicting the production of seismicity. That requires GPs, adjoint based derivatives of PDEs, function-space corrections for Hamiltonian Monte-Carlo… hopefully I can get 20% of my goal done before my thesis deadline!

5 Likes

Sounds super interesting! Your work is related to some stuff I have been reading recently but I haven’t had time to code it up. Would be nice if you could update us on your progress through blogs or posts here. If you want, I am also more than happy to help you review some code. I think you will need a PDE package (e.g. JuAFEM, JuliaFEM, FinEtools, Gridap, Trixi, etc), a Bayesian inference package (e.g. Turing), a GP package (e.g. Stheno) and an AD package (e.g. Zygote) to do what you want.

Edit: I know a thing or 2 about JuAFEM, Turing, Stheno and Zygote :slight_smile:

4 Likes

I’m currently working on similar problems, but trying to count all the fish in the sea using sonar and trawl catches (really). I’ve done a little hacking trying to implement the GMRF/SPDE approach in Julia, but haven’t got it working yet…I’d definitely be interested to hear updates as well.

@jbmuir I don’t know if you saw this thread, but I just managed to get a (slightly hacky) sparse Stheno GP to work inside a Turing model, which may be of use to you…if you’ve got thoughts about how this should work in a less-hacky way, there’s an open issue where it would be great to hear your input!

4 Likes

Using it to collect brewery social data from Twitter and Instagram. Then I do analysis on trends in performance.

2 Likes

What do you use to get the data from Twitter? I’m always curious to analyse the trend of the activity of the #JuliaLang hashtag

I am manually pulling using the v2 of the API. I could post code if you were interested. Reason I moved over to Julia was because they just deprecated the API I was using in python and wanted to try it in Julia

module TwitTwo

using HTTP, JSON, Base64

struct Client
    token::String
end

function jparse(resp::HTTP.Messages.Response)
    JSON.parse(String(resp.body))
end

function createClient(api::String = "Your api key",secret::String="Your api secret")
    headers = Dict()
    headers["User-Agent"] = "Rod Biren"
    headers["Authorization"] = "Basic $(base64encode("$api:$secret"))"
    headers["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8"
    headers["Content-Length"] = 29
    println(headers)
    r = HTTP.request("POST",
        "https://api.twitter.com/oauth2/token",
        headers,
        "grant_type=client_credentials",
        verbose=1,
        cookies=true
    )
    global client = Client(jparse(r)["access_token"])
end

function getUserInfo(name::String)
    headers = Dict()
    headers["User-Agent"] = "Rod Biren"
    headers["Authorization"] = "Bearer $(client.token)"
    
    r = HTTP.request("GET","https://api.twitter.com/1.1/users/show.json?screen_name=$name",headers)
    return jparse(r)
end

function getUserCount(name::String)
    user = getUserInfo(name)
    return(user["followers_count"])
end

function getTweets(name::String)
    headers = Dict()
    headers["Authorization"] = "Bearer $(client.token)"

    r = HTTP.request("GET","https://api.twitter.com/2/tweets/search/recent?query=from:$name&tweet.fields=public_metrics",headers)
    return jparse(r)
end

function getEngagement(tweets)
    engagement=0
    try
    for tweet in tweets["data"]
        engagement += tweet["public_metrics"]["reply_count"] + tweet["public_metrics"]["like_count"] + tweet["public_metrics"]["quote_count"] + tweet["public_metrics"]["retweet_count"]
    end
    catch
    end
    return engagement
end

end # module
3 Likes

Also @mohamed82008 - I’ve got some prototypes working using JuAFEM, but for my first problem I’m mainly interested in a timeseries application so just using a finite-difference stencil works well. My main bottleneck at the moment is trying to make the forward PDE solve of the diffusion problem fast enough for sampling; I had that discretised with JuAFEM & solved using method-of-lines via DifferentialEquations, but putting it onto the GPU caused some problems when I last tried it a couple of months ago.

@ElOceanografo - I did see that thread, and I am very interested with that going forward. There are heaps of problems that have nice solutions in geophysics when posed as some kind of GP regression, but weirdly the awareness of GPs is pretty low even though they originated in a quite allied field. Potentially it is due to the difficulty of scaling to big data so very cool to see a sparse model working in a fun language like Julia.

3 Likes

I use it mostly for climate processing as needed, for reanalysis data and satellite data. Right now the datasets I can process are limited because I don’t use a lot of datasets but this is likely set to change.

I also use it to process climate model output from Isca (Uni Exeter) and SAM (Stony Brook). I eventually intend to use it to analyze data from CESM and E3SM and CMIP data as well.

And also, I do Julia for all my homeworks now hehe.

2 Likes

Consider using a multigrid solver. They can take time to setup (at least the algebraic ones) but if you are going to do sampling and the discretized matrix doesn’t change, it’s worth it. There is an algebraic MG solver here https://github.com/JuliaLinearAlgebra/AlgebraicMultigrid.jl and a geometric one here https://github.com/JuliaInv/Multigrid.jl.

2 Likes

A lot of diverse :wink: interesting things and a lot of abbreviations :wink:

Some of them, like ODE, are probably known to (almost) everyone here. But those specific to physics, biology, economy etc. are not necessarily known to those outside the respective field.

1 Like

I am solving optimization models for different applications. The last publication regarding quantitative social network analysis is online here. Everything was coded in Julia including the analysis of the results. For the plots I used Julia together with PyPlot.

3 Likes

I am currently moving to Julia the software we use in our Wind Tunnel.

Paulo

4 Likes

My thought here - I always said that Julia needs a ‘killer app’, which is something that compels people to specify Julia to be installed on a system. I am wrong. Julia is being used quietly, maybe as a glue with older C/Fortran codes. But increasingly using the rich set of Julia packages.
I guess also that the ease of installing Julia in your own directory space means that you don’t have to ‘specify’ it - you just download it and get on with the job.

Please let the discussion continue - there are such interesting things here.

3 Likes

That’s the type of musical number praising something, right? Eg ODE to Joy?

4 Likes

1000 internet points to anyone who finds an ODE who’s solution is ode to joy.

3 Likes

Right now most of my Julia work has been a fishery simulator, which I’m using to test index standardization models.

@jbmuir Porting the GMRF/SPDE stuff to Julia has been something I’ve wanted for a long time; I use it for fisheries index standardization models. If I can get that and a good Laplace approximation I might be able to move some estimation models from TMB to Julia. The less C++ I have to write the better!

@ElOceanografo are you at the Alaska Center? I’m at UW (QERM, but I sit in SAFS).

3 Likes