Created
April 1, 2016 14:10
-
-
Save Treblesteph/4ba022d61f72f5f6d565df0944909ab0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
design = `digraph scb { | |
rankdir = "LR"; | |
ranksep = "3 equally"; | |
node [shape="box", fontsize=12]; | |
subgraph questions { | |
node [color="teal"]; | |
rank = "same"; | |
q_avoid_losing_work [label="How can I avoid losing work?"]; | |
q_find_use_others_data [label="How can I find and use\nother people's data?"]; | |
q_find_use_others_software [label="How can I find and use\nother people's software?"]; | |
q_improve_productivity [label="How can I be more productive?"]; | |
q_make_collaboration_easy [label="How can I make it easy for people\nto collaborate with me?"]; | |
q_make_data_findable [label="How can I make it easy for people\nto find and use my data?"]; | |
q_make_data_usable_by_programs [label="How can I make it easy\nfor programs to use my data?"]; | |
q_make_software_findable_usable [label="How can I make it easy for people\nto find and use my software?"]; | |
q_results_correct [label="How can I tell if my results are correct?"]; | |
q_results_reproducible [label="How can I make it easy for people\nto reproduce my results?"]; | |
} | |
subgraph answers { | |
node [color="sienna"]; | |
rank = "same"; | |
a_add_assertions [label="Add assertions to the software to document invariants."]; | |
a_add_human_work_to_repo [label="Put everything created by people into version control."]; | |
a_atomic_values [label="Make every value atomic."]; | |
a_automate_tasks [label="Automate repetitive tasks."]; | |
a_avoid_duplication [label="Avoid duplicating functionality within modules."]; | |
a_build_and_smoke_tests [label="Provide simple re-runnable end-to-end test cases."]; | |
a_build_tools [label="Build tools."]; | |
a_choose_primary_communication_channel [label="Choose a primary communication channel."]; | |
a_choose_visualization [label="Choose an appropriate visualization."]; | |
a_clean_up_data [label="Clean up data."]; | |
a_code_reviews [label="Do code reviews."]; | |
a_commit_checklist [label="Maintain a checklist of things to do before sharing a change."]; | |
a_consistent_project_organization [label="Organize the project consistently."]; | |
a_data_doi [label="Submit data to a reputable DOI issuer."]; | |
a_debugging [label="Debug programs."]; | |
a_document_function [label="Begin programs with explanatory comments."]; | |
a_dont_duplicate_code [label="Don't duplicate code."]; | |
a_dont_duplicate_large_data [label="Don't duplicate large data."]; | |
a_eliminate_redundant_calculation [label="Only do as much calculation as necessary."]; | |
a_explicit_requirements [label="Make requirements/dependencies explicit."]; | |
a_foster_welcoming_environment [label="Foster a welcoming environment."]; | |
a_get_orcid [label="Get an ORCID."]; | |
a_give_code_meaningful_names [label="Give values, functions, and classes meaningful names."]; | |
a_good_commit_comments [label="Write good commit comments."]; | |
a_have_computer_repeat_things [label="Have the computer repeat things."]; | |
a_include_readme [label="Include a README file explaining project scope."]; | |
a_isolate_dependencies [label="Isolate project dependencies."]; | |
a_keys_for_records [label="Give every record a unique key."]; | |
a_master_manuscript_online [label="Keep the master copy of every manuscript on the web."]; | |
a_meaningful_path_names [label="Use meaningful path names."]; | |
a_normalize_data [label="Normalize data."]; | |
a_prefer_open_text [label="Prefer open text formats to proprietary non-text formats."]; | |
a_profile_performance [label="Find performance bottlenecks."]; | |
a_project_todo_list [label="Maintain a to-do list for each project."]; | |
a_record_analysis_steps_textually [label="Represent every analysis step textually."]; | |
a_record_data_provenance [label="Record provenance in data."]; | |
a_record_publishing_steps [label="Record publishing steps in machine-usable form."]; | |
a_regular_spreadsheet_layout [label="Use regular layout for spreadsheets."]; | |
a_remove_unused_code [label="Remove unused code."]; | |
a_represent_each_fact_once [label="Represent each fact once."]; | |
a_reuse_libraries [label="Re-use libraries rather than writing equivalents."]; | |
a_run_precommit_checks [label="Run tests automatically before each commit."]; | |
a_search_answer_sites [label="Search question-and-answer sites."]; | |
a_search_data_repositories [label="Search data repositories."]; | |
a_separate_models_from_views [label="Separate models from views."]; | |
a_set_up_development [label="Make it easy to set up a development environment."]; | |
a_software_doi [label="Submit software to a reputable DOI issuer."]; | |
a_sortable_matchable_path_names [label="Use path names that are easy to sort and to match."]; | |
a_specify_citation [label="Make the preferred citation for projects explicit."]; | |
a_specify_license [label="Make the project's license explicit."]; | |
a_store_raw_data [label="Store raw data exactly as it arrived."]; | |
a_store_work_remote_repo [label="Store work in a remotely-hosted version control repository."]; | |
a_treat_metadata_like_data [label="Treat metadata like data."]; | |
a_use_dictionaries [label="Use dictionaries."]; | |
a_use_more_hardware [label="Use more hardware."]; | |
a_use_config_files [label="Use configuration files and conditionals rather than commenting."]; | |
a_use_efficient_data_structures [label="Use efficient data structures."]; | |
a_use_functions [label="Break programs into short, self-contained functions."]; | |
a_use_matchable_text [label="Use text values that are easy to match with regular expressions."]; | |
a_use_package_manager [label="Use a package manager."]; | |
a_use_relational_database [label="Store data in a relational database."]; | |
a_write_readable_software [label="Write readable software."]; | |
a_write_unit_tests [label="Write unit tests to specify and check behavior."]; | |
} | |
subgraph topics { | |
node [color="goldenrod"]; | |
rank = "same"; | |
t_add_to_repository [label="Adding Files to a Repository"]; | |
t_aggregating_data [label="Aggregating Data"]; | |
t_blogging [label="Publishing a Blog", fillcolor="honeydew", style="filled"]; | |
t_boilerplate_citation [label="Specifying Citations", fillcolor="honeydew", style="filled"]; | |
t_boilerplate_license [label="Specifying a License"]; | |
t_boilerplate_readme [label="Writing a README File"]; | |
t_boolean_operators [label="Boolean Operators"]; | |
t_call_stack [label="Understanding The Call Stack", fillcolor="honeydew", style="filled"]; | |
t_choosing_good_path_names [label="Choosing Good Path Names", fillcolor="honeydew", style="filled"]; | |
t_choosing_repository_host [label="Where to Host a Repository"]; | |
t_choosing_visualization [label="Choosing a Good Visualization", fillcolor="honeydew", style="filled"]; | |
t_code_of_conduct [label="Creating a Code of Conduct"]; | |
t_code_reviews [label="Doing Code Reviews", fillcolor="honeydew", style="filled"]; | |
t_commit_checklist [label="Creating a Commit Checklist", fillcolor="honeydew", style="filled"]; | |
t_computer_architecture [label="Computer Architecture", fillcolor="honeydew", style="filled"]; | |
t_conditionals [label="Conditional Expressions"]; | |
t_continuous_integration [label="Continuous Integration", fillcolor="honeydew", style="filled"]; | |
t_coverage [label="Coverage Analysis", fillcolor="honeydew", style="filled"]; | |
t_creating_database [label="Creating a Database"]; | |
t_creating_integrity_tests [label="Creating Integrity Tests", fillcolor="honeydew", style="filled"]; | |
t_creating_repository [label="Creating a Repository"]; | |
t_csv_intro [label="Introducing CSV", fillcolor="honeydew", style="filled"]; | |
t_data_design [label="Data Design", fillcolor="honeydew", style="filled"]; | |
t_data_hygiene [label="Data Hygiene", fillcolor="honeydew", style="filled"]; | |
t_data_types [label="Basic Types and Conversion"]; | |
t_defensive_programming [label="Defensive Programming"]; | |
t_documenting_requirements [label="Documenting Software Requirements", fillcolor="honeydew", style="filled"]; | |
t_environment_variables [label="Environment Variables", fillcolor="honeydew", style="filled"]; | |
t_exporting_openrefine_history [label="Exporting OpenRefine History", fillcolor="honeydew", style="filled"]; | |
t_filename_extensions [label="Filename Extensions", fillcolor="honeydew", style="filled"]; | |
t_filesystem_layout [label="How the Filesystem is Laid Out", fillcolor="honeydew", style="filled"]; | |
t_filtering_data [label="Filtering Data"]; | |
t_finding_files [label="Finding Files"]; | |
t_finding_software [label="Finding Software", fillcolor="honeydew", style="filled"]; | |
t_formatting_spreadsheets [label="Formatting Spreadsheets", fillcolor="honeydew", style="filled"]; | |
t_getting_doi [label="Using DOIs", fillcolor="honeydew", style="filled"]; | |
t_getting_orcid [label="Using ORCIDs", fillcolor="honeydew", style="filled"]; | |
t_good_commit_comments [label="Writing Good Commit Comments", fillcolor="honeydew", style="filled"]; | |
t_handling_missing_data [label="Handling Missing Data"]; | |
t_identify_starting_points [label="Identify Starting Points"]; | |
t_ignoring_files [label="Ignoring Files"]; | |
t_installing_software [label="Installing Software", fillcolor="honeydew", style="filled"]; | |
t_introducing_openrefine [label="Introducing OpenRefine", fillcolor="honeydew", style="filled"]; | |
t_introducing_relational_databases [label="Introducing Relational Databases"]; | |
t_introducing_version_control [label="Introducing Version Control"]; | |
t_issue_tracking [label="Issue Tracking", fillcolor="honeydew", style="filled"]; | |
t_joining_data [label="Combining Data Using Join"]; | |
t_learn_about_barriers [label="Learn About Barriers to Participation", fillcolor="honeydew", style="filled"]; | |
t_logging [label="Logging Program Execution", fillcolor="honeydew", style="filled"]; | |
t_managing_files [label="Creating, Deleting, and Managing Files"]; | |
t_merging_changes [label="Merging Changes"]; | |
t_metadata [label="Storing Metadata", fillcolor="honeydew", style="filled"]; | |
t_models_vs_views [label="Models vs. Views", fillcolor="honeydew", style="filled"]; | |
t_navigating_file_system [label="Navigating the File System"]; | |
t_nobles_rules [label="Noble's Rules for Organizing Projects", fillcolor="honeydew", style="filled"]; | |
t_pipes_filters [label="Pipes and Filters"]; | |
t_plotting [label="Plotting", fillcolor="honeydew", style="filled"]; | |
t_profiling [label="Profiling Performance", fillcolor="honeydew", style="filled"]; | |
t_program_configuration [label="Configuring Programs", fillcolor="honeydew", style="filled"]; | |
t_programming_databases [label="Programming Databases"]; | |
t_programming_style [label="Programming Style", fillcolor="honeydew", style="filled"]; | |
t_python_dictionaries [label="Python Dictionaries", fillcolor="honeydew", style="filled"]; | |
t_python_lists [label="Lists in Python"]; | |
t_read_csv [label="Reading CSV Files"]; | |
t_reading_error_messages [label="Reading Error Messages"]; | |
t_recording_history [label="Recording History"]; | |
t_reproducibility [label="Reproducibility and All That"]; | |
t_reviewing_version_history [label="Reviewing Version History"]; | |
t_search_online [label="Searching Online", fillcolor="honeydew", style="filled"]; | |
t_selecting_data [label="Selecting Data"]; | |
t_setting_up_for_development [label="Setting Up for Development", fillcolor="honeydew", style="filled"]; | |
t_taschuks_rules [label="Taschuk's Rules for Project Dependencies", fillcolor="honeydew", style="filled"]; | |
t_task_farming [label="Task Farming", fillcolor="honeydew", style="filled"]; | |
t_trace_execution [label="Tracing Program Execution", fillcolor="honeydew", style="filled"]; | |
t_tracking_provenance [label="Tracking Provenance", fillcolor="honeydew", style="filled"]; | |
t_update_data [label="Updating Data"]; | |
t_update_repository [label="Updating a Repository"]; | |
t_use_package_manager [label="Using a Package Manager", fillcolor="honeydew", style="filled"]; | |
t_using_branches [label="Using Branches", fillcolor="honeydew", style="filled"]; | |
t_using_editor [label="Using a Plain Text Editor", fillcolor="honeydew", style="filled"]; | |
t_using_libraries [label="Using Libraries"]; | |
t_using_make [label="Using Make"]; | |
t_using_numpy [label="Using NumPy", fillcolor="honeydew", style="filled"]; | |
t_using_openrefine [label="Using OpenRefine", fillcolor="honeydew", style="filled"]; | |
t_using_pandas [label="Using Pandas", fillcolor="honeydew", style="filled"]; | |
t_using_regular_expressions [label="Using Regular Expressions", fillcolor="honeydew", style="filled"]; | |
t_using_web_authoring [label="Using Web-based Authoring Tools", fillcolor="honeydew", style="filled"]; | |
t_variable_scope [label="Variable Scope"]; | |
t_variables_assignment [label="Variables and Assignment"]; | |
t_what_not_to_store [label="What Not to Put in Version Control"]; | |
t_writing_functions [label="Writing Functions"]; | |
t_writing_programs [label="Writing Programs"]; | |
t_writing_python_loops [label="Writing Loops in Python"]; | |
t_writing_shell_loops [label="Writing Loops in the Shell"]; | |
t_writing_shell_scripts [label="Writing Shell Scripts"]; | |
t_writing_unit_tests [label="Writing Unit Tests", fillcolor="honeydew", style="filled"]; | |
} | |
q_avoid_losing_work:e -> a_add_human_work_to_repo:w; | |
q_avoid_losing_work:e -> a_good_commit_comments:w; | |
q_avoid_losing_work:e -> a_prefer_open_text:w; | |
q_avoid_losing_work:e -> a_store_work_remote_repo:w; | |
q_find_use_others_data:e -> a_reuse_libraries:w; | |
q_find_use_others_data:e -> a_search_data_repositories:w; | |
q_find_use_others_software:e -> a_code_reviews:w; | |
q_find_use_others_software:e -> a_reuse_libraries:w; | |
q_find_use_others_software:e -> a_search_answer_sites:w; | |
q_find_use_others_software:e -> a_use_package_manager:w; | |
q_improve_productivity:e -> a_automate_tasks:w; | |
q_improve_productivity:e -> a_build_tools:w; | |
q_improve_productivity:e -> a_eliminate_redundant_calculation:w; | |
q_improve_productivity:e -> a_have_computer_repeat_things:w; | |
q_improve_productivity:e -> a_profile_performance:w; | |
q_improve_productivity:e -> a_use_efficient_data_structures:w; | |
q_improve_productivity:e -> a_use_more_hardware:w; | |
q_make_collaboration_easy:e -> a_add_assertions:w; | |
q_make_collaboration_easy:e -> a_build_and_smoke_tests:w; | |
q_make_collaboration_easy:e -> a_choose_primary_communication_channel:w; | |
q_make_collaboration_easy:e -> a_commit_checklist:w; | |
q_make_collaboration_easy:e -> a_foster_welcoming_environment:w; | |
q_make_collaboration_easy:e -> a_get_orcid:w; | |
q_make_collaboration_easy:e -> a_master_manuscript_online:w; | |
q_make_collaboration_easy:e -> a_project_todo_list:w; | |
q_make_collaboration_easy:e -> a_record_publishing_steps:w; | |
q_make_collaboration_easy:e -> a_set_up_development:w; | |
q_make_collaboration_easy:e -> a_specify_citation:w; | |
q_make_collaboration_easy:e -> a_specify_license:w; | |
q_make_data_findable:e -> a_clean_up_data:w; | |
q_make_data_findable:e -> a_data_doi:w; | |
q_make_data_findable:e -> a_dont_duplicate_large_data:w; | |
q_make_data_findable:e -> a_meaningful_path_names:w; | |
q_make_data_findable:e -> a_normalize_data:w; | |
q_make_data_findable:e -> a_regular_spreadsheet_layout:w; | |
q_make_data_findable:e -> a_separate_models_from_views:w; | |
q_make_data_findable:e -> a_store_raw_data:w; | |
q_make_data_findable:e -> a_treat_metadata_like_data:w; | |
q_make_data_findable:e -> a_use_relational_database:w; | |
q_make_data_usable_by_programs:e -> a_atomic_values:w; | |
q_make_data_usable_by_programs:e -> a_avoid_duplication:w; | |
q_make_data_usable_by_programs:e -> a_keys_for_records:w; | |
q_make_data_usable_by_programs:e -> a_sortable_matchable_path_names:w; | |
q_make_data_usable_by_programs:e -> a_treat_metadata_like_data:w; | |
q_make_data_usable_by_programs:e -> a_use_matchable_text:w; | |
q_make_software_findable_usable:e -> a_document_function:w; | |
q_make_software_findable_usable:e -> a_dont_duplicate_code:w; | |
q_make_software_findable_usable:e -> a_explicit_requirements:w; | |
q_make_software_findable_usable:e -> a_give_code_meaningful_names:w; | |
q_make_software_findable_usable:e -> a_include_readme:w; | |
q_make_software_findable_usable:e -> a_isolate_dependencies:w; | |
q_make_software_findable_usable:e -> a_remove_unused_code:w; | |
q_make_software_findable_usable:e -> a_reuse_libraries:w; | |
q_make_software_findable_usable:e -> a_software_doi:w; | |
q_make_software_findable_usable:e -> a_store_work_remote_repo:w; | |
q_make_software_findable_usable:e -> a_use_config_files:w; | |
q_make_software_findable_usable:e -> a_use_dictionaries:w; | |
q_make_software_findable_usable:e -> a_use_functions:w; | |
q_results_correct:e -> a_add_assertions:w; | |
q_results_correct:e -> a_build_and_smoke_tests:w; | |
q_results_correct:e -> a_choose_visualization:w; | |
q_results_correct:e -> a_code_reviews:w; | |
q_results_correct:e -> a_debugging:w; | |
q_results_correct:e -> a_run_precommit_checks:w; | |
q_results_correct:e -> a_write_readable_software:w; | |
q_results_correct:e -> a_write_unit_tests:w; | |
q_results_reproducible:e -> a_consistent_project_organization:w; | |
q_results_reproducible:e -> a_record_analysis_steps_textually:w; | |
q_results_reproducible:e -> a_record_data_provenance:w; | |
q_results_reproducible:e -> a_set_up_development:w; | |
a_add_assertions:e -> t_defensive_programming:w; | |
a_add_human_work_to_repo:e -> t_add_to_repository:w; | |
a_add_human_work_to_repo:e -> t_update_repository:w; | |
a_atomic_values:e -> t_data_hygiene:w; | |
a_automate_tasks:e -> t_writing_shell_scripts:w; | |
a_avoid_duplication:e -> t_programming_style:w; | |
a_build_and_smoke_tests:e -> t_creating_integrity_tests:w; | |
a_build_tools:e -> t_pipes_filters:w; | |
a_build_tools:e -> t_writing_programs:w; | |
a_build_tools:e -> t_writing_shell_scripts:w; | |
a_choose_primary_communication_channel:e -> t_blogging:w; | |
a_choose_visualization:e -> t_choosing_visualization:w; | |
a_clean_up_data:e -> t_data_hygiene:w; | |
a_clean_up_data:e -> t_introducing_openrefine:w; | |
a_code_reviews:e -> t_code_reviews:w; | |
a_commit_checklist:e -> t_commit_checklist:w; | |
a_consistent_project_organization:e -> t_nobles_rules:w; | |
a_data_doi:e -> t_getting_doi:w; | |
a_debugging:e -> t_logging:w; | |
a_debugging:e -> t_reading_error_messages:w; | |
a_debugging:e -> t_trace_execution:w; | |
a_debugging:e -> t_writing_unit_tests:w; | |
a_document_function:e -> t_programming_style:w; | |
a_dont_duplicate_code:e -> t_programming_style:w; | |
a_dont_duplicate_large_data:e -> t_what_not_to_store:w; | |
a_eliminate_redundant_calculation:e -> t_using_make:w; | |
a_explicit_requirements:e -> t_documenting_requirements:w; | |
a_foster_welcoming_environment:e -> t_code_of_conduct:w; | |
a_foster_welcoming_environment:e -> t_learn_about_barriers:w; | |
a_foster_welcoming_environment:e -> t_identify_starting_points:w; | |
a_get_orcid:e -> t_getting_orcid:w; | |
a_give_code_meaningful_names:e -> t_programming_style:w; | |
a_good_commit_comments:e -> t_good_commit_comments:w; | |
a_have_computer_repeat_things:e -> t_writing_python_loops:w; | |
a_have_computer_repeat_things:e -> t_writing_shell_loops:w; | |
a_include_readme:e -> t_boilerplate_readme:w; | |
a_include_readme:e -> t_documenting_requirements:w; | |
a_isolate_dependencies:e -> t_taschuks_rules:w; | |
a_keys_for_records:e -> t_python_dictionaries:w; | |
a_keys_for_records:e -> t_data_hygiene:w; | |
a_master_manuscript_online:e -> t_using_web_authoring:w; | |
a_master_manuscript_online:e -> t_introducing_version_control:w; | |
a_meaningful_path_names:e -> t_choosing_good_path_names:w; | |
a_meaningful_path_names:e -> t_filename_extensions:w; | |
a_normalize_data:e -> t_formatting_spreadsheets:w; | |
a_normalize_data:e -> t_introducing_relational_databases:w; | |
a_prefer_open_text:e -> t_csv_intro:w; | |
a_prefer_open_text:e -> t_read_csv:w; | |
a_profile_performance:e -> t_profiling:w; | |
a_project_todo_list:e -> t_issue_tracking:w; | |
a_record_analysis_steps_textually:e -> t_exporting_openrefine_history:w; | |
a_record_analysis_steps_textually:e -> t_recording_history:w; | |
a_record_analysis_steps_textually:e -> t_using_make:w; | |
a_record_analysis_steps_textually:e -> t_writing_programs:w; | |
a_record_analysis_steps_textually:e -> t_writing_shell_scripts:w; | |
a_record_data_provenance:e -> t_tracking_provenance:w; | |
a_record_publishing_steps:e -> t_using_make:w; | |
a_record_publishing_steps:e -> t_writing_shell_scripts:w; | |
a_regular_spreadsheet_layout:e -> t_formatting_spreadsheets:w; | |
a_remove_unused_code:e -> t_coverage:w; | |
a_represent_each_fact_once:e -> t_data_hygiene:w; | |
a_reuse_libraries:e -> t_finding_software:w; | |
a_reuse_libraries:e -> t_using_libraries:w; | |
a_run_precommit_checks:e -> t_continuous_integration:w; | |
a_search_answer_sites:e -> t_search_online:w; | |
a_search_data_repositories:e -> t_search_online:w; | |
a_separate_models_from_views:e -> t_models_vs_views:w; | |
a_set_up_development:e -> t_setting_up_for_development:w; | |
a_set_up_development:e -> t_use_package_manager:w; | |
a_software_doi:e -> t_getting_doi:w; | |
a_sortable_matchable_path_names:e -> t_choosing_good_path_names:w; | |
a_specify_citation:e -> t_boilerplate_citation:w; | |
a_specify_license:e -> t_boilerplate_license:w; | |
a_store_raw_data:e -> t_nobles_rules:w; | |
a_store_raw_data:e -> t_tracking_provenance:w; | |
a_store_work_remote_repo:e -> t_choosing_repository_host:w; | |
a_store_work_remote_repo:e -> t_ignoring_files:w; | |
a_store_work_remote_repo:e -> t_introducing_version_control:w; | |
a_treat_metadata_like_data:e -> t_metadata:w; | |
a_use_dictionaries:e -> t_python_dictionaries:w; | |
a_use_config_files:e -> t_conditionals:w; | |
a_use_config_files:e -> t_program_configuration:w; | |
a_use_config_files:e -> t_programming_style:w; | |
a_use_efficient_data_structures:e -> t_python_dictionaries:w; | |
a_use_efficient_data_structures:e -> t_python_lists:w; | |
a_use_efficient_data_structures:e -> t_using_numpy:w; | |
a_use_efficient_data_structures:e -> t_using_pandas:w; | |
a_use_functions:e -> t_programming_style:w; | |
a_use_functions:e -> t_writing_functions:w; | |
a_use_matchable_text:e -> t_using_regular_expressions:w; | |
a_use_more_hardware:e -> t_computer_architecture:w; | |
a_use_more_hardware:e -> t_task_farming:w; | |
a_use_package_manager:e -> t_use_package_manager:w; | |
a_use_relational_database:e -> t_aggregating_data:w; | |
a_use_relational_database:e -> t_creating_database:w; | |
a_use_relational_database:e -> t_data_design:w; | |
a_use_relational_database:e -> t_filtering_data:w; | |
a_use_relational_database:e -> t_handling_missing_data:w; | |
a_use_relational_database:e -> t_introducing_relational_databases:w; | |
a_use_relational_database:e -> t_joining_data:w; | |
a_use_relational_database:e -> t_programming_databases:w; | |
a_use_relational_database:e -> t_selecting_data:w; | |
a_use_relational_database:e -> t_update_data:w; | |
a_write_readable_software:e -> t_programming_style:w; | |
a_write_unit_tests:e -> t_writing_unit_tests:w; | |
t_add_to_repository:e -> t_creating_repository:e; | |
t_add_to_repository:e -> t_introducing_version_control:e; | |
t_aggregating_data:e -> t_handling_missing_data:e; | |
t_blogging:e -> t_using_web_authoring:e; | |
t_call_stack:e -> t_variable_scope:e; | |
t_choosing_good_path_names:e -> t_filename_extensions:e; | |
t_choosing_good_path_names:e -> t_finding_files:e; | |
t_choosing_repository_host:e -> t_introducing_version_control:e; | |
t_choosing_visualization:e -> t_plotting:e; | |
t_code_of_conduct:e -> t_learn_about_barriers:e; | |
t_code_reviews:e -> t_merging_changes:e; | |
t_code_reviews:e -> t_reviewing_version_history:e; | |
t_code_reviews:e -> t_using_branches:e; | |
t_computer_architecture:e -> t_data_types:e; | |
t_continuous_integration:e -> t_commit_checklist:e; | |
t_creating_database:e -> t_joining_data:e; | |
t_creating_repository:e -> t_introducing_version_control:e; | |
t_data_design:e -> t_joining_data:e; | |
t_data_hygiene:e -> t_data_design:e; | |
t_data_types:e -> t_variables_assignment:e; | |
t_exporting_openrefine_history:e -> t_introducing_openrefine:e; | |
t_filtering_data:e -> t_introducing_relational_databases:e; | |
t_finding_files:e -> t_filesystem_layout:e; | |
t_finding_software:e -> t_search_online:e; | |
t_good_commit_comments:e -> t_add_to_repository:e; | |
t_handling_missing_data:e -> t_selecting_data:e; | |
t_identify_starting_points:e -> t_issue_tracking:e; | |
t_ignoring_files:e -> t_add_to_repository:e; | |
t_installing_software:e -> t_environment_variables:e; | |
t_introducing_openrefine:e -> t_formatting_spreadsheets:e; | |
t_joining_data:e -> t_handling_missing_data:e; | |
t_managing_files:e -> t_using_editor:e; | |
t_plotting:e -> t_using_libraries:e; | |
t_plotting:e -> t_using_pandas:e; | |
t_profiling:e -> t_computer_architecture:e; | |
t_program_configuration:e -> t_environment_variables:e; | |
t_program_configuration:e -> t_boolean_operators:e; | |
t_programming_databases:e -> t_selecting_data:e; | |
t_programming_style:e -> t_writing_functions:e; | |
t_read_csv:e -> t_csv_intro:e; | |
t_read_csv:e -> t_using_pandas:e; | |
t_reproducibility:e -> t_program_configuration:e; | |
t_reproducibility:e -> t_documenting_requirements:e; | |
t_reproducibility:e -> t_metadata:e; | |
t_reproducibility:e -> t_tracking_provenance:e; | |
t_search_online:e -> t_boolean_operators:e; | |
t_selecting_data:e -> t_introducing_relational_databases:e; | |
t_taschuks_rules:e -> t_program_configuration:e; | |
t_taschuks_rules:e -> t_environment_variables:e; | |
t_task_farming:e -> t_computer_architecture:e; | |
t_task_farming:e -> t_writing_shell_loops:e; | |
t_trace_execution:e -> t_call_stack:e; | |
t_trace_execution:e -> t_logging:e; | |
t_trace_execution:e -> t_variables_assignment:e; | |
t_tracking_provenance:e -> t_recording_history:e; | |
t_update_data:e -> t_selecting_data:e; | |
t_update_repository:e -> t_add_to_repository:e; | |
t_use_package_manager:e -> t_filesystem_layout:e; | |
t_use_package_manager:e -> t_installing_software:e; | |
t_using_libraries:e -> t_variables_assignment:e; | |
t_using_make:e -> t_writing_shell_scripts:e; | |
t_using_numpy:e -> t_data_types:e; | |
t_using_numpy:e -> t_using_libraries:e; | |
t_using_openrefine:e -> t_introducing_openrefine:e; | |
t_using_openrefine:e -> t_using_regular_expressions:e; | |
t_using_pandas:e -> t_data_types:e; | |
t_using_pandas:e -> t_using_libraries:e; | |
t_variable_scope:e -> t_variables_assignment:e; | |
t_writing_functions:e -> t_conditionals:e; | |
t_writing_functions:e -> t_variable_scope:e; | |
t_writing_programs:e -> t_using_libraries:e; | |
t_writing_programs:e -> t_using_numpy:e; | |
t_writing_programs:e -> t_using_pandas:e; | |
t_writing_programs:e -> t_writing_functions:e; | |
t_writing_python_loops:e -> t_python_lists:e; | |
t_writing_shell_scripts:e -> t_managing_files:e; | |
t_writing_shell_scripts:e -> t_navigating_file_system:e; | |
t_writing_shell_scripts:e -> t_pipes_filters:e; | |
t_writing_shell_scripts:e -> t_using_editor:e; | |
t_writing_unit_tests:e -> t_defensive_programming:e; | |
t_writing_unit_tests:e -> t_writing_functions:e; | |
}` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var g = graphlibDot.read(design); | |
// Create the renderer | |
var render = new dagreD3.render(); | |
var svg = d3.select("#graph-container").append("svg"); | |
// Set up an SVG group so that we can translate the final graph. | |
var svgGroup = svg.append("g"); | |
// Run the renderer. This is what draws the final graph. | |
var thingtorender = d3.select("svg g") | |
render(thingtorender, g); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* This sets the color for "TK" nodes to a light blue green. */ | |
g.type-TK > rect { | |
fill: #00ffd0; | |
} | |
text { | |
font-weight: 300; | |
font-family: "Helvetica Neue", Helvetica, Arial, sans-serf; | |
font-size: 14px; | |
} | |
.node rect { | |
stroke: #999; | |
fill: #fff; | |
stroke-width: 1.5px; | |
} | |
.edgePath path { | |
stroke: #333; | |
stroke-width: 1.5px; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<link href="graphstyle.css" rel="stylesheet" type="text/css"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> | |
</head> | |
<body> | |
<div id="graph-container"> | |
</div> | |
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script src="http://cpettitt.github.io/project/graphlib-dot/latest/graphlib-dot.min.js"></script> | |
<script src="http://cpettitt.github.io/project/dagre-d3/latest/dagre-d3.min.js"></script> | |
<script src="design.js"></script> | |
<script src="graph.js"></script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment