diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cee9e12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Bundler cache +.bundle +vendor +Gemfile.lock + +# Jekyll cache +.jekyll-cache +_site + +# RubyGems +*.gem + +# NPM dependencies +node_modules +package-lock.json + +# IDE configurations +.idea + +# Misc +assets/js/dist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..58062c5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "assets/lib"] + path = assets/lib + url = https://github.com/cotes2020/chirpy-static-assets.git diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..086a5c9 --- /dev/null +++ b/404.html @@ -0,0 +1,25 @@ +--- +permalink: /404.html +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..d9d2e6b --- /dev/null +++ b/Gemfile @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "jekyll-theme-chirpy", "~> 6.5", ">= 6.5.3" + +group :test do + gem "html-proofer", "~> 4.4" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", ">= 1", "< 3" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..9038507 --- /dev/null +++ b/_config.yml @@ -0,0 +1,212 @@ +# The Site Configuration + +# Import the theme +theme: jekyll-theme-chirpy + +# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm +# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed, +# otherwise, the layout language will use the default value of 'en'. +lang: en + +# Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker +timezone: + +# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md +# ↓ -------------------------- + +title: Alchemistry.org # the main title + +tagline: A place to learn, share, and discuss Computational Free Energy Calculations # it will display as the sub-title + +description: >- # used by seo meta and the atom feed + Modern alchemy, done computationally, can turn protein structural information into the + "gold" of binding free energies and other information. In these pages, learn how it + works, and how to do it yourself. + +# Fill in the protocol & hostname for your site. +# e.g. 'https://username.github.io', note that it does not end with a '/'. +url: "https://alchemistry.org" + +github: + username: github_username # change to your github username + +twitter: + username: twitter_username # change to your twitter username + +social: + # Change to your full name. + # It will be displayed as the default author of the posts and the copyright owner in the Footer + name: The Alchemistry.org Team + email: example@domain.com # change to your email address + links: + # The first element serves as the copyright owner's link + - https://twitter.com/username # change to your twitter homepage + - https://github.com/username # change to your github homepage + # Uncomment below to add more social links + # - https://www.facebook.com/username + # - https://www.linkedin.com/in/username + +google_site_verification: # fill in to your verification string + +# ↑ -------------------------- +# The end of `jekyll-seo-tag` settings + +google_analytics: + id: # fill in your Google Analytics ID + +goatcounter: + id: # fill in your Goatcounter ID + +# Prefer color scheme setting. +# +# Note: Keep empty will follow the system prefer color by default, +# and there will be a toggle to switch the theme between dark and light +# on the bottom left of the sidebar. +# +# Available options: +# +# light - Use the light color scheme +# dark - Use the dark color scheme +# +theme_mode: # [light | dark] + +# The CDN endpoint for images. +# Notice that once it is assigned, the CDN url +# will be added to all image (site avatar & posts' images) paths starting with '/' +# +# e.g. 'https://cdn.com' +img_cdn: + +# the avatar on sidebar, support local or CORS resources +avatar: /assets/images/staurosporine-hydrated-1.png + +# The URL of the site-wide social preview image used in SEO `og:image` meta tag. +# It can be overridden by a customized `page.image` in front matter. +social_preview_image: # string, local or CORS resources + +# boolean type, the global switch for TOC in posts. +toc: true + +comments: + active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable + # The active options are as follows: + disqus: + shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname + # utterances settings › https://utteranc.es/ + utterances: + repo: # / + issue_term: # < url | pathname | title | ...> + # Giscus options › https://giscus.app + giscus: + repo: # / + repo_id: + category: + category_id: + mapping: # optional, default to 'pathname' + input_position: # optional, default to 'bottom' + lang: # optional, default to the value of `site.lang` + reactions_enabled: # optional, default to the value of `1` + +# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets +assets: + self_host: + enabled: # boolean, keep empty means false + # specify the Jekyll environment, empty means both + # only works if `assets.self_host.enabled` is 'true' + env: # [development | production] + +pwa: + enabled: true # the option for PWA feature (installable) + cache: + enabled: true # the option for PWA offline cache + # Paths defined here will be excluded from the PWA cache. + # Usually its value is the `baseurl` of another website that + # shares the same domain name as the current website. + deny_paths: + # - "/example" # URLs match `/example/*` will not be cached by the PWA + +paginate: 10 + +# The base URL of your site +baseurl: "" + +# ------------ The following options are not recommended to be modified ------------------ + +kramdown: + syntax_highlighter: rouge + syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options + css_class: highlight + # default_lang: console + span: + line_numbers: false + block: + line_numbers: true + start_line: 1 + +collections: + tabs: + output: true + sort_by: order + lessons: + output: true + sort_by: order + examples: + output: true + sort_by: order + +defaults: + - scope: + path: "" # An empty string here means all files in the project + type: posts + values: + layout: post + comments: true # Enable comments in posts. + toc: true # Display TOC column in posts. + # DO NOT modify the following parameter unless you are confident enough + # to update the code of all other post links in this project. + permalink: /posts/:title/ + - scope: + path: _drafts + values: + comments: false + - scope: + path: "" + type: tabs # see `site.collections` + values: + layout: page + permalink: /:title/ + - scope: + path: assets/js/dist + values: + swcache: true + +sass: + style: compressed + +compress_html: + clippings: all + comments: all + endings: all + profile: false + blanklines: false + ignore: + envs: [development] + +exclude: + - "*.gem" + - "*.gemspec" + - docs + - tools + - README.md + - LICENSE + - rollup.config.js + - package*.json + +jekyll-archives: + enabled: [categories, tags] + layouts: + category: category + tag: tag + permalinks: + tag: /tags/:name/ + category: /categories/:name/ diff --git a/_examples/ExamplesA.md b/_examples/ExamplesA.md new file mode 100644 index 0000000..2e5689a --- /dev/null +++ b/_examples/ExamplesA.md @@ -0,0 +1,10 @@ +--- +layout: example +order: 1 +title: Example Free Energy Calculations +summary: A look into practical examples without software-specific details. We outline the steps needed for realistic free energy problem, detailing problems you can expect to encounter, and how to analyze the data to get a robust free energy difference. +--- + +I am the first Example + +# Behold my example form! diff --git a/_includes/post-like-gen.html b/_includes/post-like-gen.html new file mode 100644 index 0000000..ae63576 --- /dev/null +++ b/_includes/post-like-gen.html @@ -0,0 +1,54 @@ +
+ {% for iterator in site.[include.content_type] %} +
+ + {% assign card_body_col = '12' %} + + {% if iterator.image %} + {% assign src = iterator.image.path | default: iterator.image %} + {% unless src contains '//' %} + {% assign src = iterator.img_path | append: '/' | append: src | replace: '//', '/' %} + {% endunless %} + + {% assign alt = iterator.image.alt | xml_escape | default: 'Preview Image' %} + + {% assign lqip = null %} + + {% if iterator.image.lqip %} + {% capture lqip %}lqip="{{ iterator.image.lqip }}"{% endcapture %} + {% endif %} + +
+ {{ alt }} +
+ + {% assign card_body_col = '7' %} + {% endif %} + +
+
+

