def get_features_for_seqid(self, seqid): rval = gtlib.gt_feature_index_get_features_for_seqid(self.fi, seqid) if rval: a = Array(rval, True) result = [] for i in range(a.size()): fptr = gtlib.gt_genome_node_ref(a.get(i)) result.append(FeatureNode.create_from_ptr(fptr)) return result else: return None
def feature_node_w(fn_p, err_p): fn = FeatureNode.create_from_ptr(fn_p) err = Error(err_p) try: try: self.visit_feature_node(fn) except AttributeError: pass return 0 except GTError, errmsg: err.set(str(errmsg)) return -1
def get_features_for_range(self, start, end, seqid): from ctypes import byref a = Array.create() err = Error() rng = Range(start, end) rval = gtlib.gt_feature_index_get_features_for_range(self.fi, a, seqid, byref(rng), err) if rval != 0: gterror(err) result = [] for i in range(a.size()): fptr = gtlib.gt_genome_node_ref(a.get(i)) result.append(FeatureNode.create_from_ptr(fptr)) return result
def get_features_for_seqid(self, seqid): err = Error() result = [] rval = gtlib.gt_feature_index_get_features_for_seqid( self.fi, seqid.encode('UTF-8'), err) if rval: a = Array(rval, True) for i in range(a.size()): fptr = gtlib.gt_genome_node_ref(a.get(i)) result.append(FeatureNode.create_from_ptr(fptr)) return result else: gterror(err) return result
def get_features_for_seqid(self, seqid): err = Error() result = [] rval = gtlib.gt_feature_index_get_features_for_seqid(self.fi, seqid, err._as_parameter_) if rval: a = Array(rval, True) for i in range(a.size()): fptr = gtlib.gt_genome_node_ref(a.get(i)) result.append(FeatureNode.create_from_ptr(fptr)) return result else: gterror(err) return result
def get_features_for_range(self, start, end, seqid): from ctypes import byref a = Array.create() err = Error() rng = Range(start, end) rval = gtlib.gt_feature_index_get_features_for_range( self.fi, a, seqid, byref(rng), err) if rval != 0: gterror(err) result = [] for i in range(a.size()): fptr = gtlib.gt_genome_node_ref(a.get(i)) result.append(FeatureNode.create_from_ptr(fptr)) return result
def get_genome_feature(self): #refcount only this FeatureNode! return FeatureNode.create_from_ptr(gtlib.gt_rec_map_get_genome_feature(self.rm), True)
def visit_feature_node(self, fn): new_child = FeatureNode.create_new(fn.get_seqid(), "bar", 100, 1000, "+") fn.add_child(new_child)
def get_top_level_feature(self): f = gtlib.gt_block_get_top_level_feature(self.block) if f != 0: return FeatureNode.create_from_ptr(f, True) else: return None