Macs in Chemistry

Insanely Great Science

Scientific Applications under Sierra (Update 1)


Whilst there are many sites that track the compatibility on common desktop applications, it is often difficult to find out information about scientific applications. I’ll update the list regularly and feel free to send in information.

When I compiled a similar lists for Yosemite and El Capitan they proved very popular with 13,000 page views, I hope this page is similarly useful.

4Peaks no reported issues

Avogadro all seems OK

ChemDraw the official line is that it is not supported, even under El Capitan there were reports of copy/paste issues.

BBEdit version 11.6.2 and newer are compatible, recommend against using earlier versions

ChemDoodle no reported issues

DataWarrior requires Java installation

EnzymeX no reported issues

Findings no reported issues

Homebrew, after every update it is worth checking your homebrew installation.

Username$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: /usr/local is not writable.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami) /usr/local

Warning: /usr/local is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. For example, upgrading
to OS X El Capitan has been known to do this. Some versions of the
"InstantOn" component of Airfoil or running Cocktail cleanup/optimizations
are known to do this as well.

You should probably change the ownership and permissions of /usr/local
back to your user account.
sudo chown -R $(whoami) /usr/local

Once corrected you can then type

brew update
brew upgrade

You may get this error

$brew update
/usr/local/Library/ line 32: /usr/local/Library/ENV/scm/git: No such file or directory

simply retyping brew update seems to resolve the issue

If you have previously installed Openbabel using

brew install mcs07/cheminformatics/open-babel --HEAD

The "--HEAD" part means install the latest development version from GitHub. The latest version of OpenBabel is now available so type

brew uninstall mcs07/cheminformatics/open-babel
Uninstalling /usr/local/Cellar/open-babel/HEAD... (309 files, 14.6M)
brew install mcs07/cheminformatics/open-babel

You can check you have the latest version installed by type this in a Terminal window

obabel -V
Open Babel 2.4.0 -- Sep 24 2016 -- 14:01:18

iBabel seems to work fine with the latest version of OpenBabel under Sierra. One advantage to updating to OpenBabel 2.4.0 is that previews now work with Quicklook.


iPython Notebook all working fine

Manuscripts no reported issues

MarvinSketch I had to reinstall Java for Mac OSX this is the last version of Java Apple created to support legacy applications, similarly MarvinSpace and MarvinView.

MOE working fine, XQuartz did not need reinstalling. However the MOE app launcher (icon on the desktop or the dock) does not work because Apple changed some fundamental system components which affects lots of programs not specifically compiled for the newest MacOSXs. Also you cannot double click on a file to open it in MOE. You can still start MOE from the command line


It then works perfectly.

osra crashed with error abort trap: 6. I uninstalled using brew then reinstalled

brew uninstall osra
Uninstalling /usr/local/Cellar/osra/2.0.1... (7 files, 1.6M)
brew install osra

Then worked fine

Papers Mac 3.4.7 (527) is now available! Fixes a couple of problems under Sierra. A crash that can occur when switching PDFs, The search in PDF functionality is restored

R latest version (3.3.1) all seems fine

rdkit installed using home-brew works fine.

Studies no reported issues

UCSF Chimera version 1.11.1 seems to be working fine

Vortex no problems so far, the embedded chemical drawing app Elemental appears to have no issues.

XQuartz did not require reinstallation :-)

I’ll add more updates later.


OpenBabel 2.4.0 released


A major new update to OpenBabel has been released, version 2.4.0 is a significant change and is highly recommended.

