Software for scientists -------------------------------- Some things takes much less time and stress once you know the right tool. Below, there is a community edited list of software for scientists. ## Text editors in General purpose text/code editors. It may be better to have a good editor for everything, than different ones for different languages, scripts, notes. * [Sublime Text 2](http://www.sublimetext.com/) * License: paid, unlimited trial * Powerful but easy to start * [Good environment of plugins](http://wbond.net/sublime_packages/community#sort-installs), including ones for science, e.g.: * [LaTeXTools](https://github.com/SublimeText/LaTeXTools) * [Using Sublime Text 2 for R](http://tomschenkjr.net/using-sublime-text-2-for-r/) * [Notepad++](http://www.notepad-plus-plus.org/) * Open source, for Windows * Quite powerful, simple (no steep learning curve), and very stable * Useful block-select functions * [Vim](http://www.vim.org) * Open source * Powerful, but steep learning curve * Type `vimtutor` in terminal to learn basics (or if you want to have some fun [vim-adventures](http://vim-adventures.com/)) * TODO: some materials for science (e.g. complete setup to use it with LaTeX) * [Emacs](http://www.gnu.org/software/emacs/) * More of a powerful programmagle text environment, than an editor * Includes mutt (first mail client that supported threading), IRC client, many programming modes, Tramp (SSH), terminal emulator (great for Windows users!) * Includes a powerful note-taking and Organization tool: [Org mode](http://orgmode.org/) * LaTex mode with realtime preview of output PDF is awesome * [Gedit](https://wiki.gnome.org/Apps/Gedit) * open source ## Note-taking As we all take a lot of notes. Some links from this: http://academia.stackexchange.com/questions/8002/how-to-manage-theorists-labbook. * [TiddlyWiki](http://tiddlywiki.com/) * Interactive personal wiki in one file. A lot of plugins. * See http://boolesrings.org/krautzberger/2010/11/10/tiddlywiki-or-the-end-of-my-latex-notes/ * [Evernote](http://evernote.com/) * Synchronization with computer, web and devices. No tree structure or LaTeX support. * [Gitit](http://gitit.net/) * Personal wiki with Git, notes in separate files. * [Rednotebook](http://rednotebook.sourceforge.net/) * A journal/diary in one file. It allows to export the journal to PDF, HTML, Latex or plain text * [DebateGraph](http://debategraph.org) * Organize a graph of notes * Include structured conversations around each node * Each node has its own rich text editor (no LaTeX) * Known issue: no way to export As a general thing, [Markdown](http://daringfireball.net/projects/markdown/) format may be convenient. It can be read on any system, and it is easy to cenvert it to HTML, PDF of DOC using [Pandoc](http://johnmacfarlane.net/pandoc/). ## Collaborative writing Some discusion here: http://academia.stackexchange.com/questions/1261/simplest-way-to-jointly-write-a-manuscript (see also: Sharing code and Version control) ### Non-LaTeX * [GoogleDrive](https://drive.google.com/) * Usually much nicer than sending back and forth docs * Also nice for brainstorming (use your own colour) * [Hackpad](https://hackpad.com/) * Content-oriented (same font), simple but productive features * Great for brainstorming (names are visible, e-mail notifications) * Examples: https://hackpad.com/New-scientific-markup-language-utAjFcYuvvB * [Etherpad](http://etherpad.org/) (software) * e.g. at [Titanpad](http://titanpad.com/) ### LaTeX * [ShareLaTeX](https://www.sharelatex.com/project) * Open source * Git and Dropbox support in paid version * Basic features are free * [WriteLatex](https://www.writelatex.com/) * Perhaps the best way to introduce people to LaTeX (no installation required, starts with a full working example) * [Authorea](https://www.authorea.com/) * nice interface designed for writing full, scientific papers * also can use Markdown * underlying git repo, so good history management * public articles + one private free * [StackEdit](https://stackedit.io/) * Web editor with Markdown and LaTeX, synchronizes with GoogleDocs and GitHub * Maybe good to introduce people to Markdown * http://mathb.in/ * Short math notes ## Collaborative reading * [PeerLibrary](http://peerlibrary.org/) * Collaborative reading of academic publications * Sharing, highlighting, annotations, discussions * Displays PDFs in the browser * Still in development, [open source](https://github.com/peerlibrary/peerlibrary) * [SciRate](https://scirate.com/) * tracking of new papers from [arXiv](http://arxiv.org/) * you can recommend and comment preprints ## Version control Crucial for code. Often helps a lot with writing LaTeX documents (see some discussion here: http://academia.stackexchange.com/questions/5277/why-use-version-control-systems-for-writing-a-paper). Much more pleasant than e-mailing back and forth changes! * [Git](http://git-scm.com/) * steep learnign curve, especially on Windows * Tutorials: * Interactive tutorial: http://try.github.io/ * Relatively simple intro: http://www.ralfebert.de/tutorials/git/ * [Version Control with Git - Software Carpentry](http://arokem.github.io/2014-01-27-Stanford/lessons/swc-git/tutorial.html) - especially for scientists * [Git for Scientists: A Tutorial](http://nyuccl.org/pages/GitTutorial/) * [How to contribute to GitHub projects](http://guides.github.com/overviews/flow/) * Adv. interactive tutorial for branching: http://pcottle.github.io/learnGitBranching/ * An easy to use interface for Win is [TortoiseGit](http://en.wikipedia.org/wiki/TortoiseGit) * [Mercurial](http://mercurial.selenic.com/) * Pure Python, so it works nicely on Windows (Linux and Mac OS X as well) * Similar to git but with less steep learning curve * [Hg Init: a Mercurial tutorial by Joel Spolsky](http://hginit.com/) While for small-to-medium size both are equally powerful (so pick any and you will be happy!), an older version control system [Subversion (SVN)](http://subversion.apache.org/) is less powerful, but not necessarily simpler (so when starting a new repository, use Git or Mercurial). For older projects it is still fine (SVN version control is still much, much better than no version control!). For both Git and Mercurial [SourceTree](http://www.sourcetreeapp.com/) is nice and free (though not open) graphical interface. For hosting (for collaboration with others and backup), see [Bitbucket](https://bitbucket.org/) and [GitHub](https://github.com/). ## Website tools For personal homepages, lab notebooks and conference websites. * [WordPress - code](http://wordpress.org) and [WordPress - hosting](http://wordpress.com) * Examples: * https://johncarlosbaez.wordpress.com/ * https://gowers.wordpress.com/ * http://netsci2013.net/wordpress/ * [Jekyll](http://jekyllrb.com/) * For writing blogs in Markdown and easily putting them on GitHub * Tutorial for using LaTeX in it: http://cwoebker.com/posts/latex-math-magic * Examples: * [Open Lab Notebook in Jekyll]( http://carlboettiger.info/2012/09/28/Welcome-to-my-lab-notebook.html) * [A homepage](http://ivanzuzak.info/) * [Wikidot](http://www.wikidot.com/) * e.g http://offtopicarium.wikidot.com/ * [Wikispaces](http://www.wikispaces.com/) * Simple wikis, very easy to create and manage * Used as open science notebooks, for instance http://usefulchem.wikispaces.com/ * [Site44](http://www.site44.com/) * Showing small site by putting files into a [Dropbox](https://www.dropbox.com/) folder * [GitHub Pages](http://pages.github.com/) * Static websites with Git * [Instiki](http://golem.ph.utexas.edu/wiki/instiki/) * Wiki especially for mathematical collaboration (see features on [Azimuth - how to blog](http://www.azimuthproject.org/azimuth/show/How+to#blog) - LaTeX, SVG, ...) * Examples: * http://www.azimuthproject.org/ * http://ncatlab.org/ * [WorkingWiki](http://lalashan.mcmaster.ca/theobio/projects/index.php/WorkingWiki) * Wiki especially for mathematical collaboration * [Sphinx](http://sphinx-doc.org/) * Great for writing documentation * Example (in Polish): http://django.carrots.pl/ * [Jekade](http://zohooo.github.io/jekyde/) * Jekyll-like static pages with built-in LaTe support, in Node.JS ## Survey tools * [Google Forms](http://www.google.com/google-d-s/createforms.html) of [Google Drive](https://drive.google.com/) * easy, free, but for a limited number of responses * easy way to set registration for a small event, or to get feedback * [Survey Monkey](http://surveymonkey.com) ## Reference managers * [Mendeley](http://www.mendeley.com/) * With PDF, notes, arXiv field, BibTeX support, metadata extraction * Free with large storage limit; owned by Elsevier * [Zotero](https://www.zotero.org/) * Strong browser integration - click a button in the URL bar to save a reference * Syncs references between computers * Open source * [JabRef](http://jabref.sourceforge.net/) * Cross-platform manager for BibTeX databases. Little integration with the web. * [Bibdesk](http://bibdesk.sourceforge.net/) * Mac OS X ## Sharing and repositories * [GitHub](https://github.com) * great for sharing code and not only; very open for collaboration * examples: * a scientific open-source project [QuTip: Quantum Toolbox in Python](https://github.com/qutip/qutip) * the [Linux](https://github.com/torvalds/linux) itself * [German Federal Law and Regulations](https://github.com/bundestag/gesetze) (vide open data) * ...and even a book - "Two dozen mathematicians wrote a 600 page book in 6 months on GitHub" (http://homotopytypetheory.org/book/, see also [a blog post on it](http://math.andrej.com/2013/06/20/the-hott-book/)) * [gist](https://gist.github.com/) for posting short codes or notes on anything * [BitBucket](https://bitbucket.org/) * for Git, Mercurial and SVN * less social/collaborative than GitHub * unlimited number of private projects and collaborators with an academic e-mail http://atlassian.com/software/views/bitbucket-academic-license.jsp * [Figshare](http://figshare.com/) * For sharing negative data, plots, posters, etc; gives you a DOI. ## Question and Answer sites (list only related to academia or research-level) * Some [Stack Exchange sites](http://stackexchange.com/sites) related to science, e.g.: * [MathOverflow](http://mathoverflow.net/) * [Academia - StackExchange](http://academia.stackexchange.com/) ## General-purpose programming * [Python](http://www.python.org/) * Some great packages: * The [SciPy ecosystem](http://www.scipy.org/) contains lots of useful libraries. A detailed course is online at http://scipy-lectures.github.io/ * [NumPy](http://www.numpy.org/) for numerics * [Matplotlib](http://matplotlib.org/) for plots * [Sympy](http://sympy.org/) for symbolic computations * [IPython Notebook](http://ipython.org/) for interactive environment for exploration and presenting results `$ ipython notebook --pylab inline` * http://nbviewer.ipython.org/ for sharing notebooks * [Introduction to IPython Notebook](http://nbviewer.ipython.org/github/batterio/intro_ipython_notebook/blob/master/notebooks/index.ipynb) * http://pandas.pydata.org/ for data analysis (R-like) * Also: NLTK! http://nltk.org/ * http://scikit-learn.org/stable/ for machine learning * Python syntax intro: http://learnxinyminutes.com/docs/python/ * Intros to Python for scientists: * [A Crash Course in Python for Scientists by Rick Mulle](http://nbviewer.ipython.org/5920182) in IPython Notebook * [Python for scientific computing: Where to start by Steve Byrnes](http://sjbyrnes.com/?page_id=67) * More in depth science introductions: * [Python Scientific Lecture Notes](http://scipy-lectures.github.io/) - great! * [Materials by Nicolas P. Rougier](http://webloria.loria.fr/~rougier/teaching/) * [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) * For interactive applications and visualizations (works on any system, no installations required) * Nice introduction: http://eloquentjavascript.net/ ## Plots and diagrams * [Matplotlib](http://matplotlib.org/) for Python * http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html * http://www.physics.ucdavis.edu/~dwittman/Matplotlib-examples/ * [gnuplot](http://www.gnuplot.info/) (free software) * [R](http://www.r-project.org/) (for applied statistics, but also nice plots, free software) * use together with RStudio http://www.rstudio.com/, powerfull IDE for R * [ggplot](http://ggplot2.org/) "a plotting system for R, based on the grammar of graphics", easier and nicer looking plotting, [tutorial](http://www.ceb-institute.org/bbs/wp-content/uploads/2011/09/handout_ggplot2.pdf) * [D3.js - Data Driven Documents](http://d3js.org/) * A JavaScript library any data visualizations (also interactive) * [Interactive intro](http://vogievetsky.github.io/IntroD3) * Examples: http://biovisualize.github.io/d3visualization/ * [Gephi](http://gephi.org/) * for graph anaysis and visualization * [Origin](http://www.origin.pl/) * Windows, commercial ## Drawing diagrams * In LaTeX: TikZ library * Examples: http://www.texample.net/tikz/examples/ * Introduction: [Basic Drawing Using TikZ - ShareLaTeX blog](https://www.sharelatex.com/blog/2013/08/27/tikz-series-pt1.html#.Us28X2RDv8E), http://cremeronline.com/LaTeX/minimaltikz.pdf * Manual: http://paws.wcu.edu/tsfoguel/tikzpgfmanual.pdf * [Inkscape](http://inkscape.org/) for *.svg (Scalable Vector Graphics) * open source, GNU * [The Ipe extensible drawing editor](http://ipe7.sourceforge.net/) * open source, GNU ## Presentations (except for the well-known office packages :), unless with some additional hints) * [LaTeX/Beamer](https://en.wikibooks.org/wiki/LaTeX/Presentations) * also: Beamer slides using Markdown: http://jeromyanglim.blogspot.com.es/2012/07/beamer-pandoc-markdown.html * [Prezi](http://prezi.com/your/) * zoomable prezentations * for example: http://prezi.com/d3lswto1mebc/free-falling-through-prezi/ * [knitr](http://yihui.name/knitr/) combine R and markdown and export your report to pdf/doc/odt * [Slidify](http://slidify.org/) * combine R and Markdown and get beautiful HTML5 slides * [example](http://slidify.org/samples/intro/#1) * easy share on GitHub or Github, Dropbox or [Rpubs](http://rpubs.com/) ### Additional tools * [Latexit](http://pierre.chachatelier.fr/latexit/) for easily putting equations into Keynote/Powerpoint/Anything ### Sharing slides Sharing is bulit-in in [Prezi](http://prezi.com/your/) and [Slidify](http://slidify.org/). * [https://speakerdeck.com/](https://speakerdeck.com/) * people can view online and download pdfs (no registration or adverts, as of now) * [example](https://speakerdeck.com/pmigdal) More generic: [GitHub](https://github.com/) and [Figshare](http://figshare.com/) ## Posters * [Inkscape](http://inkscape.org/) for *.svg (Scalable Vector Graphics) * GNU * LaTeX * [LaTeX Templates - Conference Posters](http://www.latextemplates.com/cat/conference-posters) ## Math calculations See also: General-purpose programming: Python. (And to reiterate: [SciPy](http://www.scipy.org/)!) * [Mathematica](http://www.wolfram.com/mathematica/) * commercial * for symbolic calculations * [Wolfram Alpha](http://www.wolframalpha.com/) * for online simple plots, units changing, integrals etc. a "demo version" of Mathematica * [MATLAB](http://www.mathworks.com/products/matlab/) * commercial * for numerical calculations, supports scripting * [Octave](https://www.gnu.org/software/octave/) * open source, GNU licence * almost the same as MATLAB (sometimes incompatible), without graphical interface - only text * may use Gnuplot for plots * [Sage](http://www.sagemath.org/) * open source, licensed under the GPL * mathematics software system (alternative to Magma, Maple, Mathematica and Matlab.) . It combines the power of many existing open-source packages into a common Python-based interface. * [R](http://www.r-project.org/) * for any kind of statistics ## Productivity misc Throw a pile of random programs (it is not a complete list) * [Remember The Milk](https://www.rememberthemilk.com/) * Todo list with easy synchronization * [RescueTime](https://www.rescuetime.com/) * to track how much time you spend on different activities on your computer (that is, how much you work, and how much you procrastinate) * [Delicious](https://delicious.com/stared) and [Pinboard](https://pinboard.in/) * bookmark managers * [Dropbox](https://www.dropbox.com/) * backup, sharing and some crude collaboration and version control ## Other similar listings * http://www.force11.org/tools ## Meta This text is in [Markdown](http://daringfireball.net/projects/markdown), put on https://gist.github.com/ (https://gist.github.com/stared/9130888) (its raw text is [here](https://gist.githubusercontent.com/stared/9130888/raw/software_for_scientists.md)). Feel invited to collaborate. ### By Original version collaboratively edited on http://titanpad.com/x1AgPmeWX1 by: * [Piotr Migdał](http://migdal.wikidot.com) (author and the maintainter) * Thomas Kluyver * [Marek Stępniowski](http://stepniowski.com) * Vasily Sochinsky * Florence Piron * Marta Czarnocka-Cieciura * [Krzysztof Zieleniewski](http://kwzieleniewski.wikidot.com/) * Le * [Przemek Biecek](http://smarterpoland.pl/) * [Carolina Odman-Govender](http://www.carolune.org/) * Marcin Kurczych * David Ketcheson * [Steven Byrnes](http://sjbyrnes.com) * write your name (even if you contributed a single character :)) use name, pseudonym or increment the anonumous counter: * ...and 2 Anonymous Contributors. ### Intro note from the TitanPad file YOU ARE INVITED TO EDIT! :) DO: * Add programs you use and recommend * Fix mistakes and omissions by others. :) DON'T: * Throw a pile of random programs (it is not a complete list of software for X - it is a recommendation list) Additional pluses for: * `[name](link)` * comments on status (e.g. open source) * one sentence of description what's that and what's that good for * links to tutorials or other resources (esp. for the academic usage) * or links to good examples of usage * adding categories, their short intros or general links * marking explitly if it only works under some OS Please take yourself time to read http://titanpad.com/ep/pro-help/#deletionpolicy (I will put it as a GitHub gist after)