chris_lib 2.0.2 → 2.0.6
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/lib/chris_lib/chris_math.rb +69 -0
- data/lib/chris_lib/shell_methods.rb +8 -0
- data/lib/chris_lib/version.rb +1 -1
- metadata +36 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c7c8165557ae3b2b4b431e71fe111676688ac5cd962ef5607abdc162e9f25f8
|
4
|
+
data.tar.gz: fd500a446db634ef54d25198aa48f5cff8f55c66b66178a87b0a654afecc4982
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adb81857b6da01ac1ce99289841a4f0ddf0477c00e36d5067c9e6bcf28adb29f781a255d4bde94aeeac79dd64c18862bece4a689f284a2940d59393ca2b65b03
|
7
|
+
data.tar.gz: 55a4532a245f4a97567078799565e35557e6a9d3d8639f043c362e89c68b7d0add8f5f29d823c5ad735ea50d6ec96eeec5f293f6b03dd00626db7c0e6d2f1168
|
data/lib/chris_lib/chris_math.rb
CHANGED
@@ -1,4 +1,29 @@
|
|
1
1
|
require 'matrix'
|
2
|
+
require 'quaternion'
|
3
|
+
Quaternion.class_eval do
|
4
|
+
# rounds each element of quaternion to n decimal places
|
5
|
+
def round(n)
|
6
|
+
q = self
|
7
|
+
Quaternion.new(q[0].round(n), q[1].round(n), q[2].round(n), q[3].round(n))
|
8
|
+
end
|
9
|
+
|
10
|
+
# Creates identity quaternion
|
11
|
+
def self.identity
|
12
|
+
Quaternion.new(1.0, 0.0, 0.0, 0.0)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Creates zero quaternion
|
16
|
+
def self.zero
|
17
|
+
Quaternion.new(0.0, 0.0, 0.0, 0.0)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Creates quaternion using square brackets (for compatability with Matrix and Vector)
|
21
|
+
# see https://stackoverflow.com/questions/69155796/how-to-define-a-class-method-when-using-class-eval
|
22
|
+
def self.[](q0, q1, q2, q3)
|
23
|
+
Quaternion.new(q0, q1, q2, q3)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
2
27
|
Integer.class_eval do
|
3
28
|
def factorial
|
4
29
|
n = self
|
@@ -32,6 +57,27 @@ Matrix.class_eval do
|
|
32
57
|
end
|
33
58
|
|
34
59
|
Array.class_eval do
|
60
|
+
# converts radians to degrees
|
61
|
+
# Also rounds to n_decimal places unless n_decimimals is nil
|
62
|
+
def to_deg(n_decimals = nil)
|
63
|
+
map { |e| e.to_deg(n_decimals) }
|
64
|
+
end
|
65
|
+
|
66
|
+
# converts degrees to radians
|
67
|
+
# Also rounds to n_decimal places unless n_decimimals is nil
|
68
|
+
def to_rad(n_decimals = nil)
|
69
|
+
map { |e| e.to_rad(n_decimals) }
|
70
|
+
end
|
71
|
+
|
72
|
+
# round each element
|
73
|
+
def round(decimal_points = 0)
|
74
|
+
map { |e| e.round(decimal_points) }
|
75
|
+
end
|
76
|
+
|
77
|
+
def eround(decimal_points = 0)
|
78
|
+
map { |e| e.eround(decimal_points) }
|
79
|
+
end
|
80
|
+
|
35
81
|
# mean of array
|
36
82
|
def mean
|
37
83
|
raise 'Length must be greater than 0.' if length < 1
|
@@ -75,6 +121,29 @@ Array.class_eval do
|
|
75
121
|
end
|
76
122
|
|
77
123
|
Float.class_eval do
|
124
|
+
# converts radians to degrees
|
125
|
+
# Also rounds to n_decimal places unless n_decimimals is nil
|
126
|
+
def to_deg(n_decimals = nil)
|
127
|
+
include Math unless defined?(Math)
|
128
|
+
degrees = self * 180.0 / PI
|
129
|
+
return degrees if n_decimals.nil?
|
130
|
+
degrees.round(n_decimals)
|
131
|
+
end
|
132
|
+
|
133
|
+
# converts degrees to radians
|
134
|
+
# Also rounds to n_decimal places unless n_decimimals is nil
|
135
|
+
def to_rad(n_decimals = nil)
|
136
|
+
include Math unless defined?(Math)
|
137
|
+
radians = self * PI / 180.0
|
138
|
+
return radians if n_decimals.nil?
|
139
|
+
radians.round(n_decimals)
|
140
|
+
end
|
141
|
+
|
142
|
+
# rounds exponential notation to n decimal places
|
143
|
+
def eround(decimal_points = 0)
|
144
|
+
("%.#{decimal_points}e" % self).to_f
|
145
|
+
end
|
146
|
+
|
78
147
|
def round_down(n=0)
|
79
148
|
# n is decimal place to round down at
|
80
149
|
int,dec=self.to_s.split('.')
|
@@ -5,6 +5,14 @@ module ShellMethods
|
|
5
5
|
require 'optparse'
|
6
6
|
Dotenv.load
|
7
7
|
|
8
|
+
# runs an R script from ruby
|
9
|
+
# script_path is absolute path of R script
|
10
|
+
# arg1 is an argument passed to script, can access in R by
|
11
|
+
# arg1 <- commandArgs(trailingOnly=TRUE)[1]
|
12
|
+
def r_runner(script_path, arg1)
|
13
|
+
`Rscript --vanilla #{script_path} #{arg1}`
|
14
|
+
end
|
15
|
+
|
8
16
|
def file_size(file_path)
|
9
17
|
`stat -f%z #{file_path}`.to_i
|
10
18
|
end
|
data/lib/chris_lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chris_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -38,6 +38,40 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: actionpack
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 6.1.4
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 6.1.4.6
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 6.1.4
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 6.1.4.6
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: quaternion
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
41
75
|
- !ruby/object:Gem::Dependency
|
42
76
|
name: rspec
|
43
77
|
requirement: !ruby/object:Gem::Requirement
|