def test_mask_is_stable(): mg = RasterModelGrid((10, 10)) mg.add_zeros("node", "topographic__elevation") np.random.seed(3542) noise = np.random.rand(mg.size("node")) mg.at_node["topographic__elevation"] += noise fr = FlowAccumulator(mg, flow_director="D8") fsc = FastscapeEroder(mg, K_sp=0.01, m_sp=0.5, n_sp=1) for x in range(2): fr.run_one_step() fsc.run_one_step(dt=10.0) mg.at_node["topographic__elevation"][mg.core_nodes] += 0.01 mask = np.zeros(len(mg.at_node["topographic__elevation"]), dtype=np.uint8) mask[np.where(mg.at_node["drainage_area"] > 0)] = 1 mask0 = mask.copy() dd = DrainageDensity(mg, channel__mask=mask) mask1 = mask.copy() dd.calc_drainage_density() mask2 = mask.copy() assert_array_equal(mask0, mask1) assert_array_equal(mask0[mg.core_nodes], mask2[mg.core_nodes])
def CalandConv_DrainageDensity(rmg, DD_thrshld, filename): rmg.at_node['topographic__elevation'][rmg.core_nodes] channels = np.array(rmg.at_node['drainage_area'] > DD_thrshld, dtype=np.uint8) dd = DrainageDensity(rmg, channel__mask=channels) mean_drainage_density = dd.calc_drainage_density() print 'the mean drainage density of %s is: %f' % (filename, mean_drainage_density) return mean_drainage_density