 ;;; Note that all internal operations for estimating size are performed
 ;;; assuming bytes as the units.
 
-(defn get-measurement
+(defn- get-measurement
   [variable]
   (let [dims (get-in variable [:umm :Dimensions])
         total-dimensionality (reduce * (map :Size dims))
         data-type (get-in variable [:umm :DataType])]
     (* total-dimensionality
        (util/data-type->bytes data-type))))
+
+(defn- get-avg-gran-size
+  [vars]
+  (let [value (get-in (first vars) [:umm :SizeEstimation :AvgCompressionRateASCII])]
+    (if (string? value)
+      (read-string value)
+      value)))
+
+(defn- get-avg-compression-rate
+  [vars]
+  (let [value (get-in (first vars) [:umm :SizeEstimation :AverageSizeOfGranulesSampled])]
+    (if (string? value)
+      (read-string value)
+      value)))
 
 (defn estimate-dods-size
   [granule-count variables]

              granule-metadata
              {:errors (errors/check
                        [not data-files metadata-errors/empty-gnl-data-files])})
        fmt (:format params)]
    (log/trace "raw-params:" raw-params)
    (log/debug "Got format:" fmt)
    (log/debug "Got data-files:" (vec data-files))
    (log/debug "Got services:" services)
    (log/debug "Got vars:" vars)
    (process-results
      {:params params
       :data-files data-files

                             format
                             (count data-files)
                             vars
                             sample-granule-metadata-size
                             params)]
       ;; Error handling for post-stages processing
       (if (errors/erred? estimate-or-errs)
         (do