{{ iterator.title }}

+ +
+

+ + {% assign summary = iterator.summary | strip_newlines %} + {% if summary != "" %} + {% include no-linenos.html content=summary %} + {{ summary | markdownify | strip_html | escape }} + {% else % } + {% include no-linenos.html content=iterator.content %} + {{ iterator.content | markdownify | strip_html | truncate: 200 | escape }} + {% endif %} +

+
+ +
+ +
+
+
+ {% endfor %} +
+ + diff --git a/_layouts/example.html b/_layouts/example.html new file mode 100644 index 0000000..6840e3f --- /dev/null +++ b/_layouts/example.html @@ -0,0 +1,141 @@ +--- +layout: default +refactor: true +panel_includes: + - toc +tail_includes: + - related-posts + - post-nav + - comments +--- + + + +{% include lang.html %} + +
+
+

{{ page.title }}

+ + + +
+ +
+ {{ content }} +
+ +
+ + {% if page.categories.size > 0 %} + + {% endif %} + + + {% if page.tags.size > 0 %} + + {% endif %} + +
+
+ {% if site.data.locales[lang].copyright.license.template %} + {% capture _replacement %} + + {{ site.data.locales[lang].copyright.license.name }} + + {% endcapture %} + + {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }} + {% endif %} +
+ + {% include post-sharing.html lang=lang %} +
+ +
+ +
diff --git a/_layouts/examples.html b/_layouts/examples.html new file mode 100644 index 0000000..6043a88 --- /dev/null +++ b/_layouts/examples.html @@ -0,0 +1,6 @@ +--- +layout: page +# All the Examples. +--- + +{% include post-like-gen.html content_type="examples" %} diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 0000000..949d999 --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,143 @@ +--- +layout: default +refactor: false +--- + +{% include lang.html %} + +
+ + + +
+ {% capture header %}{% include_relative homepage/header.md %}{% endcapture %} + + {{ header | markdownify }} +
+
+
+ + +
+
+ {% capture lesson_and_tut %}{% include_relative homepage/lessons_and_tutorials.md %}{% endcapture %} + + {{ lesson_and_tut | markdownify }} + {% include_relative homepage/lessons_and_tutorials.html %} +
+
+ +{% assign pinned = site.posts | where: 'pin', 'true' %} +{% assign default = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %} + +{% assign posts = '' | split: '' %} + + + +{% assign offset = paginator.page | minus: 1 | times: paginator.per_page %} +{% assign pinned_num = pinned.size | minus: offset %} + +{% if pinned_num > 0 %} + {% for i in (offset..pinned.size) limit: pinned_num %} + {% assign posts = posts | push: pinned[i] %} + {% endfor %} +{% else %} + {% assign pinned_num = 0 %} +{% endif %} + + + +{% assign default_beg = offset | minus: pinned.size %} + +{% if default_beg < 0 %} + {% assign default_beg = 0 %} +{% endif %} + +{% assign default_num = paginator.posts | size | minus: pinned_num %} +{% assign default_end = default_beg | plus: default_num | minus: 1 %} + +{% if default_num > 0 %} + {% for i in (default_beg..default_end) %} + {% assign posts = posts | push: default[i] %} + {% endfor %} +{% endif %} + +{% assign about = site.pages | where: 'name','index.md' %} +{{about}} + +
+ {% for post in posts %} +
+ + {% assign card_body_col = '12' %} + + {% if post.image %} + {% assign src = post.image.path | default: post.image %} + {% unless src contains '//' %} + {% assign src = post.img_path | append: '/' | append: src | replace: '//', '/' %} + {% endunless %} + + {% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %} + + {% assign lqip = null %} + + {% if post.image.lqip %} + {% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %} + {% endif %} + +
+ {{ alt }} +
+ + {% assign card_body_col = '7' %} + {% endif %} + +
+
+

