diff --git a/README_ecosystem_plugins.md b/README_ecosystem_plugins.md new file mode 100644 index 0000000..a6aef08 --- /dev/null +++ b/README_ecosystem_plugins.md @@ -0,0 +1,49 @@ +# Managing the ecosystem catalog + +A subset of this website is devoted to providing a catalog of software that +makes up the broader Open Free Energy ecosystem. This is intended to be a +central clearinghouse where users can find different modular tools that can be +plugged into an Open Free Energy workflow. This page documents that part of the +website. + +## Adding a new catalog entry + +External contributors are most likely to want to add a new catalog entry, +representing some useful code that they have created and wish to share. Adding +new entries is intended to be as easy as possible. + +Basically, all you need to do is fork and clone this repo, and add a new item +under the `_ecosystem/` directory. This will be a Markdown file with YAML +frontmatter. Copy the `_ecosystem/_defaults.md` file to get a template that +you can work from. + +Add that file in a branch on your fork, and make a pull request to have your +new entry added to the catalog! + +## Customizing ecosystem configuration + +The general idea here is that catalog entries represent different "categories" +of object, with the objects within a category being modular replacements for +each other. As an example, "protocol" is one of the categories for Open Free +Energy. + +Details of the ecosystem configuration are in the `_config.yaml` for the site. +In particular, custom configuration the ecosystem tools are under the +`ecosystem_catalog` top-level heading. This allows you to change, e.g., the +allowed categories. + +Some aspects of configuration are based on Jekyll's standard configuration +tools. In particular, note that `ecosystem` is one the Jekyll `collections`, +and note that we can set the default layout for ecosystem entries within the +standard `defaults` configuration heading. + +## Changing the presentation of catalog entries + +Catalog entries are shown in two different styles: + +1. Full-page mode, where a full web page is dedicated to each entry. This is + intended to provide sufficient details for a reader to learn more about the + entry. You can customize this mode in `_layouts/ecosystem-entry.html`. +2. Summary mode (cards), where a brief summary of each entry is provided, e.g., + as part of a list of other catalog entries. You can customize this mode in + `_includes/ecosystem-summary.html`. diff --git a/_config.yml b/_config.yml index 2ea8235..ff915d5 100644 --- a/_config.yml +++ b/_config.yml @@ -32,6 +32,21 @@ collections: projects: jobs: output: true + ecosystem: + output: true + +ecosystem_catalog: + collection: "ecosystem" + categories: + # name is the name used in YAML; label is the natural language label + - name: "atommappers" + label: "Atom Mappers" + - name: "scorers" + label: "Mapping Scorers" + - name: "networkplanners" + label: "Network Planners" + - name: "protocols" + label: "Protocols" paginate: 10 paginate_path: "/news/:num/" @@ -60,6 +75,11 @@ defaults: type: "jobs" values: layout: "job" + - scope: + path: "" + type: "ecosystem" + values: + layout: "ecosystem-entry" - scope: path: "" values: diff --git a/_ecosystem/_default.md b/_ecosystem/_default.md new file mode 100644 index 0000000..ded0639 --- /dev/null +++ b/_ecosystem/_default.md @@ -0,0 +1,47 @@ +--- +name: +developers: +source: +license: +### SELECT THE TYPES OF PLUGINS YOU PROVIDE +# atommappers: +# - name: +# description: >- +# +# - name: +# description: >- +# +# networkplanners: +# - name: +# description: >- +# +# - name: +# description: >- +# +# scorers: +# - name: +# description: >- +# +# - name: +# description: >- +# +# protocols: +# - name: +# description: >- +# +# - name: +# description: >- +# + +### FOLLOWING ARE OPTIONAL +# docs: +# contact: (not used) +# conda-forge: +# pypi: +# publications: +# - +# thumbnail: (not used) +# src: +# alt: +--- + diff --git a/_ecosystem/example.md b/_ecosystem/example.md new file mode 100644 index 0000000..8bcbb6e --- /dev/null +++ b/_ecosystem/example.md @@ -0,0 +1,12 @@ +--- +title: An example plugin +developers: Those cool cats at OpenFE +source: https://github.com/openfreeenergy/openfreeenergy.github.io +license: MIT +atommappers: + - name: Example + description: >- + An awesome OpenFE plugin +--- + +Now let me tell you all the awesome details about this plugin. diff --git a/_ecosystem/example2.md b/_ecosystem/example2.md new file mode 100644 index 0000000..e0208ff --- /dev/null +++ b/_ecosystem/example2.md @@ -0,0 +1,11 @@ +--- +title: Another example plugin +developers: more cool cats at OpenFE +source: https://github.com/openfreeenergy/openfreeenergy.github.io +license: MIT +protocols: + - name: Another example plugin + description: >- + A protocol plugin +--- + diff --git a/_ecosystem/kartograf.md b/_ecosystem/kartograf.md new file mode 100644 index 0000000..582ce56 --- /dev/null +++ b/_ecosystem/kartograf.md @@ -0,0 +1,15 @@ +--- +title: Kartograf +developers: Ben Ries and other OpenFE people +source: https://github.com/openfreeenergy/kartograf +license: MIT +atommappers: + - name: KartografAtomMapper + description: >- + Kartograf is a 3D-first atom mapper. This allows it to avoid some + problems, particularly those around chirality, that can occur with 2D + mappers (e.g., those focused on common substructure.) Ben can expand this + a little if he wants. +--- + +This is where Ben should write a lot more detail about Kartograf. diff --git a/_ecosystem/lomap.md b/_ecosystem/lomap.md new file mode 100644 index 0000000..7bbaf08 --- /dev/null +++ b/_ecosystem/lomap.md @@ -0,0 +1,42 @@ +--- +title: LOMAP +developers: Mobley Lab and Open Free Energy +source: https://github.com/openfreeenergy/Lomap +conda-forge: lomap2 +license: MIT +atommappers: + - name: LomapAtomMapper + description: >- + The LOMAP atom mapper is based on a maximum common substructure approach + to detemine the mapping between two ligands. +networkplanners: + - name: LomapNetworkPlanner + description: >- + lorem ipsum +--- + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor +incididunt ut labore et dolore magna aliqua. Elit duis tristique sollicitudin +nibh sit amet. Vitae auctor eu augue ut lectus. Sit amet dictum sit amet justo +donec enim diam. Id venenatis a condimentum vitae sapien pellentesque habitant +morbi. Ut eu sem integer vitae justo eget magna fermentum iaculis. Vel orci +porta non pulvinar neque laoreet suspendisse interdum. Curabitur vitae nunc sed +velit. Id aliquet risus feugiat in ante metus dictum at. Venenatis cras sed +felis eget velit aliquet sagittis id. Nibh sed pulvinar proin gravida +hendrerit. Eget nullam non nisi est. Viverra maecenas accumsan lacus vel +facilisis volutpat est velit egestas. Lectus vestibulum mattis ullamcorper +velit sed. Pellentesque elit ullamcorper dignissim cras tincidunt lobortis +feugiat. Dolor sed viverra ipsum nunc aliquet bibendum enim. + +Morbi non arcu risus quis varius quam quisque id. Dui sapien eget mi proin sed. +Nunc vel risus commodo viverra maecenas accumsan lacus. Condimentum mattis +pellentesque id nibh tortor id aliquet lectus. In metus vulputate eu +scelerisque felis imperdiet proin. Id velit ut tortor pretium viverra +suspendisse potenti. Ut pharetra sit amet aliquam id. In fermentum et +sollicitudin ac orci phasellus egestas tellus. Ultricies mi eget mauris +pharetra. Nunc id cursus metus aliquam. Nunc non blandit massa enim nec dui +nunc mattis. Mattis aliquam faucibus purus in massa tempor nec feugiat nisl. +Lacus sed turpis tincidunt id aliquet risus feugiat in ante. Nisl purus in +mollis nunc sed. In hac habitasse platea dictumst quisque sagittis. Neque +ornare aenean euismod elementum nisi quis eleifend. Vel quam elementum pulvinar +etiam non quam lacus suspendisse. diff --git a/_includes/ecosystem-summary.html b/_includes/ecosystem-summary.html new file mode 100644 index 0000000..971ff97 --- /dev/null +++ b/_includes/ecosystem-summary.html @@ -0,0 +1,29 @@ +{% comment %} +This is the include file for a catalog entry summary card. Style can be done +in SASS/CSS. + +This `include` takes `package` and `plugin` arguments. +{% endcomment %} + +
+

