Exemplo n.º 1
0
 def build_orcid_page(self, parent):
     orcid_page = MarkdownPage(
         heading='CoMSES Net & ORCID',
         title='CoMSES Net & ORCID',
         description=
         ('<span class="float-right">![orcid logo](/static/images/logo-orcid-member-170px.png)</span>\n'
          '<i class="ai ai-orcid text-orcid"></i>[ORCID](https://orcid.org) provides a persistent digital identifier that distinguishes you '
          'from other researchers.'),
         slug='orcid',
         body=
         ('## What is ORCID?\n\n'
          'ORCID provides researchers with a unique identifier (an ORCID iD <i class="ai ai-orcid text-orcid"></i>) '
          'plus a mechanism for linking their research outputs and activities to their ORCID iD.\n\n'
          'ORCID is integrated into many systems used by publishers, funders, institutions, and other '
          'research-related services.\n\n'
          'To learn more about ORCID, watch the [Why ORCID? video](https://vimeo.com/237730655) or visit their '
          '[website](https://orcid.org/content/help).\n\n'
          '## Connect your ORCID iD with your CoMSES Net account\n\n'
          'CoMSES Net would like to collect your ORCID iD for use in our systems. You can connect your CoMSES'
          ' Net account with ORCID and authorize the collection and use of your ORCID iD in our systems at your '
          '[account profile](/accounts/profile/) page or when you first sign up as a CoMSES Net member.\n\n\n'
          '## Why register your ORCID iD?\n\n'
          'Your ORCID iD:\n\n'
          '* distinguishes you and ensures your research outputs and activities are correctly attributed to you\n'
          '* reliably and easily connects you with your contributions and affiliations\n'
          '* reduces form-filling (enter data once, re-use it often)\n'
          '* improves recognition and discoverability for you and your research outputs\n'
          '* is interoperable (works with many institutions, funders, and publishers)\n'
          '* is persistent (enduring)\n'
          '* will allow us to integrate your publications, computational models, and research interests with your ORCID record\n\n'
          'An ORCID iD is also a requirement of many journal manuscript submission systems and grant application forms.\n\n\n'
          '--- Content adapted from [ORCID Communications Toolkit v4](https://doi.org/10.23640/07243.5493064.v4)\n\n\n'
          ),
     )
     parent.add_child(instance=orcid_page)
Exemplo n.º 2
0
 def build_good_practice_page(self, parent):
     page = MarkdownPage(
         heading='Resources',
         slug='guides-to-good-practice',
         title='Guides to Good Practice',
         description=
         ('We strive to foster and support good practices for developing and disseminating open and reproducible '
          'computational models. Computational modeling is not a primary skill for most practitioners but instead a '
          'tool that we can use to better understand the emergent phenomena that arise from the complex adaptive '
          'systems that we engage in every day. If you are interested in improving foundational computational and '
          'data science skills, check out [the Software and Data Carpentries organizations](http://carpentries.org) '
          'and look for an [upcoming workshop](https://software-carpentry.org/workshops/) near you.'
          ),
         body=
         ('### Agent-based model development \n\n'
          '* Keep your models simple\n'
          '* Document your models using ODD or equivalent documentation protocol\n'
          '* Perform sensitivity analysis on your model variables\n\n\n'
          'Some of the code and data management practices listed below are also described in greater detail in '
          '[*Good Enough Practices in Scientific Computing* by Wilson et al]'
          '(https://swcarpentry.github.io/good-enough-practices-in-scientific-computing/).'
          ' It is definitely worth a read if you would like to further explore these topics. \n'
          '### Code management \n\n'
          '* Use a version control system\n'
          '* Document all external dependencies (e.g., Docker, pip, packrat)\n'
          '* Strive for simple, well-commented, self-documenting code with meaningful variable names\n'
          '* Adopt or develop community documentation standards (e.g., '
          '[ODD](https://doi.org/10.1016/j.ecolmodel.2010.08.019))\n'
          '* Adopt a consistent, self-describing '
          '[directory structure](https://swcarpentry.github.io/good-enough-practices-in-scientific-computing/#project-organization) '
          'for your code, data, documentation, and results\n'
          '* Archive your codebase in a DOI-issuing repository that provides citable URLs for specific '
          'versions of your codebase [(Force11 software citation principles)]'
          '(https://www.force11.org/software-citation-principles) \n'
          '* Provide example test cases and expected outputs\n\n\n'
          '### Data management \n\n'
          '* Preserve raw and intermediate forms of data\n'
          '* Document all data cleaning and processing steps\n'
          '* Script your data analysis as opposed to manually munging an Excel sheet\n'
          '* Archive your data in a DOI-issuing repository that provides citable URLs for specific versions of your dataset\n'
          '* Create [tidy, analysis-friendly data](https://swcarpentry.github.io/good-enough-practices-in-scientific-computing/#data-management)\n'
          ),
     )
     page.add_breadcrumbs([('Resources', '/resources/'),
                           ('Guides to Good Practice', 'good-practices')])
     parent.add_child(instance=page)
Exemplo n.º 3
0
 def build_bylaws_page(self, parent):
     bylaws_page = MarkdownPage(
         heading='CoMSES Net By-Laws',
         title='CoMSES Net By-Laws',
         description=
         'Community drafted By-Laws for the operation of CoMSES Net.',
         slug='by-laws',
         body=
         ('[TOC]\n\n'
          '# Article I: The Organization \n\n'
          '**A.** This organization shall be known as the Network for Computational Modeling in '
          'the Social and Ecological Sciences (CoMSES Net)\n'
          '**B.** CoMSES Net is a scientific research coordination network to support and expand the development and '
          'use of computational modeling in the social and ecological sciences.\n'
          '**C.** One of the primary nodes of CoMSES Net is OpenABM, which serves specifically as a platform to '
          'promote education and use of agent-based modeling\n'
          '**D.** Toward these ends, the organization will develop actions and projects to further these aims, '
          'including cyberinfrastructure development and maintenance, workshops and winter/summer schools, '
          'foster various mechanisms to promote sharing of research and educational material related to '
          'computational modeling in the social and ecological sciences.\n\n'
          '# Article II: Membership \n\n'
          '**A.** Membership is open to all persons who sign up to this website. Registered users can post materials '
          'to the website. Full members agree to the responsibilities and code of behavior and receive '
          'additional benefits and obligations as specified at the organizational website. \n'
          '**B.** Full members have the right to vote for composition of the executive board and are eligible '
          'to be candidates for the board (See Article III).\n'
          '**C.** Members can be expelled under exceptional conditions for repeated violations of the members rules, '
          'confirmed by a unanimous vote of the Board.\n\n'
          '# Article III: Composition of the Executive Board \n\n'
          '**A.** The board consists of six elected board members and additional ex-officio members '
          '(Principal Investigators on the main projects that fund this organization). Each board member will '
          'generally be responsible for a defined set of tasks related to management of the network. If a '
          'board member is both elected and qualified to serve as an ex officio member they still have only one '
          'vote, but are eligible for any rights which apply to either category of board membership.\n'
          '**B.** The board elects every year an elected member to serve as a chair.\n'
          '**C.** The board advises on the strategy and operations of the organizations beyond the current funded '
          'projects. The board can initiate and direct activities using the existing cyberinfrastructure. '
          'The principal responsibility of funded projects is held by the principal investigators.\n'
          '**D.** The board meets at least three times a year. Meetings need not be in person, but can be by audio '
          'or video teleconference.\n'
          '**E.** Decisions are made by majority vote of the board members.\n'
          '**F.** Board member terms are three years. Each year two board members rotate off the board and new '
          'members will be elected. Any other vacancy (due to resignation, incapability determined by two-thirds '
          'of the board) will be filled by the next annual election.\n\n'
          '# Article IV: Ex-officio Members \n\n'
          '**A.** Principal investigators of official projects supporting the CoMSES Net organization.\n'
          '**B.** Typical support of CoMSES Net includes direct financial support of the organization, '
          'administrative support in-kind or research activities that directly benefit CoMSES Net and its '
          'member organizations.\n'
          '**C.** Any member organization that believes it has met the criteria outlined in IV.A and IV.B can request '
          'to designate an ex-officio member to the board. This request must be approved by a simple majority '
          'of the current board.\n\n'
          '# Article V: Elections \n\n'
          '**A.** All Full CoMSES members are eligible to vote on elected members of the board.\n'
          '**B.** Elections shall take place in November/December of each year. Executive Board terms begin '
          'January 1st.'),
     )
     parent.add_child(instance=bylaws_page)
