-2

我正在尝试使用最小值、最佳值和最大值为变量分配权重。例如,我计算了 DNA 序列温度 (Tm) 的浮点数(基于 NN 连接算法计算)。我只对特定温度范围内的序列感兴趣。opt=61,min=58,max=64。我想编写两个线性方程,其中温度变量的权重可用于将来的比较(在权重变量本身内)。例如,如果 Tm = 61,这是最理想的(最优),因此它应该获得 100 的权重。Tm 为 58(最不理想)的权重为 10,就像 Tm 为 64(最不理想)也有重量为 10。

伪代码:

def Tm_weight(Tm):
    if Tm == 61:
        weight = 100
    elif Tm > 61:
        weight = ((-30*(Tm)) + 1930)
    else:
        weight = ((30*(Tm)) - 1730)
    return weight 

这将为我提供所需的权重,但是我正在寻找一种更通用的方法来做到这一点,而无需实际提供值。我希望使用 argparse(所以我可以从命令行更改选项(对于 opt、min 和 max),然后仍然计算这个特定变量的线性权重。有没有更好的方法来做到这一点?

4

1 回答 1

0

我一直在寻找像这样更通用的东西,但是我仍然不知道是否有更好/更有效的方法来做到这一点。```

def Tm_weight(self):
   if self.temp == options.optTm:
      self.temp_weight = 100
   elif self.temp > options.optTm:
      self.slope = (10-100)/(options.maxTm - options.optTm)
      self.inter = (100 - ((10-100)/(options.maxTm - options.optTm))*(options.optTm))
      self.temp_weight = ((self.slope)*(self.temp) + (self.inter))
   else:
      self.slope = (100 - 10)/(options.optTm - options.minTm)
      self.inter = (100 - ((100 - 10)/(options.optTm - options.minTm))*(options.optTm))
      self.temp_weight = ((self.slope)*(self.temp) + (self.inter))
   return self.temp_weight
于 2015-05-12T22:44:15.497 回答