def run(self):
		biomass_raster_list = [
			"C:/Users/rpsharp/Dropbox_stanford/Dropbox/forest_edge_carbon/af_biov2ct1.tif",
			"C:/Users/rpsharp/Dropbox_stanford/Dropbox/forest_edge_carbon/am_biov2ct1.tif",
			"C:/Users/rpsharp/Dropbox_stanford/Dropbox/forest_edge_carbon/as_biov2ct1.tif",
		]

		nodata = raster_utils.get_nodata_from_uri(biomass_raster_list[0])
		cell_size = raster_utils.get_cell_size_from_uri(biomass_raster_list[0])

		def union_op(*biomass_array_list):
			output_array = biomass_array_list[0]
			for biomass_array in biomass_array_list[1:]:
				output_array = numpy.where(
					biomass_array != nodata, biomass_array, output_array)
			return output_array

		raster_utils.create_directories([os.path.dirname(self.output_uri)])

		raster_utils.vectorize_datasets(
	        biomass_raster_list, union_op, self.output_uri, gdal.GDT_Int16,
	        nodata, cell_size, 'union', dataset_to_align_index=0,
	        vectorize_op=False)
        [lulc_uri,], mask_nonforest, mask_uri, gdal.GDT_Byte,
        mask_nodata, cell_size, 'intersection', dataset_to_align_index=0,
        dataset_to_bound_index=None, aoi_uri=None,
        assert_datasets_projected=True, process_pool=None, vectorize_op=False,
        datasets_are_pre_aligned=True)

    forest_edge_distance_uri = os.path.join(OUTPUT_DIR, "%s_forest_edge.tif" % prefix)
    raster_utils.distance_transform_edt(mask_uri, forest_edge_distance_uri)

    biomass_stats_uri = os.path.join(OUTPUT_DIR, "%s_biomass_stats.csv" % prefix)
    _aggregate_results(forest_edge_distance_uri, biomass_uri, ecoregion_dataset_uri, ecoregion_lookup, biomass_stats_uri)
    

if __name__ == '__main__':
    #mask out forest LULCs
    raster_utils.create_directories([OUTPUT_DIR])

    INPUT_QUEUE = multiprocessing.JoinableQueue()
    OUTPUT_QUEUE = multiprocessing.Queue()
    
    NUMBER_OF_PROCESSES = multiprocessing.cpu_count()

    for _ in xrange(NUMBER_OF_PROCESSES):
        multiprocessing.Process(target=worker, args=(INPUT_QUEUE, OUTPUT_QUEUE)).start()

    pantropic_regions = ['am', 'af', 'as']
    for PREFIX in pantropic_regions:
        pass
        #INPUT_QUEUE.put((process_ecoregion, [PREFIX,]))
        #cProfile.runctx('process_ecoregion(PREFIX)', locals(), globals(), 'stats')
        #p = pstats.Stats('stats')