Exemplo n.º 4
0
 def build_standards_page(self, parent):
     standards_page = MarkdownPage(
         heading='Resources',
         slug='standards',
         title='Documentation Standards',
         description=
         ('Advancing the use of agent-based models in scholarly research demands rigorous standards in model '
          'code and experiment documentation. CoMSES Net supports open metadata and documentation standards '
          'including [codemeta](https://github.com/codemeta/codemeta), [DataCite](https://www.datacite.org/), '
          'and the [ODD protocol](https://doi.org/10.1016/j.ecolmodel.2010.08.019).'
          ),
         body=
         ('[The ODD Protocol](http://www.ufz.de/index.php?de=40429) was initially proposed by Volker Grimm '
          'et al. in 2006 with the following rationale: \n\n'
          '> Simulation models that describe autonomous individual organisms (individual based models, IBM) or '
          'agents (agent-based models, ABM) have become a widely used tool, not only in ecology, but also in '
          'many other disciplines dealing with complex systems made up of autonomous entities. However, there '
          'is no standard protocol for describing such simulation models, which can make them difficult to '
          'understand and to duplicate. '
          '<footer class="blockquote-footer">[(Grimm, V. et al., 2006, p.115)]'
          '(https://doi.org/10.1016/j.ecolmodel.2006.04.023)</footer> \n\n'
          'The ODD is organized around the three main components to be documented about a model: \n\n'
          '1. Overview\n'
          '2. Design concepts \n'
          '3. Details \n\n'
          'These components encompass seven sub-elements that must be documented in sufficient depth for the '
          'model&apos;s purpose and design to be clear and replicable for a third party: *Purpose, '
          'State Variables and Scales, Process Overview and Scheduling, Design Concepts, Initialization, '
          'Input, and Submodels*. \n\n'
          'In addition to the original 2006 publication, Grimm et al. have continued to publish updates '
          'to the protocol with examples of its application to research projects.\n\n'
          '- [The ODD Protocol: a review and first update](https://doi.org/10.1016/j.ecolmodel.2010.08.019)\n'
          '- [Using the ODD Protocol for Describing Three Agent-Based Social Simulation Models of '
          'Land-Use Change](http://jasss.soc.surrey.ac.uk/11/2/3.html)'))
     standards_page.add_breadcrumbs(self.SUBNAVIGATION_LINKS[0:4:3])
     standards_page.add_navigation_links(self.SUBNAVIGATION_LINKS)
     parent.add_child(instance=standards_page)
Exemplo n.º 5
0
 def build_education_page(self, parent):
     education_page = MarkdownPage(
         heading='Resources',
         slug='education',
         title='Educational Materials',
         description=
         ('A collection of tutorials, classroom / course materials, and educational content on agent '
          'based and computational modeling. If you have anything to add to this list, please '
          '[let us know](/about/contact/).'),
         body=
         ('## Books and other resources\n\n'
          '* [Agent-based and Individual-based Modeling: *A Practical Introduction* by Steven F. Railsback and Volker Grimm]'
          '(http://www.railsback-grimm-abm-book.com/) - A textbook on applying agent-based models to study complex systems, '
          'intended for upper-level undergraduates, graduate students, or self-instruction. \n'
          '* [Introduction to Agent-Based Modeling by Marco Janssen](https://www.gitbook.com/book/cbie/introduction-to-agent-based-modeling)'
          ' - An introductory undergraduate course on agent based modeling.\n'
          '* [Guide for Newcomers to Agent-Based Modeling in the Social Sciences by Robert Axelrod and Leigh Tesfatsion]'
          '(http://www2.econ.iastate.edu/tesfatsi/abmread.htm)\n'
          '* [CSDMS Educational Repository](http://csdms.colorado.edu/wiki/Education_portal) - the [Community '
          'Surface Dynamics Modeling System (CSDMS)](http://csdms.colorado.edu/wiki/About_CSDMS) is a diverse community of '
          'experts promoting good practices for the modeling of earth surface processes and surface dynamics models.\n'
          '* [Software and Data Carpentry](https://carpentries.org/) - the Software and Data Carpentries teach researchers '
          'foundational computational and data science skills through short, impactful workshops.\n'
          '* [CoMSES Net YouTube video channel](https://www.youtube.com/user/CoMSESNet)\n'
          '* [CoMSES Net Frequently Asked Questions on Agent Based Modeling](/about/faq/)\n\n'
          '## Classroom materials \n\n'
          '*Links coming soon*\n\n'
          '* Dawn Parker - "Spatial Agent-based Models of Human-Environment Interactions" \n'
          '* Bruce Edmonds - "Introduction to Agent-Based Modelling in NetLogo - A 2-Day Course" \n'
          '* Michael Barton - "Introduccion al Modelar de Agentes para la Arqueología" \n\n'
          '### [Cormas](http://cormas.cirad.fr/en/outil/outil.htm)\n\n'
          '> Cormas is a simulation platform based on the VisualWorks programming environment and SmallTalk.\n\n'
          '* [Cormas tutorials](http://cormas.cirad.fr/en/outil/classroom/)\n'
          '### [MASON](https://cs.gmu.edu/~eclab/projects/mason/)\n\n'
          '> MASON is a fast discrete-event multiagent simulation library core in Java, designed to be the foundation for large custom-purpose '
          'Java simulations, and also to provide more than enough functionality for many lightweight simulation needs. MASON contains both a '
          'model library and an optional suite of visualization tools in 2D and 3D.\n\n'
          '* [Online docs](https://cs.gmu.edu/~eclab/projects/mason/docs/)\n'
          '* [PDF Manual](https://cs.gmu.edu/~eclab/projects/mason/manual.pdf)\n\n'
          '### [NetLogo](http://ccl.northwestern.edu/netlogo/)\n\n'
          '> NetLogo is a free multi-agent programmable modeling environment originally authored by Uri Wilensky and developed at the '
          '[Center for Connected Learning and Computer-Based Modeling](http://ccl.northwestern.edu/).\n\n'
          '* [Official documentation: http://ccl.northwestern.edu/netlogo/docs/](http://ccl.northwestern.edu/netlogo/docs/)\n'
          '* [NetLogo Development Team Tutorial: Models](http://ccl.northwestern.edu/netlogo/docs/tutorial1.html)\n'
          '* [NetLogo Development Team Tutorial: Commands](http://ccl.northwestern.edu/netlogo/docs/tutorial2.html)\n'
          '* [NetLogo Development Team Tutorial: Procedures](http://ccl.northwestern.edu/netlogo/docs/tutorial3.html)\n'
          '* [NetLogo 6.0 Quick Guide by Luis Izquierdo](http://luis.izqui.org/resources/NetLogo-6-0-QuickGuide.pdf) - a printable reference sheet\n'
          '* [Introduction to NetLogo by René Doursat](http://doursat.free.fr/docs/CS790R_S05/CS790R_S05_Lecture_4_NetLogo.pdf)\n'
          '* [Additional Resources](http://ccl.northwestern.edu/netlogo/resources.shtml) - a collection of links from the NetLogo development team\n'
          '* [Manual de NetLogo en español](http://sites.google.com/site/manualnetlogo/) - Un manual de Netlogo en español que te permitirá '
          'familiarizarte con este lenguaje de programación de una forma muy sencilla, a través de pequeños programas-ejemplo.\n\n'
          '### [RePast](https://repast.github.io/index.html)\n\n'
          '> The Repast Suite is a family of advanced, free, and open source agent-based modeling and simulation platforms that have collectively '
          'been under continuous development for over 15 years.\n\n'
          '* [Official documentation: https://repast.github.io/docs.html](https://repast.github.io/docs.html)\n'
          '* [Repast 3 tutorials](http://repast.sourceforge.net/repast_3/tutorials.html)\n'
          '* [RepastHPC Tutorial](https://repast.github.io/hpc_tutorial/TOC.html)\n\n'
          ))
     education_page.add_breadcrumbs(self.SUBNAVIGATION_LINKS[0:5:4])
     education_page.add_navigation_links(self.SUBNAVIGATION_LINKS)
     parent.add_child(instance=education_page)
