Commit 7f820449 by Maarten L. Hekkelman

formatting

parent ecb2cf5f
/*- /*-
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
* *
* Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer * list of conditions and the following disclaimer
* 2. Redistributions in binary form must reproduce the above copyright notice, * 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation * this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. * and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
...@@ -29,150 +29,151 @@ ...@@ -29,150 +29,151 @@
#pragma once #pragma once
#include <cstdint> #include <cstdint>
#include <string>
#include <stdexcept> #include <stdexcept>
#include <string>
namespace mmcif namespace mmcif
{ {
enum AtomType : uint8_t enum AtomType : uint8_t
{ {
Nn = 0, // Unknown Nn = 0, // Unknown
H = 1, // Hydro­gen H = 1, // Hydro­gen
He = 2, // He­lium He = 2, // He­lium
Li = 3, // Lith­ium Li = 3, // Lith­ium
Be = 4, // Beryl­lium Be = 4, // Beryl­lium
B = 5, // Boron B = 5, // Boron
C = 6, // Carbon C = 6, // Carbon
N = 7, // Nitro­gen N = 7, // Nitro­gen
O = 8, // Oxy­gen O = 8, // Oxy­gen
F = 9, // Fluor­ine F = 9, // Fluor­ine
Ne = 10, // Neon Ne = 10, // Neon
Na = 11, // So­dium Na = 11, // So­dium
Mg = 12, // Magne­sium Mg = 12, // Magne­sium
Al = 13, // Alumin­ium Al = 13, // Alumin­ium
Si = 14, // Sili­con Si = 14, // Sili­con
P = 15, // Phos­phorus P = 15, // Phos­phorus
S = 16, // Sulfur S = 16, // Sulfur
Cl = 17, // Chlor­ine Cl = 17, // Chlor­ine
Ar = 18, // Argon Ar = 18, // Argon
K = 19, // Potas­sium K = 19, // Potas­sium
Ca = 20, // Cal­cium Ca = 20, // Cal­cium
Sc = 21, // Scan­dium Sc = 21, // Scan­dium
Ti = 22, // Tita­nium Ti = 22, // Tita­nium
V = 23, // Vana­dium V = 23, // Vana­dium
Cr = 24, // Chrom­ium Cr = 24, // Chrom­ium
Mn = 25, // Manga­nese Mn = 25, // Manga­nese
Fe = 26, // Iron Fe = 26, // Iron
Co = 27, // Cobalt Co = 27, // Cobalt
Ni = 28, // Nickel Ni = 28, // Nickel
Cu = 29, // Copper Cu = 29, // Copper
Zn = 30, // Zinc Zn = 30, // Zinc
Ga = 31, // Gallium Ga = 31, // Gallium
Ge = 32, // Germa­nium Ge = 32, // Germa­nium
As = 33, // Arsenic As = 33, // Arsenic
Se = 34, // Sele­nium Se = 34, // Sele­nium
Br = 35, // Bromine Br = 35, // Bromine
Kr = 36, // Kryp­ton Kr = 36, // Kryp­ton
Rb = 37, // Rubid­ium Rb = 37, // Rubid­ium
Sr = 38, // Stront­ium Sr = 38, // Stront­ium
Y = 39, // Yttrium Y = 39, // Yttrium
Zr = 40, // Zirco­nium Zr = 40, // Zirco­nium
Nb = 41, // Nio­bium Nb = 41, // Nio­bium
Mo = 42, // Molyb­denum Mo = 42, // Molyb­denum
Tc = 43, // Tech­netium Tc = 43, // Tech­netium
Ru = 44, // Ruthe­nium Ru = 44, // Ruthe­nium
Rh = 45, // Rho­dium Rh = 45, // Rho­dium
Pd = 46, // Pallad­ium Pd = 46, // Pallad­ium
Ag = 47, // Silver Ag = 47, // Silver
Cd = 48, // Cad­mium Cd = 48, // Cad­mium
In = 49, // Indium In = 49, // Indium
Sn = 50, // Tin Sn = 50, // Tin
Sb = 51, // Anti­mony Sb = 51, // Anti­mony
Te = 52, // Tellurium Te = 52, // Tellurium
I = 53, // Iodine I = 53, // Iodine
Xe = 54, // Xenon Xe = 54, // Xenon
Cs = 55, // Cae­sium Cs = 55, // Cae­sium
Ba = 56, // Ba­rium Ba = 56, // Ba­rium
La = 57, // Lan­thanum La = 57, // Lan­thanum
Hf = 72, // Haf­nium Hf = 72, // Haf­nium
Ta = 73, // Tanta­lum Ta = 73, // Tanta­lum
W = 74, // Tung­sten W = 74, // Tung­sten
Re = 75, // Rhe­nium Re = 75, // Rhe­nium
Os = 76, // Os­mium Os = 76, // Os­mium
Ir = 77, // Iridium Ir = 77, // Iridium
Pt = 78, // Plat­inum Pt = 78, // Plat­inum
Au = 79, // Gold Au = 79, // Gold
Hg = 80, // Mer­cury Hg = 80, // Mer­cury
Tl = 81, // Thallium Tl = 81, // Thallium
Pb = 82, // Lead Pb = 82, // Lead
Bi = 83, // Bis­muth Bi = 83, // Bis­muth
Po = 84, // Polo­nium Po = 84, // Polo­nium
At = 85, // Asta­tine At = 85, // Asta­tine
Rn = 86, // Radon Rn = 86, // Radon
Fr = 87, // Fran­cium Fr = 87, // Fran­cium
Ra = 88, // Ra­dium Ra = 88, // Ra­dium
Ac = 89, // Actin­ium Ac = 89, // Actin­ium
Rf = 104, // Ruther­fordium Rf = 104, // Ruther­fordium
Db = 105, // Dub­nium Db = 105, // Dub­nium
Sg = 106, // Sea­borgium Sg = 106, // Sea­borgium
Bh = 107, // Bohr­ium Bh = 107, // Bohr­ium
Hs = 108, // Has­sium Hs = 108, // Has­sium
Mt = 109, // Meit­nerium Mt = 109, // Meit­nerium
Ds = 110, // Darm­stadtium Ds = 110, // Darm­stadtium
Rg = 111, // Roent­genium Rg = 111, // Roent­genium
Cn = 112, // Coper­nicium Cn = 112, // Coper­nicium
Nh = 113, // Nihon­ium Nh = 113, // Nihon­ium
Fl = 114, // Flerov­ium Fl = 114, // Flerov­ium
Mc = 115, // Moscov­ium Mc = 115, // Moscov­ium
Lv = 116, // Liver­morium Lv = 116, // Liver­morium
Ts = 117, // Tenness­ine Ts = 117, // Tenness­ine
Og = 118, // Oga­nesson Og = 118, // Oga­nesson
Ce = 58, // Cerium Ce = 58, // Cerium
Pr = 59, // Praseo­dymium Pr = 59, // Praseo­dymium
Nd = 60, // Neo­dymium Nd = 60, // Neo­dymium
Pm = 61, // Prome­thium Pm = 61, // Prome­thium
Sm = 62, // Sama­rium Sm = 62, // Sama­rium
Eu = 63, // Europ­ium Eu = 63, // Europ­ium
Gd = 64, // Gadolin­ium Gd = 64, // Gadolin­ium
Tb = 65, // Ter­bium Tb = 65, // Ter­bium
Dy = 66, // Dyspro­sium Dy = 66, // Dyspro­sium
Ho = 67, // Hol­mium Ho = 67, // Hol­mium
Er = 68, // Erbium Er = 68, // Erbium
Tm = 69, // Thulium Tm = 69, // Thulium
Yb = 70, // Ytter­bium Yb = 70, // Ytter­bium
Lu = 71, // Lute­tium Lu = 71, // Lute­tium
Th = 90, // Thor­ium Th = 90, // Thor­ium
Pa = 91, // Protac­tinium Pa = 91, // Protac­tinium
U = 92, // Ura­nium U = 92, // Ura­nium
Np = 93, // Neptu­nium Np = 93, // Neptu­nium
Pu = 94, // Pluto­nium Pu = 94, // Pluto­nium
Am = 95, // Ameri­cium Am = 95, // Ameri­cium
Cm = 96, // Curium Cm = 96, // Curium
Bk = 97, // Berkel­ium Bk = 97, // Berkel­ium
Cf = 98, // Califor­nium Cf = 98, // Califor­nium
Es = 99, // Einstei­nium Es = 99, // Einstei­nium
Fm = 100, // Fer­mium Fm = 100, // Fer­mium
Md = 101, // Mende­levium Md = 101, // Mende­levium
No = 102, // Nobel­ium No = 102, // Nobel­ium
Lr = 103, // Lawren­cium Lr = 103, // Lawren­cium
D = 129, // Deuterium D = 129, // Deuterium
}; };
// -------------------------------------------------------------------- // --------------------------------------------------------------------
// AtomTypeInfo // AtomTypeInfo
enum RadiusType { enum RadiusType
{
eRadiusCalculated, eRadiusCalculated,
eRadiusEmpirical, eRadiusEmpirical,
eRadiusCovalentEmpirical, eRadiusCovalentEmpirical,
...@@ -188,12 +189,12 @@ enum RadiusType { ...@@ -188,12 +189,12 @@ enum RadiusType {
struct AtomTypeInfo struct AtomTypeInfo
{ {
AtomType type; AtomType type;
std::string name; std::string name;
std::string symbol; std::string symbol;
float weight; float weight;
bool metal; bool metal;
float radii[eRadiusTypeCount]; float radii[eRadiusTypeCount];
}; };
extern const AtomTypeInfo kKnownAtoms[]; extern const AtomTypeInfo kKnownAtoms[];
...@@ -205,25 +206,25 @@ class AtomTypeTraits ...@@ -205,25 +206,25 @@ class AtomTypeTraits
{ {
public: public:
AtomTypeTraits(AtomType a); AtomTypeTraits(AtomType a);
AtomTypeTraits(const std::string& symbol); AtomTypeTraits(const std::string &symbol);
AtomType type() const { return mInfo->type; } AtomType type() const { return mInfo->type; }
std::string name() const { return mInfo->name; } std::string name() const { return mInfo->name; }
std::string symbol() const { return mInfo->symbol; } std::string symbol() const { return mInfo->symbol; }
float weight() const { return mInfo->weight; } float weight() const { return mInfo->weight; }
bool isMetal() const { return mInfo->metal; } bool isMetal() const { return mInfo->metal; }
static bool isElement(const std::string& symbol); static bool isElement(const std::string &symbol);
static bool isMetal(const std::string& symbol); static bool isMetal(const std::string &symbol);
float radius(RadiusType type = eRadiusSingleBond) const float radius(RadiusType type = eRadiusSingleBond) const
{ {
if (type >= eRadiusTypeCount) if (type >= eRadiusTypeCount)
throw std::invalid_argument("invalid radius requested"); throw std::invalid_argument("invalid radius requested");
return mInfo->radii[type] / 100.f; return mInfo->radii[type] / 100.f;
} }
// data type encapsulating the Waasmaier & Kirfel scattering factors // data type encapsulating the Waasmaier & Kirfel scattering factors
// in a simplified form (only a and b). // in a simplified form (only a and b).
// Added the electrion scattering factors as well // Added the electrion scattering factors as well
...@@ -231,15 +232,18 @@ class AtomTypeTraits ...@@ -231,15 +232,18 @@ class AtomTypeTraits
{ {
double a[6], b[6]; double a[6], b[6];
}; };
// to get the Cval and Siva values, use this constant as charge: // to get the Cval and Siva values, use this constant as charge:
enum { kWKSFVal = -99 }; enum
{
const SFData& wksf(int charge = 0) const; kWKSFVal = -99
const SFData& elsf() const; };
const SFData &wksf(int charge = 0) const;
const SFData &elsf() const;
private: private:
const struct AtomTypeInfo* mInfo; const struct AtomTypeInfo *mInfo;
}; };
} } // namespace mmcif
/*- /*-
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
* *
* Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer * list of conditions and the following disclaimer
* 2. Redistributions in binary form must reproduce the above copyright notice, * 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation * this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. * and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
...@@ -26,9 +26,9 @@ ...@@ -26,9 +26,9 @@
#pragma once #pragma once
#include <unordered_map>
#include <filesystem> #include <filesystem>
#include <stdexcept> #include <stdexcept>
#include <unordered_map>
#include "cif++/Structure.hpp" #include "cif++/Structure.hpp"
...@@ -38,39 +38,40 @@ namespace mmcif ...@@ -38,39 +38,40 @@ namespace mmcif
class BondMapException : public std::runtime_error class BondMapException : public std::runtime_error
{ {
public: public:
BondMapException(const std::string& msg) BondMapException(const std::string &msg)
: runtime_error(msg) {} : runtime_error(msg)
{
}
}; };
class BondMap class BondMap
{ {
public: public:
BondMap(const Structure& p); BondMap(const Structure &p);
BondMap(const BondMap&) = delete; BondMap(const BondMap &) = delete;
BondMap& operator=(const BondMap&) = delete; BondMap &operator=(const BondMap &) = delete;
bool operator()(const Atom& a, const Atom& b) const bool operator()(const Atom &a, const Atom &b) const
{ {
return isBonded(index.at(a.id()), index.at(b.id())); return isBonded(index.at(a.id()), index.at(b.id()));
} }
bool is1_4(const Atom& a, const Atom& b) const bool is1_4(const Atom &a, const Atom &b) const
{ {
uint32_t ixa = index.at(a.id()); uint32_t ixa = index.at(a.id());
uint32_t ixb = index.at(b.id()); uint32_t ixb = index.at(b.id());
return bond_1_4.count(key(ixa, ixb)); return bond_1_4.count(key(ixa, ixb));
} }
// links coming from the struct_conn records: // links coming from the struct_conn records:
std::vector<std::string> linked(const Atom& a) const; std::vector<std::string> linked(const Atom &a) const;
// This list of atomID's is comming from either CCD or the CCP4 dictionaries loaded // This list of atomID's is comming from either CCD or the CCP4 dictionaries loaded
static std::vector<std::string> atomIDsForCompound(const std::string& compoundID); static std::vector<std::string> atomIDsForCompound(const std::string &compoundID);
private:
private:
bool isBonded(uint32_t ai, uint32_t bi) const bool isBonded(uint32_t ai, uint32_t bi) const
{ {
return bond.count(key(ai, bi)) != 0; return bond.count(key(ai, bi)) != 0;
...@@ -82,20 +83,19 @@ class BondMap ...@@ -82,20 +83,19 @@ class BondMap
std::swap(a, b); std::swap(a, b);
return static_cast<uint64_t>(a) | (static_cast<uint64_t>(b) << 32); return static_cast<uint64_t>(a) | (static_cast<uint64_t>(b) << 32);
} }
std::tuple<uint32_t,uint32_t> dekey(uint64_t k) const std::tuple<uint32_t, uint32_t> dekey(uint64_t k) const
{ {
return std::make_tuple( return std::make_tuple(
static_cast<uint32_t>(k >> 32), static_cast<uint32_t>(k >> 32),
static_cast<uint32_t>(k) static_cast<uint32_t>(k));
);
} }
uint32_t dim; uint32_t dim;
std::unordered_map<std::string,uint32_t> index; std::unordered_map<std::string, uint32_t> index;
std::set<uint64_t> bond, bond_1_4; std::set<uint64_t> bond, bond_1_4;
std::map<std::string,std::set<std::string>> link; std::map<std::string, std::set<std::string>> link;
}; };
} } // namespace mmcif
...@@ -175,860 +175,432 @@ struct SFDataArrayElement ...@@ -175,860 +175,432 @@ struct SFDataArrayElement
}; };
SFDataArrayElement kWKSFData[] = { SFDataArrayElement kWKSFData[] = {
{ H, 0, {{ 0.413048, 0.294953, 0.187491, 0.080701, 0.023736, 0.000049},
//{ H, 0, {{ 0.493002, 0.322912, 0.140191, 0.040810, 0.003038 }, { 15.569946, 32.398468, 5.711404, 61.889874, 1.334118, 0.000000}}},
// { 10.510900, 26.125700, 3.142360, 57.799698, 0.000000 }}}, { He, 0, {{ 0.732354, 0.753896, 0.283819, 0.190003, 0.039139, 0.000487},
////{ D, 0, {{ 0.493002, 0.322912, 0.140191, 0.040810, 0.003038 }, { 11.553918, 4.595831, 1.546299, 26.463964, 0.377523, 0.000000}}},
//// { 10.510900, 26.125700, 3.142360, 57.799698, 0.000000 }}}, { Li, 0, {{ 0.974637, 0.158472, 0.811855, 0.262416, 0.790108, 0.002542},
//{ H, -1, {{ 0.897661, 0.565616, 0.415815, 0.116973, 0.002389 }, { 4.334946, 0.342451, 97.102966,201.363831, 1.409234, 0.000000}}},
// { 53.136799, 15.187000, 186.575989, 3.567090, 0.000000 }}}, { Be, 0, {{ 1.533712, 0.638283, 0.601052, 0.106139, 1.118414, 0.002511},
//{ He, 0, {{ 0.873400, 0.630900, 0.311200, 0.178000, 0.006400 }, { 42.662079, 0.595420, 99.106499, 0.151340, 1.843093, 0.000000}}},
// { 9.103700, 3.356800, 22.927601, 0.982100, 0.000000 }}}, { B, 0, {{ 2.085185, 1.064580, 1.062788, 0.140515, 0.641784, 0.003823},
//{ Li, 0, {{ 1.128200, 0.750800, 0.617500, 0.465300, 0.037700 }, { 23.494068, 1.137894, 61.238976, 0.114886, 0.399036, 0.000000}}},
// { 3.954600, 1.052400, 85.390503, 168.261002, 0.000000 }}}, { C, 0, {{ 2.657506, 1.078079, 1.490909, -4.241070, 0.713791, 4.297983},
//{ Li, +1, {{ 0.696800, 0.788800, 0.341400, 0.156300, 0.016700 }, { 14.780758, 0.776775, 42.086842, -0.000294, 0.239535, 0.000000}}},
// { 4.623700, 1.955700, 0.631600, 10.095300, 0.000000 }}}, { N, 0, {{ 11.893780, 3.277479, 1.858092, 0.858927, 0.912985,-11.804902},
//{ Be, 0, {{ 1.591900, 1.127800, 0.539100, 0.702900, 0.038500 }, { 0.000158, 10.232723, 30.344690, 0.656065, 0.217287, 0.000000}}},
// { 43.642700, 1.862300, 103.483002, 0.542000, 0.000000 }}}, { O, 0, {{ 2.960427, 2.508818, 0.637853, 0.722838, 1.142756, 0.027014},
//{ Be, +2, {{ 6.260300, 0.884900, 0.799300, 0.164700, -6.109200 }, { 14.182259, 5.936858, 0.112726, 34.958481, 0.390240, 0.000000}}},
// { 0.002700, 0.831300, 2.275800, 5.114600, 0.000000 }}}, { F, 0, {{ 3.511943, 2.772244, 0.678385, 0.915159, 1.089261, 0.032557},
//{ B, 0, {{ 2.054500, 1.332600, 1.097900, 0.706800, -0.193200 }, { 10.687859, 4.380466, 0.093982, 27.255203, 0.313066, 0.000000}}},
// { 23.218500, 1.021000, 60.349800, 0.140300, 0.000000 }}}, { Ne, 0, {{ 4.183749, 2.905726, 0.520513, 1.135641, 1.228065, 0.025576},
//{ C, 0, {{ 2.310000, 1.020000, 1.588600, 0.865000, 0.215600 }, { 8.175457, 3.252536, 0.063295, 21.813910, 0.224952, 0.000000}}},
// { 20.843899, 10.207500, 0.568700, 51.651199, 0.000000 }}}, { Na, 0, {{ 4.910127, 3.081783, 1.262067, 1.098938, 0.560991, 0.079712},
//{ C, AtomTypeTraits::kWKSFVal, { 3.281434, 9.119178, 0.102763,132.013947, 0.405878, 0.000000}}},
// {{ 2.260690, 1.561650, 1.050750, 0.839259, 0.286977 }, { Mg, 0, {{ 4.708971, 1.194814, 1.558157, 1.170413, 3.239403, 0.126842},
// { 22.690701, 0.656665, 9.756180, 55.594898, 0.000000 }}}, { 4.875207,108.506081, 0.111516, 48.292408, 1.928171, 0.000000}}},
//{ N, 0, {{ 12.212600, 3.132200, 2.012500, 1.166300, -11.528999 }, { Al, 0, {{ 4.730796, 2.313951, 1.541980, 1.117564, 3.154754, 0.139509},
// { 0.005700, 9.893300, 28.997499, 0.582600, 0.000000 }}}, { 3.628931, 43.051167, 0.095960,108.932388, 1.555918, 0.000000}}},
//{ O, 0, {{ 3.048500, 2.286800, 1.546300, 0.867000, 0.250800 }, { Si, 0, {{ 5.275329, 3.191038, 1.511514, 1.356849, 2.519114, 0.145073},
// { 13.277100, 5.701100, 0.323900, 32.908897, 0.000000 }}}, { 2.631338, 33.730728, 0.081119, 86.288643, 1.170087, 0.000000}}},
//{ O, -1, {{ 4.191600, 1.639690, 1.526730, -20.306999, 21.941200 }, { P, 0, {{ 1.950541, 4.146930, 1.494560, 1.522042, 5.729711, 0.155233},
// { 12.857300, 4.172360, 47.017899, -0.014040, 0.000000 }}}, { 0.908139, 27.044952, 0.071280, 67.520187, 1.981173, 0.000000}}},
//{ F, 0, {{ 3.539200, 2.641200, 1.517000, 1.024300, 0.277600 }, { S, 0, {{ 6.372157, 5.154568, 1.473732, 1.635073, 1.209372, 0.154722},
// { 10.282499, 4.294400, 0.261500, 26.147600, 0.000000 }}}, { 1.514347, 22.092527, 0.061373, 55.445175, 0.646925, 0.000000}}},
//{ F, -1, {{ 3.632200, 3.510570, 1.260640, 0.940706, 0.653396 }, { Cl, 0, {{ 1.446071, 6.870609, 6.151801, 1.750347, 0.634168, 0.146773},
// { 5.277560, 14.735300, 0.442258, 47.343700, 0.000000 }}}, { 0.052357, 1.193165, 18.343416, 46.398396, 0.401005, 0.000000}}},
//{ Ne, 0, {{ 3.955300, 3.112500, 1.454600, 1.125100, 0.351500 }, { Ar, 0, {{ 7.188004, 6.638454, 0.454180, 1.929593, 1.523654, 0.265954},
// { 8.404200, 3.426200, 0.230600, 21.718399, 0.000000 }}}, { 0.956221, 15.339877, 15.339862, 39.043823, 0.062409, 0.000000}}},
//{ Na, 0, {{ 4.762600, 3.173600, 1.267400, 1.112800, 0.676000 }, { K, 0, {{ 8.163991, 7.146945, 1.070140, 0.877316, 1.486434, 0.253614},
// { 3.285000, 8.842199, 0.313600, 129.423996, 0.000000 }}}, { 12.816323, 0.808945,210.327011, 39.597652, 0.052821, 0.000000}}},
//{ Na, +1, {{ 3.256500, 3.936200, 1.399800, 1.003200, 0.404000 }, { Ca, 0, {{ 8.593655, 1.477324, 1.436254, 1.182839, 7.113258, 0.196255},
// { 2.667100, 6.115300, 0.200100, 14.039000, 0.000000 }}}, { 10.460644, 0.041891, 81.390381,169.847839, 0.688098, 0.000000}}},
//{ Mg, 0, {{ 5.420400, 2.173500, 1.226900, 2.307300, 0.858400 }, { Sc, 0, {{ 1.476566, 1.487278, 1.600187, 9.177463, 7.099750, 0.157765},
// { 2.827500, 79.261101, 0.380800, 7.193700, 0.000000 }}}, { 53.131023, 0.035325,137.319489, 9.098031, 0.602102, 0.000000}}},
//{ Mg, +2, {{ 3.498800, 3.837800, 1.328400, 0.849700, 0.485300 }, { Ti, 0, {{ 9.818524, 1.522646, 1.703101, 1.768774, 7.082555, 0.102473},
// { 2.167600, 4.754200, 0.185000, 10.141100, 0.000000 }}}, { 8.001879, 0.029763, 39.885422,120.157997, 0.532405, 0.000000}}},
//{ Al, 0, {{ 6.420200, 1.900200, 1.593600, 1.964600, 1.115100 }, { V, 0, {{ 10.473575, 1.547881, 1.986381, 1.865616, 7.056250, 0.067744},
// { 3.038700, 0.742600, 31.547199, 85.088600, 0.000000 }}}, { 7.081940, 0.026040, 31.909672,108.022842, 0.474882, 0.000000}}},
//{ Al, +3, {{ 4.174480, 3.387600, 1.202960, 0.528137, 0.706786 }, { Cr, 0, {{ 11.007069, 1.555477, 2.985293, 1.347855, 7.034779, 0.065510},
// { 1.938160, 4.145530, 0.228753, 8.285240, 0.000000 }}}, { 6.366281, 0.023987, 23.244839,105.774498, 0.429369, 0.000000}}},
//{ Si, 0, {{ 6.291500, 3.035300, 1.989100, 1.541000, 1.140700 }, { Mn, 0, {{ 11.709542, 1.733414, 2.673141, 2.023368, 7.003180, -0.147293},
// { 2.438600, 32.333698, 0.678500, 81.693695, 0.000000 }}}, { 5.597120, 0.017800, 21.788420, 89.517914, 0.383054, 0.000000}}},
//{ Si, AtomTypeTraits::kWKSFVal, { Fe, 0, {{ 12.311098, 1.876623, 3.066177, 2.070451, 6.975185, -0.304931},
// {{ 5.662690, 3.071640, 2.624460, 1.393200, 1.247070 }, { 5.009415, 0.014461, 18.743040, 82.767876, 0.346506, 0.000000}}},
// { 2.665200, 38.663399, 0.916946, 93.545799, 0.000000 }}}, { Co, 0, {{ 12.914510, 2.481908, 3.466894, 2.106351, 6.960892, -0.936572},
//{ Si, +4, {{ 4.439180, 3.203450, 1.194530, 0.416530, 0.746297 }, { 4.507138, 0.009126, 16.438129, 76.987320, 0.314418, 0.000000}}},
// { 1.641670, 3.437570, 0.214900, 6.653650, 0.000000 }}}, { Ni, 0, {{ 13.521865, 6.947285, 3.866028, 2.135900, 4.284731, -2.762697},
//{ P, 0, {{ 6.434500, 4.179100, 1.780000, 1.490800, 1.114900 }, { 4.077277, 0.286763, 14.622634, 71.966080, 0.004437, 0.000000}}},
// { 1.906700, 27.157000, 0.526000, 68.164497, 0.000000 }}}, { Cu, 0, {{ 14.014192, 4.784577, 5.056806, 1.457971, 6.932996, -3.254477},
//{ S, 0, {{ 6.905300, 5.203400, 1.437900, 1.586300, 0.866900 }, { 3.738280, 0.003744, 13.034982, 72.554794, 0.265666, 0.000000}}},
// { 1.467900, 22.215099, 0.253600, 56.172001, 0.000000 }}}, { Zn, 0, {{ 14.741002, 6.907748, 4.642337, 2.191766, 38.424042,-36.915829},
//{ Cl, 0, {{ 11.460400, 7.196400, 6.255600, 1.645500, -9.557400 }, { 3.388232, 0.243315, 11.903689, 63.312130, 0.000397, 0.000000}}},
// { 0.010400, 1.166200, 18.519400, 47.778400, 0.000000 }}}, { Ga, 0, {{ 15.758946, 6.841123, 4.121016, 2.714681, 2.395246, -0.847395},
//{ Cl, -1, {{ 18.291500, 7.208400, 6.533700, 2.338600, -16.378000 }, { 3.121754, 0.226057, 12.482196, 66.203621, 0.007238, 0.000000}}},
// { 0.006600, 1.171700, 19.542400, 60.448601, 0.000000 }}}, { Ge, 0, {{ 16.540613, 1.567900, 3.727829, 3.345098, 6.785079, 0.018726},
//{ Ar, 0, {{ 7.484500, 6.772300, 0.653900, 1.644200, 1.444500 }, { 2.866618, 0.012198, 13.432163, 58.866047, 0.210974, 0.000000}}},
// { 0.907200, 14.840700, 43.898300, 33.392899, 0.000000 }}}, { As, 0, {{ 17.025642, 4.503441, 3.715904, 3.937200, 6.790175, -2.984117},
//{ K, 0, {{ 8.218599, 7.439800, 1.051900, 0.865900, 1.422800 }, { 2.597739, 0.003012, 14.272119, 50.437996, 0.193015, 0.000000}}},
// { 12.794900, 0.774800, 213.186996, 41.684097, 0.000000 }}}, { Se, 0, {{ 17.354071, 4.653248, 4.259489, 4.136455, 6.749163, -3.160982},
//{ K, +1, {{ 7.957800, 7.491700, 6.359000, 1.191500, -4.997800 }, { 2.349787, 0.002550, 15.579460, 45.181202, 0.177432, 0.000000}}},
// { 12.633100, 0.767400, -0.002000, 31.912800, 0.000000 }}}, { Br, 0, {{ 17.550570, 5.411882, 3.937180, 3.880645, 6.707793, -2.492088},
//{ Ca, 0, {{ 8.626600, 7.387300, 1.589900, 1.021100, 1.375100 }, { 2.119226, 16.557184, 0.002481, 42.164009, 0.162121, 0.000000}}},
// { 10.442100, 0.659900, 85.748398, 178.436996, 0.000000 }}}, { Kr, 0, {{ 17.655279, 6.848105, 4.171004, 3.446760, 6.685200, -2.810592},
//{ Ca, +2, {{ 15.634800, 7.951800, 8.437200, 0.853700, -14.875000 }, { 1.908231, 16.606236, 0.001598, 39.917473, 0.146896, 0.000000}}},
// { -0.007400, 0.608900, 10.311600, 25.990499, 0.000000 }}}, { Rb, 0, {{ 8.123134, 2.138042, 6.761702, 1.156051, 17.679546, 1.139548},
//{ Sc, 0, {{ 9.189000, 7.367900, 1.640900, 1.468000, 1.332900 }, { 15.142385, 33.542667, 0.129372,224.132507, 1.713368, 0.000000}}},
// { 9.021299, 0.572900, 136.108002, 51.353100, 0.000000 }}}, { Sr, 0, {{ 17.730219, 9.795867, 6.099763, 2.620025, 0.600053, 1.140251},
//{ Sc, +3, {{ 13.400800, 8.027300, 1.659430, 1.579360, -6.666700 }, { 1.563060, 14.310868, 0.120574,135.771317, 0.120574, 0.000000}}},
// { 0.298540, 7.962900, -0.286040, 16.066200, 0.000000 }}}, { Y, 0, {{ 17.792040, 10.253252, 5.714949, 3.170516, 0.918251, 1.131787},
//{ Ti, 0, {{ 9.759500, 7.355800, 1.699100, 1.902100, 1.280700 }, { 1.429691, 13.132816, 0.112173,108.197029, 0.112173, 0.000000}}},
// { 7.850800, 0.500000, 35.633801, 116.104996, 0.000000 }}}, { Zr, 0, {{ 17.859772, 10.911038, 5.821115, 3.512513, 0.746965, 1.124859},
//{ Ti, +2, {{ 9.114230, 7.621740, 2.279300, 0.087899, 0.897155 }, { 1.310692, 12.319285, 0.104353, 91.777542, 0.104353, 0.000000}}},
// { 7.524300, 0.457585, 19.536100, 61.655800, 0.000000 }}}, { Nb, 0, {{ 17.958399, 12.063054, 5.007015, 3.287667, 1.531019, 1.123452},
//{ Ti, +3, {{ 17.734400, 8.738160, 5.256910, 1.921340, -14.652000 }, { 1.211590, 12.246687, 0.098615, 75.011948, 0.098615, 0.000000}}},
// { 0.220610, 7.047160, -0.157620, 15.976800, 0.000000 }}}, { Mo, 0, {{ 6.236218, 17.987711, 12.973127, 3.451426, 0.210899, 1.108770},
//{ Ti, +4, {{ 19.511400, 8.234730, 2.013410, 1.520800, -13.280000 }, { 0.090780, 1.108310, 11.468720, 66.684151, 0.090780, 0.000000}}},
// { 0.178847, 6.670180, -0.292630, 12.946400, 0.000000 }}}, { Tc, 0, {{ 17.840963, 3.428236, 1.373012, 12.947364, 6.335469, 1.074784},
//{ V, 0, {{ 10.297100, 7.351100, 2.070300, 2.057100, 1.219900 }, { 1.005729, 41.901382,119.320541, 9.781542, 0.083391, 0.000000}}},
// { 6.865700, 0.438500, 26.893799, 102.477997, 0.000000 }}}, { Ru, 0, {{ 6.271624, 17.906738, 14.123269, 3.746008, 0.908235, 1.043992},
//{ V, +2, {{ 10.106000, 7.354100, 2.288400, 0.022300, 1.229800 }, { 0.077040, 0.928222, 9.555345, 35.860680,123.552246, 0.000000}}},
// { 6.881800, 0.440900, 20.300400, 115.122002, 0.000000 }}}, { Rh, 0, {{ 6.216648, 17.919739, 3.854252, 0.840326, 15.173498, 0.995452},
//{ V, +3, {{ 9.431410, 7.741900, 2.153430, 0.016865, 0.656565 }, { 0.070789, 0.856121, 33.889484,121.686691, 9.029517, 0.000000}}},
// { 6.395350, 0.383349, 15.190800, 63.969002, 0.000000 }}}, { Pd, 0, {{ 6.121511, 4.784063, 16.631683, 4.318258, 13.246773, 0.883099},
//{ V, +5, {{ 15.688700, 8.142080, 2.030810, -9.576000, 1.714300 }, { 0.062549, 0.784031, 8.751391, 34.489983, 0.784031, 0.000000}}},
// { 0.679003, 5.401350, 9.972780, 0.940464, 0.000000 }}}, { Ag, 0, {{ 6.073874, 17.155437, 4.173344, 0.852238, 17.988686, 0.756603},
//{ Cr, 0, {{ 10.640600, 7.353700, 3.324000, 1.492200, 1.183200 }, { 0.055333, 7.896512, 28.443739,110.376106, 0.716809, 0.000000}}},
// { 6.103800, 0.392000, 20.262600, 98.739899, 0.000000 }}}, { Cd, 0, {{ 6.080986, 18.019468, 4.018197, 1.303510, 17.974669, 0.603504},
//{ Cr, +2, {{ 9.540340, 7.750900, 3.582740, 0.509107, 0.616898 }, { 0.048990, 7.273646, 29.119284, 95.831207, 0.661231, 0.000000}}},
// { 5.660780, 0.344261, 13.307500, 32.422401, 0.000000 }}}, { In, 0, {{ 6.196477, 18.816183, 4.050479, 1.638929, 17.962912, 0.333097},
//{ Cr, +3, {{ 9.680900, 7.811360, 2.876030, 0.113575, 0.518275 }, { 0.042072, 6.695665, 31.009790,103.284348, 0.610714, 0.000000}}},
// { 5.594630, 0.334393, 12.828800, 32.876099, 0.000000 }}}, { Sn, 0, {{ 19.325171, 6.281571, 4.498866, 1.856934, 17.917318, 0.119024},
//{ Mn, 0, {{ 11.281900, 7.357300, 3.019300, 2.244100, 1.089600 }, { 6.118104, 0.036915, 32.529045, 95.037186, 0.565651, 0.000000}}},
// { 5.340900, 0.343200, 17.867399, 83.754303, 0.000000 }}}, { Sb, 0, {{ 5.394956, 6.549570, 19.650681, 1.827820, 17.867832, -0.290506},
//{ Mn, +2, {{ 10.806100, 7.362000, 3.526800, 0.218400, 1.087400 }, { 33.326523, 0.030974, 5.564929, 87.130966, 0.523992, 0.000000}}},
// { 5.279600, 0.343500, 14.343000, 41.323502, 0.000000 }}}, { Te, 0, {{ 6.660302, 6.940756, 19.847015, 1.557175, 17.802427, -0.806668},
//{ Mn, +3, {{ 9.845210, 7.871940, 3.565310, 0.323613, 0.393974 }, { 33.031654, 0.025750, 5.065547, 84.101616, 0.487660, 0.000000}}},
// { 4.917970, 0.294393, 10.817100, 24.128099, 0.000000 }}}, { I, 0, {{ 19.884502, 6.736593, 8.110516, 1.170953, 17.548716, -0.448811},
//{ Mn, +4, {{ 9.962530, 7.970570, 2.760670, 0.054447, 0.251877 }, { 4.628591, 0.027754, 31.849096, 84.406387, 0.463550, 0.000000}}},
// { 4.848500, 0.283303, 10.485200, 27.573000, 0.000000 }}}, { Xe, 0, {{ 19.978920, 11.774945, 9.332182, 1.244749, 17.737501, -6.065902},
//{ Fe, 0, {{ 11.769500, 7.357300, 3.522200, 2.304500, 1.036900 }, { 4.143356, 0.010142, 28.796200, 75.280685, 0.413616, 0.000000}}},
// { 4.761100, 0.307200, 15.353500, 76.880501, 0.000000 }}}, { Cs, 0, {{ 17.418674, 8.314444, 10.323193, 1.383834, 19.876251, -2.322802},
//{ Fe, +2, {{ 11.042400, 7.374000, 4.134600, 0.439900, 1.009700 }, { 0.399828, 0.016872, 25.605827,233.339676, 3.826915, 0.000000}}},
// { 4.653800, 0.305300, 12.054600, 31.280899, 0.000000 }}}, { Ba, 0, {{ 19.747343, 17.368477, 10.465718, 2.592602, 11.003653, -5.183497},
//{ Fe, +3, {{ 11.176400, 7.386300, 3.394800, 0.072400, 0.970700 }, { 3.481823, 0.371224, 21.226641,173.834274, 0.010719, 0.000000}}},
// { 4.614700, 0.300500, 11.672900, 38.556599, 0.000000 }}}, { La, 0, {{ 19.966019, 27.329655, 11.018425, 3.086696, 17.335455,-21.745489},
//{ Co, 0, {{ 12.284100, 7.340900, 4.003400, 2.348800, 1.011800 }, { 3.197408, 0.003446, 19.955492,141.381973, 0.341817, 0.000000}}},
// { 4.279100, 0.278400, 13.535900, 71.169197, 0.000000 }}}, { Ce, 0, {{ 17.355122, 43.988499, 20.546650, 3.130670, 11.353665,-38.386017},
//{ Co, +2, {{ 11.229600, 7.388300, 4.739300, 0.710800, 0.932400 }, { 0.328369, 0.002047, 3.088196,134.907654, 18.832960, 0.000000}}},
// { 4.123100, 0.272600, 10.244300, 25.646599, 0.000000 }}}, { Pr, 0, {{ 21.551311, 17.161730, 11.903859, 2.679103, 9.564197, -3.871068},
//{ Co, +3, {{ 10.337999, 7.881730, 4.767950, 0.725591, 0.286667 }, { 2.995675, 0.312491, 17.716705,152.192825, 0.010468, 0.000000}}},
// { 3.909690, 0.238668, 8.355830, 18.349100, 0.000000 }}}, { Nd, 0, {{ 17.331244, 62.783924, 12.160097, 2.663483, 22.239950,-57.189842},
//{ Ni, 0, {{ 12.837600, 7.292000, 4.443800, 2.380000, 1.034100 }, { 0.300269, 0.001320, 17.026001,148.748993, 2.910268, 0.000000}}},
// { 3.878500, 0.256500, 12.176300, 66.342102, 0.000000 }}}, { Pm, 0, {{ 17.286388, 51.560162, 12.478557, 2.675515, 22.960947,-45.973682},
//{ Ni, +2, {{ 11.416600, 7.400500, 5.344200, 0.977300, 0.861400 }, { 0.286620, 0.001550, 16.223755,143.984512, 2.796480, 0.000000}}},
// { 3.676600, 0.244900, 8.873000, 22.162600, 0.000000 }}}, { Sm, 0, {{ 23.700363, 23.072214, 12.777782, 2.684217, 17.204367,-17.452166},
//{ Ni, +3, {{ 10.780600, 7.758680, 5.227460, 0.847114, 0.386044 }, { 2.689539, 0.003491, 15.495437,139.862473, 0.274536, 0.000000}}},
// { 3.547700, 0.223140, 7.644680, 16.967300, 0.000000 }}}, { Eu, 0, {{ 17.186195, 37.156837, 13.103387, 2.707246, 24.419271,-31.586687},
//{ Cu, 0, {{ 13.337999, 7.167600, 5.615800, 1.673500, 1.191000 }, { 0.261678, 0.001995, 14.787360,134.816299, 2.581883, 0.000000}}},
// { 3.582800, 0.247000, 11.396600, 64.812599, 0.000000 }}}, { Gd, 0, {{ 24.898117, 17.104952, 13.222581, 3.266152, 48.995213,-43.505684},
//{ Cu, +1, {{ 11.947500, 7.357300, 6.245500, 1.557800, 0.890000 }, { 2.435028, 0.246961, 13.996325,110.863091, 0.001383, 0.000000}}},
// { 3.366900, 0.227400, 8.662500, 25.848700, 0.000000 }}}, { Tb, 0, {{ 25.910013, 32.344139, 13.765117, 2.751404, 17.064405,-26.851971},
//{ Cu, +2, {{ 11.816800, 7.111810, 5.781350, 1.145230, 1.144310 }, { 2.373912, 0.002034, 13.481969,125.836510, 0.236916, 0.000000}}},
// { 3.374840, 0.244078, 7.987600, 19.896999, 0.000000 }}}, { Dy, 0, {{ 26.671785, 88.687576, 14.065445, 2.768497, 17.067781,-83.279831},
//{ Zn, 0, {{ 14.074300, 7.031800, 5.162500, 2.410000, 1.304100 }, { 2.282593, 0.000665, 12.920230,121.937187, 0.225531, 0.000000}}},
// { 3.265500, 0.233300, 10.316299, 58.709702, 0.000000 }}}, { Ho, 0, {{ 27.150190, 16.999819, 14.059334, 3.386979, 46.546471,-41.165253},
//{ Zn, +2, {{ 11.971900, 7.386200, 6.466800, 1.394000, 0.780700 }, { 2.169660, 0.215414, 12.213148,100.506783, 0.001211, 0.000000}}},
// { 2.994600, 0.203100, 7.082600, 18.099499, 0.000000 }}}, { Er, 0, {{ 28.174887, 82.493271, 14.624002, 2.802756, 17.018515,-77.135223},
//{ Ga, 0, {{ 15.235400, 6.700600, 4.359100, 2.962300, 1.718900 }, { 2.120995, 0.000640, 11.915256,114.529938, 0.207519, 0.000000}}},
// { 3.066900, 0.241200, 10.780500, 61.413498, 0.000000 }}}, { Tm, 0, {{ 28.925894, 76.173798, 14.904704, 2.814812, 16.998117,-70.839813},
//{ Ga, +3, {{ 12.691999, 6.698830, 6.066920, 1.006600, 1.535450 }, { 2.046203, 0.000656, 11.465375,111.411980, 0.199376, 0.000000}}},
// { 2.812620, 0.227890, 6.364410, 14.412200, 0.000000 }}}, { Yb, 0, {{ 29.676760, 65.624069, 15.160854, 2.830288, 16.997850,-60.313812},
//{ Ge, 0, {{ 16.081600, 6.374700, 3.706800, 3.683000, 2.131300 }, { 1.977630, 0.000720, 11.044622,108.139153, 0.192110, 0.000000}}},
// { 2.850900, 0.251600, 11.446800, 54.762501, 0.000000 }}}, { Lu, 0, {{ 30.122866, 15.099346, 56.314899, 3.540980, 16.943729,-51.049416},
//{ Ge, +4, {{ 12.917200, 6.700030, 6.067910, 0.859041, 1.455720 }, { 1.883090, 10.342764, 0.000780, 89.559250, 0.183849, 0.000000}}},
// { 2.537180, 0.205855, 5.479130, 11.603000, 0.000000 }}}, { Hf, 0, {{ 30.617033, 15.145351, 54.933548, 4.096253, 16.896156,-49.719837},
//{ As, 0, {{ 16.672300, 6.070100, 3.431300, 4.277900, 2.531000 }, { 1.795613, 9.934469, 0.000739, 76.189705, 0.175914, 0.000000}}},
// { 2.634500, 0.264700, 12.947900, 47.797199, 0.000000 }}}, { Ta, 0, {{ 31.066359, 15.341823, 49.278297, 4.577665, 16.828321,-44.119026},
//{ Se, 0, {{ 17.000599, 5.819600, 3.973100, 4.354300, 2.840900 }, { 1.708732, 9.618455, 0.000760, 66.346199, 0.168002, 0.000000}}},
// { 2.409800, 0.272600, 15.237200, 43.816299, 0.000000 }}}, { W, 0, {{ 31.507900, 15.682498, 37.960129, 4.885509, 16.792112,-32.864574},
//{ Br, 0, {{ 17.178900, 5.235800, 5.637700, 3.985100, 2.955700 }, { 1.629485, 9.446448, 0.000898, 59.980675, 0.160798, 0.000000}}},
// { 2.172300, 16.579599, 0.260900, 41.432800, 0.000000 }}}, { Re, 0, {{ 31.888456, 16.117104, 42.390297, 5.211669, 16.767591,-37.412682},
//{ Br, -1, {{ 17.171799, 6.333800, 5.575400, 3.727200, 3.177600 }, { 1.549238, 9.233474, 0.000689, 54.516373, 0.152815, 0.000000}}},
// { 2.205900, 19.334499, 0.287100, 58.153500, 0.000000 }}}, { Os, 0, {{ 32.210297, 16.678440, 48.559906, 5.455839, 16.735533,-43.677956},
//{ Kr, 0, {{ 17.355499, 6.728600, 5.549300, 3.537500, 2.825000 }, { 1.473531, 9.049695, 0.000519, 50.210201, 0.145771, 0.000000}}},
// { 1.938400, 16.562300, 0.226100, 39.397202, 0.000000 }}}, { Ir, 0, {{ 32.004436, 1.975454, 17.070105, 15.939454, 5.990003, 4.018893},
//{ Rb, 0, {{ 17.178400, 9.643499, 5.139900, 1.529200, 3.487300 }, { 1.353767, 81.014175, 0.128093, 7.661196, 26.659403, 0.000000}}},
// { 1.788800, 17.315100, 0.274800, 164.933990, 0.000000 }}}, { Pt, 0, {{ 31.273891, 18.445440, 17.063745, 5.555933, 1.575270, 4.050394},
//{ Rb, +1, {{ 17.581600, 7.659800, 5.898100, 2.781700, 2.078200 }, { 1.316992, 8.797154, 0.124741, 40.177994, 1.316997, 0.000000}}},
// { 1.713900, 14.795700, 0.160300, 31.208700, 0.000000 }}}, { Au, 0, {{ 16.777390, 19.317156, 32.979683, 5.595453, 10.576854, -6.279078},
//{ Sr, 0, {{ 17.566299, 9.818399, 5.422000, 2.669400, 2.506400 }, { 0.122737, 8.621570, 1.256902, 38.008820, 0.000601, 0.000000}}},
// { 1.556400, 14.098800, 0.166400, 132.376007, 0.000000 }}}, { Hg, 0, {{ 16.839890, 20.023823, 28.428564, 5.881564, 4.714706, 4.076478},
//{ Sr, +2, {{ 18.087400, 8.137300, 2.565400, -34.193001, 41.402500 }, { 0.115905, 8.256927, 1.195250, 39.247227, 1.195250, 0.000000}}},
// { 1.490700, 12.696300, 24.565100, -0.013800, 0.000000 }}}, { Tl, 0, {{ 16.630795, 19.386616, 32.808571, 1.747191, 6.356862, 4.066939},
//{ Y, 0, {{ 17.775999, 10.294600, 5.726290, 3.265880, 1.912130 }, { 0.110704, 7.181401, 1.119730, 90.660263, 26.014978, 0.000000}}},
// { 1.402900, 12.800600, 0.125599, 104.353996, 0.000000 }}}, { Pb, 0, {{ 16.419567, 32.738590, 6.530247, 2.342742, 19.916475, 4.049824},
//{ Y, +3, {{ 17.926800, 9.153100, 1.767950, -33.108002, 40.260201 }, { 0.105499, 1.055049, 25.025890, 80.906593, 6.664449, 0.000000}}},
// { 1.354170, 11.214500, 22.659901, -0.013190, 0.000000 }}}, { Bi, 0, {{ 16.282274, 32.725136, 6.678302, 2.694750, 20.576559, 4.040914},
//{ Zr, 0, {{ 17.876499, 10.948000, 5.417320, 3.657210, 2.069290 }, { 0.101180, 1.002287, 25.714146, 77.057549, 6.291882, 0.000000}}},
// { 1.276180, 11.916000, 0.117622, 87.662697, 0.000000 }}}, { Po, 0, {{ 16.289164, 32.807171, 21.095163, 2.505901, 7.254589, 4.046556},
//{ Zr, +4, {{ 18.166800, 10.056200, 1.011180, -2.647900, 9.414539 }, { 0.098121, 0.966265, 6.046622, 76.598068, 28.096128, 0.000000}}},
// { 1.214800, 10.148300, 21.605400, -0.102760, 0.000000 }}}, { At, 0, {{ 16.011461, 32.615547, 8.113899, 2.884082, 21.377867, 3.995684},
//{ Nb, 0, {{ 17.614201, 12.014400, 4.041830, 3.533460, 3.755910 }, { 0.092639, 0.904416, 26.543257, 68.372963, 5.499512, 0.000000}}},
// { 1.188650, 11.766000, 0.204785, 69.795700, 0.000000 }}}, { Rn, 0, {{ 16.070229, 32.641106, 21.489658, 2.299218, 9.480184, 4.020977},
//{ Nb, +3, {{ 19.881199, 18.065300, 11.017700, 1.947150, -12.912000 }, { 0.090437, 0.876409, 5.239687, 69.188477, 27.632641, 0.000000}}},
// { 0.019175, 1.133050, 10.162100, 28.338900, 0.000000 }}}, { Fr, 0, {{ 16.007385, 32.663830, 21.594351, 1.598497, 11.121192, 4.003472},
//{ Nb, +5, {{ 17.916300, 13.341700, 10.799000, 0.337905, -6.393400 }, { 0.087031, 0.840187, 4.954467,199.805801, 26.905106, 0.000000}}},
// { 1.124460, 0.028781, 9.282060, 25.722799, 0.000000 }}}, { Ra, 0, {{ 32.563690, 21.396671, 11.298093, 2.834688, 15.914965, 3.981773},
//{ Mo, 0, {{ 3.702500, 17.235600, 12.887600, 3.742900, 4.387500 }, { 0.801980, 4.590666, 22.758972,160.404388, 0.083544, 0.000000}}},
// { 0.277200, 1.095800, 11.004000, 61.658401, 0.000000 }}}, { Ac, 0, {{ 15.914053, 32.535042, 21.553976, 11.433394, 3.612409, 3.939212},
//{ Mo, +3, {{ 21.166401, 18.201700, 11.742300, 2.309510, -14.421000 }, { 0.080511, 0.770669, 4.352206, 21.381622,130.500748, 0.000000}}},
// { 0.014734, 1.030310, 9.536590, 26.630699, 0.000000 }}}, { Th, 0, {{ 15.784024, 32.454899, 21.849222, 4.239077, 11.736191, 3.922533},
//{ Mo, +5, {{ 21.014900, 18.099199, 11.463200, 0.740625, -14.316000 }, { 0.077067, 0.735137, 4.097976,109.464111, 20.512138, 0.000000}}},
// { 0.014345, 1.022380, 8.788090, 23.345200, 0.000000 }}}, { Pa, 0, {{ 32.740208, 21.973675, 12.957398, 3.683832, 15.744058, 3.886066},
//{ Mo, +6, {{ 17.887100, 11.175000, 6.578910, 0.000000, 0.344941 }, { 0.709545, 4.050881, 19.231543,117.255005, 0.074040, 0.000000}}},
// { 1.036490, 8.480610, 0.058881, 0.000000, 0.000000 }}}, { U, 0, {{ 15.679275, 32.824306, 13.660459, 3.687261, 22.279434, 3.854444},
//{ Tc, 0, {{ 19.130100, 11.094800, 4.649010, 2.712630, 5.404280 }, { 0.071206, 0.681177, 18.236156,112.500038, 3.930325, 0.000000}}},
// { 0.864132, 8.144870, 21.570700, 86.847198, 0.000000 }}}, { Np, 0, {{ 32.999901, 22.638077, 14.219973, 3.672950, 15.683245, 3.769391},
//{ Ru, 0, {{ 19.267399, 12.918200, 4.863370, 1.567560, 5.378740 }, { 0.657086, 3.854918, 17.435474,109.464485, 0.068033, 0.000000}}},
// { 0.808520, 8.434669, 24.799700, 94.292801, 0.000000 }}}, { Pu, 0, {{ 33.281178, 23.148544, 15.153755, 3.031492, 15.704215, 3.664200},
//{ Ru, +3, {{ 18.563801, 13.288500, 9.326019, 3.009640, -3.189200 }, { 0.634999, 3.856168, 16.849735,121.292038, 0.064857, 0.000000}}},
// { 0.847329, 8.371640, 0.017662, 22.886999, 0.000000 }}}, { Am, 0, {{ 33.435162, 23.657259, 15.576339, 3.027023, 15.746100, 3.541160},
//{ Ru, +4, {{ 18.500299, 13.178699, 4.713040, 2.185350, 1.423570 }, { 0.612785, 3.792942, 16.195778,117.757004, 0.061755, 0.000000}}},
// { 0.844582, 8.125340, 0.364950, 20.850399, 0.000000 }}}, { Cm, 0, {{ 15.804837, 33.480801, 24.150198, 3.655563, 15.499866, 3.390840},
//{ Rh, 0, {{ 19.295700, 14.350100, 4.734250, 1.289180, 5.328000 }, { 0.058619, 0.590160, 3.674720,100.736191, 15.408296, 0.000000}}},
// { 0.751536, 8.217580, 25.874901, 98.606201, 0.000000 }}}, { Bk, 0, {{ 15.889072, 33.625286, 24.710381, 3.707139, 15.839268, 3.213169},
//{ Rh, +3, {{ 18.878500, 14.125900, 3.325150, -6.198900, 11.867800 }, { 0.055503, 0.569571, 3.615472, 97.694786, 14.754303, 0.000000}}},
// { 0.764252, 7.844380, 21.248699, -0.010360, 0.000000 }}}, { Cf, 0, {{ 33.794075, 25.467693, 16.048487, 3.657525, 16.008982, 3.005326},
//{ Rh, +4, {{ 18.854500, 13.980600, 2.534640, -5.652600, 11.283500 }, { 0.550447, 3.581973, 14.357388, 96.064972, 0.052450, 0.000000}}},
// { 0.760825, 7.624360, 19.331699, -0.010200, 0.000000 }}}, { H, -1, {{ 0.702260, 0.763666, 0.248678, 0.261323, 0.023017, 0.000425},
//{ Pd, 0, {{ 19.331900, 15.501699, 5.295370, 0.605844, 5.265930 }, { 23.945604, 74.897919, 6.773289,233.583450, 1.337531, 0.000000}}},
// { 0.698655, 7.989290, 25.205200, 76.898598, 0.000000 }}}, { Li, +1, {{ 0.432724, 0.549257, 0.376575, -0.336481, 0.976060, 0.001764},
//{ Pd, +2, {{ 19.170099, 15.209600, 4.322340, 0.000000, 5.291600 }, { 0.260367, 1.042836, 7.885294, 0.260368, 3.042539, 0.000000}}},
// { 0.696219, 7.555730, 22.505699, 0.000000, 0.000000 }}}, { Be, +2, {{ 3.055430, -2.372617, 1.044914, 0.544233, 0.381737, -0.653773},
//{ Pd, +4, {{ 19.249300, 14.790000, 2.892890, -7.949200, 13.017400 }, { 0.001226, 0.001227, 1.542106, 0.456279, 4.047479, 0.000000}}},
// { 0.683839, 7.148330, 17.914400, 0.005127, 0.000000 }}}, { C, AtomTypeTraits::kWKSFVal,
//{ Ag, 0, {{ 19.280800, 16.688499, 4.804500, 1.046300, 5.179000 }, {{ 1.258489, 0.728215, 1.119856, 2.168133, 0.705239, 0.019722},
// { 0.644600, 7.472600, 24.660500, 99.815598, 0.000000 }}}, { 10.683769, 0.208177, 0.836097, 24.603704, 58.954273, 0.000000}}},
//{ Ag, +1, {{ 19.181200, 15.971900, 5.274750, 0.357534, 5.215720 }, { O, -1, {{ 3.106934, 3.235142, 1.148886, 0.783981, 0.676953, 0.046136},
// { 0.646179, 7.191230, 21.732599, 66.114700, 0.000000 }}}, { 19.868080, 6.960252, 0.170043, 65.693512, 0.630757, 0.000000}}},
//{ Ag, +2, {{ 19.164299, 16.245600, 4.370900, 0.000000, 5.214040 }, { O, -2, {{ 3.990247, 2.300563, 0.607200, 1.907882, 1.167080, 0.025429},
// { 0.645643, 7.185440, 21.407200, 0.000000, 0.000000 }}}, { 16.639956, 5.636819, 0.108493, 47.299709, 0.379984, 0.000000}}},
//{ Cd, 0, {{ 19.221399, 17.644400, 4.461000, 1.602900, 5.069400 }, { F, -1, {{ 0.457649, 3.841561, 1.432771, 0.801876, 3.395041, 0.069525},
// { 0.594600, 6.908900, 24.700800, 87.482498, 0.000000 }}}, { 0.917243, 5.507803, 0.164955, 51.076206, 15.821679, 0.000000}}},
//{ Cd, +2, {{ 19.151400, 17.253500, 4.471280, 0.000000, 5.119370 }, { Na, +1, {{ 3.148690, 4.073989, 0.767888, 0.995612, 0.968249, 0.045300},
// { 0.597922, 6.806390, 20.252100, 0.000000, 0.000000 }}}, { 2.594987, 6.046925, 0.070139, 14.122657, 0.217037, 0.000000}}},
//{ In, 0, {{ 19.162399, 18.559601, 4.294800, 2.039600, 4.939100 }, { Mg, +2, {{ 3.062918, 4.135106, 0.853742, 1.036792, 0.852520, 0.058851},
// { 0.547600, 6.377600, 25.849899, 92.802902, 0.000000 }}}, { 2.015803, 4.417941, 0.065307, 9.669710, 0.187818, 0.000000}}},
//{ In, +3, {{ 19.104500, 18.110800, 3.788970, 0.000000, 4.996350 }, { Al, +3, {{ 4.132015, 0.912049, 1.102425, 0.614876, 3.219136, 0.019397},
// { 0.551522, 6.324700, 17.359501, 0.000000, 0.000000 }}}, { 3.528641, 7.378344, 0.133708, 0.039065, 1.644728, 0.000000}}},
//{ Sn, 0, {{ 19.188900, 19.100500, 4.458500, 2.466300, 4.782100 }, { Si, AtomTypeTraits::kWKSFVal,
// { 5.830300, 0.503100, 26.890900, 83.957100, 0.000000 }}}, {{ 2.879033, 3.072960, 1.515981, 1.390030, 4.995051, 0.146030},
//{ Sn, +2, {{ 19.109400, 19.054800, 4.564800, 0.487000, 4.786100 }, { 1.239713, 38.706276, 0.081481, 93.616333, 2.770293, 0.000000}}},
// { 0.503600, 5.837800, 23.375200, 62.206100, 0.000000 }}}, { Si, +4, {{ 3.676722, 3.828496, 1.258033, 0.419024, 0.720421, 0.097266},
//{ Sn, +4, {{ 18.933300, 19.713100, 3.418200, 0.019300, 3.918200 }, { 1.446851, 3.013144, 0.064397, 0.206254, 5.970222, 0.000000}}},
// { 5.764000, 0.465500, 14.004900, -0.758300, 0.000000 }}}, { Cl, -1, {{ 1.061802, 7.139886, 6.524271, 2.355626, 35.829403,-34.916603},
//{ Sb, 0, {{ 19.641800, 19.045500, 5.037100, 2.682700, 4.590900 }, { 0.144727, 1.171795, 19.467655, 60.320301, 0.000436, 0.000000}}},
// { 5.303400, 0.460700, 27.907400, 75.282501, 0.000000 }}}, { K, +1, {{-17.609339, 1.494873, 7.150305, 10.899569, 15.808228, 0.257164},
//{ Sb, +3, {{ 18.975500, 18.932999, 5.107890, 0.288753, 4.696260 }, { 18.840979, 0.053453, 0.812940, 22.264105, 14.351593, 0.000000}}},
// { 0.467196, 5.221260, 19.590200, 55.511299, 0.000000 }}}, { Ca, +2, {{ 8.501441, 12.880483, 9.765095, 7.156669, 0.711160,-21.013187},
//{ Sb, +5, {{ 19.868500, 19.030199, 2.412530, 0.000000, 4.692630 }, { 10.525848, -0.004033, 0.010692, 0.684443, 27.231771, 0.000000}}},
// { 5.448530, 0.467973, 14.125900, 0.000000, 0.000000 }}}, { Sc, +3, {{ 7.104348, 1.511488,-53.669773, 38.404816, 24.532240, 0.118642},
//{ Te, 0, {{ 19.964399, 19.013800, 6.144870, 2.523900, 4.352000 }, { 0.601957, 0.033386, 12.572138, 10.859736, 14.125230, 0.000000}}},
// { 4.817420, 0.420885, 28.528400, 70.840302, 0.000000 }}}, { Ti, +2, {{ 7.040119, 1.496285, 9.657304, 0.006534, 1.649561, 0.150362},
//{ I, 0, {{ 20.147200, 18.994900, 7.513800, 2.273500, 4.071200 }, { 0.537072, 0.031914, 8.009958,201.800293, 24.039482, 0.000000}}},
// { 4.347000, 0.381400, 27.765999, 66.877602, 0.000000 }}}, { Ti, +3, {{ 36.587933, 7.230255, -9.086077, 2.084594, 17.294008,-35.111282},
//{ I, -1, {{ 20.233200, 18.997000, 7.806900, 2.886800, 4.071400 }, { 0.000681, 0.522262, 5.262317, 15.881716, 6.149805, 0.000000}}},
// { 4.357900, 0.381500, 29.525900, 84.930397, 0.000000 }}}, { Ti, +4, {{ 45.355537, 7.092900, 7.483858,-43.498817, 1.678915, -0.110628},
//{ Xe, 0, {{ 20.293301, 19.029800, 8.976700, 1.990000, 3.711800 }, { 9.252186, 0.523046, 13.082852, 10.193876, 0.023064, 0.000000}}},
// { 3.928200, 0.344000, 26.465900, 64.265800, 0.000000 }}}, { V, +2, {{ 7.754356, 2.064100, 2.576998, 2.011404, 7.126177, -0.533379},
//{ Cs, 0, {{ 20.389200, 19.106199, 10.662000, 1.495300, 3.335200 }, { 7.066315, 0.014993, 7.066308, 22.055786, 0.467568, 0.000000}}},
// { 3.569000, 0.310700, 24.387899, 213.903992, 0.000000 }}}, { V, +3, {{ 9.958480, 1.596350, 1.483442,-10.846044, 17.332867, 0.474921},
//{ Cs, +1, {{ 20.352400, 19.127800, 10.282100, 0.961500, 3.279100 }, { 6.763041, 0.056895, 17.750029, 0.328826, 0.388013, 0.000000}}},
// { 3.552000, 0.308600, 23.712799, 59.456497, 0.000000 }}}, { V, +5, {{ 15.575018, 8.448095, 1.612040, -9.721855, 1.534029, 0.552676},
//{ Ba, 0, {{ 20.336100, 19.297001, 10.888000, 2.695900, 2.773100 }, { 0.682708, 5.566640, 10.527077, 0.907961, 0.066667, 0.000000}}},
// { 3.216000, 0.275600, 20.207300, 167.201996, 0.000000 }}}, { Cr, +2, {{ 10.598877, 1.565858, 2.728280, 0.098064, 6.959321, 0.049870},
//{ Ba, +2, {{ 20.180700, 19.113600, 10.905399, 0.776340, 3.029020 }, { 6.151846, 0.023519, 17.432816, 54.002388, 0.426301, 0.000000}}},
// { 3.213670, 0.283310, 20.055799, 51.745998, 0.000000 }}}, { Cr, +3, {{ 7.989310, 1.765079, 2.627125, 1.829380, 6.980908, -0.192123},
//{ La, 0, {{ 20.577999, 19.598999, 11.372700, 3.287190, 2.146780 }, { 6.068867, 0.018342, 6.068887, 16.309284, 0.420864, 0.000000}}},
// { 2.948170, 0.244475, 18.772600, 133.123993, 0.000000 }}}, { Mn, +2, {{ 11.287712, 26.042414, 3.058096, 0.090258, 7.088306,-24.566132},
//{ La, +3, {{ 20.248899, 19.376301, 11.632299, 0.336048, 2.408600 }, { 5.506225, 0.000774, 16.158575, 54.766354, 0.375580, 0.000000}}},
// { 2.920700, 0.250698, 17.821100, 54.945297, 0.000000 }}}, { Mn, +3, {{ 6.926972, 2.081342, 11.128379, 2.375107, -0.419287, -0.093713},
//{ Ce, 0, {{ 21.167099, 19.769501, 11.851299, 3.330490, 1.862640 }, { 0.378315, 0.015054, 5.379957, 14.429586, 0.004939, 0.000000}}},
// { 2.812190, 0.226836, 17.608299, 127.112999, 0.000000 }}}, { Mn, +4, {{ 12.409131, 7.466993, 1.809947,-12.138477, 10.780248, 0.672146},
//{ Ce, +3, {{ 20.803600, 19.559000, 11.936900, 0.612376, 2.090130 }, { 0.300400, 0.112814, 12.520756, 0.168653, 5.173237, 0.000000}}},
// { 2.776910, 0.231540, 16.540800, 43.169201, 0.000000 }}}, { Fe, +2, {{ 11.776765, 11.165097, 3.533495, 0.165345, 7.036932, -9.676919},
//{ Ce, +4, {{ 20.323500, 19.818600, 12.123300, 0.144583, 1.591800 }, { 4.912232, 0.001748, 14.166556, 42.381958, 0.341324, 0.000000}}},
// { 2.659410, 0.218850, 15.799200, 62.235500, 0.000000 }}}, { Fe, +3, {{ 9.721638, 63.403847, 2.141347, 2.629274, 7.033846,-61.930725},
//{ Pr, 0, {{ 22.043999, 19.669701, 12.385600, 2.824280, 2.058300 }, { 4.869297, 0.000293, 4.867602, 13.539076, 0.338520, 0.000000}}},
// { 2.773930, 0.222087, 16.766899, 143.643997, 0.000000 }}}, { Co, +2, {{ 6.993840, 26.285812, 12.254289, 0.246114, 4.017407,-24.796852},
//{ Pr, +3, {{ 21.372700, 19.749100, 12.132900, 0.975180, 1.771320 }, { 0.310779, 0.000684, 4.400528, 35.741447, 12.536393, 0.000000}}},
// { 2.645200, 0.214299, 15.323000, 36.406502, 0.000000 }}}, { Co, +3, {{ 6.861739, 2.678570, 12.281889, 3.501741, -0.179384, -1.147345},
//{ Pr, +4, {{ 20.941299, 20.053900, 12.466800, 0.296689, 1.242850 }, { 0.309794, 0.008142, 4.331703, 11.914167, 11.914167, 0.000000}}},
// { 2.544670, 0.202481, 14.813700, 45.464298, 0.000000 }}}, { Ni, +2, {{ 12.519017, 37.832058, 4.387257, 0.661552, 6.949072,-36.344471},
//{ Nd, 0, {{ 22.684500, 19.684700, 12.774000, 2.851370, 1.984860 }, { 3.933053, 0.000442, 10.449184, 23.860998, 0.283723, 0.000000}}},
// { 2.662480, 0.210628, 15.885000, 137.903000, 0.000000 }}}, { Ni, +3, {{ 13.579366, 1.902844, 12.859268, 3.811005, -6.838595, -0.317618},
//{ Nd, +3, {{ 21.961000, 19.933899, 12.120000, 1.510310, 1.475880 }, { 0.313140, 0.012621, 3.906407, 10.894311, 0.344379, 0.000000}}},
// { 2.527220, 0.199237, 14.178300, 30.871700, 0.000000 }}}, { Cu, +1, {{ 12.960763, 16.342150, 1.110102, 5.520682, 6.915452,-14.849320},
//{ Pm, 0, {{ 23.340500, 19.609501, 13.123500, 2.875160, 2.028760 }, { 3.576010, 0.000975, 29.523218, 10.114283, 0.261326, 0.000000}}},
// { 2.562700, 0.202088, 15.100900, 132.720993, 0.000000 }}}, { Cu, +2, {{ 11.895569, 16.344978, 5.799817, 1.048804, 6.789088,-14.878383},
//{ Pm, +3, {{ 22.552700, 20.110800, 12.067100, 2.074920, 1.194990 }, { 3.378519, 0.000924, 8.133653, 20.526524, 0.254741, 0.000000}}},
// { 2.417400, 0.185769, 13.127500, 27.449100, 0.000000 }}}, { Zn, +2, {{ 13.340772, 10.428857, 5.544489, 0.762295, 6.869172, -8.945248},
//{ Sm, 0, {{ 24.004200, 19.425800, 13.439600, 2.896040, 2.209630 }, { 3.215913, 0.001413, 8.542680, 21.891756, 0.239215, 0.000000}}},
// { 2.472740, 0.196451, 14.399600, 128.007004, 0.000000 }}}, { Ga, +3, {{ 13.123875, 35.288189, 6.126979, 0.611551, 6.724807,-33.875122},
//{ Sm, +3, {{ 23.150400, 20.259899, 11.920200, 2.714880, 0.954586 }, { 2.809960, 0.000323, 6.831534, 16.784311, 0.212002, 0.000000}}},
// { 2.316410, 0.174081, 12.157100, 24.824200, 0.000000 }}}, { Ge, +4, {{ 6.876636, 6.779091, 9.969591, 3.135857, 0.152389, 1.086542},
//{ Eu, 0, {{ 24.627399, 19.088600, 13.760300, 2.922700, 2.574500 }, { 2.025174, 0.176650, 3.573822, 7.685848, 16.677574, 0.000000}}},
// { 2.387900, 0.194200, 13.754600, 123.173996, 0.000000 }}}, { Br, -1, {{ 17.714310, 6.466926, 6.947385, 4.402674, -0.697279, 1.152674},
//{ Eu, +2, {{ 24.006300, 19.950399, 11.803400, 3.872430, 1.363890 }, { 2.122554, 19.050768, 0.152708, 58.690361, 58.690372, 0.000000}}},
// { 2.277830, 0.173530, 11.609600, 26.515600, 0.000000 }}}, { Rb, +1, {{ 17.684320, 7.761588, 6.680874, 2.668883, 0.070974, 1.133263},
//{ Eu, +3, {{ 23.749699, 20.374500, 11.850900, 3.265030, 0.759344 }, { 1.710209, 14.919863, 0.128542, 31.654478, 0.128543, 0.000000}}},
// { 2.222580, 0.163940, 11.311000, 22.996599, 0.000000 }}}, { Sr, +2, {{ 17.694973, 1.275762, 6.154252, 9.234786, 0.515995, 1.125309},
//{ Gd, 0, {{ 25.070900, 19.079800, 13.851800, 3.545450, 2.419600 }, { 1.550888, 30.133041, 0.118774, 13.821799, 0.118774, 0.000000}}},
// { 2.253410, 0.181951, 12.933100, 101.397995, 0.000000 }}}, { Y, +3, {{ 46.660366, 10.369686, 4.623042,-62.170834, 17.471146, 19.023842},
//{ Gd, +3, {{ 24.346600, 20.420799, 11.870800, 3.714900, 0.645089 }, { -0.019971, 13.180257, 0.176398, -0.016727, 1.467348, 0.000000}}},
// { 2.135530, 0.155525, 10.578199, 21.702900, 0.000000 }}}, { Zr, +4, {{ 6.802956, 17.699253, 10.650647, -0.248108, 0.250338, 0.827902},
//{ Tb, 0, {{ 25.897600, 18.218500, 14.316700, 2.953540, 3.582240 }, { 0.096228, 1.296127, 11.240715, -0.219259, -0.219021, 0.000000}}},
// { 2.242560, 0.196143, 12.664800, 115.362000, 0.000000 }}}, { Nb, +3, {{ 17.714323, 1.675213, 7.483963, 8.322464, 11.143573, -8.339573},
//{ Tb, +3, {{ 24.955900, 20.327099, 12.247100, 3.773000, 0.691967 }, { 1.172419, 30.102791, 0.080255, -0.002983, 10.456687, 0.000000}}},
// { 2.056010, 0.149525, 10.049900, 21.277300, 0.000000 }}}, { Nb, +5, {{ 17.580206, 7.633277, 10.793497, 0.180884, 67.837921,-68.024780},
//{ Dy, 0, {{ 26.507000, 17.638300, 14.559600, 2.965770, 4.297280 }, { 1.165852, 0.078558, 9.507652, 31.621656, -0.000438, 0.000000}}},
// { 2.180200, 0.202172, 12.189899, 111.874001, 0.000000 }}}, { Mo, +3, {{ 7.447050, 17.778122, 11.886068, 1.997905, 1.789626, -1.898764},
//{ Dy, +3, {{ 25.539499, 20.286100, 11.981200, 4.500730, 0.689690 }, { 0.072000, 1.073145, 9.834720, 28.221746, -0.011674, 0.000000}}},
// { 1.980400, 0.143384, 9.349720, 19.580999, 0.000000 }}}, { Mo, +5, {{ 7.929879, 17.667669, 11.515987, 0.500402, 77.444084,-78.056595},
//{ Ho, 0, {{ 26.904900, 17.293999, 14.558300, 3.638370, 4.567960 }, { 0.068856, 1.068064, 9.046229, 26.558945, -0.000473, 0.000000}}},
// { 2.070510, 0.197940, 11.440700, 92.656601, 0.000000 }}}, { Mo, +6, {{ 34.757683, 9.653037, 6.584769,-18.628115, 2.490594, 1.141916},
//{ Ho, +3, {{ 26.129601, 20.099400, 11.978800, 4.936760, 0.852795 }, { 1.301770, 7.123843, 0.094097, 1.617443, 12.335434, 0.000000}}},
// { 1.910720, 0.139358, 8.800180, 18.590799, 0.000000 }}}, { Ru, +3, {{ 17.894758, 13.579529, 10.729251, 2.474095, 48.227997,-51.905243},
//{ Er, 0, {{ 27.656300, 16.428499, 14.977900, 2.982330, 5.920460 }, { 0.902827, 8.740579, 0.045125, 24.764954, -0.001699, 0.000000}}},
// { 2.073560, 0.223545, 11.360400, 105.703003, 0.000000 }}}, { Ru, +4, {{ 17.845776, 13.455084, 10.229087, 1.653524, 14.059795,-17.241762},
//{ Er, +3, {{ 26.722000, 19.774799, 12.150600, 5.173790, 1.176130 }, { 0.901070, 8.482392, 0.045972, 23.015272, -0.004889, 0.000000}}},
// { 1.846590, 0.137290, 8.362249, 17.897400, 0.000000 }}}, { Rh, +3, {{ 17.758621, 14.569813, 5.298320, 2.533579, 0.879753, 0.960843},
//{ Tm, 0, {{ 28.181900, 15.885099, 15.154200, 2.987060, 6.756210 }, { 0.841779, 8.319533, 0.069050, 23.709131, 0.069050, 0.000000}}},
// { 2.028590, 0.238849, 10.997499, 102.960999, 0.000000 }}}, { Rh, +4, {{ 17.716188, 14.446654, 5.185801, 1.703448, 0.989992, 0.959941},
//{ Tm, +3, {{ 27.308300, 19.332001, 12.333900, 5.383480, 1.639290 }, { 0.840572, 8.100647, 0.068995, 22.357307, 0.068995, 0.000000}}},
// { 1.787110, 0.136974, 7.967780, 17.292200, 0.000000 }}}, { Pd, +2, {{ 6.122282, 15.651012, 3.513508, 9.060790, 8.771199, 0.879336},
//{ Yb, 0, {{ 28.664101, 15.434500, 15.308700, 2.989630, 7.566720 }, { 0.062424, 8.018296, 24.784275, 0.776457, 0.776457, 0.000000}}},
// { 1.988900, 0.257119, 10.664700, 100.417000, 0.000000 }}}, { Pd, +4, {{ 6.152421,-96.069023, 31.622141, 81.578255, 17.801403, 0.915874},
//{ Yb, +2, {{ 28.120899, 17.681700, 13.333500, 5.146570, 3.709830 }, { 0.063951, 11.090354, 13.466152, 9.758302, 0.783014, 0.000000}}},
// { 1.785030, 0.159970, 8.183040, 20.389999, 0.000000 }}}, { Ag, +1, {{ 6.091192, 4.019526, 16.948174, 4.258638, 13.889437, 0.785127},
//{ Yb, +3, {{ 27.891700, 18.761400, 12.607200, 5.476470, 2.260010 }, { 0.056305, 0.719340, 7.758938, 27.368349, 0.719340, 0.000000}}},
// { 1.732720, 0.138790, 7.644120, 16.815300, 0.000000 }}}, { Ag, +2, {{ 6.401808, 48.699802, 4.799859,-32.332523, 16.356710, 1.068247},
//{ Lu, 0, {{ 28.947599, 15.220800, 15.100000, 3.716010, 7.976280 }, { 0.068167, 0.942270, 20.639496, 1.100365, 6.883131, 0.000000}}},
// { 1.901820, 9.985189, 0.261033, 84.329803, 0.000000 }}}, { Cd, +2, {{ 6.093711, 43.909691, 17.041306,-39.675117, 17.958918, 0.664795},
//{ Lu, +3, {{ 28.462799, 18.121000, 12.842899, 5.594150, 2.975730 }, { 0.050624, 8.654143, 15.621396, 11.082067, 0.667591, 0.000000}}},
// { 1.682160, 0.142292, 7.337270, 16.353500, 0.000000 }}}, { In, +3, {{ 6.206277, 18.497746, 3.078131, 10.524613, 7.401234, 0.293677},
//{ Hf, 0, {{ 29.143999, 15.172600, 14.758600, 4.300130, 8.581540 }, { 0.041357, 6.605563, 18.792250, 0.608082, 0.608082, 0.000000}}},
// { 1.832620, 9.599899, 0.275116, 72.028999, 0.000000 }}}, { Sn, +2, {{ 6.353672, 4.770377, 14.672025, 4.235959, 18.002131, -0.042519},
//{ Hf, +4, {{ 28.813099, 18.460100, 12.728500, 5.599270, 2.396990 }, { 0.034720, 6.167891, 6.167879, 29.006456, 0.561774, 0.000000}}},
// { 1.591360, 0.128903, 6.762320, 14.036600, 0.000000 }}}, { Sn, +4, {{ 15.445732, 6.420892, 4.562980, 1.713385, 18.033537, -0.172219},
//{ Ta, 0, {{ 29.202400, 15.229300, 14.513500, 4.764920, 9.243540 }, { 6.280898, 0.033144, 6.280899, 17.983601, 0.557980, 0.000000}}},
// { 1.773330, 9.370460, 0.295977, 63.364399, 0.000000 }}}, { Sb, +3, {{ 10.189171, 57.461918, 19.356573, 4.862206,-45.394096, 1.516108},
//{ Ta, +5, {{ 29.158699, 18.840700, 12.826799, 5.386950, 1.785550 }, { 0.089485, 0.375256, 5.357987, 22.153736, 0.297768, 0.000000}}},
// { 1.507110, 0.116741, 6.315240, 12.424400, 0.000000 }}}, { Sb, +5, {{ 17.920622, 6.647932, 12.724075, 1.555545, 7.600591, -0.445371},
//{ W, 0, {{ 29.081800, 15.430000, 14.432700, 5.119820, 9.887500 }, { 0.522315, 0.029487, 5.718210, 16.433775, 5.718204, 0.000000}}},
// { 1.720290, 9.225900, 0.321703, 57.056000, 0.000000 }}}, { I, -1, {{ 20.010330, 17.835524, 8.104130, 2.231118, 9.158548, -3.341004},
//{ W, +6, {{ 29.493599, 19.376301, 13.054399, 5.064120, 1.010740 }, { 4.565931, 0.444266, 32.430672, 95.149040, 0.014906, 0.000000}}},
// { 1.427550, 0.104621, 5.936670, 11.197200, 0.000000 }}}, { Cs, +1, {{ 19.939056, 24.967621, 10.375884, 0.454243, 17.660248,-19.394306},
//{ Re, 0, {{ 28.762100, 15.718900, 14.556400, 5.441740, 10.472000 }, { 3.770511, 0.004040, 25.311275, 76.537766, 0.384730, 0.000000}}},
// { 1.671910, 9.092270, 0.350500, 52.086098, 0.000000 }}}, { Ba, +2, {{ 19.750200, 17.513683, 10.884892, 0.321585, 65.149834,-59.618172},
//{ Os, 0, {{ 28.189400, 16.154999, 14.930500, 5.675890, 11.000500 }, { 3.430748, 0.361590, 21.358307, 70.309402, 0.001418, 0.000000}}},
// { 1.629030, 8.979480, 0.382661, 48.164700, 0.000000 }}}, { La, +3, {{ 19.688887, 17.345703, 11.356296, 0.099418, 82.358124,-76.846909},
//{ Os, +4, {{ 30.418999, 15.263700, 14.745800, 5.067950, 6.498040 }, { 3.146211, 0.339586, 18.753832, 90.345459, 0.001072, 0.000000}}},
// { 1.371130, 6.847060, 0.165191, 18.003000, 0.000000 }}}, { Ce, +3, {{ 26.593231, 85.866432, -6.677695, 12.111847, 17.401903,-80.313423},
//{ Ir, 0, {{ 27.304899, 16.729599, 15.611500, 5.833770, 11.472200 }, { 3.280381, 0.001012, 4.313575, 17.868504, 0.326962, 0.000000}}},
// { 1.592790, 8.865530, 0.417916, 45.001099, 0.000000 }}}, { Ce, +4, {{ 17.457533, 25.659941, 11.691037, 19.695251,-16.994749, -3.515096},
//{ Ir, +3, {{ 30.415600, 15.862000, 13.614500, 5.820080, 8.279030 }, { 0.311812, -0.003793, 16.568687, 2.886395, -0.008931, 0.000000}}},
// { 1.343230, 7.109090, 0.204633, 20.325399, 0.000000 }}}, { Pr, +3, {{ 20.879841, 36.035797, 12.135341, 0.283103, 17.167803,-30.500784},
//{ Ir, +4, {{ 30.705799, 15.551200, 14.232600, 5.536720, 6.968240 }, { 2.870897, 0.002364, 16.615236, 53.909359, 0.306993, 0.000000}}},
// { 1.309230, 6.719830, 0.167252, 17.491100, 0.000000 }}}, { Pr, +4, {{ 17.496082, 21.538509, 20.403114, 12.062211, -7.492043, -9.016722},
//{ Pt, 0, {{ 27.005899, 17.763901, 15.713100, 5.783700, 11.688300 }, { 0.294457, -0.002742, 2.772886, 15.804613, -0.013556, 0.000000}}},
// { 1.512930, 8.811740, 0.424593, 38.610298, 0.000000 }}}, { Nd, +3, {{ 17.120077, 56.038139, 21.468307, 10.000671, 2.905866,-50.541992},
//{ Pt, +2, {{ 29.842899, 16.722401, 13.215300, 6.352340, 9.853290 }, { 0.291295, 0.001421, 2.743681, 14.581367, 22.485098, 0.000000}}},
// { 1.329270, 7.389790, 0.263297, 22.942600, 0.000000 }}}, { Pm, +3, {{ 22.221066, 17.068142, 12.805423, 0.435687, 52.238770,-46.767181},
//{ Pt, +4, {{ 30.961201, 15.982900, 13.734800, 5.920340, 7.395340 }, { 2.635767, 0.277039, 14.927315, 45.768017, 0.001455, 0.000000}}},
// { 1.248130, 6.608340, 0.168640, 16.939199, 0.000000 }}}, { Sm, +3, {{ 15.618565, 19.538092, 13.398946, -4.358811, 24.490461, -9.714854},
//{ Au, 0, {{ 16.881901, 18.591299, 25.558201, 5.860000, 12.065800 }, { 0.006001, 0.306379, 14.979594, 0.748825, 2.454492, 0.000000}}},
// { 0.461100, 8.621600, 1.482600, 36.395599, 0.000000 }}}, { Eu, +2, {{ 23.899035, 31.657497, 12.955752, 1.700576, 16.992199,-26.204315},
//{ Au, +1, {{ 28.010899, 17.820400, 14.335899, 6.580770, 11.229900 }, { 2.467332, 0.002230, 13.625002, 35.089481, 0.253136, 0.000000}}},
// { 1.353210, 7.739500, 0.356752, 26.404301, 0.000000 }}}, { Eu, +3, {{ 17.758327, 33.498665, 24.067188, 13.436883, -9.019134,-19.768026},
//{ Au, +3, {{ 30.688599, 16.902901, 12.780100, 6.523540, 9.096800 }, { 0.244474, -0.003901, 2.487526, 14.568011, -0.015628, 0.000000}}},
// { 1.219900, 6.828720, 0.212867, 18.659000, 0.000000 }}}, { Gd, +3, {{ 24.344999, 16.945311, 13.866931, 0.481674, 93.506378,-88.147179},
//{ Hg, 0, {{ 20.680901, 19.041700, 21.657499, 5.967600, 12.608900 }, { 2.333971, 0.239215, 12.982995, 43.876347, 0.000673, 0.000000}}},
// { 0.545000, 8.448400, 1.572900, 38.324600, 0.000000 }}}, { Tb, +3, {{ 24.878252, 16.856016, 13.663937, 1.279671, 39.271294,-33.950317},
//{ Hg, +1, {{ 25.085300, 18.497299, 16.888300, 6.482160, 12.020500 }, { 2.223301, 0.227290, 11.812528, 29.910065, 0.001527, 0.000000}}},
// { 1.395070, 7.651050, 0.443378, 28.226200, 0.000000 }}}, { Dy, +3, {{ 16.864344, 90.383461, 13.675473, 1.687078, 25.540651,-85.150650},
//{ Hg, +2, {{ 29.564100, 18.059999, 12.837400, 6.899120, 10.626800 }, { 0.216275, 0.000593, 11.121207, 26.250975, 2.135930, 0.000000}}},
// { 1.211520, 7.056390, 0.284738, 20.748199, 0.000000 }}}, { Ho, +3, {{ 16.837524, 63.221336, 13.703766, 2.061602, 26.202621,-58.026505},
//{ Tl, 0, {{ 27.544600, 19.158400, 15.538000, 5.525930, 13.174600 }, { 0.206873, 0.000796, 10.500283, 24.031883, 2.055060, 0.000000}}},
// { 0.655150, 8.707510, 1.963470, 45.814899, 0.000000 }}}, { Er, +3, {{ 16.810127, 22.681061, 13.864114, 2.294506, 26.864477,-17.513460},
//{ Tl, +1, {{ 21.398500, 20.472300, 18.747799, 6.828470, 12.525800 }, { 0.198293, 0.002126, 9.973341, 22.836388, 1.979442, 0.000000}}},
// { 1.471100, 0.517394, 7.434630, 28.848200, 0.000000 }}}, { Tm, +3, {{ 16.787500, 15.350905, 14.182357, 2.299111, 27.573771,-10.192087},
//{ Tl, +3, {{ 30.869499, 18.384100, 11.932800, 7.005740, 9.802700 }, { 0.190852, 0.003036, 9.602934, 22.526880, 1.912862, 0.000000}}},
// { 1.100800, 6.538520, 0.219074, 17.211399, 0.000000 }}}, { Yb, +2, {{ 28.443794, 16.849527, 14.165081, 3.445311, 28.308853,-23.214935},
//{ Pb, 0, {{ 31.061699, 13.063700, 18.441999, 5.969600, 13.411800 }, { 1.863896, 0.183811, 9.225469, 23.691355, 0.001463, 0.000000}}},
// { 0.690200, 2.357600, 8.618000, 47.257900, 0.000000 }}}, { Yb, +3, {{ 28.191629, 16.828087, 14.167848, 2.744962, 23.171774,-18.103676},
//{ Pb, +2, {{ 21.788601, 19.568199, 19.140600, 7.011070, 12.473400 }, { 1.842889, 0.182788, 9.045957, 20.799847, 0.001759, 0.000000}}},
// { 1.336600, 0.488383, 6.772700, 23.813200, 0.000000 }}}, { Lu, +3, {{ 28.828693, 16.823227, 14.247617, 3.079559, 25.647667,-20.626528},
//{ Pb, +4, {{ 32.124397, 18.800301, 12.017500, 6.968860, 8.084280 }, { 1.776641, 0.175560, 8.575531, 19.693701, 0.001453, 0.000000}}},
// { 1.005660, 6.109260, 0.147041, 14.714000, 0.000000 }}}, { Hf, +4, {{ 29.267378, 16.792543, 14.785310, 2.184128, 23.791996,-18.820383},
//{ Bi, 0, {{ 33.368900, 12.951000, 16.587700, 6.469200, 13.578199 }, { 1.697911, 0.168313, 8.190025, 18.277578, 0.001431, 0.000000}}},
// { 0.704000, 2.923800, 8.793700, 48.009300, 0.000000 }}}, { Ta, +5, {{ 29.539469, 16.741854, 15.182070, 1.642916, 16.437447,-11.542459},
//{ Bi, +3, {{ 21.805300, 19.502600, 19.105301, 7.102950, 12.471100 }, { 1.612934, 0.160460, 7.654408, 17.070732, 0.001858, 0.000000}}},
// { 1.235600, 6.241490, 0.469999, 20.318501, 0.000000 }}}, { W, +6, {{ 29.729357, 17.247808, 15.184488, 1.154652, 0.739335, 3.945157},
//{ Bi, +5, {{ 33.536400, 25.094601, 19.249699, 6.915550, -6.799400 }, { 1.501648, 0.140803, 6.880573, 14.299601, 14.299618, 0.000000}}},
// { 0.916540, 0.390420, 5.714140, 12.828500, 0.000000 }}}, { Os, +4, {{ 17.113485, 15.792370, 23.342392, 4.090271, 7.671292, 3.988390},
//{ Po, 0, {{ 34.672600, 15.473300, 13.113800, 7.025880, 13.677000 }, { 0.131850, 7.288542, 1.389307, 19.629425, 1.389307, 0.000000}}},
// { 0.700999, 3.550780, 9.556419, 47.004501, 0.000000 }}}, { Ir, +3, {{ 31.537575, 16.363338, 15.597141, 5.051404, 1.436935, 4.009459},
//{ At, 0, {{ 35.316299, 19.021099, 9.498870, 7.425180, 13.710800 }, { 1.334144, 7.451918, 0.127514, 21.705648, 0.127515, 0.000000}}},
// { 0.685870, 3.974580, 11.382400, 45.471500, 0.000000 }}}, { Ir, +4, {{ 30.391249, 16.146996, 17.019068, 4.458904, 0.975372, 4.006865},
//{ Rn, 0, {{ 35.563099, 21.281601, 8.003700, 7.443300, 13.690500 }, { 1.328519, 7.181766, 0.127337, 19.060146, 1.328519, 0.000000}}},
// { 0.663100, 4.069100, 14.042200, 44.247299, 0.000000 }}}, { Pt, +2, {{ 31.986849, 17.249048, 15.269374, 5.760234, 1.694079, 4.032512},
//{ Fr, 0, {{ 35.929901, 23.054699, 12.143900, 2.112530, 13.724700 }, { 1.281143, 7.625512, 0.123571, 24.190826, 0.123571, 0.000000}}},
// { 0.646453, 4.176190, 23.105200, 150.644989, 0.000000 }}}, { Pt, +4, {{ 41.932713, 16.339224, 17.653894, 6.012420,-12.036877, 4.094551},
//{ Ra, 0, {{ 35.763000, 22.906399, 12.473900, 3.210970, 13.621099 }, { 1.111409, 6.466086, 0.128917, 16.954155, 0.778721, 0.000000}}},
// { 0.616341, 3.871350, 19.988701, 142.324997, 0.000000 }}}, { Au, +1, {{ 32.124306, 16.716476, 16.814100, 7.311565, 0.993064, 4.040792},
//{ Ra, +2, {{ 35.215000, 21.670000, 7.913420, 7.650780, 13.543100 }, { 1.216073, 7.165378, 0.118715, 20.442486, 53.095985, 0.000000}}},
// { 0.604909, 3.576700, 12.601000, 29.843599, 0.000000 }}}, { Au, +3, {{ 31.704271, 17.545767, 16.819551, 5.522640, 0.361725, 4.042679},
//{ Ac, 0, {{ 35.659698, 23.103199, 12.597700, 4.086550, 13.526600 }, { 1.215561, 7.220506, 0.118812, 20.050970, 1.215562, 0.000000}}},
// { 0.589092, 3.651550, 18.598999, 117.019997, 0.000000 }}}, { Hg, +1, {{ 28.866837, 19.277540, 16.776051, 6.281459, 3.710289, 4.068430},
//{ Ac, +3, {{ 35.173599, 22.111200, 8.192160, 7.055450, 13.463699 }, { 1.173967, 7.583842, 0.115351, 29.055994, 1.173968, 0.000000}}},
// { 0.579689, 3.414370, 12.918700, 25.944300, 0.000000 }}}, { Hg, +2, {{ 32.411079, 18.690371, 16.711773, 9.974835, -3.847611, 4.052869},
//{ Th, 0, {{ 35.564499, 23.421900, 12.747300, 4.807030, 13.431400 }, { 1.162980, 7.329806, 0.114518, 22.009489, 22.009493, 0.000000}}},
// { 0.563359, 3.462040, 17.830900, 99.172195, 0.000000 }}}, { Tl, +1, {{ 32.295044, 16.570049, 17.991013, 1.535355, 7.554591, 4.054030},
//{ Th, +4, {{ 35.100700, 22.441799, 9.785540, 5.294440, 13.375999 }, { 1.101544, 0.110020, 6.528559, 52.495068, 20.338634, 0.000000}}},
// { 0.555054, 3.244980, 13.466100, 23.953300, 0.000000 }}}, { Tl, +3, {{ 32.525639, 19.139185, 17.100321, 5.891115, 12.599463, -9.256075},
//{ Pa, 0, {{ 35.884701, 23.294800, 14.189100, 4.172870, 13.428699 }, { 1.094966, 6.900992, 0.103667, 18.489614, -0.001401, 0.000000}}},
// { 0.547751, 3.415190, 16.923500, 105.250999, 0.000000 }}}, { Pb, +2, {{ 27.392647, 16.496822, 19.984501, 6.813923, 5.233910, 4.065623},
//{ U, 0, {{ 36.022800, 23.412800, 14.949100, 4.188000, 13.396600 }, { 1.058874, 0.106305, 6.708123, 24.395554, 1.058874, 0.000000}}},
// { 0.529300, 3.325300, 16.092699, 100.612999, 0.000000 }}}, { Pb, +4, {{ 32.505657, 20.014240, 14.645661, 5.029499, 1.760138, 4.044678},
//{ U, +3, {{ 35.574699, 22.525900, 12.216499, 5.370730, 13.309200 }, { 1.047035, 6.670321, 0.105279, 16.525040, 0.105279, 0.000000}}},
// { 0.520480, 3.122930, 12.714800, 26.339399, 0.000000 }}}, { Bi, +3, {{ 32.461437, 19.438683, 16.302486, 7.322662, 0.431704, 4.043703},
//{ U, +4, {{ 35.371498, 22.532600, 12.029100, 4.798400, 13.267099 }, { 0.997930, 6.038867, 0.101338, 18.371586, 46.361046, 0.000000}}},
// { 0.516598, 3.050530, 12.572300, 23.458200, 0.000000 }}}, { Bi, +5, {{ 16.734028, 20.580494, 9.452623, 61.155834,-34.041023, 4.113663},
//{ U, +6, {{ 34.850899, 22.758400, 14.009900, 1.214570, 13.166500 }, { 0.105076, 4.773282, 11.762162, 1.211775, 1.619408, 0.000000}}},
// { 0.507079, 2.890300, 13.176700, 25.201700, 0.000000 }}}, { Ra, +2, {{ 4.986228, 32.474945, 21.947443, 11.800013, 10.807292, 3.956572},
//{ Np, 0, {{ 36.187401, 23.596399, 15.640200, 4.185500, 13.357300 }, { 0.082597, 0.791468, 4.608034, 24.792431, 0.082597, 0.000000}}},
// { 0.511929, 3.253960, 15.362200, 97.490799, 0.000000 }}}, { Ac, +3, {{ 15.584983, 32.022125, 21.456327, 0.757593, 12.341252, 3.838984},
//{ Np, +3, {{ 35.707397, 22.612999, 12.989799, 5.432270, 13.254400 }, { 0.077438, 0.739963, 4.040735, 47.525002, 19.406845, 0.000000}}},
// { 0.502322, 3.038070, 12.144899, 25.492800, 0.000000 }}}, { Th, +4, {{ 15.515445, 32.090691, 13.996399, 12.918157, 7.635514, 3.831122},
//{ Np, +4, {{ 35.510300, 22.578699, 12.776600, 4.921590, 13.211599 }, { 0.074499, 0.711663, 3.871044, 18.596891, 3.871044, 0.000000}}},
// { 0.498626, 2.966270, 11.948400, 22.750200, 0.000000 }}}, { U, +3, {{ 15.360309, 32.395657, 21.961290, 1.325894, 14.251453, 3.706622},
//{ Np, +6, {{ 35.013599, 22.728600, 14.388400, 1.756690, 13.113000 }, { 0.067815, 0.654643, 3.643409, 39.604965, 16.330570, 0.000000}}},
// { 0.489810, 2.810990, 12.330000, 22.658100, 0.000000 }}}, { U, +4, {{ 15.355091, 32.235306, 0.557745, 14.396367, 21.751173, 3.705863},
//{ Pu, 0, {{ 36.525398, 23.808300, 16.770700, 3.479470, 13.381200 }, { 0.067789, 0.652613, 42.354237, 15.908239, 3.553231, 0.000000}}},
// { 0.499384, 3.263710, 14.945499, 105.979996, 0.000000 }}}, { U, +6, {{ 15.333844, 31.770849, 21.274414, 13.872636, 0.048519, 3.700591},
//{ Pu, +3, {{ 35.840000, 22.716900, 13.580700, 5.660160, 13.199100 }, { 0.067644, 0.646384, 3.317894, 14.650250, 75.339699, 0.000000}}},
// { 0.484936, 2.961180, 11.533100, 24.399200, 0.000000 }}}, { Np, +3, {{ 15.378152, 32.572132, 22.206125, 1.413295, 14.828381, 3.603370},
//{ Pu, +4, {{ 35.649300, 22.646000, 13.359500, 5.188310, 13.155500 }, { 0.064613, 0.631420, 3.561936, 37.875511, 15.546129, 0.000000}}},
// { 0.481422, 2.890200, 11.316000, 21.830099, 0.000000 }}}, { Np, +4, {{ 15.373926, 32.423019, 21.969994, 0.662078, 14.969350, 3.603039},
//{ Pu, +6, {{ 35.173599, 22.718100, 14.763500, 2.286780, 13.058200 }, { 0.064597, 0.629658, 3.476389, 39.438942, 15.135764, 0.000000}}},
// { 0.473204, 2.738480, 11.552999, 20.930300, 0.000000 }}}, { Np, +6, {{ 15.359986, 31.992825, 21.412458, 0.066574, 14.568174, 3.600942},
//{ Am, 0, {{ 36.670601, 24.099199, 17.341499, 3.493310, 13.359200 }, { 0.064528, 0.624505, 3.253441, 67.658318, 13.980832, 0.000000}}},
// { 0.483629, 3.206470, 14.313600, 102.272995, 0.000000 }}}, { Pu, +3, {{ 15.356004, 32.769127, 22.680210, 1.351055, 15.416232, 3.428895},
//{ Cm, 0, {{ 36.648800, 24.409599, 17.399000, 4.216650, 13.288700 }, { 0.060590, 0.604663, 3.491509, 37.260635, 14.981921, 0.000000}}},
// { 0.465154, 3.089970, 13.434600, 88.483398, 0.000000 }}}, { Pu, +4, {{ 15.416219, 32.610569, 22.256662, 0.719495, 15.518152, 3.480408},
//{ Bk, 0, {{ 36.788101, 24.773600, 17.891899, 4.232840, 13.275400 }, { 0.061456, 0.607938, 3.411848, 37.628792, 14.464360, 0.000000}}},
// { 0.451018, 3.046190, 12.894600, 86.002998, 0.000000 }}}, { Pu, +6, {{ 15.436506, 32.289719, 14.726737, 15.012391, 7.024677, 3.502325},
//{ Cf, 0, {{ 36.918499, 25.199499, 18.331699, 4.243910, 13.267400 }, { 0.061815, 0.606541, 3.245363, 13.616438, 3.245364, 0.000000}}}
// { 0.437533, 3.007750, 12.404400, 83.788101, 0.000000}}},
{ H, 0, {{ 0.413048, 0.294953, 0.187491, 0.080701, 0.023736, 0.000049},
{ 15.569946, 32.398468, 5.711404, 61.889874, 1.334118, 0.000000}}},
{ He, 0, {{ 0.732354, 0.753896, 0.283819, 0.190003, 0.039139, 0.000487},
{ 11.553918, 4.595831, 1.546299, 26.463964, 0.377523, 0.000000}}},
{ Li, 0, {{ 0.974637, 0.158472, 0.811855, 0.262416, 0.790108, 0.002542},
{ 4.334946, 0.342451, 97.102966,201.363831, 1.409234, 0.000000}}},
{ Be, 0, {{ 1.533712, 0.638283, 0.601052, 0.106139, 1.118414, 0.002511},
{ 42.662079, 0.595420, 99.106499, 0.151340, 1.843093, 0.000000}}},
{ B, 0, {{ 2.085185, 1.064580, 1.062788, 0.140515, 0.641784, 0.003823},
{ 23.494068, 1.137894, 61.238976, 0.114886, 0.399036, 0.000000}}},
{ C, 0, {{ 2.657506, 1.078079, 1.490909, -4.241070, 0.713791, 4.297983},
{ 14.780758, 0.776775, 42.086842, -0.000294, 0.239535, 0.000000}}},
{ N, 0, {{ 11.893780, 3.277479, 1.858092, 0.858927, 0.912985,-11.804902},
{ 0.000158, 10.232723, 30.344690, 0.656065, 0.217287, 0.000000}}},
{ O, 0, {{ 2.960427, 2.508818, 0.637853, 0.722838, 1.142756, 0.027014},
{ 14.182259, 5.936858, 0.112726, 34.958481, 0.390240, 0.000000}}},
{ F, 0, {{ 3.511943, 2.772244, 0.678385, 0.915159, 1.089261, 0.032557},
{ 10.687859, 4.380466, 0.093982, 27.255203, 0.313066, 0.000000}}},
{ Ne, 0, {{ 4.183749, 2.905726, 0.520513, 1.135641, 1.228065, 0.025576},
{ 8.175457, 3.252536, 0.063295, 21.813910, 0.224952, 0.000000}}},
{ Na, 0, {{ 4.910127, 3.081783, 1.262067, 1.098938, 0.560991, 0.079712},
{ 3.281434, 9.119178, 0.102763,132.013947, 0.405878, 0.000000}}},
{ Mg, 0, {{ 4.708971, 1.194814, 1.558157, 1.170413, 3.239403, 0.126842},
{ 4.875207,108.506081, 0.111516, 48.292408, 1.928171, 0.000000}}},
{ Al, 0, {{ 4.730796, 2.313951, 1.541980, 1.117564, 3.154754, 0.139509},
{ 3.628931, 43.051167, 0.095960,108.932388, 1.555918, 0.000000}}},
{ Si, 0, {{ 5.275329, 3.191038, 1.511514, 1.356849, 2.519114, 0.145073},
{ 2.631338, 33.730728, 0.081119, 86.288643, 1.170087, 0.000000}}},
{ P, 0, {{ 1.950541, 4.146930, 1.494560, 1.522042, 5.729711, 0.155233},
{ 0.908139, 27.044952, 0.071280, 67.520187, 1.981173, 0.000000}}},
{ S, 0, {{ 6.372157, 5.154568, 1.473732, 1.635073, 1.209372, 0.154722},
{ 1.514347, 22.092527, 0.061373, 55.445175, 0.646925, 0.000000}}},
{ Cl, 0, {{ 1.446071, 6.870609, 6.151801, 1.750347, 0.634168, 0.146773},
{ 0.052357, 1.193165, 18.343416, 46.398396, 0.401005, 0.000000}}},
{ Ar, 0, {{ 7.188004, 6.638454, 0.454180, 1.929593, 1.523654, 0.265954},
{ 0.956221, 15.339877, 15.339862, 39.043823, 0.062409, 0.000000}}},
{ K, 0, {{ 8.163991, 7.146945, 1.070140, 0.877316, 1.486434, 0.253614},
{ 12.816323, 0.808945,210.327011, 39.597652, 0.052821, 0.000000}}},
{ Ca, 0, {{ 8.593655, 1.477324, 1.436254, 1.182839, 7.113258, 0.196255},
{ 10.460644, 0.041891, 81.390381,169.847839, 0.688098, 0.000000}}},
{ Sc, 0, {{ 1.476566, 1.487278, 1.600187, 9.177463, 7.099750, 0.157765},
{ 53.131023, 0.035325,137.319489, 9.098031, 0.602102, 0.000000}}},
{ Ti, 0, {{ 9.818524, 1.522646, 1.703101, 1.768774, 7.082555, 0.102473},
{ 8.001879, 0.029763, 39.885422,120.157997, 0.532405, 0.000000}}},
{ V, 0, {{ 10.473575, 1.547881, 1.986381, 1.865616, 7.056250, 0.067744},
{ 7.081940, 0.026040, 31.909672,108.022842, 0.474882, 0.000000}}},
{ Cr, 0, {{ 11.007069, 1.555477, 2.985293, 1.347855, 7.034779, 0.065510},
{ 6.366281, 0.023987, 23.244839,105.774498, 0.429369, 0.000000}}},
{ Mn, 0, {{ 11.709542, 1.733414, 2.673141, 2.023368, 7.003180, -0.147293},
{ 5.597120, 0.017800, 21.788420, 89.517914, 0.383054, 0.000000}}},
{ Fe, 0, {{ 12.311098, 1.876623, 3.066177, 2.070451, 6.975185, -0.304931},
{ 5.009415, 0.014461, 18.743040, 82.767876, 0.346506, 0.000000}}},
{ Co, 0, {{ 12.914510, 2.481908, 3.466894, 2.106351, 6.960892, -0.936572},
{ 4.507138, 0.009126, 16.438129, 76.987320, 0.314418, 0.000000}}},
{ Ni, 0, {{ 13.521865, 6.947285, 3.866028, 2.135900, 4.284731, -2.762697},
{ 4.077277, 0.286763, 14.622634, 71.966080, 0.004437, 0.000000}}},
{ Cu, 0, {{ 14.014192, 4.784577, 5.056806, 1.457971, 6.932996, -3.254477},
{ 3.738280, 0.003744, 13.034982, 72.554794, 0.265666, 0.000000}}},
{ Zn, 0, {{ 14.741002, 6.907748, 4.642337, 2.191766, 38.424042,-36.915829},
{ 3.388232, 0.243315, 11.903689, 63.312130, 0.000397, 0.000000}}},
{ Ga, 0, {{ 15.758946, 6.841123, 4.121016, 2.714681, 2.395246, -0.847395},
{ 3.121754, 0.226057, 12.482196, 66.203621, 0.007238, 0.000000}}},
{ Ge, 0, {{ 16.540613, 1.567900, 3.727829, 3.345098, 6.785079, 0.018726},
{ 2.866618, 0.012198, 13.432163, 58.866047, 0.210974, 0.000000}}},
{ As, 0, {{ 17.025642, 4.503441, 3.715904, 3.937200, 6.790175, -2.984117},
{ 2.597739, 0.003012, 14.272119, 50.437996, 0.193015, 0.000000}}},
{ Se, 0, {{ 17.354071, 4.653248, 4.259489, 4.136455, 6.749163, -3.160982},
{ 2.349787, 0.002550, 15.579460, 45.181202, 0.177432, 0.000000}}},
{ Br, 0, {{ 17.550570, 5.411882, 3.937180, 3.880645, 6.707793, -2.492088},
{ 2.119226, 16.557184, 0.002481, 42.164009, 0.162121, 0.000000}}},
{ Kr, 0, {{ 17.655279, 6.848105, 4.171004, 3.446760, 6.685200, -2.810592},
{ 1.908231, 16.606236, 0.001598, 39.917473, 0.146896, 0.000000}}},
{ Rb, 0, {{ 8.123134, 2.138042, 6.761702, 1.156051, 17.679546, 1.139548},
{ 15.142385, 33.542667, 0.129372,224.132507, 1.713368, 0.000000}}},
{ Sr, 0, {{ 17.730219, 9.795867, 6.099763, 2.620025, 0.600053, 1.140251},
{ 1.563060, 14.310868, 0.120574,135.771317, 0.120574, 0.000000}}},
{ Y, 0, {{ 17.792040, 10.253252, 5.714949, 3.170516, 0.918251, 1.131787},
{ 1.429691, 13.132816, 0.112173,108.197029, 0.112173, 0.000000}}},
{ Zr, 0, {{ 17.859772, 10.911038, 5.821115, 3.512513, 0.746965, 1.124859},
{ 1.310692, 12.319285, 0.104353, 91.777542, 0.104353, 0.000000}}},
{ Nb, 0, {{ 17.958399, 12.063054, 5.007015, 3.287667, 1.531019, 1.123452},
{ 1.211590, 12.246687, 0.098615, 75.011948, 0.098615, 0.000000}}},
{ Mo, 0, {{ 6.236218, 17.987711, 12.973127, 3.451426, 0.210899, 1.108770},
{ 0.090780, 1.108310, 11.468720, 66.684151, 0.090780, 0.000000}}},
{ Tc, 0, {{ 17.840963, 3.428236, 1.373012, 12.947364, 6.335469, 1.074784},
{ 1.005729, 41.901382,119.320541, 9.781542, 0.083391, 0.000000}}},
{ Ru, 0, {{ 6.271624, 17.906738, 14.123269, 3.746008, 0.908235, 1.043992},
{ 0.077040, 0.928222, 9.555345, 35.860680,123.552246, 0.000000}}},
{ Rh, 0, {{ 6.216648, 17.919739, 3.854252, 0.840326, 15.173498, 0.995452},
{ 0.070789, 0.856121, 33.889484,121.686691, 9.029517, 0.000000}}},
{ Pd, 0, {{ 6.121511, 4.784063, 16.631683, 4.318258, 13.246773, 0.883099},
{ 0.062549, 0.784031, 8.751391, 34.489983, 0.784031, 0.000000}}},
{ Ag, 0, {{ 6.073874, 17.155437, 4.173344, 0.852238, 17.988686, 0.756603},
{ 0.055333, 7.896512, 28.443739,110.376106, 0.716809, 0.000000}}},
{ Cd, 0, {{ 6.080986, 18.019468, 4.018197, 1.303510, 17.974669, 0.603504},
{ 0.048990, 7.273646, 29.119284, 95.831207, 0.661231, 0.000000}}},
{ In, 0, {{ 6.196477, 18.816183, 4.050479, 1.638929, 17.962912, 0.333097},
{ 0.042072, 6.695665, 31.009790,103.284348, 0.610714, 0.000000}}},
{ Sn, 0, {{ 19.325171, 6.281571, 4.498866, 1.856934, 17.917318, 0.119024},
{ 6.118104, 0.036915, 32.529045, 95.037186, 0.565651, 0.000000}}},
{ Sb, 0, {{ 5.394956, 6.549570, 19.650681, 1.827820, 17.867832, -0.290506},
{ 33.326523, 0.030974, 5.564929, 87.130966, 0.523992, 0.000000}}},
{ Te, 0, {{ 6.660302, 6.940756, 19.847015, 1.557175, 17.802427, -0.806668},
{ 33.031654, 0.025750, 5.065547, 84.101616, 0.487660, 0.000000}}},
{ I, 0, {{ 19.884502, 6.736593, 8.110516, 1.170953, 17.548716, -0.448811},
{ 4.628591, 0.027754, 31.849096, 84.406387, 0.463550, 0.000000}}},
{ Xe, 0, {{ 19.978920, 11.774945, 9.332182, 1.244749, 17.737501, -6.065902},
{ 4.143356, 0.010142, 28.796200, 75.280685, 0.413616, 0.000000}}},
{ Cs, 0, {{ 17.418674, 8.314444, 10.323193, 1.383834, 19.876251, -2.322802},
{ 0.399828, 0.016872, 25.605827,233.339676, 3.826915, 0.000000}}},
{ Ba, 0, {{ 19.747343, 17.368477, 10.465718, 2.592602, 11.003653, -5.183497},
{ 3.481823, 0.371224, 21.226641,173.834274, 0.010719, 0.000000}}},
{ La, 0, {{ 19.966019, 27.329655, 11.018425, 3.086696, 17.335455,-21.745489},
{ 3.197408, 0.003446, 19.955492,141.381973, 0.341817, 0.000000}}},
{ Ce, 0, {{ 17.355122, 43.988499, 20.546650, 3.130670, 11.353665,-38.386017},
{ 0.328369, 0.002047, 3.088196,134.907654, 18.832960, 0.000000}}},
{ Pr, 0, {{ 21.551311, 17.161730, 11.903859, 2.679103, 9.564197, -3.871068},
{ 2.995675, 0.312491, 17.716705,152.192825, 0.010468, 0.000000}}},
{ Nd, 0, {{ 17.331244, 62.783924, 12.160097, 2.663483, 22.239950,-57.189842},
{ 0.300269, 0.001320, 17.026001,148.748993, 2.910268, 0.000000}}},
{ Pm, 0, {{ 17.286388, 51.560162, 12.478557, 2.675515, 22.960947,-45.973682},
{ 0.286620, 0.001550, 16.223755,143.984512, 2.796480, 0.000000}}},
{ Sm, 0, {{ 23.700363, 23.072214, 12.777782, 2.684217, 17.204367,-17.452166},
{ 2.689539, 0.003491, 15.495437,139.862473, 0.274536, 0.000000}}},
{ Eu, 0, {{ 17.186195, 37.156837, 13.103387, 2.707246, 24.419271,-31.586687},
{ 0.261678, 0.001995, 14.787360,134.816299, 2.581883, 0.000000}}},
{ Gd, 0, {{ 24.898117, 17.104952, 13.222581, 3.266152, 48.995213,-43.505684},
{ 2.435028, 0.246961, 13.996325,110.863091, 0.001383, 0.000000}}},
{ Tb, 0, {{ 25.910013, 32.344139, 13.765117, 2.751404, 17.064405,-26.851971},
{ 2.373912, 0.002034, 13.481969,125.836510, 0.236916, 0.000000}}},
{ Dy, 0, {{ 26.671785, 88.687576, 14.065445, 2.768497, 17.067781,-83.279831},
{ 2.282593, 0.000665, 12.920230,121.937187, 0.225531, 0.000000}}},
{ Ho, 0, {{ 27.150190, 16.999819, 14.059334, 3.386979, 46.546471,-41.165253},
{ 2.169660, 0.215414, 12.213148,100.506783, 0.001211, 0.000000}}},
{ Er, 0, {{ 28.174887, 82.493271, 14.624002, 2.802756, 17.018515,-77.135223},
{ 2.120995, 0.000640, 11.915256,114.529938, 0.207519, 0.000000}}},
{ Tm, 0, {{ 28.925894, 76.173798, 14.904704, 2.814812, 16.998117,-70.839813},
{ 2.046203, 0.000656, 11.465375,111.411980, 0.199376, 0.000000}}},
{ Yb, 0, {{ 29.676760, 65.624069, 15.160854, 2.830288, 16.997850,-60.313812},
{ 1.977630, 0.000720, 11.044622,108.139153, 0.192110, 0.000000}}},
{ Lu, 0, {{ 30.122866, 15.099346, 56.314899, 3.540980, 16.943729,-51.049416},
{ 1.883090, 10.342764, 0.000780, 89.559250, 0.183849, 0.000000}}},
{ Hf, 0, {{ 30.617033, 15.145351, 54.933548, 4.096253, 16.896156,-49.719837},
{ 1.795613, 9.934469, 0.000739, 76.189705, 0.175914, 0.000000}}},
{ Ta, 0, {{ 31.066359, 15.341823, 49.278297, 4.577665, 16.828321,-44.119026},
{ 1.708732, 9.618455, 0.000760, 66.346199, 0.168002, 0.000000}}},
{ W, 0, {{ 31.507900, 15.682498, 37.960129, 4.885509, 16.792112,-32.864574},
{ 1.629485, 9.446448, 0.000898, 59.980675, 0.160798, 0.000000}}},
{ Re, 0, {{ 31.888456, 16.117104, 42.390297, 5.211669, 16.767591,-37.412682},
{ 1.549238, 9.233474, 0.000689, 54.516373, 0.152815, 0.000000}}},
{ Os, 0, {{ 32.210297, 16.678440, 48.559906, 5.455839, 16.735533,-43.677956},
{ 1.473531, 9.049695, 0.000519, 50.210201, 0.145771, 0.000000}}},
{ Ir, 0, {{ 32.004436, 1.975454, 17.070105, 15.939454, 5.990003, 4.018893},
{ 1.353767, 81.014175, 0.128093, 7.661196, 26.659403, 0.000000}}},
{ Pt, 0, {{ 31.273891, 18.445440, 17.063745, 5.555933, 1.575270, 4.050394},
{ 1.316992, 8.797154, 0.124741, 40.177994, 1.316997, 0.000000}}},
{ Au, 0, {{ 16.777390, 19.317156, 32.979683, 5.595453, 10.576854, -6.279078},
{ 0.122737, 8.621570, 1.256902, 38.008820, 0.000601, 0.000000}}},
{ Hg, 0, {{ 16.839890, 20.023823, 28.428564, 5.881564, 4.714706, 4.076478},
{ 0.115905, 8.256927, 1.195250, 39.247227, 1.195250, 0.000000}}},
{ Tl, 0, {{ 16.630795, 19.386616, 32.808571, 1.747191, 6.356862, 4.066939},
{ 0.110704, 7.181401, 1.119730, 90.660263, 26.014978, 0.000000}}},
{ Pb, 0, {{ 16.419567, 32.738590, 6.530247, 2.342742, 19.916475, 4.049824},
{ 0.105499, 1.055049, 25.025890, 80.906593, 6.664449, 0.000000}}},
{ Bi, 0, {{ 16.282274, 32.725136, 6.678302, 2.694750, 20.576559, 4.040914},
{ 0.101180, 1.002287, 25.714146, 77.057549, 6.291882, 0.000000}}},
{ Po, 0, {{ 16.289164, 32.807171, 21.095163, 2.505901, 7.254589, 4.046556},
{ 0.098121, 0.966265, 6.046622, 76.598068, 28.096128, 0.000000}}},
{ At, 0, {{ 16.011461, 32.615547, 8.113899, 2.884082, 21.377867, 3.995684},
{ 0.092639, 0.904416, 26.543257, 68.372963, 5.499512, 0.000000}}},
{ Rn, 0, {{ 16.070229, 32.641106, 21.489658, 2.299218, 9.480184, 4.020977},
{ 0.090437, 0.876409, 5.239687, 69.188477, 27.632641, 0.000000}}},
{ Fr, 0, {{ 16.007385, 32.663830, 21.594351, 1.598497, 11.121192, 4.003472},
{ 0.087031, 0.840187, 4.954467,199.805801, 26.905106, 0.000000}}},
{ Ra, 0, {{ 32.563690, 21.396671, 11.298093, 2.834688, 15.914965, 3.981773},
{ 0.801980, 4.590666, 22.758972,160.404388, 0.083544, 0.000000}}},
{ Ac, 0, {{ 15.914053, 32.535042, 21.553976, 11.433394, 3.612409, 3.939212},
{ 0.080511, 0.770669, 4.352206, 21.381622,130.500748, 0.000000}}},
{ Th, 0, {{ 15.784024, 32.454899, 21.849222, 4.239077, 11.736191, 3.922533},
{ 0.077067, 0.735137, 4.097976,109.464111, 20.512138, 0.000000}}},
{ Pa, 0, {{ 32.740208, 21.973675, 12.957398, 3.683832, 15.744058, 3.886066},
{ 0.709545, 4.050881, 19.231543,117.255005, 0.074040, 0.000000}}},
{ U, 0, {{ 15.679275, 32.824306, 13.660459, 3.687261, 22.279434, 3.854444},
{ 0.071206, 0.681177, 18.236156,112.500038, 3.930325, 0.000000}}},
{ Np, 0, {{ 32.999901, 22.638077, 14.219973, 3.672950, 15.683245, 3.769391},
{ 0.657086, 3.854918, 17.435474,109.464485, 0.068033, 0.000000}}},
{ Pu, 0, {{ 33.281178, 23.148544, 15.153755, 3.031492, 15.704215, 3.664200},
{ 0.634999, 3.856168, 16.849735,121.292038, 0.064857, 0.000000}}},
{ Am, 0, {{ 33.435162, 23.657259, 15.576339, 3.027023, 15.746100, 3.541160},
{ 0.612785, 3.792942, 16.195778,117.757004, 0.061755, 0.000000}}},
{ Cm, 0, {{ 15.804837, 33.480801, 24.150198, 3.655563, 15.499866, 3.390840},
{ 0.058619, 0.590160, 3.674720,100.736191, 15.408296, 0.000000}}},
{ Bk, 0, {{ 15.889072, 33.625286, 24.710381, 3.707139, 15.839268, 3.213169},
{ 0.055503, 0.569571, 3.615472, 97.694786, 14.754303, 0.000000}}},
{ Cf, 0, {{ 33.794075, 25.467693, 16.048487, 3.657525, 16.008982, 3.005326},
{ 0.550447, 3.581973, 14.357388, 96.064972, 0.052450, 0.000000}}},
{ H, -1, {{ 0.702260, 0.763666, 0.248678, 0.261323, 0.023017, 0.000425},
{ 23.945604, 74.897919, 6.773289,233.583450, 1.337531, 0.000000}}},
{ Li, +1, {{ 0.432724, 0.549257, 0.376575, -0.336481, 0.976060, 0.001764},
{ 0.260367, 1.042836, 7.885294, 0.260368, 3.042539, 0.000000}}},
{ Be, +2, {{ 3.055430, -2.372617, 1.044914, 0.544233, 0.381737, -0.653773},
{ 0.001226, 0.001227, 1.542106, 0.456279, 4.047479, 0.000000}}},
{ C, AtomTypeTraits::kWKSFVal,
{{ 1.258489, 0.728215, 1.119856, 2.168133, 0.705239, 0.019722},
{ 10.683769, 0.208177, 0.836097, 24.603704, 58.954273, 0.000000}}},
{ O, -1, {{ 3.106934, 3.235142, 1.148886, 0.783981, 0.676953, 0.046136},
{ 19.868080, 6.960252, 0.170043, 65.693512, 0.630757, 0.000000}}},
{ O, -2, {{ 3.990247, 2.300563, 0.607200, 1.907882, 1.167080, 0.025429},
{ 16.639956, 5.636819, 0.108493, 47.299709, 0.379984, 0.000000}}},
{ F, -1, {{ 0.457649, 3.841561, 1.432771, 0.801876, 3.395041, 0.069525},
{ 0.917243, 5.507803, 0.164955, 51.076206, 15.821679, 0.000000}}},
{ Na, +1, {{ 3.148690, 4.073989, 0.767888, 0.995612, 0.968249, 0.045300},
{ 2.594987, 6.046925, 0.070139, 14.122657, 0.217037, 0.000000}}},
{ Mg, +2, {{ 3.062918, 4.135106, 0.853742, 1.036792, 0.852520, 0.058851},
{ 2.015803, 4.417941, 0.065307, 9.669710, 0.187818, 0.000000}}},
{ Al, +3, {{ 4.132015, 0.912049, 1.102425, 0.614876, 3.219136, 0.019397},
{ 3.528641, 7.378344, 0.133708, 0.039065, 1.644728, 0.000000}}},
{ Si, AtomTypeTraits::kWKSFVal,
{{ 2.879033, 3.072960, 1.515981, 1.390030, 4.995051, 0.146030},
{ 1.239713, 38.706276, 0.081481, 93.616333, 2.770293, 0.000000}}},
{ Si, +4, {{ 3.676722, 3.828496, 1.258033, 0.419024, 0.720421, 0.097266},
{ 1.446851, 3.013144, 0.064397, 0.206254, 5.970222, 0.000000}}},
{ Cl, -1, {{ 1.061802, 7.139886, 6.524271, 2.355626, 35.829403,-34.916603},
{ 0.144727, 1.171795, 19.467655, 60.320301, 0.000436, 0.000000}}},
{ K, +1, {{-17.609339, 1.494873, 7.150305, 10.899569, 15.808228, 0.257164},
{ 18.840979, 0.053453, 0.812940, 22.264105, 14.351593, 0.000000}}},
{ Ca, +2, {{ 8.501441, 12.880483, 9.765095, 7.156669, 0.711160,-21.013187},
{ 10.525848, -0.004033, 0.010692, 0.684443, 27.231771, 0.000000}}},
{ Sc, +3, {{ 7.104348, 1.511488,-53.669773, 38.404816, 24.532240, 0.118642},
{ 0.601957, 0.033386, 12.572138, 10.859736, 14.125230, 0.000000}}},
{ Ti, +2, {{ 7.040119, 1.496285, 9.657304, 0.006534, 1.649561, 0.150362},
{ 0.537072, 0.031914, 8.009958,201.800293, 24.039482, 0.000000}}},
{ Ti, +3, {{ 36.587933, 7.230255, -9.086077, 2.084594, 17.294008,-35.111282},
{ 0.000681, 0.522262, 5.262317, 15.881716, 6.149805, 0.000000}}},
{ Ti, +4, {{ 45.355537, 7.092900, 7.483858,-43.498817, 1.678915, -0.110628},
{ 9.252186, 0.523046, 13.082852, 10.193876, 0.023064, 0.000000}}},
{ V, +2, {{ 7.754356, 2.064100, 2.576998, 2.011404, 7.126177, -0.533379},
{ 7.066315, 0.014993, 7.066308, 22.055786, 0.467568, 0.000000}}},
{ V, +3, {{ 9.958480, 1.596350, 1.483442,-10.846044, 17.332867, 0.474921},
{ 6.763041, 0.056895, 17.750029, 0.328826, 0.388013, 0.000000}}},
{ V, +5, {{ 15.575018, 8.448095, 1.612040, -9.721855, 1.534029, 0.552676},
{ 0.682708, 5.566640, 10.527077, 0.907961, 0.066667, 0.000000}}},
{ Cr, +2, {{ 10.598877, 1.565858, 2.728280, 0.098064, 6.959321, 0.049870},
{ 6.151846, 0.023519, 17.432816, 54.002388, 0.426301, 0.000000}}},
{ Cr, +3, {{ 7.989310, 1.765079, 2.627125, 1.829380, 6.980908, -0.192123},
{ 6.068867, 0.018342, 6.068887, 16.309284, 0.420864, 0.000000}}},
{ Mn, +2, {{ 11.287712, 26.042414, 3.058096, 0.090258, 7.088306,-24.566132},
{ 5.506225, 0.000774, 16.158575, 54.766354, 0.375580, 0.000000}}},
{ Mn, +3, {{ 6.926972, 2.081342, 11.128379, 2.375107, -0.419287, -0.093713},
{ 0.378315, 0.015054, 5.379957, 14.429586, 0.004939, 0.000000}}},
{ Mn, +4, {{ 12.409131, 7.466993, 1.809947,-12.138477, 10.780248, 0.672146},
{ 0.300400, 0.112814, 12.520756, 0.168653, 5.173237, 0.000000}}},
{ Fe, +2, {{ 11.776765, 11.165097, 3.533495, 0.165345, 7.036932, -9.676919},
{ 4.912232, 0.001748, 14.166556, 42.381958, 0.341324, 0.000000}}},
{ Fe, +3, {{ 9.721638, 63.403847, 2.141347, 2.629274, 7.033846,-61.930725},
{ 4.869297, 0.000293, 4.867602, 13.539076, 0.338520, 0.000000}}},
{ Co, +2, {{ 6.993840, 26.285812, 12.254289, 0.246114, 4.017407,-24.796852},
{ 0.310779, 0.000684, 4.400528, 35.741447, 12.536393, 0.000000}}},
{ Co, +3, {{ 6.861739, 2.678570, 12.281889, 3.501741, -0.179384, -1.147345},
{ 0.309794, 0.008142, 4.331703, 11.914167, 11.914167, 0.000000}}},
{ Ni, +2, {{ 12.519017, 37.832058, 4.387257, 0.661552, 6.949072,-36.344471},
{ 3.933053, 0.000442, 10.449184, 23.860998, 0.283723, 0.000000}}},
{ Ni, +3, {{ 13.579366, 1.902844, 12.859268, 3.811005, -6.838595, -0.317618},
{ 0.313140, 0.012621, 3.906407, 10.894311, 0.344379, 0.000000}}},
{ Cu, +1, {{ 12.960763, 16.342150, 1.110102, 5.520682, 6.915452,-14.849320},
{ 3.576010, 0.000975, 29.523218, 10.114283, 0.261326, 0.000000}}},
{ Cu, +2, {{ 11.895569, 16.344978, 5.799817, 1.048804, 6.789088,-14.878383},
{ 3.378519, 0.000924, 8.133653, 20.526524, 0.254741, 0.000000}}},
{ Zn, +2, {{ 13.340772, 10.428857, 5.544489, 0.762295, 6.869172, -8.945248},
{ 3.215913, 0.001413, 8.542680, 21.891756, 0.239215, 0.000000}}},
{ Ga, +3, {{ 13.123875, 35.288189, 6.126979, 0.611551, 6.724807,-33.875122},
{ 2.809960, 0.000323, 6.831534, 16.784311, 0.212002, 0.000000}}},
{ Ge, +4, {{ 6.876636, 6.779091, 9.969591, 3.135857, 0.152389, 1.086542},
{ 2.025174, 0.176650, 3.573822, 7.685848, 16.677574, 0.000000}}},
{ Br, -1, {{ 17.714310, 6.466926, 6.947385, 4.402674, -0.697279, 1.152674},
{ 2.122554, 19.050768, 0.152708, 58.690361, 58.690372, 0.000000}}},
{ Rb, +1, {{ 17.684320, 7.761588, 6.680874, 2.668883, 0.070974, 1.133263},
{ 1.710209, 14.919863, 0.128542, 31.654478, 0.128543, 0.000000}}},
{ Sr, +2, {{ 17.694973, 1.275762, 6.154252, 9.234786, 0.515995, 1.125309},
{ 1.550888, 30.133041, 0.118774, 13.821799, 0.118774, 0.000000}}},
{ Y, +3, {{ 46.660366, 10.369686, 4.623042,-62.170834, 17.471146, 19.023842},
{ -0.019971, 13.180257, 0.176398, -0.016727, 1.467348, 0.000000}}},
{ Zr, +4, {{ 6.802956, 17.699253, 10.650647, -0.248108, 0.250338, 0.827902},
{ 0.096228, 1.296127, 11.240715, -0.219259, -0.219021, 0.000000}}},
{ Nb, +3, {{ 17.714323, 1.675213, 7.483963, 8.322464, 11.143573, -8.339573},
{ 1.172419, 30.102791, 0.080255, -0.002983, 10.456687, 0.000000}}},
{ Nb, +5, {{ 17.580206, 7.633277, 10.793497, 0.180884, 67.837921,-68.024780},
{ 1.165852, 0.078558, 9.507652, 31.621656, -0.000438, 0.000000}}},
{ Mo, +3, {{ 7.447050, 17.778122, 11.886068, 1.997905, 1.789626, -1.898764},
{ 0.072000, 1.073145, 9.834720, 28.221746, -0.011674, 0.000000}}},
{ Mo, +5, {{ 7.929879, 17.667669, 11.515987, 0.500402, 77.444084,-78.056595},
{ 0.068856, 1.068064, 9.046229, 26.558945, -0.000473, 0.000000}}},
{ Mo, +6, {{ 34.757683, 9.653037, 6.584769,-18.628115, 2.490594, 1.141916},
{ 1.301770, 7.123843, 0.094097, 1.617443, 12.335434, 0.000000}}},
{ Ru, +3, {{ 17.894758, 13.579529, 10.729251, 2.474095, 48.227997,-51.905243},
{ 0.902827, 8.740579, 0.045125, 24.764954, -0.001699, 0.000000}}},
{ Ru, +4, {{ 17.845776, 13.455084, 10.229087, 1.653524, 14.059795,-17.241762},
{ 0.901070, 8.482392, 0.045972, 23.015272, -0.004889, 0.000000}}},
{ Rh, +3, {{ 17.758621, 14.569813, 5.298320, 2.533579, 0.879753, 0.960843},
{ 0.841779, 8.319533, 0.069050, 23.709131, 0.069050, 0.000000}}},
{ Rh, +4, {{ 17.716188, 14.446654, 5.185801, 1.703448, 0.989992, 0.959941},
{ 0.840572, 8.100647, 0.068995, 22.357307, 0.068995, 0.000000}}},
{ Pd, +2, {{ 6.122282, 15.651012, 3.513508, 9.060790, 8.771199, 0.879336},
{ 0.062424, 8.018296, 24.784275, 0.776457, 0.776457, 0.000000}}},
{ Pd, +4, {{ 6.152421,-96.069023, 31.622141, 81.578255, 17.801403, 0.915874},
{ 0.063951, 11.090354, 13.466152, 9.758302, 0.783014, 0.000000}}},
{ Ag, +1, {{ 6.091192, 4.019526, 16.948174, 4.258638, 13.889437, 0.785127},
{ 0.056305, 0.719340, 7.758938, 27.368349, 0.719340, 0.000000}}},
{ Ag, +2, {{ 6.401808, 48.699802, 4.799859,-32.332523, 16.356710, 1.068247},
{ 0.068167, 0.942270, 20.639496, 1.100365, 6.883131, 0.000000}}},
{ Cd, +2, {{ 6.093711, 43.909691, 17.041306,-39.675117, 17.958918, 0.664795},
{ 0.050624, 8.654143, 15.621396, 11.082067, 0.667591, 0.000000}}},
{ In, +3, {{ 6.206277, 18.497746, 3.078131, 10.524613, 7.401234, 0.293677},
{ 0.041357, 6.605563, 18.792250, 0.608082, 0.608082, 0.000000}}},
{ Sn, +2, {{ 6.353672, 4.770377, 14.672025, 4.235959, 18.002131, -0.042519},
{ 0.034720, 6.167891, 6.167879, 29.006456, 0.561774, 0.000000}}},
{ Sn, +4, {{ 15.445732, 6.420892, 4.562980, 1.713385, 18.033537, -0.172219},
{ 6.280898, 0.033144, 6.280899, 17.983601, 0.557980, 0.000000}}},
{ Sb, +3, {{ 10.189171, 57.461918, 19.356573, 4.862206,-45.394096, 1.516108},
{ 0.089485, 0.375256, 5.357987, 22.153736, 0.297768, 0.000000}}},
{ Sb, +5, {{ 17.920622, 6.647932, 12.724075, 1.555545, 7.600591, -0.445371},
{ 0.522315, 0.029487, 5.718210, 16.433775, 5.718204, 0.000000}}},
{ I, -1, {{ 20.010330, 17.835524, 8.104130, 2.231118, 9.158548, -3.341004},
{ 4.565931, 0.444266, 32.430672, 95.149040, 0.014906, 0.000000}}},
{ Cs, +1, {{ 19.939056, 24.967621, 10.375884, 0.454243, 17.660248,-19.394306},
{ 3.770511, 0.004040, 25.311275, 76.537766, 0.384730, 0.000000}}},
{ Ba, +2, {{ 19.750200, 17.513683, 10.884892, 0.321585, 65.149834,-59.618172},
{ 3.430748, 0.361590, 21.358307, 70.309402, 0.001418, 0.000000}}},
{ La, +3, {{ 19.688887, 17.345703, 11.356296, 0.099418, 82.358124,-76.846909},
{ 3.146211, 0.339586, 18.753832, 90.345459, 0.001072, 0.000000}}},
{ Ce, +3, {{ 26.593231, 85.866432, -6.677695, 12.111847, 17.401903,-80.313423},
{ 3.280381, 0.001012, 4.313575, 17.868504, 0.326962, 0.000000}}},
{ Ce, +4, {{ 17.457533, 25.659941, 11.691037, 19.695251,-16.994749, -3.515096},
{ 0.311812, -0.003793, 16.568687, 2.886395, -0.008931, 0.000000}}},
{ Pr, +3, {{ 20.879841, 36.035797, 12.135341, 0.283103, 17.167803,-30.500784},
{ 2.870897, 0.002364, 16.615236, 53.909359, 0.306993, 0.000000}}},
{ Pr, +4, {{ 17.496082, 21.538509, 20.403114, 12.062211, -7.492043, -9.016722},
{ 0.294457, -0.002742, 2.772886, 15.804613, -0.013556, 0.000000}}},
{ Nd, +3, {{ 17.120077, 56.038139, 21.468307, 10.000671, 2.905866,-50.541992},
{ 0.291295, 0.001421, 2.743681, 14.581367, 22.485098, 0.000000}}},
{ Pm, +3, {{ 22.221066, 17.068142, 12.805423, 0.435687, 52.238770,-46.767181},
{ 2.635767, 0.277039, 14.927315, 45.768017, 0.001455, 0.000000}}},
{ Sm, +3, {{ 15.618565, 19.538092, 13.398946, -4.358811, 24.490461, -9.714854},
{ 0.006001, 0.306379, 14.979594, 0.748825, 2.454492, 0.000000}}},
{ Eu, +2, {{ 23.899035, 31.657497, 12.955752, 1.700576, 16.992199,-26.204315},
{ 2.467332, 0.002230, 13.625002, 35.089481, 0.253136, 0.000000}}},
{ Eu, +3, {{ 17.758327, 33.498665, 24.067188, 13.436883, -9.019134,-19.768026},
{ 0.244474, -0.003901, 2.487526, 14.568011, -0.015628, 0.000000}}},
{ Gd, +3, {{ 24.344999, 16.945311, 13.866931, 0.481674, 93.506378,-88.147179},
{ 2.333971, 0.239215, 12.982995, 43.876347, 0.000673, 0.000000}}},
{ Tb, +3, {{ 24.878252, 16.856016, 13.663937, 1.279671, 39.271294,-33.950317},
{ 2.223301, 0.227290, 11.812528, 29.910065, 0.001527, 0.000000}}},
{ Dy, +3, {{ 16.864344, 90.383461, 13.675473, 1.687078, 25.540651,-85.150650},
{ 0.216275, 0.000593, 11.121207, 26.250975, 2.135930, 0.000000}}},
{ Ho, +3, {{ 16.837524, 63.221336, 13.703766, 2.061602, 26.202621,-58.026505},
{ 0.206873, 0.000796, 10.500283, 24.031883, 2.055060, 0.000000}}},
{ Er, +3, {{ 16.810127, 22.681061, 13.864114, 2.294506, 26.864477,-17.513460},
{ 0.198293, 0.002126, 9.973341, 22.836388, 1.979442, 0.000000}}},
{ Tm, +3, {{ 16.787500, 15.350905, 14.182357, 2.299111, 27.573771,-10.192087},
{ 0.190852, 0.003036, 9.602934, 22.526880, 1.912862, 0.000000}}},
{ Yb, +2, {{ 28.443794, 16.849527, 14.165081, 3.445311, 28.308853,-23.214935},
{ 1.863896, 0.183811, 9.225469, 23.691355, 0.001463, 0.000000}}},
{ Yb, +3, {{ 28.191629, 16.828087, 14.167848, 2.744962, 23.171774,-18.103676},
{ 1.842889, 0.182788, 9.045957, 20.799847, 0.001759, 0.000000}}},
{ Lu, +3, {{ 28.828693, 16.823227, 14.247617, 3.079559, 25.647667,-20.626528},
{ 1.776641, 0.175560, 8.575531, 19.693701, 0.001453, 0.000000}}},
{ Hf, +4, {{ 29.267378, 16.792543, 14.785310, 2.184128, 23.791996,-18.820383},
{ 1.697911, 0.168313, 8.190025, 18.277578, 0.001431, 0.000000}}},
{ Ta, +5, {{ 29.539469, 16.741854, 15.182070, 1.642916, 16.437447,-11.542459},
{ 1.612934, 0.160460, 7.654408, 17.070732, 0.001858, 0.000000}}},
{ W, +6, {{ 29.729357, 17.247808, 15.184488, 1.154652, 0.739335, 3.945157},
{ 1.501648, 0.140803, 6.880573, 14.299601, 14.299618, 0.000000}}},
{ Os, +4, {{ 17.113485, 15.792370, 23.342392, 4.090271, 7.671292, 3.988390},
{ 0.131850, 7.288542, 1.389307, 19.629425, 1.389307, 0.000000}}},
{ Ir, +3, {{ 31.537575, 16.363338, 15.597141, 5.051404, 1.436935, 4.009459},
{ 1.334144, 7.451918, 0.127514, 21.705648, 0.127515, 0.000000}}},
{ Ir, +4, {{ 30.391249, 16.146996, 17.019068, 4.458904, 0.975372, 4.006865},
{ 1.328519, 7.181766, 0.127337, 19.060146, 1.328519, 0.000000}}},
{ Pt, +2, {{ 31.986849, 17.249048, 15.269374, 5.760234, 1.694079, 4.032512},
{ 1.281143, 7.625512, 0.123571, 24.190826, 0.123571, 0.000000}}},
{ Pt, +4, {{ 41.932713, 16.339224, 17.653894, 6.012420,-12.036877, 4.094551},
{ 1.111409, 6.466086, 0.128917, 16.954155, 0.778721, 0.000000}}},
{ Au, +1, {{ 32.124306, 16.716476, 16.814100, 7.311565, 0.993064, 4.040792},
{ 1.216073, 7.165378, 0.118715, 20.442486, 53.095985, 0.000000}}},
{ Au, +3, {{ 31.704271, 17.545767, 16.819551, 5.522640, 0.361725, 4.042679},
{ 1.215561, 7.220506, 0.118812, 20.050970, 1.215562, 0.000000}}},
{ Hg, +1, {{ 28.866837, 19.277540, 16.776051, 6.281459, 3.710289, 4.068430},
{ 1.173967, 7.583842, 0.115351, 29.055994, 1.173968, 0.000000}}},
{ Hg, +2, {{ 32.411079, 18.690371, 16.711773, 9.974835, -3.847611, 4.052869},
{ 1.162980, 7.329806, 0.114518, 22.009489, 22.009493, 0.000000}}},
{ Tl, +1, {{ 32.295044, 16.570049, 17.991013, 1.535355, 7.554591, 4.054030},
{ 1.101544, 0.110020, 6.528559, 52.495068, 20.338634, 0.000000}}},
{ Tl, +3, {{ 32.525639, 19.139185, 17.100321, 5.891115, 12.599463, -9.256075},
{ 1.094966, 6.900992, 0.103667, 18.489614, -0.001401, 0.000000}}},
{ Pb, +2, {{ 27.392647, 16.496822, 19.984501, 6.813923, 5.233910, 4.065623},
{ 1.058874, 0.106305, 6.708123, 24.395554, 1.058874, 0.000000}}},
{ Pb, +4, {{ 32.505657, 20.014240, 14.645661, 5.029499, 1.760138, 4.044678},
{ 1.047035, 6.670321, 0.105279, 16.525040, 0.105279, 0.000000}}},
{ Bi, +3, {{ 32.461437, 19.438683, 16.302486, 7.322662, 0.431704, 4.043703},
{ 0.997930, 6.038867, 0.101338, 18.371586, 46.361046, 0.000000}}},
{ Bi, +5, {{ 16.734028, 20.580494, 9.452623, 61.155834,-34.041023, 4.113663},
{ 0.105076, 4.773282, 11.762162, 1.211775, 1.619408, 0.000000}}},
{ Ra, +2, {{ 4.986228, 32.474945, 21.947443, 11.800013, 10.807292, 3.956572},
{ 0.082597, 0.791468, 4.608034, 24.792431, 0.082597, 0.000000}}},
{ Ac, +3, {{ 15.584983, 32.022125, 21.456327, 0.757593, 12.341252, 3.838984},
{ 0.077438, 0.739963, 4.040735, 47.525002, 19.406845, 0.000000}}},
{ Th, +4, {{ 15.515445, 32.090691, 13.996399, 12.918157, 7.635514, 3.831122},
{ 0.074499, 0.711663, 3.871044, 18.596891, 3.871044, 0.000000}}},
{ U, +3, {{ 15.360309, 32.395657, 21.961290, 1.325894, 14.251453, 3.706622},
{ 0.067815, 0.654643, 3.643409, 39.604965, 16.330570, 0.000000}}},
{ U, +4, {{ 15.355091, 32.235306, 0.557745, 14.396367, 21.751173, 3.705863},
{ 0.067789, 0.652613, 42.354237, 15.908239, 3.553231, 0.000000}}},
{ U, +6, {{ 15.333844, 31.770849, 21.274414, 13.872636, 0.048519, 3.700591},
{ 0.067644, 0.646384, 3.317894, 14.650250, 75.339699, 0.000000}}},
{ Np, +3, {{ 15.378152, 32.572132, 22.206125, 1.413295, 14.828381, 3.603370},
{ 0.064613, 0.631420, 3.561936, 37.875511, 15.546129, 0.000000}}},
{ Np, +4, {{ 15.373926, 32.423019, 21.969994, 0.662078, 14.969350, 3.603039},
{ 0.064597, 0.629658, 3.476389, 39.438942, 15.135764, 0.000000}}},
{ Np, +6, {{ 15.359986, 31.992825, 21.412458, 0.066574, 14.568174, 3.600942},
{ 0.064528, 0.624505, 3.253441, 67.658318, 13.980832, 0.000000}}},
{ Pu, +3, {{ 15.356004, 32.769127, 22.680210, 1.351055, 15.416232, 3.428895},
{ 0.060590, 0.604663, 3.491509, 37.260635, 14.981921, 0.000000}}},
{ Pu, +4, {{ 15.416219, 32.610569, 22.256662, 0.719495, 15.518152, 3.480408},
{ 0.061456, 0.607938, 3.411848, 37.628792, 14.464360, 0.000000}}},
{ Pu, +6, {{ 15.436506, 32.289719, 14.726737, 15.012391, 7.024677, 3.502325},
{ 0.061815, 0.606541, 3.245363, 13.616438, 3.245364, 0.000000}}}
}; };
SFDataArrayElement kELSFData[] = { SFDataArrayElement kELSFData[] = {
......
/*- /*-
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
* *
* Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer * list of conditions and the following disclaimer
* 2. Redistributions in binary form must reproduce the above copyright notice, * 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation * this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. * and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
...@@ -24,14 +24,14 @@ ...@@ -24,14 +24,14 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include <fstream>
#include <algorithm> #include <algorithm>
#include <fstream>
#include <mutex> #include <mutex>
#include "cif++/BondMap.hpp"
#include "cif++/Cif++.hpp" #include "cif++/Cif++.hpp"
#include "cif++/Compound.hpp"
#include "cif++/CifUtils.hpp" #include "cif++/CifUtils.hpp"
#include "cif++/BondMap.hpp" #include "cif++/Compound.hpp"
namespace mmcif namespace mmcif
{ {
...@@ -39,223 +39,79 @@ namespace mmcif ...@@ -39,223 +39,79 @@ namespace mmcif
namespace namespace
{ {
union IDType union IDType
{
IDType() : id_n(0){}
IDType(const IDType& rhs) : id_n(rhs.id_n) {}
IDType(const std::string& s)
: IDType()
{
assert(s.length() <= 4);
if (s.length() > 4)
throw BondMapException("Atom ID '" + s + "' is too long");
std::copy(s.begin(), s.end(), id_s);
}
IDType& operator=(const IDType& rhs)
{
id_n = rhs.id_n;
return *this;
}
IDType& operator=(const std::string& s)
{ {
id_n = 0; IDType()
assert(s.length() <= 4); : id_n(0)
if (s.length() > 4) {
throw BondMapException("Atom ID '" + s + "' is too long"); }
std::copy(s.begin(), s.end(), id_s); IDType(const IDType &rhs)
return *this; : id_n(rhs.id_n)
} {
}
bool operator<(const IDType& rhs) const IDType(const std::string &s)
{ : IDType()
return id_n < rhs.id_n; {
} assert(s.length() <= 4);
if (s.length() > 4)
bool operator<=(const IDType& rhs) const throw BondMapException("Atom ID '" + s + "' is too long");
{ std::copy(s.begin(), s.end(), id_s);
return id_n <= rhs.id_n; }
}
bool operator==(const IDType& rhs) const
{
return id_n == rhs.id_n;
}
bool operator!=(const IDType& rhs) const
{
return id_n != rhs.id_n;
}
char id_s[4];
uint32_t id_n;
};
static_assert(sizeof(IDType) == 4, "atom_id_type should be 4 bytes");
}
// // --------------------------------------------------------------------
// void createBondInfoFile(const fs::path& components, const fs::path& infofile)
// {
// std::ofstream outfile(infofile.string() + ".tmp", std::ios::binary);
// if (not outfile.is_open())
// throw BondMapException("Could not create bond info file " + infofile.string() + ".tmp");
// cif::File infile(components);
// std::set<atom_id_type> atomIDs;
// std::vector<atom_id_type> compoundIDs;
// for (auto& db: infile)
// {
// auto chem_comp_bond = db.get("chem_comp_bond");
// if (not chem_comp_bond)
// {
// if (cif::VERBOSE > 1)
// std::cerr << "Missing chem_comp_bond category in data block " << db.getName() << std::endl;
// continue;
// }
// for (const auto& [atom_id_1, atom_id_2]: chem_comp_bond->rows<std::string,std::string>({"atom_id_1", "atom_id_2"}))
// {
// atomIDs.insert(atom_id_1);
// atomIDs.insert(atom_id_2);
// }
// compoundIDs.push_back({ db.getName() });
// }
// if (cif::VERBOSE)
// std::cout << "Number of unique atom names is " << atomIDs.size() << std::endl
// << "Number of unique residue names is " << compoundIDs.size() << std::endl;
// CompoundBondInfoFileHeader header = {};
// header.indexEntries = compoundIDs.size();
// header.atomEntries = atomIDs.size();
// outfile << header;
// for (auto atomID: atomIDs)
// outfile << atomID;
// auto dataOffset = outfile.tellp();
// std::vector<CompoundBondInfo> entries;
// entries.reserve(compoundIDs.size());
// std::map<atom_id_type, uint16_t> atomIDMap;
// for (auto& atomID: atomIDs)
// atomIDMap[atomID] = atomIDMap.size();
// for (auto& db: infile)
// {
// auto chem_comp_bond = db.get("chem_comp_bond");
// if (not chem_comp_bond)
// continue;
// std::set<uint16_t> bondedAtoms;
// for (const auto& [atom_id_1, atom_id_2]: chem_comp_bond->rows<std::string,std::string>({"atom_id_1", "atom_id_2"}))
// {
// bondedAtoms.insert(atomIDMap[atom_id_1]);
// bondedAtoms.insert(atomIDMap[atom_id_2]);
// }
// std::map<uint16_t, int32_t> bondedAtomMap;
// for (auto id: bondedAtoms)
// bondedAtomMap[id] = static_cast<int32_t>(bondedAtomMap.size());
// CompoundBondInfo info = {
// db.getName(),
// static_cast<uint32_t>(bondedAtomMap.size()),
// outfile.tellp() - dataOffset
// };
// entries.push_back(info);
// // An now first write the array of atom ID's in this compound
// for (uint16_t id: bondedAtoms)
// write(outfile, id);
// // And then the symmetric matrix with bonds
// size_t N = bondedAtoms.size();
// size_t M = (N * (N - 1)) / 2;
// size_t K = M / 8;
// if (M % 8)
// K += 1;
// std::vector<uint8_t> m(K);
// for (const auto& [atom_id_1, atom_id_2]: chem_comp_bond->rows<std::string,std::string>({"atom_id_1", "atom_id_2"}))
// {
// auto a = bondedAtomMap[atomIDMap[atom_id_1]];
// auto b = bondedAtomMap[atomIDMap[atom_id_2]];
// assert(a != b);
// assert((int)b < (int)N);
// if (a > b)
// std::swap(a, b);
// size_t ix = ((b - 1) * b) / 2 + a;
// assert(ix < M);
// auto Bix = ix / 8;
// auto bix = ix % 8;
// m[Bix] |= 1 << bix;
// }
// outfile.write(reinterpret_cast<char*>(m.data()), m.size());
// }
// header.dataSize = outfile.tellp() - dataOffset;
// std::sort(entries.begin(), entries.end(), [](CompoundBondInfo& a, CompoundBondInfo& b) IDType &operator=(const IDType &rhs)
// { {
// return a.id < b.id; id_n = rhs.id_n;
// }); return *this;
}
// for (auto& info: entries) IDType &operator=(const std::string &s)
// outfile << info; {
id_n = 0;
assert(s.length() <= 4);
if (s.length() > 4)
throw BondMapException("Atom ID '" + s + "' is too long");
std::copy(s.begin(), s.end(), id_s);
return *this;
}
// outfile.seekp(0); bool operator<(const IDType &rhs) const
// outfile << header; {
return id_n < rhs.id_n;
}
// // compress bool operator<=(const IDType &rhs) const
// outfile.close(); {
return id_n <= rhs.id_n;
}
// std::ifstream in(infofile.string() + ".tmp", std::ios::binary); bool operator==(const IDType &rhs) const
// std::ofstream out(infofile, std::ios::binary); {
return id_n == rhs.id_n;
}
// { bool operator!=(const IDType &rhs) const
// io::filtering_stream<io::output> os; {
// os.push(io::gzip_compressor()); return id_n != rhs.id_n;
// os.push(out); }
// io::copy(in, os);
// }
// in.close(); char id_s[4];
// out.close(); uint32_t id_n;
};
// fs::remove(infofile.string() + ".tmp"); static_assert(sizeof(IDType) == 4, "atom_id_type should be 4 bytes");
// } } // namespace
// -------------------------------------------------------------------- // --------------------------------------------------------------------
struct CompoundBondInfo struct CompoundBondInfo
{ {
IDType mID; IDType mID;
std::set<std::tuple<uint32_t,uint32_t>> mBonded; std::set<std::tuple<uint32_t, uint32_t>> mBonded;
bool bonded(uint32_t a1, uint32_t a2) const bool bonded(uint32_t a1, uint32_t a2) const
{ {
return mBonded.count({ a1, a2 }) > 0; return mBonded.count({a1, a2}) > 0;
} }
}; };
// -------------------------------------------------------------------- // --------------------------------------------------------------------
...@@ -263,20 +119,18 @@ struct CompoundBondInfo ...@@ -263,20 +119,18 @@ struct CompoundBondInfo
class CompoundBondMap class CompoundBondMap
{ {
public: public:
static CompoundBondMap &instance() static CompoundBondMap &instance()
{ {
static std::unique_ptr<CompoundBondMap> s_instance(new CompoundBondMap); static std::unique_ptr<CompoundBondMap> s_instance(new CompoundBondMap);
return *s_instance; return *s_instance;
} }
bool bonded(const std::string& compoundID, const std::string& atomID1, const std::string& atomID2); bool bonded(const std::string &compoundID, const std::string &atomID1, const std::string &atomID2);
private: private:
CompoundBondMap() {} CompoundBondMap() {}
uint32_t getAtomID(const std::string& atomID) uint32_t getAtomID(const std::string &atomID)
{ {
IDType id(atomID); IDType id(atomID);
...@@ -290,16 +144,16 @@ class CompoundBondMap ...@@ -290,16 +144,16 @@ class CompoundBondMap
} }
else else
result = i->second; result = i->second;
return result; return result;
} }
std::map<IDType,uint32_t> mAtomIDIndex; std::map<IDType, uint32_t> mAtomIDIndex;
std::vector<CompoundBondInfo> mCompounds; std::vector<CompoundBondInfo> mCompounds;
std::mutex mMutex; std::mutex mMutex;
}; };
bool CompoundBondMap::bonded(const std::string &compoundID, const std::string& atomID1, const std::string& atomID2) bool CompoundBondMap::bonded(const std::string &compoundID, const std::string &atomID1, const std::string &atomID2)
{ {
std::lock_guard lock(mMutex); std::lock_guard lock(mMutex);
...@@ -310,32 +164,32 @@ bool CompoundBondMap::bonded(const std::string &compoundID, const std::string& a ...@@ -310,32 +164,32 @@ bool CompoundBondMap::bonded(const std::string &compoundID, const std::string& a
uint32_t a2 = getAtomID(atomID2); uint32_t a2 = getAtomID(atomID2);
if (a1 > a2) if (a1 > a2)
std::swap(a1, a2); std::swap(a1, a2);
for (auto &bi: mCompounds) for (auto &bi : mCompounds)
{ {
if (bi.mID != id) if (bi.mID != id)
continue; continue;
return bi.bonded(a1, a2); return bi.bonded(a1, a2);
} }
bool result = false; bool result = false;
// not found in our cache, calculate // not found in our cache, calculate
CompoundBondInfo bondInfo{ id }; CompoundBondInfo bondInfo{id};
auto compound = mmcif::CompoundFactory::instance().create(compoundID); auto compound = mmcif::CompoundFactory::instance().create(compoundID);
if (not compound) if (not compound)
std::cerr << "Missing compound bond info for " << compoundID << std::endl; std::cerr << "Missing compound bond info for " << compoundID << std::endl;
else else
{ {
for (auto &atom: compound->bonds()) for (auto &atom : compound->bonds())
{ {
uint32_t ca1 = getAtomID(atom.atomID[0]); uint32_t ca1 = getAtomID(atom.atomID[0]);
uint32_t ca2 = getAtomID(atom.atomID[1]); uint32_t ca2 = getAtomID(atom.atomID[1]);
if (ca1 > ca2) if (ca1 > ca2)
std::swap(ca1, ca2); std::swap(ca1, ca2);
bondInfo.mBonded.insert({ca1, ca2}); bondInfo.mBonded.insert({ca1, ca2});
result = result or (a1 == ca1 and a2 == ca2); result = result or (a1 == ca1 and a2 == ca2);
} }
...@@ -348,27 +202,27 @@ bool CompoundBondMap::bonded(const std::string &compoundID, const std::string& a ...@@ -348,27 +202,27 @@ bool CompoundBondMap::bonded(const std::string &compoundID, const std::string& a
// -------------------------------------------------------------------- // --------------------------------------------------------------------
BondMap::BondMap(const Structure& p) BondMap::BondMap(const Structure &p)
{ {
auto& compoundBondInfo = CompoundBondMap::instance(); auto &compoundBondInfo = CompoundBondMap::instance();
auto atoms = p.atoms(); auto atoms = p.atoms();
dim = uint32_t(atoms.size()); dim = uint32_t(atoms.size());
// bond = std::vector<bool>(dim * (dim - 1), false); // bond = std::vector<bool>(dim * (dim - 1), false);
for (auto& atom: atoms) for (auto &atom : atoms)
index[atom.id()] = uint32_t(index.size()); index[atom.id()] = uint32_t(index.size());
auto bindAtoms = [this](const std::string& a, const std::string& b) auto bindAtoms = [this](const std::string &a, const std::string &b)
{ {
uint32_t ixa = index[a]; uint32_t ixa = index[a];
uint32_t ixb = index[b]; uint32_t ixb = index[b];
bond.insert(key(ixa, ixb)); bond.insert(key(ixa, ixb));
}; };
auto linkAtoms = [this,&bindAtoms](const std::string& a, const std::string& b) auto linkAtoms = [this, &bindAtoms](const std::string &a, const std::string &b)
{ {
bindAtoms(a, b); bindAtoms(a, b);
...@@ -376,20 +230,20 @@ BondMap::BondMap(const Structure& p) ...@@ -376,20 +230,20 @@ BondMap::BondMap(const Structure& p)
link[b].insert(a); link[b].insert(a);
}; };
cif::Datablock& db = p.getFile().data(); cif::Datablock &db = p.getFile().data();
// collect all compounds first // collect all compounds first
std::set<std::string> compounds; std::set<std::string> compounds;
for (auto c: db["chem_comp"]) for (auto c : db["chem_comp"])
compounds.insert(c["id"].as<std::string>()); compounds.insert(c["id"].as<std::string>());
// make sure we also have all residues in the polyseq // make sure we also have all residues in the polyseq
for (auto m: db["entity_poly_seq"]) for (auto m : db["entity_poly_seq"])
{ {
std::string c = m["mon_id"].as<std::string>(); std::string c = m["mon_id"].as<std::string>();
if (compounds.count(c)) if (compounds.count(c))
continue; continue;
if (cif::VERBOSE > 1) if (cif::VERBOSE > 1)
std::cerr << "Warning: mon_id " << c << " is missing in the chem_comp category" << std::endl; std::cerr << "Warning: mon_id " << c << " is missing in the chem_comp category" << std::endl;
compounds.insert(c); compounds.insert(c);
...@@ -398,59 +252,59 @@ BondMap::BondMap(const Structure& p) ...@@ -398,59 +252,59 @@ BondMap::BondMap(const Structure& p)
cif::Progress progress(compounds.size(), "Creating bond map"); cif::Progress progress(compounds.size(), "Creating bond map");
// some helper indices to speed things up a bit // some helper indices to speed things up a bit
std::map<std::tuple<std::string,int,std::string>,std::string> atomMapByAsymSeqAndAtom; std::map<std::tuple<std::string, int, std::string>, std::string> atomMapByAsymSeqAndAtom;
for (auto& a: p.atoms()) for (auto &a : p.atoms())
{ {
auto key = make_tuple(a.labelAsymID(), a.labelSeqID(), a.labelAtomID()); auto key = make_tuple(a.labelAsymID(), a.labelSeqID(), a.labelAtomID());
atomMapByAsymSeqAndAtom[key] = a.id(); atomMapByAsymSeqAndAtom[key] = a.id();
} }
// first link all residues in a polyseq // first link all residues in a polyseq
std::string lastAsymID; std::string lastAsymID;
int lastSeqID = 0; int lastSeqID = 0;
for (auto r: db["pdbx_poly_seq_scheme"]) for (auto r : db["pdbx_poly_seq_scheme"])
{ {
std::string asymID; std::string asymID;
int seqID; int seqID;
cif::tie(asymID, seqID) = r.get("asym_id", "seq_id"); cif::tie(asymID, seqID) = r.get("asym_id", "seq_id");
if (asymID != lastAsymID) // first in a new sequece if (asymID != lastAsymID) // first in a new sequece
{ {
lastAsymID = asymID; lastAsymID = asymID;
lastSeqID = seqID; lastSeqID = seqID;
continue; continue;
} }
auto c = atomMapByAsymSeqAndAtom[make_tuple(asymID, lastSeqID, "C")]; auto c = atomMapByAsymSeqAndAtom[make_tuple(asymID, lastSeqID, "C")];
auto n = atomMapByAsymSeqAndAtom[make_tuple(asymID, seqID, "N")]; auto n = atomMapByAsymSeqAndAtom[make_tuple(asymID, seqID, "N")];
if (not (c.empty() or n.empty())) if (not(c.empty() or n.empty()))
bindAtoms(c, n); bindAtoms(c, n);
lastSeqID = seqID; lastSeqID = seqID;
} }
for (auto l: db["struct_conn"]) for (auto l : db["struct_conn"])
{ {
std::string asym1, asym2, atomId1, atomId2; std::string asym1, asym2, atomId1, atomId2;
int seqId1 = 0, seqId2 = 0; int seqId1 = 0, seqId2 = 0;
cif::tie(asym1, asym2, atomId1, atomId2, seqId1, seqId2) = cif::tie(asym1, asym2, atomId1, atomId2, seqId1, seqId2) =
l.get("ptnr1_label_asym_id", "ptnr2_label_asym_id", l.get("ptnr1_label_asym_id", "ptnr2_label_asym_id",
"ptnr1_label_atom_id", "ptnr2_label_atom_id", "ptnr1_label_atom_id", "ptnr2_label_atom_id",
"ptnr1_label_seq_id", "ptnr2_label_seq_id"); "ptnr1_label_seq_id", "ptnr2_label_seq_id");
std::string a = atomMapByAsymSeqAndAtom[make_tuple(asym1, seqId1, atomId1)]; std::string a = atomMapByAsymSeqAndAtom[make_tuple(asym1, seqId1, atomId1)];
std::string b = atomMapByAsymSeqAndAtom[make_tuple(asym2, seqId2, atomId2)]; std::string b = atomMapByAsymSeqAndAtom[make_tuple(asym2, seqId2, atomId2)];
if (not (a.empty() or b.empty())) if (not(a.empty() or b.empty()))
linkAtoms(a, b); linkAtoms(a, b);
} }
// then link all atoms in the compounds // then link all atoms in the compounds
for (auto c: compounds) for (auto c : compounds)
{ {
if (c == "HOH" or c == "H2O" or c == "WAT") if (c == "HOH" or c == "H2O" or c == "WAT")
{ {
...@@ -459,7 +313,7 @@ BondMap::BondMap(const Structure& p) ...@@ -459,7 +313,7 @@ BondMap::BondMap(const Structure& p)
continue; continue;
} }
auto bonded = [c, &compoundBondInfo](const Atom& a, const Atom& b) auto bonded = [c, &compoundBondInfo](const Atom &a, const Atom &b)
{ {
auto label_a = a.labelAtomID(); auto label_a = a.labelAtomID();
auto label_b = b.labelAtomID(); auto label_b = b.labelAtomID();
...@@ -468,16 +322,17 @@ BondMap::BondMap(const Structure& p) ...@@ -468,16 +322,17 @@ BondMap::BondMap(const Structure& p)
}; };
// loop over poly_seq_scheme // loop over poly_seq_scheme
for (auto r: db["pdbx_poly_seq_scheme"].find(cif::Key("mon_id") == c)) for (auto r : db["pdbx_poly_seq_scheme"].find(cif::Key("mon_id") == c))
{ {
std::string asymID; std::string asymID;
int seqID; int seqID;
cif::tie(asymID, seqID) = r.get("asym_id", "seq_id"); cif::tie(asymID, seqID) = r.get("asym_id", "seq_id");
std::vector<Atom> rAtoms; std::vector<Atom> rAtoms;
copy_if(atoms.begin(), atoms.end(), back_inserter(rAtoms), copy_if(atoms.begin(), atoms.end(), back_inserter(rAtoms),
[&](auto& a) { return a.labelAsymID() == asymID and a.labelSeqID() == seqID; }); [&](auto &a)
{ return a.labelAsymID() == asymID and a.labelSeqID() == seqID; });
for (uint32_t i = 0; i + 1 < rAtoms.size(); ++i) for (uint32_t i = 0; i + 1 < rAtoms.size(); ++i)
{ {
for (uint32_t j = i + 1; j < rAtoms.size(); ++j) for (uint32_t j = i + 1; j < rAtoms.size(); ++j)
...@@ -489,15 +344,16 @@ BondMap::BondMap(const Structure& p) ...@@ -489,15 +344,16 @@ BondMap::BondMap(const Structure& p)
} }
// loop over pdbx_nonpoly_scheme // loop over pdbx_nonpoly_scheme
for (auto r: db["pdbx_nonpoly_scheme"].find(cif::Key("mon_id") == c)) for (auto r : db["pdbx_nonpoly_scheme"].find(cif::Key("mon_id") == c))
{ {
std::string asymID; std::string asymID;
cif::tie(asymID) = r.get("asym_id"); cif::tie(asymID) = r.get("asym_id");
std::vector<Atom> rAtoms; std::vector<Atom> rAtoms;
copy_if(atoms.begin(), atoms.end(), back_inserter(rAtoms), copy_if(atoms.begin(), atoms.end(), back_inserter(rAtoms),
[&](auto& a) { return a.labelAsymID() == asymID; }); [&](auto &a)
{ return a.labelAsymID() == asymID; });
for (uint32_t i = 0; i + 1 < rAtoms.size(); ++i) for (uint32_t i = 0; i + 1 < rAtoms.size(); ++i)
{ {
for (uint32_t j = i + 1; j < rAtoms.size(); ++j) for (uint32_t j = i + 1; j < rAtoms.size(); ++j)
...@@ -506,7 +362,7 @@ BondMap::BondMap(const Structure& p) ...@@ -506,7 +362,7 @@ BondMap::BondMap(const Structure& p)
{ {
uint32_t ixa = index[rAtoms[i].id()]; uint32_t ixa = index[rAtoms[i].id()];
uint32_t ixb = index[rAtoms[j].id()]; uint32_t ixb = index[rAtoms[j].id()];
bond.insert(key(ixa, ixb)); bond.insert(key(ixa, ixb));
} }
} }
...@@ -514,15 +370,16 @@ BondMap::BondMap(const Structure& p) ...@@ -514,15 +370,16 @@ BondMap::BondMap(const Structure& p)
} }
// loop over pdbx_branch_scheme // loop over pdbx_branch_scheme
for (auto r: db["pdbx_branch_scheme"].find(cif::Key("mon_id") == c)) for (auto r : db["pdbx_branch_scheme"].find(cif::Key("mon_id") == c))
{ {
std::string asymID; std::string asymID;
cif::tie(asymID) = r.get("asym_id"); cif::tie(asymID) = r.get("asym_id");
std::vector<Atom> rAtoms; std::vector<Atom> rAtoms;
copy_if(atoms.begin(), atoms.end(), back_inserter(rAtoms), copy_if(atoms.begin(), atoms.end(), back_inserter(rAtoms),
[&](auto& a) { return a.labelAsymID() == asymID; }); [&](auto &a)
{ return a.labelAsymID() == asymID; });
for (uint32_t i = 0; i + 1 < rAtoms.size(); ++i) for (uint32_t i = 0; i + 1 < rAtoms.size(); ++i)
{ {
for (uint32_t j = i + 1; j < rAtoms.size(); ++j) for (uint32_t j = i + 1; j < rAtoms.size(); ++j)
...@@ -531,31 +388,31 @@ BondMap::BondMap(const Structure& p) ...@@ -531,31 +388,31 @@ BondMap::BondMap(const Structure& p)
{ {
uint32_t ixa = index[rAtoms[i].id()]; uint32_t ixa = index[rAtoms[i].id()];
uint32_t ixb = index[rAtoms[j].id()]; uint32_t ixb = index[rAtoms[j].id()];
bond.insert(key(ixa, ixb)); bond.insert(key(ixa, ixb));
} }
} }
} }
} }
} }
// start by creating an index for single bonds // start by creating an index for single bonds
std::multimap<uint32_t,uint32_t> b1_2; std::multimap<uint32_t, uint32_t> b1_2;
for (auto& bk: bond) for (auto &bk : bond)
{ {
uint32_t a, b; uint32_t a, b;
std::tie(a, b) = dekey(bk); std::tie(a, b) = dekey(bk);
b1_2.insert({ a, b }); b1_2.insert({a, b});
b1_2.insert({ b, a }); b1_2.insert({b, a});
} }
std::multimap<uint32_t,uint32_t> b1_3; std::multimap<uint32_t, uint32_t> b1_3;
for (uint32_t i = 0; i < dim; ++i) for (uint32_t i = 0; i < dim; ++i)
{ {
auto a = b1_2.equal_range(i); auto a = b1_2.equal_range(i);
std::vector<uint32_t> s; std::vector<uint32_t> s;
for (auto j = a.first; j != a.second; ++j) for (auto j = a.first; j != a.second; ++j)
s.push_back(j->second); s.push_back(j->second);
...@@ -566,12 +423,12 @@ BondMap::BondMap(const Structure& p) ...@@ -566,12 +423,12 @@ BondMap::BondMap(const Structure& p)
{ {
uint32_t x = s[si1]; uint32_t x = s[si1];
uint32_t y = s[si2]; uint32_t y = s[si2];
if (isBonded(x, y)) if (isBonded(x, y))
continue; continue;
b1_3.insert({ x, y }); b1_3.insert({x, y});
b1_3.insert({ y, x }); b1_3.insert({y, x});
} }
} }
} }
...@@ -580,48 +437,48 @@ BondMap::BondMap(const Structure& p) ...@@ -580,48 +437,48 @@ BondMap::BondMap(const Structure& p)
{ {
auto a1 = b1_2.equal_range(i); auto a1 = b1_2.equal_range(i);
auto a2 = b1_3.equal_range(i); auto a2 = b1_3.equal_range(i);
for (auto ai1 = a1.first; ai1 != a1.second; ++ai1) for (auto ai1 = a1.first; ai1 != a1.second; ++ai1)
{ {
for (auto ai2 = a2.first; ai2 != a2.second; ++ai2) for (auto ai2 = a2.first; ai2 != a2.second; ++ai2)
{ {
uint32_t b1 = ai1->second; uint32_t b1 = ai1->second;
uint32_t b2 = ai2->second; uint32_t b2 = ai2->second;
if (isBonded(b1, b2)) if (isBonded(b1, b2))
continue; continue;
bond_1_4.insert(key(b1, b2)); bond_1_4.insert(key(b1, b2));
} }
} }
} }
} }
std::vector<std::string> BondMap::linked(const Atom& a) const std::vector<std::string> BondMap::linked(const Atom &a) const
{ {
auto i = link.find(a.id()); auto i = link.find(a.id());
std::vector<std::string> result; std::vector<std::string> result;
if (i != link.end()) if (i != link.end())
result = std::vector<std::string>(i->second.begin(), i->second.end()); result = std::vector<std::string>(i->second.begin(), i->second.end());
return result; return result;
} }
std::vector<std::string> BondMap::atomIDsForCompound(const std::string& compoundID) std::vector<std::string> BondMap::atomIDsForCompound(const std::string &compoundID)
{ {
std::vector<std::string> result; std::vector<std::string> result;
auto* compound = mmcif::CompoundFactory::instance().create(compoundID); auto *compound = mmcif::CompoundFactory::instance().create(compoundID);
if (compound == nullptr) if (compound == nullptr)
throw BondMapException("Missing bond information for compound " + compoundID); throw BondMapException("Missing bond information for compound " + compoundID);
for (auto& compAtom: compound->atoms()) for (auto &compAtom : compound->atoms())
result.push_back(compAtom.id); result.push_back(compAtom.id);
return result; return result;
} }
} } // namespace mmcif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment