rubychem 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/benchmark.rb +2 -2
- data/lib/rubychem.rb +2 -62
- data/lib/{comments.rb → rubychem/comments.rb} +0 -0
- data/lib/rubychem/molecule.rb +62 -0
- data/lib/{valence.rb → rubychem/valence.rb} +0 -0
- data/lib/rubychem/version.rb +1 -1
- data/rubychem-1.0.1.gem +0 -0
- metadata +6 -4
data/lib/benchmark.rb
CHANGED
data/lib/rubychem.rb
CHANGED
@@ -1,62 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
MASSES = { :H => 1.01, :He => 4.00, :Li => 6.94, :Be => 9.01, :B => 10.81, :C => 12.01, :N => 14.01, :F => 19.00, :Ne => 20.18, :S => 32.01, :O => 15.99,
|
5
|
-
:Na => 22.99, :Mg => 24.31, :Al => 26.98, :Si => 28.09, :P => 30.97, :Cl => 35.45, :Ar => 39.95, :K => 39.1, :Ca => 40.08, :Sc => 44.96, :Ti => 47.88, :V => 50.94,
|
6
|
-
:Cr => 52.00, :Mn => 54.94, :Fe => 55.85, :Co => 58.93, :Ni => 58.69, :Cu => 63.55, :Zn => 65.39, :Ga => 69.72, :Ge=> 72.61, :As => 74.92, :Se => 78.96,
|
7
|
-
:Br => 79.90, :Kr => 83.80, :Rb => 85.47, :Sr => 87.62, :Y => 88.91, :Zr => 91.22, :Nb => 92.91, :Mo => 95.94, :Te => 98, :Ru => 101.07, :Rh => 102.91,
|
8
|
-
:Pd => 106.42, :Ag => 107.87, :Cd => 112.41, :In => 114.82, :Sn => 118.71, :Sb => 121.76, :Te => 127.6, :I => 126.9, :Xe => 131.29, :Cs => 132.9, :Ba => 137.3,
|
9
|
-
:La => 138.9, :Hf => 178.5, :Ta => 180.9, :W => 183.9, :Re => 186.2, :Os => 190.2, :Ir => 192.2, :Pt => 195.1, :Au => 197.0, :Hg => 200.6, :Ti => 204.4,
|
10
|
-
:Pb => 207.2, :Bi => 209, :Po => 209, :At => 210, :Rn => 222, :Fr => 223, :Ra => 226, :Ac => 227, :Rf => 261, :Db => 262, :Sg => 263, :Bh => 264, :Hs => 265,
|
11
|
-
:Mt => 268, :Ds => 271, :Rg => 272 }
|
12
|
-
|
13
|
-
attr_accessor :chem_species, :mm
|
14
|
-
|
15
|
-
def initialize(formula)
|
16
|
-
if formula.scan(/\d+$/) == []
|
17
|
-
x = formula.gsub(/$/, '1').scan(/[A-za-z]*\d+/)
|
18
|
-
speciate(x)
|
19
|
-
else
|
20
|
-
x = formula.scan(/[A-za-z]*\d+/)
|
21
|
-
speciate(x)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def speciate(x)
|
28
|
-
@chem_species = x.map { |chem| chem.scan(/[A-Z][^A-Z]*/) }.flatten
|
29
|
-
@chem_species.map! {|chem| chem.scan /[A-Z]+|\d+/i }
|
30
|
-
atom_masses = @chem_species.map { |(elem, coeff)| MASSES[elem.to_sym] * (coeff || 1).to_f }
|
31
|
-
x = atom_masses.map { |int| int.to_f }
|
32
|
-
@mm = x.inject(0) { |s,v| s+= v }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class BalanceChem
|
37
|
-
attr_accessor :balanced, :lefteq, :righteq, :leftfw, :rightfw, :count
|
38
|
-
|
39
|
-
##
|
40
|
-
# Checks if two formulas are balanced.
|
41
|
-
#
|
42
|
-
def initialize(lefteq, righteq)
|
43
|
-
@lefteq = lefteq
|
44
|
-
@righteq = righteq
|
45
|
-
@balanced = ( RubyChem::Chemical.new(@lefteq).mm - RubyChem::Chemical.new(@righteq).mm ).abs < 0.00001
|
46
|
-
end
|
47
|
-
|
48
|
-
def balanceit
|
49
|
-
@count = 0
|
50
|
-
@leftfw = @leftfw.fw
|
51
|
-
@rightfw = @rightfw.fw
|
52
|
-
until @balanced == true
|
53
|
-
@rightfw = @rightfw * 2
|
54
|
-
@balanced = (@leftfw - @rightfw).abs < 0.00001
|
55
|
-
@count += 1
|
56
|
-
end
|
57
|
-
puts "#{@lefteq} (#{@leftfw}) -> #{@righteq} (#{@rightfw}) is a balanced equation; #{@count} iterations"
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
end
|
62
|
-
end
|
1
|
+
load 'rubychem/molecule.rb'
|
2
|
+
load 'rubychem/valence.rb'
|
File without changes
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module RubyChem
|
2
|
+
class Chemical
|
3
|
+
|
4
|
+
MASSES = { :H => 1.01, :He => 4.00, :Li => 6.94, :Be => 9.01, :B => 10.81, :C => 12.01, :N => 14.01, :F => 19.00, :Ne => 20.18, :S => 32.01, :O => 15.99,
|
5
|
+
:Na => 22.99, :Mg => 24.31, :Al => 26.98, :Si => 28.09, :P => 30.97, :Cl => 35.45, :Ar => 39.95, :K => 39.1, :Ca => 40.08, :Sc => 44.96, :Ti => 47.88, :V => 50.94,
|
6
|
+
:Cr => 52.00, :Mn => 54.94, :Fe => 55.85, :Co => 58.93, :Ni => 58.69, :Cu => 63.55, :Zn => 65.39, :Ga => 69.72, :Ge=> 72.61, :As => 74.92, :Se => 78.96,
|
7
|
+
:Br => 79.90, :Kr => 83.80, :Rb => 85.47, :Sr => 87.62, :Y => 88.91, :Zr => 91.22, :Nb => 92.91, :Mo => 95.94, :Te => 98, :Ru => 101.07, :Rh => 102.91,
|
8
|
+
:Pd => 106.42, :Ag => 107.87, :Cd => 112.41, :In => 114.82, :Sn => 118.71, :Sb => 121.76, :Te => 127.6, :I => 126.9, :Xe => 131.29, :Cs => 132.9, :Ba => 137.3,
|
9
|
+
:La => 138.9, :Hf => 178.5, :Ta => 180.9, :W => 183.9, :Re => 186.2, :Os => 190.2, :Ir => 192.2, :Pt => 195.1, :Au => 197.0, :Hg => 200.6, :Ti => 204.4,
|
10
|
+
:Pb => 207.2, :Bi => 209, :Po => 209, :At => 210, :Rn => 222, :Fr => 223, :Ra => 226, :Ac => 227, :Rf => 261, :Db => 262, :Sg => 263, :Bh => 264, :Hs => 265,
|
11
|
+
:Mt => 268, :Ds => 271, :Rg => 272 }
|
12
|
+
|
13
|
+
attr_accessor :chem_species, :mm
|
14
|
+
|
15
|
+
def initialize(formula)
|
16
|
+
if formula.scan(/\d+$/) == []
|
17
|
+
x = formula.gsub(/$/, '1').scan(/[A-za-z]*\d+/)
|
18
|
+
speciate(x)
|
19
|
+
else
|
20
|
+
x = formula.scan(/[A-za-z]*\d+/)
|
21
|
+
speciate(x)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def speciate(x)
|
28
|
+
@chem_species = x.map { |chem| chem.scan(/[A-Z][^A-Z]*/) }.flatten
|
29
|
+
@chem_species.map! {|chem| chem.scan /[A-Z]+|\d+/i }
|
30
|
+
atom_masses = @chem_species.map { |(elem, coeff)| MASSES[elem.to_sym] * (coeff || 1).to_f }
|
31
|
+
x = atom_masses.map { |int| int.to_f }
|
32
|
+
@mm = x.inject(0) { |s,v| s+= v }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class BalanceChem
|
37
|
+
attr_accessor :balanced, :lefteq, :righteq, :leftfw, :rightfw, :count
|
38
|
+
|
39
|
+
##
|
40
|
+
# Checks if two formulas are balanced.
|
41
|
+
#
|
42
|
+
def initialize(lefteq, righteq)
|
43
|
+
@lefteq = lefteq
|
44
|
+
@righteq = righteq
|
45
|
+
@balanced = ( RubyChem::Chemical.new(@lefteq).mm - RubyChem::Chemical.new(@righteq).mm ).abs < 0.00001
|
46
|
+
end
|
47
|
+
|
48
|
+
def balanceit
|
49
|
+
@count = 0
|
50
|
+
@leftfw = @leftfw.fw
|
51
|
+
@rightfw = @rightfw.fw
|
52
|
+
until @balanced == true
|
53
|
+
@rightfw = @rightfw * 2
|
54
|
+
@balanced = (@leftfw - @rightfw).abs < 0.00001
|
55
|
+
@count += 1
|
56
|
+
end
|
57
|
+
puts "#{@lefteq} (#{@leftfw}) -> #{@righteq} (#{@rightfw}) is a balanced equation; #{@count} iterations"
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
File without changes
|
data/lib/rubychem/version.rb
CHANGED
data/rubychem-1.0.1.gem
ADDED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubychem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-15 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: This is an open source library of chemistry, goodies. I'm dedicating
|
15
15
|
this code to my major professor Arthur Brecher and Graduate PI Dr. Rogers of Bowling
|
@@ -34,11 +34,13 @@ files:
|
|
34
34
|
- features/user_submits_compound.feature
|
35
35
|
- lib/.DS_Store
|
36
36
|
- lib/benchmark.rb
|
37
|
-
- lib/comments.rb
|
38
37
|
- lib/rubychem.rb
|
38
|
+
- lib/rubychem/comments.rb
|
39
|
+
- lib/rubychem/molecule.rb
|
40
|
+
- lib/rubychem/valence.rb
|
39
41
|
- lib/rubychem/version.rb
|
40
42
|
- lib/rubychem_rspec.rb
|
41
|
-
-
|
43
|
+
- rubychem-1.0.1.gem
|
42
44
|
- rubychem.gemspec
|
43
45
|
- spec/rubychem/ruby_chem_spec.rb
|
44
46
|
- spec/spec_helper.rb
|