class UserProblem(db.Model): __tablename__ = 'user_problem' id = db.Column(UUIDType(binary=False), server_default=db.func.uuid_generate_v4(), primary_key=True) problem_id = db.Column( UUIDType(binary=False), db.ForeignKey(Problem.id), nullable=False, ) problem = db.relationship(Problem) user_id = db.Column(UUIDType(binary=False), db.ForeignKey(User.id), nullable=False, index=True) user = db.relationship(User, backref='problems') def __repr__(self): return '<UserProblem problem=%r user=%r>' % (self.problem.label, self.user.username)
class LabelEvent(db.Model): __tablename__ = 'label_event' id = db.Column(UUIDType(binary=False), server_default=db.func.uuid_generate_v4(), primary_key=True) data_id = db.Column( UUIDType(binary=False), db.ForeignKey(Dataset.id, ondelete='CASCADE'), nullable=False, index=True, ) data = db.relationship(Dataset, backref='label_events') label_id = db.Column( UUIDType(binary=False), db.ForeignKey('problem_label.id', ondelete='CASCADE'), nullable=False, index=True, ) label = db.relationship('ProblemLabel') label_matches = db.Column(db.Boolean(), nullable=True) created_at = db.Column(db.DateTime, server_default=db.func.now(), nullable=False) def __repr__(self): return '<LabelEvent label=%r>' % self.label
class ProblemLabel(db.Model): __tablename__ = 'problem_label' id = db.Column( UUIDType(binary=False), server_default=db.func.uuid_generate_v4(), primary_key=True ) problem_id = db.Column( UUIDType(binary=False), db.ForeignKey(Problem.id), nullable=False, ) problem = db.relationship(Problem, backref='labels') label = db.Column( db.Unicode(255), nullable=False, ) order_index = db.Column( db.Integer, nullable=False, ) def __repr__(self): return '<Problemlabel label=%r>' % (self.label,)
class DatasetLabelProbability(db.Model): __tablename__ = 'dataset_label_probability' id = db.Column(UUIDType(binary=False), server_default=db.func.uuid_generate_v4(), primary_key=True) data_id = db.Column( UUIDType(binary=False), db.ForeignKey(Dataset.id, ondelete='CASCADE'), nullable=False, index=True, ) data = db.relationship(Dataset, backref='probabilities') label_id = db.Column( UUIDType(binary=False), db.ForeignKey('problem_label.id', ondelete='CASCADE'), nullable=False, index=True, ) label = db.relationship('ProblemLabel') probability = db.Column(db.Float(), nullable=True) __table_args__ = ( db.CheckConstraint((0 <= probability) & (probability <= 1), name='chk_dataset_probability'), db.UniqueConstraint( 'data_id', 'label_id', name='uq_dataset_label_probability_data_id_label_id'), ) def __repr__(self): return '<Problemlabel label=%r>' % (self.label, )
class Dataset(db.Model): __tablename__ = 'dataset' id = db.Column(UUIDType(binary=False), server_default=db.func.uuid_generate_v4(), primary_key=True) entity_id = db.Column(db.Unicode(255), index=True) problem_id = db.Column( UUIDType(binary=False), db.ForeignKey(Problem.id, ondelete='CASCADE'), nullable=False, index=True, ) problem = db.relationship(Problem, backref='dataset') table_name = db.Column( db.Unicode(255), nullable=False, ) free_text = db.Column(db.Text(), nullable=False) meta = db.Column(JSONB) sort_value = db.Column(db.Float(), nullable=True, index=True) __table_args__ = (db.UniqueConstraint( 'problem_id', 'table_name', 'entity_id', name='uq_dataset_problem_idtable_name_entity_id'), ) def matching_label_events(self, matches=True): return [x for x in self.label_events if x.label_matches == matches] def __repr__(self): return '<Dataset table_name=%r>' % self.table_name
class TrainingJob(db.Model): __tablename__ = 'training_job' id = db.Column(UUIDType(binary=False), server_default=db.func.uuid_generate_v4(), primary_key=True) accuracy = db.Column(db.Float(), nullable=False) problem_id = db.Column( UUIDType(binary=False), db.ForeignKey(Problem.id, ondelete='CASCADE'), nullable=False, index=True, ) problem = db.relationship(Problem, backref='training_jobs') created_at = db.Column(db.DateTime, server_default=db.func.now(), nullable=False) def __repr__(self): return '<TrainingJob problem=%r>' % self.problem.id