Numpy __array_prepare__ error - python

I'm trying to get a recipe working that I found online for doing expectation maximization (http://code.activestate.com/recipes/577735-expectation-maximization/). I run into the following error:
Traceback (most recent call last):
File "./runem.py", line 7, in <module>
print expectation_maximization([[1,2,3,4,5],[2,3,4,5,6],[9,8,7,4,1]], 2)
File "/local/scratch-3/dk427/rp/em.py", line 83, in expectation_maximization
Px[o,c] = pnorm(t[o,:], params[c]['mu'], params[c]['sigma'])
File "/local/scratch-3/dk427/rp/em.py", line 18, in pnorm
xmt = np.matrix(x-m).transpose()
TypeError: __array_prepare__ must return an ndarray or subclass thereof which is otherwise identical to its input
There must be some flaw in the algorithm, or I'm giving it the wrong input, but I can't find what's going wrong. I've found that the error is caused by the subtraction x-m, but x.dtype=int64 and m.dtype=float64, which I think should work.
Does anyone have any ideas?

You seem to be passing in a list of lists rather than an array. You could do something like:
ts = np.array([[1,2,3,4,5],[2,3,4,5,6],[9,8,7,4,1]])
expectation_maximization(ts, 2)
That seems to have some problems at some point with taking a square root on my computer, but I think that might be because that data isn't good for this algorithm for some reason (but I don't know what the algorithm is trying to do, so I can't say for sure).

Related

Script .py reading fine but not after building with pyinstaller

When i run setup.py as a script i have no issues reading a parameter file.
When i build with pyinstaller and run the same script as a .exe i receive the below error.
>setup.exe
Traceback (most recent call last):
File "setup.py", line 106, in <module>
param_file_info = paramsfx.extract_param_file_info(param_text)
File "app\paramsfx.py", line 64, in extract_param_file_info
s_n = re.search(rc_n, param_file_text)
File "c:\users\xxxxxx\appdata\local\programs\python\python37-32\lib\re.py", line 183, in search
return _compile(pattern, flags).search(string)
TypeError: cannot use a string pattern on a bytes-like object
[21776] Failed to execute script setup
i have read up on other posts how to resolve this error however before changing the code (that is working fine as a script) i wanted to see if anyone had any thoughts as to why it read the parameter differently as a .exe.
Just from looking at this output and not the code I noticed this:
"TypeError: cannot use a string pattern on a bytes-like object"
If this is true, I would recommend doing some python type conversion. Here is a link to help you out
https://www.w3schools.com/python/trypython.asp?filename=demo_numbers_convert
Because I don't know how your code is structured, choosing which form of conversion you choose may affect your results so please be careful with that.
I hope my explanation could have provided some use to you.

Unpickling error with MARK: how to solve it?

I am trying to load a simple list from a file to another, but python raises _pickle.UnpicklingError: could not find MARK as soon as I run it. The code is really simple and follows what the course tells me, I really don't understand. It goes as follows: file "donnees.py" has the list, and "fonctions.py" has the rest.
donnees.py
listemots=["bonjour","pivers","cactus","france","taureau","espace"]
fonctions.py
import pickle
import random
with open("donnees.py","rb") as donnees:
unpickler1=pickle.Unpickler(donnees)
listerecuperee=unpickler1.load()
print(listerecuperee)
Error raises is:
Traceback (most recent call last):
File "/Users/sebastienchabrol/Documents/Cours de python/pendu/fonctions.py", line 6, in <module>
listerecuperee=unpickler1.load()
_pickle.UnpicklingError: could not find MARK
Does someone have an idea about how to fix this ? Many thanks !!
For this just use:
from donnees import listemotes
Don’t use .py files to pickle variables. If you want to persist a list then use the csv module.

DecodeError: Error parsing message for .binaryproto conversion to array

I'm currently trying to convert the .binaryproto file here to a usable numpy array. I'm running everything in my python terminal and following some of the guides as given here.
I can make it as far as seen below:
import caffe
blob = caffe.proto.caffe_pb2.BlobProto()
data = open('ucf101_train_mean.binaryproto','rb').read()
blob.ParseFromString(data)
At which point I get the error:
Traceback (most recent call last)L
File "<stdin>", line 1, in <module>
google.protobuf.message.DecodeError: Error parsing message
I've cleared and reinstalled caffe thinking it was an installation problem and it hasn't helped. I printed the data string and checked the length and both seem appropriate.
Or, as an alternative solution - is there another way I could potentially load the values of the .binaryproto file to get a usable mean? Thank you!

