3
$\begingroup$

Is there a chemical input format that is-

  1. Supported by Open Babel (and hence supports visualization in avogadro??)
  2. Can represent a bond connecting an atom to its partner in a neighbouring unit cell, for crystals/systems with periodic boundary conditions

Follow up (added later):

I could not understand how cif does it, or cml. But it would be nice if I could get rid of the symmetry folds in the markup given below.

Here is the cif file. The cml output using babel is --

<?xml version="1.0"?>
<molecule id="Calcium titanate" xmlns="http://www.xml-cml.org/schema">
 <crystal>
  <scalar title="a" units="units:angstrom">5.380000</scalar>
  <scalar title="b" units="units:angstrom">5.440000</scalar>
  <scalar title="c" units="units:angstrom">7.639000</scalar>
  <scalar title="alpha" units="units:degree">90.000003</scalar>
  <scalar title="beta" units="units:degree">90.000003</scalar>
  <scalar title="gamma" units="units:degree">90.000003</scalar>
  <symmetry spaceGroup="-P 2c 2ab">
   <transform3>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</transform3>
   <transform3>1 0 0 0.5 0 -1 0 0.5 0 0 -1 0 0 0 0 1</transform3>
   <transform3>-1 0 0 0 0 -1 0 0 0 0 1 0.5 0 0 0 1</transform3>
   <transform3>-1 0 0 0.5 0 1 0 0.5 0 0 -1 0.5 0 0 0 1</transform3>
   <transform3>-1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1</transform3>
   <transform3>-1 0 0 0.5 0 1 0 0.5 0 0 1 0 0 0 0 1</transform3>
   <transform3>1 0 0 0 0 1 0 0 0 0 -1 0.5 0 0 0 1</transform3>
   <transform3>1 0 0 0.5 0 -1 0 0.5 0 0 1 0.5 0 0 0 1</transform3>
  </symmetry>
 </crystal>
 <atomArray>
  <atom id="a1" elementType="Ti" formalCharge="4" xFract="0.000000" yFract="0.500000" zFract="0.000000"/>
  <atom id="a2" elementType="Ca" formalCharge="2" xFract="0.006480" yFract="0.035600" zFract="0.250000"/>
  <atom id="a3" elementType="O" formalCharge="-2" xFract="0.571100" yFract="-0.016100" zFract="0.250000"/>
  <atom id="a4" elementType="O" formalCharge="-2" xFract="0.289700" yFract="0.288800" zFract="0.037300"/>
 </atomArray>
 <bondArray>
  <bond atomRefs2="a1 a4" order="1"/>
  <bond atomRefs2="a4 a2" order="1"/>
 </bondArray>
</molecule>
$\endgroup$
6
$\begingroup$

As the developer of both Open Babel and Avogadro I can say the answer is "not yet."

The main thing isn't the file format. It's that Avogadro at the moment doesn't have support at the moment to show bonds across a unit cell.

I believe there was a patch for that, but it was too slow for typical use: https://github.com/dlonie/avogadro/commits/ENH_intercell_bonds

$\endgroup$
6
  • $\begingroup$ hmm .. but the CIF and CML files i linked to/quoted above seem to generate bonds across the unit cell boundary when I built a supercell, implying to me that the internal representation does support those bonds!! $\endgroup$ Sep 11 '14 at 23:01
  • $\begingroup$ I believe openbabel and avogadro should have tags of their own here. But I do not have enough points to make them. Could you help, if you agree? $\endgroup$ Sep 11 '14 at 23:05
  • $\begingroup$ EDIT: Nope .. I might have been wrong about the CIF and CML files rendering supercells correctly! Thanks for the pointer towards the patch. :) $\endgroup$ Sep 12 '14 at 0:41
  • $\begingroup$ @DebanjanBasu The question for this was raised on meta and for the time being, we do not want to generate too specific tags. The software is already rarely used and more specific ones would be even less used. meta.chemistry.stackexchange.com/q/373/4945 $\endgroup$ Sep 12 '14 at 3:01
  • 1
    $\begingroup$ Generating a supercell should force bond perception in Avogadro (v1.1.x). That is, if there are bonds across the unit cell boundary, creating the explicit atoms in a supercell should also create new bonds. Rendering bonds across a unit cell boundary is a little bit harder, since you have to generate "ghost atoms" (i.e., determine the supercell, but not actually display it). $\endgroup$ Sep 12 '14 at 13:31
2
$\begingroup$

As pointed out by Geoff Hutchinson, this isn't currently possible by Avogadro and OpenBabel - and he should know best ;)

Since you want to visualize a feature of crystalline systems, you might want to have a look at specialized programmes that predominantly/only operate on CIF files. We have used SCHAKAL, written by Egbert Keller, for this purpose in the past.

Out of my mind, I don't remember how it was done. But it can be done, just like almost anything else you can imagine, such as centroid-centroid bonds between rings, etc.

Be warned: SCHAKAL's GUI violates any design rules (even if you apply Klingon standards). Once you have it compiled and running, switch the GUI off and operate it through chains of unituitive one-key shortcut commands. If you have overcome the horrors, you'll be rewarded with a fantastic postscript output in publication quality.

$\endgroup$
1
  • 2
    $\begingroup$ My suggestion would probably be to use CCDC Mercury, which is pretty easy to use, free (as in money) and available for Linux, Windows, and Mac. Since the CCDC is literally in the business of crystal structures, it's probably the best-tested and accurate at handling crystal issues. I recommend it highly. $\endgroup$ Sep 12 '14 at 15:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.