NASA weight filter

From HiveTool
Revision as of 18:24, 29 November 2014 by Paul (talk | contribs)
Jump to: navigation, search

The purpose of this filter is to eliminate changes made by the beekeeper so the graph only reflects weight changes caused by the bees.

This weight filter works by calculating the change in weight (delta weight) between consecutive readings. The delta weight is divided by the time between the readings. If the weight change exceeds a threshold per unit time, it is assumed the bees could not change the weight of the hive that quickly and the weight change must be a manipulation change (add or remove super, feed, etc.) and it is not counted.

In the spring and summer this understates the wieght of the hive. In the fall and winter, it can overstate the weight of the hive.



    if ( $last_weight ) {
        $delta_weight = $weight - $last_weight;
        $delta_time = ($time - $last_time)/3600;
        $delta_rain =  $rain - $last_wx_rain;
        
        if ($delta_time) { $dwdt = $delta_weight/$delta_time; }
        
                                                                # Begin NASA manipulation change filter
        if ( ($weight_filter eq "NASA") 
          && (abs $dwdt > $max_dwdt_lbs_per_hour)               # if the change in weight exceeds the threshold
          && ($start_zero_weight == 0)                          # and the data is not starting off with zeros
          && ($quality != 6) )                                  # and this record is not flagged as a swarm (Quality 6)
           {                                                    # then don't count the change as daily change,
           $manipulation_change +=  $delta_weight;              # count it as manipulation change
           }
        else
           {
           $daily_change += $delta_weight;                      # otherwise, count it as part of the daily change
           }
        }
        else {                                                  #first time through
             $daily_change = $weight;
             $first_graph_date = $row[0];
             $last_wx_rain = $row[10];
             $delta_rain = 0;
        }
        $last_weight = $weight;
        $weight = $daily_change; 
                                                                 # end NASA filter
        $last_temperature = $temperature;
        $last_time = $time;