{{ post.title }}

+ +
+

+ {% include no-linenos.html content=post.content %} + {{ content | markdownify | strip_html | truncate: 200 | escape }} +

+
+ + + +
+ +
+
+
+ {% endfor %} +
+ + +{% if paginator.total_pages > 1 %} + {% include post-paginator.html %} +{% endif %} diff --git a/_layouts/lesson.html b/_layouts/lesson.html new file mode 100644 index 0000000..6840e3f --- /dev/null +++ b/_layouts/lesson.html @@ -0,0 +1,141 @@ +--- +layout: default +refactor: true +panel_includes: + - toc +tail_includes: + - related-posts + - post-nav + - comments +--- + + + +{% include lang.html %} + +
+
+

{{ page.title }}

+ + + +
+ +
+ {{ content }} +
+ +
+ + {% if page.categories.size > 0 %} + + {% endif %} + + + {% if page.tags.size > 0 %} + + {% endif %} + +
+
+ {% if site.data.locales[lang].copyright.license.template %} + {% capture _replacement %} + + {{ site.data.locales[lang].copyright.license.name }} + + {% endcapture %} + + {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }} + {% endif %} +
+ + {% include post-sharing.html lang=lang %} +
+ +
+ +
diff --git a/_layouts/lessons.html b/_layouts/lessons.html new file mode 100644 index 0000000..0fd7482 --- /dev/null +++ b/_layouts/lessons.html @@ -0,0 +1,6 @@ +--- +layout: page +# All the Lessons. +--- + +{% include post-like-gen.html content_type="lessons" %} diff --git a/_lessons/FEFundamentals.md b/_lessons/FEFundamentals.md new file mode 100644 index 0000000..089bd00 --- /dev/null +++ b/_lessons/FEFundamentals.md @@ -0,0 +1,11 @@ +--- +layout: lesson +order: 1 +title: Free Energy Fundamentals +image: /assets/images/Transformation_small.png +summary: Learn the methods and techniques behind free energy methods with in-depth coverage of free energy definitions and topics. +--- + +I am the first lesson + +# Shoop da woop diff --git a/_tabs/about.md b/_tabs/about.md new file mode 100644 index 0000000..ecfecb3 --- /dev/null +++ b/_tabs/about.md @@ -0,0 +1,10 @@ +--- +# the default layout is 'page' +icon: fas fa-info-circle +order: 4 +--- + +> Add Markdown syntax content to file `_tabs/about.md`{: .filepath } and it will show up on this page. +{: .prompt-tip } + +Edit this file to change the about tabs diff --git a/_tabs/examples.md b/_tabs/examples.md new file mode 100644 index 0000000..d071954 --- /dev/null +++ b/_tabs/examples.md @@ -0,0 +1,5 @@ +--- +layout: examples +icon: fas fa-puzzle-piece +order: 2 +--- diff --git a/_tabs/lessons.md b/_tabs/lessons.md new file mode 100644 index 0000000..8bc000f --- /dev/null +++ b/_tabs/lessons.md @@ -0,0 +1,5 @@ +--- +layout: lessons +icon: fas fa-school +order: 1 +--- diff --git a/assets/css/jekyll-theme-chirpy.scss b/assets/css/jekyll-theme-chirpy.scss new file mode 100644 index 0000000..534a196 --- /dev/null +++ b/assets/css/jekyll-theme-chirpy.scss @@ -0,0 +1,8 @@ +--- +--- + +@import 'main'; + +/* append your custom style below */ + +@import 'refactor-edits'; diff --git a/assets/css/refactor-edits.scss b/assets/css/refactor-edits.scss new file mode 100644 index 0000000..575360a --- /dev/null +++ b/assets/css/refactor-edits.scss @@ -0,0 +1,31 @@ +// A series of changes to better lock in the header image + +.preview-img { + aspect-ratio: 40 / 21; + width: 100%; + height: 100%; + overflow: hidden; + + @extend %rounded; + + &:not(.no-bg) { + background: var(--img-bg); + } + + img { + height: 100%; + -o-object-fit: contain; + object-fit: contain; + + @extend %rounded; + + @at-root #post-list & { + width: 100%; + } + } +} + +// Allows a box with only an image to not have empty fill border +.contain-images .preview-img { + display: contents; +} diff --git a/assets/images/Alchemistry.jpg b/assets/images/Alchemistry.jpg new file mode 100644 index 0000000..b8b668f Binary files /dev/null and b/assets/images/Alchemistry.jpg differ diff --git a/assets/images/Transformation_small.png b/assets/images/Transformation_small.png new file mode 100644 index 0000000..f37bb44 Binary files /dev/null and b/assets/images/Transformation_small.png differ diff --git a/assets/images/staurosporine-hydrated-1.png b/assets/images/staurosporine-hydrated-1.png new file mode 100644 index 0000000..8c3e0e1 Binary files /dev/null and b/assets/images/staurosporine-hydrated-1.png differ diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..e0e5c1a Binary files /dev/null and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-256x256.png b/assets/img/favicons/android-chrome-256x256.png new file mode 100644 index 0000000..198d48e Binary files /dev/null and b/assets/img/favicons/android-chrome-256x256.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png new file mode 100644 index 0000000..8278c2c Binary files /dev/null and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png new file mode 100644 index 0000000..93ea536 Binary files /dev/null and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png new file mode 100644 index 0000000..d0d82cc Binary files /dev/null and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico new file mode 100644 index 0000000..8d5905e Binary files /dev/null and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png new file mode 100644 index 0000000..33a6226 Binary files /dev/null and b/assets/img/favicons/mstile-150x150.png differ diff --git a/homepage/header.md b/homepage/header.md new file mode 100644 index 0000000..396b160 --- /dev/null +++ b/homepage/header.md @@ -0,0 +1,7 @@ +![Base alchemisty image](/assets/images/Alchemistry.jpg) + +# What is Alchemistry? +Alchemical free energy calculations employ unphysical ("alchemical") intermediates to estimate the free energies of +various physical processes. Such process include ligand binding to a protein receptor, the transfer of a small molecule +from gas to water, or the free energy of a mutation of a side chain. This approach provides not only a quantitative and +rigorous method for computing free energies, but often provides insight into the dominant interactions driving binding. diff --git a/homepage/lessons_and_tutorials.html b/homepage/lessons_and_tutorials.html new file mode 100644 index 0000000..4b9416d --- /dev/null +++ b/homepage/lessons_and_tutorials.html @@ -0,0 +1,5 @@ +

Free Energy Fundamentals and Lessons

+{% include post-like-gen.html content_type="lessons" %} + +

Tutorials and External Resources

+{% include post-like-gen.html content_type="examples" %} diff --git a/homepage/lessons_and_tutorials.md b/homepage/lessons_and_tutorials.md new file mode 100644 index 0000000..5028f78 --- /dev/null +++ b/homepage/lessons_and_tutorials.md @@ -0,0 +1,4 @@ +# Getting Started with Free Energy Methods + +This site is designed to both give novices best practices information about how to perform free energy calculations, +and to provide an ongoing reference for the current state of research into methods for calculating free energies. diff --git a/index.html b/index.html new file mode 100644 index 0000000..1357b08 --- /dev/null +++ b/index.html @@ -0,0 +1,4 @@ +--- +layout: home +# Index page +---