Skip to content

Commit

Permalink
Merge pull request #108 from Circuitscape/compute
Browse files Browse the repository at this point in the history
Write config file and UI integration
  • Loading branch information
ranjanan authored Apr 6, 2018
2 parents 8a107b1 + eac5b2c commit 7cb9cd3
Show file tree
Hide file tree
Showing 24 changed files with 130 additions and 48 deletions.
2 changes: 1 addition & 1 deletion src/Circuitscape.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ using IterativeSolvers
using Memento
using GZip

include("consts.jl")
include("config.jl")
include("logging.jl")
include("consts.jl")
include("utils.jl")
include("io.jl")
include("out.jl")
Expand Down
67 changes: 67 additions & 0 deletions src/config.jl
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,70 @@ function init_config()

a
end

function update!(cfg, new)
for (key,val) in new
cfg[key] = val
end
end

function write_config(cfg)
open(cfg["output_file"], "w") do f
write(f, """
[Circuitscape Mode]
data_type = $(cfg["data_type"])
scenario = $(cfg["scenario"])
[Version]
version = 5.0.0
[Habitat raster or graph]
habitat_file = $(cfg["habitat_file"])
habitat_map_is_resistances = $(cfg["habitat_map_is_resistances"])
[Connection Scheme for raster habitat data]
connect_four_neighbors_only = $(cfg["connect_four_neighbors_only"] in TRUELIST)
connect_using_avg_resistances = $(cfg["connect_using_avg_resistances"] in TRUELIST)
[Short circuit regions (aka polygons)]
use_polygons = $(cfg["use_polygons"] in TRUELIST)
polygon_file = $(cfg["use_polygons"])
[Options for advanced mode]
ground_file_is_resistances = $(cfg["ground_file_is_resistances"] in TRUELIST)
source_file = $(cfg["source_file"])
remove_src_or_gnd = $(cfg["remove_src_or_gnd"])
ground_file = $(cfg["ground_file"])
use_unit_currents = $(cfg["use_unit_currents"] in TRUELIST)
use_direct_grounds = $(cfg["use_direct_grounds"] in TRUELIST)
[Mask file]
use_mask = $(cfg["use_mask"] in TRUELIST)
mask_file = $(cfg["mask_file"])
[Options for one-to-all and all-to-one modes]
use_variable_source_strengths = $(cfg["use_variable_source_strengths"] in TRUELIST)
variable_source_file = $(cfg["variable_source_file"])
[Options for pairwise and one-to-all and all-to-one modes]
included_pairs_file = $(cfg["included_pairs_file"])
use_included_pairs = $(cfg["use_included_pairs"] in TRUELIST)
point_file = $(cfg["point_file"])
[Calculation options]
solver = cg+amg
[Output options]
write_cum_cur_map_only = $(cfg["write_cum_cur_map_only"] in TRUELIST)
log_transform_maps = $(cfg["log_transform_maps"] in TRUELIST)
output_file = $(cfg["output_file"])
write_max_cur_maps = $(cfg["write_max_cur_maps"] in TRUELIST)
write_volt_maps = $(cfg["write_volt_maps"] in TRUELIST)
set_null_currents_to_nodata = $(cfg["set_null_currents_to_nodata"] in TRUELIST)
set_null_voltages_to_nodata = $(cfg["set_null_voltages_to_nodata"] in TRUELIST)
compress_grids = $(cfg["compress_grids"] in TRUELIST)
write_cur_maps = $(cfg["write_cur_maps"] in TRUELIST)
""")
end
end

4 changes: 2 additions & 2 deletions src/consts.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const AAGRID = 2
const TXTLIST = 3
const PAIRS_AAGRID = 4
const PAIRS_LIST = 5
const truelist = ["True", "true"]
const TRUELIST = ["True", "true"]

# Constants for logging
const NONE = ["NONE", "None", "none"]
Expand All @@ -26,4 +26,4 @@ const WARNING = ["WARNING", "WARN", "warning", "warn", "Warning", "Warn"]
const CRITICAL = ["CRITICAL", "critical", "Critical"]

# Constant for index type
const INT = Int32
const INT = Int32
14 changes: 7 additions & 7 deletions src/io.jl
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ end

function get_network_data(T, cfg)::NetworkData{T,INT}

hab_is_res = cfg["habitat_map_is_resistances"] in truelist
hab_is_res = cfg["habitat_map_is_resistances"] in TRUELIST
hab_file = cfg["habitat_file"]
fp_file = cfg["point_file"]
source_file = cfg["source_file"]
Expand Down Expand Up @@ -345,33 +345,33 @@ function load_raster_data(T, cfg)::RasData{T,INT}