New file formats

  • DALTON output files (read only) and DALTON input files (read/write) (Casper Steinmann)
  • JSON format used by ChemDoodle (read/write) (Matt Swain)
  • JSON format used by PubChem (read/write) (Matt Swain)
  • LPMD's atomic configuration file (read/write) (Joaquin Peralta)
  • The format used by the CONTFF and POSFF files in MDFF (read/write) (Kirill Okhotnikov)
  • ORCA output files (read only) and ORCA input files (write only) (Dagmar Lenk)
  • ORCA-AICCM's extended XYZ format (read/write) (Dagmar Lenk)
  • Painter format for custom 2D depictions (write only) (Noel O'Boyle)
  • Siesta output files (read only) (Patrick Avery)
  • Smiley parser for parsing SMILES according to the OpenSMILES specification (read only) (Tim Vandermeersch)
  • STL 3D-printing format (write only) (Matt Harvey)
  • Turbomole AOFORCE output (read only) (Mathias Laurin)
  • A representation of the VDW surface as a point cloud (write only) (Matt Harvey)

New file format capabilities and options

  • AutoDock PDBQT: Options to preserve hydrogens and/or atom names (Matt Harvey)
  • CAR: Improved space group support in .car files (kartlee)
  • CDXML: Read/write isotopes (Roger Sayle)
  • CIF: Extract charges (Kirill Okhotnikov)
  • CIF: Improved support for space-groups and symmetries (Alexandr Fonari)
  • DL_Poly: Cell information is now read (Kirill Okhotnikov)
  • Gaussian FCHK: Parse alpha and beta orbitals (Geoff Hutchison)
  • Gaussian out: Extract true enthalpy of formation, quadrupole, polarizability tensor, electrostatic potential fitting points and potential values, and more (David van der Spoel)
  • MDL Mol: Read in atom class information by default and optionally write it out (Roger Sayle)
  • MDL Mol: Support added for ZBO, ZCH and HYD extensions (Matt Swain)
  • MDL Mol: Implement the MDL valence model on reading (Roger Sayle)
  • MDL SDF: Option to write out an ASCII depiction as a property (Noel O'Boyle)
  • mmCIF: Improved mmCIF reading (Patrick Fuller)
  • mmCIF: Support for atom occupancy and atom_type (Kirill Okhotnikov)
  • Mol2: Option to read UCSF Dock scores (Maciej Wójcikowski)
  • MOPAC: Read z-matrix data and parse (and prefer) ESP charges (Geoff Hutchison)
  • NWChem: Support sequential calculations by optionally overwriting earlier ones (Dmitriy Fomichev)
  • NWChem: Extract info on MEP(IRC), NEB and quadrupole moments (Dmitriy Fomichev)
  • PDB: Read/write PDB insertion codes (Steffen Möller)
  • PNG: Options to crop the margin, and control the background and bond colors (Fredrik Wallner)
  • PQR: Use a stored atom radius (if present) in preference to the generic element radius (Zhixiong Zhao)
  • PWSCF: Extend parsing of lattice vectors (David Lonie)
  • PWSCF: Support newer versions, and the 'alat' term (Patrick Avery)
  • SVG: Option to avoid addition of hydrogens to fill valence (Lee-Ping)
  • SVG: Option to draw as ball-and-stick (Jean-Noël Avila)
  • VASP: Vibration intensities are calculated (Christian Neiss, Mathias Laurin)
  • VASP: Custom atom element sorting on writing (Kirill Okhotnikov)

Other new features and improvements

  • 2D layout: Improved the choice of which bonds to designate as hash/wedge bonds around a stereo center (Craig James)
  • 3D builder: Use bond length corrections based on bond order from Pyykko and Atsumi ( (Geoff Hutchison)
  • 3D generation: "--gen3d", allow user to specify the desired speed/quality (Geoff Hutchison)
  • Aromaticity: Improved detection (Geoff Hutchison)
  • Canonicalisation: Changed behaviour for multi-molecule SMILES. Now each molecule is canonicalized individually and then sorted. (Geoff Hutchison/Tim Vandermeersch)
  • Charge models: "--print" writes the partial charges to standard output after calculation (Geoff Hutchison)
  • Conformations: Confab, the systematic conformation generator, has been incorporated into Open Babel (David Hall/Noel O'Boyle)
  • Conformations: Initial support for ring rotamer sampling (Geoff Hutchison)
  • Conformer searching: Performance improvement by avoiding gradient calculation and optimising the default parameters (Geoff Hutchison)
  • EEM charge model: Extend to use additional params from (Tomáš Raček)
  • FillUnitCell operation: Improved behavior (Patrick Fuller)
  • Find duplicates: The "--duplicate" option can now return duplicates instead of just removing them (Chris Morley)
  • GAFF forcefield: Atom types updated to match Wang et al. J. Comp. Chem. 2004, 25, 1157 (Mohammad Ghahremanpour)
  • New charge model: EQeq crystal charge equilibration method (a speed-optimized crystal-focused charge estimator, (David Lonie)
  • New charge model: "fromfile" reads partial charges from a named file (Matt Harvey)
  • New conversion operation: "changecell", for changing cell dimensions (Kirill Okhotnikov)
  • New command-line utility: "obthermo", for extracting thermochemistry data from QM calculations (David van der Spoel)
  • New fingerprint: ECFP (Geoff Hutchison/Noel O'Boyle/Roger Sayle)
  • OBConversion: Improvements and API changes to deal with a long-standing memory leak (David Koes)
  • OBAtom::IsHBondAcceptor(): Definition updated to take into account the atom environment (Stefano Forli)
  • Performance: Faster ring-finding algorithm (Roger Sayle)
  • Performance: Faster fingerprint similarity calculations if compiled with -DOPTIMIZE_NATIVE=ON (Noel O'Boyle/Jeff Janes)
  • SMARTS matching: The "-s" option now accepts an integer specifying the number of matches required (Chris Morley)
  • UFF: Update to use traditional Rappe angle potential (Geoff Hutchison)

Language bindings

  • Bindings: Support compiling only the bindings against system libopenbabel (Reinis Danne)
  • Java bindings: Add example Scala program using the Java bindings (Reinis Danne)
  • New bindings: PHP (Maciej Wójcikowski)
  • PHP bindings: BaPHPel, a simplified interface (Maciej Wójcikowski)
  • Python bindings: Add 3D depiction support for Jupyter notebook (Patrick Fuller)
  • Python bindings, Pybel: calccharges() and convertdbonds() added (Patrick Fuller, Björn Grüning)
  • Python bindings, Pybel: compress output if filename ends with .gz (Maciej Wójcikowski)
  • Python bindings, Pybel: Residue support (Maciej Wójcikowski)

Development/Build/Install Improvements

  • Version control: move to git and GitHub from subversion and SourceForge
  • Continuous integration: Travis for Linux builds and Appveyor for Windows builds (David Lonie and Noel O'Boyle)
  • Python installer: Improvements to the Python installer and "pip install openbabel" (David Hall, Matt Swain, Joshua Swamidass)
  • Compilation speedup: Speed up compilation by combining the tests (Noel O'Boyle)
  • MacOSX: Support compiling with libc++ on MacOSX (Matt Swain)


Green solvents app updated


The Green Solvents app has been updated.

You can read the full story behind the app in this blog post.

There are now over 400 apps in the MobileScience database.


Chemistry Keyboard updated


The Chemistry Keyboard is a specialised Keyboard Extension for anyone who needs to enter chemical formulae. The latest update brings compatibility with iOS10 and a tidied up UI.


There is also a Math keyboard and a Science keyboard


Swift 3.0 released


The latest version of swift has been released.

Swift 3 is a source-breaking release, largely due to the changes in SE-0005 and SE-0006. These changes not only impact the names of the Standard Library APIs, but also completely change how Objective-C APIs (particularly from Cocoa) import into Swift. Many of the changes are largely mechanical, but they can be numerous in a typical Swift project. To help with moving to Swift 3, Xcode 8.0 contains a code migrator that can automatically handle many of the need source changes. There is also a migration guide available to guide you through many of the changes — especially through the ones that are less mechanical and require more direct scrutiny.

Thus there is better translation of Objective-C APIs into Swift, meaning that code imported from Objective-C and translated into Swift will be more readable and Swift-like. The bad news is any code previously imported from Objective-C into Swift will not work in Swift 3; it will need to be re-imported.

There was also a blog post describing how to work with JSON in swift, this is particularly important if your app communicates with a web application, information returned from the server is more often than not formatted as JSON.

import Foundation

let data: Data // received from a network request, for example
let json = try? JSONSerialization.jsonObject(with: data, options: [])