Open Source Software For Experimental Physics?
jmizrahi writes "I've recently started working in experimental physics. Quite a few programs are used in the lab for assorted purposes — Labview, Igor, Inventor, Eagle, to name just a few. They are all proprietary. This seems to be standard practice, which surprised me. Does anybody know of any open source software intended for scientific research? Does anybody work in a lab that makes an effort to use open source software?"
has its own Linux distribution. Let's hope to god that it's stable enough to not crash the LHC.
https://fermilinux.fnal.gov/
Does anybody know of any open source software intended for scientific research? Does anybody work in a lab that makes an effort to use open source software?
We discussed R which describes itself as:
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R.
...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.
R provides a wide variety of statistical (linear and nonlinear modeling, classical statistical tests, time-series analysis, classification, clustering,
One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor design choices in graphics, but the user retains full control.
While it's not geared specifically towards experimental physics, that's probably going to be your most fruitful endeavor.
Then there's the Matlab knock-off of Octave which describes itself as:
GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language.
Octave has extensive tools for solving common numerical linear algebra problems, finding the roots of nonlinear equations, integrating ordinary functions, manipulating polynomials, and integrating ordinary differential and differential-algebraic equations. It is easily extensible and customizable via user-defined functions written in Octave's own language, or using dynamically loaded modules written in C++, C, Fortran, or other languages.
I'm surprised you're surprised that you only find proprietary software in the highly specialized realm of "experimental physics." I mean, you have to be like a PhD in physics with a good deal of programming knowledge to make something accurate & useful (and there's probably gotta be like 50 failed projects before you get a good successful one).
... I have no idea what Labview, Igor, Inventor, or Eagle do. Ask yourself why these programs are standards and then maybe add to Octave's wish list or contribute to it even! Unfortunately, this isn't easy--I myself started to implement proper handling of sparse matrices in Octave but gave up as I was trying to form low level requirements ... You probably already know though that this is going to have to be done in C or another very low level, very quick language.
You're probably wondering why there's not a project of Firefox or OO.o quality for experimental physics but I'll tell you why: it's too specialized and your user base is ridiculously small. You're not going to find a company that is going to benefit greatly (or at all maybe) by releasing their product into the wild for a community to grow. There's probably not a community for it to grow in.
You should tell us what specifically you are looking for something to do
If you're looking for something specific or outline some high level
My work here is dung.
.. but the specialized libraries aren't as mature. http://www.scilab.org/
There are tons of opensource software tools used in scientific research. One widely used language for building and extending these tools is Python.
Try a google search for +Python +physics to get started, but also try +Python Labview, +Python Igor, and so on. You will find that lots of people have built Python tools to extend the proprietary ones, or do preprocessing or postprovcessing of data.
Labview has the advantage of being easy to learn for non-computer-savvy people that want to control and read special hardware (electrical monitoring equipment, servo motors, etc.). Unfortunately, it rather terrible for complex programs that do not naturally fit in LabVIEW's paradigm of deterministic data flow paths from user input to screen or file output. For example, storing things in persistent variables that are not visible to the end user are a horrible kludge. Reusing VIs (program modules) in other projects require you to endlessly draw wires on your screen rather than simply copy/paste something in an editor. Data processing that involves anything else than applying a standard library function (such as searching arrays for special conditions) that would have been 20 lines of straightforward C code will take you half an hour in LabVIEW, even if you use the "C formula node" that has no debugging facilities whatsoever. You will find yourself spending most of your time moving lines on your screen because there is no free space left on the flow diagram for that extra feature that you need to implement. Stay away from Labview if you can. Even Labview representatives will tell you that more experienced programmers tend to not like Labview so much.
I haven't used Igor myself, but I have watched over other people's shoulders. You can do quite a bit with it, but the syntax of the language is quite inconsistent; the central paradigm is that variables are either scalar or "wave", which is an array that implicitly represents a row of (x,y) values with fixed steps in x. Wave variables always have global scope, which makes functions that deal with wave variables unpleasant, especially if there is recursion.
Myself, I have been a happy Gnuplot (FOSS) user since 1996. Gnuplot is quite limited in terms of data analysis and dealing with higher-dimensional datasets, and also has a very inconsistent syntax due to historical reasons, but the latter doesn't bother since I have used it as it evolved. For serious (CPU-intensive) data analysis, I have always written C/C++ programs (with gcc, of course), using Gnuplot only for plotting.
I have played a bit with R (FOSS) for data analysis and visualisation, which I liked, but which I have never used apart from making a few drawings. Octave can be useful if you need to collaborate with Matlab people.
For hardware control, I also prefer C/C++. Unfortunately you will likely have to do that under Windows unless you want to write your own lowlevel drivers for Linux (I tried once and gave up when I had to read a 200 page document describing the PCI bridge controller to figure out how to do a DMA transfer).
(I'm out of the academic world now, working at a high-tech company where I have to work with Microsoft Office most of the time and god I do hate that...)
Avantslash: low-bandwidth mobile slashdot.
You might be interested in checking out Fernando Perez' presentation at the San Francisco Bay Area Python User's Group on usage of Python in scientific computing:
https://cirl.berkeley.edu/fperez/talks/0811_baypig_scipy.pdf
For simple tasks, even with big data sets, I've had good results with qtiplot http://soft.proindependent.com/qtiplot.html. For really complex stuff, there's root from CERN http://root.cern.ch/
I know of this one, if only because it's written in Python and I ran into it looking for some unrelated 3D tools. It does do physics simulations, AFAIK.
Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
If you've ever wanted something FORTRAN-ish, but with matrices, see GDL.
They're trying to make an open source interpreter that can take IDL scripts directly. Unfortunately, I don't know if it can open up IDL save files, due to various threats from lawyers.
There's also PDL, which deals with large data cubes in Perl.
Build it, and they will come^Hplain.
Many larger places in the world use EPICS (Experimental Physics and Industrial Control System). An experiment I am a (small) part of use EPICS for control.
It is an open source control systems frequently used for particle accelerator control and observatory telescope control. We use it slightly differently, but for what we need to do, it works very well. It is maintained primary by Advanced Photon Source at Argonne National Laboratory. You can read more at the following URL:
http://www.aps.anl.gov/epics/
In case you are wondering, no, they don't use EPICS for LHC. They use a commercial SCADA program called PVSS (for the most part anyway).
The programs he names:
labview, igor, matlab, are not simply data analysis tools but also have hardware control modules. You can run your data acquisition from Igor, and matlab and of course Lab view.
things like R or octave or scipy dont' have control and acquisition modules that I know of.
That said, it seems to me that since scipy is in python that any python DAQ system would fit the bill of a scientific software system.
So the real question is, what DAQ's are available for python.
and the answer is going to be, that daq softwares tend to get written to drive specific hardware systems. e.g. labview makes a whole suite of DAQ boards. there's oscilloscopes and so forth.
As a scientist you don't want to get bogged down building a custom daq. SO the real bottom line is what commercial DAQs are open in design.
The only system I know that might possibly be in the open is the OASIS daq's developed for flow cytometry. these are mass produced and were developed at the National Labs. But I don't know how it is lic.
of course, one can always use an oscilloscope or DAQ made to be controlled by GPIB or simmilar common language. In that case it's pretty easy to write your own as long as you can find a suitable open source GPIB output driver.
Some drink at the fountain of knowledge. Others just gargle.
Since you said experimental physics... :)
The Experimental Physics and Industrial Control System (EPICS) is a set of Open Source software tools, libraries and applications developed collaboratively and used worldwide to create distributed soft real-time control systems for scientific instruments such as a particle accelerators, telescopes and other large scientific experiments.
EPICS is often used with the free real-time operating system RTEMS to build custom control systems.
Users of EPICS+RTEMS include Stanford Linear Accelerator Center (SLAC), Argonne National Labs, Brookhaven National Labs, and Canadian Light Source.
For everything graphical like 2D/3D plots, complex drawings and even solid-body shapes in PDF format I would recommend "Asymptote: The Vector Graphics Language"
http://asymptote.sourceforge.net/. After some learning curve (it is a full-blown interpreted programming language) I never looked back on anything else.
Asymptote is GPL software and comes with good manual and tons of examples in the Internet.
There is a free open source alternative to Eagle called Kicad for schematic drawing and pcb layout. I have never tried it because I use DXdesigner at the office and my personal projects have not yet exceeded the capability of expresspcb.
I would probably go with eagle if I were setting up a new design shop because there is something to be said for having paid support people available to help when needed.
If you're looking for a high concentration of physicists with a history of openness and demonstrable experience with FOSS, why not try CERN? Didn't Tim Berners-Lee create the World Wide Web in order to facilitate collaboration amongst really large, geographically scattered groups working on high-energy physics projects?
I guess back in the day, they couldn't find any commercial projects that would do the job...
Part of what makes Labview attractive is its set of GUI widgets for meters, knobs, charts, etc.
I have looked around for a similar set for GTK etc. but not found anything close.
Is there something?
The Experimental Physics and Industrial Control System is open source. Many accelerators (APS, SLAC, SNS, LANCSE) and telescopes (KECK, SDSS) are using this system.
Here at the Relativistic Heavy Ion Collider at Brookhaven Lab, for large-scale data analysis at plotting we use the open-source C++ framework ROOT (root.cern.ch). ROOT is also used at the LHC. For hardware related tasks the needs of experimental physicists are very specific to the task at hand, and we must hand-write most of the code we need. Only for very small-scale projects can software like LabView (yuck) be useful, and there just isn't any open-source equivalent of Labview that I'm aware of.
I find labview very very good for experimental work. There are educational licenses and site licenses, and with the compiler you can distribute your programs for free.
At the end of the day I could always justify the expense of the software when the equipment it is controlling is orders of magnitude more expensive and some of the automation I was able to roll out saved weeks if not months of time.
The is also a great community of labview users who freely share (source) code they have developed - many under specific open source licenses.
At the end of the day I wouldn't get to hung up about open source when you are dealing with equipment and budgets where the software is 1% of the cost - just use the best tool to meet the requirement or risk project overrun and funding issues.
Although it is based on an out-of-date PCLinuxOS, there are many interesting and very professional packages bundled in that distribution, mostly targeted at engineering, such as finite element codes and the like. I advise you to do as I did: check which ones are relevant for you from trying the live DVD, then install them on your favorite distro by hand.
(2) GnuPlot Plots all that beautiful data....
Try NCL - NCAR-Graphics Command Language.
http://www.ncl.ucar.edu/
KST is interesting if you need to plot data in real-time.
To me, that makes it all the more important that ones work is distributed as widely as possible so that others may build upon it.
Hey man, my heart is behind you 100% in this respect. Unfortunately, ideals/maxims/truth are not what create change/progress in today's world. Money/greed/market have replaced them. He was a great leader but Gandhi would not be a CEO today. I don't think it's a bad thing. Sure is unfortunate in some respects. But modern day people operating on the former usually get laughed at/written off. Look at Stallman!
... you might be written off from that point on. No one needs that discouragement. Approach this from the point of what you can offer people that will bring them closer to their goals and not just yours that--in my opinion--is how a lot of the successful open source products work and is--again, in my opinion--core to the idea of open source.
So I unfortunately have to point out that if you approach your boss (or one of these companies) with a business proposal yielding a net gain of karma or helping society without a tax write off
Realistically, these products are these company's bread and butter. Leave 'em alone if you can't offer them anything. Ask them to support open source plugins or provide an API but don't ask them to shoot themselves in the foot. Instead, look at your lab that (might not) have the sole objective of making money. Turn it into a directive of your lab, then show how other projects benefit from a community, then exercise all your community contacts asking for contributions and pray. Or you can throw your lot in with an existing successful product like R, GNU Plot or Octave or where ever you think it most applicable.
My work here is dung.
Thanks, nicely said.
I fight all the time with Labview weenies. It does have a place but for complex jobs interfacing with other programs or systems it becomes cumbersome. One old timer senior scientist where I work refers to Labview as programming for kindergartners.
I know it all depends upon what scale of experiment he is working on, but there are many open source physics solutions out there. At least in the world of high energy physics (and related), a lot of things are open source.
On the other hand, as far as I can tell, biophysics and condensed matter folks are not necessary using open source solutions for their experiments. I know our biophysics group use LabView for the control when we do most of our controls with EPICS. They use Origin to plot their data, and we use ROOT to plot our data.
I admit that EPICS may not fit very well with small experiment controls with only a handful of things to control when you can just program things in LabView with commercial support. I also admit that for a simple plot of data, something like Origin works just fine (you can even use Excel for somethings). As the system and data gets bigger, the usefulness of large control system such as EPICS and robustness of ROOT can shine.
The Geant4 toolkit is a pretty massive piece of software written by Fermilab people that does Monte-Carlo simulations of high energy interactions passing through matter. That is, you describe some orientation of matter to it, which can be pretty complex (like a hamburger or something), and ask it "what happens if I shoot a high energy gamma ray into this," and out comes a list of events and/or a pretty picture.
A lot of astronomers use IDL but NASA projects in general must put their software in the public domain, so it is not surprising to find packages like the Astronomical Image Processing System (AIPS), the C Flexible Image Transport System (FITS) I/O (CFITSIO) libraries and many other packages and interfaces in SciPy.
This is a big suite of software used for nuclear physics experiments (gamma-ray spectroscopy). It was open-source before the term "open-source" was invented. I believe all the acquisition software for big gamma-ray detector arrays is also open-source stuff written mostly at Berkeley.
Find free books.
A lot of labs in my field use IDL and Labview. Labview works pretty well for data acquisition and is nice because it interfaces with a ton of older equipment. And I can just buy a GPIB interface from NI and be done with it. For some of the bigger projects, EPICS is used as well.
As far as data analysis, like I said a lot of IDL and Matlab is used. Some of the more simulation oriented folk tend to write their own code and most if not all of this is open source. But of limited use to the outside world.
I made a break from my group and have been using Python + Scipy + matplotlib for almost all of my research. It's free and great. It does most of what IDL/Matlab would do. I think it's started to get up some steam too...
A very cool 3d visualization tool called Visit is open source. I think it's build around VTK but I could be wrong.
from ubuntu 8.04, im sure debain has more than this
apt-cache search physics | grep -v game
cernlib - CERNLIB data analysis suite - general use metapackage
cernlib-base - CERNLIB data analysis suite - common files
cernlib-base-dev - CERNLIB data analysis suite - dependencies checking script
cernlib-core - CERNLIB data analysis suite - main libraries and programs
cernlib-core-dev - CERNLIB data analysis suite - core development files
cernlib-extras - CERNLIB data analysis suite - extra programs
cernlib-montecarlo - CERNLIB Monte Carlo libraries
dzedit - CERNLIB data analysis suite - ZEBRA documentation editor
extrema - powerful visualization and data analysis tool
geant321 - [Physics] Particle detector description and simulation tool
geant321-data - [Physics] Data for GEANT 3.21 detector simulator
geant321-doc - [Physics] Documentation for GEANT 3.21
kuipc - CERNLIB data analysis suite - KUIP compiler
kxterm - CERNLIB data analysis suite - KUIP terminal emulator
libcojets2-dev - [Physics] COJETS p-p and pbar-p interaction Monte Carlo
libcojets2-gfortran - [Physics] COJETS p-p and pbar-p interaction Monte Carlo library
libeurodec1-dev - [Physics] Monte Carlo library for quark / heavy lepton decays
libeurodec1-gfortran - [Physics] Monte Carlo library for quark and heavy lepton decays
libgeant321-2-dev - [Physics] Library for GEANT 3.21 (development files)
libgeant321-2-gfortran - [Physics] Library for GEANT 3.21
libgraflib1-dev - CERNLIB data analysis suite - graphical library (development files)
libgraflib1-gfortran - CERNLIB data analysis suite - graphical library
libgrafx11-1-dev - CERNLIB data analysis suite - interface to X11 and PostScript (development)
libgrafx11-1-gfortran - CERNLIB data analysis suite - interface to X11 and PostScript
libherwig59-2-dev - [Physics] Monte Carlo event generator for hadrons (development)
libherwig59-2-gfortran - [Physics] Monte Carlo event generator simulating hadronic events
libisajet758-3-dev - [Physics] Monte Carlo generator for proton/electron reactions
libisajet758-3-gfortran - [Physics] Monte Carlo generator for proton / electron reactions
libkernlib1-dev - CERNLIB data analysis suite - core library of basic functions (development)
libkernlib1-gfortran - CERNLIB data analysis suite - core library of basic functions
liblhapdf-data - Les Houches Accord Parton Density Function
liblhapdf0 - Les Houches Accord Parton Density Function
libmathlib2-dev - CERNLIB data analysis suite - core mathematical library (development files)
libmathlib2-gfortran - CERNLIB data analysis suite - core mathematical library
libpacklib-lesstif1-dev - CERNLIB data analysis suite - core GUI library (development files)
libpacklib-lesstif1-gfortran - CERNLIB data analysis suite - core GUI library
libpacklib1-dev - CERNLIB data analysis suite - core library (development files)
libpacklib1-gfortran - CERNLIB data analysis suite - core library
libpawlib-lesstif3-dev - CERNLIB PAW library (Lesstif-dependent part - development files)
libpawlib-lesstif3-gfortran - CERNLIB PAW library (Lesstif-dependent part)
libpawlib2-dev - CERNLIB PAW library - portion without Lesstif (development files)
libpawlib2-gfortran - CERNLIB PAW library - portion without Lesstif dependencies
libpdflib804-2-dev - [Physics] Comprehensive library of parton density functions
libpdflib804-2-gfortran - [Physics] Comprehensive library of parton density functions
libphotos202-1-gfortran - [Physics] Monte Carlo simulation of photon radiation in decays
libphotos202-dev - [Physics] Monte Carlo simulation of photon radiation in decays
libphtools2-dev - [Physics] General purpose Monte Carlo routines (development files)
libphtools2-gfortran - [Physics] General purpose Monte Carlo routines
med-config - Debian-Med Project config package
med-physics - Debian-Med packages for medical physicists
montecarlo-base - [Physics] Common files for CERNLIB Monte Carlo libraries
montecarlo-data - [Physics
IranAir Flight 655 never forget!
Comedi is open source linux DAQ software
You may wish to check out this page about "Education & Science over at OSalt.com.
It lists science-related open source software, including some previously commented on examples, such as: Octave, Sage, or Scilab.
Enjoy, and good luck!
Transitioned from matlab to numpy/scipy/pylab/PIL/VTK and I'm much happier, much cleaner and easier to use. I handle interaction w/ pygame. Presently (like at this moment) working on two major network controlled interferometer data collection and analysis systems in python.
Although not targeted to research and more towards learning, I though it would be good to give props to the people at http://www.andestutor.org/
Especially since my brother is one of the main contributors on the project ;)
love is just extroverted narcissism
Ever heard of the "askslashdot" section? Every time there's a fucking topic posted that is clearly a question aimed at slashdot readers, k-fucking-dawson puts it into some other category.
For some applications, like Labview and igor, there are alternatives if you want to code. These applications, and those like it, are tightly intergrated packages that allowed automated workflow in the lab with minimal understading of the processes actually being used. For control this is not neccearily a big deal. For data aq and analysis, I think the researcher should know what is actually happening to convert raw data(for instance a voltage) to the pretty picture.
It is quite possible to take to open source modules, glue them together, and do almost everything that Labview and igor does. Whether this is cost effective is another question. A long time ago, when these tools were less developed and quite a bit more expensive, I was responsible for writing the data aq and control systems for some of our experiments. As a lowly paid student, it was cost effective.
As far as Inventor, that is a fish of another color. Like solid works, there is nothing else like it. It is a highly polished professional product that is not allowed to stagnant. Therefore, open source is not allowed to catch up, as it has in field of office applications. I am told that sketchup has many of the capabilities of Solidworks and Inventor. I am not sure how permissive the free license is.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
It's a tad less polished and maybe a bit more buggy than Eagle, but FreePCB ( here ) is FOSS Windows software. It works sufficiently well for me to be very productive. I've used it to make all of the circuitry for the Stanford Solar Car Project ( here ).
It's much easier to use than Eagle and does make you go through as much bigma to get a board made.
In addition to Kicad (already mentioned) there's also gEDA and PCB (http://www.geda.seul.org/), which run on Linux, Unix, MacOSX, and Windows. There are even some geda-designed boards in space :-)
Just a heads up, if you're looking for an open source routing software, gEDA and Oregano are good options. The UI is no where near as nice as eagle's. I kind of enjoyed gEDA though. They also has rather anemic libraries if you deviate from standard issue parts, just like eagle. I think these should be a good start on that front.
On to matlab, have you tried scilab? Once again, not quite what you're asking for but it is open-source and can calculate matrices.
In general, I cannot recommend open-source physics stuff to people due to UI issues. Physics students want results and many are not all that comfortable with a computer. I am not trying to flamebait, I actually applaud you in your interest in these products. I feel that need a bit more polish before being able to seriously threaten the big boys.
A simple suggestion or two: if you're using ubuntu/debian, apt-get the packages, they are friendly and install nicely. Also, www.osalt.com is an interesting site to see if there are good open-source projects out there.
I wrote the DAQ I use for my research using the GnuRadio framework (which is written in python and c++). It is relatively easy to write custom C++ modules for high speed computation. There is also a graphical programming utility called GRC for simple LabView style "programming". Unfortunately, the code still isn't very mature, but it is under very active development. It is difficult to argue with the simplicity of labview for a quick interface to NI hardware, but once you leave the academic world where licenses and hardware cost real money, the appeal is quickly lost.
When I get time, I'll play with comedi and the comedi module for gnuradio for working with NI DAQ cards.
The real tragedy about this is that there is already a vast library of Physics computational tools, but few new students are using it because it's all written in Fortran. Computing has moved forward (python vs. Fortran), but the libraries don't move forward with it.
I once heard a story about a CS professor who every year assigned the translation of a Fortran library function into C to his students. I cry thinking about it, since C is rapidly being left behind as well.
"Space Exploration is not endless circles in low earth orbit." -Buzz Aldrin
I have spent the best part of the last 15 year developing experimental setups at evaluating the data. You don't need labview to do that. Example: Most beamlines at large X-ray site like the ESRF are controlled by open source command line software (SPEC). There are a few beamlines which are controlled by labview and people usually dislike this interface as to clumsy. Most of the equipment we have at the university can either be interfaced via the serial port or the GPIB interface and you need Labview for neither of them. And I am not losing much time with my approach either. When I am evaulating data I usually use Python, Gnuplot for the plotting and fitting and C/C++ if I need all the computational power I can get. I also stay away from S....Plot, since it tends to crash in the most awkward moments. (I know what happend when I hear "SHIT" from my bosses office) This did not get better from release to release. The crashes and bugs just pop up in different places. And the most important thing is: You know what is happening to your data if you program you evaluation yourself. I don't trust someones blackbox anymore, after I had too many bad experiences. Open Source is just the thing for science, since it can actually help other groups to verify and understand your data and evaluation.
I use all of the tools listed by other commentators. But one of the most useful tools not yet listed is GRACE (or xmgrace). It produces publication quality figures, includes many useful features like linear and non-linear regression, statistical analysis, convolutions, interpolations, Fourier transforms and it supports complicated multi-graph overlays well.
In the interest of full disclosure, I've been an IGOR user for about a decade, and I have worked for the company as a consultant.
IGOR is a fantastic tool. Will it do everything? Just about. Its programmability makes it nearly infinitely flexible.
But, for me, the two features that make me shudder at the thought of dispensing with IGOR are the support and OS interoperability.
IGOR Pro is perhaps the best supported and best documented piece of software on the planet. (Yes, I have contributed a minor amount to said documentation.) The company stands behind the program completely, and the user community usually offers solutions to anyone's problem within minutes. And, the documentation is simply phenomenal: the comprehensive and highly linked pdf version of the manual ships with the software is also installed as a searchable, highly organized database that can be navigated many ways.
Then, of course, is the bonus that everyone gets with their purchase of IGOR: you get Mac and Windows versions as part of your purchase. (I've been told the Windows version runs well on Linux under Crossover.)
And, oh yeah, the cost is a fraction of Matlab's or LabView's.
"...who search the reason of things
Are those who bring the most sorrow on themselves." --Euripides, The Medea
We use SPICE for our EE design needs. Its open source (it was when I was using it), I'm sure by now they might have added some graphic support for it.
j
I am an academic biomedical scientist working with electrophysiology. A lot of proprietary software is used in this field, such as IGOR Pro, Matlab, Statistica and SPSS.
These tools are, currently, better than open-source alternatives, and are sadly a little too entrenched in the field.
In terms of statistics software, R is good alternative to SPSS and Statistica, and I tend to use R. GNU Octave is designed to replicate Matlab, and be compatible with Matlab, but it isn't as feature-rich as Matlab yet. IGOR Pro is the most important piece of software in my work, and is used for data acquisition and analysis. Unfortunately, I don't know of any open-source alternatives to IGOR Pro.
Open-source software is crucial to good science, because expensive, proprietary software presents another barrier to replicating experiments and results. Ideally, there should be as few barriers to experimentation as possible. The current proprietary-based system ensures that science is bound to institutions (universities and companies, usually). It is very hard for scientists to work independent of these structures.
FWIW, I've been programming in C since the early 80s as well as.... I've been a LabVIEW programmer for the last 11 years and use it exclusively for the neurofeedback software that I've developed. Not only does that program perform real time analyses that no other neurofeedback software does (or can), it's offline Analytic capabilities are also unsurpassed. While I'm sure that there are application arenas in which some other specific language might be superior -- esp if one is already well versed in the other language -- for ease of use, generalizability of use, scalability and extensibility I know of no other more powerful language. And it's actually quite easy to learn, which is both a plus and a minus. And to be clear, I've implemented functionality using LabVIEW that others said couldn't be done in LabVIEW. Your individual circumstances may, of course, vary considerably from mine but the idea that LV is a "toy" or "not a real programming language" or "unusable for serious development work" is really ludicrous.
...once you've got the data. Collection is proprietary, analysis is open source. Most of the bigger labs (CERN,SLAC, the LHC, Fermilab) publish the source and binaries for their analysis and simulation codes. It's just good practice, since a lot of people use their data, and there's no financial reason to close the source. Your peers can also check and run the same code you did to check your analysis and conclusions. The result is that there is a megaton of nuclear-specific and particle-physic specific open source stuff. Much of it is *NIX-only.
The instruments are all standardized (in some case, virtually unchanged for decades), up until the point they need to talk to a computer. The analog-to-digital converters & collection interfaces all need proprietary interface software, because they need as much performance as they can get in order to handle the massive quantities information you toss at them.
Vendor lock-in is a non-issue; when basic data collection hardware starts at a couple thousand and climbs exponentially from there, you can afford to maintain a couple computers indefinitely just to speak to it. As far as I know, one lab still is using a Mac OS 9 desktop because it's the only thing that will speak to their spectrometer. That was a lucky lab -- the next one I worked in used a DEC MicroVAX II dating back to the mid-80s.
So, in answer to your question, yes there's open source software. But none of it will talk to your spectrometer board from 1985. Software like LabVIEW actually represents a huge step forward, because for a mere couple thousand per license you can avoid the vendor-supplied drivers for tons of systems.
I make a part of the software for the grid infrastructure thingies. All apache 2 licensed. Most of the experimental physics stuff, the infrastructure, technical plans, agendas, nearly everything is open to view.
Check it out! http://atomoptics.uoregon.edu/~zoinks/
root is the most giant steaming pile if s**t I have ever had to work with. It has a C++ "interpreter", which is an incredibly bad idea: it combines all the worst things about an interpreted language with all of the worst things about a compiled language. Add to that the massive, vague APIs, trainwreck of globals and memory leaks, and you're guaranteed pain if you try to put together anything significant with it. And this scientific linux stuff needs to die. It's just a version of redhat that is in even worse repair than redhat is.
I have used a lot of different stuff in my time as a physicist. Personally, the program that I prefer is not free. It is Igor Pro, which the parent post mentioned. While it is not free, a "student" license is only 90 bucks from Wavemetrics, its vendor. The student license gives you a full working copy of Igor for eternity. You are allowed to install it at work, at home, and on your laptop. It is a "makes sense" license, unlike other programs. If I had more time I would go into the details of why I like Igor so much, but I have a pressing meeting to attend to. Suffice to say that economics is a big motivator (and upgrades are very very reasonable).
Scientific Linux OS is written by the scientists and engineers at CERN!
Its base is from Red Hat.
It is a jewel of an OS and is exactly what you need.
Distrowatch.com probably has it listed and a path to downloading it. It is free.
Good luck and do something good that helps people!
http://www.comedi.org/
Open source drivers for lots of DAQ boards from national instruments, measurement computing and others.
http://www.linux-usb-daq.co.uk/
Open source hardware built for use with comedi drivers. Also labview compatible.
Well, there is R and kicad -there are 26951 packages in Debian right now - not sure how many are research related.
wajig listall |grep science
beneath-a-steel-sky - a science fiction adventure game
science-astronomy - Debian Science Astronomy packages
science-biology - Debian Science Biology packages
science-chemistry - Debian Science Chemistry packages
science-config - Debian Science Project config package
science-electronics - Debian Science Electronics packages
science-engineering - Debian Science Engineering packages
science-geography - Debian Science Geography packages
science-linguistics - Debian Science Linguistics packages
science-mathematics - Debian Science Mathematics packages
science-mathematics-dev - Debian Science Mathematics-dev packages
science-physics - Debian Science Physics packages
science-robotics - Debian Robotics packages
science-statistics - Debian Science Statistics packages
science-tasks - Debian Science tasks for tasksel
science-typesetting - Debian Science typesetting packages
science-viewing - Debian Science data visualisation packages
texlive-science-doc TeX Live: Documentation files for texlive-science
texlive-science TeX Live: Typesetting for natural and computer sciences
zope-zms Content management for science, technology and medicine
med-pharmacy Debian Med packages for pharmaceutical research
Professional experimental physicist here.
There are two main types of software physicists have to deal with: hardware interface, and data analysis.
Hardware interface is often the the tougher one: slow controls, data aquistion, environmental monitoring - these all need to interface to hardware through various drivers. LabView is an obvious candidate for table-top experiments, since it is possible to set up working control and readout systems more or less out of the box. There is really no good open-source solution for this for the same reason that open-source drivers took a long time coming to Linux: the user base is just too small to write the code.
My own experience is that it's far better to write your own code, using whatever drivers you can scrounge - it's far more efficient at getting what YOU want done as quickly as possible once it's running. However, the time to write and debug this code is extensive. It's particularly bad since often students will write this code and then disappear, leaving you with badly-documented half-working code.
However, this is basically true of many LabView installations as well.
On the data analysis side, there are many good packages that serve as starting points. ROOT (http://root.cern.ch) is an excellent package for doing event-based data analysis in nuclear and high-energy physics, including efficient ntuple storage and histogramming. It's really a toolkit, not a program, so it allows you to do your own analysis by writing your own code.
I'm not familiar with other big packages, but I know that I frequently use raw C, C++, gnuplot, perl, and python to do little jobs.
There are other tasks as well. Blogging software can be good for logbooks. Wikis are good for in-house documentation.
It really depends on specifics. But basically it depends on where your project falls on the quick-and-dirty vs long-life vs high-performance judgements.
http://www.comedi.org/
open source drivers for many DAQ boards from national instruments, measurement computing, and others. Use with C/C++.
http://www.linux-usb-daq.co.uk/
open source hardware for built for comedi drivers. Also labview compatible
http://www.sagemath.org/. Sage rocks. It's python based, brings together many of the useful libraries already mentioned (numpy, scipy, matplotlib, etc.), and has a very active mailing list. Can't recommend it enough.
Does having a witty signature really indicate normality?
Check out the linux control and measurement interface Comedi (http://www.comedi.org/) for open source drivers and libraries for data acquisition. It written it C, but there are bindings to python, perl, ruby.
It will also work with the real-time extensions for the linux kernel such as RTAI (https://www.rtai.org/) and RTlinux
http://www.genesis-technologies.com/pubdetails.asp?ProductID=692036 Pretty good though. Easier to use than just about anything else.
Please do not read this sig. Thank you.
If you are looking for DAQ which software package you use will depend on which hardware you already have or intend to use. I've had great luck with a piece of open source software called NSCLDAQ and it's viewer SpecTcl, both available on sourceforge. They were developed and are maintained by the National Superconducting Cyclotron Lab at Michigan State University and support a range of VME and CAMAC systems.
Perl Data Language is my personal favorite for data acquisition and manipulation - it is an extension to Perl that gives you the usual data analysis and plotting goodies, plus a nice mix of access to C code (via XS), access to the huge CPAN trove of modules (via, er, CPAN), GUI-isms (via PerlTK), and serial port / USB port access for instrument control and data acquisition.
It's based on Perl, which can either be a huge plus or a huge minus depending on whether you like Perl.
If you want bondage-and-discipline, you can go with GDL, which is an open-source clone of IDL. GDL's main advantage is that it is a clone of IDL, which has become the dominant language in some sectors of physics. GDL's main disadvantage is that it is a clone of IDL, which is among the more evil, bletcherous, pitfall-laden, wretched buggy cesspits of quasi-language that exist.
Numeric Python is reputed to be good, but it's not nearly as expressive nor as flexible as Perl. Matter of taste, really.
Gnu Octave is a MatLab clone, but does not have access to the huge library of add-on modules that you can buy for MatLab. Still, many modules exist and if you like the syntax you can stick with it.
Another good place to start is the wikipedia comparison of numerical analysis packages.
Perl Data Language is quite nice -- it has all the blended hackish glue-code goodness of Perl (which could be a plus or a minus depending on your personal style). CPAN (the big Perl repository) has a lot of free stuff for access to serial, parallel, and USB ports so you can control your equipment and acquire data. PerlXS (built into Perl) gives you nice access to C libraries, and PP (a meta-language that comes with PDL) helps you sidestep a lot of cruft if you have to use a C module to import large volumes of data.
PDL has built-in commands for plotting 2-D stuff via PGPLOT or PLPLOT, and 3-D stuff via GL. I use it for all my publications.
Some prefer NumPy or SciPy, the Python equivalents of PDL, but (IMAO) Python isn't as expressive as Perl, and the external libraries, while extensive, cannot compete with CPAN for completeness or hugeness.
ElementList has good links for free science software.
http://www.elementlist.com/lnx/13/
Python has mad fortran all the mor valuable. the combination of fortran and python is a match made in heaven.
fortran is a wonderfully good algorithmic language but it is terrible at everything else. python is great at everything else, but slow as a dog.
one of fortrans strengths when combined with python is oddly enough it's simplicity and lack of sophistication. unlike c++ It compiles so fast that you can feasibly have python write fortran on the fly optimized for the algorithm and compile it, all during run time.
Fortran is good for non-computer scientist in part because it is quite hard for a typo to be a logic error. (e.g. = instead of ==) as a result it's comparatively easy to debug compared to C.
but it can't do all the fun memory management tricks, introspection, or objects that advanced languages do.
But with f2py you can push all of that into python and then just have it call short simple fortran routines for speed.
Some drink at the fountain of knowledge. Others just gargle.
We are mainly an OSS lab, doing experimental physics for superconductor and semiconductor research. "Mainly" comes from the wide variety of MS operating systems we need to use to operate our proprietary measurement systems, which need everything from Windows 3.11 (with *4* ISA controller cards) to XP to keep them running. I'm the lucky one who keeps them running...
In any case, I do most of my scientific work with the combination of LaTeX+Gnuplot+Perl. Practically all the data from our measurement systems can be had in plain text format, so Gnuplot does the hard work to get nice plots, and Perl handles larger data sets as it can be easily scripted to use Gnuplot.
U+F8FF
Depends on what branch of experimental physics you're in. Nuclear and high energy physics have quite a collection of open source softwware. I've got a pair of projects that are hosted at Sourceforge myself. The data acquisition system and online analysis framework for the National Superconducting Cyclotron Lab (http://www.nscl.msu.edu).
http://www.sourceforge.net/projects/nscldaq
http://www.sourceforge.net/projects/nsclspectcl
You can contact me through those projects if you need more information or want to investigate using these projects for your work.
Clearly this calls for a new open-source project to be called DAQuiri.
"Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
my researcher friends routinely use Octave, perl, I know of R being used... Not sure about data recording programs though, perhaps that is more specialised (or I just never needed them in my field). LaTeX, as auxiliary software, is pretty standard for writing up papers.
Of course, since it's Turing-complete you could just use emacs for everything... or vi... :-)
"'I pass the test,' she said. 'I will diminish, and go into the West, and remain Galadriel.'"
- JRR Tolkien.
During my PhD research project in experimental physics I needed some fast (~200 microsec. resolution) Digital IO, but there was not enough money to buy a NI card with onboard memory. We did have an older NI card (PCI-6024E) with several DIO lines. I then used the drivers from the Comedi project [www.comedi.org] in combination with the RTAI real time kernel [www.rtai.org] to write a program that clocked out the desired timeing with approximately 20 microsec. resolution. So if you don't want LabVIEW, but do want OSS drivers for your NI card, comedi is the way. Of course, this means you'll have to program in C.
I'm a physicist (of the modelling kind, though, not an experimental one).
Let me tell you, if you want to support Open Source in science, support GNU Octave. Matlab is the de facto standard in many fields just because students are conditioned to use it during undergraduate education. However, it's ridiculously expensive and many institutions are just looking for an excuse to dump it. Surprisingly often they haven't even heard of Octave.
Octave has improved a lot in the past few years and version 3 is actually quite impressive. Matlab code often runs with minor or no modifications at all. It even supports multidimensional matrices now. At my lab Octave has become an integral part of the research process. We couldn't do without it, I never use Matlab any more.
So, if you are in a position to try Octave instead of Matlab, or recommend it to scientist, I hope you do that. Octave project is also looking for help and I can assure you that by helping them you are helping numerous scientists around the world. Including yours truly.
Gwyddion is a very nice open-source tool for processing, analysis, and export of AFM/SPM data sets. I find that it has many more useful and advanced features than the crappy program that came with our lab's AFM. It can also open (but not save) almost every data format used by most AFM/SPM manufacturers. (You save in the native Gwyddion format, or export to png, jpeg, tiff, etc.)
A few quibbles: the UI is not very consistent, with some buttons having no menu counterparts and vice-versa. Also, it does not support batch processing, which is my most wished-for feature. Still, it is easily the best AFM/SPM analysis program I have ever used.
Whatever software you need to use, just make sure it will supported for a long time. Sometimes you use software that uses specific hardware, and thus specific drivers. Some other times, APIs change, so programs do not tend to behave in case of an upgrade. Although this problem is usually not that important for major applications (LabView, Matlab), it is a huge issue in case you go for an in house solution, or you used highly customized software. I can tell you this by experience since I had to rewrite a major hardware controlling program written originally in SCO-UNIX for i386 into something that works (drivers included) on a modern Linux distro.
Your question is a bit vague, but you may be interested in GEANT:
http://geant4.web.cern.ch/geant4
It simulates the passage of particles through matter, and the results. I am an undergraduate research assistant with the nuclear physics group at UNH, and we are using a program built on GEANT to simulate the impending upgrade of the particle accelerator at Jefferson National Laboratory. It is being used to help design and model the new sensors.
For analysis, we are using ROOT:
http://root.cern.ch
It's well suited to making sense of large amounts of data.
Both open source, though getting all the dependencies compiled is a pain!
labview fails if you need truly modular code, and particularly if you need to do non-trivial data analysis on-line during data acquisition.
I had tried to replace Labview in my lab by writing python wrappers around C libraries. my first attempt was with the Comedi project (http://www.comedi.org/) which i couldn't get to work with our NI boards. Eventually i was able to write lightweight wrappers of the NIDAQMX drivers using Pyrex, so the data acquisition was fast. However, my boss asked me to focus on other things (such as experiments) for a while, and the project has basically been abandoned. So it's possible, but time consuming.
NI offers C# drivers if you're in a windows environment, and i know people who are using those and are very happy about it.
in general i do think that python/numpy/scipy is the best way to go in terms of high level language, high level tools, gentle learning curve, etc.
I use both open and proprietary software in neuroscience, including more generalized signal analysis and statistics including some far left field non-linear non-integer stuff. Proprietary is far more likely to have the advantage of having a history of validation. If you can address validity yourself, use OSS. If you haven't approached calculation validity yet, look into it before you decide whether to attempt it. Statisticians and experimental mathematicians (yes, there are such beasts) relish arguing about the finer points of calculative validity to a point that makes engineers' arguments about the relative merits and draw backs of various filters sound like arguments over the rules of whack-a-mole. Proprietary software generates income which can be used to pay the long, laborious process of validation.
"I may be synthetic, but I'm not stupid." -- Bishop 341-B
Too specific? I'd say no where near specific enough. I'm an experimental physicist, an experimental particle physicist and we use almost nothing but Open Source software. Mind you that is mainly because things like MatLab, LabView etc. cannot cope with what we need them to do. Hence most of the time we write our own software using Open Source tools and use the Linux OS both for massive clusters as well as embedded processors using in the detector's electronic frontends.
There is one tool, root, that we use for I/O and analysis. It is by far the worst designed and written piece of C++ I have ever had the misfortune to encounter but its I/O is extremely fast and powerful...once you get it to work. I'm not sure I'd recommend it but if you do it is best used via the Python interface which offers a layer of insulation from the full horror of the interpreted pseudo-C++ environment.
The only real exceptions to Open Source I can think of are the CAD software used to design detectors and electronics. Some of the embedded CPUs also used to use propriety OS's but I don't think that this is very common now - at least not on the projects I've had experience with. So perhaps if he explained what sort of experiment physics he was interested in it would help to be able to give advice.
My different generations of meas and evaluation software stacks
Measurement software:
0) C
1) C/perl/java evaluation
2) C/java/jython evaluation:matlab
3) matlab/labview (connected by http+xml+xslt)
4) matlab with DAQ+instrument control toolbox
5) C/tcl evaluation:matlab; real time plotting: gnuplot
C was only used to bind non-preexisting daq functions. I dont write GUIs in C. For GUIs i prefer java, and the best free combinations i used were 2) and 5) would i be free to choose i would use 2), however in the environment i am currently working some co-workers write in tcl, so i found in more productive to learn tcl. (Not because of my productivity, but learn fast. However, one more conflict in the group could have killed the group. This selection was purely driven by social purpose - i gave to say: sucessfully.).
Otherwise the general idea would be that to use java and implement the GUI in java and the scripting languange in one of the many languages existing on the top of java. If you use a standalon scriptiong language for performance reasosn (i tested that once, but i could affot to go without it): python is a great choice for semi-numerical (and numerical) programs.
For evaluation i used and
1) perl
2) python
3) octave
4) matlab
1-3) each plotting with gnuplot. I know there are other solutions around, but when i tested them, gnuplot was always the rock-stable, feature-rich workhorse (think: LaTeX friendly output: epslatex - great in combination wit a makefile for you figures in a thesis!), with the only disadvantage of some things beeing historically grown.
4) is great, but do yourself the favor and alway try to keep the core functionality working in octave. I mean matlab is a great product, but you may prefer not to tie yourself to a package which costs than much money (think about what will happen after you leave your current univerity? do you still want to access you old data?). My current strategy is to keep the functions loading experimental data/evaluating it working in octave, and gui functions in matlab (only exception: i use the statistical toolbox moderatly. I could rewrite the function i use, but it would take a week. I am working in a reasearch company, and here it is more reasonable to buy the toolbox.
Oh. and by the way from time to time i am misfortunate enough to work in labview. it is a PITA. My personal experience say: rewriting the program in another language usually saved time.
The answer you accept depends on whether you want something that does what you want without having to think, or if it allows you to ask the question. CERN has their own version of Scientific Linux, but us proles can't download it. If anybody at CERN would allow me a copy, I would gladly mirror it for the rest of us.
(You can only get a floppy boot image, for a network install AFAICS, and to install on the network, you need a login)
I've been out of the physics loop for a number of years now, but when I was doing research we used RedHat/gcc(c++ and Fortran)/Root++. I think for actual graphics we used Motif but I can't recall now.
The underlying distribution is one of the least important things to decide. Unless you need something exotic built in like clustering etc, any modern distro will give you all the libraries and tools you need. Pick your development libraries more carefully... but distrubution generally pick for ease of use. The less time you spend arguing with the OS the more time you have for actual work.
Does anyone remember that category where you could submit questions to /. and then get responses from the community? I wonder what happened to that...
I'm sure this will be lost among the sea of comments, but I'll throw it out there anyway. As a former LabVIEW/Matlab user, I have had tremendous success with the Python(x,y) package.
All the development is done in Eclipse. You have a WYSIWYG editor built into Eclipse, with which to design Qt GUIs. The signal/slot methodology in Qt is similar to LabVIEW, but easier to work with once you've learned it, since you can make connections in text or the drag and drop interface, whichever is easier.
You can use the generic Qt widgets to display Matplotlib graphs, which use similar syntax to Matlab.
You have numpy/scipy, which are fantastic for processing data.
You have pyvisa/serial/parallel, which will control any instrument you have, or even ones you make/program yourself, such as FPGAs or MCUs.
You can use Python's pickling to store your data in rapidly-accessible modes (I've opened hundred million datapoint sets in seconds), or CSV/Excelerator to store smaller chunks of data in more human-readable modes. Python also provides a fairly simple database system if you need one, and you can always use Zope or Django if you want a web interface (though that will be harder to learn).
On top of all that, there are many more field-specific modules available in Python than in LabVIEW.
I've been using it for months now (I should emphasize that I had never even heard of Qt or numpy or any of those things before that), and I cannot wait to drop LabVIEW. If you think Perl is bad, try to debug a 5 year old LabVIEW program, developed by ten different people, each of whom was using LabVIEW because they don't know how to program properly. One of our old VIs, which only sends a string of commands over a serial port and then reads a DMM, weighed in at over 350 MB. No one can even figure out how it works any more. The same system, done with Python(x,y), came out to under 200 lines of code.
You can try SAGE http://sagemath.org/ which is a Python-based CAS which describes itself as trying to build an alternative to Magma, Mathematica, Maple, Matlab, etc.
I use it and it's pretty good. Also it's under heavy development and you can get to directly influence it's direction (if you can code).
Kepler is a tool for managing workflows that has been used for physics, see Plasma Edge Kinetic-MHD Modeling in Tokamaks Using Kepler Workflow for Code Coupling, Data Management and Visualization. Disclaimer: I contribute to the Kepler Project.
Not exactly what you asked for, but read the article by experimental physicist Dr Beau Webber.
http://www.vector.org.uk/archive/v233/webber.htm
Then decide for yourself. I've already made my choice.
Heisenberg may have been here.
I inherited a bunch of labview code which was part of a million line software system with 13 different compilers and 3 architectures. The biggest problem I found was that there was no good way of doing version control on labview VI's. It's hard to tell if anything changed. I also never found a way to run them in an automated fashion to do testing such that I could be sure that the same control inputs had been applied each time. Labview may be good for convenience but it's death to a non-trivial system that has to be maintained over human generations.
NIH Image is an image processing program aimed at scientists, and distributed by US National Institutes of Health. It has been around since the early days of the Mac, although now it's done in Java, and runs on PC's as well. It's still free though and I just used it last week to process some engineering images. Cheers
In my lab at UCSB (http://www.physics.ucsb.edu/~martinisgroup) we have developed a package called LabRAD (http://sourceforge.net/projects/labrad/) for doing our data acquisition and experiment control. It is a network protocol that gives us network transparency as well as language independence. We have modules for talking to serial ports, GPIB, raw ethernet, etc, as well as servers that use these busses to talk to the various instruments in the lab. The backbone is written in Delphi, but most of the modules are written in python, which is also our scripting language of choice for running everything, and for data analysis. I can only agree with previous posts about the general awesomeness of python/numpy/scipy and matplotlib for plotting. The network transparency is great because we can monitor the whole lab and run experiments from anywhere. This is Santa Barbara after all, and nothing beats doing physics while lounging on the beach with a laptop!
Igor Pro can be extended with C code (compiled into libraries called XOPs), or code written in its own internal language. The support from the developers for both the parts they've written and for the parts you might write, as well as the support from the user base, is the best I've ever seen, by a mile. The graphics and the GUIs are also cleaner and more professional looking than any other software I've seen.
In our group, we are working towards a goal, which is to manipulate light in many intricate ways. We use a lot of software for managing our equipment and data. The choice of software depends on its performance and its ability to suit our needs, not wether it's open source or not. We use a lot of open source stuff though: Linux, Firefox, and some scientific software. We also write software ourselves if necessary. But we usually don't open source our software because we want to keep our position in the top of the field.
-- Cheers!
Maxima (http://maxima.sf.net) is just a CAS, but it is one of the most mature open source scientific software out there. If a CAS could be used for your purpose, give it a try.
TANGO is an o-o, CORBA based control system. It's used in ESRF and other EU synchrotron radiation facilities. Google it.
The stuff he's talking about is fairly generic data collection and analysis software, not really physics-specific. LabView is a semi-standard piece of software for interfacing with laboratory machines, setting up experiments and reading in the data and storing it somewhere. Igor is analysis and graphing software. Inventor is a 3d modeling/CAD package. Eagle is an ECAD (CAD for circuits basically) package with some automated layout capabilities.
Some of these are easier to replace than others. Data analysis can generally be done by a mixture of R and Octave, as you note; and for just graphing/plotting/figures, there's a billion open-source alternatives, including a ton of Python libraries these days.
LabView is going to be trickier to replace, due to interoperability: there's a lot of machines out there that interface with LabView out of the box, exposing APIs that LabView can use to control experiments, and sending back data in formats LabView can deal with. I'm not aware of even a significant attempt to replace it, really. (This is partly because what it does is really boring.)
I don't know what open source alternatives for CAD are; that's a whole topic in itself probably.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Veusz is a nice GUI/scripted scientific plotting program:
http://home.gna.org/veusz/
It works on Unix, Windows and Mac OS X
I've been working at CERN for 15 years as an experimental physicist. I'm currently on the Atlas experiment. The prevailing operating system now is SLC (Scientific Linux Cern), having gone through various flavours of Unix and even OS9 (anyone remember that?). It is stable, which necessarily means 'outdated' with respect to Ubuntu etc. Various installation configurations are available (google is your friend...). For Data Acquisition, at the sharp end we have single board computers running homegrown software. The 'slow control' (measuring temperatures etc on a timescale of seconds rather than nanoseconds) we are using PVSS, but often in the lab (not on the main detectors) we run with LabView, using VME acquisition boards or PXI. Increasingly there is a move to USB for benchtop systems, but you still find plenty of IEEE (GPIB) instruments. For open source, maybe check out the python/C++ DAQ framework written by Carlos Lacasta. For analysis and data presentation most people use ROOT (open source), which includes a C++ interpreter for scripting. This has recently been ported to python in the form of PyRoot. In my (minority) view, Root is a dog of a software package. It is largely monolithic in its design, and the intrinsic data format is not well documented, so once you adopt Root you are really stuck with it. It has permeated all our software, and we suffer for it. The programming model mixes content and presentation. Many people love it. Igor (proprietary) is in many ways superior for small (5Gb) datasets. The presentation is superb. There are other packages (e.g. Hippodraw, Gnuplot) for presentation. I understand that Mathematica and MatLab are popular for magnetic field calculations, but much of our software is homegrown using the (open source) CERNLib.
I'm surprised there isn't an Open Source clone of LabView. It seems to be one area where a Free alternative would be very useful for education and would really help move things forward. I guess it's a huge job though. On Wiki I found these Free alternatives to MatLab: http://en.wikipedia.org/wiki/Scilab http://en.wikipedia.org/wiki/FreeMat http://en.wikipedia.org/wiki/GNU_Octave http://en.wikipedia.org/wiki/R_(programming_language) None are really like LabView though, nor as mature. I wish Mozilla, Google, the FSF etc. donated money to developing a mature, strong alternative to LabView.
If you're looking for an open source program for controlling spectrometers you may be interested in fsc2 http://users.physik.fu-berlin.de/~toerring/fsc2.phtml. Being its author I will refrain from pointing out it's advantages here;-)
There is a lot confusion about OSS. The question is always what you want. My departement buys a lot equipment for testing purposes. Most times the job is simply to get the data from the device and write it into a database for analysis.
normaly the devices are much less complicated that a LHC but the general rule is: everyone is cooking with water. I hate this fancy GUI#s what make only problems, most devices have a serial interface you send a command and they send data. The programms are most time easly written. USB is normaly seriell in disguise, even ethernet can be used that way. Some shell scripting will help to send the data into a database.
Afterwards you write some clever R code to analyse the results (or whatever). Sometimes gnuplot is handy (the "plot" is very powerfull for comparisons). The code people write is sometimes wired but the results are very good because the autor are ofter real experts of there area and spend a lot of time getting there knowledge into the code. We have some programm that are very good at spectrum analysis. A comparison with commercial programms showed lately that we are at least equal.
It would be of much importance to get the scientific applications on linux (SAL) page back to live and get more people to contribute there knowledge.
Sorry that it's not open source, but it is at least free-as-in-beer abandonware these days:
http://tinyurl.com/d29zce
QtiPlot is really a good gui graphing tool.
pyplot is a libary of python plotting stuff.
ROOT for yet annother graphing tool (developed by cern).
xmGrace or gnuplot(plotdrop) for even more graphs.
feynmf for feynmen diagrams in latex. not too mention latex its self and all the associated rasamataz. LyX for word processing.
On the data collection side Linux makes it pretty simple to develop tool to collect data from pretty much any digital input.
Also sourceforge is full of usefull stuff, i.e. pmidic, which i was able to use in a lab enviroment: http://uk.youtube.com/watch?v=pUCqO_vF2jo
Hi, Here is what I am mostly using: (I am skipping obvious things like LaTeX etc.) 1. Maxima for symbolic algebra (and some numerics too) with graphical user interface wxmaxima 2. Octave for numerical & matrix stuff 3. Grace or qtiplot for 2d plotting. qtiplot does also 3D 4. opendx for demanding 3d visualization 5. fsc2 for data acq or I directly program the hardware, although it is tough to get programming specs for most things :-( Octave and linux-gpib are also etremely useful.
I'm the resident "computer guy" in the optics laboratory of the local astronomical observatory...
First of all, most people here is technically-minded. That means, if they need a simple program, they can often program it on their own. No one is scared by the command line, etc. The astronomers still have lots of Sun workstations still around, but in our department we basically only have PCs.
There are three categories of software: hardware interface, data analysis and complete systems (in our case, that would be a telescope).
For the hardware interface, you use whatever is available at the moment. Most experiments are one-off jobs that will last from a few days to a few months tops. Usually the hardware has an SDK with a C interface and, possibly, a Labview module. What I usually do is to wrap the C interface to the higher-level languages we use in the lab (see below)
Data analysis is done in Matlab and IDL (IDL is quite popular in astronomical and medical environments). IDL's syntax is horrible, but it's a powerful data and visualization package. Most people here are proficient in at least one of those two languages, and if I write the appropriate wrapper, they can use the lab devices on their own. Windows and linux share about 50% each of the computers, and all window machines, including laptops, have putty, winscp and possibly X servers installed and regularly used.
At the telescope, everything is custom-built from the ground up, because you want to know what it's doing down to the last bit. The lower level part is in usually in C, then you may have user interfaces written in Qt or whatever, databases keeping the records, modules in Python or perl or something else etc. Things are developed by teams rather than individuals, so there is lots of documentation to write and APIs to specify. Windows is usually banned from this environment, and *everything* is done in Linux.
I personally can vouch for VTK does some cool sexy things both in visualization and processing. It runs on Linux, Win*, MacOS, etc. Source code is available, but it does have a steep learning curve. For me the advantage of learning VTK is that I can take it with me -- meaning that the time I invest in the tool is not waisted if I go away and start working in a place which does not have a license for that particular tool (which I got burned with via Khoros and Mathematica)...
If you are interested in an intermediate sized data acquisition system, then you should take a look at the package that I have written called MX (found at http://mx.iit.edu/). MX currently has several hundred drivers for devices like motors, counter/timers, multichannel analyzers, 2-dimensional imaging detectors, and so forth. The core of MX and the device drivers are written in C in an object oriented style, but these days many of our user applications are written in Python, using wxPython for our GUIs. We have found Python to be an excellent language for writing scientific applications.