# Habitat file
hab_file = cfg["habitat_file"]
hab_is_res = cfg["habitat_map_is_resistances"] in truelist
hab_is_res = cfg["habitat_map_is_resistances"] in TRUELIST

# Polygons
use_polygons = cfg["use_polygons"] in truelist
use_polygons = cfg["use_polygons"] in TRUELIST
polygon_file = cfg["polygon_file"]

# Mask file
use_mask = cfg["use_mask"] in truelist
use_mask = cfg["use_mask"] in TRUELIST
mask_file = cfg["mask_file"]

# Point file
point_file = cfg["point_file"]

# Variable source strengths
use_var_source = cfg["use_variable_source_strengths"] in truelist
use_var_source = cfg["use_variable_source_strengths"] in TRUELIST
var_source_file = cfg["variable_source_file"]

# Included Pairs
use_inc_pairs = cfg["use_included_pairs"] in truelist
use_inc_pairs = cfg["use_included_pairs"] in TRUELIST
inc_pairs_file = cfg["included_pairs_file"]

# Advanced mode
is_pairwise = cfg["scenario"] in PAIRWISE
is_advanced = cfg["scenario"] in ADVANCED
source_file = cfg["source_file"]
ground_file = cfg["ground_file"]
ground_is_res = cfg["ground_file_is_resistances"] in truelist
ground_is_res = cfg["ground_file_is_resistances"] in TRUELIST

csinfo("Reading maps")

Expand Down
8 changes: 5 additions & 3 deletions src/logging.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
const fmt = "[{date} | {level} | {name}]: {msg}"
const ui_interface = Ref{Function}((x,y) -> nothing)

const logger = Memento.config("info",
fmt = fmt)
csinfo(msg) = info(logger, msg)
cswarn(msg) = warn(logger, msg)
csinfo(msg) = (info(logger, msg); ui_interface[](msg, :info))
cswarn(msg) = (warn(logger, msg); ui_interace[](msg, :warn))

function update_logging!(cfg)

Expand All @@ -20,4 +22,4 @@ function update_logging!(cfg)
push!(logger,
DefaultHandler(log_file, DefaultFormatter(fmt)))
end
end
end
18 changes: 9 additions & 9 deletions src/network/pairwise.jl
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,19 @@ function get_network_flags(cfg)
is_advanced = cfg["scenario"] in ADVANCED
is_alltoone = false
is_onetoall = false
grnd_file_is_res = cfg["ground_file_is_resistances"] in truelist
grnd_file_is_res = cfg["ground_file_is_resistances"] in TRUELIST
policy = Symbol(cfg["remove_src_or_gnd"])
solver = cfg["solver"]

# Output flags
write_volt_maps = cfg["write_volt_maps"] in truelist
write_cur_maps = cfg["write_cur_maps"] in truelist
write_cum_cur_maps_only = cfg["write_cum_cur_map_only"] in truelist
write_max_cur_maps = cfg["write_max_cur_maps"] in truelist
set_null_currents_to_nodata = cfg["set_null_currents_to_nodata"] in truelist
set_null_voltages_to_nodata = cfg["set_null_voltages_to_nodata"] in truelist
compress_grids = cfg["compress_grids"] in truelist
log_transform_maps = cfg["log_transform_maps"] in truelist
write_volt_maps = cfg["write_volt_maps"] in TRUELIST
write_cur_maps = cfg["write_cur_maps"] in TRUELIST
write_cum_cur_maps_only = cfg["write_cum_cur_map_only"] in TRUELIST
write_max_cur_maps = cfg["write_max_cur_maps"] in TRUELIST
set_null_currents_to_nodata = cfg["set_null_currents_to_nodata"] in TRUELIST
set_null_voltages_to_nodata = cfg["set_null_voltages_to_nodata"] in TRUELIST
compress_grids = cfg["compress_grids"] in TRUELIST
log_transform_maps = cfg["log_transform_maps"] in TRUELIST

