CropCd_output.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from sqlalchemy import Column, Integer, Float
  2. from sqlalchemy import ForeignKeyConstraint
  3. from app.database import Base # 统一的基础模型
  4. class CropCdOutputData(Base):
  5. """
  6. 作物镉预测模型输出数据模型
  7. 存储作物镉富集预测模型的计算结果,核心输出为:
  8. LnCropCd - 籽粒镉浓度的自然对数值
  9. 实际籽粒镉浓度 = exp(LnCropCd) [单位:mg/kg]
  10. """
  11. __tablename__ = 'CropCd_output_data'
  12. # 主键配置
  13. id = Column('ID', Integer, primary_key=True, autoincrement=True,
  14. comment='自增主键')
  15. # 外键字段
  16. farmland_id = Column('Farmland_ID', Integer, nullable=False,
  17. comment='关联农地ID')
  18. sample_id = Column('Sample_ID', Integer, nullable=False,
  19. comment='关联样点ID')
  20. # 模型输出结果
  21. ln_crop_cd = Column('LnCropCd', Float, nullable=False,
  22. comment='籽粒镉浓度的自然对数值[ln(mg/kg)]')
  23. # 复合外键约束
  24. __table_args__ = (
  25. ForeignKeyConstraint(
  26. ['Farmland_ID', 'Sample_ID'],
  27. ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID']
  28. ),
  29. {'comment': '作物镉预测模型输出数据'}
  30. )
  31. # 转换方法:实际籽粒镉浓度
  32. def crop_cd_value(self):
  33. """
  34. 计算实际作物籽粒镉浓度(单位:mg/kg)
  35. 公式:CropCd = exp(LnCropCd)
  36. """
  37. import math
  38. return math.exp(self.ln_crop_cd)