Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NMatrix.load_matlab_file raises exception #587

Closed
alyssais opened this issue Mar 22, 2017 · 1 comment
Closed

NMatrix.load_matlab_file raises exception #587

alyssais opened this issue Mar 22, 2017 · 1 comment

Comments

@alyssais
Copy link

From the root of the repository:

ruby -Ilib -r nmatrix -e "NMatrix.load_matlab_file(ARGV[0])" /path/to/file.mat

/Users/alyssa/.gem/ruby/2.4.0/gems/backports-3.6.8/lib/backports/1.8.7/fixnum/div.rb:1: warning: constant ::Fixnum is deprecated
/Users/alyssa/.gem/ruby/2.4.0/gems/backports-3.6.8/lib/backports/1.8.7/fixnum/fdiv.rb:1: warning: constant ::Fixnum is deprecated
/Users/alyssa/.gem/ruby/2.4.0/gems/backports-3.6.8/lib/backports/2.1.0/bignum/bit_length.rb:1: warning: constant ::Bignum is deprecated
/Users/alyssa/.gem/ruby/2.4.0/gems/backports-3.6.8/lib/backports/2.1.0/fixnum/bit_length.rb:1: warning: constant ::Fixnum is deprecated
/private/tmp/nmatrix/lib/nmatrix/monkeys.rb:121:in `gsub': stack level too deep (SystemStackError)
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:121:in `underscore'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:132:in `const_missing'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_get'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_missing'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_get'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_missing'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_get'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_missing'
	 ... 9776 levels...
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_get'
	from /private/tmp/nmatrix/lib/nmatrix/monkeys.rb:134:in `const_missing'
	from /private/tmp/nmatrix/lib/nmatrix/nmatrix.rb:100:in `load_matlab_file'
	from -e:1:in `'

This error occurs because that method looks up Mat5Reader in the wrong namespace.

This patch fixes it:

From 476a898c40b15a8889ea5b6d8ce395eab3cc00ba Mon Sep 17 00:00:00 2001
From: Alyssa Ross <[email protected]>
Date: Wed, 22 Mar 2017 10:58:01 +0000
Subject: [PATCH] Fix incorrect reference in .load_matlab_file

---
 lib/nmatrix/nmatrix.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/nmatrix/nmatrix.rb b/lib/nmatrix/nmatrix.rb
index 6898cc1..06d731b 100644
--- a/lib/nmatrix/nmatrix.rb
+++ b/lib/nmatrix/nmatrix.rb
@@ -97,7 +97,7 @@ class NMatrix
     # * *Returns* :
     #   - A Mat5Reader object.
     def load_matlab_file(file_path)
-      NMatrix::IO::Mat5Reader.new(File.open(file_path, 'rb')).to_ruby
+      NMatrix::IO::Matlab::Mat5Reader.new(File.open(file_path, 'rb')).to_ruby
     end
 
     # call-seq:

As a workaround in the meantime, one can use NMatrix::IO::Matlab.load_mat instead.

Even though I have a fix, I'm submitting this as an issue instead of a PR because as far as I can see there's currently no infrastructure to test Matlab files, and I don't have the time to set one up for this trivial fix, so I can't provide a spec.

@translunar
Copy link
Member

Hi @alyssais, would you mind submitting as a PR anyway, please? I'll open an issue for creating a spec for Matlab IO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants