Show newer

Long post ahead 

@daeyoung @andrew My first programming language was java...I have a special hatred in my heart for OOP, and I'm glad things like scala/clojure etc. exist on the JVM to make it actually useful 😂

My number one recommendation before diving in is installing [DrWatson](juliadynamics.github.io/DrWats) to make package management easier and to prevent dependencies from clogging up your main environment, but reach out if you'd like more! I'm always happy to make conver- I mean, umm...show people alternatives...MUHAHAHAHAHAHA 😂

@leahdriel
> Sleep? I don't know the meaning of the word.

I'm beginning to think that working with a fellow night owl will be a bad influence and only worsen my fraying routine....but there's only one way to find out! I'll be there, just link me whenever 😄

@leahdriel Looks like we're on the same time zone, so just let me know when you're thinking to start it and what zoom link to use! I'm available after 4PM/1600; I'll be there, depending on how nocturnal you are 😂

I am currently finalizing a 50 page manuscript (90 with supplemental info...) for submission, and have been tasked with reducing it by around 20 pages so I can fit my experiments in...so I should have at least a few hours to work tomorrow 💀

@leahdriel Preach! 🙌

I much prefer collaborative spaces, and nearly all my research projects and my startup have been mainly on me. It's much nicer being able to take breaks to chat or bounce ideas off people (assuming they're in the mood for it, lol).

Keep me posted if you don't mind, assuming schedules work out, you'll have at least one regular attendee here unless the wheels fall off my proverbial cart 😄

Long post ahead 

@daeyoung @andrew I'm glad you liked it! I had it pegged at 35% of people liking it and 65% of it being ignored 😂

Personally I find C++ really really gross; hence my desire to use something that can provide near equivalent performance in certain contexts, but without the icky syntax, header files, and focus on OOP (which I try to avoid due to the issues with finding state-induced, silent, runtime bugs).

One minor point I will add: RCall and Pycall are very mature, so if you want the best of both/all worlds, you can use Julia, or R, for the bulk of the code and integrate R into Julia for ease of use and more familiar libraries or performant Julia into R so you can start bypassing the horrors of C++ 😱

@leahdriel I could totally use something like this since I'm insanely overloaded and peer pressure legitimately seems like a great way to get through it (that may have sounded snarky, but I'm 100% serious).

Long post ahead 

@daeyoung @andrew "Right" in terms of interacting with both computers and data, (and package management) it beats R and python IMO.

TL;DR up front: I've found I can accomplish much more with much less, and in a much less convoluted way with julia, and I've used R for 8 years, and julia for 3-4, and python intermittently in that time as well. Read on for why I like it.

Some simple syntax examples:

No tabs/spaces issues like python, every block starts with a signifier like function, if, else, etc. and ends with "end". This makes it very easy to track "delimiter" position and catch unclosed forms.

**Broadcasting functions** (write a function to operate on a scalar, then apply the following)
f(x)=2x
f(2)->4
f(1:2)-> Error, doesn't accept vectors
f.(1:2)->[2,4]

**Broadcasting the broadcast:** if you want to apply other broadcast operators with more complex functions, there's a macro for it:

y=[1,2]
(f(y)+12/)37 -> fails
(f.(y).+12)./37-> works
@.((f(y)+12)/37)-> works

So you can write expressions to operate on single values, test them accordingly, and have guarantees they'll apply correctly in an n-tensor context.

Oh, and speaking of n-tensor, you can easily replicate the outer product function in R with broadcasting, and you can still use any binary function as you can in R:

julia:
x=[1,2,3,4]
x.*x' returns a product matrix
vcat.(x,x') returns a matrix of paired x values.

R:
x=c(1,2,3,4)
outer(x,x)
the second example doesn't work in R with outer(x,x,c), and that data structure seems to need manual creation with the matrix function (and it behaves weird anyway).

**Mixed iterator loops:**
Instead of:

for i in 1:10
j in i+1:11
do something on i and j
end
end

We do:
for i in 1:10, j in i+1:11
do something on i and j
end

And you can add arbitrary amounts of iterators into the flattened statement to make it clear where the logic is happening, and which iterators belong where in nested loops.

**First class functions:** ease of closure construction, and lambdas are cleaner:

just lambdas:
R: {function(x){return x^2}}
python: (lambda x: x + 2)
julia: (x->x+2)

And lambdas can be nested for nested higher order functions. Like so:

map(x->filter(y->y[,1]!=2,x),data_frame_list) (or something like this)

**Making code parallelized** is trivial in most cases. Write a function, wrap it with the @everywhere macro and put it in pmap. The same function can be effortlessly compiled to cuda with the @CUDA macro, since almost all of julia and its packages is written in pure julia. (Side effect: no need to be a C++ expert for performance, and modifying dependencies for your work is easy.)

**Bonuses:**

Package management, creation, and code-sharing between machines is trivial with helpers like DrWatson, which is excellent for academic users, and per-package manifests. (And no pip/conda nightmares)

Dataframe support is excellent, and has similar functions to melt/cast built in. Adding to this, indexing rules make sense as compared to R's [[]], [], and the differences between $name and [,col] when working with tibbles.

Gadfly more or less == ggplot2 but with more features, and different back-ends like plotly are also available for plots.

Finally, multiple dispatch is pretty dang neat, and the type system doesn't "try to help" like it does in R which leads to all sorts of wacky bugs that are difficult to locate (like when R tries to help with lists/vecs/matrices,etc).

e.g.
function(x)=x^2 gets compiled to
function(x::Int)
function(x::Float)
function(x::Real)
etc.

But you can specify you only want one and you'll only get that one, and it also speeds up compilation to a degree.

If you decide you want all of them, the appropriate one is dispatched when required, and this doesn't have the same limitations of traditional overloading. As explained better [here](discourse.julialang.org/t/is-m).

**End**

I hope that helps explain my position, but much of this may just be preferences on my end in terms of how I think about solving problems, and how well this language comports with that. I do suggest giving it a try though, you may like what you find after getting over the initial friction of switching languages. 😄

@andrew My wife uses it to write her novels and store research regarding them, but I have to hard plug org-roam+org-roam-ui in emacs, especially if you're a researcher!

I can send you details if you're interested, but after switching to emacs (along with zotero) I've been so much more productive in ingesting research papers into my notes database, referencing and cross-linking my notes, coming up with new ideas, and just writing papers in general.

Obsidian gets some of that functionality, but it's not as well integrated with other services as emacs packages can be, IMO, and I don't think it's FLOSS, if that matters to you.

@andrew
I noticed you're a fan of R, and I have to ask if you've played with Julia at all (the programming language, not some person 😂).

I teach a course that's mostly on R and wrote my first thesis in it+RMarkdown. Frankly, I have to say of the big data science/stats languages (python, R, julia) that julia really gets it the "most right" in most cases, though R is a decent alternative in certain cases.

The syntactic sugar and macros alone make julia super nice, and there are so many other handy tools, packages, and integrations (including with R and Python!) that I plug it to anyone else in the stats/etc space. If you want any more details, just let me know!

John BS boosted

@jverhell @janhjensen This is quite interesting! I have a few questions if you don't mind (and please pardon the American spelling conventions lol):

1. How did you deal with the possibility of the graph-isomorphism problem appearing during your memoization step? i.e. it seems that you're storing the result of the objective function(s) on a specific molecular graph, but is it possible for your genetic algorithm to accidentally generate a graph isomorphic but not identical to a previous input, and if so, is there a handy way to detect that with this graph based data format?

2. In your algorithm efficiency comparison, is the GB-GA algorithm also parallelized like your GB-EPI? Of course, I can see the number of evaluations and success ratio is still better than the alternative, but since you listed it as a metric, I would like to know it's an apples to apples comparison. The reference you cited (50) didn't seem to mention parallelization in the article.

3. I liked your conclusion section a lot, particularly the nod to active learning endeavors. Personally, I suspect much of small-molecule drug research is limited by non-native protein conformation data collected from crystallography data (in conjunction with the limitations of current solvent force-fields), rather than native conformations apparent in CryoEM data. Do you think such an active learning approach could help remediate this issue (if it is, in fact, an issue)?

My hunch for 3 is that it could help, but may not generalize across different classes of target proteins, but it's been years since I've looked at this, so who knows.

@andrew

THAT. IS. GORGEOUS!

I bought a green leather bound, illustrated edition of "The Hobbit" for my wife as a Christmas gift (we're both huge Tolkien fans) and I absolutely love the Silmarillion, but I didn't know an edition like this existed! You may have inspired a great gift idea for this year 😉

Related aside: I had a student 2 semesters ago question if I was a "true fan"...let's just say after quoting passages from the darkening of valinor, (and the fact that I named two of my tarantulas - one gold, one silver - after the two trees), she realized I wasn't messing around 😂

@freemo I have no idea what this is, but I have to plug framework. Linux works great (barring very minor and easily fixable hardware accel issues).

They're repairable, thunderbolt 4 capable (works great with the Caldigit TS4 dock), and they're planning on working with coreboot and fully open-sourcing their schematics (for component level repair) soon! I love mine, and I just migrated from a thinkpad, but of course, YMMV.

@ljw Thank you for sharing! I always appreciate having extra info on these sorts of things 😊

John BS boosted

@kristinmbranson @luke_phys

Same here! In fact, when I start tackling a new problem, I always start by building up my intuition of the problem space first, before diving into the literature to fill in the gaps. I find it helps me make progress and iterate much faster by reasoning from first principles where possible. (Though, I do a primary check first to make sure I'm not working on a solved problem 😂)

However, teaching students how to start doing sanity checks is...quite difficult, IMO. The one student I was able to get through to showed a huge performance boost in her exam scores and speed, but n=1 "studies" aren't worth much, lol.

@trinsec If I can't find a NL/Switzerland based job when I finish my degree, can you help me find someone who will adopt me, my wife and my dog? 😂 I'm so jealous of your public infrastructure, and I wish I could walk/bike places without as much risk of getting pancaked by a car.

Alternatively, I think I still have a standing offer as @freemo 's medieval inspired interior decorator and/or janitor, so long as that position isn't filled before I'm officially Dr. BS, I should at least have a backup plan...though I'd prefer to use my degree if possible 😂

@jmw150 You say that, but all of them are IE related, because IE is a super broad field with multiple large sub-disciplines. It makes things more fun, but also more stressful when other people don't pull their weight 😂....😭

I'm almost done with my cryptocurrency research paper!!! I think it'll be submitted for review by the end of this semester, possibly along with one on hospital scheduling, and graph analysis, and I should be hearing back from my neuroergonomics literature review paper either this semester or early spring!

I'm so tired 😩, but it's finally all coming together, I think 😄

@barefootstache Ah, if you prefer bitter teas then Darjeeling and Oolong are probably not for you. I for one, listen to evolution screaming at me that "bitter->poison", so I tend to avoid those types of beverages 😂 My wife on the other hand will chew dark roasted coffee beans just for the bitterness, which I cannot comprehend.

Back on topic, IMO oolong and darjeeling are both excellent teas to drink unadulterated, particularly if you long steep them. However, if you enjoy teas with strong (but less bitter/astringent) flavor, Iron Goddess of Mercy oolong tea is very punchy, and so strong that I can't drink too much at a time. However, it is a top-shelf item with a similarly top-shelf price, unfortunately, so I don't get to drink it as often as I would like.

Show older
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.