Exemplo n.º 6
0
    def handle(self, *args, **options):
        title = 'Open Code Badge'
        slug = slugify(title)
        open_code_page = MarkdownPage(title=title, slug=slug)
        resources_page = CategoryIndexPage.objects.get(slug='resources')
        try:
            open_code_page = MarkdownPage.objects.get(title=title, slug=slug)
            open_code_page.get_children().delete()
            open_code_page.refresh_from_db()
        except MarkdownPage.DoesNotExist:
            resources_page.add_child(instance=open_code_page)

        open_code_page.heading = 'Open Science = Open Code'
        open_code_page.description = DESCRIPTION
        open_code_page.body = CONTENT
        open_code_page.add_breadcrumbs((
            ('Resources', '/resources/'),
            ('Open Code Badge', f'/resources/{slug}'),
        ))
        revision = open_code_page.save_revision(user=User.objects.get(pk=3),
                                                submitted_for_moderation=False)
        revision.publish()
Exemplo n.º 7
0
    def handle(self, *args, **options):
        title = 'Trusted Digital Repositories'
        slug = slugify(title)
        repositories_page = MarkdownPage(title=title, slug=slug)
        resources_page = CategoryIndexPage.objects.get(slug='resources')
        try:
            repositories_page = MarkdownPage.objects.get(title=title,
                                                         slug=slug)
            repositories_page.get_children().delete()
            repositories_page.refresh_from_db()
        except MarkdownPage.DoesNotExist:
            resources_page.add_child(instance=repositories_page)

        repositories_page.heading = 'Trusted Digital Repositories'
        repositories_page.description = DESCRIPTION
        repositories_page.body = CONTENT
        repositories_page.add_breadcrumbs((
            ('Resources', '/resources/'),
            ('Trusted Repositories',
             '/resources/trusted-digital-repositories/'),
        ))
        revision = repositories_page.save_revision(
            user=User.objects.get(pk=3), submitted_for_moderation=False)
        revision.publish()