diff options
| author | Victor Chahuneau <vchahune@cs.cmu.edu> | 2012-07-05 16:53:26 -0400 | 
|---|---|---|
| committer | Victor Chahuneau <vchahune@cs.cmu.edu> | 2012-07-05 16:53:26 -0400 | 
| commit | 757f56e391bd2e1d7442ab38fc98aff00d064d38 (patch) | |
| tree | db07405a8e182655fe182757ff76859b4008dba1 /python/src/_cdec.pyx | |
| parent | 32a8d92affae91094f2348b73dd26be800e10abd (diff) | |
[python] Add convenience methods
Diffstat (limited to 'python/src/_cdec.pyx')
| -rw-r--r-- | python/src/_cdec.pyx | 18 | 
1 files changed, 17 insertions, 1 deletions
diff --git a/python/src/_cdec.pyx b/python/src/_cdec.pyx index 6fafbbc0..cccfec0b 100644 --- a/python/src/_cdec.pyx +++ b/python/src/_cdec.pyx @@ -14,7 +14,7 @@ class ParseFailed(Exception): pass  cdef class Decoder:      cdef decoder.Decoder* dec -    cdef public DenseVector weights +    cdef DenseVector weights      def __cinit__(self, char* config):          decoder.register_feature_functions() @@ -27,6 +27,22 @@ cdef class Decoder:      def __dealloc__(self):          del self.dec +    property weights: +        def __get__(self): +            return self.weights + +        def __set__(self, weights): +            if isinstance(weights, DenseVector): +                self.weights.vector[0] = (<DenseVector> weights).vector[0] +            elif isinstance(weights, SparseVector): +                self.weights.vector.clear() +                ((<SparseVector> weights).vector[0]).init_vector(self.weights.vector) +            elif isinstance(weights, dict): +                for fname, fval in weights.items(): +                    self.weights[fname] = fval +            else: +                raise TypeError('cannot initialize weights with %s' % type(weights)) +      def read_weights(self, cfg):          with open(cfg) as fp:              for line in fp:  | 
