Ask HN: What can I do to accelerate scientific research?
I love science & tech and how these improve lives. As a software engineer/entrepreneur, in the last years I thought of starting/contributing to some projects which scientists would find useful. Now I'm ready to work full time on this.
Ideas revolve around
* indexing all open research with free unlimited access, similar to arxiv-sanity.com but better; Other projects exist though: Google Scholar; semanticscholar.org, academic.microsoft.com, https://www.chanzuckerberg.com/science/projects-meta
* generative design
* bioengineering (not sure exactly what, eg microbiota simulator)
* materials simulator (eg how can we get a material having a given set of properties)
I don't need immediate financial returns, but I do need the work to be used & have an impact in real life projects.
What ideas do you have on how one can accelerate scientific research?
177 comments
[ 2.2 ms ] story [ 268 ms ] thread[1] https://github.com/QEF/q-e
[2] https://github.com/cp2k/cp2k
But instead I would recommend he start from something like the NOMAD database, where the calculations have already been run by more knowledgeable people. Then he can focus on the analysis side.
No immediate financial return? I hope you can accept no financial return, period. In general the easiest way for an individual to accelerate general research is through generous funding. But even then it’s not like a slider in a game where you provide more funding and things get done faster. There’s diminishing returns after a point. Not that I’m trying to discourage you, but I hope you’re thinking about it the right way before you waste a lot of time and money.
I suggest talking to actual researchers and asking them what they really need, and give them that. Basically the same as a startup going out and talking to customers. The only research probably being done around here is largely software related, and probably not changing the world much in ways that actually matter.
Will start to do that, thanks!
> No immediate financial return? I hope you can accept no financial return, period.
That would be ok for the next 3 years.
No, I don’t mean no returns for three years, I mean no returns ever. You must go into this with both eyes open, don’t find yourself crippled later because you gave all your time and money away and have nothing to show for it.
This space is pretty crowded, in my opinion.
I don’t know much about biology, but I can tell you that in materials, it’s all about data. The materials design problem and predicting new materials comes down to knowing properties of other materials. A lot of progress has been made by using datasets generated by quantum mechanical calculations by the Materials Project, OQMD, AFLOW and NOMAD, but materials design is tricky because what we want to predict are the outliers that we haven’t seen yet: materials with the highest strength, etc..
There’s value to be created for materials researchers by curating experimental data in a digital, usable form, since so much is locked up in papers, but you really need domain expertise for this and there’s another problem that the experiments are so sparse and have so many features (chemistry, microstructure, thermal history, etc) that people have really only been successful when focusing on particular classes of materials.
You might find this company interesting.
Scientists code better then you do science.
This is simply a consequence Of a weeding out mechanism for those that have no coding skills. The only ppl who get away with no coding skills are important professor with grad students to do the coding.
This isn’t to say that our skills are great, but a generic programmers (I.e. CS majors) science abilities are approximately zero (common, no thermo in an “eng” undergrad???)
So what can you do?
Since you mentioned science and not engineering, I’d ignore the AI advice. Science needs models based on mechanistic understanding of the underlying phenomena. A model that merely predicts is useful for engineers, not scientists.
“materials simulator (eg how can we get a material having a given set of properties)“
This is already done, but of limited usefulness. First the Mtls simulators are far from perfect. Then there is the problem of actually synthesizing the mtls. These simulations are more typically done to weed out bad candidates.
“No immediate financial return”
Wrong attitude. Only an attitude of “no financial return” helps science. That’s not to say you won’t make money off of it, but that can never be a goal since (true) science advances freely (again see the Gaussian jerk vs. Einstein or Landau - who contr. more?)
Instead, focus on making the programming tools scientists use better, easier to use and GPL. GPL is important because an MIT license by itself allows a scientist to use others work while blocking others (see Gaussian).
For example, making python (or Julia?) better would be one of the most important contributions you could make. The matplotlib guy was deeply mourned in science.
The two cents of a physical sciences researcher who once flirted with the Valley.
> focus on making the programming tools scientists use better, easier to use and GPL
That sounds the most natural path to take going forward. Besides looking at existing GPL software and how that can be improved, would you have a recommendation on where to find scientists/researchers open to discussing their needs that could be solved by software? I'll release the software under GPL, but need to know I'm building something useful.
Other scientists, depending on their interests, will readily give you similar examples of obvious general purpose libraries that are lacking or non-existent, but there's a simple reason for this - it's hard, unrewarding work that's very hard to commercialize. Most of the large scale projects that exist have grown out of academic grants and often struggle for funding or are abandoned entirely. If you are really considering this as a career move that's eventually supposed to put food on the table, you need to have a pretty good idea of how your project is realistically going to earn money, because the correlation between funding and general usefulness is very weak in this space. Since academic funding isn't on the table for you, the common alternative involves things like biotech startups and venture capital.
I'd love to hear some of these, if folks on the thread can share more. Added 3d visualization to my list...
In the end, I used a hacky Mathematica script which converts a resulting Mathematica formula into a Python code (which I then pasted into my program). But, if SymPy was better, I could do all this in just Python.
BTW, according to Wikipedia, SageMath is just using SymPy for calculus.
I’d say it really depends on your program and what you mean by science. I minored in BioEngineering, I also double majored in math. At least one of my CS final projects has a citation (which I recently discovered after looking at Google scholar).
My point is, what makes “science” skills may not match your expectations, but I’d argue many people have said skill set.
> Only an attitude of “no financial return” helps science.
I also take issue with this. Arguably all financial investments are a way of directing research. All research needs funds. How do we get most of the drugs we have today? It’s typical some research is done publicly, but the last “mile” so to speak, is done by private companies.
I would argue that most would agree that a "generic programmer" does not have a degree in math or a minor in bioengineering. There are a lot of programmers who never studied any STEM outside of a CS curriculum, which usually has ~no science and rarely requires advanced math (i.e. requires only linear algebra).
I would say a cheap win for a coder would be to attack some domain where only rough research code exists and make it more reliable, scalable, better documented, interoperable, etc. a complete rewrite is probably required in many cases, but you have the working old version to compare against.
Perhaps, but doing all those things would get them fired from the job they are currently in.
I'm not sure I agree. I'm aware of quite a bit of supercomputing time that is spent doing lattice QCD calculations (which apparently some scientists find useful), and though I'm no quantum physicist I'm pretty sure there is not much of a "mechanistic understanding" in QCD. I think your claim also doesn't apply to a lot of social science - psychology has a lot of functional models, but I don't think there are many mechanisms described.
I'll also state that modern science that doesn't require any engineering is pretty rare nowadays, so if a predictive model helps engineers that can then help scientists, the model has been helpful to scientists.
Ohm's law existed long before there was a mechanistic description behind it, and though it is mostly used for "engineering," I feel confident that a lot of scientists in the 19th century found it useful.
From https://www.olcf.ornl.gov/leadership-science/physics/:
"New Frontiers for Material Modeling via Machine Learning Techniques" - 40,000 hours allocated on Summit
"Large scale deep neural network optimization for neutrino physics" - 58,000,000 hours allocated on Summit.
Supercomputers typically do not allocate 58 million hours to things which are not useful.
And now a problem that would be great to solve is having vectored images and being able to change my fonts on size, lines are too small, I changed the paper format, whatever. I can't express how often I've had to redo plots simply because they don't look right in a paper.
I also cannot express the beauty of LaTeX but the absolute horror it is to create Tikz images. They are beautiful but it is definitely an art that one can never master. I want to do it with code, I don't want dumb gui interfaces that only work on certain machines and never work as expected.
If a nicer version of Tikz could be made that had a lot of power under the hood was created, this would help a lot of people. That's why matplotlib is so great. To do basic things is extremely straightforward. But if you want to do extremely complex things you also have that power. (Even something as simple as matplotlib for LaTeX - which results in vectored images - would be incredibly helpful)
But I do want something a little more native to latex. The major issue is that sometimes font sizes, axes, titles, even plot thickness doesn't look right in a paper. The issue is when you have a large plot and have to replot to fix these things. But vectored images will help.
I think having a built-in web server via a visualization library that shows the graphs etc in a browser is 'optimal' -- because then, the whole crap of e.g. dealing with Tkinter to make your windows goes away. You achieve OS independence, and could even use lynx for text-only.
The Python visualization space is vast. I believe 'something better' will shake out in the next few years.
I'd only touch Rust (or C/C++) when I need to implement some fast numerical computation that does not already exist in Numpy or Tensorflow, but still call it from Python.
If the thing could have been written in rust in the first place, tons of time would have been saved on trying to optimize python, waiting for simulations to complete before (and to a lesser extent after) I ported a portion of it to rust. Dealing with language interop and build systems.
The main reason I can't suggest that for future similar problems to the person who I did this for is because of the lack of libraries like plotting (plotting is by far the most important one, numpy is second but rust comes a lot closer in that regard).
It would help to pair up with practicing scientists and explore what parts of their workflow can be improved
https://news.ycombinator.com/item?id=20190468
The fact that science became complicated is a sign of thought stagnation, not a sign of progress.
To be clear, I can understand that a PhD candidacy justifies a temporary contract and I'm not even asking for a permanent position directly after a PhD (as would be standard in industry), I'm only asking for a reasonably safe perspective towards a permanent position reasonably soon after graduating. Can't exactly start a family if you don't have any kind of job security beyond the next couple months.
> the software I wrote has enabled quite a few projects which otherwise would have not been possible or taken much longer
What's the common practice with such software? Is that published somewhere, open sourced? Or kept private in hopes of being monetized, with IP owned by the author/university?
My toolkit is maybe a bit non-standard in that it has attracted a few external collaborators using it as well and I like to think I have taken better care of upholding coding standards, documentation etc.
Normally software in my field is kept within a group and dies after one or two PhD students have left.
https://publiccode.eu
I'd recommend starting reading about Google's AlphaFold, since this is currently considered state of the art in the field: https://deepmind.com/blog/alphafold/
Inside the company you can also push them to try and open source the tools. Unlikely that’ll work if they don’t do it already, however this skill set will eventually let you contribute more in the future. After some time on the job, start a personal open source project or start a company directed at some of the issues you saw.
It’s general advice and it’s the long game, but will likely help you have more impact.
The advice above may be more useful for engineers earlier in their career, but you can accomplish that in a handful of years.
OP does indeed sound like the discipline they're looking for is Research Software Engineering.
Some reading: https://en.wikipedia.org/wiki/Research_software_engineering "Research software engineering is the use of software engineering practices in research applications. The term started to be used in United Kingdom in 2012, when it was needed to define the type of software development needed in research. This focuses on reproducibility, reusability, and accuracy of data analysis and applications created for research."
https://software.ac.uk/
https://rse.ac.uk/
There may be the next Zuckerberg hiding in you. Imagine what would be possible if you could reach that level of wealth and use all that money to propel science forward. I’m not talking about some chickenshit foundation; real impact is made by committing all of your financial means to helping science. That’s how a real difference is made.
- Prior to roughly WWII, it was mostly individuals, and so we named things after them (Kelvin, Doppler, Joule, Ohm, etc).
- From WWII until the late 20th century, it was a lot of small teams (transistor, 3; DNA, 4; pulsars, 2; etc).
- Since then, team sizes have grown so that individuals aren't even named (cloning, an Institute; Top Quark, a Lab; Tau neutrino, a Collaboration; etc).
In fact, in the past 35 years, the only individually named contributors on that list were mathematicians who constructed proofs of long-standing unsolved problems in mathematics.
[1] https://en.wikipedia.org/wiki/Timeline_of_scientific_discove...
There’s lot of questions. How to organize it? How to encourage participation? How to maximize usefulness while at the same time minimizing volunteer effort? How to encourage discussion (suggesting changes for a better exp design) rather than manipulation (stealing the seed of a bad experiment to publish at your better funded lab)?
I don’t know how to do it, but I think if done right people would really like it.
I guess secrecy would actually win though, and nobody would use this?
https://elifesciences.org/about/peer-review
It’s pretty interesting
As for the fairness issue, my first thought is to have it moderated by scientists but from different fields. It's like we do in other areas, like law. You need an expert on the general process, but if they have any personal connection to the topic at hand, they must recuse themselves.
In a sense, it's just a specific type of scientific journal, right? An online journal of only null results.
Related, there were journals like this at some point, e.g. International Journal of Negative & Null Results, or ournal of Articles in Support of the Null Hypothesis, and I think at least one more. Not sure how they fare, though.
But I think this kind of thing would be INSANELY useful. Especially if data was attached. (This could possibly help with the above problem because reputations develop).
Vox recently ran a good profile on them and the importance of null results in general: https://www.vox.com/future-perfect/2019/5/17/18624812/public...
[0] https://www.nature.com/articles/d41586-018-07118-1 via https://news.ycombinator.com/item?id=18297724
In my ideal world, a scientific result would not be taken as meaningful until it's been replicated at least once.
One related thing I found from there was a list of projects for magnetic resonance imaging specifically: https://ismrm.github.io/mrhub/
I'd assume trying to contribute to those projects would hopefully give greater ROI than building a new thing (without a very specific idea of what to build and the market for it)?
[1] https://materialsproject.org/about
I work in genetics (as a software engineer).
If there was a major flaw in current scientific research (that involves software), it's that most labs care more about getting published than they do about the reproduce-ability and validation of their work. This means most of the software written in research is ad-hoc, write once, and often never looked at again. It was put together for the sole-purpose of producing some output that could be put in a paper and then lost to time.
A current "holy grail" of software in research would be to fix that: empower other labs to validate and reuse the software written and reproduce the work of other labs with different data sets. And it is actively being worked on in a couple places (that I know of, perhaps more):
* https://genepattern-notebook.org/
* https://app.terra.bio/
* https://software.broadinstitute.org/wdl/
Some of these are just about giving the community a common framework to use for their software (CWL, WDL, Jupyter), others are about data storage and making it easily accessible for others to use in the cloud for reproducing results.
If you want to have a impact, joining one of these groups would probably put you in a much closer position to doing that.
If you just wanted to work on something in your spare time that would be incredibly valuable, then might I suggest this:
It's amazing how much work is done in the scientific community using CSV/TSV files (usually gzipped). And most of that work is done via perl, sed, and awk. And often these are huge I'm working with a VCF file (TSV) right now that's 2 TB in size ZIPPED! It's crazy. Researchers often don't have the time, resources, or know-how to put together a simple Spark cluster and use it.
A command line tool that allowed someone to run SQL (or SQL-like) commands on a gzipped CSV file FAST would be invaluable. And if it could JOIN across CSV files ... wow!
May I please ask you some followup questions? There's no email in your profile. My email is marius.andreiana@gmail.com
> A command line tool that allowed someone to run SQL (or SQL-like) commands on a gzipped CSV file FAST would be invaluable. And if it could JOIN across CSV files ... wow!
What prevents one importing each CSV in a postgres db as tables, creating indexes and then start running queries? Disk space availability? (My local drive is only 1TB)
> What prevents one importing each CSV in a postgres db as tables, creating indexes and then start running queries?
There are many reasons:
* Experience/knowledge. Many labs don't have anyone experienced with databases.
* Security. Without proper dev ops a local DB is often out of the question. And when dealing with PII genetic data, [cloud] security can be a major concern.
* Funding. Machines cost money. AWS RDS instance cost money. Maintaining them costs money. Dev ops costs money. etc.
* Often times the queries being done are simple. For example, you may have a giant CSV with cross-ethnic trait data, but only need samples of African decent with a beta value > 0.1. Sure, you could spin up a database, load the entire thing into a table (O(N) + disk space + time), then index it (now it's O(2N) + more disk space + more time), and then finally run your query. Or you can just O(N) run over the CSV once and output the results with no extra disk space or "wasted" (perception of the researcher) time.
Finally, don't fool yourself about the capabilities of researchers. Many are code-savvy, but lack experience. Writing a SQL query is easy. Loading multiple TB of data into a relational database, indexed properly, and done in a manner that won't take days of time is a level higher.
1. SQLite can easily import multiple GB of CSV data, process it in memory, or persisted to disk, a great tool for analyzing datasets up to the low 10s of gigs.
2. XSV, https://github.com/BurntSushi/xsv
It's also important to remember that some of the reasons AWS, Google, and other cloud services are often NOT used are legal in nature. For example, some EU laws prohibit any personally identifiable (genetic) data from studies being put in the cloud. So, even if summary statistics - or data with PII data removed - can be put in the cloud, work has to be done on that data to remove it.
One answer would be "Enroll into an university". Others?