chris_lib 2.0.2 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
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