2010-06-30 44 views
0

我試着用scipy.weave在Python中構建一個快速的最小生成樹程序。不幸的是,我發現使用scipy.weave和我發現的C++庫STANN更加難以實現。以下是鏈接到STANN庫的鏈接:http://sites.google.com/a/compgeom.com/stann/Python scipy.weave和STANN C++庫

下面是帶有我編寫的scipy.weave腳本的Python。

import scipy.weave as weave 
from scipy.weave import inline 
import numpy 

def gmst(points): 
    # computing GMST with STANN headers 
    assert(type(points) == type(numpy.array([]))) 

    # now the c++ code 
    code = """ 
     using namespace std; 
     typedef reviver::dpoint<double,2> Point; 

     typedef vector<Point>::size_type stype; 
     vector< std::pair<stype,stype> > outputmst; 
     PyArrayObject *py_val 

     gmst(points,outputmst); 
     return_val = outputmst; 
     """ 

    return inline(code,['points'], 
     headers = ["<iostream>","<gmst.hpp>","<dpoint.hpp>","<test.hpp>"], 
     include_dirs=["/home/tree/usr/STANN/include"]) 

到目前爲止沒有運氣在編織工作。任何想法爲什麼我遇到問題?謝謝您的幫助。

乾杯

+0

不是你的問題,但你的圖表有多大/多密? (我使用一個簡單的純python MST,排序+ Kruskal + unionfind;大部分時間都是這樣。) – denis 2010-06-30 09:00:13

+0

我通常處理300到30000個節點。有時更大。但是對於投影分析(3D數據),MST需要計算幾次。剛剛找到一種方法來使用networkx和matplotlib.delaunay在Python中編寫一個MST程序,以在大約5秒內計算50,000個源的MST。現在速度夠快了。 – ebressert 2010-07-08 10:56:30

回答

0

包裝紙外部代碼與組織是脆弱的,哈克事務。你應該看看Cython - 這種東西很棒。

+0

我會看看Cython。感謝您的建議。 – ebressert 2010-07-08 10:53:53