Новосибирский институт органической химии им. Н.Н. Ворожцова СО РАН

Лаборатория изучения механизмов органических реакций

mm


#!/usr/bin/perl -ws

use vars qw($h $abbr $acpr $nosmart); # Переменные, определяемые опциями
#use List::Util qw(sum);

if ($h) { 
(my $program = $0) =~ s/.*\///;
print "
Вычисление молекулярного веса по брутто-формуле.

Usage: $program [-option] formula
Зависимости: Perl

Программа консольная, поэтому имеет смысл в основном на *nix, 
где консоль всегда \"под рукой\", и гораздо быстрее сказать 
$program Et2O c2h5oh
чем вызывать графическое приложение.
И поскольку это perl-скрипт, его легко сделать CGI-приложением, 
вдруг кому понадобится.

В программу зашито много стандартных аббревиатур (из J. Org. Chem.), 
поэтому ее можно использовать, в качестве \"напоминалки\":

>$program DABCO
DABCO is C6H12N2 1,4-diazabicyclo[2.2.2]octane
C6 H12 N2   112.17

В конец скрипта легко добавить свои сокращения 
(можно с использованием уже имеющихся).

Элементы можно набирать в нижнем регистре, в случае неоднозначностей 
типа sin будут выданы все варианты:

>$program sin
N Si   42.09
In S   146.88
I N S   172.98

Опции:
-abbr     напечатать список аббревиатур
-abbr=THF аббревиатуры, в которых (или в их описании) встречается THF
-acpr     Ac и Pr - не ацил и пропил, а актиний и празеодим
-nosmart  не пытаться составить элементы из последовательности прописных букв

";
  exit;
}

my %elements = read_elements();

#foreach my $e (grep {!/Xx/} sort {$elements{$a}{number} <=> $elements{$b}{number}} keys %elements) {
#  my %h = %{$elements{$e}{isotope}};
#  my $av = 0;
#  foreach (keys %h) {
#    $av += $h{$_}[0] * $h{$_}[1];
#  }
#  printf "%-4s%.4f %.4f\n", $e, $elements{$e}{weigth}, $av;
#}
#exit;

#my %AW = read_Atomic_Weigth();
##print "$k => $v\n" while (($k,$v) = each %AW);

my %subst = read_Abbreviations();
#print "$k => @$v\n" while (($k,$v) = each %subst); exit;
if ($abbr) {
  my $regexp = ($abbr eq '1') ? '' : $abbr; 
  foreach (sort {lc($a) cmp lc($b)} keys %subst) {
    if ("$_ @{$subst{$_}}" =~ /$regexp/i) {
      printf "%-9s%-18s%s\n", $_, $subst{$_}[0], $subst{$_}[1];
    }
  }
  exit;
}

if ($acpr) {
  delete $subst{Ac};
  delete $subst{Pr};
}

# "Двойные" элементы 
# si sc co ni cu nb in sn sb cs ho yb hf os pb bi po np pu bk cf no bh hs
# Si SC CO Ni Cu NB IN Sn Sb CS HO Yb HF OS Pb Bi PO NP Pu BK CF NO BH HS

# Элементы, совпадающие с заместителями
# Pr Ac

# Если аргументов нет, то читаем поток
@ARGV = <> unless @ARGV;

NEW_FORMULA:
foreach my $formula (@ARGV) {
  print "$formula:\n" if @ARGV > 1;
  
  # "Разворачиваем" заместители.
  while (1) {
    my $formula_before = $formula;
    foreach (sort {length($b)<=>length($a)} keys %subst) {
      $formula =~ s/\Q$_/($subst{$_}[0])/g &&
      warn "$_ is @{$subst{$_}}\n";
      #print "$formula_before $formula\n";
    }
    last if $formula eq $formula_before;
  }
  
  # "Раскрываем" скобки.
  my %b = map {"\\$_"} qw/ ( ) [ ] { } /;
  foreach (keys %b) {
    1 while $formula =~ s/$_$b{$_}\d*//g; # убираем ()
    1 while $formula =~ s/$_([^$_$b{$_}]*)$b{$_}(\d*)/$1 x ($2 eq '' ? 1 : $2)/eg;
  }
  # Не осталось ли лишних скобок?
  warn("odd bracket\n"), next NEW_FORMULA if join('', %b) =~ /[$formula]/;
  
  ################## Парсим формулу ########################
  # Разбиваем формулу на части,
  # добавляя пробелы после чисел и перед заглавными буквами
  $formula =~ s/(\d+)/$1 /g;
  $formula =~ s/([A-Z])/ $1/g;
  #print "$formula\n";
  
  # Парсим каждую часть
  my @formula = (''); # Комбинации допустимых вариантов формулы
  foreach my $part (split ' ', $formula) {
    #$part = ucfirst $part;
    my @variants; # Варианты написания части формулы
    my @combinations; # Комбинации вариантов
    
    if ($nosmart) { # С опцией -nosmart не делаем ничего такого
      push @variants, $part;
    } else { # пытаемся составить элементы из последовательности прописных букв
      my ($atoms, $num) = $part =~ /([A-Za-z]+)(\d*)/;
      # Находим варианты написания части формулы
      if ($atoms =~ /^[A-Z][a-z]?$/) {
        # Если эту часть формулы можно интерпретировать как элемент
        @variants = ($atoms.$num);
      } else {
        my @aa = split //, $atoms;
        #print "@aa\n";
        # Варианты представляем двоичными числами
        for (grep {! /00/} map {sprintf "%b", $_} 2**$#aa..2**@aa) {
          my $bin = reverse $_;
          # 1 - заглавная буква, 0 - прописная
          my $A = join '', map {chop($bin) ? uc : $_} @aa;
          push @variants, $A.$num;
        }
      }
    }

    # Отбрасываем варианты, в которых есть "неэлементы"
    my @variants_test;
    foreach (@variants) {
      my $OK = 1;
      while (/([A-Z][a-z]*)\d*/g) {
        $OK = 0, last unless exists $elements{$1};
      }
      push @variants_test, $_ if $OK;
    }
    @variants = @variants_test;
    warn("Bad part of formula: $part\n"), next NEW_FORMULA unless @variants;

    # Составляем комбинации вариантов
    foreach my $fff (@formula) {
      foreach (@variants) {
        push @combinations, $fff.$_;
      }
    }
    @formula = @combinations;
  }
  
  # Что-то выше неправильно, в массиве бывают дубли, избавимся от них пока так:
  my %seen = ();
  @formula = grep {! $seen{$_}++} @formula;
  #print "$_\n" foreach @formula;
  
  foreach (@formula) {
    my %hash;
    my $weigth = 0;
    while (/([A-Z][a-z]?)(\d*)/g) {
      my ($atom, $num) = ($1, $2 || 1);
      $hash{$atom} += $num;
    }
    foreach (sort by_hill keys %hash) {
      print $_ . ($hash{$_}==1 ? '' : $hash{$_}) . ' ';
      $weigth +=  $elements{$_}{weigth} * $hash{$_};
    }
    printf "\t%.2f\n", $weigth;
  }
}

sub by_hill {
  return -1 if uc($a) eq 'C' and uc($b) ne 'C';
  return  1 if uc($a) ne 'C' and uc($b) eq 'C';
  return -1 if uc($a) eq 'H' and uc($b) ne 'H';
  return  1 if uc($a) ne 'H' and uc($b) eq 'H';
  uc($a) cmp uc($b);
}

sub read_Atomic_Weigth {
  my %AW;
  OUTER:
  while (<DATA>) {
    if (/Isotopes/i) {
      while (<DATA>) {
        last OUTER if /^\s*$/; # Пустая строка - выход из цикла
        next if /^\s*#/; # Пропускаем комментарии
        if (/^\d/) {
          my @arr = split;
          my $element = $arr[1];
          my $weigth = $arr[5] || $arr[4];
          $weigth =~ s/[()\[\]]//g;
          $AW{$element} = $weigth;
        }
      }
    }
  }
  $AW{'Xx'} = 0;
  return %AW;
}

sub read_Isotopes {
  my %AW;
  OUTER:
  while (<DATA>) {
    if (/Isotopes/i) {
      while (<DATA>) {
        last OUTER if /^\s*$/; # Пустая строка - выход из цикла
        next if /^\s*#/; # Пропускаем комментарии
        if (/^\d/) {
          my @arr = split;
          my $element = $arr[1];
          my $weigth = $arr[5] || $arr[4];
          $weigth =~ s/[()\[\]]//g;
          $AW{$element} = $weigth;
        }
      }
    }
  }
  $AW{'Xx'} = 0;
  return %AW;
}

sub read_elements {
  my (%elements,$element, $is_radio);
  OUTER:
  while (<DATA>) {
    if (/Isotopes/i) {
      while (<DATA>) {
        last OUTER if /^\s*$/; # Пустая строка - выход из цикла
        next if /^[-_#]/; # Пропускаем комментарии и разделители таблицы
        my @a = map {s/\(\d+\)//; s/#//; $_} unpack("A4 A4 A5 A19 A14 A13", $_);
        #print join('|', @a), "\n";
        if ($a[0]) {
          $element = $a[1];
          $elements{$element}{number} = $a[0];
#          if ($a[5] =~ s/\[(\d+)\]/$1/ ) {
#            $is_radio = 1;
#          }
          $elements{$element}{weigth} = $a[5];
        }
        $a[4] ||= 0;
        $elements{$element}{isotope}{$a[2]} = [$a[3],$a[4]/100];
      }
    }
  }
  
  foreach $element (keys %elements) {
    if ($elements{$element}{weigth} =~ /\[(\d+)\]/) {
      $elements{$element}{isotope}{$1} = [$1, 0] unless $elements{$element}{isotope}{$1}[0];
      $elements{$element}{weigth} = $elements{$element}{isotope}{$1}[0] || $1;
    }
  }
  
  $elements{'Xx'}{number} = 0;
  $elements{'Xx'}{weigth} = 0;
  
  return %elements;
}

sub read_Abbreviations {
  my %subst;
  OUTER:
  while (<DATA>) {
    if (/Abbreviations/i) {
      while (<DATA>) {
        chomp;
        last OUTER if /^\s*$/; # Пустая строка - выход из цикла
        next if /^\s*#/; # Пропускаем комментарии
        my ($abbr, $formula, $descr) = split ' ', $_, 3;
        $subst{$abbr} = [$formula,$descr];
      }
    }
  }
  return %subst;
}

__DATA__
[Periodic_table]
 Xx
H                                                  He
Li Be                               B  C  N  O  F  Ne
Na Mg                               Al Si P  S  Cl Ar
K  Ca Sc Ti V  Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y  Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I  Xe
Cs Ba La
        Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb
      Lu Hf Ta W  Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
        Th Pa U  Np Pu Am Cm Bk Cf Es Fm Md No
      Lr Rf Db Sg Bh Hs Mt Ds Rg

[Isotopes]
#Atomic Weights and Isotopic Compositions for All Elements
#http://physics.nist.gov/PhysRefData/Compositions/index.html
#            Relative           Isotopic      Standard     
#Isotope     Atomic Mass        Composition   Atomic Weight
-----------------------------------------------------------
1   H   1    1.0078250321(4)    99.9885(70)   1.00794(7)   
    D   2    2.0141017780(4)    0.0115(70)  
    T   3    3.0160492675(11)               
-----------------------------------------------------------
2   He  3    3.0160293097(9)    0.000137(3)   4.002602(2)  
        4    4.0026032497(10)   99.999863(3)
-----------------------------------------------------------
3   Li  6    6.0151223(5)       7.59(4)       6.941(2)     
        7    7.0160040(5)       92.41(4)    
-----------------------------------------------------------
4   Be  9    9.0121821(4)       100           9.012182(3)  
-----------------------------------------------------------
5   B   10   10.0129370(4)      19.9(7)       10.811(7)    
        11   11.0093055(5)      80.1(7)     
-----------------------------------------------------------
6   C   12   12.0000000(0)      98.93(8)      12.0107(8)   
        13   13.0033548378(10)  1.07(8)     
        14   14.003241988(4)                
-----------------------------------------------------------
7   N   14   14.0030740052(9)   99.632(7)     14.0067(2)   
        15   15.0001088984(9)   0.368(7)    
-----------------------------------------------------------
8   O   16   15.9949146221(15)  99.757(16)    15.9994(3)   
        17   16.99913150(22)    0.038(1)    
        18   17.9991604(9)      0.205(14)   
-----------------------------------------------------------
9   F   19   18.99840320(7)     100           18.9984032(5)
-----------------------------------------------------------
10  Ne  20   19.9924401759(20)  90.48(3)      20.1797(6)   
        21   20.99384674(4)     0.27(1)     
        22   21.99138551(23)    9.25(3)     
-----------------------------------------------------------
11  Na  23   22.98976967(23)    100           22.989770(2) 
-----------------------------------------------------------
12  Mg  24   23.98504190(20)    78.99(4)      24.3050(6)   
        25   24.98583702(20)    10.00(1)    
        26   25.98259304(21)    11.01(3)    
-----------------------------------------------------------
13  Al  27   26.98153844(14)    100           26.981538(2) 
-----------------------------------------------------------
14  Si  28   27.9769265327(20)  92.2297(7)    28.0855(3)   
        29   28.97649472(3)     4.6832(5)   
        30   29.97377022(5)     3.0872(5)   
-----------------------------------------------------------
15  P   31   30.97376151(20)    100           30.973761(2) 
-----------------------------------------------------------
16  S   32   31.97207069(12)    94.93(31)     32.065(5)    
        33   32.97145850(12)    0.76(2)     
        34   33.96786683(11)    4.29(28)    
        36   35.96708088(25)    0.02(1)     
-----------------------------------------------------------
17  Cl  35   34.96885271(4)     75.78(4)      35.453(2)    
        37   36.96590260(5)     24.22(4)    
-----------------------------------------------------------
18  Ar  36   35.96754628(27)    0.3365(30)    39.948(1)    
        38   37.9627322(5)      0.0632(5)   
        40   39.962383123(3)    99.6003(30) 
-----------------------------------------------------------
19  K   39   38.9637069(3)      93.2581(44)   39.0983(1)   
        40   39.96399867(29)    0.0117(1)   
        41   40.96182597(28)    6.7302(44)  
-----------------------------------------------------------
20  Ca  40   39.9625912(3)      96.941(156)   40.078(4)    
        42   41.9586183(4)      0.647(23)   
        43   42.9587668(5)      0.135(10)   
        44   43.9554811(9)      2.086(110)  
        46   45.9536928(25)     0.004(3)    
        48   47.952534(4)       0.187(21)   
-----------------------------------------------------------
21  Sc  45   44.9559102(12)     100           44.955910(8) 
-----------------------------------------------------------
22  Ti  46   45.9526295(12)     8.25(3)       47.867(1)    
        47   46.9517638(10)     7.44(2)     
        48   47.9479471(10)     73.72(3)    
        49   48.9478708(10)     5.41(2)     
        50   49.9447921(11)     5.18(2)     
-----------------------------------------------------------
23  V   50   49.9471628(14)     0.250(4)      50.9415(1)   
        51   50.9439637(14)     99.750(4)   
-----------------------------------------------------------
24  Cr  50   49.9460496(14)     4.345(13)     51.9961(6)   
        52   51.9405119(15)     83.789(18)  
        53   52.9406538(15)     9.501(17)   
        54   53.9388849(15)     2.365(7)    
-----------------------------------------------------------
25  Mn  55   54.9380496(14)     100           54.938049(9) 
-----------------------------------------------------------
26  Fe  54   53.9396148(14)     5.845(35)     55.845(2)    
        56   55.9349421(15)     91.754(36)  
        57   56.9353987(15)     2.119(10)   
        58   57.9332805(15)     0.282(4)    
-----------------------------------------------------------
27  Co  59   58.9332002(15)     100           58.933200(9) 
-----------------------------------------------------------
28  Ni  58   57.9353479(15)     68.0769(89)   58.6934(2)   
        60   59.9307906(15)     26.2231(77) 
        61   60.9310604(15)     1.1399(6)   
        62   61.9283488(15)     3.6345(17)  
        64   63.9279696(16)     0.9256(9)   
-----------------------------------------------------------
29  Cu  63   62.9296011(15)     69.17(3)      63.546(3)    
        65   64.9277937(19)     30.83(3)    
-----------------------------------------------------------
30  Zn  64   63.9291466(18)     48.63(60)     65.409(4)    
        66   65.9260368(16)     27.90(27)   
        67   66.9271309(17)     4.10(13)    
        68   67.9248476(17)     18.75(51)   
        70   69.925325(4)       0.62(3)     
-----------------------------------------------------------
31  Ga  69   68.925581(3)       60.108(9)     69.723(1)    
        71   70.9247050(19)     39.892(9)   
-----------------------------------------------------------
32  Ge  70   69.9242504(19)     20.84(87)     72.64(1)     
        72   71.9220762(16)     27.54(34)   
        73   72.9234594(16)     7.73(5)     
        74   73.9211782(16)     36.28(73)   
        76   75.9214027(16)     7.61(38)    
-----------------------------------------------------------
33  As  75   74.9215964(18)     100           74.92160(2)  
-----------------------------------------------------------
34  Se  74   73.9224766(16)     0.89(4)       78.96(3)     
        76   75.9192141(16)     9.37(29)    
        77   76.9199146(16)     7.63(16)    
        78   77.9173095(16)     23.77(28)   
        80   79.9165218(20)     49.61(41)   
        82   81.9167000(22)     8.73(22)    
-----------------------------------------------------------
35  Br  79   78.9183376(20)     50.69(7)      79.904(1)    
        81   80.916291(3)       49.31(7)    
-----------------------------------------------------------
36  Kr  78   77.920386(7)       0.35(1)       83.798(2)    
        80   79.916378(4)       2.28(6)     
        82   81.9134846(28)     11.58(14)   
        83   82.914136(3)       11.49(6)    
        84   83.911507(3)       57.00(4)    
        86   85.9106103(12)     17.30(22)   
-----------------------------------------------------------
37  Rb  85   84.9117893(25)     72.17(2)      85.4678(3)   
        87   86.9091835(27)     27.83(2)    
-----------------------------------------------------------
38  Sr  84   83.913425(4)       0.56(1)       87.62(1)     
        86   85.9092624(24)     9.86(1)     
        87   86.9088793(24)     7.00(1)     
        88   87.9056143(24)     82.58(1)    
-----------------------------------------------------------
39  Y   89   88.9058479(25)     100           88.90585(2)  
-----------------------------------------------------------
40  Zr  90   89.9047037(23)     51.45(40)     91.224(2)    
        91   90.9056450(23)     11.22(5)    
        92   91.9050401(23)     17.15(8)    
        94   93.9063158(25)     17.38(28)   
        96   95.908276(3)       2.80(9)     
-----------------------------------------------------------
41  Nb  93   92.9063775(24)     100           92.90638(2)  
-----------------------------------------------------------
42  Mo  92   91.906810(4)       14.84(35)     95.94(2)     
        94   93.9050876(20)     9.25(12)    
        95   94.9058415(20)     15.92(13)   
        96   95.9046789(20)     16.68(2)    
        97   96.9060210(20)     9.55(8)     
        98   97.9054078(20)     24.13(31)   
        100  99.907477(6)       9.63(23)    
-----------------------------------------------------------
43  Tc  97   96.906365(5)                     [98]         
        98   97.907216(4)                   
        99   98.9062546(21)                 
-----------------------------------------------------------
44  Ru  96   95.907598(8)       5.54(14)      101.07(2)    
        98   97.905287(7)       1.87(3)     
        99   98.9059393(21)     12.76(14)   
        100  99.9042197(22)     12.60(7)    
        101  100.9055822(22)    17.06(2)    
        102  101.9043495(22)    31.55(14)   
        104  103.905430(4)      18.62(27)   
-----------------------------------------------------------
45  Rh  103  102.905504(3)      100           102.90550(2) 
-----------------------------------------------------------
46  Pd  102  101.905608(3)      1.02(1)       106.42(1)    
        104  103.904035(5)      11.14(8)    
        105  104.905084(5)      22.33(8)    
        106  105.903483(5)      27.33(3)    
        108  107.903894(4)      26.46(9)    
        110  109.905152(12)     11.72(9)    
-----------------------------------------------------------
47  Ag  107  106.905093(6)      51.839(8)     107.8682(2)  
        109  108.904756(3)      48.161(8)   
-----------------------------------------------------------
48  Cd  106  105.906458(6)      1.25(6)       112.411(8)   
        108  107.904183(6)      0.89(3)     
        110  109.903006(3)      12.49(18)   
        111  110.904182(3)      12.80(12)   
        112  111.9027572(30)    24.13(21)   
        113  112.9044009(30)    12.22(12)   
        114  113.9033581(30)    28.73(42)   
        116  115.904755(3)      7.49(18)    
-----------------------------------------------------------
49  In  113  112.904061(4)      4.29(5)       114.818(3)   
        115  114.903878(5)      95.71(5)    
-----------------------------------------------------------
50  Sn  112  111.904821(5)      0.97(1)       118.710(7)   
        114  113.902782(3)      0.66(1)     
        115  114.903346(3)      0.34(1)     
        116  115.901744(3)      14.54(9)    
        117  116.902954(3)      7.68(7)     
        118  117.901606(3)      24.22(9)    
        119  118.903309(3)      8.59(4)     
        120  119.9021966(27)    32.58(9)    
        122  121.9034401(29)    4.63(3)     
        124  123.9052746(15)    5.79(5)     
-----------------------------------------------------------
51  Sb  121  120.9038180(24)    57.21(5)      121.760(1)   
        123  122.9042157(22)    42.79(5)    
-----------------------------------------------------------
52  Te  120  119.904020(11)     0.09(1)       127.60(3)    
        122  121.9030471(20)    2.55(12)    
        123  122.9042730(19)    0.89(3)     
        124  123.9028195(16)    4.74(14)    
        125  124.9044247(20)    7.07(15)    
        126  125.9033055(20)    18.84(25)   
        128  127.9044614(19)    31.74(8)    
        130  129.9062228(21)    34.08(62)   
-----------------------------------------------------------
53  I   127  126.904468(4)      100           126.90447(3) 
-----------------------------------------------------------
54  Xe  124  123.9058958(21)    0.09(1)       131.293(6)   
        126  125.904269(7)      0.09(1)     
        128  127.9035304(15)    1.92(3)     
        129  128.9047795(9)     26.44(24)   
        130  129.9035079(10)    4.08(2)     
        131  130.9050819(10)    21.18(3)    
        132  131.9041545(12)    26.89(6)    
        134  133.9053945(9)     10.44(10)   
        136  135.907220(8)      8.87(16)    
-----------------------------------------------------------
55  Cs  133  132.905447(3)      100           132.90545(2) 
-----------------------------------------------------------
56  Ba  130  129.906310(7)      0.106(1)      137.327(7)   
        132  131.905056(3)      0.101(1)    
        134  133.904503(3)      2.417(18)   
        135  134.905683(3)      6.592(12)   
        136  135.904570(3)      7.854(24)   
        137  136.905821(3)      11.232(24)  
        138  137.905241(3)      71.698(42)  
-----------------------------------------------------------
57  La  138  137.907107(4)      0.090(1)      138.9055(2)  
        139  138.906348(3)      99.910(1)   
-----------------------------------------------------------
58  Ce  136  135.907140(50)     0.185(2)      140.116(1)   
        138  137.905986(11)     0.251(2)    
        140  139.905434(3)      88.450(51)  
        142  141.909240(4)      11.114(51)  
-----------------------------------------------------------
59  Pr  141  140.907648(3)      100           140.90765(2) 
-----------------------------------------------------------
60  Nd  142  141.907719(3)      27.2(5)       144.24(3)    
        143  142.909810(3)      12.2(2)     
        144  143.910083(3)      23.8(3)     
        145  144.912569(3)      8.3(1)      
        146  145.913112(3)      17.2(3)     
        148  147.916889(3)      5.7(1)      
        150  149.920887(4)      5.6(2)      
-----------------------------------------------------------
61  Pm  145  144.912744(4)                    [145]        
        147  146.915134(3)                  
-----------------------------------------------------------
62  Sm  144  143.911995(4)      3.07(7)       150.36(3)    
        147  146.914893(3)      14.99(18)   
        148  147.914818(3)      11.24(10)   
        149  148.917180(3)      13.82(7)    
        150  149.917271(3)      7.38(1)     
        152  151.919728(3)      26.75(16)   
        154  153.922205(3)      22.75(29)   
-----------------------------------------------------------
63  Eu  151  150.919846(3)      47.81(3)      151.964(1)   
        153  152.921226(3)      52.19(3)    
-----------------------------------------------------------
64  Gd  152  151.919788(3)      0.20(1)       157.25(3)    
        154  153.920862(3)      2.18(3)     
        155  154.922619(3)      14.80(12)   
        156  155.922120(3)      20.47(9)    
        157  156.923957(3)      15.65(2)    
        158  157.924101(3)      24.84(7)    
        160  159.927051(3)      21.86(19)   
-----------------------------------------------------------
65  Tb  159  158.925343(3)      100           158.92534(2) 
-----------------------------------------------------------
66  Dy  156  155.924278(7)      0.06(1)       162.500(1)   
        158  157.924405(4)      0.10(1)     
        160  159.925194(3)      2.34(8)     
        161  160.926930(3)      18.91(24)   
        162  161.926795(3)      25.51(26)   
        163  162.928728(3)      24.90(16)   
        164  163.929171(3)      28.18(37)   
-----------------------------------------------------------
67  Ho  165  164.930319(3)      100           164.93032(2) 
-----------------------------------------------------------
68  Er  162  161.928775(4)      0.14(1)       167.259(3)   
        164  163.929197(4)      1.61(3)     
        166  165.930290(3)      33.61(35)   
        167  166.932045(3)      22.93(17)   
        168  167.932368(3)      26.78(26)   
        170  169.935460(3)      14.93(27)   
-----------------------------------------------------------
69  Tm  169  168.934211(3)      100           168.93421(2) 
-----------------------------------------------------------
70  Yb  168  167.933894(5)      0.13(1)       173.04(3)    
        170  169.934759(3)      3.04(15)    
        171  170.936322(3)      14.28(57)   
        172  171.9363777(30)    21.83(67)   
        173  172.9382068(30)    16.13(27)   
        174  173.9388581(30)    31.83(92)   
        176  175.942568(3)      12.76(41)   
-----------------------------------------------------------
71  Lu  175  174.9407679(28)    97.41(2)      174.967(1)   
        176  175.9426824(28)    2.59(2)     
-----------------------------------------------------------
72  Hf  174  173.940040(3)      0.16(1)       178.49(2)    
        176  175.9414018(29)    5.26(7)     
        177  176.9432200(27)    18.60(9)    
        178  177.9436977(27)    27.28(7)    
        179  178.9458151(27)    13.62(2)    
        180  179.9465488(27)    35.08(16)   
-----------------------------------------------------------
73  Ta  180  179.947466(3)      0.012(2)      180.9479(1)  
        181  180.947996(3)      99.988(2)   
-----------------------------------------------------------
74  W   180  179.946706(5)      0.12(1)       183.84(1)    
        182  181.948206(3)      26.50(16)   
        183  182.9502245(29)    14.31(4)    
        184  183.9509326(29)    30.64(2)    
        186  185.954362(3)      28.43(19)   
-----------------------------------------------------------
75  Re  185  184.9529557(30)    37.40(2)      186.207(1)   
        187  186.9557508(30)    62.60(2)    
-----------------------------------------------------------
76  Os  184  183.952491(3)      0.02(1)       190.23(3)    
        186  185.953838(3)      1.59(3)     
        187  186.9557479(30)    1.96(2)     
        188  187.9558360(30)    13.24(8)    
        189  188.9581449(30)    16.15(5)    
        190  189.958445(3)      26.26(2)    
        192  191.961479(4)      40.78(19)   
-----------------------------------------------------------
77  Ir  191  190.960591(3)      37.3(2)       192.217(3)   
        193  192.962924(3)      62.7(2)     
-----------------------------------------------------------
78  Pt  190  189.959930(7)      0.014(1)      195.078(2)   
        192  191.961035(4)      0.782(7)    
        194  193.962664(3)      32.967(99)  
        195  194.964774(3)      33.832(10)  
        196  195.964935(3)      25.242(41)  
        198  197.967876(4)      7.163(55)   
-----------------------------------------------------------
79  Au  197  196.966552(3)      100           196.96655(2) 
-----------------------------------------------------------
80  Hg  196  195.965815(4)      0.15(1)       200.59(2)    
        198  197.966752(3)      9.97(20)    
        199  198.968262(3)      16.87(22)   
        200  199.968309(3)      23.10(19)   
        201  200.970285(3)      13.18(9)    
        202  201.970626(3)      29.86(26)   
        204  203.973476(3)      6.87(15)    
-----------------------------------------------------------
81  Tl  203  202.972329(3)      29.524(14)    204.3833(2)  
        205  204.974412(3)      70.476(14)  
-----------------------------------------------------------
82  Pb  204  203.973029(3)      1.4(1)        207.2(1)     
        206  205.974449(3)      24.1(1)     
        207  206.975881(3)      22.1(1)     
        208  207.976636(3)      52.4(1)     
-----------------------------------------------------------
83  Bi  209  208.980383(3)      100           208.98038(2) 
-----------------------------------------------------------
84  Po  209  208.982416(3)                    [209]        
        210  209.982857(3)                  
-----------------------------------------------------------
85  At  210  209.987131(9)                    [210]        
        211  210.987481(4)                  
-----------------------------------------------------------
86  Rn  211  210.990585(8)                    [222]        
        220  220.0113841(29)                
        222  222.0175705(27)                
-----------------------------------------------------------
87  Fr  223  223.0197307(29)                  [223]        
-----------------------------------------------------------
88  Ra  223  223.018497(3)                    [226]        
        224  224.0202020(29)                
        226  226.0254026(27)                
        228  228.0310641(27)                
-----------------------------------------------------------
89  Ac  227  227.0277470(29)                  [227]        
-----------------------------------------------------------
90  Th  230  230.0331266(22)                  232.0381(1)  
        232  232.0380504(22)    100         
-----------------------------------------------------------
91  Pa  231  231.0358789(28)    100           231.03588(2) 
-----------------------------------------------------------
92  U   233  233.039628(3)                    238.02891(3) 
        234  234.0409456(21)    0.0055(2)   
        235  235.0439231(21)    0.7200(51)  
        236  236.0455619(21)                
        238  238.0507826(21)    99.2745(106)
-----------------------------------------------------------
93  Np  237  237.0481673(21)                  [237]        
        239  239.0529314(23)                
-----------------------------------------------------------
94  Pu  238  238.0495534(21)                  [244]        
        239  239.0521565(21)                
        240  240.0538075(21)                
        241  241.0568453(21)                
        242  242.0587368(21)                
        244  244.064198(5)                  
-----------------------------------------------------------
95  Am  241  241.0568229(21)                  [243]        
        243  243.0613727(23)                
-----------------------------------------------------------
96  Cm  243  243.0613822(24)                  [247]        
        244  244.0627463(21)                
        245  245.0654856(29)                
        246  246.0672176(24)                
        247  247.070347(5)                  
        248  248.072342(5)                  
-----------------------------------------------------------
97  Bk  247  247.070299(6)                    [247]        
        249  249.074980(3)                  
-----------------------------------------------------------
98  Cf  249  249.074847(3)                    [251]        
        250  250.0764000(24)                
        251  251.079580(5)                  
        252  252.081620(5)                  
-----------------------------------------------------------
99  Es  252  252.082970(50)                   [252]        
-----------------------------------------------------------
100 Fm  257  257.095099(7)                    [257]        
-----------------------------------------------------------
101 Md  256  256.094050(60)                   [258]        
        258  258.098425(5)                  
-----------------------------------------------------------
102 No  259  259.10102(11)#                   [259]        
-----------------------------------------------------------
103 Lr  262  262.10969(32)#                   [262]        
-----------------------------------------------------------
104 Rf  261  261.10875(11)#                   [261]        
-----------------------------------------------------------
105 Db  262  262.11415(20)#                   [262]        
-----------------------------------------------------------
106 Sg  266  266.12193(31)#                   [266]        
-----------------------------------------------------------
107 Bh  264  264.12473(30)#                   [264]        
-----------------------------------------------------------
108 Hs  277                                   [277]        
-----------------------------------------------------------
109 Mt  268  268.13882(34)#                   [268]        
-----------------------------------------------------------


[Abbreviations]
# From J. Org. Chem.
Ac      CH3CO             acetyl
acac    CH3COCHCH3CO      acetylacetonate
ADP     C10H15N5O10P2     adenosine 5-diphosphate
AIBN    C8H12N4           2,2-azobisisobutyronitrile
AMP     C10H12N5O6P       adenosine 5-monophosphate
ATP     C10H16N5O13P3     adenosine 5-triphosphate
9-BBN   C8H14B            9-borabicyclo[3.3.1]nonyl
9-BBN-H C8H15B            9-borabicyclo[3.3.1]nonane
Bn      C6H5CH2           benzyl
Bzl     C6H5CH2           benzyl
bpy     C5H4NC5H4N        2,2-bipyridyl
BOC     C4H9OCO           tert-butoxycarbonyl
Boc     C4H9OCO           tert-butoxycarbonyl
Bu      C4H9              butyl
n-Bu    C4H9              normal (primary) butyl
s-Bu    C4H9              sec-butyl
t-Bu    C4H9              tert-butyl
Bz      C6H5CO            benzoyl (not benzyl)
cAMP    C10H12N5O6P       adenosine cyclic 3,5-phosphate
CAN     (NH4)2Ce(NO3)6    ceric ammonium nitrate
CBZ     C6H5CH20CO        benzyloxycarbonyl
Cbz     C6H5CH20CO        benzyloxycarbonyl
c-Hex   C6H11             cyclohexyl
cod     C8H12             1,5-cyclooctadiene
cot     C8H8              1,3,5,7-cyclooctatetraene
Cp      C5H5              cyclopentadienyl
m-CPBA  C6H4CO3H          meta-chloroperoxybenzoic acid
DABCO   C6H12N2           1,4-diazabicyclo[2.2.2]octane
dansyl  (CH3)2NC10H6SO2   5-(dimethylamino)-1-naphthalenesulfonyl
DBN     C7H12N2           1,5-diazabicyclo[4.3.0]non-5-ene
DBU     C9H16N2           1,8-diazabicyclo[5.4.0]undec-7-ene
DCC     C6H11NCNC6H11     N,N-dicyclohexylcarbodiimide
DCE     CH2ClCH2Cl        1,2-dichloroethane
DDQ     C6O2Cl2(CN)2      2,3-dichloro-5,6-dicyano-1,4-benzoquinone
DEAD    (C2H5OCON)2       diethyl azodicarboxylate
DIBALH  (C4H9)2AlH        diisobutylaluminum hydride
DIBAH   Bu2AlH            diisobutylaluminum hydride
DMA     CH3CON(CH3)2      dimethylacetamide
DMAP    NC5H4N(CH3)2      4-(N,N-dimethylamino)pyridine
DMDO    Me2COO            dimethyldioxirane
DMD     Me2COO            dimethyldioxirane
DME     MeOCH2CH2OMe      1,2-dimethoxyethane
DMF     HCONMe2           dimethylformamide
DMPU    C6H12N2O          1,3-dimethyl-3,4,5,6-tetrahydro-2(1H)-pyrimidinone
DMSO    Me2SO             dimethyl sulfoxide
DMTrCl  (MeOC6H4)2PhCCl   4,4-dimethoxytrityl chloride
DMTr    (MeOC6H4)2PhC     4,4-dimethoxytrityl
DPS     BuPh2Si           tert-butyldiphenylsilyl
DTT     (HSCH2CHOH)2      dithiothreitol
EDTA    ((HO2CCH2)2NCH2)2 ethylenediaminetetraacetic acid
Et      C2H5              ethyl
Fmoc    C13H8CH2OCO       9-fluorenylmethoxycarbonyl
GTP     C10H16N5O14P3     guanosine 5-triphosphate
HMPA    OP(NMe2)3         hexamethylphosphoric triamide (hexamethylphosphoramide)
LAH     LiAlH4            lithium aluminum hydride
LDA     LiN(C3H7)2        lithium diisopropylamide
LHMDS   LiN(SiMe3)2       lithium hexamethyldisilazane, lithium bis(trimethylsilyl)amide
LTMP    LiNCMe2(CH2)3CMe2 lithium 2,2,6,6-tetramethylpiperidide
Me      CH3               methyl
MEM     MeOCH2CH2OCH2     (2-methoxyethoxy)methyl
Mes     C6Me3H2           2,4,6-trimethylphenyl (mesityl) [not methylsulfonyl mesyl]
MOM     MeOCH2            methoxymethyl
Ms      MeSO2             methylsulfonyl (mesyl)
MTBE    MeOBu             methyl tert-butyl ether
NAD+    C21H27N7O14P2     nicotinamide adenine dinucleotide
DPN+    C21H27N7O14P2     nicotinamide adenine dinucleotide
NADH    C21H28N7O14P2     reduced NAD
NBS     C4H4BrNO2         N-bromosuccinimide
NCS     C4H4ClNO2         N-chlorosuccinimide
NMO     C5H11NO2          N-methylmorpholine-N-oxide
NMP     C5H9NO            N-methylpyrrolidone
PCC     C5H5NHClCrO3      pyridinium chlorochromate
PDC     C10H10N2H2Cr2O7   pyridinium dichromate
Ph      C6H5              phenyl
piv     (CH3)3CCO         pivaloyl
PPTS    C5H5NHO3SC6H4Me   pyridinium para-toluenesulfonate
Pr      C3H7              propyl
i-Pr    C3H7              isopropyl
py      C5H5N             pyridine
TBAB    Bu4NBr            tetrabutylammonium bromide
TBAC    Bu4NCl            tetrabutylammonium chloride
TBS     BuMe2Si           tert-butyldimethylsilyl
TBHP    BuOOH             tert-butyl hydroperoxide
TCA     CCl3CO2H          trichloroacetic acid
TCNE    C2(CN)4           tetracyanoethylene
TEAB    Et4NBr            tetraethylammonium bromide
Tf      CF3SO2            trifluoromethanesulfonyl (triflyl)
TFA     CF3CO2H           trifluoroacetic acid
TFAA    (CF3CO)2          trifluoroacetic anhydride
THF     C4H8O             tetrahydrofuran
THP     C5H9O             tetrahydropyran-2-yl
TIPS    (C3H7)3Si         triisopropylsilyl
TMAI    Me4NI             tetramethylammonium iodide
TMEDA   (Me2NCH2)2        N,N,N,N-tetramethyl-1,2-ethylenediamine
TMS     Me3Si             trimethylsilyl
Tr      Ph3C              triphenylmethyl (trityl)
Ts      MeC6H4SO2         para-toluenesulfonyl (tosyl)
# User's abbreviations
Nf      C10H7             naphthyl
Phf     C6F5              pentafluorophenyl
Acf     CF3CO             trifluoroacetyl
Cp*     C5Me5             pentamethylcyclopentadienyl 
TBA     Bu4N              tetrabutylammonium
TEA     Et4N              tetraethylammonium
TMA     Me4N              tetramethylammonium
hfac    CF3COCHCF3CO      hexafluoroacetylacetonate
dba     PhCHCHCOCHCHPh    dibenzylideneacetone
DMph    (C6H4CMe)2        dimethylphenanthrene
DMac    C10H6CMeCMe       dimethylacenaphthylene