eulim 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -7
- data/eulim.gemspec +3 -3
- data/lib/eulim.rb +2 -1
- data/lib/eulim/chemical/reactors/continuous_stirred_tank_reactor.rb +12 -0
- data/lib/eulim/chemical/reactors/reactor.rb +47 -13
- data/lib/eulim/chemistry/compound.rb +5 -5
- data/lib/eulim/chemistry/reaction.rb +77 -5
- data/lib/eulim/version.rb +1 -1
- data/lib/matrix.rb +20 -0
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2c5e5faafacb78e59d9e9572cef6714bb5c9c83
|
4
|
+
data.tar.gz: 5739125159e28e055d75f082ec478db3d60a7626
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 204895443dd48eb6d9ae00133c75fdf87a636af36419fba41bc67ca01fd5460483208e586536ab47b5de11381fca8de68ccf348a9b1efcc788d099e21a666038
|
7
|
+
data.tar.gz: 579e0330b4f4caf82f28abde993aca8fd311fd70627c6062bbd3d1fa9bbe64a333ade55d5125482d513374965e2e6c876c4068ac2a295baa89032b8380f1a074
|
data/README.md
CHANGED
@@ -43,8 +43,9 @@ Or install it yourself as:
|
|
43
43
|
|
44
44
|
### Reaction
|
45
45
|
|
46
|
-
* attributes: equation, is_valid, is_balanced, species
|
47
|
-
* methods: new("Put your reaction string here"
|
46
|
+
* attributes: equation, is_valid, is_balanced, species, balanced_eqn
|
47
|
+
* methods: new(equation: "Put your reaction string here", rate_equation: "r_{CaCo3} = k[CaO]")
|
48
|
+
* For eg: (equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)', rate_equation: "rNa = k[HCl]")
|
48
49
|
|
49
50
|
## Usage
|
50
51
|
```bash
|
@@ -60,19 +61,22 @@ $ Eulim::Chemistry::Element.get_by_name "helium" # or "Helium"
|
|
60
61
|
$ Eulim::Chemistry::Compound.new("CaCO3")
|
61
62
|
=> #<Eulim::Chemistry::Compound:0x00000002a65340 @formula="CaCO3", @constituents={"Ca"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c805a8 @name="Calcium", @symbol="Ca", @atomic_number=20, @atomic_mass=#<Unitwise::Measurement value=40.078 unit=u>>, :atom_count=>1}, "C"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c8f6e8 @name="Carbon", @symbol="C", @atomic_number=6, @atomic_mass=#<Unitwise::Measurement value=12.0107 unit=u>>, :atom_count=>1}, "O"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c8dc30 @name="Oxygen", @symbol="O", @atomic_number=8, @atomic_mass=#<Unitwise::Measurement value=15.9996 unit=u>>, :atom_count=>3}}, @molecular_mass=#<Unitwise::Measurement value=100.0875 unit=u>>
|
62
63
|
|
63
|
-
$
|
64
|
+
$Eulim::Chemistry::Reaction.new(equation: 'KMnO4 + HCl >> KCl + MnCl2 + H2O + Cl2').balanced_eqn
|
65
|
+
=> "2KMnO4 + 16HCl >> 2KCl + 2MnCl2 + 8H2O + 5Cl2"
|
66
|
+
|
67
|
+
$ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').equation
|
64
68
|
=> "2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)"
|
65
69
|
|
66
|
-
$ Eulim::Chemistry::Reaction.new('2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').is_valid
|
70
|
+
$ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').is_valid
|
67
71
|
=> true
|
68
72
|
|
69
|
-
$ Eulim::Chemistry::Reaction.new('2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').is_balanced
|
73
|
+
$ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').is_balanced
|
70
74
|
=> true
|
71
75
|
|
72
|
-
$ Eulim::Chemistry::Reaction.new('2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').species
|
76
|
+
$ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').species
|
73
77
|
=> {:reactants=>{"Na"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002ca6910 @formula="Na", @constituents={"Na"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c88e10 @name="Sodium", @symbol="Na", @atomic_number=11, @atomic_mass=#<Unitwise::Measurement value=22.9897 unit=u>>, :atom_count=>1}}, @molecular_mass=#<Unitwise::Measurement value=22.9897 unit=u>>, :stoichiometry=>2, :state=>"solid"}, "HCl"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002c90ed0 @formula="HCl", @constituents={"H"=>{:element=>#<Eulim::Chemistry::Element:0x000000025e5ab8 @name="Hydrogen", @symbol="H", @atomic_number=1, @atomic_mass=#<Unitwise::Measurement value=1.0079 unit=u>>, :atom_count=>1}, "Cl"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c82c90 @name="Chlorine", @symbol="Cl", @atomic_number=17, @atomic_mass=#<Unitwise::Measurement value=35.453 unit=u>>, :atom_count=>1}}, @molecular_mass=#<Unitwise::Measurement value=36.4609 unit=u>>, :stoichiometry=>2, :state=>"aqueous"}}, :products=>{"NaCl"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002c73bf0 @formula="NaCl", @constituents={"Na"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c88e10 @name="Sodium", @symbol="Na", @atomic_number=11, @atomic_mass=#<Unitwise::Measurement value=22.9897 unit=u>>, :atom_count=>1}, "Cl"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c82c90 @name="Chlorine", @symbol="Cl", @atomic_number=17, @atomic_mass=#<Unitwise::Measurement value=35.453 unit=u>>, :atom_count=>1}}, @molecular_mass=#<Unitwise::Measurement value=58.4427 unit=u>>, :stoichiometry=>2, :state=>"aqueous"}, "H2"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002c34180 @formula="H2", @constituents={"H"=>{:element=>#<Eulim::Chemistry::Element:0x000000025e5ab8 @name="Hydrogen", @symbol="H", @atomic_number=1, @atomic_mass=#<Unitwise::Measurement value=1.0079 unit=u>>, :atom_count=>2}}, @molecular_mass=#<Unitwise::Measurement value=2.0158 unit=u>>, :stoichiometry=>1, :state=>"gaseous"}}}
|
74
78
|
|
75
|
-
$ Eulim::Chemistry::Reaction.new('2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)')
|
79
|
+
$ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)')
|
76
80
|
=> #<Eulim::Chemistry::Reaction:0x00000002ce22f8 @equation="2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)", @species={:reactants=>{"Na"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002ce1d80 @formula="Na", @constituents={"Na"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c88e10 @name="Sodium", @symbol="Na", @atomic_number=11, @atomic_mass=#<Unitwise::Measurement value=22.9897 unit=u>>, :atom_count=>1}}, @molecular_mass=#<Unitwise::Measurement value=22.9897 unit=u>>, :stoichiometry=>2, :state=>"solid"}, "HCl"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002cabdc0 @formula="HCl", @constituents={"H"=>{:element=>#<Eulim::Chemistry::Element:0x000000025e5ab8 @name="Hydrogen", @symbol="H", @atomic_number=1, @atomic_mass=#<Unitwise::Measurement value=1.0079 unit=u>>, :atom_count=>1}, "Cl"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c82c90 @name="Chlorine", @symbol="Cl", @atomic_number=17, @atomic_mass=#<Unitwise::Measurement value=35.453 unit=u>>, :atom_count=>1}}, @molecular_mass=#<Unitwise::Measurement value=36.4609 unit=u>>, :stoichiometry=>2, :state=>"aqueous"}}, :products=>{"NaCl"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002c8cda8 @formula="NaCl", @constituents={"Na"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c88e10 @name="Sodium", @symbol="Na", @atomic_number=11, @atomic_mass=#<Unitwise::Measurement value=22.9897 unit=u>>, :atom_count=>1}, "Cl"=>{:element=>#<Eulim::Chemistry::Element:0x00000002c82c90 @name="Chlorine", @symbol="Cl", @atomic_number=17, @atomic_mass=#<Unitwise::Measurement value=35.453 unit=u>>, :atom_count=>1}}, @molecular_mass=#<Unitwise::Measurement value=58.4427 unit=u>>, :stoichiometry=>2, :state=>"aqueous"},"H2"=>{:compound=>#<Eulim::Chemistry::Compound:0x00000002c6f938 @formula="H2", @constituents={"H"=>{:element=>#<Eulim::Chemistry::Element:0x000000025e5ab8 @name="Hydrogen", @symbol="H", @atomic_number=1, @atomic_mass=#<Unitwise::Measurement value=1.0079 unit=u>>, :atom_count=>2}}, @molecular_mass=#<Unitwise::Measurement value=2.0158 unit=u>>, :stoichiometry=>1, :state=>"gaseous"}}}, @is_valid=true, @is_balanced=true>
|
77
81
|
```
|
78
82
|
## Development
|
data/eulim.gemspec
CHANGED
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_development_dependency 'rake', '~> 10.0'
|
39
39
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
40
40
|
spec.add_development_dependency 'rubocop', '~>0.49.1'
|
41
|
-
|
42
|
-
spec.add_dependency
|
43
|
-
spec.add_dependency
|
41
|
+
spec.add_dependency 'unitwise', '~>2.1.0'
|
42
|
+
spec.add_dependency 'rubypython', '~> 0.6.4'
|
43
|
+
spec.add_dependency 'require_all', '~> 1.4.0'
|
44
44
|
end
|
data/lib/eulim.rb
CHANGED
@@ -11,10 +11,11 @@ Ch = Eulim::Chemistry
|
|
11
11
|
Elem = Ch::Element
|
12
12
|
Comp = Ch::Compound
|
13
13
|
Rxn = Ch::Reaction
|
14
|
-
|
14
|
+
Sub = Ch::Substance
|
15
15
|
|
16
16
|
Cl = Eulim::Chemical
|
17
17
|
Rcts = Cl::Reactors
|
18
|
+
Rct = Rcts::Reactor
|
18
19
|
Br = Rcts::Batch
|
19
20
|
Cstr = Rcts::CSTR
|
20
21
|
Pfr = Rcts::PFR
|
@@ -7,6 +7,18 @@ module Eulim
|
|
7
7
|
super args
|
8
8
|
end
|
9
9
|
|
10
|
+
def find_volume
|
11
|
+
# accumulation is zero
|
12
|
+
compound_formula = @reaction.rate_equation.split(' ').first.split('r').last
|
13
|
+
ci = @input[:substance].species[compound_formula]
|
14
|
+
co = @output[:substance].species[compound_formula]
|
15
|
+
input = @input[:quantity] * ci[:weight_percent] /
|
16
|
+
(100 * ci[:compound].molar_mass)
|
17
|
+
output = @output[:quantity] * co[:weight_percent] /
|
18
|
+
(100 * co[:compound].molar_mass)
|
19
|
+
x = (input - output) / input
|
20
|
+
end
|
21
|
+
|
10
22
|
def self.humanized_name
|
11
23
|
'Continuous stirred-tank reactor'
|
12
24
|
end
|
@@ -3,12 +3,36 @@ module Eulim
|
|
3
3
|
module Reactors
|
4
4
|
# This is the base class for the diff kinds of reactors
|
5
5
|
class Reactor
|
6
|
-
|
6
|
+
attr_reader :system, :volume, :input, :output, :reaction
|
7
|
+
|
8
|
+
# ATTRS = [:system, :volume, :input, :output, :rate_equation]
|
7
9
|
|
8
10
|
def initialize(args = {})
|
9
|
-
|
10
|
-
|
11
|
-
|
11
|
+
self.system = args[:system]
|
12
|
+
self.volume = args[:volume] if args[:volume]
|
13
|
+
self.input = args[:input] if args[:input]
|
14
|
+
self.output = args[:output] if args[:output]
|
15
|
+
self.reaction = args[:reaction] if args[:reaction]
|
16
|
+
end
|
17
|
+
|
18
|
+
def system=(sys)
|
19
|
+
@system = sys || :open
|
20
|
+
end
|
21
|
+
|
22
|
+
def volume=(vol)
|
23
|
+
@volume = volume_if_valid vol
|
24
|
+
end
|
25
|
+
|
26
|
+
def input=(inp)
|
27
|
+
@input = feed_if_valid inp
|
28
|
+
end
|
29
|
+
|
30
|
+
def output=(out)
|
31
|
+
@output = feed_if_valid out
|
32
|
+
end
|
33
|
+
|
34
|
+
def reaction=(rxn)
|
35
|
+
@reaction = reaction_if_valid rxn
|
12
36
|
end
|
13
37
|
|
14
38
|
private
|
@@ -23,20 +47,30 @@ module Eulim
|
|
23
47
|
raise ArgumentError, 'Invalid volume unit'
|
24
48
|
end
|
25
49
|
|
26
|
-
def
|
27
|
-
raise ArgumentError, 'Invalid
|
50
|
+
def feed_if_valid(f)
|
51
|
+
raise ArgumentError, 'Invalid substance' if f[:substance].class != Sub
|
28
52
|
begin
|
29
|
-
|
53
|
+
f[:quantity] = Unitwise f[:quantity]
|
30
54
|
rescue
|
31
|
-
raise ArgumentError, 'Invalid
|
55
|
+
raise ArgumentError, 'Invalid quantity'
|
32
56
|
end
|
33
|
-
dim =
|
34
|
-
return
|
35
|
-
raise ArgumentError, 'Invalid
|
57
|
+
dim = f[:quantity].composition.to_h
|
58
|
+
return f if valid_feed_quantity_dimensions.include? dim
|
59
|
+
raise ArgumentError, 'Invalid quantity unit'
|
60
|
+
end
|
61
|
+
|
62
|
+
def valid_feed_quantity_dimensions
|
63
|
+
[{ 'M' => 1 }, { 'M' => 1, 'T' => -1 }]
|
36
64
|
end
|
37
65
|
|
38
|
-
def
|
39
|
-
|
66
|
+
def reaction_if_valid(r)
|
67
|
+
# raise ArgumentError, 'Substance not in reaction' if
|
68
|
+
# @input && (
|
69
|
+
# r.species[:reactants].keys &
|
70
|
+
# @input[:substance].species.keys
|
71
|
+
# ).empty?
|
72
|
+
return r if r.class == Rxn && r.is_valid
|
73
|
+
raise ArgumentError, 'Invalid reaction argument'
|
40
74
|
end
|
41
75
|
end
|
42
76
|
end
|
@@ -8,22 +8,22 @@ module Eulim
|
|
8
8
|
COMPOUND_REGEXP =
|
9
9
|
/[A-Z][a-z]{0,2}\d*|\((?:[^()]*(?:\(.*\))?[^()]*)+\)\d*/
|
10
10
|
|
11
|
-
attr_accessor :molecular_mass, :constituents, :formula
|
11
|
+
attr_accessor :molecular_mass, :constituents, :formula, :molar_mass
|
12
12
|
|
13
13
|
def initialize(arg)
|
14
14
|
@formula = arg
|
15
15
|
build_constituents
|
16
|
-
|
16
|
+
calculate_mass
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
20
|
|
21
|
-
def
|
22
|
-
@molecular_mass = Unitwise(0, 'u')
|
21
|
+
def calculate_mass
|
22
|
+
@molecular_mass = Unitwise(0.0, 'u')
|
23
23
|
@constituents.each do |_symbol, info|
|
24
24
|
@molecular_mass += info[:element].atomic_mass * info[:atom_count]
|
25
25
|
end
|
26
|
-
@molecular_mass
|
26
|
+
@molar_mass = Unitwise(@molecular_mass.value / 1000.0, 'kg/mol')
|
27
27
|
end
|
28
28
|
|
29
29
|
def build_constituents
|
@@ -1,25 +1,42 @@
|
|
1
|
+
require 'matrix'
|
2
|
+
|
1
3
|
module Eulim
|
2
4
|
module Chemistry
|
3
5
|
# This class has functionality for reaction
|
4
6
|
# Ex: check for balanced rxn, validity of a rxn
|
5
7
|
class Reaction
|
6
|
-
attr_accessor :equation, :is_valid, :
|
8
|
+
attr_accessor :equation, :is_valid, :species, :participants, :balanced_eqn, :rate_equation
|
7
9
|
|
8
10
|
STATES = {
|
9
11
|
'(s)' => 'solid', '(l)' => 'liquid',
|
10
12
|
'(g)' => 'gaseous', '(aq)' => 'aqueous',
|
11
|
-
'' => '
|
13
|
+
'' => ''
|
12
14
|
}.freeze
|
13
15
|
|
14
|
-
def initialize(
|
15
|
-
|
16
|
+
def initialize(args)
|
17
|
+
# rate_eqn should be of the form: 'r_{CaO} = k[CaO][CO2]'
|
18
|
+
@equation = args[:equation]
|
16
19
|
@species = build_species
|
17
20
|
@is_valid = valid_rxn?
|
18
|
-
|
21
|
+
p participant_elements
|
22
|
+
# @balanced_eqn = balance_rxn
|
23
|
+
@rate_equation = validify_rate_eqn args[:rate_equation]
|
19
24
|
end
|
20
25
|
|
21
26
|
private
|
22
27
|
|
28
|
+
def validify_rate_eqn(rate_eqn)
|
29
|
+
if rate_eqn
|
30
|
+
rate_eqn.gsub('_{', '')
|
31
|
+
.gsub('}', '')
|
32
|
+
.gsub('[', ' * c')
|
33
|
+
.gsub(']', '')
|
34
|
+
else
|
35
|
+
specie = @species[:reactants].keys.first
|
36
|
+
'r' + specie + ' = k * c' + specie
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
23
40
|
def build_species
|
24
41
|
r = {}
|
25
42
|
result = {}
|
@@ -81,6 +98,61 @@ module Eulim
|
|
81
98
|
def get_state(specie)
|
82
99
|
specie.match(/\((s|l|g|aq)\)$/).to_s
|
83
100
|
end
|
101
|
+
|
102
|
+
def participant_elements
|
103
|
+
participants = []
|
104
|
+
@species[:reactants].keys.each do |r|
|
105
|
+
participants << @species[:reactants][r][:compound].constituents.keys
|
106
|
+
end
|
107
|
+
@participants = participants.flatten.uniq
|
108
|
+
end
|
109
|
+
|
110
|
+
def get_participant_row(parti)
|
111
|
+
row = []
|
112
|
+
@species.keys.each do |key|
|
113
|
+
i = key == :reactants ? 1 : -1
|
114
|
+
@species[key].keys.each do |specie|
|
115
|
+
if specie.include? parti
|
116
|
+
row << @species[key][specie][:compound]
|
117
|
+
.constituents[parti][:atom_count] * i
|
118
|
+
else
|
119
|
+
row << 0
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
row
|
124
|
+
end
|
125
|
+
|
126
|
+
def write_matrix
|
127
|
+
@matrix = Matrix[]
|
128
|
+
@participants.each do |parti|
|
129
|
+
@matrix = Matrix.rows(@matrix.to_a << get_participant_row(parti))
|
130
|
+
end
|
131
|
+
@matrix
|
132
|
+
end
|
133
|
+
|
134
|
+
def balanced_coeff_array
|
135
|
+
write_matrix
|
136
|
+
null_space_array = @matrix.nullspace_array
|
137
|
+
lcm = null_space_array.collect(&:denominator).reduce(1, :lcm)
|
138
|
+
null_space_array.collect { |x| (x * lcm).to_i }
|
139
|
+
end
|
140
|
+
|
141
|
+
def balance_rxn
|
142
|
+
exp = ''
|
143
|
+
i = 0
|
144
|
+
bal_coeff = balanced_coeff_array
|
145
|
+
@species.keys.each do |key|
|
146
|
+
@species[key].keys.each do |comp|
|
147
|
+
coeff = bal_coeff[i] == 1 ? ' ' : ' ' + bal_coeff[i].abs.to_s
|
148
|
+
state = STATES.key(@species[key][comp][:state])
|
149
|
+
exp = exp + coeff + comp + state + ' +'
|
150
|
+
i += 1
|
151
|
+
end
|
152
|
+
exp = key == :reactants ? exp.chomp('+') + '>>' : exp.chomp('+')
|
153
|
+
end
|
154
|
+
exp.strip
|
155
|
+
end
|
84
156
|
end
|
85
157
|
end
|
86
158
|
end
|
data/lib/eulim/version.rb
CHANGED
data/lib/matrix.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rubypython'
|
2
|
+
# this class is extension of Matrix class offered by ruby
|
3
|
+
class Matrix
|
4
|
+
def nullspace_as_string
|
5
|
+
a = to_a
|
6
|
+
RubyPython.start
|
7
|
+
main = RubyPython.import('__main__')
|
8
|
+
RubyPython::Python.PyRun_SimpleString <<-PYTHON
|
9
|
+
from sympy import Matrix
|
10
|
+
import numpy as np
|
11
|
+
def null_space(a):
|
12
|
+
return np.array_str(np.array(Matrix(a).nullspace()))
|
13
|
+
PYTHON
|
14
|
+
main.null_space(a).rubify
|
15
|
+
end
|
16
|
+
|
17
|
+
def nullspace_array
|
18
|
+
nullspace_as_string[2..-3].split(' ').map(&:to_r)
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eulim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Syed Fazil Basheer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -68,33 +68,47 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: 0.49.1
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: unitwise
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
76
|
+
version: 2.1.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
83
|
+
version: 2.1.0
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: rubypython
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 0.6.4
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
97
|
+
version: 0.6.4
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: require_all
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 1.4.0
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 1.4.0
|
98
112
|
description: A gem for scientific data.
|
99
113
|
email:
|
100
114
|
- fazil.basheer@quester.xyz
|
@@ -133,6 +147,7 @@ files:
|
|
133
147
|
- lib/eulim/structures/pipe.rb
|
134
148
|
- lib/eulim/structures/structure.rb
|
135
149
|
- lib/eulim/version.rb
|
150
|
+
- lib/matrix.rb
|
136
151
|
- lib/string.rb
|
137
152
|
homepage: https://github.com/syedfazilbasheer-quester/eulim-gem
|
138
153
|
licenses:
|