forked from materialsproject/pymatgen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pymatgen.analysis.molecule_matcher.html
339 lines (309 loc) · 21.5 KB
/
pymatgen.analysis.molecule_matcher.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pymatgen.analysis.molecule_matcher module — pymatgen 2019.5.1 documentation</title>
<link rel="stylesheet" href="_static/proBlue.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link rel="shortcut icon" href="_static/favicon.ico"/>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-33990148-1']);
_gaq.push(['_trackPageview']);
</script>
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">pymatgen 2019.5.1 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-pymatgen.analysis.molecule_matcher">
<span id="pymatgen-analysis-molecule-matcher-module"></span><h1>pymatgen.analysis.molecule_matcher module<a class="headerlink" href="#module-pymatgen.analysis.molecule_matcher" title="Permalink to this headline">¶</a></h1>
<p>This module provides classes to perform fitting of molecule with arbitrary
atom orders.
This module is supposed to perform exact comparisons without the atom order
correspondence prerequisite, while molecule_structure_comparator is supposed
to do rough comparisons with the atom order correspondence prerequisite.</p>
<dl class="class">
<dt id="pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper">
<em class="property">class </em><code class="descname">AbstractMolAtomMapper</code><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#AbstractMolAtomMapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">monty.json.MSONable</span></code></p>
<p>Abstract molecular atom order mapping class. A mapping will be able to
find the uniform atom order of two molecules that can pair the
geometrically equivalent atoms.</p>
<dl class="classmethod">
<dt id="pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper.from_dict">
<em class="property">classmethod </em><code class="descname">from_dict</code><span class="sig-paren">(</span><em>d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#AbstractMolAtomMapper.from_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper.from_dict" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper.get_molecule_hash">
<code class="descname">get_molecule_hash</code><span class="sig-paren">(</span><em>mol</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#AbstractMolAtomMapper.get_molecule_hash"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper.get_molecule_hash" title="Permalink to this definition">¶</a></dt>
<dd><p>Defines a hash for molecules. This allows molecules to be grouped
efficiently for comparison.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mol</strong> – The molecule. OpenBabel OBMol or pymatgen Molecule object</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A hashable object. Examples can be string formulas, etc.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper.uniform_labels">
<code class="descname">uniform_labels</code><span class="sig-paren">(</span><em>mol1</em>, <em>mol2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#AbstractMolAtomMapper.uniform_labels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper.uniform_labels" title="Permalink to this definition">¶</a></dt>
<dd><p>Pair the geometrically equivalent atoms of the molecules.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mol1</strong> – First molecule. OpenBabel OBMol or pymatgen Molecule object.</p></li>
<li><p><strong>mol2</strong> – Second molecule. OpenBabel OBMol or pymatgen Molecule object.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>(list1, list2) if uniform atom order is found. list1 and list2
are for mol1 and mol2, respectively. Their length equal
to the number of atoms. They represents the uniform atom order
of the two molecules. The value of each element is the original
atom index in mol1 or mol2 of the current atom in uniform atom
order.
(None, None) if unform atom is not available.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="pymatgen.analysis.molecule_matcher.InchiMolAtomMapper">
<em class="property">class </em><code class="descname">InchiMolAtomMapper</code><span class="sig-paren">(</span><em>angle_tolerance=10.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#InchiMolAtomMapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.InchiMolAtomMapper" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <a class="reference internal" href="#pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper" title="pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper"><code class="xref py py-class docutils literal notranslate"><span class="pre">pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper</span></code></a></p>
<p>Pair atoms by inchi labels.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>angle_tolerance</strong> – Angle threshold to assume linear molecule. In degrees.</p>
</dd>
</dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.as_dict">
<code class="descname">as_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#InchiMolAtomMapper.as_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.as_dict" title="Permalink to this definition">¶</a></dt>
<dd><p>A JSON serializable dict representation of an object.</p>
</dd></dl>
<dl class="classmethod">
<dt id="pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.from_dict">
<em class="property">classmethod </em><code class="descname">from_dict</code><span class="sig-paren">(</span><em>d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#InchiMolAtomMapper.from_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.from_dict" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.get_molecule_hash">
<code class="descname">get_molecule_hash</code><span class="sig-paren">(</span><em>mol</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#InchiMolAtomMapper.get_molecule_hash"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.get_molecule_hash" title="Permalink to this definition">¶</a></dt>
<dd><p>Return inchi as molecular hash</p>
</dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.uniform_labels">
<code class="descname">uniform_labels</code><span class="sig-paren">(</span><em>mol1</em>, <em>mol2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#InchiMolAtomMapper.uniform_labels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.InchiMolAtomMapper.uniform_labels" title="Permalink to this definition">¶</a></dt>
<dd><p>Pair the geometrically equivalent atoms of the molecules.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mol1</strong> – First molecule. OpenBabel OBMol or pymatgen Molecule object.</p></li>
<li><p><strong>mol2</strong> – Second molecule. OpenBabel OBMol or pymatgen Molecule object.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>(list1, list2) if uniform atom order is found. list1 and list2
are for mol1 and mol2, respectively. Their length equal
to the number of atoms. They represents the uniform atom order
of the two molecules. The value of each element is the original
atom index in mol1 or mol2 of the current atom in uniform atom
order.
(None, None) if unform atom is not available.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper">
<em class="property">class </em><code class="descname">IsomorphismMolAtomMapper</code><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#IsomorphismMolAtomMapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <a class="reference internal" href="#pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper" title="pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper"><code class="xref py py-class docutils literal notranslate"><span class="pre">pymatgen.analysis.molecule_matcher.AbstractMolAtomMapper</span></code></a></p>
<p>Pair atoms by isomorphism permutations in the OpenBabel::OBAlign class</p>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.as_dict">
<code class="descname">as_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#IsomorphismMolAtomMapper.as_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.as_dict" title="Permalink to this definition">¶</a></dt>
<dd><p>A JSON serializable dict representation of an object.</p>
</dd></dl>
<dl class="classmethod">
<dt id="pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.from_dict">
<em class="property">classmethod </em><code class="descname">from_dict</code><span class="sig-paren">(</span><em>d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#IsomorphismMolAtomMapper.from_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.from_dict" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.get_molecule_hash">
<code class="descname">get_molecule_hash</code><span class="sig-paren">(</span><em>mol</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#IsomorphismMolAtomMapper.get_molecule_hash"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.get_molecule_hash" title="Permalink to this definition">¶</a></dt>
<dd><p>Return inchi as molecular hash</p>
</dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.uniform_labels">
<code class="descname">uniform_labels</code><span class="sig-paren">(</span><em>mol1</em>, <em>mol2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#IsomorphismMolAtomMapper.uniform_labels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.IsomorphismMolAtomMapper.uniform_labels" title="Permalink to this definition">¶</a></dt>
<dd><p>Pair the geometrically equivalent atoms of the molecules.
Calculate RMSD on all possible isomorphism mappings and return mapping
with the least RMSD</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mol1</strong> – First molecule. OpenBabel OBMol or pymatgen Molecule object.</p></li>
<li><p><strong>mol2</strong> – Second molecule. OpenBabel OBMol or pymatgen Molecule object.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>(list1, list2) if uniform atom order is found. list1 and list2
are for mol1 and mol2, respectively. Their length equal
to the number of atoms. They represents the uniform atom order
of the two molecules. The value of each element is the original
atom index in mol1 or mol2 of the current atom in uniform atom
order.
(None, None) if unform atom is not available.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="pymatgen.analysis.molecule_matcher.MoleculeMatcher">
<em class="property">class </em><code class="descname">MoleculeMatcher</code><span class="sig-paren">(</span><em>tolerance=0.01</em>, <em>mapper=<pymatgen.analysis.molecule_matcher.InchiMolAtomMapper object></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#MoleculeMatcher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.MoleculeMatcher" title="Permalink to this definition">¶</a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">monty.json.MSONable</span></code></p>
<p>Class to match molecules and identify whether molecules are the same.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>tolerance</strong> – RMSD difference threshold whether two molecules are
different</p></li>
<li><p><strong>mapper</strong> – MolAtomMapper object that is able to map the atoms of two
molecule to uniform order</p></li>
</ul>
</dd>
</dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.MoleculeMatcher.as_dict">
<code class="descname">as_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#MoleculeMatcher.as_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.MoleculeMatcher.as_dict" title="Permalink to this definition">¶</a></dt>
<dd><p>A JSON serializable dict representation of an object.</p>
</dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.MoleculeMatcher.fit">
<code class="descname">fit</code><span class="sig-paren">(</span><em>mol1</em>, <em>mol2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#MoleculeMatcher.fit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.MoleculeMatcher.fit" title="Permalink to this definition">¶</a></dt>
<dd><p>Fit two molecules.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mol1</strong> – First molecule. OpenBabel OBMol or pymatgen Molecule object</p></li>
<li><p><strong>mol2</strong> – Second molecule. OpenBabel OBMol or pymatgen Molecule object</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A boolean value indicates whether two molecules are the same.</p>
</dd>
</dl>
</dd></dl>
<dl class="classmethod">
<dt id="pymatgen.analysis.molecule_matcher.MoleculeMatcher.from_dict">
<em class="property">classmethod </em><code class="descname">from_dict</code><span class="sig-paren">(</span><em>d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#MoleculeMatcher.from_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.MoleculeMatcher.from_dict" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.MoleculeMatcher.get_rmsd">
<code class="descname">get_rmsd</code><span class="sig-paren">(</span><em>mol1</em>, <em>mol2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#MoleculeMatcher.get_rmsd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.MoleculeMatcher.get_rmsd" title="Permalink to this definition">¶</a></dt>
<dd><p>Get RMSD between two molecule with arbitrary atom order.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>RMSD if topology of the two molecules are the same
Infinite if the topology is different</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="pymatgen.analysis.molecule_matcher.MoleculeMatcher.group_molecules">
<code class="descname">group_molecules</code><span class="sig-paren">(</span><em>mol_list</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pymatgen/analysis/molecule_matcher.html#MoleculeMatcher.group_molecules"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pymatgen.analysis.molecule_matcher.MoleculeMatcher.group_molecules" title="Permalink to this definition">¶</a></dt>
<dd><p>Group molecules by structural equality.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mol_list</strong> – List of OpenBabel OBMol or pymatgen objects</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A list of lists of matched molecules
Assumption: if s1=s2 and s2=s3, then s1=s3
This may not be true for small tolerances.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/pymatgen.analysis.molecule_matcher.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">pymatgen 2019.5.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011, Pymatgen Development Team.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.0.1.
</div>
<div class="footer">This page uses <a href="http://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
</div>
</body>
</html>