Collections:
"babel ... -o svg" - Two "svg" Tag Levels
Why am getting two "svg" tag levels in SVG source code generated by the "babel" command?
✍: FYIcenter.com
If you are using Open Babel 2.4.1 or higher, you will notice that
there are two "svg" tag levels in SVG source code generated by the "babel" command.
The main reason for using two "svg" tag levels for including multiple molecules in a single SVG file so that:
For example, the following command generate a SVG picture contains 66 molecules:
fyicenter$ babel mol-*.sdf multi-molecules.svg 66 molecules converted 1388 audit log messages
If you open the SVG file, multi-molecules.svg, in a text editor, you will see the following two-level "svg" tag structure:
<svg version="1.1" id="topsvg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:cml="http://www.xml-cml.org/schema" x="0" y="0" width="100%" height="100%" viewBox="0 0 100 88"> <title>Multiple Molecules - Open Babel Depiction</title> <rect x="0" y="0" width="100" height="88" fill="white"/> <g transform="translate(0,0)"> <svg width="11.1111" height="11.1111" x="0" y="0" viewBox="0 0 425.571 500.005" font-family="sans-serif" stroke="rgb(0,0,0)" stroke-width="2" stroke-linecap="round"> <line x1="247.8" y1="160.0" x2="282.5" y2="180.0" stroke="rgb(0,0,0)" stroke-width="2.0"/> <line x1="178.6" y1="160.0" x2="155.2" y2="173.5" stroke="rgb(0,0,0)" stroke-width="2.0"/> ... </svg> </g> <g transform="translate(11.111111,0.000000)"> <svg width="11.111111" height="11.111111" x="0" y="0" viewBox="0 0 426.667619 477.075053" font-family="sans-serif" stroke="rgb(0,0,0)" stroke-width="2.000000" stroke-linecap="round"> <line x1="248.0" y1="100.0" x2="282.7" y2="80.0" stroke="rgb(0,0,0)" stroke-width="2.0"/> <line x1="282.7" y1="80.0" x2="306.1" y2="93.5" stroke="rgb(0,0,0)" stroke-width="2.0"/> ... </svg> </g> </svg>
As you can see, the two-level "svg" tag structure works nicely for multiple molecules:
However, for a single molecule, Open Babel still uses this two-level "svg" structure, which is unnecessary and confusing.
Also note that if you have a script that parses SVG files generated from older versions of Open Babel, your script may fail. Because Open Babel 2.3.1 was generating a one-level "svg" structure if there is only one molecule.
⇒ "obabel ... -o svg -xP300" - Scale SVG Image
⇐ "babel -i sdf -o svg" - Custom Atom Positions
2020-07-22, 579👍, 0💬
Popular Posts:
Molecule Summary: ID: FYI-1000039 SMILES: Received at FYIcenter.com on: 2020-04-21
What Are CTfile (Chemical Table File) and CTAB (Connection Table)? CTfile (Chemical Table File) refe...
Where to find FAQ (Frequently Asked Questions) on understanding "babel" Command Line Syntax? Here is...
What is JSME Molecule Editor at FYIcenter.com? FYIcenter.com maintains a version of JSME Molecule Ed...
How to convert Convert SDF to SVG (Scalable Vector Graphics) using Open Babel? I want to see the mol...