Ejemplo n.º 1
0
 def get_value(self, 
               context=None, component=None, field=None,
               key=None, cindex=None, propname=None, fkey=None, findex=None, scope=None, 
               column='value', 
               return_list=False):
     """値を取得する
     コンポーネント/コンテキストのキー(key), コンポーネントのインデックス(cindex), プロパティ名(propname), 
     フィールドのキー(fkey), フィールドのインデックス(findex), スコープ(scope)を適切に設定することにより、
     複数の値を一度に取得することができる。
     return_list=False のとき、取得した値が1つの場合は値(のみ)を直接取得することができる。
     それ以外の場合、値はリストで取得される。
     """
     if context is not None:
         key, cindex = util.get_key_and_index(context)
     if component is not None:
         key, cindex = util.get_key_and_index(component)
     if field is not None:
         fkey, findex = util.get_key_and_index(field)
         
     key = self._conv_key(key)
     fkey = self._conv_key(fkey)
     slicer = self.get_islicer(key=key, cindex=cindex, propname=propname, fkey=fkey, findex=findex, scope=scope)
     values = self.data.loc[slicer, column].values
     if (len(values) == 1) and (return_list == False):
         return values[0]
     else:
         return values
Ejemplo n.º 2
0
 def set_component(self, component, _to):
     """1つのコンポーネントを1つのフィールドにセットする
     このメソッドはunknownとvalueを一組で設定します。すなわち、unknownなフィールドにあったコンポーネントを
     移動するとき、同じフィールドがunknownとなっていた別コンポーネントも同様に処理されるということです。
     """
     assert component is not None
     assert _to is not None
     
     ckey, cindex = util.get_key_and_index(component)
     fkey, findex = util.get_key_and_index(_to)
     
     self.set_value(self.VALUE_NON_EXISTENT, fkey=fkey, findex=findex)
     self.set_value(self.VALUE_EXISTENT, key=ckey, cindex=cindex, fkey=fkey, findex=findex)
Ejemplo n.º 3
0
 def move_component(self, _from, _to):
     """フィールドからフィールドへ1つのコンポーネントを移動する
     """
     assert _from is not None
     assert _to is not None
     
     fkey, findex = util.get_key_and_index(_from)
     #fkey = self._conv_key(_fkey)
     tkey, tindex = util.get_key_and_index(_to)
     #tkey = self._conv_key(_tkey)
     
     values = self.get_value(fkey=fkey, findex=findex)
     self.set_value(values, fkey=tkey, findex=tindex)
     self.set_value(float('nan'), fkey=fkey, findex=findex)
Ejemplo n.º 4
0
 def output_component(self, field=None, fkey=None, findex=None):
     """指定されたフィールドにセットされているコンポーネントの出力形式を取得する
     """
     output = ' ' #何もセットされてない場合の出力形式
     strs = []
     
     if field is not None:
         fkey, findex = util.get_key_and_index(field)
     fkey = self._conv_key(fkey)
     slicer = self.get_islicer(propname='_placed', fkey=fkey, findex=findex)
     unknown = self.data.loc[slicer, 'unknown'][0]
     #print 'unknown:', unknown #DEBUG
     value = self.data.loc[slicer, 'value']
     #print 'value:', value #DEBUG
     for _key, _value in value.iteritems():
         #print '_key:', _key, ', _value:', _value #DEBUG
         if _value > 0:
             ckey = _key[0]
             str_key = 'rstr' if unknown == 1 else 'str'
             _str = util.dict_value(self.components, str_key, search=('key', ckey))
             strs.append(_str)
     strs = np.unique(strs)
     #print 'strs:', strs, ', len=', len(strs) #DEBUG
     if len(strs) > 0:
         output = "/".join(strs)
     return output
Ejemplo n.º 5
0
 def set_value(self, 
               value, 
               context=None, component=None, field=None,
               key=None, cindex=None, propname=None, fkey=None, findex=None, scope=None, 
               column='value'):
     """値を設定する
     コンポーネント/コンテキストのキー(key), コンポーネントのインデックス(cindex), プロパティ名(propname), 
     フィールドのキー(fkey), フィールドのインデックス(findex), スコープ(scope)を適切に設定することにより、
     複数の値を一度に設定することができる。
     """
     if context is not None:
         key, cindex = util.get_key_and_index(context)
     if component is not None:
         key, cindex = util.get_key_and_index(component)
     if field is not None:
         fkey, findex = util.get_key_and_index(field)
     
     key = self._conv_key(key)
     fkey = self._conv_key(fkey)
     slicer = self.get_islicer(key=key, cindex=cindex, propname=propname, fkey=fkey, findex=findex, scope=scope)
     try:
         self.data.loc[slicer, column] = value
     except KeyError:
         pass