o = OutputFlags(write_volt_maps, write_cur_maps,
write_cum_cur_maps_only, write_max_cur_maps,
Expand Down
6 changes: 3 additions & 3 deletions src/raster/pairwise.jl
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ function get_raster_flags(cfg)
is_advanced = cfg["scenario"] in ADVANCED
is_onetoall = cfg["scenario"] in ONETOALL
is_alltoone = cfg["scenario"] in ALLTOONE
four_neighbors = cfg["connect_four_neighbors_only"] in truelist
avg_res = cfg["connect_using_avg_resistances"] in truelist
four_neighbors = cfg["connect_four_neighbors_only"] in TRUELIST
avg_res = cfg["connect_using_avg_resistances"] in TRUELIST
solver = cfg["solver"]
ground_file_is_resistances =
cfg["ground_file_is_resistances"] in truelist
cfg["ground_file_is_resistances"] in TRUELIST
policy = Symbol(cfg["remove_src_or_gnd"])

# Output Flags
Expand Down
14 changes: 13 additions & 1 deletion src/run.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Inputs:
function compute(path::String)
cfg = parse_config(path)
update_logging!(cfg)
write_config(cfg)
T = cfg["precision"] in SINGLE ? Float32 : Float64
csinfo("Precision used: $(cfg["precision"])")
t = @elapsed r = _compute(T, cfg)
Expand Down Expand Up @@ -41,4 +42,15 @@ function _compute(T, cfg)
network_advanced(T, cfg)
end
end
end
end

function compute(dict)
cfg = init_config()
update!(cfg, dict)
update_logging!(cfg)
T = cfg["precision"] in SINGLE ? Float32 : Float64
csinfo("Precision used: $(cfg["precision"])")
t = @elapsed r = _compute(T, cfg)
csinfo("Time taken to complete job = $t")
r
end
16 changes: 8 additions & 8 deletions src/utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,14 @@ end
function get_output_flags(cfg)

# Output flags
write_volt_maps = cfg["write_volt_maps"] in truelist
write_cur_maps = cfg["write_cur_maps"] in truelist
write_cum_cur_maps_only = cfg["write_cum_cur_map_only"] in truelist
write_max_cur_maps = cfg["write_max_cur_maps"] in truelist
set_null_currents_to_nodata = cfg["set_null_currents_to_nodata"] in truelist
set_null_voltages_to_nodata = cfg["set_null_voltages_to_nodata"] in truelist
compress_grids = cfg["compress_grids"] in truelist
log_transform_maps = cfg["log_transform_maps"] in truelist
write_volt_maps = cfg["write_volt_maps"] in TRUELIST
write_cur_maps = cfg["write_cur_maps"] in TRUELIST
write_cum_cur_maps_only = cfg["write_cum_cur_map_only"] in TRUELIST
write_max_cur_maps = cfg["write_max_cur_maps"] in TRUELIST
set_null_currents_to_nodata = cfg["set_null_currents_to_nodata"] in TRUELIST
set_null_voltages_to_nodata = cfg["set_null_voltages_to_nodata"] in TRUELIST
compress_grids = cfg["compress_grids"] in TRUELIST
log_transform_maps = cfg["log_transform_maps"] in TRUELIST

o = OutputFlags(write_volt_maps, write_cur_maps,
write_cum_cur_maps_only, write_max_cur_maps,
Expand Down
1 change: 1 addition & 0 deletions test/compare_output.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ function compare_all_output(str)
gen_list, list_to_comp = generate_lists(str)

for f in gen_list
!contains(f, "_") && continue
contains(f, "resistances") && continue

info("Testing $f")
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/1/allToOneVerify1.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/1/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify1.out
output_file = output/allToOneVerify1.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/10/allToOneVerify10.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/10/points_polys7.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify10.out
output_file = output/allToOneVerify10.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/11/allToOneVerify11.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/11/points_polys7.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify11.out
output_file = output/allToOneVerify11.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/12/allToOneVerify12.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/12/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify12.out
output_file = output/allToOneVerify12.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/2/allToOneVerify2.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/2/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify2.out
output_file = output/allToOneVerify2.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/3/allToOneVerify3.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/3/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify3.out
output_file = output/allToOneVerify3.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/4/allToOneVerify4.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/4/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify4.out
output_file = output/allToOneVerify4.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/5/allToOneVerify5.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/5/points5x5_polys.txt
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify5.out
output_file = output/allToOneVerify5.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/6/allToOneVerify6.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/6/points5x5_polys.txt
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify6.out
output_file = output/allToOneVerify6.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/7/allToOneVerify7.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/7/points5x5.txt
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify7.out
output_file = output/allToOneVerify7.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/8/allToOneVerify8.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/8/points5x5_polys.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify8.out
output_file = output/allToOneVerify8.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/all_to_one/9/allToOneVerify9.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/9/points5x5_polys.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify9.out
output_file = output/allToOneVerify9.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/one_to_all/12/oneToAllVerify12.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/12/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify12.out
output_file = output/oneToAllVerify12.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down
2 changes: 1 addition & 1 deletion test/input/raster/one_to_all/13/oneToAllVerify13.ini
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ point_file = input/raster/one_to_all/13/points.asc
[Output options]
write_cum_cur_map_only = False
log_transform_maps = False
output_file = circuitscape/verify/output/oneToAllVerify13.out
output_file = output/oneToAllVerify13.out
write_max_cur_maps = False
write_volt_maps = False
set_null_currents_to_nodata = False
Expand Down

0 comments on commit 7cb9cd3

Please sign in to comment.