Understanding Parsing Error when reading model file into PySD

I am receiving the following error message when I try to read a Vensim model file (.mdl) using Python's PySD package.
My code is:
import pysd
import os
os.chdir('path/to/model_file')
model = pysd.read_vensim('my_model.mdl')
The Error I receive is:
Traceback (most recent call last):
Python Shell, prompt 13, line 1
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/pysd.py", line 53, in read_vensim
py_model_file = translate_vensim(mdl_file)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/vensim2py.py", line 673, in translate_vensim
entry.update(get_equation_components(entry['eqn']))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/vensim2py.py", line 251, in get_equation_components
tree = parser.parse(equation_str)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/grammar.py", line 123, in parse
return self.default_rule.parse(text, pos=pos)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/expressions.py", line 110, in parse
node = self.match(text, pos=pos)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/expressions.py", line 127, in match
raise error
parsimonious.exceptions.ParseError: Rule 'subscriptlist' didn't match at '' (line 1, column 21).
I have searched for this particular error and I cannot find much information on the failed matching rule for 'subscriptlist'.
I appreciate any insight. Thank you.
Good news is that there is nothing wrong with your code. =) (Although you can also just include the path to the file in the .read_vensim call, if you don't want to make the dir change).
That being the case, there are a few possibilities that would cause this issue. One is if the model file is created with a sufficiently old version of Vensim, the syntax may be different from what the current parser is designed for. One way to get around this is to update Vensim and reload the model file there - Vensim will update to the current syntax.
If you are already using a recent version of Vensim (the parser was developed using syntax of Vensim 6.3E) then the parsing error may be due to a feature that isn't yet included. There are still some outstanding issues with subscripts, which you can read about here and here).
If you aren't using subscripts, you may have found a bug in the parser. If so, best course is to create a report in the github issue tracker for the project. The stack trace you posted says that the error is happening in the first line of the file, and that the error has to do with how the right hand side of the equation is being parsed. You might include the first few lines in your bug report to help me recreate the issue. I'll add a case to our growing test suite and then we can make sure it isn't a problem going forwards.

TypeError: expected a character buffer object while translating

I am working on a project that uses an sqlite3 database to store some of the data.
My search function uses the SQL statement: '''SELECT text FROM snippets WHERE title=?''', (whichName,) and as my code was, whichName came in as a dictionary, which garnered this error:
Traceback (most recent call last):
File "snippets.py", line 93, in <module>
main()
File "snippets.py", line 24, in main
get_value_from_name(response)
File "snippets.py", line 58, in get_value_from_name
(whichName,))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
Thus, I figured I needed to pass it as a string, so I just did name = str(response) to convert it to a string, but here is where the problem began. It gave me this:
[u'TEST'] <--- What is returned by the conversion to a string
None <--- What is returned by the search function
when I converted the dictionary to a string. The search function then returned None because it was being passed [u'TEST'] instead of TEST like it should have been. So, I added some translation code:
translation_table = dict.fromkeys(map(ord, '(),'), None)
# Above code creates a table with the mapped characters
name = str(response)
name = name.translate(translation_table)
This is where my current problem is. It is returning the following error:
Traceback (most recent call last):
File "snippets.py", line 93, in <module>
main()
File "snippets.py", line 20, in main
name = name.translate(translation_table)
TypeError: expected a character buffer object
I looked at these questions:
Python TypeError: expected a character buffer object, personal misunderstanding - not applicable to my problem
expected buffer object error on string.translate - python 2.6 - also not applicable, as my translation table is created from a string not a dictionary
Getting error "expected character buffer object" and I don't know why - also not applicable because he is trying to do it at an index. I'm trying to do it like it should, finding/replacing throughout the entire string.
but none are applicable to my issue (as far as I can see.)
Does anyone know what is causing the Type Error?
Thanks!
I solved this. I ran the code in Python 3.3.2+ and it works find (albeit a few minor tweaks to the translation table)
Sorry if I wasted anyone's time. I will mark this as answer as soon as I can.

Categories

Resources