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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0aa6a70c43d3a1eb61de63a1512ebb5d923ad1b7ef9c7b696a6756d6a54ab43d
4
- data.tar.gz: aca4e314380f79a159a1392ab5d14e8d9a6a5c7bbe3b294f0b55d4157552b0e2
3
+ metadata.gz: 0c7c8165557ae3b2b4b431e71fe111676688ac5cd962ef5607abdc162e9f25f8
4
+ data.tar.gz: fd500a446db634ef54d25198aa48f5cff8f55c66b66178a87b0a654afecc4982
5
5
  SHA512:
6
- metadata.gz: 7b3dad798054cf7d62ddca361c33f5718e1fc91a977ac64109a763adb1e27d39fc291e145e063ddfb514df2b275d1cc006717930769c0db782ea27335782bd8a
7
- data.tar.gz: '068762bb346e73ee1ff196778a9e3386620743d238c871cfdd72c1ea89c26869ec09a97e36b1a8f1e8241929f053c51361b01efdc8c6bea4b22481053ac54c61'
6
+ metadata.gz: adb81857b6da01ac1ce99289841a4f0ddf0477c00e36d5067c9e6bcf28adb29f781a255d4bde94aeeac79dd64c18862bece4a689f284a2940d59393ca2b65b03
7
+ data.tar.gz: 55a4532a245f4a97567078799565e35557e6a9d3d8639f043c362e89c68b7d0add8f5f29d823c5ad735ea50d6ec96eeec5f293f6b03dd00626db7c0e6d2f1168
@@ -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
@@ -1,3 +1,3 @@
1
1
  module ChrisLib
2
- VERSION = "2.0.2"
2
+ VERSION = "2.0.6"
3
3
  end
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.2
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: 2021-09-04 00:00:00.000000000 Z
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