ENM resolution mix - single run version
Single run version of the workflow for comparing results of two kinds of ecological niche models: one using only low resolution layers and the other using a random mix of low and high resolution layers. Users select the study region and the environmental variables considered to be the main drivers of a virtual species niche. The workflow is all based on the ENM components, which use the openModeller Web Service (OMWS). After getting initial parameters from the user, the workflow generates a random virtual niche. A random threshold within a given prevalence range is then used to separate suitable from unsuitable areas, from where random training and testing points are sampled. Training points are used to generate the models and independent testing points are used for external tests measuring the AUC. This is a simplified version of the workflow http://www.myexperiment.org/workflows/4535 since it doesn't include experiment replication to check if one of the two types of model performs significantly better than the other. This workflow goes through all steps a single time, but it also includes model projection for illustration purposes.
Preview
Run
Run this Workflow in the Taverna Workbench...
Option 1:
Copy and paste this link into File > 'Open workflow location...'
http://www.myexperiment.org/workflows/4536/download?version=6
[ More Info ]
Taverna is available from http://taverna.sourceforge.net/
If you are having problems downloading it in Taverna, you may need to provide your username and password in the URL so that Taverna can access the Workflow:
Replace http:// in the link above with http://yourusername:yourpassword@
Workflow Components
Renato De Giovanni |
ENM resolution mix - single run version |
Single run version of the workflow for comparing results of two kinds of ecological niche models: one using only low resolution layers and the other using a random mix of low and high resolution layers. Users select the study region and the environmental variables considered to be the main drivers of a virtual species niche. The workflow is all based on the ENM components, which use the openModeller Web Service (OMWS). After getting initial parameters from the user, the workflow generates a random virtual niche. A random threshold within a given prevalence range is then used to separate suitable from unsuitable areas, from where random training and testing points are sampled. Training points are used to generate the models and independent testing points are used for external tests measuring the AUC. This is a simplified version of the workflow http://www.myexperiment.org/workflows/4535 since it doesn't include experiment replication to check if one of the two types of model performs significantly better than the other. This workflow goes through all steps a single time, but it also includes model projection for illustration purposes. |
None
Name | Description |
---|---|
max_virtual_niche_prevalence | Maximum virtual niche prevalence (proportion of suitable area in the native range). |
min_virtual_niche_prevalence | Minimum virtual niche prevalence (proportion of suitable area in the native range). |
num_testing_points | Number of points to be used for testing (an equal number will be used for presences and absences). |
max_number_training_points | Maximum number of training points to be used when creating models for the virtual species. The real number will be a random value between minimum and maximum. |
min_number_training_points | Minimum number of training points to be used when creating models for the virtual species. The real number will be a random value between minimum and maximum. |
num_background_points | Number of background points |
Name | Type | Description |
---|---|---|
convert_points_xml_to_csv | component |
Componentconvert_points_xml_to_csv |
convert_points_xml_to_csv_2 | component |
Componentconvert_points_xml_to_csv |
convert_points_xml_to_csv_3 | component |
Componentconvert_points_xml_to_csv |
convert_points_xml_to_csv_4 | component |
Componentconvert_points_xml_to_csv |
create_model_with_low_resolution_layers | component |
Componentcreate_model |
create_model_with_mixed_resolution_layers | component |
Componentcreate_model |
define_random_number_of_training_points | beanshell |
Scriptint my_min_points = Integer.parseInt(min_points); int my_max_points = Integer.parseInt(max_points); num_points = my_min_points + (int)(Math.random()*(my_max_points-my_min_points)); |
define_random_testing_points | component | |
define_random_training_points | component | |
extract_low_resolution_auc | component |
Componentextract_auc |
extract_mixed_resolution_auc | component |
Componentextract_auc |
maxent_parameters | stringconstant |
Value |
mix_layers_randomly | workflow | |
test_model_with_low_resolution_layers | component |
Componenttest_model |
test_model_with_mixed_resolution_layers | component |
Componenttest_model |
generate_acceptable_virtual_niche | workflow | |
define_frequently_used_constants | component |
Componentdefine_frequently_used_constants |
get_last_iteration_result | beanshell |
Scriptint last_pos = point_list.size()-1; random_proportion = random_proportion_list.get(last_pos); point = point_list.get(last_pos); threshold = threshold_list.get(last_pos); model_xml = model_xml_list.get(last_pos); model_values = model_values_list.get(last_pos); |
choose_layers_and_mask | workflow | |
merge_all_layers | beanshell |
Scriptall_layers = high_resolution_layers + "\n" + low_resolution_layers; |
sample_background_points | component |
Randomly sample background points on the specified mask using the intersection between all environmental layers (high and low resolution). Points are returned in the absences port. Componentsample_points |
GreyTiff100 | stringconstant |
ValueGreyTiff100 |
project_model_with_low_resolution_layers | component |
Componentproject_model |
Get_Image_From_URL_2 | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } URL inputURL = null; if (base != void) { inputURL = new URL(new URL(base), url); } else { inputURL = new URL(url); } int bytesRead = 0; int totalBytesRead = 0; InputStream is = inputURL.openStream(); ByteArrayOutputStream os = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; while (true) { bytesRead = is.read(buffer); if (bytesRead == -1) { break; } os.write(buffer, 0, bytesRead); } image = os.toByteArray(); is.close(); os.close(); |
project_model_with_mixed_resolution_layers | component |
Componentproject_model |
Get_Image_From_URL_1 | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } URL inputURL = null; if (base != void) { inputURL = new URL(new URL(base), url); } else { inputURL = new URL(url); } int bytesRead = 0; int totalBytesRead = 0; InputStream is = inputURL.openStream(); ByteArrayOutputStream os = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; while (true) { bytesRead = is.read(buffer); if (bytesRead == -1) { break; } os.write(buffer, 0, bytesRead); } image = os.toByteArray(); is.close(); os.close(); |
Name | Description | Inputs | Outputs |
---|---|---|---|
define_random_number_of_training_points |
min_points max_points |
num_points | |
get_last_iteration_result |
random_proportion_list point_list threshold_list model_xml_list model_values_list |
random_proportion point threshold model_xml model_values |
|
merge_all_layers |
high_resolution_layers low_resolution_layers |
all_layers | |
suggest_random_suitable_threshold |
model_values min_prevalence max_prevalence |
threshold proportion |
|
empty_list | empty_list | ||
mix_layers |
low_resolution_layers high_resolution_layers |
mixed_resolution_layers |
Name | Description |
---|---|
origin_point | |
model_xml | |
suitability_threshold | |
low_resolution_auc | |
mixed_resolution_auc | |
num_training_points | |
training_points_csv | |
testing_presence_points_csv | |
testing_absence_points_csv | |
prevalence | |
low_resolution_projection | |
mixed_resolution_projection |
Source | Sink |
---|---|
define_random_training_points:presences_xml | convert_points_xml_to_csv:points_xml |
define_frequently_used_constants:label | convert_points_xml_to_csv:species_label |
define_random_testing_points:presence_points_xml | convert_points_xml_to_csv_2:points_xml |
define_frequently_used_constants:label | convert_points_xml_to_csv_2:species_label |
define_random_testing_points:absence_points_xml | convert_points_xml_to_csv_3:points_xml |
define_frequently_used_constants:label | convert_points_xml_to_csv_3:species_label |
generate_acceptable_virtual_niche:point | convert_points_xml_to_csv_4:points_xml |
define_frequently_used_constants:label | convert_points_xml_to_csv_4:species_label |
maxent_parameters:value | create_model_with_low_resolution_layers:algorithm_xml |
define_random_training_points:presences_xml | create_model_with_low_resolution_layers:presence_points_xml |
define_frequently_used_constants:latlong_wgs84 | create_model_with_low_resolution_layers:srs |
define_frequently_used_constants:label | create_model_with_low_resolution_layers:species_label |
define_frequently_used_constants:no | create_model_with_low_resolution_layers:environmentally_unique |
define_frequently_used_constants:empty_string | create_model_with_low_resolution_layers:absence_points_xml |
define_frequently_used_constants:no | create_model_with_low_resolution_layers:spatially_unique |
choose_layers_and_mask:mask_id | create_model_with_low_resolution_layers:mask_id |
choose_layers_and_mask:low_resolution_layers_ids | create_model_with_low_resolution_layers:layers_ids |
maxent_parameters:value | create_model_with_mixed_resolution_layers:algorithm_xml |
define_random_training_points:presences_xml | create_model_with_mixed_resolution_layers:presence_points_xml |
define_frequently_used_constants:label | create_model_with_mixed_resolution_layers:species_label |
define_frequently_used_constants:latlong_wgs84 | create_model_with_mixed_resolution_layers:srs |
define_frequently_used_constants:no | create_model_with_mixed_resolution_layers:environmentally_unique |
define_frequently_used_constants:empty_string | create_model_with_mixed_resolution_layers:absence_points_xml |
define_frequently_used_constants:no | create_model_with_mixed_resolution_layers:spatially_unique |
choose_layers_and_mask:mask_id | create_model_with_mixed_resolution_layers:mask_id |
mix_layers_randomly:mixed_resolution_layers | create_model_with_mixed_resolution_layers:layers_ids |
max_number_training_points | define_random_number_of_training_points:max_points |
min_number_training_points | define_random_number_of_training_points:min_points |
num_testing_points | define_random_testing_points:num_presences |
num_testing_points | define_random_testing_points:num_absences |
get_last_iteration_result:threshold | define_random_testing_points:threshold |
generate_acceptable_virtual_niche:model_values | define_random_testing_points:model_values |
sample_background_points:absence_points_xml | define_random_testing_points:points_xml |
define_random_number_of_training_points:num_points | define_random_training_points:num_presences |
define_frequently_used_constants:0 | define_random_training_points:num_absences |
get_last_iteration_result:threshold | define_random_training_points:threshold |
generate_acceptable_virtual_niche:model_values | define_random_training_points:model_values |
sample_background_points:absence_points_xml | define_random_training_points:points_xml |
test_model_with_low_resolution_layers:statistics_xml | extract_low_resolution_auc:statistics_xml |
test_model_with_mixed_resolution_layers:statistics_xml | extract_mixed_resolution_auc:statistics_xml |
choose_layers_and_mask:high_resolution_layers_ids | mix_layers_randomly:high_resolution_layers |
choose_layers_and_mask:low_resolution_layers_ids | mix_layers_randomly:low_resolution_layers |
create_model_with_low_resolution_layers:model_xml | test_model_with_low_resolution_layers:model_xml |
define_random_testing_points:absence_points_xml | test_model_with_low_resolution_layers:absence_points_xml |
define_random_testing_points:presence_points_xml | test_model_with_low_resolution_layers:presence_points_xml |
define_frequently_used_constants:latlong_wgs84 | test_model_with_low_resolution_layers:srs |
define_frequently_used_constants:label | test_model_with_low_resolution_layers:species_label |
define_frequently_used_constants:0 | test_model_with_low_resolution_layers:num_background_points |
define_frequently_used_constants:no | test_model_with_low_resolution_layers:calculate_matrix |
define_frequently_used_constants:yes | test_model_with_low_resolution_layers:calculate_roc |
define_frequently_used_constants:0_5 | test_model_with_low_resolution_layers:threshold |
choose_layers_and_mask:mask_id | test_model_with_low_resolution_layers:mask_id |
choose_layers_and_mask:low_resolution_layers_ids | test_model_with_low_resolution_layers:layers_ids |
create_model_with_mixed_resolution_layers:model_xml | test_model_with_mixed_resolution_layers:model_xml |
define_random_testing_points:presence_points_xml | test_model_with_mixed_resolution_layers:presence_points_xml |
define_random_testing_points:absence_points_xml | test_model_with_mixed_resolution_layers:absence_points_xml |
define_frequently_used_constants:latlong_wgs84 | test_model_with_mixed_resolution_layers:srs |
define_frequently_used_constants:label | test_model_with_mixed_resolution_layers:species_label |
define_frequently_used_constants:0 | test_model_with_mixed_resolution_layers:num_background_points |
define_frequently_used_constants:no | test_model_with_mixed_resolution_layers:calculate_matrix |
define_frequently_used_constants:yes | test_model_with_mixed_resolution_layers:calculate_roc |
define_frequently_used_constants:0_5 | test_model_with_mixed_resolution_layers:threshold |
choose_layers_and_mask:mask_id | test_model_with_mixed_resolution_layers:mask_id |
mix_layers_randomly:mixed_resolution_layers | test_model_with_mixed_resolution_layers:layers_ids |
min_virtual_niche_prevalence | generate_acceptable_virtual_niche:min_prevalence |
max_virtual_niche_prevalence | generate_acceptable_virtual_niche:max_prevalence |
choose_layers_and_mask:mask_id | generate_acceptable_virtual_niche:mask_id |
sample_background_points:absence_points_xml | generate_acceptable_virtual_niche:background_points |
merge_all_layers:all_layers | generate_acceptable_virtual_niche:all_layers |
choose_layers_and_mask:high_resolution_layers_ids | generate_acceptable_virtual_niche:high_resolution_layers |
generate_acceptable_virtual_niche:point | get_last_iteration_result:point_list |
generate_acceptable_virtual_niche:random_proportion | get_last_iteration_result:random_proportion_list |
generate_acceptable_virtual_niche:threshold | get_last_iteration_result:threshold_list |
generate_acceptable_virtual_niche:model_xml | get_last_iteration_result:model_xml_list |
generate_acceptable_virtual_niche:model_values | get_last_iteration_result:model_values_list |
choose_layers_and_mask:low_resolution_layers_ids | merge_all_layers:low_resolution_layers |
choose_layers_and_mask:high_resolution_layers_ids | merge_all_layers:high_resolution_layers |
choose_layers_and_mask:mask_id | sample_background_points:mask_id |
num_background_points | sample_background_points:num_points |
define_frequently_used_constants:no | sample_background_points:environmentally_unique |
define_frequently_used_constants:no | sample_background_points:spatially_unique |
define_frequently_used_constants:label | sample_background_points:species_label |
define_frequently_used_constants:1 | sample_background_points:proportion_of_absences |
merge_all_layers:all_layers | sample_background_points:layers_ids |
define_frequently_used_constants:no | sample_background_points:return_environmental_data |
GreyTiff100:value | project_model_with_low_resolution_layers:output_format |
choose_layers_and_mask:mask_id | project_model_with_low_resolution_layers:mask_id |
define_frequently_used_constants:0_5 | project_model_with_low_resolution_layers:cell_statistics_threshold |
create_model_with_low_resolution_layers:model_xml | project_model_with_low_resolution_layers:model_xml |
choose_layers_and_mask:low_resolution_layers_ids | project_model_with_low_resolution_layers:layers_ids |
project_model_with_low_resolution_layers:raster_url | Get_Image_From_URL_2:url |
GreyTiff100:value | project_model_with_mixed_resolution_layers:output_format |
choose_layers_and_mask:mask_id | project_model_with_mixed_resolution_layers:mask_id |
define_frequently_used_constants:0_5 | project_model_with_mixed_resolution_layers:cell_statistics_threshold |
create_model_with_mixed_resolution_layers:model_xml | project_model_with_mixed_resolution_layers:model_xml |
mix_layers_randomly:mixed_resolution_layers | project_model_with_mixed_resolution_layers:layers_ids |
project_model_with_mixed_resolution_layers:raster_url | Get_Image_From_URL_1:url |
convert_points_xml_to_csv_4:points_csv | origin_point |
generate_acceptable_virtual_niche:model_xml | model_xml |
get_last_iteration_result:threshold | suitability_threshold |
extract_low_resolution_auc:auc | low_resolution_auc |
extract_mixed_resolution_auc:auc | mixed_resolution_auc |
define_random_number_of_training_points:num_points | num_training_points |
convert_points_xml_to_csv:points_csv | training_points_csv |
convert_points_xml_to_csv_2:points_csv | testing_presence_points_csv |
convert_points_xml_to_csv_3:points_csv | testing_absence_points_csv |
generate_acceptable_virtual_niche:random_proportion | prevalence |
Get_Image_From_URL_2:image | low_resolution_projection |
Get_Image_From_URL_1:image | mixed_resolution_projection |
Controller | Target |
---|---|
define_random_testing_points | test_model_with_low_resolution_layers |
merge_all_layers | sample_background_points |
choose_layers_and_mask | merge_all_layers |
create_model_with_low_resolution_layers | project_model_with_low_resolution_layers |
sample_background_points | generate_acceptable_virtual_niche |
generate_acceptable_virtual_niche | get_last_iteration_result |
create_model_with_mixed_resolution_layers | test_model_with_mixed_resolution_layers |
define_random_testing_points | test_model_with_mixed_resolution_layers |
create_model_with_mixed_resolution_layers | project_model_with_mixed_resolution_layers |
define_random_training_points | create_model_with_low_resolution_layers |
create_model_with_low_resolution_layers | test_model_with_low_resolution_layers |
get_last_iteration_result | define_random_training_points |
get_last_iteration_result | define_random_testing_points |
Workflow Type
Version 6 (latest) (of 6)
Shared with Groups (1)
Statistics
In chronological order:
-
Created by Renato De Giovanni on Tuesday 18 November 2014 17:11:02 (UTC)
-
Created by Renato De Giovanni on Wednesday 19 November 2014 11:39:03 (UTC)
Revision comment:Upgraded some of the components.
-
Created by Renato De Giovanni on Thursday 04 December 2014 16:20:03 (UTC)
Revision comment:Updated components versions.
-
Created by Renato De Giovanni on Friday 05 December 2014 17:41:15 (UTC)
Revision comment:Fix bug in threshold calculation.
-
Created by Renato De Giovanni on Tuesday 09 December 2014 20:32:36 (UTC)
Revision comment:Updated samplePoints component and removed unnecessary loop feedback.
-
Created by Renato De Giovanni on Saturday 04 April 2015 21:24:11 (UTC)
Revision comment:Upgraded interaction components to use github pages.
Reviews (0)
Other workflows that use similar services (0)
There are no workflows in myExperiment that use similar services to this Workflow.
Comments (0)
No comments yet
Log in to make a comment