Beispiel #1
0
class DB(database.ContentsDatabase):
  """
    When your features are heavy to compute, it is smart to precompute them in a trackfile.
    You may then access the computed features through this module.
  """
  def __init__(self,trackfilename,st=0,datatype=None,filter_nulls=True,filter_emptylists=True):
      self.trackfilename=trackfilename
      self.tf=OnDiskMultiTrackLargeZ(trackfilename)     
      self.tfidx=dict([ (self.tf[x][1],x) for x in range(len(self.tf)) ] )
      self.tf.tryloadmeta()
      self.st=st
      self.filter_nulls=filter_nulls
      self.filter_emptylists=filter_emptylists
      if (datatype):
          self.dtp=datatype
          #for i in dir(datatype):
          #    if (not (hasattr(self,i))):
          #        setattr(self,i,getattr(datatype,i))
      else:
        try:
          print self.tf.meta
          self.dtp=self.tf.meta["inbound_datatype"]
          #self.display=self.tf.meta["inbound_datatype"].display
        except:
          pycvf_warning("Failed to use information stored in metadata for typing reverting to no datatype")
          def print_e(x):
            sys.stdout.write(str(x)+"\n")
          self.display=print_e
  def datatype(self):
      return self.dtp
  def __iter__(self):
      ltf=len(self.tf)
      for x in range(ltf):
         tfx=self.tf[x]
         if (not self.filter_nulls) or (tfx[0]!=None):
           if (self.st==-1):
               yield tfx[0],tfx[1]               
           else:
             if (not self.filter_emptylists) or (tfx[0][self.st]!=[]):             
               yield tfx[0][self.st],tfx[1]
  def keys(self):
      return self.tfidx.keys()
  def __getitem__(self,x):
      #print x
      #print self.tfidx      
      return self.tf[self.tfidx[x]][0]
  def values(self,x):
      return itertools.imap(lambda x: self[x],self.keys() )
  def items(self,x):
      return itertools.izip(self.keys(),self.values())
Beispiel #2
0
 def __init__(self,trackfilename,st=0,datatype=None,filter_nulls=True,filter_emptylists=True):
     self.trackfilename=trackfilename
     self.tf=OnDiskMultiTrackLargeZ(trackfilename)     
     self.tfidx=dict([ (self.tf[x][1],x) for x in range(len(self.tf)) ] )
     self.tf.tryloadmeta()
     self.st=st
     self.filter_nulls=filter_nulls
     self.filter_emptylists=filter_emptylists
     if (datatype):
         self.dtp=datatype
         #for i in dir(datatype):
         #    if (not (hasattr(self,i))):
         #        setattr(self,i,getattr(datatype,i))
     else:
       try:
         print self.tf.meta
         self.dtp=self.tf.meta["inbound_datatype"]
         #self.display=self.tf.meta["inbound_datatype"].display
       except:
         pycvf_warning("Failed to use information stored in metadata for typing reverting to no datatype")
         def print_e(x):
           sys.stdout.write(str(x)+"\n")
         self.display=print_e