+ {{ include.plugin.name }} +

+
+ {{ include.project.developers }} +
+ + Part of + {{ include.project.title }} + + +
+
+ {{ include.plugin.description | markdownify }} +
+ +
diff --git a/_layouts/ecosystem-entry.html b/_layouts/ecosystem-entry.html new file mode 100644 index 0000000..4c4c54f --- /dev/null +++ b/_layouts/ecosystem-entry.html @@ -0,0 +1,77 @@ +--- +layout: page +--- + +
+ + + +
    + {% for category in site.ecosystem_catalog.categories %} + {% if page[category.name] %} +
  • {{ category.label | upcase }}
  • + {% endif %} + {% endfor %} +
+ +{{ page.content | markdownify }} + +
diff --git a/_sass/customizations.scss b/_sass/customizations.scss index 68235ec..924e22d 100644 --- a/_sass/customizations.scss +++ b/_sass/customizations.scss @@ -105,3 +105,128 @@ code { } +// for the ecosystem summary entries (e.g., ecosystem.html) +ul.ecosystemSummaryList { + display: flex; + flex-flow: row wrap; + gap: 10px; +} + +li.ecosystemSummaryItem { + display: inline-block; + flex: 0 0 45%; + vertical-align: top; + border: 1px solid var(--other-blue); + padding: 1ex; + box-shadow: 2px 2px 2px var(--beastly-grey); +} + +.ecosystemSummary { + float: left; + margin-bottom: 0px; + margin-block-start: 0px; + height: 100%; + font-size: 1em; +} + +.ecosystemSummary p { + margin-bottom: 10px; + line-height: normal; +} + +.ecosystemSummary address { + font-size: 0.5em; + font-weight: 300; + margin-bottom: 0em; +} + +.part-of-project { + font-style: normal; +} + +.ecosystemSummary h1 { + font-weight: 600; + font-size: 1em; + line-height: 1.4em; + margin-top: 5px; + margin-bottom: 5px; +} + +.ecosystemSummarySummary p { + font-size: 0.8em; + font-weight: 300; + line-height: 1.1em; +} + +ul.ecosystemSummaryExtras { + font-size: 0.5em; + font-weight: 300; +} + +ul.ecosystemSummaryExtras li { + display: inline-block; +} + +// switch to 1-column layout for mobile +@media screen and (max-width: 639px) { + ul.ecosystemSummaryList { + flex-flow: column nowrap; + } +} + + +// for the ecosystem entries (individual pages) +.ecosystemEntry { + overflow: auto; +} + +.ecosystemDetailsBox { + width: 45%; + float: right; + color: var(--beastly-grey); + border: 1px solid var(--other-blue); + padding: 1ex; + margin: 1ex; +} + +.ecosystemDetailsBox dd.ecosystemEntryLink { + // if URL for source is too long, use ellipsis + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.ecosystemDetailsBox ul { + margin-block-start: 0em; + margin-block-end: 0em; + margin-top: 0em; +} + +.ecosystemEntryInstallation ul { + list-style-type: ""; + padding: 0ex; +} + +.ecosystemEntryInstallation kbd { + margin-bottom: 0em; +} + +.ecosystemDetailsBox li { + font-size: 1em; +} + +.ecosystemDetailsBox pre { + margin-top: 0em; +} + +.ecosystemDetailsBox p { + font-size: 1.0em; +} + +@media screen and (max-width: 639px) { + .ecosystemDetailsBox { + width: 90%; + float: none; + } + +} diff --git a/ecosystem.html b/ecosystem.html new file mode 100644 index 0000000..77263ab --- /dev/null +++ b/ecosystem.html @@ -0,0 +1,29 @@ +--- +title: Ecosystem +permalink: /ecosystem/ +description: >- + Other tools in the OpenFE ecosystem. +--- +{% comment %} +I don't exactly love this setup, because it scales as n_categories * +n_ecosystem_projects. However, AFAICT, Jekyll/liquid doesn't have proper +mappings. +{% endcomment %} + +{% for category in site.ecosystem_catalog.categories %} +

{{ category.label }}

+ {% comment %} + Loop as list (as opposed to creating a structure of divs) because that's + better for screenreaders. + {% endcomment %} +
    + {% for project in site.ecosystem %} + {% assign cat_plugins = project[category.name] %} + {% for plugin in cat_plugins %} +
  • + {% include ecosystem-summary.html plugin=plugin project=project %} +
  • + {% endfor %} + {% endfor %} +
+{% endfor %}