2016-11-04 3 views
0

Недавно я установил пакет интеграции Vegas Monte Carlo (версия 3.0.1) на моем компьютере с Windows 10, который использует Python 2.7. Все, казалось, все в порядке, и я могу импортировать вегас. Я скопировал этот код из учебника Вегаса:Ошибка Python vegas

import vegas 
import math 

def f(x): 
    dx2 = 0 
    for d in range(4): 
     dx2 += (x[d] - 0.5) ** 2 
    return math.exp(-dx2 * 100.) * 1013.2118364296088 

integ = vegas.Integrator([[-1, 1], [0, 1], [0, 1], [0, 1]]) 

result = integ(f, nitn=10, neval=1000) 
print result.summary() 
print 'result = %s Q = %.2f' % (result, result.Q) 

Запуск этого из блокнота Jupyter, я получаю следующее сообщение об ошибке:

ValueError        Traceback (most recent call last) 
<ipython-input-1-c50a62cfad78> in <module>() 
    10 integ = vegas.Integrator([[-1, 1], [0, 1], [0, 1], [0, 1]]) 
    11 
---> 12 result = integ(f, nitn=10, neval=1000) 
    13 print result.summary() 
    14 print 'result = %s Q = %.2f' % (result, result.Q) 

src/vegas/_vegas.pyx in random_batch (src/vegas/_vegas.c:19152)() 

src/vegas/_vegas.pyx in vegas._vegas.VegasResult.__init__ (src/vegas/_vegas.c:31214)() 

src/vegas/_vegas.pyx in vegas._vegas.RAvg.__init__ (src/vegas/_vegas.c:24657)() 

src/gvar/_gvarcore.pyx in gvar._gvarcore.GVarFactory.__call__ (src/gvar/_gvarcore.c:15024)() 

src/gvar/_svec_smat.pyx in gvar._svec_smat.smat.append_diag (src/gvar/_svec_smat.c:7055)() 

src/gvar/_svec_smat.pyx in gvar._svec_smat.smat.append_diag (src/gvar/_svec_smat.c:6723)() 

ValueError: Buffer dtype mismatch, expected 'intp_t' but got 'long' 

Я бы признателен за любые советы по устранению неполадок. EDIT: Теперь я понимаю, что проблема связана с пакетом Gvar, который является обязательным пакетом для vegas. Я могу воспроизвести ту же ошибку следующим образом:

import gvar as gv 
x = gv.gvar(0, 0.3) 

Как и прежде, я после устранения неполадок предложения. Благодарю.

+0

Это маловероятно, но убедитесь, что у вас установлены все зависимости. 'numpy, cython, gvar', установка, вероятно, не сработала бы, если бы эти модули не были обнаружены. Я не могу воспроизвести эту ошибку, так что это единственное предложение, которое у меня есть на данный момент. – JClarke

ответ

0

Я связался с автором Vegas, который решил, что проблема связана с Windows с использованием 32-битных поплавков, а не 64-разрядных, как это делают системы на базе Unix. Он исправил проблему, выпустив переработанную версию gvar (8.0), которая работает на Windows должным образом.

Смежные вопросы