diff --git a/.circleci/config.yml b/.circleci/config.yml
index 95869ec9..02c612fa 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,96 +1,33 @@
-# Ruby CircleCI 2.0 configuration file
-#
-# Check https://circleci.com/docs/2.0/language-ruby/ for more details
-#
-version: 2
+version: 2.1
jobs:
- build:
+ build_website:
docker:
- # specify the version you desire here
- - image: cimg/ruby:2.5
- environment:
- BUNDLE_PATH: ~/vendor/bundle
-
- working_directory: ~/repo
-
+ - image: cimg/node:lts
steps:
- checkout
- run:
- name: a merge PR
- command: |
- if [[ -n "${CIRCLE_PR_NUMBER}" ]]; then
- git fetch origin +refs/pull/$CIRCLE_PR_NUMBER/merge:pr/$CIRCLE_PR_NUMBER/merge
- git checkout -qf pr/$CIRCLE_PR_NUMBER/merge
- fi
-
- - run:
- name: fetch submodules
- command: git submodule init && git submodule update
-
- # Download and cache dependencies
- - restore_cache:
- keys:
- - rubygems-v1-latest
-
- - run:
- name: install dependencies
- command: bundle check || bundle install --jobs=4 --retry=3
-
- - run:
- name: Jekyll build
- command: bundle exec jekyll build -d html 2> std.err
-
- - run:
- name: Check Jekyll build
- command: |
- cat std.err
- exit $(wc -l std.err | awk '{print $1}')
-
- - run:
- name: HTMLProofer tests
- command: |
- bundle exec htmlproofer ./html \
- --allow-hash-href \
- --check-html \
- --disable-external \
- --file-ignore "/.+\/gsoc\/display\/partials.+/"
- # Ignores the path for the angular magic
-
+ name: Install dependencies
+ command: npm ci
- run:
- name: HTMLProofer with external
- command: |
- if [ "${CIRCLE_BRANCH}" = "main" ]; then
- bundle exec htmlproofer ./html \
- --allow-hash-href \
- --check-html \
- --file-ignore "/.+\/gsoc\/display\/partials.+/","/.+\/gsoc\/gsoc201[5-9].+/","/.+\/html/projects/201[5-9].+/","/.+\/gsoc\/gsoc202[0-2].+/","/.+\/html/projects/202[0-2].+/" \
- --http-status-ignore 302
- # Ignore old ideas pages and ssl certificates that error.
- fi
-
-
+ name: Build site
+ command: npm run build
- run:
- name: Jekyll re-build for local
+ name: Patch asset paths for artifact viewer
+ # Astro emits processed assets at absolute /_astro/ paths. In CircleCI's
+ # artifact viewer these must be prefixed with the full artifact URL path.
+ # Navigation links and CSS use relative paths (fromSiteRoot) so they
+ # already resolve correctly and need no changes.
command: |
- echo "url: https://output.circle-artifacts.com" > circle.yml
- bundle exec jekyll build -d html -b "/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/0/html" --config _config.yml,circle.yml
- find ./html/ -type f -iname '*html' | xargs -I{} sed -i \
- -e 's|href="\(\.\/.*\/\)"|href="\1index.html"|g' \
- -e '/0\/html/ s|href="\(\/.*\/\)"|href="\1index.html"|g' {}
- # Replace pages ending on `/` from our site to direct to index.html
-
-
- - run:
- name: "Built documentation is available at:"
- command: DOCS_URL="${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/html/index.html"; echo $DOCS_URL
-
-
- - save_cache:
- paths:
- - ~/vendor/bundle
- key: rubygems-v1-latest
-
- # collect reports
+ node scripts/circleci-preview.mjs \
+ "/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/html"
- store_artifacts:
- path: ~/repo/html
+ path: html
destination: html
+ - run:
+ name: "Preview URL"
+ command: echo "https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/html/index.html"
+
+workflows:
+ preview_website:
+ jobs:
+ - build_website
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..3a626c3a
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: monthly
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..80c994ce
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,118 @@
+name: CI
+
+on:
+ pull_request:
+ push:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ci-${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ # --- parallel quality checks ---
+
+ format:
+ name: Formatting
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: npm
+ - run: npm ci
+ - name: Check formatting
+ run: npm run format:check
+
+ lint:
+ name: Lint
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: npm
+ - run: npm ci
+ - name: Lint source
+ run: npm run lint -- --max-warnings=0
+ - name: Lint Markdown
+ run: npm run lint:md
+
+ typecheck:
+ name: Type check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: npm
+ - run: npm ci
+ - name: Astro type check
+ run: npm run astro:check
+
+ test:
+ name: Unit tests
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: npm
+ - run: npm ci
+ - name: Run unit tests
+ run: npm test
+
+ # --- build (runs after all quality checks pass) ---
+
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+ needs: [format, lint, typecheck, test]
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: npm
+ - run: npm ci
+ - name: Build site
+ run: npm run build
+ - name: Upload site artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: site
+ path: html/
+ retention-days: 1
+
+ # --- link checks (share the single build artifact) ---
+
+ linkcheck:
+ name: Link check (${{ matrix.mode }})
+ runs-on: ubuntu-latest
+ needs: build
+ strategy:
+ fail-fast: false
+ matrix:
+ mode:
+ - internal
+ - external
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: lts/*
+ cache: npm
+ - run: npm ci
+ - name: Download site artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: site
+ path: html/
+ - name: Run link checks
+ run: npm run linkcheck:${{ matrix.mode }}
diff --git a/.gitignore b/.gitignore
index b2db9248..13f4b674 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,10 @@
-*~
_site/
-.sass-cache/
-Gemfile.lock
-vendor/
+.astro/
.bundle
.history
+.sass-cache/
+*~
+dist/
+html/
+node_modules/
+vendor/
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index c4c4ea9c..00000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "_sass/bootstrap-sass-3.3.7"]
- path = _sass/bootstrap-sass-3.3.7
- url = https://github.com/twbs/bootstrap-sass.git
diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc
new file mode 100644
index 00000000..fd81fe83
--- /dev/null
+++ b/.markdownlint-cli2.jsonc
@@ -0,0 +1,4 @@
+{
+ "globs": ["**/*.{md,mdx}"],
+ "ignores": ["**/node_modules/**", "**/html/**", "**/.history/**"],
+}
diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 00000000..6bb69e89
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,11 @@
+{
+ "MD013": false,
+ "MD033": false,
+ "MD041": false,
+ "MD024": {
+ "siblings_only": true
+ },
+ "MD025": {
+ "front_matter_title": ""
+ }
+}
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..5ccff1a6
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+html/
diff --git a/.prettierrc.cjs b/.prettierrc.cjs
new file mode 100644
index 00000000..db37c613
--- /dev/null
+++ b/.prettierrc.cjs
@@ -0,0 +1,11 @@
+module.exports = {
+ plugins: ["prettier-plugin-astro"],
+ overrides: [
+ {
+ files: "*.astro",
+ options: {
+ parser: "astro",
+ },
+ },
+ ],
+};
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..7f3ddb4d
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,174 @@
+# Contributing to openastronomy.github.io
+
+This document captures the conventions used in this codebase. When adding or reviewing code, use these rules as the benchmark.
+
+---
+
+## Code style
+
+### Naming
+
+| Context | Convention | Example |
+| --------------------------------------------- | ----------------------------------------------------------- | --------------------------------------- |
+| JavaScript/TypeScript variables and functions | camelCase | `getPostSlug`, `seasonKey` |
+| TypeScript types and interfaces | PascalCase | `ProjectData`, `MemberLink` |
+| Astro component files | PascalCase | `MemberCard.astro`, `ProjectCard.astro` |
+| CSS class names | kebab-case | `project-card`, `member-logo` |
+| Constants that are never reassigned | UPPER_SNAKE_CASE only when a regex or truly global constant | `PROTOCOL_RE` |
+
+### Function length
+
+- Aim for **≤ 40 lines** per function.
+- If a function grows beyond that, look for a named helper to extract.
+- Long functions in `scripts/` are acceptable when they represent a single sequential workflow (e.g., the link-check crawl loop).
+
+---
+
+## Documentation
+
+### `src/lib/` (`.ts` and `.js` files)
+
+Every **exported** symbol must have a JSDoc block:
+
+```js
+/**
+ * Strips the YYYY-MM-DD date prefix from a content collection entry ID.
+ *
+ * @param {import("astro:content").CollectionEntry<"posts">} entry
+ * @returns {string} The slug without the date prefix, e.g. "my-post-title"
+ */
+export function getPostSlug(entry) { … }
+```
+
+Internal helpers (not exported) should have at least a brief inline comment if their purpose is not immediately obvious from the name.
+
+### `src/components/` and `src/layouts/` (`.astro` files)
+
+Add a block comment at the top of the frontmatter section explaining:
+
+1. What the component renders
+2. Any non-obvious prop relationships or assumptions
+
+```astro
+---
+/*
+ * ProjectCard - renders a single GSoC project summary button.
+ * Clicking opens the matching ProjectDetail panel via the shared detailId.
+ * Must be paired with a in the same page.
+ */
+---
+```
+
+Short, self-evident page components (e.g. a page with only a title and a list) are exempt if the frontmatter is trivially readable.
+
+### `scripts/` (`.mjs` files)
+
+Every top-level function must have a JSDoc block. The module itself should have a `@fileoverview` comment at the top.
+
+### Tests (`src/lib/__tests__/`)
+
+No JSDoc is required in test files — test descriptions serve as documentation.
+
+Add a brief inline comment when test setup is non-obvious (e.g. a mock helper or a tricky fixture).
+
+---
+
+## TypeScript vs JavaScript
+
+- New files in `src/lib/` should be **TypeScript** (`.ts`).
+- Existing `.js` files in `src/lib/` stay as-is unless being rewritten from scratch.
+- Astro component frontmatter uses TypeScript types inline where needed; avoid importing from Astro runtime packages inside `src/lib/` files (keeps them unit-testable without Astro's runtime).
+
+---
+
+## Tests
+
+- Use **Vitest** (`npm test`).
+- Test files live in `src/lib/__tests__/` and mirror the lib filename (e.g. `gsoc.ts` → `gsoc.test.ts`).
+- One `describe` block per exported function.
+- Each `describe` should cover:
+ - The happy path
+ - At least one edge case or boundary value
+ - Null / undefined inputs where the function accepts optional parameters
+- Astro components are not unit-tested; test the logic extracted into `src/lib/` instead.
+
+---
+
+## Astro components
+
+- Keep frontmatter focused on **data fetching and transformation**. Move reusable logic into `src/lib/`.
+- All internal links must use `fromSiteRoot(Astro.url.pathname, "/target/")` from `src/lib/relative-paths.js`. Hardcoded absolute paths (`/foo/`) break on preview deployments.
+- Format with Prettier and lint with ESLint before committing. Run locally before pushing:
+
+ ```sh
+ npm run format
+ npm run lint:fix
+ npm run lint:md:fix
+ ```
+
+---
+
+## CI
+
+GitHub Actions (`.github/workflows/ci.yml`) runs on every push and pull request. Jobs run in parallel where possible:
+
+| Job | What it checks |
+| ---------------- | ------------------------------------------------------------ |
+| `format` | Prettier format |
+| `lint` | ESLint (warnings treated as errors) + Markdownlint |
+| `typecheck` | Astro type/content checks (`astro:check`) |
+| `test` | Unit tests (`npm test`) |
+| `build` | Production build; output uploaded as a shared artifact |
+| `linkcheck` (×2) | Internal and external links, using the shared build artifact |
+
+All jobs must pass before merging. The `linkcheck` jobs wait for `build` and all quality jobs.
+
+---
+
+## Syncing content from upstream
+
+This fork rewrote the site from Jekyll (the upstream) to Astro. The two branches have permanently diverged — **never run `git merge upstream/main`**, it would restore all the old Jekyll files.
+
+When upstream adds or updates GSoC project files, port them manually:
+
+```bash
+# Fetch the latest upstream changes
+git fetch upstream
+
+# See which _projects/ files changed in upstream since the last sync
+git log upstream/main ^main --oneline --name-status | grep "_projects"
+```
+
+For each new or updated `_projects///.md` in upstream:
+
+1. Find the corresponding Astro file at `src/content/pages/gsoc///.md`
+2. Apply the content changes (keep the Astro YAML indentation style)
+3. If the file is brand new, create it — the frontmatter schema is defined in `src/content/config.ts` and the template is at `src/content/pages/gsoc/_project_template.md`
+
+Other upstream changes (e.g. to `gsoc/display/resources/js/app.js`, `_layouts/`, `_sass/`) belong to the old Jekyll site and can be safely ignored.
+
+---
+
+## Updating dependencies
+
+This is a static site — npm packages only affect developers and CI, not end users. **Update once per GSoC cycle** (roughly every February before the season begins) rather than continuously.
+
+GitHub Actions versions are kept up to date automatically via Dependabot (monthly). npm packages are updated manually:
+
+```bash
+# See what has newer versions available
+npx npm-check-updates
+
+# Bump all versions in package.json (still respects semver)
+npx npm-check-updates -u
+
+# Install the new versions and update the lock file
+npm install
+
+# Verify nothing broke
+npm run build && npm test
+```
+
+Commit both `package.json` and `package-lock.json` together. If `npm run build` or `npm test` fails after the update, check the changelog for the offending package and either fix the issue or pin that package back to the previous version.
+
+**Security alerts**: if GitHub raises a Dependabot security alert for a specific npm package, fix that immediately regardless of the regular update schedule.
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 1facff24..00000000
--- a/Gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-source 'https://rubygems.org'
-
-require 'json'
-require 'open-uri'
-versions = JSON.parse(open('https://pages.github.com/versions.json').read)
-
-gem 'github-pages', group: :jekyll_plugins
-gem 'html-proofer'
diff --git a/LICENSE b/LICENSE
index 391dce8a..23091268 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015, OpenAstronomy
+Copyright (c) 2015-2026, OpenAstronomy
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -21,4 +21,3 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/README.md b/README.md
index bed34284..cf3d4b1c 100644
--- a/README.md
+++ b/README.md
@@ -1,62 +1,120 @@
-### About
+# openastronomy.github.io
-This is the source for the openastronomy.github.io website.
+This is the source code for the openastronomy.org website.
-### Building
+## Building
-To build the site locally, you will need [jekyll](https://jekyllrb.com) to be installed.
-Clone this repository locally, then inside it, type:
+Requirements:
+
+- [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+
+Install dependencies
```shell
-gem install bundler
-bundler install
+npm install
```
-Depending on your Ruby setup this may require superuser privileges to install to the default location, so you may want to instead use:
+
+Build the website and output to a `html` folder
```shell
+npm run build
+```
-gem install -i vendor/bundle bundler
-bundle config --local path 'vendor/bundle'
-bundle install
+Run the dev server
+```shell
+npm run dev
```
-to install the dependencies locally at `vendor/bundle`.
+Preview the production build
-You can then build the website with:
+```shell
+npm run preview
+```
+
+### Tests
+
+Run the unit test suite (Vitest):
```shell
-bundle exec jekyll build
+npm test
```
-To view the site locally, you will then need to run:
+Watch mode (re-runs on file changes):
```shell
-bundle exec jekyll serve
+npm run test:watch
```
-this will track the changes and rebuild automatically. However, it won't reflect changes on `_config.yaml`
+### Formatting and linting
+Format the codebase
-### Building using a Jekyll container
+```shell
+npm run format
+```
-```bash
-mkdir -p ../vendor/bundle # so it's available for other projects
-export JEKYLL_VERSION=3.8
-# only needs to run it once to download the dependencies
-docker run --rm -e BUNDLE_APP_CONFIG="/srv/vendor/bundle" -e BUNDLE_HOME="/srv/vendor/bundle" -e BUNDLE_PATH="/srv/vendor/bundle" --volume="$PWD:/srv/jekyll" --volume="$PWD/../vendor:/srv/vendor" -it jekyll/jekyll:$JEKYLL_VERSION bundle install
-# build
-docker run --rm -e BUNDLE_APP_CONFIG="/srv/vendor/bundle" -e BUNDLE_HOME="/srv/vendor/bundle" -e BUNDLE_PATH="/srv/vendor/bundle" --volume="$PWD:/srv/jekyll" --volume="$PWD/../vendor:/srv/vendor" -it jekyll/jekyll:$JEKYLL_VERSION bundle exec jekyll build
-# serve from python
-python -m http.server -d _site
+Run ESLint
+
+```shell
+npm run lint
+```
+
+Auto-fix ESLint issues (where supported)
+
+```shell
+npm run lint:fix
```
-### Submodule
+Auto-fix Markdown formatting issues (where supported)
-Note that this uses a submodule to complete the build process of the site. So you may need to do:
+```shell
+npm run lint:md:fix
+```
+
+Run Astro's type/content checks
```shell
-git submodule init
-git submodule update
+npm run astro:check
```
-in a fresh clone, or just the second line to update the submodule.
+
+### CI
+
+- GitHub Actions (`.github/workflows/ci.yml`) runs formatting, linting, Markdown lint, type checks, unit tests, build, and link checks as parallel jobs.
+- CircleCI (`.circleci/config.yml`) is kept for website build artifacts (`html/`) preview.
+
+### Link checks
+
+We can check both internal links + anchors and external links using a script.
+
+However, this first requires the website to be built
+
+```shell
+npm run build
+```
+
+Then for internal links
+
+```shell
+npm run linkcheck:internal
+```
+
+Then for external links
+
+```shell
+npm run linkcheck:external
+```
+
+If there are sites you need to skip, you can add regex patterns (one per line) in `linkcheck.skip.txt`
+
+There are also three environment variables:
+
+- `LINKCHECK_ROOT=...` to point at a different build folder
+- `LINKCHECK_TIMEOUT=...` in ms for external checks
+- `LINKCHECK_CONCURRENCY=...` number of parallel workers for external checks (default: 20)
+
+### Structure
+
+- `public/` contains static assets (CSS, images, CNAME, etc)
+- `src/content/` contains posts and Markdown page content (`pages/`), including GSoC pages and projects
+- `src/pages/` contains route handlers/components (Astro files)
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index a7050613..00000000
--- a/_config.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-# Site settings
-title: OpenAstronomy
-email: openastronomy@googlegroups.com
-description: > # this means to ignore newlines until "baseurl:"
- Where all about the combined force of different open source projects
- in astronomy and astrophysics takes place.
-baseurl: "" # the subpath of your site, e.g. /blog/
-url: "https://openastronomy.org" # the base hostname & protocol for your site
-#url: "http://localhost:4000" # the base hostname & protocol for your site
-twitter_username: Open_Astronomy
-github_username: openastronomy
-irc_channel: openastronomy
-discussiongroup_url: "https://groups.google.com/forum/#!forum/openastronomy"
-include: [".well-known"]
-
-# Extra Nav Links
-nav_links:
- Contributor Blogs: http://openastronomy.org/Universe_OA
- PyAstro Conference: http://openastronomy.org/pyastro
- Events Calendar: https://calendar.google.com/calendar/b/1?cid=YmxoZzd0MG9zbjhscm50ZDcwOXFoZzFtaXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ
-
-# Build settings
-markdown: kramdown
-
-kramdown:
- hard_wrap: false
- input: GFM
-
-irc_freenode: irc://irc.freenode.net/
-
-collections:
- projects:
- output: true
-defaults:
- - scope:
- path: ""
- type: projects
- values:
- layout:
-exclude:
- - Gemfile
- - Gemfile.lock
- - node_modules
- - vendor/bundle/
- - vendor/cache/
- - vendor/gems/
- - vendor/ruby/
- - _projects/_template.md
- - _projects/README.md
diff --git a/_data/icons.yaml b/_data/icons.yaml
deleted file mode 100644
index 4c28dc9f..00000000
--- a/_data/icons.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-gh_logo: >-
- M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761
- c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32
- c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472
- c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037
- C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65
- c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261
- c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082
- c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129
- c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z
-
-bb_logo: >-
- M29.208,3.519c-0.203-0.285-0.451-0.525-0.729-0.738c-0.61-0.475-1.297-0.814-2.01-1.102c-1.516-0.611-3.097-0.971-4.701-1.229C19.81,0.137,17.836,0.012,15.762,0c-1.854,0.016-3.797,0.133-5.725,0.434C8.668,0.649,7.316,0.94,6.002,1.385c-0.869,0.297-1.71,0.649-2.477,1.164C3.16,2.793,2.824,3.07,2.549,3.418C2.205,3.856,2.058,4.344,2.147,4.897C2.32,5.989,2.48,7.082,2.66,8.169c0.264,1.611,0.537,3.222,0.811,4.828c0.306,1.787,0.62,3.573,0.918,5.36c0.07,0.416,0.246,0.769,0.526,1.07c0.179,0.193,0.37,0.377,0.574,0.543c0.73,0.59,1.562,1.01,2.432,1.354c2.082,0.83,4.259,1.205,6.485,1.328c1.616,0.09,3.23,0.033,4.838-0.187c1.369-0.185,2.709-0.479,4.011-0.948c0.965-0.349,1.891-0.775,2.725-1.382c0.355-0.26,0.683-0.547,0.945-0.901c0.181-0.238,0.305-0.504,0.354-0.805c0.397-2.341,0.809-4.679,1.196-7.021c0.362-2.172,0.701-4.346,1.058-6.518C29.617,4.388,29.502,3.935,29.208,3.519z
- M15.82,19.64c-2.4-0.008-4.341-1.971-4.333-4.383c0.006-2.41,1.958-4.347,4.369-4.338c2.425,0.008,4.359,1.961,4.35,4.387C20.195,17.704,18.227,19.648,15.82,19.64z
- M24.522,4.394c-0.124,0.139-0.274,0.262-0.436,0.357c-0.45,0.268-0.951,0.409-1.454,0.541c-0.952,0.243-1.923,0.383-2.896,0.485c-1.281,0.136-2.565,0.183-3.791,0.188c-1.49-0.008-2.914-0.068-4.332-0.238c-1.064-0.129-2.124-0.291-3.146-0.633C8.164,4.99,7.869,4.858,7.584,4.713C7.438,4.641,7.309,4.528,7.198,4.409c-0.197-0.215-0.196-0.45,0.005-0.663C7.32,3.621,7.463,3.514,7.61,3.43C8.034,3.184,8.5,3.041,8.969,2.918c0.983-0.256,1.985-0.402,2.994-0.509c1.652-0.17,3.308-0.221,4.967-0.172c1.524,0.045,3.045,0.158,4.55,0.431c0.706,0.127,1.407,0.274,2.075,0.545c0.236,0.096,0.463,0.217,0.683,0.346c0.109,0.064,0.208,0.164,0.288,0.266C24.668,4.007,24.674,4.222,24.522,4.394z
- M26.186,22.761c0.009,0.088-0.004,0.183-0.021,0.271c-0.305,1.604-0.614,3.205-0.911,4.811c-0.101,0.539-0.344,0.99-0.724,1.377c-0.422,0.432-0.918,0.752-1.448,1.023c-0.979,0.498-2.018,0.811-3.085,1.031c-1.377,0.286-2.771,0.414-3.563,0.407c-2.41-0.006-4.184-0.198-5.917-0.698c-0.802-0.23-1.577-0.529-2.3-0.953c-0.379-0.222-0.732-0.478-1.042-0.789c-0.388-0.392-0.64-0.846-0.741-1.396c-0.296-1.604-0.609-3.207-0.915-4.81c-0.016-0.081-0.021-0.163-0.019-0.245c0.019-0.394,0.37-0.597,0.724-0.423c0.036,0.021,0.072,0.041,0.105,0.063c1.174,0.853,2.484,1.423,3.858,1.856c1.262,0.4,2.556,0.641,3.873,0.758c1.52,0.138,3.031,0.104,4.54-0.11c2-0.28,3.91-0.851,5.687-1.827c0.354-0.194,0.686-0.43,1.025-0.646c0.056-0.035,0.108-0.076,0.167-0.104C25.819,22.206,26.153,22.395,26.186,22.761z
- M18.027,15.284c-0.005,1.203-0.992,2.184-2.197,2.178c-1.205-0.004-2.178-0.987-2.172-2.196c0.004-1.212,0.98-2.181,2.192-2.175C17.059,13.097,18.03,14.073,18.027,15.284z
-
-sf_logo: >-
- m0.10973,10.304c-0.063715-0.064-0.10973-0.3695-0.10973-0.7287,0-0.518,0.028754-0.6339,0.17686-0.7132,0.10645-0.056966,0.97285-0.094654,2.1762-0.094654,1.4331,0,2.0304-0.031075,2.109-0.10973,0.14226-0.14226,0.14226-0.9184,0-1.0607-0.077134-0.077135-0.59397-0.10973-1.7402-0.10973-1.7693,0-2.0378-0.054672-2.4475-0.49821-0.22016-0.2382-0.22973-0.2998-0.25796-1.6592-0.027012-1.3006-0.014301-1.4361,0.16145-1.7204,0.37101-0.6003,0.58673-0.6448,3.2814-0.6767,2.9042-0.034316,2.8498-0.050242,2.8498,0.83519,0,0.32448-0.047689,0.62163-0.10972,0.68366-0.078762,0.078762-0.69147,0.11012-2.1716,0.11112-1.134,0.0007216-2.1155,0.035443-2.1812,0.077064-0.081755,0.051857-0.11052,0.24557-0.091435,0.61579l0.027855,0.54013,1.7373,0.045718c1.9027,0.0502,2.1341,0.1109,2.5506,0.6697,0.1761,0.2362,0.1924,0.3777,0.1924,1.662,0,1.5713-0.052879,1.7306-0.68728,2.0709-0.28534,0.15303-0.55769,0.16929-2.8361,0.16929-1.8385,0-2.5502-0.02969-2.6302-0.10973zm9.1862-1.0489c-0.0335-0.0335-0.0609-1.1033-0.0609-2.3773v-2.3164h-0.66748c-0.39724,0-0.7119-0.044425-0.7772-0.10973-0.061907-0.061907-0.10973-0.35849-0.10973-0.68058,0-0.72446,0.15021-0.85554,0.98042-0.85554h0.57399v-0.8472c0-1.0337,0.14644-1.3641,0.77936-1.7587,0.43617-0.27191,0.45323-0.27457,1.9562-0.30408,0.915-0.017969,1.6159,0.008315,1.7676,0.066314,0.24036,0.091851,0.25145,0.12361,0.25145,0.72011,0,0.36344-0.04582,0.66984-0.10972,0.73375-0.07578,0.075781-0.54252,0.10973-1.5087,0.10973h-1.399v0.64005,0.64005h1.3318c0.7432,0,1.41,0.041832,1.5087,0.094655,0.1481,0.079261,0.17686,0.19524,0.17686,0.7132,0,0.35918-0.04601,0.66455-0.10972,0.72827-0.07578,0.075781-0.54252,0.10973-1.5087,0.10973h-1.399v1.8998c0,2.1681,0.0081,2.1405-0.76082,2.5815-0.457,0.2624-0.7882,0.3393-0.9151,0.2124z
-
-irc_logo: >-
- M30,12V8h-5.004l1-8h-4l-1,8h-7.998l1-8h-4l-1,8H2v4h6.498L7.5,20H2v4h5l-1,8h4l1-8h8l-1.002,8H22l1-8h7v-4h-6.5l0.996-8H30z
- M19.5,20h-8l0.998-8h7.998L19.5,20z
-
-mastodon_logo: >-
- M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z
-
-twitter_logo: >-
- M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z
-
-rss_logo: >-
- M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z
- M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z
diff --git a/_data/members.yaml b/_data/members.yaml
deleted file mode 100644
index 4288665c..00000000
--- a/_data/members.yaml
+++ /dev/null
@@ -1,365 +0,0 @@
-astropy:
- name: Astropy
- logo: astropy.png
- url: http://www.astropy.org/
- repositories:
- github: astropy/astropy
- mailinglist:
- users: http://mail.python.org/mailman/listinfo/astropy
- devs: http://groups.google.com/group/astropy-dev
- chat:
- slack: http://joinslack.astropy.org/
- microblogging:
- twitter: astropy
- description: >-
- is a community-driven package intended to contain much of the core
- functionality and some common tools needed for performing
- astronomy and astrophysics with Python.
-
-astronomy-commons:
- name: Astronomy Data Commons
- logo: astronomy-commons.png
- url: https://dirac.astro.washington.edu/data-engineering/
- repositories:
- github: astronomy-commons/
- mailinglist:
- devs: https://groups.google.com/forum/#!forum/astronomy-commons
- chat:
- matrix: https://app.element.io/#/room/#astronomy-commons:matrix.org
- description: >-
- is an initiative for software infrastructure for science platforms and
- scalable astronomy on cloud resources. Astronomy Data Commons is lead by
- researchers at the DiRAC Institute at the University of Washington.
-
-ctlearn:
- name: CTLearn
- logo: ctlearn.png
- url: https://github.com/ctlearn-project
- repositories:
- github: ctlearn-project/ctlearn
- chat:
- matrix: https://app.element.io/#/room/#ctlearn:matrix.org
- description: >-
- is a package under active development that pursues the
- application of deep-learning based methods to the analysis of
- data from imaging atmospheric Cherenkov telescopes (IACTs). CTLearn includes
- modules for loading and manipulating IACT data and for running
- machine learning models using pixel-wise camera data as
- input. Its high-level interface provides a
- configuration-file-based workflow to drive reproducible training
- and prediction.
-
-einsteinpy:
- name: EinsteinPy
- logo: einsteinpy.png
- url: https://einsteinpy.org
- repositories:
- github: einsteinpy/einsteinpy
- mailinglist:
- devs: https://groups.io/g/einsteinpy-dev
- chat:
- matrix: https://app.element.io/#/room/#einsteinpy:matrix.org
- microblogging:
- twitter: EinsteinPy
- description: >-
- is a python package for solving problems in general relativity. Computations
- can be done for Schwarzschild, Kerr and Kerr-Newman geometries. Visualising
- relativistic orbits, advancement of perihelion can be simulated in seconds.
- See documentation for more
- information.
-
-glue:
- name: Glue
- logo: glue.png
- url: http://www.glueviz.org/
- repositories:
- github: glue-viz/glue
- mailinglist:
- users: https://groups.google.com/group/glue-viz
- devs: https://groups.google.com/group/glue-viz-dev
- microblogging:
- twitter: glueviz
- description: >-
- is a data visualization application and library to explore relationships
- within and among related datasets. Its main features include linked
- statistical graphs, flexible linking across data, and full Python scripting
- capability.
-
-juliaastro:
- name: JuliaAstro
- logo: juliaastro.svg
- url: https://juliaastro.github.io/
- repositories:
- github: JuliaAstro
- mailinglist:
- users: https://discourse.julialang.org/c/domain/astro
- chat:
- slack: https://app.slack.com/client/T68168MUP/CMXU6SD7V
- zulip: https://julialang.zulipchat.com/#narrow/channel/astronomy
- description: >-
- is an organization that shepherds the development of community astronomy and
- astrophysics packages for Julia. These include packages for widely used
- functionality such as FITS file I/O, world coordinate systems and
- cosmological distance calculations.
-
-poliastro:
- name: poliastro
- logo: poliastro.png
- url: https://poliastro.readthedocs.io/
- repositories:
- github: poliastro/poliastro
- mailinglist:
- devs: https://groups.io/g/poliastro-dev
- chat:
- matrix: https://app.element.io/#/room/#poliastro:matrix.org
- microblogging:
- twitter: poliastro_py
- mastodon: "@poliastro@fosstodon.org"
- description: >-
- is a python package for Astrodynamics and Orbital Mechanics problems, such
- as orbital elements conversion, orbital propagation, plotting, planetary
- ephemerides computation, and more.
-
-sunpy:
- name: SunPy
- logo: sunpy.png
- url: http://sunpy.org
- repositories:
- github: sunpy/sunpy
- mailinglist:
- users: http://groups.google.com/group/sunpy
- devs: http://groups.google.com/group/sunpy-dev
- chat:
- matrix: https://app.element.io/#/room/#sunpy:openastronomy.org
- microblogging:
- twitter: SunPyProject
- description: >-
- is a community-developed free and open-source software package for solar
- physics. SunPy is meant to be a free alternative to the
- SolarSoft
- and its aim is to provide the software tools necessary so that anyone can
- analyze solar data.
-
-stingray:
- name: Stingray
- logo: stingray_logo.png
- url: http://stingray.science
- repositories:
- github: StingraySoftware
- chat:
- slack: https://join.slack.com/t/stingraysoftware/shared_invite/zt-49kv4kba-mD1Y~s~rlrOOmvqM7mZugQ
- description: >-
- : we are a team of astrophysicists and software developers working together
- to build a variability analysis software to study black holes and
- fundamental physics under extreme conditions.
-
-casacore:
- name: Casacore
- logo: casacore.svg
- url: https://www.github.com/casacore/casacore/
- repositories:
- github: casacore
- description: >-
- is a suite of C++ libraries for radio astronomy data processing. Casacore
- underlies CASA, the Common Astronomy
- Software Applications developed by an international consortium of scientists
- at various institutes. Python bindings exist in Python-casacore.
- Casacore also underlies other radio astronomy software such as WSClean, and LOFAR
- tools. Casacore is developed by the radio astro organizations around the
- world. It is open source and will happily merge any (good) pull requests.
-
-chiantipy:
- name: ChiantiPy
- logo: chiantipy.png
- url: http://chiantipy.sourceforge.net/welcome.html
- repositories:
- github: chianti-atomic/ChiantiPy
- mailinglist:
- users: https://lists.sourceforge.net/lists/listinfo/chiantipy-users
- description: >-
- is a Python interface to the CHIANTI atomic database for astrophysical
- spectroscopy. CHIANTI consists of a database of atomic data that can be used
- to interpret spectral lines and continua emitted from high-temperature,
- optically-thin astrophysical sources.
-
-coin:
- name: COIN
- logo: coin.png
- url: https://cosmostatistics-initiative.org/
- repositories:
- github: COINtoolbox
- mailinglist:
- admin (Rafael S. de Souza): mailto:rafael.2706@gmail.com
- description: >-
- (COsmostatistics INitiative) is an international working group built under
- the auspices of the International Astrostatistics Association (IAA). It
- aims to create an interdisciplinary environment where collaborations between
- astronomers, statisticians and machine learning experts can flourish. COIN
- is designed to promote the development of a new family of tools for data
- exploration in astrophysics and cosmology.
-
-gnuastro:
- name: GNU Astronomy Utilities
- logo: gnuastro.svg
- url: https://www.gnu.org/software/gnuastro/
- repositories:
- savannah: https://git.savannah.gnu.org/cgit/gnuastro.git
- mailinglist:
- users: https://lists.gnu.org/mailman/listinfo/help-gnuastro
- devs: https://lists.gnu.org/mailman/listinfo/gnuastro-devel
- description: >-
- (Gnuastro) is an official GNU package consisting of many
- command-line programs and
- library functions for the manipulation and analysis of
- astronomical data. All the programs share the same basic and familiar (GNU
- style) command-line user interface for the comfort of both the users and
- developers. Gnuastro is written to comply fully with the GNU coding
- standards so it blends nicely with all Unix-like operating systems. This
- also enables astronomers to expect a fully familiar experience in the
- source code, building, installing and command-line user interaction.
- Gnuastro also has a very complete
- book/manual, the
- tutorials is the best place to start using it.
-
-ims:
- name: The Italian Mars Society
- logo: ims.png
- url: http://www.marssociety.it/?lang=en
- repositories:
- bitbucket: italianmarssociety/
- mailinglist:
- admin: mailto:gsoc@marssociety.it
- microblogging:
- twitter: marssociety
- description: >-
- (IMS) is a non-profit organization, existing from 2004, as Italian branch of
- the International Mars Society, created in the USA by Robert Zubrin. IMS is
- a member of the Mars Society European network. The foundation scope of the
- Italian Mars Society is to promote research projects devoted to Mars
- Exploration and the involvement of SMEs and large enterprises in the new
- economy related to space exploration. IMS is currently spearheading
- the MARS CITY
- project. The project aims to address the major issues that could jeopardize
- a crewed mission to Mars and are not adequately being addressed at existing
- terrestrial Mars analogs.
-
-plasmapy:
- name: PlasmaPy
- logo: plasmapy.png
- url: http://www.plasmapy.org
- repositories:
- github: plasmapy/plasmapy
- mailinglist:
- users: https://groups.google.com/group/plasmapy
- chat:
- matrix: https://app.element.io/#/room/#plasmapy:matrix.org
- microblogging:
- twitter: plasmapy
- description: >-
- aims to be a collection of functionality commonly used and shared between
- plasma physicists and researchers globally, running within and leveraging
- the open source scientific Python ecosystem.
-
-radis:
- name: radis
- logo: radis_ico.png # name of the logo as saved on img/members
- url: https://radis.readthedocs.io/
- repositories:
- github: radis/radis
- mailinglist:
- users: https://groups.google.com/forum/#!forum/radis-radiation
- chat:
- gitter: https://gitter.im/radis-radiation/community
- microblogging:
- twitter: radis_radiation
- description: >-
- A fast line-by-line code for high-resolution infrared molecular spectra.
- RADIS can compute spectra of millions of lines within seconds. Also
- includes a post-processing tools to compare experimental spectra with
- spectra calculated in RADIS or other spectral codes.
-
-sherpa:
- name: Sherpa
- logo: sherpa_logo.gif
- url: http://cxc.cfa.harvard.edu/contrib/sherpa/
- repositories:
- github: sherpa/sherpa/
- description: >-
- is a modeling and fitting application for Python. It contains a powerful
- language for combining simple models into complex expressions that can be
- fit to the data using a variety of statistics and optimization methods. It
- is easily extensible to include user models, statistics and optimization
- methods.
-
-yt:
- name: yt
- logo: yt.png
- url: https://yt-project.org/
- repositories:
- github: yt-project/yt
- mailinglist:
- users: https://mail.python.org/archives/list/yt-users@python.org/
- devs: https://mail.python.org/archives/list/yt-dev@python.org/
- chat:
- slack: https://yt-project.slack.com/
- microblogging:
- twitter: yt_astro
- description: >-
- is a python package for analyzing and visualizing volumetric,
- multi-resolution data from astrophysical simulations,
- radio telescopes, and a burgeoning interdisciplinary community.
-
-lincc-frameworks:
- name: LINCC Frameworks
- logo: lincc-frameworks.png
- url: https://lsstdiscoveryalliance.org/lsst-discovery-alliance-programs/lincc-frameworks/
- repositories:
- github: lincc-frameworks
- chat:
- slack: https://join.slack.com/t/gsoc26arrowforastro/shared_invite/zt-3qpirqhkg-qTHUg4R0iMewhIprewR1eg
- description: >-
- builds open-source tools scalable data analysis in astronomy, aimed at
- enabling scientific discovery with large datasets.
-
-reltrans:
- name: Reltrans
- logo: reltrans_logo.png
- url: https://reltrans.github.io/reltrans_website/Home.html
- repositories:
- github: reltrans
- chat:
- slack: https://join.slack.com/t/reltrans-workspace/shared_invite/zt-3p234fciq-lD12LDPTCCPf0DTT1ZocmQ
- description: >-
- Reltrans (Relativistic transfer functions) is a publicly available, semi-analytical model for X-ray reverberation mapping of accreting black holes in both AGN and X-ray binaries. It can be used to compute both time-averaged spectra and energy-dependent, Fourier domain cross spectra
-
-# Are you a new org? copy the fragment below above this line and fill it up
-# with your organisation details. Don't forget to add your logo to the img/members
-# directory.
-# example:
-# name: OrgName
-# logo: logo.png # name of the logo as saved on img/members
-# url: http://url.mainOrgpage.is
-# repositories:
-# github: org/repo
-# bitbucket: org/repo
-# somethingelse: http://full.url # In this case it will print the name for the repo
-# mailinglist:
-# users: http://url.for.group
-# devs: http://url.for.group
-# otherstuff: http://url.for.group
-# chat:
-# slack: http://slackurl.com
-# matrix: http://riot.url
-# irc: http://irc.freenode/#channel
-# description: >-
-# Multiline description that will start with name org. html links are
-# allowed as normal links.
diff --git a/_includes/footer.html b/_includes/footer.html
deleted file mode 100644
index 8a14c2df..00000000
--- a/_includes/footer.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
diff --git a/_includes/head.html b/_includes/head.html
deleted file mode 100644
index ffe6962c..00000000
--- a/_includes/head.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% include style.html %}
-
-
-
-
-
- {% if include.project == "true" %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% endif %}
-
-
diff --git a/_includes/header.html b/_includes/header.html
deleted file mode 100644
index be4ee4fe..00000000
--- a/_includes/header.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
- {% if page.redirect %} {% endif %}
-
-
-
-
- {% include footer.html %}
-
-
-
-
-
diff --git a/_plugins/shuffle.rb b/_plugins/shuffle.rb
deleted file mode 100644
index 26b09966..00000000
--- a/_plugins/shuffle.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Jekyll
- module ShuffleFilter
- def shuffle(array)
- array.shuffle
- end
- end
-end
-
-Liquid::Template.register_filter(Jekyll::ShuffleFilter)
diff --git a/_posts/2018-08-14-GSoC.md b/_posts/2018-08-14-GSoC.md
deleted file mode 100644
index aeb7f3fb..00000000
--- a/_posts/2018-08-14-GSoC.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-title: "2018 August 14: GSoC - End of Coding"
-date: 2018-08-14
----
-
-Students submit their final work product and their final mentor evaluation.
diff --git a/_projects/2017/casacore/testing.md b/_projects/2017/casacore/testing.md
deleted file mode 100644
index be30bf4f..00000000
--- a/_projects/2017/casacore/testing.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-name: Casacore testing
-desc: Improve the test coverage of the python wrappers around casacore, and possibly add some python functionality
-# add a description of your project
-requirements:
- - Proficiency in Python
-difficulty: intermediate
-issues:
- - https://github.com/casacore/python-casacore/issues/6
- - https://github.com/casacore/python-casacore/issues/60
-mentors:
- - tammojan
- - gijzelaerr
-initiatives:
- - GSOC
-tags:
- - python casacore testing
-collaborating_projects:
- - casacore
----
-#### Description
-
-Python-casacore is a set of Python bindings for [casacore] (https://github.com/casacore/casacore), a c++ library used in radio astronomy. This python binding to casacore is now python 3 compatible, contains some unit tests, etc. But some work remains to be done:
-
- - Remove all compile warnings
- - Modernise code, add missing features, maybe more ‘pythonic’.
- - Improve test coverage (24% at the moment)
-
-This is a typical project to learn making good code.
-
diff --git a/_projects/2018/astropy/astropy-learn-website.md b/_projects/2018/astropy/astropy-learn-website.md
deleted file mode 100644
index 78a398d1..00000000
--- a/_projects/2018/astropy/astropy-learn-website.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-name: Astropy Learn Website
-desc: Design and Implement landing page for Astropy Learn ecosystem.
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Web development knowledge
- - User interface design and user experience
- - Knowledge of the Sphinx documentation tool is a plus
-difficulty: moderate
-issues:
-# Related issues (if any) to this project.
-mentors:
-# First person in contact; mentors may change before project starts.
- - kelle
- - eblur
- - adrn
- - eteq
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - Web design
- - javascript
- - python
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
----
-Design and Implement landing page for Astropy Learn ecosystem.
-
-#### Description
-This project is for the creation of a landing web page for the Astropy Learn ecosystem. The Learn ecosystems includes the Astropy documentation and associated examples, the Astropy tutorials, and guides (e.g., worked out science use cases). Implementing this likely also requires harmonizing the existing tutorials web site with the astropy documentation (which is generated by Sphinx). This project may also include indexing/tagging of the materials and searching for content (this is already possible to some extent, but the current capabilities are inadequate).
-
-#### Possible Milestones
-
-##### At start of coding for GSOC 2018
-
-* Have a big-picture plan for how the learn landing page, astropy web site, astropy docs, and astropy tutorials link together.
-* Have a general sense of what actual web page javascript code and sphinx extension changes might be necessary.
-
-##### GSOC 2018 Midterm
-
-* Have a draft design for the new web pages ready to get comment from the community.
-* Have Pull Requests open for any changes necessary to the astropy documentation or tutorials page templates.
-
-##### GSOC 2018 Final
-
-* Have the completed landing page launched.
-* (Stretch goal) Include in the landing page a search that works across all of the learn resources.
diff --git a/_projects/2018/astropy/sphinx-example-index.md b/_projects/2018/astropy/sphinx-example-index.md
deleted file mode 100644
index d66b1a6b..00000000
--- a/_projects/2018/astropy/sphinx-example-index.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-name: Indexing examples in Astropy Sphinx documentation
-desc: Write a Sphinx plugin to identify examples in the Astropy documentation, tag/index them, and build an example gallery from them
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Knowledge of [sphinx](http://www.sphinx-doc.org/en/stable/)
- - Interest in user training
-difficulty: moderate
-issues:
-# Related issues (if any) to this project.
- - https://github.com/astropy/astropy/issues/6589
- - https://github.com/astropy/astropy-helpers/issues/371
-mentors:
-# First person in contact; mentors may change before project starts.
- - eteq
- - adrn
- - bsipocz
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - python
- - sphinx
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
----
-Write a Sphinx plugin to identify examples in the Astropy documentation, tag/index them, and build an example gallery from them
-
-#### Description
-
-The [current astropy example gallery](http://docs.astropy.org/en/stable/generated/examples/) is problematic because it duplicates content from the astropy documentation and it is not clear which examples are "worthy" of the example gallery. It also overlaps with the [astropy tutorials](http://tutorials.astropy.org). Hence, this project is focused on developing the infrastructure to auto-generate the example gallery from examples *in* the documentation. This will require building a Sphinx plugin to find tagged examples and generating links. It will also require coordinating moving of existing gallery examples to the documentation and tagging them appropriately.
-
-#### Possible Milestones
-
-##### At start of coding for GSOC 2018
-
-* Identify what labeling technique is best for tagging the examples.
-* Solicit authors of gallery examples to determine where they should be moved. Some may belong in the documentations, whil others might be better places as Astropy Tutorials.
-* Determine where the plugin will go (either a standalone small package, in the astropy-helpers, or in astropy itself), in consultation with the Astropy documentation maintainers.
-
-##### GSOC 2018 Midterm
-
-* Have examples identified and ready to be moved out of the gallery and into their relevant locations in the astropy docs or tutorials.
-* Have a first-draft working plugin ready for review by Astropy documentation maintainers.
-* Determine how difficult it will be to have an example *gallery* (as opposed to simply an index/list of the examples).
-
-##### GSOC 2018 Final
-
-* Release the plugin, with minimum functionality of generating the example list (or have it merged if it ends up as part of another project).
-* (Stretch Goal) have the plugin generate an example gallery instead of a list.
-* Complete a Pull Request to activate the (finished) plugin in the Astropy repository.
-* Have a Pull Request to tag all the relevant examples which sucessfully generates the example *list*.
diff --git a/_projects/2018/astropy/table-optimize.md b/_projects/2018/astropy/table-optimize.md
deleted file mode 100644
index 2cbcb293..00000000
--- a/_projects/2018/astropy/table-optimize.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-name: Improving astropy Table performance
-desc: Improve the speed of common Table operations like slicing
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Familiar with Cython and Python code profiling
- - Familiar with Python speed optimization strategies
-difficulty: medium
-issues:
-# Related issues (if any) to this project.
-mentors:
-# First person in contact; mentors may change before project starts.
- - taldcroft
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - python
- - Cython
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
----
-
-Improving astropy Table performance
-
-#### Description
-
-The astropy table sub-package defines a core Table class that is
-used to store and manipulate tabular data within astropy. This class
-was written with an emphasis on functionality, convenience for astronomers,
-and code clarity. With the astropy table package now fairly mature
-and with a strong set of regression tests in place, it is time to focus
-on performance for basic operations like table creation and slicing.
-For a simple operation like slicing, astropy Table is currently about
-a factor of 10 slower than Pandas. This project will focus on identifying
-performance bottlenecks, writing performance tests for astropy-benchmarks,
-and then developing code to improve the performance. It is possible that
-some fixes
-
-#### Milestones (if any)
-
-##### GSOC 2018 CODING STARTS
-
-* Perform developer install of `astropy`.
-* Install Python profiling tools.
-* Study astropy and the table package capabilities.
-
-##### GSOC 2018 MIDTERM
-
-* Install and run `asv`.
-* Examine existing `asv` benchmarks and identify areas for improved benchmarking.
-* Profile key parts of table code and identify performance bottlenecks.
-* Identify strategies for improved speed performance.
-* Implement initial performance improvements.
-
-##### GSOC 2018 FINAL
-
-* Continue and finalize implementation of performance improvements.
-* Contine and finalize additional `asv` benchmark tests.
diff --git a/_projects/2019/astropy/table-optimize.md b/_projects/2019/astropy/table-optimize.md
deleted file mode 100644
index e1dbb183..00000000
--- a/_projects/2019/astropy/table-optimize.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-name: Improving astropy Table performance
-desc: Improve the speed of common Table operations like slicing
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Familiar with Cython and Python code profiling
- - Familiar with Python speed optimization strategies
-difficulty: medium
-issues:
-# Related issues (if any) to this project.
-mentors:
-# First person in contact; mentors may change before project starts.
- - taldcroft
- - mhvk
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - python
- - Cython
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
----
-
-Improving astropy Table performance
-
-#### Description
-
-The astropy table sub-package defines a core Table class that is
-used to store and manipulate tabular data within astropy. This class
-was written with an emphasis on functionality, convenience for astronomers,
-and code clarity. With the astropy table package now fairly mature
-and with a strong set of regression tests in place, it is time to focus
-on performance for basic operations like table creation and slicing.
-For a simple operation like slicing, astropy Table is currently about
-a factor of 10 slower than Pandas. This project will focus on identifying
-performance bottlenecks, writing performance tests for astropy-benchmarks,
-and then developing code to improve the performance. It is possible that
-some fixes will require the use of Cython so previous experience is
-desirable though not absolutely required.
-
-#### Milestones (if any)
-
-##### GSOC 2019 CODING STARTS
-
-* Perform developer install of `astropy`.
-* Install Python profiling tools.
-* Study astropy and the table package capabilities.
-
-##### GSOC 2019 MIDTERM
-
-* Install and run `asv`.
-* Examine existing `asv` benchmarks and identify areas for improved benchmarking.
-* Profile key parts of table code and identify performance bottlenecks.
-* Identify strategies for improved speed performance.
-* Implement initial performance improvements.
-
-##### GSOC 2019 FINAL
-
-* Continue and finalize implementation of performance improvements.
-* Contine and finalize additional `asv` benchmark tests.
diff --git a/_projects/2019/astropy/telescopy.md b/_projects/2019/astropy/telescopy.md
deleted file mode 100644
index 720ac513..00000000
--- a/_projects/2019/astropy/telescopy.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-name: telescopy
-desc: A generic API for telescope S/N calculations.
-requirements:
-# Student requirements:
- - Observational astronomy
-difficulty: medium
-mentors:
-# First person in contact; mentors may change before project starts.
- - bmorris3
- - eteq
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - python
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
----
-
-Specify some telescope, filter, imager, and target properties, and estimate the photons or counts you’d measure
-
-#### Description
-
-The goal of this project is to create a simple API for performing signal-to-noise calculations
-for telescopic observations using astropy. Users will specify an input source spectrum (e.g. a blackbody),
-properties of the source (e.g. magnitude in one band, or a distance), properties of the telescope
-(e.g. aperture, throughput), and properties of the imager (e.g. quantum efficiency, gain) in order to calculate
-the expected photon flux and count rate. If time allows, the applicant will also develop a submodule for
-signal-to-noise calculations of spectroscopic observations.
-
-#### Milestones (if any)
-
-##### GSOC CODING STARTS
-
-* Get to know the existing API, design strawman API
-* Generalize the input spectrum object for objects other than blackbodies
-* Work out scaling of magnitudes from one band to another
-
-##### GSOC MIDTERM
-
-* Write tests which will validate predictions against real data
-* Write documentation which explains how to construct your own S/N calculations
-
-##### GSOC FINAL
-
-* Have _passing_ tests which validate the API for real observations
-* Handle spectroscopic observations at arbitrary spectral resolution
-* Write extensive documentation with examples for widely-used telescopes
diff --git a/_projects/2019/sunpy/featuresevents.md b/_projects/2019/sunpy/featuresevents.md
deleted file mode 100644
index 2d56b276..00000000
--- a/_projects/2019/sunpy/featuresevents.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-name: Feature and Event Objects in SunPy
-desc: Implements a feature/event object in SunPy.
-requirements:
- - Familiar with methods for creating classes, objects and subclasses.
-difficulty: medium
-issues:
- - https://github.com/sunpy/sunpy/pull/2759
- - https://github.com/sunpy/sunpy/issues/1792
- - https://github.com/sunpy/sunpy/issues/1398
- - https://github.com/sunpy/sunpy/issues/164
-mentors:
- - wafels
- - Cadair
- - dpshelio
-initiatives:
- - GSOC
-tags:
- - Python
-collaborating_projects:
- - SunPy
----
-
-#### Description
-
-The Sun displays many different features and events (FEs). These are
-detected and described either automatically by algorithm, or by visual
-inspection by human, or by a combination of both. There are many
-different repositories of these FEs online. SunPy provides access to
-two large FE repositories, the Heliophysics Event Knowledgebase (HEK) and
-the Helio Event Catalogue (HEC).
-
-The aim of this project is to create a SunPy object that normalizes
-input from both the HEK and HEC and creates a SunPy FE object. The
-SunPy FE object should take advantage of existing SunPy capabilities
-such as SunPy spatial co-ordinates and SunPy time. This will make FE
-data much more useful to SunPy users.
-
-The SunPy FE object should interact intuitively with existing SunPy
-objects such as the SunPy maps and timeseries. For example, it should
-be simple for a FE with a spatial extent property to be overplotted
-on SunPy map; similarly, it should be simple for a FE with a temporal
-duration to be overplotted on a SunPy timeseries.
-
-
-#### Milestones
-
-##### Coding Starts
-
-* Engaged with the community and understand the motivation and
- challenges of the project.
-
-##### Evaluation 1
-
-* Have understood what a FE is in the context of solar physics
- research and why their interaction with existing SunPy objects is
- important.
-* Have evaluated and chosen an approach to the design of a SunPy FE
- object.
-* Have implemented a basic SunPy FE object.
-
-##### Evaluation 2
-
-* Have worked with your mentors and the community to design a simple
- and functional API.
-* Have a working prototype of the SunPy FE object that normalizes
-input from both the HEK and HEC.
-* Have tests for the working prototype.
-
-##### Final
-
-* Have finished implementation, testing and documentation.
-* Have written examples for the gallery of how to use the functionality.
-* Have written developer documentation.
-* Have the Pull Request merged after review and feedback.
diff --git a/_projects/2020/.gitkeep b/_projects/2020/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2020/einsteinpy/Null-geodesics-for-Schwarzschild-and-Kerr-Geometries..md b/_projects/2020/einsteinpy/Null-geodesics-for-Schwarzschild-and-Kerr-Geometries..md
deleted file mode 100644
index f9411a28..00000000
--- a/_projects/2020/einsteinpy/Null-geodesics-for-Schwarzschild-and-Kerr-Geometries..md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-name: Null geodesics for Schwarzschild and Kerr Geometries
-desc: The project aims at adding functionality of ray-tracing to EinsteinPy
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Knowledge on ODEs, basic mathematics
- - Some Familiarity with General Relativity, or the will to read about it.
- - Basic knowledge of differential geometry
-difficulty: medium
-issues:
-# Related issues (if any) to this project.
- - https://github.com/einsteinpy/einsteinpy/issues/105
- - https://github.com/einsteinpy/einsteinpy/issues/106
- - https://github.com/einsteinpy/einsteinpy/issues/275
- - https://github.com/einsteinpy/einsteinpy/issues/144
- - https://github.com/einsteinpy/einsteinpy/issues/145
-mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - ritzvik
- - OVSofia
- - rishi-s8
-initiatives:
- - GSOC
- - SOCIS
-tags:
-# Different technologies needed
- - python
- - C++
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - einsteinpy
----
-
-#### Description
-
-Null-geodesics is the path traced by light rays in 4-D space-time. We aim to calculate null geodesics around non-rotating (Schwarzschild) and rotating (Kerr) massive bodies given the initial conditions.
-
-The project has roughly the following objectives :
- - Calculating null trajectories around a rotating/non-rotating black hole.
- - Use those trajectories to raytrace a bundle of photon rays, to visualize how space-time gets distorted in presence of black holes.
- - Calculate redshifts in photon rays due to space-time curvature.
- - Visualization of Keplerian disc/shell in around it.
- - In short, we aim to replicate one of the few papers available with proper coding paradigms like OOPs, good documentation and unit tests.
- - If required due to performance issues, python wrappers over native C/C++ have to be written.
-
-This project also aims at fixing the problem of natural units introduced due to the research papers and books and to give native support to MKS units.
-
-##### Papers we intend to replicate :
- - Odyssey: https://arxiv.org/abs/1601.02063
- - YNOGK: https://arxiv.org/abs/1305.1250
-
-##### Links to other relevant papers :
- - https://www.aanda.org/articles/aa/abs/2004/36/aa0814/aa0814.html
- - http://www.math.mcgill.ca/gantumur/math599w17/project-kerr.pdf
- - https://iopscience.iop.org/article/10.1088/0004-637X/696/2/1616
-
-#### Milestones (if any)
-
-##### Coding starts
-
-* Engaged with the community and understand the motivation and challenges of
- the project.
-* Have set up a development environment and get familiar with einsteinpy dependencies.
-* Have read relevant literature/codes required for the project.
-
-
-##### 1st evaluation
-
-* Null geodesic in Kerr space-time
-* Null geodesic in Schwarzschild space-time (It can be implemented by creating a class inheriting from Kerr null geodesics and setting a=0. However, it would lead to unnecessary calculation and therefore, seperate Schwarzschild-Null class is necessary.)
-* If possible, basic raytracing using the newly created classes.
-* Have all code, tests and documentation in GitHub.
-
-##### 2nd evaluation
-
-* Plotting class for both Kerr and Schwarzschild null geodesics.
-* Improvement in raytracing, along with simulation of a photon sheet around a black hole.
-* Calculation of redshifts along the null trajectory.
-* Have all code, tests and documentation in GitHub.
-
-##### Final
-
-* Good-enough implementation of any of the relavent papers.
-* Complete any chores left out during the 1st and 2nd phase.
-* Fix the Natural Units Problem in Kerr-Newman time-like geodesics.
-* Fix the Natural Units Problem in Hypersurface Module.
-* Have all code, tests and documentation in GitHub.
-
-#### Secondary goals
-
-* Fix any bugs that might appear regarding visualization, symbolic module and so forth.
-* Review pull requests from other einsteinpy contributors, including the mentor.
-* Give a talk about the work at some Python event.
-* EinsteinPy is nothing without its community. Therefore, getting integrated deeply within the community and oversee future development of EinsteinPy.
diff --git a/_projects/2020/radis/radis_atmosphere_calculation_interface.md b/_projects/2020/radis/radis_atmosphere_calculation_interface.md
deleted file mode 100644
index d1235e1c..00000000
--- a/_projects/2020/radis/radis_atmosphere_calculation_interface.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-name: RADIS Atmosphere Calculation Interface
-desc: Adapt a spectroscopy open-source code to characterize exoplanet atmospheres.
-requirements:
- - Basic notions of spectroscopy
-difficulty: easy
-mentors:
-# GitHub handles
- - erwanp
- - minouHub
- - dcmvdbekerom
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - python
- - CUDA
-collaborating_projects:
- - radis
-issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/74
----
-
-#### Description
-
-The presence and concentration of molecules in exoplanet atmospheres are measured by comparing absorption and emission spectra to synthetic spectra. However, under high-temperature conditions, the synthetic spectra contain dozens of millions of lines, which require long computational times .
-
-The RADIS code was recently developed for the characterization of plasmas and flames. It uses a new approach to quickly calculate high-temperature infrared spectra. New developments are in progress (see our [other project](https://openastronomy.org/gsoc/gsoc2020/#/projects?project=accelerate_synthetic_spectra_calculations) on further accelerating the code), but it is already one of the fastest spectral codes in the world. This performance would be beneficial for exoplanet characterization, and this is the goal of this project: adapt the RADIS code to the calculation of exoplanet atmospheres!
-
-
-#### Milestones
-
-##### Coding starts
-
-* Engage with the community and understand the motivation of spectroscopy users
-* Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
-* Get used with RADIS architecture: review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74#issuecomment-585773087))
-
-
-##### 1st evaluation
-
-* Indirect integration of databases from the Exoplanet atmosphere community (ExoMol), using a converter to the HITRAN format supported by RADIS
-* 1st calculation of an atmosphere line-of-sight spectrum with Python hardcoded inputs
-
-##### 2nd evaluation
-
-* Direct integration of ExoMol, and memory optimization
-* Calculation of atmosphere with standard atmosphere input files (mole fractions, temperature profile, pressure profile)
-
-##### Final
-
-* Write an iPython notebook to document the atmosphere module on [radis-examples](https://github.com/radis/radis-examples)
-* Have all code, tests and documentation in GitHub.
-
-#### Secondary goals
-
-* Document architecture and developer guide when facing unclear points that may appear.
-* Review pull requests from other RADIS contributors
-* Optimized calculation of atmospheres in optically thin configurations (merge results with project [Accelerate Synthetic Spectra Calculations](https://openastronomy.org/gsoc/gsoc2020/#/projects?project=accelerate_synthetic_spectra_calculations) )
- )
\ No newline at end of file
diff --git a/_projects/2021/.gitkeep b/_projects/2021/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2021/astropy/astropyCDS.md b/_projects/2021/astropy/astropyCDS.md
deleted file mode 100644
index 2b63ce5d..00000000
--- a/_projects/2021/astropy/astropyCDS.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-name: Add a CDS-ASCII writer to astropy
-desc: Allow writing an astropy Table to CDS format
-requirements:
-# Student requirements:
- - Python
- - Some familiarity with ASCII files is preferred
-difficulty: low
-issues:
-# Related issues (if any) to this project.
- - https://github.com/astropy/astropy/issues/11257
- - https://github.com/astropy/astropy/issues/11239
- - https://github.com/astropy/astropy/issues/9291
-mentors:
-# GitHub handles
- - hamogu
- - aaryapatil
-initiatives:
- - GSOC
-tags:
-# Different technologies needed
- - python
- - astropy core
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
----
-
-#### Description
-
-Astropy is a core python package for astronomy that provides several modules for the analysis of observational data. A common problem is storing and retrieving tabular data in standard formats which include metadata to fully describe the contents of a table. One such ASCII format is CDS (http://vizier.u-strasbg.fr/doc/catstd.htx) that is used for publishing catalogues accompanying papers to astronomical databases like Vizier. Astropy has the capability of reading a CDS file to an astropy Table but not writing a Table to CDS. In this project, the student will create a CDS writer in astropy.io.ascii. A python module from CDS (https://github.com/cds-astro/cds.pyreadme/) uses astropy to write CDS files, and the astropy writer can be based on that.
-
-#### Milestones (if any)
-
-##### Coding starts
-
-* Understand the CDS format, and write an example astropy Table to this format using python
-* Get familiar with the astropy.io.ascii framework
-
-##### 1st evaluation
-
-* Add the writer to astropy.io.ascii (PR open and tests pass)
-* Add documentation for the writer
-
-##### Final
-
-* Finish testing and documentation
-* Fix any bugs (if found or reported)
diff --git a/_projects/2022/.gitkeep b/_projects/2022/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2022/astropy/.gitkeep b/_projects/2022/astropy/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2022/gnuastro/.gitkeep b/_projects/2022/gnuastro/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2022/juliaastro/.gitkeep b/_projects/2022/juliaastro/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2022/radis/.gitkeep b/_projects/2022/radis/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2022/radis/performance_tweaks.md b/_projects/2022/radis/performance_tweaks.md
deleted file mode 100644
index 3fb7ada3..00000000
--- a/_projects/2022/radis/performance_tweaks.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-name: Performance Tweaks for RADIS
-desc: Reduce Memory usage and improve performance in RADIS to be able to compute terabyte-scale databases
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
- - Prior working knowledge with big data handling databases like Vaex
-difficulty: medium
-issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/118
- - https://github.com/radis/radis/issues/176
-mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - gagan-aryan
- - anandxkumar
- - erwanp
-initiatives:
- - GSOC
-project_size:
- - 175 h
-tags:
-# Different technologies needed
- - Python
- - Vaex
- - Pandas
- - Git
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
----
-
-
-#### Description
-
-The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
-
-However, although the algorithm is very CPU/GPU efficient, the RADIS code is still memory-hungry. The first goal of the current project is to reduce the memory usage of current calculations. Then, it is to replace the current core with libraries better suited to process larger-than-memory-data, which would make it possible to compute spectral databases of up to billions of lines (hundred of GB or terabyte-scale).
-
-
-#### Milestones
-
-##### Coding starts
-
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-
-* Training on emission & absorption spectroscopy
-
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
-
-##### 1st Evaluation
-
-* Work on the existing [memory bottlenecks](https://github.com/radis/radis/issues/118)
-
-* Work on [crunching datatypes](https://github.com/radis/radis-benchmark/pull/11) of various columns to optimise dataframe memory usage
-
-* Setup [memory-performance benchmark](https://github.com/radis/radis-benchmark/tree/master/manual_benchmarks) to track the changes
-
-* Automatically [cache non equilibrium parameters](https://github.com/radis/radis/issues/176) to line database cache
-
-* Merge the changes
-
-
-##### Final evaluation
-
-* Write the Proof-Of-Concept to do out of the core calculations i.e., use Vaex for computations instead of pandas.
-
-* Merge the idea of the Proof-Of-Concept to the codebase.
-
-* Add [automatic linestrength cutoff](https://github.com/radis/radis/issues/268)
-
-* Add [.h5 loading benchmark](https://github.com/radis/radis-benchmark/issues/4)
-
-* Have all code, tests and documentation in GitHub
diff --git a/_projects/2022/stingray/.gitkeep b/_projects/2022/stingray/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2022/stingray/type_hints_stingray.md b/_projects/2022/stingray/type_hints_stingray.md
deleted file mode 100644
index ed81337d..00000000
--- a/_projects/2022/stingray/type_hints_stingray.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-name: Type hints in Stingray
-desc: Using type hints throughout the Stingray library
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Knowledge of Python
-difficulty: easy
-issues:
-# Related issues (if any) to this project.
- - https://github.com/StingraySoftware/stingray/issues/544
-mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - matteobachetti
- - dhuppenkothen
-initiatives:
-# The programme under this project wish to run.
- - GSOC
-project_size:
- - 175 h
-tags:
-# Different technologies needed
- - python
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - stingray
----
-Implementing type hints in the Stingray library
-
-#### Description
-
-Despite being and remaining a dynamically-typed language, Python has
-now a [working infrastructure for type hints](https://www.python.org/dev/peps/pep-0484/).
-For a data analysis library, type hinting can be very useful to avoid explicit testing
-for data types and to facilitate debugging.
-
-
-#### Milestones (if any)
-
-##### Coding starts
-
-* Take confidence with the Stingray infrastructure.
-* Start implementing type hints in the core modules of Stingray
-
-##### 1st evaluation
-
-* Create tests to enforce type checking in selected methods
-* Extend the type hints infrastructure to most of the code base
-
-##### Final evaluation
-
-* Finish up, polish, and document properly
diff --git a/_projects/2022/sunpy/.gitkeep b/_projects/2022/sunpy/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2023/.gitkeep b/_projects/2023/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2023/radis/out_of_core_calculations.md b/_projects/2023/radis/out_of_core_calculations.md
deleted file mode 100644
index d7eb4916..00000000
--- a/_projects/2023/radis/out_of_core_calculations.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-name: Out-of-core calculations to reduce memory usage
-desc: The project aims at reducing RADIS memory usage, and make it possible to compute very-large spectral databases of tens of gigabytes that do not fit in RAM memory.
-
-# add a short one line description of your project
-requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
- - Prior working knowledge with big data handling databases like Vaex
-difficulty: medium
-issues:
-
-mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - minouHub
- - anandxkumar
- - erwanp
-initiatives:
- - GSOC
-project_size:
- - 350 h
-tags:
-# Different technologies needed
- - Python
- - Vaex
- - Pandas
- - Git
-collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
----
-
-
-#### Description
-
-The RADIS code was developed for the characterization of plasmas, flames and atmospheres. High-temperature spectral calculations require to resolve the shape of tens of millions of lines, which is the usual performance bottleneck. RADIS implements a new algorithm to compute these lineshapes, and is already one of the fastest line-by-line spectral codes available. It can also compute many different types of spectra (absorption / emission / equilibrium / nonequilibrium).
-
-However, although the algorithm is very CPU/GPU efficient, the RADIS code is still memory-hungry. Databases are currently loaded in RADIS using the VAEX package, but the operations to calculate the spectra are performed using the PANDAS library. VAEX is a similar table management tool than PANDAS but uses memory mapping, a zero memory copy policy, and lazy computations for the best performance. **The main goal of the current project is to refactor RADIS so that dataframes are only manipulated via the VAEX format**. Potentially, this work would make it possible to compute spectral databases of up to billions of lines (hundred of GB or terabyte-scale databases).
-
-
-#### Milestones
-
-##### Coding starts
-
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-
-* Training on emission & absorption spectroscopy
-
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
-
-* Get familiar with RADIS architecture
-
-##### 1st Evaluation
-
-* Create a standalone spectroscopy code working with Out-of-core Vaex calculations (with minimum features: absorption code under equilibrium)
-
-##### 2nd Evaluation
-
-* Create a standalone spectroscopy code working with Out-of-core Vaex calculations (with minimum features: absorption code under equilibrium)
-
-* Implement VAEX out-of-core calculations directly in a single RADIS calculation path (e.g. equilibrium, one lineshape calculation routine), replacing PANDAS
-
-* Implement tests to verify that the implementation of VAEX will not have different output than the current PANDAS implementation
-
-##### Final evaluation
-
-* Implement VAEX out-of-core calculations directly in all othe other RADIS calculation paths (nonequilibrium, all lineshape calculations routine), replacing PANDAS
-
-* Have all code, tests, and documentation in GitHub.
-
-
-#### Secondary Goals
-
-* Document architecture and developer guide when facing unclear points that may appear.
-
-* Review pull requests from other RADIS contributors, especially parallel GSoC mentee
-
-* List and explore consequences for GPU calculations already implemented in RADIS
-
-
diff --git a/_projects/2023/sunpy/.gitkeep b/_projects/2023/sunpy/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2024/.gitkeep b/_projects/2024/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2024/sunpy/.gitkeep b/_projects/2024/sunpy/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2025/.gitkeep b/_projects/2025/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2025/sunpy/.gitkeep b/_projects/2025/sunpy/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2026/.gitkeep b/_projects/2026/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2026/juliaastro/.gitkeep b/_projects/2026/juliaastro/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2026/radis/.gitkeep b/_projects/2026/radis/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2026/stingray/.gitkeep b/_projects/2026/stingray/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/2026/sunpy/.gitkeep b/_projects/2026/sunpy/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/_projects/README.md b/_projects/README.md
deleted file mode 100644
index 63f80639..00000000
--- a/_projects/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# How to add project ideas for OpenAstronomy
-
-This short tutorial will guide you on how to add a GSoC project idea in the
-OpenAstronomy website.
-
-In case you face any issues with this tutorial do contact your org admins via email,
-thorough the [mailing list](https://groups.google.com/forum/#!forum/openastronomy).
-
-*tl;dr: are you an expert?* Fork the repo and modify
-the [template file](./_template.md) according to your idea, save it under
-`_projects/YYYY/sub-org/` with a meaningful filename and open a pull-request.
-
-## What do I need for my project idea?
-
-Everything you need is a title and description of the project idea, a set of requirements
-for potential contributors (_e.g._, proficiency with `astropy.tables` and `astropy.units`),
-and a list of potential mentors. In addition, please link any related issues or tickets
-to the project idea, if any. Lastly, make sure to indicate the level of difficulty of
-the project.
-
-In case your project idea already has specific milestones, please add them
-so as to make contributors aware when they start writing their applications.
-If the project milestones are open ended and you would like to hear input from
-other members of the community, that is fine too!
-
-## Required format
-
-Given that you have the above items, all you need now is to put them in a plain text file following
-the [template file](./_template.md) (you may click on `Code` to see how it looks).
-
-The file is composed in two parts (separated by a `---`).
-Change the text in the template keeping special care of the structure of the `yaml`
-file and the headings on the markdown part (_e.g._, the top level starts with a 4 level title: `####`).
-
-## How to include my project idea on the website?
-
-If you are familiar with git/GitHub: for this repo and add your project idea
-to the directory of your sub-organisation. Otherwise, we've got you covered!
-Contact us via [email](openastronomy.organization@gmail.com) and attach the above file.
diff --git a/_sass/_base.scss b/_sass/_base.scss
deleted file mode 100644
index 24ff3dd2..00000000
--- a/_sass/_base.scss
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- * Reset some basic elements
- */
-body, h1, h2, h3, h4, h5, h6,
-p, blockquote, pre, hr,
-dl, dd, ol, ul, figure {
- margin: 0;
- padding: 0;
-}
-
-
-html {
- height:100%;
-}
-
-/**
- * Basic styling
- */
-body {
- font-family: $base-font-family;
- font-size: $base-font-size;
- font-weight: 400;
- color: $text-color;
- background-color: $background-color;
- -webkit-text-size-adjust: 100%;
- height:100%;
-
- @include media-query($on-laptop) {
- background-size: 200%;
- }
-
- @include media-query($on-palm) {
- background-size: 300%;
- }
-}
-
-
-
-/**
- * Set `margin-bottom` to maintain vertical rhythm
- */
-h1, h2, h3, h4, h5, h6,
-p, blockquote, pre,
-ul, ol, dl, figure,
-%vertical-rhythm {
- margin-bottom: $spacing-unit / 2;
-}
-
-
-
-/**
- * Images
- */
-img {
- max-width: 100%;
- vertical-align: middle;
-}
-
-
-
-/**
- * Figures
- */
-figure > img {
- display: block;
-}
-
-figcaption {
- font-size: $small-font-size;
-}
-
-
-
-/**
- * Lists
- */
-ul, ol {
- margin-left: $spacing-unit;
-}
-
-li {
- > ul,
- > ol {
- margin-bottom: 0;
- }
-}
-
-
-
-/**
- * Headings
- */
-h1, h2, h3, h4, h5, h6 {
- font-weight: 300;
-}
-
-
-
-/**
- * Links
- */
-a {
- color: $brand-color;
- text-decoration: none;
-
- &:visited {
- color: darken($brand-color, 15%);
- }
-
- &:hover {
- color: $text-color;
- text-decoration: underline;
- }
-}
-
-
-
-/**
- * Blockquotes
- */
-blockquote {
- color: $grey-color;
- border-left: 4px solid $grey-color-light;
- padding-left: $spacing-unit / 2;
- font-size: 18px;
- letter-spacing: -1px;
- font-style: italic;
-
- > :last-child {
- margin-bottom: 0;
- }
-}
-
-
-
-/**
- * Code formatting
- */
-pre,
-code {
- font-size: 15px;
- border: 1px solid $grey-color-light;
- border-radius: 3px;
- background-color: #eef;
-}
-
-code {
- padding: 1px 5px;
-}
-
-pre {
- padding: 8px 12px;
- overflow-x: scroll;
-
- > code {
- border: 0;
- padding-right: 0;
- padding-left: 0;
- }
-}
-
-
-
-/**
- * Wrapper
- */
-.wrapper {
- height: 100%;
- max-width: -webkit-calc(1100px - (#{$spacing-unit} * 2));
- max-width: calc(1100px - (#{$spacing-unit} * 2));
- margin-right: auto;
- margin-left: auto;
- padding-right: $spacing-unit;
- padding-left: $spacing-unit;
- @extend %clearfix;
-
- @include media-query($on-laptop) {
- max-width: -webkit-calc(1100px - (#{$spacing-unit}));
- max-width: calc(1100px - (#{$spacing-unit}));
- padding-right: $spacing-unit / 2;
- padding-left: $spacing-unit / 2;
- }
-}
-
-.page-content > .wrapper {
- padding-top: 10px;
-}
-
-
-
-/**
- * Clearfix
- */
-%clearfix {
-
- &:after {
- content: "";
- display: table;
- clear: both;
- }
-}
-
-
-
-/**
- * Icons
- */
-.icon {
-
- > svg {
- display: inline-block;
- width: 16px;
- height: 16px;
- vertical-align: middle;
-
- path {
- fill: $grey-color;
- }
- }
-}
-
-
-iframe {
- height: 100%;
- width: 100%;
- border: none;
-}
diff --git a/_sass/_layout.scss b/_sass/_layout.scss
deleted file mode 100644
index 684b8cde..00000000
--- a/_sass/_layout.scss
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- * Site header
- */
-.site-header {
- min-height: 80px;
- height: 80px;
-
- // Positioning context for the mobile navigation icon
- position: relative;
- z-index: 100;
-}
-
-.site-title {
- font-size: 26px;
- line-height: 36px;
- letter-spacing: -1px;
- margin-bottom: -1px;
- float: left;
-
- &,
- &:visited {
- color: $grey-color-dark;
- }
-}
-
-.site-nav {
- float: right;
- line-height: 56px;
-
- .menu-icon {
- display: none;
- }
-
- .page-link {
- color: $text-color;
- line-height: $base-line-height;
-
- // Gaps between nav items, but not on the first one
- &:not(:first-child) {
- margin-left: 20px;
- }
- }
-
- @include media-query($on-desktop) {
- position: absolute;
- top: 20px;
- right: 30px;
- background-color: $menu-color;
- border: 1px solid $grey-color-light;
- border-radius: 5px;
- text-align: right;
-
- .menu-icon {
- display: block;
- float: right;
- width: 36px;
- height: 26px;
- line-height: 0;
- padding-top: 10px;
- text-align: center;
-
- > svg {
- width: 18px;
- height: 15px;
-
- path {
- fill: white;
- }
- }
- }
-
- .trigger {
- clear: both;
- display: none;
- }
-
- &:hover .trigger {
- display: block;
- padding-bottom: 5px;
- }
-
- .page-link {
- display: block;
- padding: 5px 10px;
- }
- }
-}
-
-
-
-/**
- * Site footer
- */
-.site-footer {
- border-top: 1px solid $grey-color-light;
- padding: $spacing-unit / 2 0;
-
- @include media-query($on-palm) {
- .wrapper {
- display: block; /* Ensure all elements stack properly */
- }
-
- .footer-col {
- float: none;
- width: 100%; /* Ensure columns stack on mobile */
- }
- }
-}
-
-.footer-heading {
- font-size: 18px;
- margin-bottom: $spacing-unit / 2;
-}
-
-.contact-list,
-.social-media-list {
- list-style: none;
- margin-left: 0;
-}
-
-.footer-col-wrapper {
- font-size: 15px;
- color: $grey-color;
- margin-left: -$spacing-unit / 2;
- @extend %clearfix;
-}
-
-.footer-col {
- float: left;
- margin-bottom: $spacing-unit / 2;
- padding-left: $spacing-unit / 2;
-}
-
-.footer-col-1 {
- width: -webkit-calc(35% - (#{$spacing-unit} / 2));
- width: calc(35% - (#{$spacing-unit} / 2));
-}
-
-.footer-col-2 {
- width: -webkit-calc(20% - (#{$spacing-unit} / 2));
- width: calc(20% - (#{$spacing-unit} / 2));
-}
-
-.footer-col-3 {
- width: -webkit-calc(45% - (#{$spacing-unit} / 2));
- width: calc(45% - (#{$spacing-unit} / 2));
-}
-
-@include media-query($on-laptop) {
- .footer-col-1,
- .footer-col-2 {
- width: -webkit-calc(50% - (#{$spacing-unit} / 2));
- width: calc(50% - (#{$spacing-unit} / 2));
- }
-
- .footer-col-3 {
- width: -webkit-calc(100% - (#{$spacing-unit} / 2));
- width: calc(100% - (#{$spacing-unit} / 2));
- }
-}
-
-@include media-query($on-palm) {
- .footer-col {
- float: none;
- width: -webkit-calc(100% - (#{$spacing-unit} / 2));
- width: calc(100% - (#{$spacing-unit} / 2));
- }
-}
-
-
-.fixed-wrap {
- position: static;
- top: auto;
- left: auto;
- bottom: auto;
- width: 100%;
-}
-
-/**
- * Page content
- */
-.page-content {
- height: 100%;
- overflow-y:auto;
-}
-
-.page-heading {
- font-size: 20px;
-}
-
-.post-list {
- margin-left: 0;
- list-style: none;
-
- > li {
- margin-bottom: $spacing-unit;
- }
-}
-
-.post-meta {
- font-size: $small-font-size;
- color: $grey-color;
-}
-
-.post-link {
- display: block;
- font-size: 24px;
-}
-
-
-
-/**
- * Posts
- */
-.post-header {
- margin-bottom: $spacing-unit;
-}
-
-.post-title {
- font-size: 42px;
- letter-spacing: -1px;
- line-height: 1;
-
- @include media-query($on-laptop) {
- font-size: 36px;
- }
-}
-
-.post-content {
- margin-bottom: 75px;
-
- h2 {
- font-size: 32px;
-
- @include media-query($on-laptop) {
- font-size: 28px;
- }
- }
-
- h3 {
- font-size: 26px;
-
- @include media-query($on-laptop) {
- font-size: 22px;
- }
- }
-
- h4 {
- font-size: 20px;
-
- @include media-query($on-laptop) {
- font-size: 18px;
- }
- }
-}
-
-// materialize modal stuff - so it works outside #projects (because modal put it out!)
-.modal {
- @extend .z-depth-4;
-
- display: none;
- position: fixed;
- left: 0;
- right: 0;
- background-color: #fafafa;
- padding: 0;
- max-height: 70%;
- width: 55%;
- margin: auto;
- overflow-y: auto;
-
- border-radius: 2px;
- will-change: top, opacity;
-
- h1,h2,h3,h4 {
- margin-top: 0;
- }
-
- .modal-content {
- padding: 24px;
- }
- .modal-close {
- cursor: pointer;
- }
-
- .modal-footer {
- border-radius: 0 0 2px 2px;
- background-color: #fafafa;
- padding: 4px 6px;
- height: 56px;
- width: 100%;
- text-align: right;
-
- .btn, .btn-flat {
- margin: 6px 0;
- }
- }
-}
-.modal-overlay {
- position: fixed;
- z-index: 999;
- top: -25%;
- left: 0;
- bottom: 0;
- right: 0;
- height: 125%;
- width: 100%;
- background: #000;
- display: none;
-
- will-change: opacity;
-}
-
-// Modal with fixed action footer
-.modal.modal-fixed-footer {
- padding: 0;
- height: 70%;
-
- .modal-content {
- position: absolute;
- height: calc(100% - 56px);
- max-height: 100%;
- width: 100%;
- overflow-y: auto;
- }
-
- .modal-footer {
- border-top: 1px solid rgba(0,0,0,.1);
- position: absolute;
- bottom: 0;
- }
-}
-
-// Modal Bottom Sheet Style
-.modal.bottom-sheet {
- top: auto;
- bottom: -100%;
- margin: 0;
- width: 100%;
- max-height: 45%;
- border-radius: 0;
- will-change: bottom, opacity;
-}
diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss
deleted file mode 100644
index e36627da..00000000
--- a/_sass/_syntax-highlighting.scss
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Syntax highlighting styles
- */
-.highlight {
- background: #fff;
- @extend %vertical-rhythm;
-
- .c { color: #998; font-style: italic } // Comment
- .err { color: #a61717; background-color: #e3d2d2 } // Error
- .k { font-weight: bold } // Keyword
- .o { font-weight: bold } // Operator
- .cm { color: #998; font-style: italic } // Comment.Multiline
- .cp { color: #999; font-weight: bold } // Comment.Preproc
- .c1 { color: #998; font-style: italic } // Comment.Single
- .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
- .gd { color: #000; background-color: #fdd } // Generic.Deleted
- .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
- .ge { font-style: italic } // Generic.Emph
- .gr { color: #a00 } // Generic.Error
- .gh { color: #999 } // Generic.Heading
- .gi { color: #000; background-color: #dfd } // Generic.Inserted
- .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
- .go { color: #888 } // Generic.Output
- .gp { color: #555 } // Generic.Prompt
- .gs { font-weight: bold } // Generic.Strong
- .gu { color: #aaa } // Generic.Subheading
- .gt { color: #a00 } // Generic.Traceback
- .kc { font-weight: bold } // Keyword.Constant
- .kd { font-weight: bold } // Keyword.Declaration
- .kp { font-weight: bold } // Keyword.Pseudo
- .kr { font-weight: bold } // Keyword.Reserved
- .kt { color: #458; font-weight: bold } // Keyword.Type
- .m { color: #099 } // Literal.Number
- .s { color: #d14 } // Literal.String
- .na { color: #008080 } // Name.Attribute
- .nb { color: #0086B3 } // Name.Builtin
- .nc { color: #458; font-weight: bold } // Name.Class
- .no { color: #008080 } // Name.Constant
- .ni { color: #800080 } // Name.Entity
- .ne { color: #900; font-weight: bold } // Name.Exception
- .nf { color: #900; font-weight: bold } // Name.Function
- .nn { color: #555 } // Name.Namespace
- .nt { color: #000080 } // Name.Tag
- .nv { color: #008080 } // Name.Variable
- .ow { font-weight: bold } // Operator.Word
- .w { color: #bbb } // Text.Whitespace
- .mf { color: #099 } // Literal.Number.Float
- .mh { color: #099 } // Literal.Number.Hex
- .mi { color: #099 } // Literal.Number.Integer
- .mo { color: #099 } // Literal.Number.Oct
- .sb { color: #d14 } // Literal.String.Backtick
- .sc { color: #d14 } // Literal.String.Char
- .sd { color: #d14 } // Literal.String.Doc
- .s2 { color: #d14 } // Literal.String.Double
- .se { color: #d14 } // Literal.String.Escape
- .sh { color: #d14 } // Literal.String.Heredoc
- .si { color: #d14 } // Literal.String.Interpol
- .sx { color: #d14 } // Literal.String.Other
- .sr { color: #009926 } // Literal.String.Regex
- .s1 { color: #d14 } // Literal.String.Single
- .ss { color: #990073 } // Literal.String.Symbol
- .bp { color: #999 } // Name.Builtin.Pseudo
- .vc { color: #008080 } // Name.Variable.Class
- .vg { color: #008080 } // Name.Variable.Global
- .vi { color: #008080 } // Name.Variable.Instance
- .il { color: #099 } // Literal.Number.Integer.Long
-}
diff --git a/_sass/bootstrap-sass-3.3.7 b/_sass/bootstrap-sass-3.3.7
deleted file mode 160000
index 5d6b2ebb..00000000
--- a/_sass/bootstrap-sass-3.3.7
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5d6b2ebba0c2a5885ce2f0e01e9218db3d3b5e47
diff --git a/_sass/materialize-src/LICENSE b/_sass/materialize-src/LICENSE
deleted file mode 100644
index 30b9ff6d..00000000
--- a/_sass/materialize-src/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014-2017 Materialize
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/_sass/materialize-src/README.md b/_sass/materialize-src/README.md
deleted file mode 100644
index b1e31c80..00000000
--- a/_sass/materialize-src/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-
By enabling this setting without taking other precautions, you might expose your
- * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned
- * outside of the containing element and be rendered over other elements on the page (e.g. a login
- * link). Such behavior can then result in phishing incidents.
- *
- *
To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg
- * tags within the sanitized content:
");
- });
-
- text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,
- function (matchFound, m1) {
- return hashBlock('
' + _RunSpanGamut(m1) + "
");
- });
-
- // atx-style headers:
- // # Header 1
- // ## Header 2
- // ## Header 2 with closing hashes ##
- // ...
- // ###### Header 6
- //
-
- /*
- text = text.replace(/
- ^(\#{1,6}) // $1 = string of #'s
- [ \t]*
- (.+?) // $2 = Header text
- [ \t]*
- \#* // optional closing #'s (not counted)
- \n+
- /gm, function() {...});
- */
-
- text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,
- function (wholeMatch, m1, m2) {
- var h_level = m1.length;
- return hashBlock("' + _RunSpanGamut(m2) + "");
- });
-
- function headerId(m) {
- return m.replace(/[^\w]/g, '').toLowerCase();
- }
-
- return text;
- }
-
-// This declaration keeps Dojo compressor from outputting garbage:
- var _ProcessListItems;
-
- var _DoLists = function (text) {
-//
-// Form HTML ordered (numbered) and unordered (bulleted) lists.
-//
-
- // attacklab: add sentinel to hack around khtml/safari bug:
- // http://bugs.webkit.org/show_bug.cgi?id=11231
- text += "~0";
-
- // Re-usable pattern to match any entirel ul or ol list:
-
- /*
- var whole_list = /
- ( // $1 = whole list
- ( // $2
- [ ]{0,3} // attacklab: g_tab_width - 1
- ([*+-]|\d+[.]) // $3 = first list item marker
- [ \t]+
- )
- [^\r]+?
- ( // $4
- ~0 // sentinel for workaround; should be $
- |
- \n{2,}
- (?=\S)
- (?! // Negative lookahead for another list item marker
- [ \t]*
- (?:[*+-]|\d+[.])[ \t]+
- )
- )
- )/g
- */
- var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;
-
- if (g_list_level) {
- text = text.replace(whole_list, function (wholeMatch, m1, m2) {
- var list = m1;
- var list_type = (m2.search(/[*+-]/g) > -1) ? "ul" : "ol";
-
- // Turn double returns into triple returns, so that we can make a
- // paragraph for the last item in a list, if necessary:
- list = list.replace(/\n{2,}/g, "\n\n\n");
- ;
- var result = _ProcessListItems(list);
-
- // Trim any trailing whitespace, to put the closing `$list_type>`
- // up on the preceding line, to get it past the current stupid
- // HTML block parser. This is a hack to work around the terrible
- // hack that is the HTML block parser.
- result = result.replace(/\s+$/, "");
- result = "<" + list_type + ">" + result + "" + list_type + ">\n";
- return result;
- });
- } else {
- whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;
- text = text.replace(whole_list, function (wholeMatch, m1, m2, m3) {
- var runup = m1;
- var list = m2;
-
- var list_type = (m3.search(/[*+-]/g) > -1) ? "ul" : "ol";
- // Turn double returns into triple returns, so that we can make a
- // paragraph for the last item in a list, if necessary:
- var list = list.replace(/\n{2,}/g, "\n\n\n");
- ;
- var result = _ProcessListItems(list);
- result = runup + "<" + list_type + ">\n" + result + "" + list_type + ">\n";
- return result;
- });
- }
-
- // attacklab: strip sentinel
- text = text.replace(/~0/, "");
-
- return text;
- }
-
- _ProcessListItems = function (list_str) {
-//
-// Process the contents of a single ordered or unordered list, splitting it
-// into individual list items.
-//
- // The $g_list_level global keeps track of when we're inside a list.
- // Each time we enter a list, we increment it; when we leave a list,
- // we decrement. If it's zero, we're not in a list anymore.
- //
- // We do this because when we're not inside a list, we want to treat
- // something like this:
- //
- // I recommend upgrading to version
- // 8. Oops, now this line is treated
- // as a sub-list.
- //
- // As a single paragraph, despite the fact that the second line starts
- // with a digit-period-space sequence.
- //
- // Whereas when we're inside a list (or sub-list), that line will be
- // treated as the start of a sub-list. What a kludge, huh? This is
- // an aspect of Markdown's syntax that's hard to parse perfectly
- // without resorting to mind-reading. Perhaps the solution is to
- // change the syntax rules such that sub-lists must start with a
- // starting cardinal number; e.g. "1." or "a.".
-
- g_list_level++;
-
- // trim trailing blank lines:
- list_str = list_str.replace(/\n{2,}$/, "\n");
-
- // attacklab: add sentinel to emulate \z
- list_str += "~0";
-
- /*
- list_str = list_str.replace(/
- (\n)? // leading line = $1
- (^[ \t]*) // leading whitespace = $2
- ([*+-]|\d+[.]) [ \t]+ // list marker = $3
- ([^\r]+? // list item text = $4
- (\n{1,2}))
- (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+))
- /gm, function(){...});
- */
- list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,
- function (wholeMatch, m1, m2, m3, m4) {
- var item = m4;
- var leading_line = m1;
- var leading_space = m2;
-
- if (leading_line || (item.search(/\n{2,}/) > -1)) {
- item = _RunBlockGamut(_Outdent(item));
- }
- else {
- // Recursion for sub-lists:
- item = _DoLists(_Outdent(item));
- item = item.replace(/\n$/, ""); // chomp(item)
- item = _RunSpanGamut(item);
- }
-
- return "
` blocks.
-//
-
- /*
- text = text.replace(text,
- /(?:\n\n|^)
- ( // $1 = the code block -- one or more lines, starting with a space/tab
- (?:
- (?:[ ]{4}|\t) // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
- .*\n+
- )+
- )
- (\n*[ ]{0,3}[^ \t\n]|(?=~0)) // attacklab: g_tab_width
- /g,function(){...});
- */
-
- // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
- text += "~0";
-
- text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
- function (wholeMatch, m1, m2) {
- var codeblock = m1;
- var nextChar = m2;
-
- codeblock = _EncodeCode(_Outdent(codeblock));
- codeblock = _Detab(codeblock);
- codeblock = codeblock.replace(/^\n+/g, ""); // trim leading newlines
- codeblock = codeblock.replace(/\n+$/g, ""); // trim trailing whitespace
-
- codeblock = "
" + codeblock + "\n
";
-
- return hashBlock(codeblock) + nextChar;
- }
- );
-
- // attacklab: strip sentinel
- text = text.replace(/~0/, "");
-
- return text;
- };
-
- var _DoGithubCodeBlocks = function (text) {
-//
-// Process Github-style code blocks
-// Example:
-// ```ruby
-// def hello_world(x)
-// puts "Hello, #{x}"
-// end
-// ```
-//
-
-
- // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
- text += "~0";
-
- text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,
- function (wholeMatch, m1, m2) {
- var language = m1;
- var codeblock = m2;
-
- codeblock = _EncodeCode(codeblock);
- codeblock = _Detab(codeblock);
- codeblock = codeblock.replace(/^\n+/g, ""); // trim leading newlines
- codeblock = codeblock.replace(/\n+$/g, ""); // trim trailing whitespace
-
- codeblock = "
" + codeblock + "\n
";
-
- return hashBlock(codeblock);
- }
- );
-
- // attacklab: strip sentinel
- text = text.replace(/~0/, "");
-
- return text;
- }
-
- var hashBlock = function (text) {
- text = text.replace(/(^\n+|\n+$)/g, "");
- return "\n\n~K" + (g_html_blocks.push(text) - 1) + "K\n\n";
- }
-
- var _DoCodeSpans = function (text) {
-//
-// * Backtick quotes are used for spans.
-//
-// * You can use multiple backticks as the delimiters if you want to
-// include literal backticks in the code span. So, this input:
-//
-// Just type ``foo `bar` baz`` at the prompt.
-//
-// Will translate to:
-//
-//
Just type foo `bar` baz at the prompt.
-//
-// There's no arbitrary limit to the number of backticks you
-// can use as delimters. If you need three consecutive backticks
-// in your code, use four for delimiters, etc.
-//
-// * You can use spaces to get literal backticks at the edges:
-//
-// ... type `` `bar` `` ...
-//
-// Turns to:
-//
-// ... type `bar` ...
-//
-
- /*
- text = text.replace(/
- (^|[^\\]) // Character before opening ` can't be a backslash
- (`+) // $2 = Opening run of `
- ( // $3 = The code block
- [^\r]*?
- [^`] // attacklab: work around lack of lookbehind
- )
- \2 // Matching closer
- (?!`)
- /gm, function(){...});
- */
-
- text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
- function (wholeMatch, m1, m2, m3, m4) {
- var c = m3;
- c = c.replace(/^([ \t]*)/g, ""); // leading whitespace
- c = c.replace(/[ \t]*$/g, ""); // trailing whitespace
- c = _EncodeCode(c);
- return m1 + "" + c + "";
- });
-
- return text;
- }
-
- var _EncodeCode = function (text) {
-//
-// Encode/escape certain characters inside Markdown code runs.
-// The point is that in code, these characters are literals,
-// and lose their special Markdown meanings.
-//
- // Encode all ampersands; HTML entities are not
- // entities within a Markdown code span.
- text = text.replace(/&/g, "&");
-
- // Do the angle bracket song and dance:
- text = text.replace(//g, ">");
-
- // Now, escape characters that are magic in Markdown:
- text = escapeCharacters(text, "\*_{}[]\\", false);
-
-// jj the line above breaks this:
-//---
-
-//* Item
-
-// 1. Subitem
-
-// special char: *
-//---
-
- return text;
- }
-
- var _DoItalicsAndBold = function (text) {
-
- // must go first:
- text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,
- "$2");
-
- text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,
- "$2");
-
- return text;
- }
-
- var _DoBlockQuotes = function (text) {
-
- /*
- text = text.replace(/
- ( // Wrap whole match in $1
- (
- ^[ \t]*>[ \t]? // '>' at the start of a line
- .+\n // rest of the first line
- (.+\n)* // subsequent consecutive lines
- \n* // blanks
- )+
- )
- /gm, function(){...});
- */
-
- text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,
- function (wholeMatch, m1) {
- var bq = m1;
-
- // attacklab: hack around Konqueror 3.5.4 bug:
- // "----------bug".replace(/^-/g,"") == "bug"
-
- bq = bq.replace(/^[ \t]*>[ \t]?/gm, "~0"); // trim one level of quoting
-
- // attacklab: clean up hack
- bq = bq.replace(/~0/g, "");
-
- bq = bq.replace(/^[ \t]+$/gm, ""); // trim whitespace-only lines
- bq = _RunBlockGamut(bq); // recurse
-
- bq = bq.replace(/(^|\n)/g, "$1 ");
- // These leading spaces screw with
content, so we need to fix that:
- bq = bq.replace(
- /(\s*
[^\r]+?<\/pre>)/gm,
- function (wholeMatch, m1) {
- var pre = m1;
- // attacklab: hack around Konqueror 3.5.4 bug:
- pre = pre.replace(/^ /mg, "~0");
- pre = pre.replace(/~0/g, "");
- return pre;
- });
-
- return hashBlock("
\n" + bq + "\n
");
- });
- return text;
- }
-
- var _FormParagraphs = function (text) {
-//
-// Params:
-// $text - string to process with html
tags
-//
-
- // Strip leading and trailing lines:
- text = text.replace(/^\n+/g, "");
- text = text.replace(/\n+$/g, "");
-
- var grafs = text.split(/\n{2,}/g);
- var grafsOut = [];
-
- //
- // Wrap
tags.
- //
- var end = grafs.length;
- for (var i = 0; i < end; i++) {
- var str = grafs[i];
-
- // if this is an HTML marker, copy it
- if (str.search(/~K(\d+)K/g) >= 0) {
- grafsOut.push(str);
- }
- else if (str.search(/\S/) >= 0) {
- str = _RunSpanGamut(str);
- str = str.replace(/^([ \t]*)/g, "
");
- str += "
"
- grafsOut.push(str);
- }
-
- }
-
- //
- // Unhashify HTML blocks
- //
- end = grafsOut.length;
- for (var i = 0; i < end; i++) {
- // if this is a marker for an html block...
- while (grafsOut[i].search(/~K(\d+)K/) >= 0) {
- var blockText = g_html_blocks[RegExp.$1];
- blockText = blockText.replace(/\$/g, "$$$$"); // Escape any dollar signs
- grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText);
- }
- }
-
- return grafsOut.join("\n\n");
- }
-
- var _EncodeAmpsAndAngles = function (text) {
-// Smart processing for ampersands and angle brackets that need to be encoded.
-
- // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
- // http://bumppo.net/projects/amputator/
- text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&");
-
- // Encode naked <'s
- text = text.replace(/<(?![a-z\/?\$!])/gi, "<");
-
- return text;
- }
-
- var _EncodeBackslashEscapes = function (text) {
-//
-// Parameter: String.
-// Returns: The string, with after processing the following backslash
-// escape sequences.
-//
-
- // attacklab: The polite way to do this is with the new
- // escapeCharacters() function:
- //
- // text = escapeCharacters(text,"\\",true);
- // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true);
- //
- // ...but we're sidestepping its use of the (slow) RegExp constructor
- // as an optimization for Firefox. This function gets called a LOT.
-
- text = text.replace(/\\(\\)/g, escapeCharacters_callback);
- text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, escapeCharacters_callback);
- return text;
- }
-
- var _DoAutoLinks = function (text) {
-
- text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "$1");
-
- // Email addresses:
-
- /*
- text = text.replace(/
- <
- (?:mailto:)?
- (
- [-.\w]+
- \@
- [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+
- )
- >
- /gi, _DoAutoLinks_callback());
- */
- text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,
- function (wholeMatch, m1) {
- return _EncodeEmailAddress(_UnescapeSpecialChars(m1));
- }
- );
-
- return text;
- }
-
- var _EncodeEmailAddress = function (addr) {
-//
-// Input: an email address, e.g. "foo@example.com"
-//
-// Output: the email address as a mailto link, with each character
-// of the address encoded as either a decimal or hex entity, in
-// the hopes of foiling most address harvesting spam bots. E.g.:
-//
-// foo
-// @example.com
-//
-// Based on a filter by Matthew Wickline, posted to the BBEdit-Talk
-// mailing list:
-//
-
- var encode = [
- function (ch) {
- return "" + ch.charCodeAt(0) + ";";
- },
- function (ch) {
- return "" + ch.charCodeAt(0).toString(16) + ";";
- },
- function (ch) {
- return ch;
- }
- ];
-
- addr = "mailto:" + addr;
-
- addr = addr.replace(/./g, function (ch) {
- if (ch == "@") {
- // this *must* be encoded. I insist.
- ch = encode[Math.floor(Math.random() * 2)](ch);
- } else if (ch != ":") {
- // leave ':' alone (to spot mailto: later)
- var r = Math.random();
- // roughly 10% raw, 45% hex, 45% dec
- ch = (
- r > .9 ? encode[2](ch) :
- r > .45 ? encode[1](ch) :
- encode[0](ch)
- );
- }
- return ch;
- });
-
- addr = "" + addr + "";
- addr = addr.replace(/">.+:/g, "\">"); // strip the mailto: from the visible part
-
- return addr;
- }
-
- var _UnescapeSpecialChars = function (text) {
-//
-// Swap back in all the special characters we've hidden.
-//
- text = text.replace(/~E(\d+)E/g,
- function (wholeMatch, m1) {
- var charCodeToReplace = parseInt(m1);
- return String.fromCharCode(charCodeToReplace);
- }
- );
- return text;
- }
-
- var _Outdent = function (text) {
-//
-// Remove one level of line-leading tabs or spaces
-//
-
- // attacklab: hack around Konqueror 3.5.4 bug:
- // "----------bug".replace(/^-/g,"") == "bug"
-
- text = text.replace(/^(\t|[ ]{1,4})/gm, "~0"); // attacklab: g_tab_width
-
- // attacklab: clean up hack
- text = text.replace(/~0/g, "")
-
- return text;
- }
-
- var _Detab = function (text) {
-// attacklab: Detab's completely rewritten for speed.
-// In perl we could fix it by anchoring the regexp with \G.
-// In javascript we're less fortunate.
-
- // expand first n-1 tabs
- text = text.replace(/\t(?=\t)/g, " "); // attacklab: g_tab_width
-
- // replace the nth with two sentinels
- text = text.replace(/\t/g, "~A~B");
-
- // use the sentinel to anchor our regex so it doesn't explode
- text = text.replace(/~B(.+?)~A/g,
- function (wholeMatch, m1, m2) {
- var leadingText = m1;
- var numSpaces = 4 - leadingText.length % 4; // attacklab: g_tab_width
-
- // there *must* be a better way to do this:
- for (var i = 0; i < numSpaces; i++) leadingText += " ";
-
- return leadingText;
- }
- );
-
- // clean up sentinels
- text = text.replace(/~A/g, " "); // attacklab: g_tab_width
- text = text.replace(/~B/g, "");
-
- return text;
- }
-
-
-//
-// attacklab: Utility functions
-//
-
-
- var escapeCharacters = function (text, charsToEscape, afterBackslash) {
- // First we have to escape the escape characters so that
- // we can build a character class out of them
- var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g, "\\$1") + "])";
-
- if (afterBackslash) {
- regexString = "\\\\" + regexString;
- }
-
- var regex = new RegExp(regexString, "g");
- text = text.replace(regex, escapeCharacters_callback);
-
- return text;
- }
-
-
- var escapeCharacters_callback = function (wholeMatch, m1) {
- var charCodeToEscape = m1.charCodeAt(0);
- return "~E" + charCodeToEscape + "E";
- }
-
-} // end of Showdown.converter
-
-
-// export
-if (typeof module !== 'undefined') module.exports = Showdown;
-
-// stolen from AMD branch of underscore
-// AMD define happens at the end for compatibility with AMD loaders
-// that don't enforce next-turn semantics on modules.
-if (typeof define === 'function' && define.amd) {
- define('showdown', function () {
- return Showdown;
- });
-}
diff --git a/gsoc/gsoc2015/ideas.md b/gsoc/gsoc2015/ideas.md
deleted file mode 100644
index a22a49e6..00000000
--- a/gsoc/gsoc2015/ideas.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: default
-title: "Ideas page for Google Summer of Code 2015"
-show_main: false
----
-
-# Ideas page for GSoC 2015
-
-
-Browse ideas for the following projects:
-
-{% for page in site.pages %}
-{% if page.ideas_team and page.path contains 'gsoc2015' %}
-* [{{ page.ideas_team }}](#{{ page.ideas_team | slugify }})
-{% endif %}
-{% endfor %}
-
-For each participating project, the ideas are organized from easiest to hardest.
-
-{% for page in site.pages %}
-{% if page.ideas_team and page.path contains 'gsoc2015' %}
-
-
-# {{ page.ideas_team }}
-
-{{ page.content }}
-
-{% endif %}
-{% endfor %}
diff --git a/gsoc/gsoc2016/ideas.md b/gsoc/gsoc2016/ideas.md
deleted file mode 100644
index eb6c87e2..00000000
--- a/gsoc/gsoc2016/ideas.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: default
-title: "Ideas page for Google Summer of Code 2016"
-show_main: false
----
-
-# Ideas page for GSoC 2016
-
-
-Browse ideas for the following projects:
-
-{% for page in site.pages %}
-{% if page.ideas_team and page.path contains 'gsoc2016' %}
-* [{{ page.ideas_team }}](#{{ page.ideas_team | slugify }})
-{% endif %}
-{% endfor %}
-
-For each participating project, the ideas are organized from easiest to hardest.
-
-{% for page in site.pages %}
-{% if page.ideas_team and page.path contains 'gsoc2016' %}
-
-
-# {{ page.ideas_team }}
-
-{{ page.content }}
-
-{% endif %}
-{% endfor %}
diff --git a/gsoc/gsoc2017/index.md b/gsoc/gsoc2017/index.md
deleted file mode 100644
index ee5988b1..00000000
--- a/gsoc/gsoc2017/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2017"
-show_main: false
-season: 2017
----
diff --git a/gsoc/gsoc2018/index.md b/gsoc/gsoc2018/index.md
deleted file mode 100644
index 732d0439..00000000
--- a/gsoc/gsoc2018/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2018"
-show_main: false
-season: 2018
----
diff --git a/gsoc/gsoc2019/index.md b/gsoc/gsoc2019/index.md
deleted file mode 100644
index 550d851b..00000000
--- a/gsoc/gsoc2019/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2019"
-show_main: false
-season: 2019
----
diff --git a/gsoc/gsoc2020/index.md b/gsoc/gsoc2020/index.md
deleted file mode 100644
index d23da5c5..00000000
--- a/gsoc/gsoc2020/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2020"
-show_main: false
-season: 2020
----
diff --git a/gsoc/gsoc2021/index.md b/gsoc/gsoc2021/index.md
deleted file mode 100644
index f4ff6b35..00000000
--- a/gsoc/gsoc2021/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2021"
-show_main: false
-season: 2021
----
diff --git a/gsoc/gsoc2022/index.md b/gsoc/gsoc2022/index.md
deleted file mode 100644
index 49fc305a..00000000
--- a/gsoc/gsoc2022/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2022"
-show_main: false
-season: 2022
----
diff --git a/gsoc/gsoc2023/index.md b/gsoc/gsoc2023/index.md
deleted file mode 100644
index 251b92e2..00000000
--- a/gsoc/gsoc2023/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2023"
-show_main: false
-season: 2023
----
diff --git a/gsoc/gsoc2024/index.md b/gsoc/gsoc2024/index.md
deleted file mode 100644
index 8376707c..00000000
--- a/gsoc/gsoc2024/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2024"
-show_main: false
-season: 2024
----
diff --git a/gsoc/gsoc2025/index.md b/gsoc/gsoc2025/index.md
deleted file mode 100644
index 3e921359..00000000
--- a/gsoc/gsoc2025/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2025"
-show_main: false
-season: 2025
----
diff --git a/gsoc/gsoc2026/index.md b/gsoc/gsoc2026/index.md
deleted file mode 100644
index 52a139b1..00000000
--- a/gsoc/gsoc2026/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: projects
-title: "Ideas page for Google Summer of Code 2026"
-show_main: false
-season: 2026
----
diff --git a/gsoc/index.md b/gsoc/index.md
deleted file mode 100644
index c0a5743c..00000000
--- a/gsoc/index.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-layout: page
-title: Google Summer of Code
-permalink: /gsoc/
----
-
-## New to GSoC?
-
-[Background on GSoC: Start Here!](./background.html)
-
-## GSoC & Open Astronomy 2026
-
-OpenAstronomy is an umbrella organisation which collects project ideas from any of its members.
-OpenAstronomy has been a GSOC mentoring organisation since 2016 and it's applying to participate in 2026.
-
-Contributors applications to OpenAstronomy projects follows the same rules as the [Python Software Foundation] and the [GSoC Contributor Guide].
-We have [also our own guide to a good application for OpenAstronomy][OpenAstronomy Contributor Guide].
-
-All contributors blogs are collected on the [OpenAstronomy Universe] site.
-
-## Quick Links
-
-* [OpenAstronomy Contributor Guide]
-* [GSoC Contributor Guide]
-* [Now You Know It!: Getting selected in Outreachy by Kriti Singh]
-
-## Current Project ideas offered by mentors {#current-projects}
-
-* [2026](./gsoc2026/)
-
-
-Previous editions
-
-* [2025](./gsoc2025/)
-* [2024](./gsoc2024/)
-* [2023](./gsoc2023/)
-* [2022](./gsoc2022/)
-* [2021](./gsoc2021/)
-* [2020](./gsoc2020/)
-* [2019](./gsoc2019/)
-* [2018](./gsoc2018/)
-* [2017](./gsoc2017/)
-* [2016](./gsoc2016/ideas.html)
-* [2015](./gsoc2015/ideas.html)
-
-
-
-## Info for sub-organisations' admins
-
-Whether you have been participating for years or this is your first time read our guide for [sub-org admins](./suborg_guidelines.html).
-
-[OpenAstronomy Contributor Guide]: ./contributor_guidelines.html
-[Python Software Foundation]: http://python-gsoc.org/
-[GSoC Contributor Guide]: https://google.github.io/gsocguides/student/
-[OpenAstronomy Universe]: http://openastronomy.org/Universe_OA/
-[Now You Know It!: Getting selected in Outreachy by Kriti Singh]: https://github.com/kritisingh1/numpy/wiki/Now-You-Know-It!-:-Getting-selected-in-Outreachy
-
-## Related Organizations
-
-OpenAstronomy is closely related to other organizations that support open-source scientific computing:
-
-- [NumFOCUS](https://numfocus.org/) - Supports open-source scientific computing projects, including many under OpenAstronomy [and also participates in GSoC.](https://numfocus.org/community/google-summer-of-code)
-- [Python Software Foundation](https://www.python.org/) - Oversees GSoC projects for the broader Python ecosystem [and also participates in GSoC.](http://python-gsoc.org/)
-- [TARDIS](https://tardis-sn.github.io/) - A radiative transfer code for supernovae, [also participating in GSoC](https://tardis-sn.github.io/summer_of_code/gsoc_start/)
-
-These organizations collaborate on various scientific computing initiatives and GSoC at times.
diff --git a/gsoc/suborg_guidelines.md b/gsoc/suborg_guidelines.md
deleted file mode 100644
index 5ab1ac23..00000000
--- a/gsoc/suborg_guidelines.md
+++ /dev/null
@@ -1,186 +0,0 @@
----
-layout: default
-title: "GSoC SubOrg Guidelines"
-show_main: false
----
-
-# GSoC SubOrg Guidelines
-
-OpenAstronomy has been accepted as an umbrella organisation since
-2016. We will keep applying every year, but that doesn't mean we
-will always be selected. If selected, we don't know the number of
-slots we will get till the contributor selection process ends. However,
-it's our intention to keep the process fair for the suborganisations
-and contributors.
-
-## I want to propose a new sub-org, what do I do?
-
-First, we recommend you to carefully read [Google's notes for first year organizations][Google-notes] and
-[the PSF guidelines for sub orgs][PSF-sub-orgs], which provide a general idea about the goals
-and concepts underpinning the Google Summer of Code program.
-Then, you need to be a member of the OpenAstronomy team. That process
-is simple (and free!). You need to be an open-development organisation
-and be related with astronomy. Then make a pull-request to [our repository][OA repository]
-adding a logo, a short description, etc.
-Follow the instructions in the example at the bottom of [the `memembers.yaml` file][members PR].
-The steering council will review your application and give you feedback.
-
-Once a member, you can start the path to participate on GSoC!
-First you should get familiarised with the program, [Google's mentor guide] is
-a wonderful resource with detailed information of every aspect of it.
-You need the following:
-- time! How much? a fair bit.
-- ideas! How many? One is enough. How good? more about this below.
-- helpers! You need mentors, at least two mentors per idea.
-
-Let's look into that in more detail:
-
-### Time
-
-The program has a few deadlines, and Google won't extend them even if
-their system is down closer to the end. They always allow a fair amount
-of time to submit whatever is needed. To be on the safe side of this,
-OpenAstronomy imposes a deadline of one day before Google's. You (and the contributors)
-will receive a reminder from the OpenAstronomy admins before such deadline.
-If you fail to meet these deadlines, your sub-org and contributors may be affected.
-
-Besides these deadlines, as a sub-org admin, you will have to keep track of
-all your contributors and mentors, following how they are doing with their projects
-and making sure they communicate regularly.
-
-### Ideas
-
-Normally organisations provide a list of ideas that can be done by a contributor
-in approximately three months (working full-time). Take a look at what [Google
-says on how to define a project](https://google.github.io/gsocguides/mentor/defining-a-project-ideas-list),
-then look at [other ideas OpenAstronomy's members have proposed this or previous years.](./#current-projects).
-
-To add your own, you will have to create a pull-request to [our repository][OA repository]
-following the [template](https://github.com/OpenAstronomy/openastronomy.github.io/blob/master/_projects/_template.md).
-Take a look at [how others have done it before](https://github.com/OpenAstronomy/openastronomy.github.io/pull/182).
-The admins and other members will review your ideas and provide feedback. Once
-done, they will be merged and displayed on our website.
-
-It's also possible that a contributor comes up with their own ideas! That's OK, the
-only limitation is that either the contributor or the admin will have to find a
-mentor for that idea who is familiar with the programming language, the repository,
-and the idea in itself.
-
-### Mentors
-
-For each project idea you need to have at least **two** mentors that are committed to participate
-in the programme. The mentors need most importantly be familiar with the repository,
-normally they are real core-contributors, they need to be familiar with the idea and
-have some idea on how that could be implemented.
-
-The mentors also need to have time for the project. We expect around
-10 hours per week (not only to mentoring, but to the organisation in itself). That
-time varies depending from project to project. But a minimum they should
-have a hour per week to discuss with the contributor their progress. This can be done
-as a 10 minutes per day, or as 1 hour video-call. Additionally, they will need
-to review the contributor code, discuss with other core-members to tell how the project
-is evolving, etc.
-
-Why two mentors? Mentors do also need a break. They may have a conference to attend
-or simply they could disappear from the project. Having two mentors will help to
-keep continuity to the contributor project and brings more knowledge to the table.
-
-Though we are not too strict about the availability of the mentors, we suggest
-they are at least one hour per day - in a non-crazy hour for contributor and mentor -
-at the chat room of the organisation. So the contributor can ask the questions needed
-on the organisation room. This can also be done via e-mail, but we believe the
-contributors need to familiarise with the rest of the community. (Plus others can
-help if the mentors are unavailable).
-
-Oh, and yes! you as an admin can also be a mentor. And don't forget to tell
-them to read [Google's mentor guide].
-
-## GSoC starts
-
-If we are accepted... what happens next?
-First, have you read the [mentor guide][Google's mentor guide]? If so, take a
-look at it again as a refresher!
-
-The application period for contributors is open just for two weeks. However, they
-will know for more than a month which organisations are participating. Even
-some contributors start to show interest from way before that!! The main purpose
-of the programme is to bring new contributors to the organisation, so the more they
-engage the better for your organisation. The dream contributor is that one that becomes
-mentor in the following years.
-
-
-### Contributor application
-
-Contributors will apply via the [GSoC portal][GSOC]. If it's not there, their
-application doesn't count. OpenAstronomy offers [a template for the contributors to
-apply][template-application-wiki]. Some suborgs require they post publicly their application on their wiki
-(see for example [SunPy's](https://github.com/sunpy/sunpy/wiki/GSoC)), others
-don't. In any case, it's good to encourage the contributors to share the draft of
-their applications with the mentors, so they can improve it before the deadline.
-
-OpenAstronomy has [certain rules for an application to be considered][contributor
-guidelines]. Familiarise with them to be able to inform your mentors and
-candidates.
-
-### Applications evaluation
-
-Each sub-org will have to evaluate the contributor application using a shared
-document within all the mentors. The OpenAstronomy administrators will
-share them with you. There you will grade the application, the engagement
-of the contributor shown so far, the quality of the pull request to the organisation,
-any notes from an interview you may do, etc.
-
-### Slots allocation
-
-Based on the numbers of mentors and outstanding applications your sub-org
-has, you will ask for a number of slots to the Open Astronomy administrators.
-They will collect these numbers from all the other sub-org and request them
-to Google.
-
-Google will then, after a few days, tell us how many slots we get. Nobody
-knows them *a priori*, and they vary considerably year after year.
-
-If the number of slots obtained is smaller than the requested, then the steering
-council will decide the distribution of the slots using the following points as guidelines:
-
-- The quality of the contributor proposal. A well-structured and described project will be favored,
-not simply a copy/paste from the ideas page.
-- What's the likelihood of that candidate contributor to become a long-term
-contributor? How has the contributor engaged till now?
-- Commitment of the mentors for the project. The mentors need to show they have
-committed to the sub-org and OpenAstronomy, and evidence of this will make the
-slot more likely to be allocated.
-For example, it is best to have mentors that have contributed to the organisation's
-code base and are familiar with the language and topic.
-- A project that enables cooperation with other sub-organisations of OpenAstronomy
-will generally be favored over those that do not.
-
-The process will be as open as possible including only the admins and mentors
-involved in the selection. Remember, we cannot disclose any information on contributor
-selection to the contributors before Google announces the selected contributors
-
-Note that OpenAstronomy usually assigns one slot for first year sub-orgs.
-That may change in a case-by-case basis, e.g., the sub-organisation already participated
-in previous editions of the GSoC (either by itself or with another umbrella organization),
-or has experience with similar coding outreach programmes, such as [ESA-SOCIS][ESA-SOCIS].
-
-### Evaluations
-
-Once the programme starts each contributor has to pass an evaluation per month.
-If one of them is failed (or not provided on time), the contributor cannot
-continue in the programme and therefore, not get paid.
-
-OpenAstronomy has also set a set of obligations for the contributors to do
-during the programme (e.g., a blog post every two weeks describing their progress, telecommuting with mentors weekly).
-If they are not followed the administrators will fail the contributors.
-
-
-[OA repository]: https://github.com/OpenAstronomy/openastronomy.github.io
-[contributor guidelines]: ./contributor_guidelines.html
-[Google's mentor guide]: https://google.github.io/gsocguides/mentor/
-[GSOC]: https://summerofcode.withgoogle.com/
-[members PR]: https://github.com/OpenAstronomy/openastronomy.github.io/blob/master/_data/members.yaml
-[ESA-SOCIS]: https://www.esa.int/Enabling_Support/Space_Engineering_Technology/SOCIS_The_ESA_Summer_of_Code_in_Space
-[Google-notes]: https://google.github.io/gsocguides/mentor/notes-for-first-year-organizations
-[PSF-sub-orgs]: https://python-gsoc.org/mentors.html#sub-orgs
-[template-application-wiki]: https://github.com/OpenAstronomy/openastronomy.github.io/wiki/Contributor-Application-template
diff --git a/img/icons/cgit.png b/img/icons/cgit.png
deleted file mode 100644
index 40b57860..00000000
Binary files a/img/icons/cgit.png and /dev/null differ
diff --git a/img/logo/logoOA.png b/img/logo/logoOA.png
deleted file mode 100644
index 3dc2f989..00000000
Binary files a/img/logo/logoOA.png and /dev/null differ
diff --git a/img/logo/logoOA.svg b/img/logo/logoOA.svg
deleted file mode 100644
index 20af1e3d..00000000
--- a/img/logo/logoOA.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
diff --git a/img/logo/logoOA.xcf b/img/logo/logoOA.xcf
deleted file mode 100644
index 955a6b24..00000000
Binary files a/img/logo/logoOA.xcf and /dev/null differ
diff --git a/img/logo/logoOA_embed.svg b/img/logo/logoOA_embed.svg
deleted file mode 100644
index 96efd7ca..00000000
--- a/img/logo/logoOA_embed.svg
+++ /dev/null
@@ -1,5546 +0,0 @@
-
-
-
-
diff --git a/img/members/casacore.svg b/img/members/casacore.svg
deleted file mode 100644
index 8ed708e4..00000000
--- a/img/members/casacore.svg
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
diff --git a/img/members/gnuastro.svg b/img/members/gnuastro.svg
deleted file mode 100644
index d5a39600..00000000
--- a/img/members/gnuastro.svg
+++ /dev/null
@@ -1,982 +0,0 @@
-
-
-
-
diff --git a/img/members/heliopy.png b/img/members/heliopy.png
deleted file mode 100644
index e4a5a025..00000000
Binary files a/img/members/heliopy.png and /dev/null differ
diff --git a/img/members/juliaastro.svg b/img/members/juliaastro.svg
deleted file mode 100644
index fcd05e1d..00000000
--- a/img/members/juliaastro.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
diff --git a/img/members/sherpa_logo.gif b/img/members/sherpa_logo.gif
deleted file mode 100644
index 9f5421b5..00000000
Binary files a/img/members/sherpa_logo.gif and /dev/null differ
diff --git a/index.md b/index.md
deleted file mode 100644
index aafdf072..00000000
--- a/index.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: default
----
-
-
-
-OpenAstronomy is a collaboration between open source astronomy and astrophysics
-projects to share resources, ideas, and to improve code.
-
-## Principles of OpenAstronomy
-
-The core principles of OpenAstronomy (OA) include:
-
-1. Open Source: OA projects are committed to their software being Open Source[1]. This promotes accessibility, reliability, and scientific reproducibility.
-2. Open Development: OA projects support the principle of Open Development[2], a model where the software is both *by* and *for* the community. More concretely, these projects try to work in publicly-visible spaces, encouraging discussion and participation from their public user community on both code and project-level decisions.
-3. Open Science: OA projects support reproducible science through the use of open and accessible data both through good data management practices and effective open software.
-
-[1] https://opensource.org/docs/osd
-[2] Tollerud, E., “Sustaining Community-Driven Software for Astronomy in the 2020s”, vol. 51, no. 7, 2019.
-
-## Get involved with OpenAstronomy
-
-The [OpenAstronomy discourse](https://community.openastronomy.org) is a great place to get involved with the community.
-You can freely browse the channels but posting and other interaction requires you to sign up.
-
-If you want to get involved with OpenAstronomy or maybe you have a project that
-would like to join the collaboration, please feel free to get in touch. The
-OpenAstronomy organisation has a mailing list (openastronomy@googlegroups.com)
-which is good place to introduce yourself.
-
-## Contact the OpenAstronomy Members
-
-See our [members](/members/) page for contact details of all the individual organisations.
diff --git a/linkcheck.skip.txt b/linkcheck.skip.txt
new file mode 100644
index 00000000..b827cd22
--- /dev/null
+++ b/linkcheck.skip.txt
@@ -0,0 +1,118 @@
+# One regex pattern per line. Lines starting with # are ignored.
+# Example:
+# https://example.com/skip-this
+
+# CircleCI artifact URLs — generated by the preview rebuild step and should
+# not be treated as external links to validate.
+output\.circle-artifacts\.com
+
+# OpenAstronomy production domain — canonical tags point here before
+# deployment and will 404 until the Astro site goes live.
+openastronomy\.org
+
+# X (Twitter) — blocks all automated/headless requests with HTTP 403.
+x\.com
+
+# GNU project website — returns HTTP 403 for headless fetch (WAF false positive).
+www\.gnu\.org
+
+# --- Dead domains from historical GSoC proposals (2015-2022) ---
+# These links were valid when the proposals were written but the projects/domains
+# are no longer active. Skipped so archival content remains unchanged.
+
+# EinsteinPy — project appears inactive; domain no longer resolves.
+einsteinpy\.org
+
+# poliastro documentation and blog — domains defunct (project moved to poliastro.space).
+docs\.poliastro\.space
+blog\.poliastro\.space
+
+# heliopy — project archived; documentation domain no longer resolves.
+docs\.heliopy\.org
+
+# IDL Astronomy Library — NASA server no longer accessible.
+idlastro\.gsfc\.nasa\.gov
+
+# HelioML textbook — GitHub Pages site is offline.
+helioml\.github\.io
+
+# ADS mirror at Strasbourg — server no longer operational.
+cdsads\.u-strasbg\.fr
+
+# TaQL Jupyter kernel site — server offline.
+taql\.astron\.nl
+
+# Fermi LAT Science Support Center — server unreachable.
+fermi\.gsfc\.nasa\.gov
+
+# Norwegian university server — offline.
+folk\.uio\.no
+
+# US Naval Observatory publications server — offline.
+aa\.usno\.navy\.mil
+
+# IAUSOFA library site — old URL, no longer accessible.
+www\.iausofa\.org
+
+# astropython.org community site — defunct.
+www\.astropython\.org
+
+# Canadian Space Weather — server offline.
+www\.spaceweather\.gc\.ca
+
+# SILSO/SIDC solar data — server offline or restructured.
+sidc\.oma\.be
+
+# AGI engineering tools page — commercial redirect broken.
+agi\.com/products/engineering-tools
+
+# ERAS project on readthedocs — used .org instead of .io; project inactive.
+eras\.readthedocs\.org
+
+# Deleted GitHub gist (JuanLu001).
+gist\.github\.com/Juanlu001
+
+# CDS Vizier documentation — URL no longer accessible.
+vizier\.u-strasbg\.fr
+
+# Bitbucket repositories that no longer exist.
+bitbucket\.org/aldebran
+bitbucket\.org/OPersian
+bitbucket\.com/italianmarssociety
+bitbucket\.org/yt_analysis
+
+# JuliaAstro AstroTime GitHub Pages — site offline.
+juliaastro\.github\.io/AstroTime
+
+# Old Julia docs used /en/latest/ — now versioned as /en/v1/.
+docs\.julialang\.org/en/latest
+
+# Old sunpy docs — pages moved or removed during docs restructuring.
+docs\.sunpy\.org/en/stable/code_ref
+docs\.sunpy\.org/en/stable/guide/acquiring_data/database
+docs\.sunpy\.org/en/stable/guide/tour
+docs\.sunpy\.org/en/stable/guide/units-coordinates
+docs\.sunpy\.org/en/stable/generated/gallery/plotting
+docs\.sunpy\.org/en/latest/guide/acquiring_data/hek
+docs\.sunpy\.org/en/latest/guide/acquiring_data/fido
+http://docs\.sunpy\.org
+
+# Old astropy docs — specific pages moved during restructuring.
+docs\.astropy\.org/en/stable/coordinates/observing-example
+http://docs\.astropy\.org
+
+# RADIS docs — hitran-spectra example page removed/moved.
+radis\.readthedocs\.io/en/latest/examples/hitran-spectra
+
+# GitHub refs that no longer exist (deleted branches, moved repos, removed files).
+github\.com/sunpy/sunpy/tree/unidown
+github\.com/sunpy/sunpy/blob/master/sunpy/net/helioviewer\.py
+github\.com/sunpy/ndcube/projects/
+github\.com/sunpy/irispy/issues/27
+github\.com/Hypnus1803/flow_maps
+github\.com/gagan-aryan$
+github\.com/arunavabasu-03$
+github\.com/at88mph/opencadc_stc
+github\.com/kbg/drms/issues/3
+github\.com/astropy/astropy/issue/5626
+github\.com/suzil/radis-app/issues
diff --git a/members.md b/members.md
deleted file mode 100644
index 9c83779f..00000000
--- a/members.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: page
-title: Members
-permalink: /members/
----
-
-## Who is part of OpenAstronomy?
-
-
-{% assign sorted_members = site.data.members | sort %}
-{% for member in sorted_members %}
-
diff --git a/src/components/gsoc/Modal.astro b/src/components/gsoc/Modal.astro
new file mode 100644
index 00000000..a6e81882
--- /dev/null
+++ b/src/components/gsoc/Modal.astro
@@ -0,0 +1,66 @@
+---
+/**
+ * Modal overlay for displaying a GSoC project's detail panel.
+ *
+ * The modal is initially `hidden`. When a ProjectCard button is clicked, the
+ * corresponding ProjectDetail element's inner HTML is copied into the modal
+ * content area and the modal is shown. Closing can be done via:
+ * - The "Close" button
+ * - Clicking the backdrop
+ * - Pressing Escape
+ */
+---
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/gsoc/PeopleSection.astro b/src/components/gsoc/PeopleSection.astro
new file mode 100644
index 00000000..8c35b3b5
--- /dev/null
+++ b/src/components/gsoc/PeopleSection.astro
@@ -0,0 +1,45 @@
+---
+/**
+ * Renders a people grid section (mentors or admins) for a GSoC season page.
+ * Each person is shown with their GitHub avatar and a link to their profile.
+ */
+
+type Props = {
+ id: string;
+ heading: string;
+ intro: string;
+ handles: string[];
+};
+
+const { id, heading, intro, handles } = Astro.props;
+---
+
+
+
+
diff --git a/src/components/gsoc/ProjectCard.astro b/src/components/gsoc/ProjectCard.astro
new file mode 100644
index 00000000..161f436c
--- /dev/null
+++ b/src/components/gsoc/ProjectCard.astro
@@ -0,0 +1,42 @@
+---
+/**
+ * Summary card for a single GSoC project idea, shown in the season grid.
+ * Clicking the card opens the detail modal via the data-project-detail attribute.
+ */
+import type { GsocProject } from "../../lib/gsoc.ts";
+
+const { project } = Astro.props as { project: GsocProject };
+const detailId = `detail-${project.anchor}`;
+---
+
+
diff --git a/src/components/gsoc/ProjectDetail.astro b/src/components/gsoc/ProjectDetail.astro
new file mode 100644
index 00000000..00db74c3
--- /dev/null
+++ b/src/components/gsoc/ProjectDetail.astro
@@ -0,0 +1,97 @@
+---
+/**
+ * Expanded detail panel for a GSoC project.
+ *
+ * This element is rendered `hidden` in the page and its content is copied into
+ * the modal overlay when the user clicks the corresponding ProjectCard. It must
+ * have an `id` that matches the `data-project-detail` attribute of the card.
+ */
+import type { GsocProject } from "../../lib/gsoc.ts";
+
+const { project } = Astro.props as { project: GsocProject };
+const ProjectContent = project.Content;
+---
+
+
diff --git a/src/content/config.ts b/src/content/config.ts
new file mode 100644
index 00000000..2cc00450
--- /dev/null
+++ b/src/content/config.ts
@@ -0,0 +1,23 @@
+import { defineCollection, z } from "astro:content";
+
+const posts = defineCollection({
+ type: "content",
+ schema: z
+ .object({
+ title: z.string(),
+ date: z.date(),
+ author: z.string().optional(),
+ meta: z.string().optional(),
+ })
+ .passthrough(),
+});
+
+const pages = defineCollection({
+ type: "content",
+ schema: z.object({}).passthrough(),
+});
+
+export const collections = {
+ posts,
+ pages,
+};
diff --git a/src/content/pages/gsoc/2015/ideas.md b/src/content/pages/gsoc/2015/ideas.md
new file mode 100644
index 00000000..6b17d432
--- /dev/null
+++ b/src/content/pages/gsoc/2015/ideas.md
@@ -0,0 +1,18 @@
+---
+title: "Ideas page for Google Summer of Code 2015"
+show_main: false
+---
+
+# Ideas page for Google Summer of Code 2015
+
+## Ideas page for GSoC 2015
+
+Browse ideas for the following projects:
+
+- [Astropy core package](../ideas_astropy/)
+- [Packages affiliated with Astropy](../ideas_astropy_affiliated/)
+- [ChiantiPy](../ideas_chiantipy/)
+- [SunPy](../ideas_sunpy/)
+- [yt](../ideas_yt/)
+
+For each participating project, the ideas are organized from easiest to hardest.
diff --git a/gsoc/gsoc2015/ideas_astropy.md b/src/content/pages/gsoc/2015/ideas_astropy.md
similarity index 68%
rename from gsoc/gsoc2015/ideas_astropy.md
rename to src/content/pages/gsoc/2015/ideas_astropy.md
index 1c10e206..1100b47b 100644
--- a/gsoc/gsoc2015/ideas_astropy.md
+++ b/src/content/pages/gsoc/2015/ideas_astropy.md
@@ -1,21 +1,22 @@
---
-layout: default
-title: "Ideas for Astropy"
+title: "Ideas for Astropy"
show_main: false
ideas_team: Astropy core package
---
-### Implement Distribution Support for Quantity
+# Ideas for Astropy
-*Suggested Mentor(s):* [Erik Tollerud](http://github.com/eteq)
+## Implement Distribution Support for Quantity
-*Difficulty:* Beginner to Intermediate
+_Suggested Mentor(s):_ [Erik Tollerud](http://github.com/eteq)
-*Astronomy knowledge needed:* none, but statistics knowledge/background useful
+_Difficulty:_ Beginner to Intermediate
-*Programming skills:* Python
+_Astronomy knowledge needed:_ none, but statistics knowledge/background useful
-#### Description
+_Programming skills:_ Python
+
+### Description
The [Quantity](http://docs.astropy.org/en/stable/units/index.html) class is
powerful but doesn’t have particularly useful support for uncertainties on
@@ -29,22 +30,21 @@ distributions. If there is time, this could also involve expanding this system
to support common analytically-representable distributions such as Gaussian and
Poisson distributions.
+## Implement image rasterization methods for models
-### Implement image rasterization methods for models
-
-*Suggested Mentor(s):* [Christoph Deil](http://github.com/cdeil)
+_Suggested Mentor(s):_ [Christoph Deil](http://github.com/cdeil)
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Astronomy knowledge needed:* Basic
+_Astronomy knowledge needed:_ Basic
-*Programming skills:* Python, Cython
+_Programming skills:_ Python, Cython
-#### Description
+### Description
When fitting models to binned data, evaluating the model at the bin centers leads to incorrect results if the model changes significantly within a bin. E.g. think of an image where the point spread function (PSF) only has a width slightly above the pixel size and you want to distinguish small Galaxies from stars.
-Currently Astropy models have an ``evaluate`` method that can be used to
+Currently Astropy models have an `evaluate` method that can be used to
evaluate them on a grid of pixel centers, there’s also an oversampling function
to get a better representation of the expected flux in pixels. It would be
useful to add methods that allow fast and precise rasterization of models,
@@ -62,25 +62,25 @@ should be interested in model fitting and image rasterisation as well as
profiling and extensive testing of a given method to make it “just work” for
the end user.
-### Add indexing capability to Table object
+## Add indexing capability to Table object
-*Suggested Mentor(s):* Tom Aldcroft (Astropy), Stuart Mumford (SunPy)
+_Suggested Mentor(s):_ Tom Aldcroft (Astropy), Stuart Mumford (SunPy)
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Astronomy knowledge needed:* none
+_Astronomy knowledge needed:_ none
-*Programming skills:* Python, Cython, familiarity with database algorithms
+_Programming skills:_ Python, Cython, familiarity with database algorithms
-#### Description
+### Description
The [Table](http://docs.astropy.org/en/stable/table/index.html) class is the
-core astropy class for storing and manipulating tabular data. Currently it
+core astropy class for storing and manipulating tabular data. Currently it
supports a limited set of database-like capabilities including table joins and
-grouping. A natural extension of this is to provide the ability to create and
-maintain an index on one or more columns as well as a table primary key. With
+grouping. A natural extension of this is to provide the ability to create and
+maintain an index on one or more columns as well as a table primary key. With
these indexed columns available then certain selection and query operations
-could be highly optimized. The challenge is to maintain the integrity of the
+could be highly optimized. The challenge is to maintain the integrity of the
indexes as column or table properties change, using state of the art algorithms
for high performance.
@@ -101,17 +101,17 @@ To summarize:
- Optimize existing table operations to use indexes where possible
- Add new methods to select table rows based on column values
-### Unify and improve file handling
+## Unify and improve file handling
-*Suggested Mentor(s):* [Michael Droettboom](http://github.com/mdboom)
+_Suggested Mentor(s):_ [Michael Droettboom](http://github.com/mdboom)
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* none
+_Astronomy knowledge needed:_ none
-*Programming skills:* Python, Unix features
+_Programming skills:_ Python, Unix features
-#### Description
+### Description
We have a number of packages that read and write data to files and file-like
objects. While there was some initial effort to unify this code in
@@ -126,40 +126,40 @@ fetching (see [astropy/#3446](https://github.com/astropy/astropy/issues/3446),
and OS-level file locking to make multiprocessing applications that write to
files more robust.
-### Implement missing astropy.modeling functionality
+## Implement missing astropy.modeling functionality
-*Suggested Mentor(s):* [Christoph Deil](http://github.com/cdeil)
+_Suggested Mentor(s):_ [Christoph Deil](http://github.com/cdeil)
-*Difficulty:* Intermediate to expert
+_Difficulty:_ Intermediate to expert
-*Astronomy knowledge needed:* Basic
+_Astronomy knowledge needed:_ Basic
-*Programming skills:* Python
+_Programming skills:_ Python
-#### Description
+### Description
Implement some basic features are still missing in the astropy.modeling package:
-* Fit parameter errors (symmetric and profile likelihood)
-* Poisson fit statistic
-* PSF-convolved models
-* model parameter and fit result serialisation, e.g. to YAML or JSON or XML (e.g. some astronomers use [XML](http://fermi.gsfc.nasa.gov/ssc/data/analysis/scitools/source_models.html))
+- Fit parameter errors (symmetric and profile likelihood)
+- Poisson fit statistic
+- PSF-convolved models
+- model parameter and fit result serialisation, e.g. to YAML or JSON or XML (e.g. some astronomers use [XML](http://fermi.gsfc.nasa.gov/ssc/data/analysis/scitools/source_models.html))
For the parameter error and Poisson fit statistic part some statistics background is needed, as well as interest in discussing and finding a good API for these things.
An optional fun application at the end of this project (if model and fit result serialisation is implemented) could be to develop an interactive image fitting GUI (e.g. with IPython widgets in the web browser) for common 2D Astropy models, showing data, model and residual images and letting the user adjust model parameters and display fit statistics and results interactively.
-### Implement framework for handling velocities and velocity transforms in astropy.coordinates
+## Implement framework for handling velocities and velocity transforms in astropy.coordinates
-*Suggested Mentor(s):* [Adrian Price-Whelan](http://github.com/adrn) & [Erik Tollerud](http://github.com/eteq)
+_Suggested Mentor(s):_ [Adrian Price-Whelan](http://github.com/adrn) & [Erik Tollerud](http://github.com/eteq)
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* understanding of coordinate transformations, some knowledge of astronomical coordinate systems would be useful
+_Astronomy knowledge needed:_ understanding of coordinate transformations, some knowledge of astronomical coordinate systems would be useful
-*Programming skills:* Python
+_Programming skills:_ Python
-#### Description
+### Description
The coordinates subpackage currently only supports transforming positional
coordinates, but it would be useful to develop a consistent framework for also
@@ -169,29 +169,28 @@ motion. This project could be:
1. working with us to develop a consistent API for handling velocities within coordinates,
2. developing a trial implementation of an API,
-3. actually doing core development to implement the new features, or
-4. some combination of all of the above.
+3. actually doing core development to implement the new features, or
+4. some combination of all of the above.
-### Implement Public API for ERFA
+## Implement Public API for ERFA
-*Suggested Mentor(s):* [Erik Tollerud](http://github.com/eteq)
+_Suggested Mentor(s):_ [Erik Tollerud](http://github.com/eteq)
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* None required, but may be helpful for understanding ERFA functionality
+_Astronomy knowledge needed:_ None required, but may be helpful for understanding ERFA functionality
-*Programming skills:* Python, Cython, C
+_Programming skills:_ Python, Cython, C
-#### Description
+### Description
Some of the major functionality for Astropy uses the ERFA C library (adapted from the IAU SOFA library) as the back-end for
-computational "heavy-lifting". Members of the community have expressed a desire to use this lower-level python wrapper
-around ERFA for other purposes that may not be directly relevant for Astropy. So this project would involve making the
-necessary changes to make the ERFA python API public. This includes:
+computational "heavy-lifting". Members of the community have expressed a desire to use this lower-level python wrapper
+around ERFA for other purposes that may not be directly relevant for Astropy. So this project would involve making the
+necessary changes to make the ERFA python API public. This includes:
-* Getting the documentation up to the astropy standard (currently it is mostly auto-generated verbatim from the C comments).
-* Implementing a more complete test suite for the python side of the code.
-* Possibly moving it to a separate package as part of the liberfa GitHub organization. This would also include making the necessary
+- Getting the documentation up to the astropy standard (currently it is mostly auto-generated verbatim from the C comments).
+- Implementing a more complete test suite for the python side of the code.
+- Possibly moving it to a separate package as part of the liberfa GitHub organization. This would also include making the necessary
changes to ensure everything continues to work in Astropy.
-* Any other steps necessary to ensure the resulting package (or sub-package of Astropy) is stable and relatively easy to use.
-
+- Any other steps necessary to ensure the resulting package (or sub-package of Astropy) is stable and relatively easy to use.
diff --git a/gsoc/gsoc2015/ideas_astropy_affiliated.md b/src/content/pages/gsoc/2015/ideas_astropy_affiliated.md
similarity index 65%
rename from gsoc/gsoc2015/ideas_astropy_affiliated.md
rename to src/content/pages/gsoc/2015/ideas_astropy_affiliated.md
index fbc2cd25..0dbb8e22 100644
--- a/gsoc/gsoc2015/ideas_astropy_affiliated.md
+++ b/src/content/pages/gsoc/2015/ideas_astropy_affiliated.md
@@ -1,67 +1,66 @@
---
-layout: default
-title: "Ideas for Astropy-affiliated packages"
+title: "Ideas for Astropy-affiliated packages"
show_main: false
ideas_team: Packages affiliated with Astropy
---
-### Develop an affiliated package for observation planning / scheduling
+# Ideas for Astropy-affiliated packages
-*Suggested Mentor(s):* [Christoph Deil](http://github.com/cdeil)
+## Develop an affiliated package for observation planning / scheduling
-*Difficulty:* Beginner
+_Suggested Mentor(s):_ [Christoph Deil](http://github.com/cdeil)
-*Astronomy knowledge needed:* Intermediate
+_Difficulty:_ Beginner
-*Programming skills:* Python
+_Astronomy knowledge needed:_ Intermediate
-#### Description
+_Programming skills:_ Python
+
+### Description
Now that Astropy can transform from horizontal (altitude/azimuth) to sky
coordinates it’s possible to develop tools for observation planning /
scheduling (see
-[here](http://docs.astropy.org/en/stable/coordinates/observing-example.html)
+[the observing example](http://docs.astropy.org/en/stable/coordinates/observing-example.html)
for an example). It would be nice to start developing an affiliated package
that can be used by observers and observatories to plan and schedule
observations. This project could go in a few different directions, including:
-* creating typical tables and plots for observation planning
-* optimising scheduling of observations for given target lists and telescope slew speed / exposure lengths for a given night or even month / year
-* contribute sun / moon rise / set functionality to astropy coordinates
-* a desktop or web GUI
+- creating typical tables and plots for observation planning
+- optimising scheduling of observations for given target lists and telescope slew speed / exposure lengths for a given night or even month / year
+- contribute sun / moon rise / set functionality to astropy coordinates
+- a desktop or web GUI
The project could start with a look at the functionality of existing tools
and then gather some input on the astropy mailing list what the community
wants. The student should have an interest in coordinates, observations
planning / scheduling and plotting / GUIs.
+## Contribute gamma-ray data analysis methods to Gammapy
-### Contribute gamma-ray data analysis methods to Gammapy
-
-*Suggested Mentor(s):* [Christoph Deil](http://github.com/cdeil), [Axel Donath](http://github.com/adonath)
+_Suggested Mentor(s):_ [Christoph Deil](http://github.com/cdeil), [Axel Donath](http://github.com/adonath)
-*Difficulty:* Beginner to intermediate
+_Difficulty:_ Beginner to intermediate
-*Astronomy knowledge needed:* Basic
+_Astronomy knowledge needed:_ Basic
-*Programming skills:* Python
+_Programming skills:_ Python
-#### Description
+### Description
[Gammapy](https://docs.gammapy.org/) is an Astropy-affiliated package to simulate and analyse data from gamma-ray telescopes such as Fermi, H.E.S.S. and CTA. A lot of basic functionality is still missing, specifically we think that contributing to one of the sub-packages gammapy.background (background modeling), gammapy.detect (source detection methods) or gammapy.spectrum (spectral analysis methods) would be a good GSoC project if you are interested in implementing specific established data analysis algorithms (e.g. adaptive-ring or reflected region or template background estimation, or spectrum forward-folding or unfolding methods) used in gamma-ray astronomy (but no prior gamma-ray data experience / knowledge needed).
+## Astropy Acknowledgement/Citation Generator
-### Astropy Acknowledgement/Citation Generator
-
-*Suggested Mentor(s):* [Erik Tollerud](http://github.com/eteq)
+_Suggested Mentor(s):_ [Erik Tollerud](http://github.com/eteq)
-*Difficulty:* Beginner to Intermediate
+_Difficulty:_ Beginner to Intermediate
-*Astronomy knowledge needed:* none, although some experience with astronomy citation practices might be useful
+_Astronomy knowledge needed:_ none, although some experience with astronomy citation practices might be useful
-*Programming skills:* Python and LaTeX/BibTeX
+_Programming skills:_ Python and LaTeX/BibTeX
-#### Description
+### Description
Some parts of Astropy and affiliated packages use algorithms or tools that have
been published in the scientific literature (this includes Astropy itself). To
@@ -72,31 +71,31 @@ have it print or write a file that tells them what papers to cite. Bonus points
if this actually can show BibTeX or LaTeX bibliography entries that can be just
dropped into papers with minimal effort on the part of the user.
-### Adding further spectral standards to specutils
+## Adding further spectral standards to specutils
-*Suggested Mentor(s)*: Adam Ginsburg & Wolfgang Kerzendorf
+_Suggested Mentor(s)_: Adam Ginsburg & Wolfgang Kerzendorf
-*Difficulty*: Intermediate
+_Difficulty_: Intermediate
-*Programming skills*: Python
+_Programming skills_: Python
-#### Description
+### Description
-Specutils is a package within the astropy collection that deals with operations with spectra. Apart from imaging, spectra are the second main data product in astronomy. While imaging data is collected by hooking a giant DSLR at the end of telescope and sticking coloured glass between telescope and DSLR (a filter), spectra are obtained by breaking light up into its components and then observing the resulting distribution. These data are saved in a variety of formats.
+Specutils is a package within the astropy collection that deals with operations with spectra. Apart from imaging, spectra are the second main data product in astronomy. While imaging data is collected by hooking a giant DSLR at the end of telescope and sticking coloured glass between telescope and DSLR (a filter), spectra are obtained by breaking light up into its components and then observing the resulting distribution. These data are saved in a variety of formats.
-Currently, we are able to read and write a subset of standards that are out there. As a project, we suggest to implement the remaining unsupported standards. All of the code is in Python and a good understanding of classes is needed for this project.
+Currently, we are able to read and write a subset of standards that are out there. As a project, we suggest to implement the remaining unsupported standards. All of the code is in Python and a good understanding of classes is needed for this project.
-### Improve pyregion and pyds9
+## Improve pyregion and pyds9
-*Suggested Mentor(s):* [Christoph Deil](http://github.com/cdeil)
+_Suggested Mentor(s):_ [Christoph Deil](http://github.com/cdeil)
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Astronomy knowledge needed:* Basic
+_Astronomy knowledge needed:_ Basic
-*Programming skills:* Python
+_Programming skills:_ Python
-#### Description
+### Description
The pyregion package is very useful to work with ds9 and CIAO region files. It
is now at
@@ -115,29 +114,26 @@ interested in sky coordinates and regions, parsing, visualisation, writing
tests and docs, and for the ds9 interfaces some Cython coding is probably
needed.
-### Revamp astropython.org web site
+## Revamp astropython.org web site
-*Suggested Mentor(s):* Tom Aldcroft
+_Suggested Mentor(s):_ Tom Aldcroft
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Astronomy knowledge needed:* Basic / none
+_Astronomy knowledge needed:_ Basic / none
-*Programming skills:* Python, web development (javascript etc)
+_Programming skills:_ Python, web development (javascript etc)
-#### Description
+### Description
The [http://www.astropython.org](http://www.astropython.org) site is one of the
top two generic informational / resource sites about Python in astronomy. This
site uses Google App Engine and is basically all custom code built around the
bloggart engine. Currently it is getting a bit stale for a few reasons:
-* There is no good mechanism for guest posting to expand the community of people contributing.
-* It is painful to add content because of the antiquated entry interface which now seems to work only on firefox.
-* The comment system is lacking (no feedback to comment authors etc).
-* The website code itself is convoluted and difficult to maintain / improve
-
-The proposal is to start over with all modern tools to bring fresh energy and involvement into this project. All details of how to do this to be determined, but one requirement is to migrate all the current content. Part of this would be re-evaluating current resources as well as digging around to freshen up the resource list.
-
-
+- There is no good mechanism for guest posting to expand the community of people contributing.
+- It is painful to add content because of the antiquated entry interface which now seems to work only on firefox.
+- The comment system is lacking (no feedback to comment authors etc).
+- The website code itself is convoluted and difficult to maintain / improve
+The proposal is to start over with all modern tools to bring fresh energy and involvement into this project. All details of how to do this to be determined, but one requirement is to migrate all the current content. Part of this would be re-evaluating current resources as well as digging around to freshen up the resource list.
diff --git a/gsoc/gsoc2015/ideas_chiantipy.md b/src/content/pages/gsoc/2015/ideas_chiantipy.md
similarity index 50%
rename from gsoc/gsoc2015/ideas_chiantipy.md
rename to src/content/pages/gsoc/2015/ideas_chiantipy.md
index 364f90d4..2d348e3b 100644
--- a/gsoc/gsoc2015/ideas_chiantipy.md
+++ b/src/content/pages/gsoc/2015/ideas_chiantipy.md
@@ -1,44 +1,45 @@
---
-layout: default
-title: "Ideas for ChiantiPy"
+title: "Ideas for ChiantiPy"
show_main: false
ideas_team: ChiantiPy
---
-### GUI Spectral Explorer
+# Ideas for ChiantiPy
-*Suggested Mentor(s):* [Ken Dere](http://sourceforge.net/u/kdere/profile/)
+## GUI Spectral Explorer
-*Difficulty:* Intermediate
+_Suggested Mentor(s):_ [Ken Dere](http://sourceforge.net/u/kdere/profile/)
-*Astronomy knowledge needed:* A basic understand of astrophysical spectroscopy
+_Difficulty:_ Intermediate
-*Programming skills:* Python
+_Astronomy knowledge needed:_ A basic understand of astrophysical spectroscopy
-#### Description
+_Programming skills:_ Python
+
+### Description
The goal of this project is to provide a graphical user interface to
enable a user to explore observed spectra and compare it with
-theoretical spectra. The basis for the theoretical spectra is the
+theoretical spectra. The basis for the theoretical spectra is the
CHIANTI atomic database for astrophysical spectroscopy that was
-first released in 1997. Programmatic access to the database, which
+first released in 1997. Programmatic access to the database, which
is freely available, is provided by the ChiantiPy package -- a pure
-python package. It is highly object oriented with each ion, such as
-Fe XVII, being the basic object. Higher level objects are often
+python package. It is highly object oriented with each ion, such as
+Fe XVII, being the basic object. Higher level objects are often
assembled from a collection of ions, such as when calculating a
-spectrum. ChiantiPy uses the CHIANTI database to calculate line and
+spectrum. ChiantiPy uses the CHIANTI database to calculate line and
continuum intensities as a function of temperature, electron
density. This can be done for a set of elemental abundances in
-CHIANTI or for a user provided set of elemental abundances. At
+CHIANTI or for a user provided set of elemental abundances. At
present, if a user wants to compare CHIANTI theoretical spectra it
-must be done on a case-by-case basis. A GUI explorer, written in
+must be done on a case-by-case basis. A GUI explorer, written in
Python and preferably PyQt or Wx based, will provide an integrated
tool to import observed spectra and plot them alongside theoretical
-spectra. It will further allow the user to understand what spectra
+spectra. It will further allow the user to understand what spectra
lines contribute to various spectral line profile, how the predicted
spectra vary as a function of temperature and density.
It will be necessary to develop techniques to import observed
-spectra from a variety sources. Typical sources are in FITS files,
-HDF5 files, or csv files. It will also be important to allow users
+spectra from a variety sources. Typical sources are in FITS files,
+HDF5 files, or csv files. It will also be important to allow users
import their data through modules of their own.
diff --git a/gsoc/gsoc2015/ideas_sunpy.md b/src/content/pages/gsoc/2015/ideas_sunpy.md
similarity index 79%
rename from gsoc/gsoc2015/ideas_sunpy.md
rename to src/content/pages/gsoc/2015/ideas_sunpy.md
index 40a23ca0..30b39fff 100644
--- a/gsoc/gsoc2015/ideas_sunpy.md
+++ b/src/content/pages/gsoc/2015/ideas_sunpy.md
@@ -1,21 +1,23 @@
---
-layout: default
-title: "Ideas for sunpy"
+title: "Ideas for sunpy"
show_main: false
ideas_team: SunPy
---
-### Improvements to the SunPy Database
+# Ideas for sunpy
-*Suggested Mentor(s):* [Stuart Mumford](http://github.com/Cadair), [Steven Christe](http://github.com/ehsteve)
+## Improvements to the SunPy Database
-*Difficulty:* Beginner
+_Suggested Mentor(s):_ [Stuart Mumford](http://github.com/Cadair), [Steven Christe](http://github.com/ehsteve)
-*Astronomy knowledge needed:* None
+_Difficulty:_ Beginner
-*Programming skills:* Python, some database knowledge would be helpful, but not required.
+_Astronomy knowledge needed:_ None
+
+_Programming skills:_ Python, some database knowledge would be helpful, but not required.
+
+### Description
-#### Description
The `database` module provides functionality to users to manage collections of files on disk in a way not reliant upon folder structure and file name.
The database allows users to find files on disk by either physical parameters, such as wavelength and time or properties of the instrument such as name and spacecraft.
It also allows more complex queries by enabling searches of the raw meta data associated with the files.
@@ -26,21 +28,19 @@ The improvements to the database functionality that would be implemented by this
1. Support for relative paths in the database module [#783](https://github.com/sunpy/sunpy/issues/783) to allow a centralised database with multiple users, all referencing a central file store mounted with different absolute paths on each client.
1. Supporting all data supported by the `sunpy.lightcurve` module in the database. The major hurdle here is the lack of standardisation in the file used by this data.
-There are various other maintenance tasks which need undertaking (https://github.com/sunpy/sunpy/labels/Database) which would be a good way for someone interested in this project to familiarise themselves with the codebase.
-
+There are various other maintenance tasks which need undertaking () which would be a good way for someone interested in this project to familiarise themselves with the codebase.
+## Integrating ChiantiPy and SunPy
-### Integrating ChiantiPy and SunPy
+_Suggested Mentor(s):_ [Dan Ryan](https://github.com/DanRyanIrish), [Ken Dere](http://sourceforge.net/u/kdere/profile/)
-*Suggested Mentor(s):* [Dan Ryan](https://github.com/DanRyanIrish), [Ken Dere](http://sourceforge.net/u/kdere/profile/)
+_Difficulty:_ Beginner
-*Difficulty:* Beginner
+_Astronomy knowledge needed:_ Some knowledge of spectra.
-*Astronomy knowledge needed:* Some knowledge of spectra.
+_Programming skills:_ Python.
-*Programming skills:* Python.
-
-#### Description
+### Description
The [CHIANTI](http://www.chiantidatabase.org/) atomic physics database is a valuable resource for solar physics. The CHIANTI database holds a large amount of information on the physical properties of different elements in different ionisation states and enabled the calculation of various parameters from this information. Using CHIANTI it is possible to calculate the spectra of various types of solar plasma (e.g., flare, quiet sun, etc.) from the observed elemental abundances and ionisation states.
These synthetic spectra are essential for comparing to the data observed by various instruments to calculate the response functions of the instruments and to compare to the properties of observed plasma to allow the calculation of physical parameters such as temperature.
@@ -53,21 +53,21 @@ Other potential application of ChiantiPy in SunPy include:
1. Calculation of AIA temperature response functions from ChiantiPy
contribution functions.
-**Expected Outcomes**: This project would facilitate SunPy becoming independent from Solar SoftWare (SSW) in producing and maintaining files required by the sunpy.instr.goes module for determining the thermodynamic properties of the emitting plasma observed by GOES. It would also allow SunPy users to calculate spectra and exclusively through Python without relying on SSW.
-
+### Expected Outcomes
+This project would facilitate SunPy becoming independent from Solar SoftWare (SSW) in producing and maintaining files required by the sunpy.instr.goes module for determining the thermodynamic properties of the emitting plasma observed by GOES. It would also allow SunPy users to calculate spectra and exclusively through Python without relying on SSW.
-### Support for analysis of Solar Energetic Particles
+## Support for analysis of Solar Energetic Particles
-*Suggested Mentor(s):* [David Pérez-Suárez](http://github.com/dpshelio)
+_Suggested Mentor(s):_ [David Pérez-Suárez](http://github.com/dpshelio)
-*Difficulty:* Beginner
+_Difficulty:_ Beginner
-*Astronomy knowledge needed:* None
+_Astronomy knowledge needed:_ None
-*Programming skills:* Python.
+_Programming skills:_ Python.
-#### Description
+### Description
SunPy is able to read a lightcurve from different sources (GOES x-ray, Lyra, Norh,...), however these are not all.
SoHO/ERNE (Energetic and Relativistic Nuclei and Electron experiment on board SoHO) measures
@@ -78,19 +78,18 @@ able to read these files in as a lightcurve object and allow to perform
the basic operations used when such data is analysed:
eg. energy ranges binning, visualisation, ...
+## Lightcurve Refactor
+_Suggested Mentor(s):_ [Stuart Mumford](http://github.com/Cadair), [Dan Ryan](https://github.com/DanRyanIrish), [Andrew Inglis](https://github.com/aringlis)
-### Lightcurve Refactor
+_Difficulty:_ Intermediate
-*Suggested Mentor(s):* [Stuart Mumford](http://github.com/Cadair), [Dan Ryan](https://github.com/DanRyanIrish), [Andrew Inglis](https://github.com/aringlis)
+_Astronomy knowledge needed:_ None
-*Difficulty:* Intermediate
+_Programming skills:_ Python
-*Astronomy knowledge needed:* None
+### Description
-*Programming skills:* Python
-
-#### Description
The `Lightcurve` class is one of the three core datatypes in SunPy, along with Map and Spectra.
`Lightcurve` is designed to read in, process and store meta data related to solar physics time series data.
Currently, `Lightcurve` uses the pandas library as its underlying data structure, however, this is subject to change in the future.
@@ -108,29 +107,26 @@ This leaves `lightcurve` in a similar position to `map` where the data acquisiti
Therefore, enabling the implementation of a factory class like `Map`
for the lightcurve module.
-**Expected Outcomes**
+### Expected Outcomes
Someone under taking this project will complete the following tasks:
1. Become familiar with the `UnifiedDownloader` code, if it has not been accepted into the SunPy codebase, complete the remaining tasks for this to be achieved.
1. Re-write any new lightcurve sources that were not included in the `UnifiedDownloader` code as sources for `UnifiedDownloader`.
-1. Write a factory class for `lightcurve` similar to the `sunpy.map.Map` class. This class will be a generic constructor for `lightcurve` allowing the user to instantiate any one of the many subclasses of `GenericLightcurve` present in `sunpy.lightcurve.sources`. The API design for the factory class is here: https://github.com/sunpy/sunpy-SEP/pull/6
+1. Write a factory class for `lightcurve` similar to the `sunpy.map.Map` class. This class will be a generic constructor for `lightcurve` allowing the user to instantiate any one of the many subclasses of `GenericLightcurve` present in `sunpy.lightcurve.sources`. The API design for the factory class is here:
1. Design and develop a robust method of dealing with lightcurve meta data, which can handle joining different parts of timeseries from different files, each with their own meta data. (See [#1122](https://github.com/sunpy/sunpy/issues/1122))
+## IRIS, 4D Cubes and GUI
+_Suggested Mentors:_ [Steven Christe](http://github.com/ehsteve) (NASA GSFC, SunPy), [Nabil Freij](https://github.com/nabobalis) (Sheffield University)
-### IRIS, 4D Cubes and GUI
-
-*Suggested Mentors:* [Steven Christe](http://github.com/ehsteve) (NASA GSFC, SunPy), [Nabil Freij](https://github.com/nabobalis) (Sheffield University)
-
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* None
+_Astronomy knowledge needed:_ None
-*Programming skills:* Python and basic knowledge of GUI design.
+_Programming skills:_ Python and basic knowledge of GUI design.
-
-#### Description:
+### Description
Recently, a new Sun observing satellite was launched, called [IRIS](http://iris.lmsal.com).
It performs high-resolution, multi-wavelength observations of the solar atmosphere.
@@ -142,15 +138,15 @@ Using this language, a GUI was created called [CRISPEX](http://folk.uio.no/grega
This project aims to create a smaller scale version that uses [Ginga](http://ejeschke.github.io/ginga/) as a backend.
Ginga is a file viewer that was created with astrophysics in mind.
-It allows basic manipulation of FIT files, which are the standard data container in astrophysics.
+It allows basic manipulation of FIT files, which are the standard data container in astrophysics.
A Python plugin will be created and integrated into Ginga, allowing the user to open 3D/4D datasets and perform basic analysis, such as, slit extraction.
To achieve this, a previous ESA summer project created a cube class.
While it was finished, it was never integrated into SunPy.
-The code was created to hold and manipulate complex datatypes.
+The code was created to hold and manipulate complex datatypes.
It is similar in style to the SunPy Map Class and follows that convention.
-It however, has extra features enabling specific data formats to be extracted that the user requires, for example, a spectrum.
-The student will need to become familiar with this code, as small tweaks need to occur before it is added to SunPy.
+It however, has extra features enabling specific data formats to be extracted that the user requires, for example, a spectrum.
+The student will need to become familiar with this code, as small tweaks need to occur before it is added to SunPy.
Finally, the plugin will be created using Python.
However, a background in QT would ideally be needed but it is not necessary.
@@ -165,4 +161,3 @@ Plugin Features:
Sunpy Feature:
1. Full IRIS support.
-
diff --git a/gsoc/gsoc2015/ideas_yt.md b/src/content/pages/gsoc/2015/ideas_yt.md
similarity index 56%
rename from gsoc/gsoc2015/ideas_yt.md
rename to src/content/pages/gsoc/2015/ideas_yt.md
index 3773fd99..e9f04816 100644
--- a/gsoc/gsoc2015/ideas_yt.md
+++ b/src/content/pages/gsoc/2015/ideas_yt.md
@@ -1,23 +1,24 @@
---
-layout: default
-title: "Ideas for yt"
+title: "Ideas for yt"
show_main: false
ideas_team: yt
---
-### Enable volume rendering of octree datasets
+# Ideas for yt
-*Suggested Mentor(s):* Matthew Turk, Sam Skillman
+## Enable volume rendering of octree datasets
-*Difficulty:* Intermediate
+_Suggested Mentor(s):_ Matthew Turk, Sam Skillman
-*Astronomy knowledge needed:* None
+_Difficulty:_ Intermediate
-*Programming skills:* Familiarity with Python and Cython, and a familiarity with data structures such as octrees and B-trees.
+_Astronomy knowledge needed:_ None
-#### Description
+_Programming skills:_ Familiarity with Python and Cython, and a familiarity with data structures such as octrees and B-trees.
-At present, volume rendering in yt works best with patch-based AMR datasets. Extending this to support octree datasets will enable a much greater diversity of data types and formats to be visualized in this way.
+### Description
+
+At present, volume rendering in yt works best with patch-based AMR datasets. Extending this to support octree datasets will enable a much greater diversity of data types and formats to be visualized in this way.
This would include several specific, concrete actions:
@@ -25,17 +26,17 @@ This would include several specific, concrete actions:
1. Refactoring grid traversal methods to travel along the octree data structure without explicit parentage links (i.e., using built-in neighbor-finding functions)
1. Optimizing for parallel decomposition of octrees in this way
-### Implementation of deep image format
+## Implementation of deep image format
-*Suggested Mentor(s):* Matthew Turk, Kacper Kowalik
+_Suggested Mentor(s):_ Matthew Turk, Kacper Kowalik
-*Difficulty:* Advanced
+_Difficulty:_ Advanced
-*Astronomy knowledge needed:* None
+_Astronomy knowledge needed:_ None
-*Programming skills:* Familiarity with Python and Cython, and a familiarity with z-buffering.
+_Programming skills:_ Familiarity with Python and Cython, and a familiarity with z-buffering.
-#### Description
+### Description
Deep image compositing can be used to create a notion of depth. This could be utilized for multi-level rendering, rendering of semi-transparent streamlines inside volumes.
@@ -44,17 +45,17 @@ This would require:
1. Developing a sparse image format data container
1. Utilizing aforementioned container for multi-level rendering
-### Volume Traversal
+## Volume Traversal
-*Suggested Mentor(s):* Matthew Turk, Sam Skillman
+_Suggested Mentor(s):_ Matthew Turk, Sam Skillman
-*Difficulty:* Advanced
+_Difficulty:_ Advanced
-*Astronomy knowledge needed:* None
+_Astronomy knowledge needed:_ None
-*Programming skills:* Familiarity with Python and Cython, and a familiarity with data structures such as octrees and B-trees.
+_Programming skills:_ Familiarity with Python and Cython, and a familiarity with data structures such as octrees and B-trees.
-#### Description
+### Description
Currently yt uses several objects that utilize brick decomposition, i.e. a process by which overlapping grids are broken apart until a full tessellation of the domain (or data source) is created with no overlaps. This is done by the kD-tree decomposition. This project aims to enhance current capabilities by providing easy mechanisms for creating volume traversal mechanisms. There are two components to this: handling tiles of data, and creating fast methods for passing through the data and moving between tiles.
@@ -62,11 +63,14 @@ This would require:
1. Creating flexible (in terms of ordering) iterator over the "tiles" that compose a given data object
1. Designing and implementing object for storing values returned by aforementioned iterator, that would:
- * Cache a slice of the grid or data object that it operates on
- * Filter particles from the data object it operates on
- * Provide a mechanism for identifying neighbor objects from a given face index.
- * Provide mechanisms for generating vertex-centered data or cell-centered data quickly
+
+- Cache a slice of the grid or data object that it operates on
+- Filter particles from the data object it operates on
+- Provide a mechanism for identifying neighbor objects from a given face index.
+- Provide mechanisms for generating vertex-centered data or cell-centered data quickly
+
1. Implement a mechanism for integrating paths through tiles, that would:
- * define a method for determining when a ray has left an object
- * define a method for selecting the next brick to traverse or connect to
- * update the value of a ray's direction
+
+- define a method for determining when a ray has left an object
+- define a method for selecting the next brick to traverse or connect to
+- update the value of a ray's direction
diff --git a/src/content/pages/gsoc/2016/ideas.md b/src/content/pages/gsoc/2016/ideas.md
new file mode 100644
index 00000000..fcfe4492
--- /dev/null
+++ b/src/content/pages/gsoc/2016/ideas.md
@@ -0,0 +1,19 @@
+---
+title: "Ideas page for Google Summer of Code 2016"
+show_main: false
+---
+
+# Ideas page for Google Summer of Code 2016
+
+## Ideas page for GSoC 2016
+
+Browse ideas for the following projects:
+
+- [IMS](../ideas_eras/)
+- [CasaCore](../ideas_casacore/)
+- [JuliaAstro](../ideas_juliaastro/)
+- [yt](../ideas_yt/)
+- [Astropy](../ideas_astropy/)
+- [SunPy](../ideas_sunpy/)
+
+For each participating project, the ideas are organized from easiest to hardest.
diff --git a/gsoc/gsoc2016/ideas_astropy.md b/src/content/pages/gsoc/2016/ideas_astropy.md
similarity index 63%
rename from gsoc/gsoc2016/ideas_astropy.md
rename to src/content/pages/gsoc/2016/ideas_astropy.md
index f02d4d2e..71e433ee 100644
--- a/gsoc/gsoc2016/ideas_astropy.md
+++ b/src/content/pages/gsoc/2016/ideas_astropy.md
@@ -1,82 +1,80 @@
---
-layout: default
-title: "Ideas for Astropy"
+title: "Ideas for Astropy"
show_main: false
ideas_team: Astropy
---
+# Ideas for Astropy
+
If you are interested in one of the following Astropy Project ideas please see
the [Astropy GSoC 2016 Guidelines](https://github.com/astropy/astropy/wiki/GSoC-2016-Guidelines)
for additional information that is specific to Astropy.
-### Implement Scheduling capabilities for Astroplan
+## Implement Scheduling capabilities for Astroplan
-*Suggested Mentor(s):* [Erik Tollerud](http://github.com/eteq), [Eric Jeschke](https://github.com/ejeschke), [Josh Walawender](https://github.com/joshwalawender)
+_Suggested Mentor(s):_ [Erik Tollerud](http://github.com/eteq), [Eric Jeschke](https://github.com/ejeschke), [Josh Walawender](https://github.com/joshwalawender)
-*Difficulty:* Beginner to Intermediate
+_Difficulty:_ Beginner to Intermediate
-*Astronomy knowledge needed:* Basic understanding of how astronomy observations work, practical experience a plus
+_Astronomy knowledge needed:_ Basic understanding of how astronomy observations work, practical experience a plus
-*Programming skills:* Python
+_Programming skills:_ Python
-#### Description
+### Description
The [astroplan](http://astroplan.readthedocs.org/en/latest/) affiliated package is an Astropy affiliated package that provides tools for planning observations.
One valuable feature that astroplan could provide is basic scheduling capabilities for an observing run.
Many large observatories have their own schedulers, but this package would be targeted at the needs of the typical individual or small-collaboration observing run.
While some initial efforts have occurred, this project would involve expanding those efforts into a full-fledged API and implementing both the interface and the actual scheduler(s).
+## Ephemerides for Solar System objects in Astropy
-### Ephemerides for Solar System objects in Astropy
-
-*Suggested Mentor(s):* [Marten van Kerkwijk](http://github.com/mhvk), [Erik Tollerud](http://github.com/eteq)
-
-*Difficulty:* Beginner to Intermediate
+_Suggested Mentor(s):_ [Marten van Kerkwijk](http://github.com/mhvk), [Erik Tollerud](http://github.com/eteq)
-*Astronomy knowledge needed:* Some understanding of astronomical coordinate systems, basic knowledge of solar system dynamics (or ability to learn as-needed to implement the specific algorithms required)
+_Difficulty:_ Beginner to Intermediate
-*Programming skills:* Python, some knowledge of C might be helpful
+_Astronomy knowledge needed:_ Some understanding of astronomical coordinate systems, basic knowledge of solar system dynamics (or ability to learn as-needed to implement the specific algorithms required)
-#### Description
+_Programming skills:_ Python, some knowledge of C might be helpful
-An often-requested missing feature in Astropy is the ability to compute ephemerides: the on-sky location of Solar System objects like the planets, asteroids, or artificial satellites. This project would involve implementing just this feature. This will likely *start* with implementing a `get_moon` function similar to the existing `get_sun` to familiarize the student with the important concepts in the `astropy.coordinates` subpackage. The larger part of the project will likely involve using the orbital elements that the JPL Solar System dynamics group has already complied (there is already a package to read these files: [JPLEphem](https://pypi.python.org/pypi/jplephem)), and translate those into the Astropy coordinates framework. The student will implement these algorithms and also collaborate with the mentors and Astropy community to develop an API to access this machinery.
+### Description
+An often-requested missing feature in Astropy is the ability to compute ephemerides: the on-sky location of Solar System objects like the planets, asteroids, or artificial satellites. This project would involve implementing just this feature. This will likely _start_ with implementing a `get_moon` function similar to the existing `get_sun` to familiarize the student with the important concepts in the `astropy.coordinates` subpackage. The larger part of the project will likely involve using the orbital elements that the JPL Solar System dynamics group has already complied (there is already a package to read these files: [JPLEphem](https://pypi.python.org/pypi/jplephem)), and translate those into the Astropy coordinates framework. The student will implement these algorithms and also collaborate with the mentors and Astropy community to develop an API to access this machinery.
-### Implement Public API for ERFA
+## Implement Public API for ERFA
-*Suggested Mentor(s):* [Erik Tollerud](http://github.com/eteq), [Tom Aldcroft](http://github.com/taldcroft)
+_Suggested Mentor(s):_ [Erik Tollerud](http://github.com/eteq), [Tom Aldcroft](http://github.com/taldcroft)
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* None required, but may be helpful for understanding ERFA functionality
+_Astronomy knowledge needed:_ None required, but may be helpful for understanding ERFA functionality
-*Programming skills:* Python, Cython, C
+_Programming skills:_ Python, Cython, C
-#### Description
+### Description
Some of the major functionality for Astropy uses the ERFA C library (adapted from the IAU SOFA library) as the back-end for
-computational "heavy-lifting". Members of the community have expressed a desire to use this lower-level python wrapper
-around ERFA for other purposes that may not be directly relevant for Astropy. So this project would involve making the
-necessary changes to make the ERFA python API public. This includes:
+computational "heavy-lifting". Members of the community have expressed a desire to use this lower-level python wrapper
+around ERFA for other purposes that may not be directly relevant for Astropy. So this project would involve making the
+necessary changes to make the ERFA python API public. This includes:
-* Getting the documentation up to the astropy standard (currently it is mostly auto-generated verbatim from the C comments).
-* Implementing a more complete test suite for the python side of the code.
-* Possibly moving it to a separate package as part of the liberfa GitHub organization. This would also include making the necessary
+- Getting the documentation up to the astropy standard (currently it is mostly auto-generated verbatim from the C comments).
+- Implementing a more complete test suite for the python side of the code.
+- Possibly moving it to a separate package as part of the liberfa GitHub organization. This would also include making the necessary
changes to ensure everything continues to work in Astropy.
-* Any other steps necessary to ensure the resulting package (or sub-package of Astropy) is stable and relatively easy to use.
+- Any other steps necessary to ensure the resulting package (or sub-package of Astropy) is stable and relatively easy to use.
+## Web development for Gammapy
-### Web development for Gammapy
+_Suggested Mentor(s):_ [Christoph Deil](https://github.com/cdeil), [Johannes King](https://github.com/joleroi)
-*Suggested Mentor(s):* [Christoph Deil](https://github.com/cdeil), [Johannes King](https://github.com/joleroi)
+_Difficulty:_ Intermediate to Expert
-*Difficulty:* Intermediate to Expert
+_Astronomy knowledge needed:_ None.
-*Astronomy knowledge needed:* None.
+_Programming skills:_ Scientific python (Numpy, Scipy, Astropy), Web development (Python backend, Javascript frontend)
-*Programming skills:* Scientific python (Numpy, Scipy, Astropy), Web development (Python backend, Javascript frontend)
-
-#### Description
+### Description
[Gammapy](https://docs.gammapy.org/) is a Python package for
professional gamma-ray astronomers. We are looking for a web developer with good
@@ -94,21 +92,20 @@ or Python web apps that let us browse the gamma-ray data and analysis results,
basically a web GUI for Gammapy. That project would mostly be Python web app
development, and you have to learn a bit more about Gammapy before GSoC starts.
+## Data analysis for Gammapy
-### Data analysis for Gammapy
-
-*Suggested Mentor(s):* [Christoph Deil](https://github.com/cdeil), [Johannes King](https://github.com/joleroi)
+_Suggested Mentor(s):_ [Christoph Deil](https://github.com/cdeil), [Johannes King](https://github.com/joleroi)
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* Some, e.g. sky coordinates and projections.
+_Astronomy knowledge needed:_ Some, e.g. sky coordinates and projections.
Experience with X-ray or gamma-ray data analysis (e.g. Fermi-LAT) is a plus, but not a requirement.
-*Method knowledge needed:* Some experience in data analysis (e.g. images, regions) and statistics (e.g. Poisson noise).
+_Method knowledge needed:_ Some experience in data analysis (e.g. images, regions) and statistics (e.g. Poisson noise).
-*Programming skills:* Python (including pytest and Sphinx) and scientific python (Numpy, Scipy, Astropy)
+_Programming skills:_ Python (including pytest and Sphinx) and scientific python (Numpy, Scipy, Astropy)
-#### Description
+### Description
[Gammapy](https://docs.gammapy.org/) is a Python package for
professional gamma-ray astronomers. We are looking for someone that's interested
@@ -121,21 +118,21 @@ and docs) as well as grunt work that's needed to go towards production quality
and a Gammapy 1.0 release this fall (e.g. set up continuous integration for
example IPython notebooks or adding more tests). To get an idea of what is going
on in Gammapy and what still needs to be done, please check out the project on
-Github (https://github.com/gammapy/gammapy) and browse the documentation a bit
+Github () and browse the documentation a bit
(or try out the examples) and if this looks interesting to you, send us an email
and let us know what your skills and interests are.
-### Implement PSF photometry for fitting several overlapping objects at once
+## Implement PSF photometry for fitting several overlapping objects at once
-*Suggested Mentor(s):* [Moritz Guenther](https://github.com/hamogu), [Brigitta Sipocz](https://github.com/bsipocz)
+_Suggested Mentor(s):_ [Moritz Guenther](https://github.com/hamogu), [Brigitta Sipocz](https://github.com/bsipocz)
-*Difficulty:* Intermediate to Expert
+_Difficulty:_ Intermediate to Expert
-*Astronomy knowledge needed:* basic understanding of what photometry is
+_Astronomy knowledge needed:_ basic understanding of what photometry is
-*Programming skills:* Python
+_Programming skills:_ Python
-#### Description
+### Description
The [photutils](http://photutils.readthedocs.org/en/latest/) package is an Astropy affiliated package that provides tools for photometry (measuring how bright a source is).
@@ -143,23 +140,21 @@ There are several ways to do photometry and the package currently implements ape
This project includes looking at other astronomy codes to see how they tackle the problem; select, modify and improve an algorithm that fits into the astropy modelling framework; implement this in python; and, if it turns out that speed is a problem, move speed-critical parts to Cython. To verify that the new code works, we will compare it to the solutions of established PSF photometry codes.
-See https://github.com/OpenAstronomy/openastronomy.github.io/pull/27 for a discussion of some problems and possible solutions that will be addressed in this project.
-
+See for a discussion of some problems and possible solutions that will be addressed in this project.
-### Bridge sherpa and astropy fitting
+## Bridge sherpa and astropy fitting
-*Suggested Mentor(s):* D. Burke, T. Aldcroft, H. M. Guenther
+_Suggested Mentor(s):_ D. Burke, T. Aldcroft, H. M. Guenther
-*Difficulty:* Expert or better
+_Difficulty:_ Expert or better
-*Astronomy knowledge needed:* fitting functions and statistics
+_Astronomy knowledge needed:_ fitting functions and statistics
-*Programming skills:* Python, C, Cython
+_Programming skills:_ Python, C, Cython
-#### Description
+### Description
-
-Both astropy and Sherpa (https://github.com/sherpa/sherpa/) provide modelling and fitting capabilities; however, Sherpa's features are way
+Both astropy and Sherpa () provide modelling and fitting capabilities; however, Sherpa's features are way
more advanced. Sherpa provides far more build-in models, a larger choice of optimizers and a real variety
of fit statistics.
Unfortunately Sherpa is less well known and for historical reasons the object-oriented user interface is less polished than the functional state-based interface.
@@ -173,43 +168,45 @@ This project requires the student to get proficient in two major packages (Not a
just a few weeks of GSoC it will give astropy users access to fitting capabilites that required many years of developer time
and that are unfeasable redevelop from scratch.
+## Enhancements to Ginga, a Toolkit for Building Scientific Image Viewers
-### Enhancements to Ginga, a Toolkit for Building Scientific Image Viewers
-
-*Suggested Mentor(s):* [Eric Jeschke](https://github.com/ejeschke), [Pey-Lian Lim](https://github.com/pllim), [Nabil Freij](https://github.com/nabobalis)
+_Suggested Mentor(s):_ [Eric Jeschke](https://github.com/ejeschke), [Pey-Lian Lim](https://github.com/pllim), [Nabil Freij](https://github.com/nabobalis)
-*Difficulty:* Beginning to Advanced, depending on project choices
+_Difficulty:_ Beginning to Advanced, depending on project choices
-*Astronomy knowledge needed:* Some, depending on project choices
+_Astronomy knowledge needed:_ Some, depending on project choices
-*Programming skills:* Python and scientific python (Numpy, Scipy, Astropy), git version control
+_Programming skills:_ Python and scientific python (Numpy, Scipy, Astropy), git version control
-*Desirable:* OpenCL, Javascript/web sockets, C/C++ programming, experience in image or array processing, concurrent programming, experience in using GUI toolkits, github-based workflow
+_Desirable:_ OpenCL, Javascript/web sockets, C/C++ programming, experience in image or array processing, concurrent programming, experience in using GUI toolkits, github-based workflow
-#### Description
+### Description
[Ginga](https://ejeschke.github.io/ginga/) is a toolkit for constructing scientific image viewers in Python, with an emphasis toward astronomy. Ginga is being used at a number of observatories and institutes for observation and instrument control, quick look, custom data reduction and analysis tasks. The general aim is to build upon this toolkit improving its current features and to expand this toolkit in order for scientists to be able to easily accomplish preliminary data analysis.
We are looking for an individual to work on a few select project areas, depending on skill level and interest. Each project area itself would form a small part of the overall GSOC project. Essentially it would be a large pick and mix but do not let this put you off. This method would allow a range of different contributions to be made the Ginga toolkit that are for your choosing.
Beginning-level:
-* Improve and expand Ginga's unit test suite and coverage
-* Improve documentation and tutorials, including via Jupyter notebooks and video voice-overs
-* Improve our "native app" packaging for Mac, Unix and Windows
-* Improving LineProfile and Slit plugins
-* Enhance existing plugins by adding GUIs for some common tasks like configuring catalog sources, which are currently done by editing config files
-* Add support for loading broken FITS files by ["fingerprinting" them] (https://github.com/ejeschke/ginga/issues/205)
+
+- Improve and expand Ginga's unit test suite and coverage
+- Improve documentation and tutorials, including via Jupyter notebooks and video voice-overs
+- Improve our "native app" packaging for Mac, Unix and Windows
+- Improving LineProfile and Slit plugins
+- Enhance existing plugins by adding GUIs for some common tasks like configuring catalog sources, which are currently done by editing config files
+- Add support for loading broken FITS files by ["fingerprinting" them] ()
Intermediate-level:
-* Improve Ginga backends for web browsers (native javascript/web sockets and/or Jupyter notebooks and/or Bokeh server)
-* Enhancements to "traditional" GUI backends (e.g. add support for gtk3, AGG support for python 3, improvements to Qt-based widgets)
-* Graft the astropy-helpers package into Ginga
-* Adding support for calculating approximate line-of-sight velocities
-* Enhance existing plugins for data analysis tasks, usually featuring astropy or affiliated packages
+
+- Improve Ginga backends for web browsers (native javascript/web sockets and/or Jupyter notebooks and/or Bokeh server)
+- Enhancements to "traditional" GUI backends (e.g. add support for gtk3, AGG support for python 3, improvements to Qt-based widgets)
+- Graft the astropy-helpers package into Ginga
+- Adding support for calculating approximate line-of-sight velocities
+- Enhance existing plugins for data analysis tasks, usually featuring astropy or affiliated packages
Advanced-level:
-* Implement an OpenCL module that leverages CPU and GPU resources for accelerating some common image processing operations (scaling, transformations, rotations) on numpy image arrays. Benchmark against current CPU based solutions.
-* Improving IO speeds by optimizing use of astropy.fits.io/cfitsio/numpy, lazy reads, file caching hints, optimizing concurrency, etc.
-* Adding support for a binary file format used by a very popular ground-based solar telescope and extending it to support Stokes data products
+
+- Implement an OpenCL module that leverages CPU and GPU resources for accelerating some common image processing operations (scaling, transformations, rotations) on numpy image arrays. Benchmark against current CPU based solutions.
+- Improving IO speeds by optimizing use of astropy.fits.io/cfitsio/numpy, lazy reads, file caching hints, optimizing concurrency, etc.
+- Adding support for a binary file format used by a very popular ground-based solar telescope and extending it to support Stokes data products
If you are interested in working on any of these aspects, or want to propose some other work on Ginga, please sign in to Github and comment on [Assist the Ginga Project](https://github.com/ejeschke/ginga/issues/287).
diff --git a/gsoc/gsoc2016/ideas_casacore.md b/src/content/pages/gsoc/2016/ideas_casacore.md
similarity index 62%
rename from gsoc/gsoc2016/ideas_casacore.md
rename to src/content/pages/gsoc/2016/ideas_casacore.md
index 1640edd8..dc42d2f7 100644
--- a/gsoc/gsoc2016/ideas_casacore.md
+++ b/src/content/pages/gsoc/2016/ideas_casacore.md
@@ -1,74 +1,75 @@
---
-layout: default
-title: "Ideas for CasaCore"
+title: "Ideas for CasaCore"
show_main: false
ideas_team: CasaCore
---
-### Improve Python bindings to CasaCore measures
+# Ideas for CasaCore
-*Suggested Mentor(s):* [Ger van Diepen](http://github.com/gervandiepen), [Tammo Jan Dijkema](https://github.com/tammojan)
+## Improve Python bindings to CasaCore measures
-*Difficulty:* Intermediate
+_Suggested Mentor(s):_ [Ger van Diepen](http://github.com/gervandiepen), [Tammo Jan Dijkema](https://github.com/tammojan)
-*Astronomy knowledge needed:* Some understanding of astronomical coordinate systems and transformations
+_Difficulty:_ Intermediate
-*Programming skills:* Python, some C++
+_Astronomy knowledge needed:_ Some understanding of astronomical coordinate systems and transformations
-#### Description
+_Programming skills:_ Python, some C++
-CasaCore contains many features to perform astronomical coordinate transformations, for example from B1950 to J2000, or from J2000 to Azimuth-Elevation. Moreover, it can compute ephemerides, which may make it useful for many other projects. See http://casacore.github.io/casacore-notes/233
+### Description
+
+CasaCore contains many features to perform astronomical coordinate transformations, for example from B1950 to J2000, or from J2000 to Azimuth-Elevation. Moreover, it can compute ephemerides, which may make it useful for many other projects. See
The current python binding [python-casacore](http://casacore.github.io/python-casacore/) contains a python binding to the measures library, but this is not a very programmer friendly binding, and thus not much used.
An interface to measures exists within CasaCore that makes converting coordinates much easier. This interface was written with TaQL in mind.
This project concerns modifying the TaQL measures interface to a python measures interface, thus making casacore measures easily accessible from Python
+## Frequency conversions for TaQL / python-casacore
-### Frequency conversions for TaQL / python-casacore
-
-*Suggested Mentor(s):* [Ger van Diepen](http://github.com/gervandiepen), [Tammo Jan Dijkema](http://github.com/tammojan)
+_Suggested Mentor(s):_ [Ger van Diepen](http://github.com/gervandiepen), [Tammo Jan Dijkema](http://github.com/tammojan)
-*Difficulty:* Beginner / Intermediate
+_Difficulty:_ Beginner / Intermediate
-*Astronomy knowledge needed:* Some understanding of use of astronomical frequencies (regarding Doppler shifts etc.)
+_Astronomy knowledge needed:_ Some understanding of use of astronomical frequencies (regarding Doppler shifts etc.)
-*Programming skills:* C++
+_Programming skills:_ C++
-#### Description
+### Description
-The casacore measures module contains code for converting frequencies between various reference frames (e.g. Rest frequency, Geocentric, Topocentric, Galacto centric). Having this module available in TaQL would make it much more convenient to perform these kind of conversions. Example code exists for other conversions, see e.g. http://casacore.github.io/casacore/group__MeasUDF__module.html
+The casacore measures module contains code for converting frequencies between various reference frames (e.g. Rest frequency, Geocentric, Topocentric, Galacto centric). Having this module available in TaQL would make it much more convenient to perform these kind of conversions. Example code exists for other conversions, see e.g.
This project concerns writing such a converter for the Doppler and Frequency conversions. It will require tweaking in boost-python, but since the example code is available for other measures, it should not be too hard.
-### General python-casacore cleanup
+## General python-casacore cleanup
-*Suggested Mentor(s):* [Gijs Molenaar](http://github.com/gijzelaerr), [Ger van Diepen](http://github.com/gervandiepen)
+_Suggested Mentor(s):_ [Gijs Molenaar](http://github.com/gijzelaerr), [Ger van Diepen](http://github.com/gervandiepen)
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Astronomy knowledge needed:* none
+_Astronomy knowledge needed:_ none
-*Programming skills:* python
+_Programming skills:_ python
-#### Description
+### Description
The current [python-casacore](http://github.com/casacore/python-casacore) code is already much improved over the previous "pyrap" implementaion. This python binding to casacore is now python 3 compatible, contains some unit tests, etc. But some work remains to be done:
- * Remove all compile warnings
- * Modernise code, add missing features, maybe more 'pythonic'.
- * Improve test coverage (24% at the moment)
+
+- Remove all compile warnings
+- Modernise code, add missing features, maybe more 'pythonic'.
+- Improve test coverage (24% at the moment)
This is a typical project to learn making good code.
-### Table plotting for python-casacore
+## Table plotting for python-casacore
-*Suggested Mentor(s):* [Ger van Diepen](http://github.com/gervandiepen), [Tammo Jan Dijkema](https://github.com/tammojan)
+_Suggested Mentor(s):_ [Ger van Diepen](http://github.com/gervandiepen), [Tammo Jan Dijkema](https://github.com/tammojan)
-*Difficulty:* Beginner
+_Difficulty:_ Beginner
-*Astronomy knowledge needed:* Some idea about astronomical units
+_Astronomy knowledge needed:_ Some idea about astronomical units
-*Programming skills:* Python
+_Programming skills:_ Python
-Radio interferometric data sets are almost always stored in casacore "Measurement Sets". These can be queried through TaQL, see e.g. http://casacore.github.io/casacore-notes/199
+Radio interferometric data sets are almost always stored in casacore "Measurement Sets". These can be queried through TaQL, see e.g.
It would be nice to have a plotting routine in [python-casacore](http://github.com/casacore/python-casacore) to easily plot two columns against each other, which nicely formatted axes etc (possibly using wcsaxes).
-This would, at the very least, make a nice extension to the taql jupyter kernel underneath http://taql.astron.nl
+This would, at the very least, make a nice extension to the taql jupyter kernel underneath
diff --git a/gsoc/gsoc2016/ideas_eras.md b/src/content/pages/gsoc/2016/ideas_eras.md
similarity index 69%
rename from gsoc/gsoc2016/ideas_eras.md
rename to src/content/pages/gsoc/2016/ideas_eras.md
index be6e8bf1..87fc60fd 100644
--- a/gsoc/gsoc2016/ideas_eras.md
+++ b/src/content/pages/gsoc/2016/ideas_eras.md
@@ -1,21 +1,22 @@
---
-layout: default
-title: "Ideas for IMS - ERAS"
+title: "Ideas for IMS - ERAS"
show_main: false
ideas_team: IMS
---
-### Solar Storms forecasting server
+# Ideas for IMS - ERAS
-*Suggested Mentors:* [Antonio del Mastro](https://bitbucket.org/aldebran/) , [Olena Persianova](https://bitbucket.org/OPersian/)
+## Solar Storms forecasting server
-*Difficulty:* Intermediate to Hard
+_Suggested Mentors:_ [Antonio del Mastro](https://bitbucket.org/aldebran/) , [Olena Persianova](https://bitbucket.org/OPersian/)
-*Astronomy knowledge needed:* None beforehand, the student will be required to research relevant publications.
+_Difficulty:_ Intermediate to Hard
-*Programming skills:* advanced Python; basic Theano or TensorFlow; basic Django or Flask; experience with some ANN library, such as Keras, theanets or Lasagne.
+_Astronomy knowledge needed:_ None beforehand, the student will be required to research relevant publications.
-#### Description:
+_Programming skills:_ advanced Python; basic Theano or TensorFlow; basic Django or Flask; experience with some ANN library, such as Keras, theanets or Lasagne.
+
+### Description
Solar storms are responsible for disruption of satellite communication, and damage to space electronical equipments. The storms have to be taken into account also for EVA and habitat maintenance activities, as the higher levels of radiation brought by them have a detrimental effect on the crew member's health.
@@ -23,17 +24,17 @@ Prediction of these storms are essential to prevent said damage. A lot of astron
In this project, the student will be required to:
-* Using a machine learning approach, predict the *duration* and *intensity* solar storms:
- * The student should use preferably an artificial neural networks approach (although alternatives, such as random forests, SVM, bayesian models or HMMs, can be considered).
- * The predictions should be given with 24-48 hs in advance of a storm (depending on viability).
- * The student should evaluate training and test data provided by IMS, or find a suitable datasaet, if the data provided is unsuitable.
- * The student should evaluate an approach suggested by the IMS to test the model's performance, or propose a testing procedure of his/her own.
-* Provide information on a dynamically updated web page, using preferably Django or Flask, which should at least include:
- * The real-time and historical sensor's values; as plots, when appropriate.
- * Useful statistics about the sensors (TBD).
- * The model's predictions.
- * Useful statistics about the predictions (e.g. RMSE)
-* Incorporate the prediciton model and the web page into the [ERAS ecosystem](https://eras.readthedocs.org/en/latest/), which means building [Tango](http://www.tango-controls.org/) device servers (at least one for the predictor, more if necessary).
+- Using a machine learning approach, predict the _duration_ and _intensity_ solar storms:
+ - The student should use preferably an artificial neural networks approach (although alternatives, such as random forests, SVM, bayesian models or HMMs, can be considered).
+ - The predictions should be given with 24-48 hs in advance of a storm (depending on viability).
+ - The student should evaluate training and test data provided by IMS, or find a suitable datasaet, if the data provided is unsuitable.
+ - The student should evaluate an approach suggested by the IMS to test the model's performance, or propose a testing procedure of his/her own.
+- Provide information on a dynamically updated web page, using preferably Django or Flask, which should at least include:
+ - The real-time and historical sensor's values; as plots, when appropriate.
+ - Useful statistics about the sensors (TBD).
+ - The model's predictions.
+ - Useful statistics about the predictions (e.g. RMSE)
+- Incorporate the prediciton model and the web page into the [ERAS ecosystem](https://eras.readthedocs.org/en/latest/), which means building [Tango](http://www.tango-controls.org/) device servers (at least one for the predictor, more if necessary).
Currently, a few features are being used for the prediction of solar storms, among others:
diff --git a/gsoc/gsoc2016/ideas_juliaastro.md b/src/content/pages/gsoc/2016/ideas_juliaastro.md
similarity index 81%
rename from gsoc/gsoc2016/ideas_juliaastro.md
rename to src/content/pages/gsoc/2016/ideas_juliaastro.md
index ee705121..28b3fb2c 100644
--- a/gsoc/gsoc2016/ideas_juliaastro.md
+++ b/src/content/pages/gsoc/2016/ideas_juliaastro.md
@@ -1,21 +1,22 @@
---
-layout: default
-title: "Ideas for Julia Astro"
+title: "Ideas for Julia Astro"
show_main: false
ideas_team: JuliaAstro
---
-### Image compression and efficient table reading in FITSIO.jl
+# Ideas for Julia Astro
-*Suggested Mentor(s):* [Kyle Barbary](http://github.com/kbarbary), [Ryan Giordan](https://github.com/rgiordan)
+## Image compression and efficient table reading in FITSIO.jl
-*Difficulty:* Intermediate to Expert
+_Suggested Mentor(s):_ [Kyle Barbary](http://github.com/kbarbary), [Ryan Giordan](https://github.com/rgiordan)
-*Astronomy knowledge needed:* none
+_Difficulty:_ Intermediate to Expert
-*Programming skills:* Julia, some C
+_Astronomy knowledge needed:_ none
-#### Description
+_Programming skills:_ Julia, some C
+
+### Description
FITS (Flexible Image Transport System) format files are the standard
containers for imaging and tabular data in astronomy. The
diff --git a/gsoc/gsoc2016/ideas_sunpy.md b/src/content/pages/gsoc/2016/ideas_sunpy.md
similarity index 87%
rename from gsoc/gsoc2016/ideas_sunpy.md
rename to src/content/pages/gsoc/2016/ideas_sunpy.md
index 21a62ccf..02e73c75 100644
--- a/gsoc/gsoc2016/ideas_sunpy.md
+++ b/src/content/pages/gsoc/2016/ideas_sunpy.md
@@ -1,21 +1,23 @@
---
-layout: default
-title: "Ideas for SunPy"
+title: "Ideas for SunPy"
show_main: false
ideas_team: SunPy
---
-### Lightcurve Refactor
+# Ideas for SunPy
-*Suggested Mentor(s):* [Stuart Mumford](http://github.com/Cadair), [Dan Ryan](https://github.com/DanRyanIrish), [Andrew Inglis](https://github.com/aringlis), [Jack Ireland](https://github.com/wafels)
+## Lightcurve Refactor
-*Difficulty:* Beginner
+_Suggested Mentor(s):_ [Stuart Mumford](http://github.com/Cadair), [Dan Ryan](https://github.com/DanRyanIrish), [Andrew Inglis](https://github.com/aringlis), [Jack Ireland](https://github.com/wafels)
-*Astronomy knowledge needed:* None
+_Difficulty:_ Beginner
-*Programming skills:* Python
+_Astronomy knowledge needed:_ None
+
+_Programming skills:_ Python
+
+### Description
-#### Description
The `Lightcurve` class is one of the three core datatypes in SunPy, along with Map and Spectra.
`Lightcurve` is designed to read in, process and store meta data related to solar physics time series data.
Currently, `Lightcurve` uses the pandas library as its underlying data structure, however, this is subject to change in the future.
@@ -33,7 +35,7 @@ This leaves `lightcurve` in a similar position to `map` where the data acquisiti
The objective of this project is to re-implement the core of the lightcurve submodule, such that it no longer contains the code to download data from the internet. The lightcurve module should be able to open file from disk that have been downloaded using the new UnifiedDownloader submodule. The lightcurve factory must be able to read files from multiple sources some of which will be able to be auto-detcted and some which will not. The lightcurve module must also be able to combine multiple files into a single timeseries.
-**Expected Outcomes**
+### Expected Outcomes
Someone under taking this project will complete the following tasks:
@@ -41,21 +43,19 @@ Someone under taking this project will complete the following tasks:
1. Write a factory class for `lightcurve` similar to the `sunpy.map.Map` class. This class will be a generic constructor for `lightcurve` allowing the user to instantiate any one of the many subclasses of `GenericLightcurve` present in `sunpy.lightcurve.sources`. The API design for the factory class is in [SEP 7](https://github.com/sunpy/sunpy-SEP/blob/master/SEP-0007.md).
1. Design and develop a robust method of dealing with lightcurve meta data, which can handle joining different parts of timeseries from different files, each with their own meta data. (See [#1122](https://github.com/sunpy/sunpy/issues/1122))
-
A successful proposal for this project will demonstrate that the applicant has understood the mechanism behind the `Map` factory as already implemented in SunPy and presents a timeline of what things need to change in Lightcurve to mirror the design of `Map` and follow the design for Lightcurve in [SEP 7](https://github.com/sunpy/sunpy-SEP/blob/master/SEP-0007.md).
+## Implementing AIA response functions in SunPy
-### Implementing AIA response functions in SunPy
+_Suggested Mentor(s):_ [Drew Leonard](https://github.com/SolarDrew), [Will Barnes](https://github.com/wtbarnes)
-*Suggested Mentor(s):* [Drew Leonard](https://github.com/SolarDrew), [Will Barnes](https://github.com/wtbarnes)
+_Difficulty:_ Beginner
-*Difficulty:* Beginner
+_Astronomy knowledge needed:_ Some knowledge of coronal emission processes would be beneficial.
-*Astronomy knowledge needed:* Some knowledge of coronal emission processes would be beneficial.
+_Programming skills:_ Python.
-*Programming skills:* Python.
-
-#### Description
+### Description
The [CHIANTI](http://www.chiantidatabase.org/) atomic physics database is a valuable resource for solar physics.
The CHIANTI database holds a large amount of information on the physical properties of different elements in different ionisation states and enables the calculation of various parameters from this information.
@@ -76,23 +76,24 @@ Other potential applications of ChiantiPy in SunPy include:
1. Calculation of reponse functions for other instruments.
1. Conversion of ChiantiPy spectra objects to SunPy Spectra objects.
-**Expected Outcomes**: This project would facilitate SunPy becoming independent from Solar SoftWare (SSW) for analysing AIA data, particularly with respect to inferring plasma properties such as temperature and density.
+### Expected Outcomes
+
+This project would facilitate SunPy becoming independent from Solar SoftWare (SSW) for analysing AIA data, particularly with respect to inferring plasma properties such as temperature and density.
A successful proposal will outline a schedule for implementing at least a single set of temperature and wavelength response functions for AIA, and the response functions for arbitrary plasma conditions would be a bonus.
Familiarity with CHIANTI, ChiantiPy and SSW's implementation of the response functions will help to properly assess how long will be required to recreate them in SunPy.
+## Real time data access and visualisation tools
-### Real time data access and visualisation tools
+_Suggested Mentor(s):_ [David Perez-Suarez](http://github.com/dpshelio), [Jack Ireland](https://github.com/wafels)
-*Suggested Mentor(s):* [David Perez-Suarez](http://github.com/dpshelio), [Jack Ireland](https://github.com/wafels)
+_Difficulty:_ Beginner-Intermediate
-*Difficulty:* Beginner-Intermediate
+_Astronomy knowledge needed:_ none
-*Astronomy knowledge needed:* none
+_Programming skills:_ Python
-*Programming skills:* Python
-
-#### Description
+### Description
Real time data is very useful for
[spaceweather operations](https://en.wikipedia.org/wiki/Space_weather), SunPy
@@ -123,18 +124,17 @@ Familiarisation with the
timeline on how much time will take to implement, test and document each part of
the project.
+## Improvements to the SunPy Database
-### Improvements to the SunPy Database
-
-*Suggested Mentor(s):* [Stuart Mumford](http://github.com/Cadair), [Simon Liedtke](http://github.com/derdon), [Steven Christe](http://github.com/ehsteve)
+_Suggested Mentor(s):_ [Stuart Mumford](http://github.com/Cadair), [Simon Liedtke](http://github.com/derdon), [Steven Christe](http://github.com/ehsteve)
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Astronomy knowledge needed:* None
+_Astronomy knowledge needed:_ None
-*Programming skills:* Python, some database design knowledge would be helpful.
+_Programming skills:_ Python, some database design knowledge would be helpful.
-#### Description
+### Description
The `database` module provides functionality to users to manage collections of files on disk in a way not reliant upon folder structure and file name.
The database allows users to find files on disk by either physical parameters, such as wavelength and time or properties of the instrument such as name and spacecraft.
@@ -158,19 +158,22 @@ This project aims to achieve the following things:
A successful proposal will schedule updates to the database package in small sections, rather than in one large pull request. The work should be understood and broken down into individual sections.
-There are various other maintenance tasks which need undertaking (https://github.com/sunpy/sunpy/labels/Database) which would be a good way for someone interested in this project to familiarise themselves with the codebase.
+There are various other maintenance tasks which need undertaking () which would be a good way for someone interested in this project to familiarise themselves with the codebase.
+
+## GUI to use LCT tools
+
+_Suggested Mentor(s):_ [Jose Iván Campos Rozo](https://github.com/Hypnus1803) (National Astronomical Observatory, National University of Colombia), Santiago Vargas Domínguez (National Astronomical Observatory, National University of Colombia), [David Pérez Suárez](https://github.com/dpshelio).
+_Difficulty:_ Intermediate
-### GUI to use LCT tools
-*Suggested Mentor(s):* [Jose Iván Campos Rozo](https://github.com/Hypnus1803) (National Astronomical Observatory, National University of Colombia), Santiago Vargas Domínguez (National Astronomical Observatory, National University of Colombia), [David Pérez Suárez](https://github.com/dpshelio).
+_Astronomy knowledge needed:_ None
-*Difficulty:* Intermediate
+_Programming skills:_ Python, basic knowledge of qt4, pyqt4, qt designer
-*Astronomy knowledge needed:* None
+### Description
-*Programming skills:* Python, basic knowledge of qt4, pyqt4, qt designer
+The Local Correlation Tracking (LCT, November & Simon, 1988) technique is a robust method used to study the dynamics of structures in a time series of images. By tracking pixel displacements, using a correlation window, LCT can determine proper motions and generate flow maps of horizontal velocities. This procedure is used to study the dynamics of plasma in the solar photosphere at different spatial scales, e.g the analysis of granular and supergranular convective cells, meridional flows, etc. A widget implemented in Python was developed. It generates a user-friendly graphical user interface (GUI) to control various parameters for the process of calculating flow maps of proper motions for a series of filtergrams (data cube). Our purpose is to implement this tool in Sunpy using its structure and to improve it with some more options, i.e. masks, statistics, histograms, contours and multi-plots. Although an initial version is already developed, our proposal is to focus on the efficient integration of the code in the SunPy libraries. The code (without widget files yet) is
-#### Description:
-The Local Correlation Tracking (LCT, November & Simon, 1988) technique is a robust method used to study the dynamics of structures in a time series of images. By tracking pixel displacements, using a correlation window, LCT can determine proper motions and generate flow maps of horizontal velocities. This procedure is used to study the dynamics of plasma in the solar photosphere at different spatial scales, e.g the analysis of granular and supergranular convective cells, meridional flows, etc. A widget implemented in Python was developed. It generates a user-friendly graphical user interface (GUI) to control various parameters for the process of calculating flow maps of proper motions for a series of filtergrams (data cube). Our purpose is to implement this tool in Sunpy using its structure and to improve it with some more options, i.e. masks, statistics, histograms, contours and multi-plots. Although an initial version is already developed, our proposal is to focus on the efficient integration of the code in the SunPy libraries. The code (without widget files yet) is https://github.com/Hypnus1803/flow_maps
+### Expected Outcomes
-*Expected Outcomes:* To integate efficiently the code in SunPy libraries.
+To integate efficiently the code in SunPy libraries.
diff --git a/gsoc/gsoc2016/ideas_yt.md b/src/content/pages/gsoc/2016/ideas_yt.md
similarity index 72%
rename from gsoc/gsoc2016/ideas_yt.md
rename to src/content/pages/gsoc/2016/ideas_yt.md
index 3c685daa..16b07afa 100644
--- a/gsoc/gsoc2016/ideas_yt.md
+++ b/src/content/pages/gsoc/2016/ideas_yt.md
@@ -1,10 +1,11 @@
---
-layout: default
-title: "Ideas for yt"
+title: "Ideas for yt"
show_main: false
ideas_team: yt
---
+# Ideas for yt
+
If you are interested in one of the yt ideas, please see the
[GSoC 2016 Guidelines](https://bitbucket.org/yt_analysis/yt/wiki/Google%20Summer%20of%20Code%202016%20Guidelines)
on the yt bitbucket wiki.
@@ -32,19 +33,19 @@ For more information about contributing to yt, take a look at our
discussions about past yt projects, take a look at the yt enhancement proposal
(YTEP) [listing](https://ytep.readthedocs.org).
-### Integrate yt plots with interactive matplotlib backends
+## Integrate yt plots with interactive matplotlib backends
-*Suggested Mentor(s):* [Nathan Goldbaum](https://bitbucket.org/ngoldbaum),
- [Matthew Turk](https://bitbucket.org/MatthewTurk/)
+_Suggested Mentor(s):_ [Nathan Goldbaum](https://bitbucket.org/ngoldbaum),
+[Matthew Turk](https://bitbucket.org/MatthewTurk/)
-*Difficulty:* Intermediate
+_Difficulty:_ Intermediate
-*Knowledge needed:* Familiarity with matplotlib. Knowledge of matplotlib's
- object oriented API a plus.
+_Knowledge needed:_ Familiarity with matplotlib. Knowledge of matplotlib's
+object oriented API a plus.
-*Programming skills:* Python. GUI programming.
+_Programming skills:_ Python. GUI programming.
-#### Description
+### Description
Currently, all yt plotting objects have a `show()` method that
displays [a version of the plot in Jupyter notebooks](https://gist.github.com/f36b29c340e8516eeae2). This works for the most
@@ -66,43 +67,43 @@ This is constrained by maintaining backward compatibility: by default yt should
not fail when generating plots on headless devices (e.g. when connecting over
SSH to a supercomputer).
-*Deliverables:*
+_Deliverables:_
-* A proof of concept demonstrating how to hook into matplotlib's interactive
+- A proof of concept demonstrating how to hook into matplotlib's interactive
backends using the matplotlib object-oriented API, or a way to show how to
gracefully fall back to using pyplot instead of the object oriented API.
-* A [YTEP](https://ytep.readthedocs.org) describing the proposed approach for
+- A [YTEP](https://ytep.readthedocs.org) describing the proposed approach for
modifying yt's plotting infrastructure to support matplotlib's interactive
plotting backends.
-* The implementation for the YTEP submitted as a bitbucket pull request to the
+- The implementation for the YTEP submitted as a bitbucket pull request to the
main yt repository.
-### Improve test coverage and test performance
+## Improve test coverage and test performance
-*Suggested Mentor(s):* [Kacper Kowalik](https://bitbucket.org/xarthisius),
- [Nathan Goldbaum](https://bitbucket.org/ngoldbaum)
+_Suggested Mentor(s):_ [Kacper Kowalik](https://bitbucket.org/xarthisius),
+[Nathan Goldbaum](https://bitbucket.org/ngoldbaum)
-*Difficulty:* Beginner to Advanced, depending on where the student takes the
- project
+_Difficulty:_ Beginner to Advanced, depending on where the student takes the
+project
-*Knowledge needed*: Familiarity with the `nose` testing package.
+_Knowledge needed_: Familiarity with the `nose` testing package.
-*Programming skills:* Python, Cython
+_Programming skills:_ Python, Cython
-#### Description
+### Description
Currently yt's test suite is split between unit tests (which take about 45
minutes to run) and answer tests, which are normally only run on a continuous
integration server. Altogether the tests only cover about a third of the yt
-codebase, so much of the code in yt needs test coverage. Additionally, the
+codebase, so much of the code in yt needs test coverage. Additionally, the
tests take a long time to run, and we would like to reduce the test runtime
while simultaneously increasing code coverage.
This project could go in a number of directions:
-* Implement a way to retrofit the current tests for different geometries
+- Implement a way to retrofit the current tests for different geometries
(e.g. cartesian, cylindrical, and spherical coordinates) and data styles
(e.g. particle data, as well as various kind of mesh data, including uniform
resolution, octree, patch AMR, and unstructured meshes). Ideally this would
@@ -110,79 +111,79 @@ This project could go in a number of directions:
require learning and improving the "Stream" frontend, which allows the
injestion of in-memory data into yt.
-* Identify areas of the code that are not well tested and devise tests for
+- Identify areas of the code that are not well tested and devise tests for
them. This will require measuring the test coverage of yt's Python and
Cython components. The student working on this will need to gain familiarity
with untested or undertested parts of the codebase and add new
tests. Optimally the new tests will make use of new reusable infrastructure
that will be helpful for tests across the yt codebase.
-* Improve volume rendering and visualization unit tests. Right now visualization
+- Improve volume rendering and visualization unit tests. Right now visualization
tests rely heavily on answer testing and image comparison. It would be more
flexible and easier to understand when things go wrong if the tests instead
compared with a predicted answer using some sort of simplified geometry or via
introspection.
-*Deliverables*:
+_Deliverables_:
-* Develop a framework for measuring test covering in yt's python and cython
+- Develop a framework for measuring test covering in yt's python and cython
components. Triage the reports to look for areas that are user facing and have
poor test coverage.
-* Make a number of pull requests adding tests across the yt codebase.
+- Make a number of pull requests adding tests across the yt codebase.
-* Modify existing testing infrastructure or develop new test infrastructure to
+- Modify existing testing infrastructure or develop new test infrastructure to
improve testing of yt functionality on different data types.
-### Domain contexts and domain-specific fields
+## Domain contexts and domain-specific fields
-*Suggested Mentor(s):* [Britton Smith](https://bitbucket.org/brittonsmith),
- [Matthew Turk](https://bitbucket.org/matthewturk)
+_Suggested Mentor(s):_ [Britton Smith](https://bitbucket.org/brittonsmith),
+[Matthew Turk](https://bitbucket.org/matthewturk)
-*Difficulty:* Beginner to Intermediate
+_Difficulty:_ Beginner to Intermediate
-*Knowledge needed*: Undergrad level Physics knowledge. More specific
- domain-specific knowledge of astronomy, hydrodynamics, finite-element methods,
- GIS, meteorology, geophysics, oceanography a plus
+_Knowledge needed_: Undergrad level Physics knowledge. More specific
+domain-specific knowledge of astronomy, hydrodynamics, finite-element methods,
+GIS, meteorology, geophysics, oceanography a plus
-*Programming skills:* Python
+_Programming skills:_ Python
The original focus of yt was to analyze datasets from astrophysical
-simulations. However, use of yt has been expanding to other
+simulations. However, use of yt has been expanding to other
scientific domains, such as nuclear physics, meteorology, and
-geophysics. Still, much of the infrastructure within yt is built upon
+geophysics. Still, much of the infrastructure within yt is built upon
the assumption that the datasets being loaded are astrophysical and
-hydrodynamic in nature. This assumption informs the choice of derived
+hydrodynamic in nature. This assumption informs the choice of derived
fields made available to the user as well as the default unit system.
For example, fields such as "Jeans mass" and "X-ray emissivity" in CGS
units are of little use to an earthquake simulation.
The goal of this project is to develop a system for domain contexts,
sets of fields and unit systems associated with specific scientific
-domains. Rather than having all fields be made available to all
+domains. Rather than having all fields be made available to all
datasets, each dataset is given a domain context, which specifies the
-relevant fields and most meaningful unit system. Domain contexts
+relevant fields and most meaningful unit system. Domain contexts
could also be subclassed to provide further specificity, for example,
cosmology as a subclass of astrophysics.
-*Deliverables:*
+_Deliverables:_
-* For each of the existing frontends, identify the relevant field
+- For each of the existing frontends, identify the relevant field
plugins. Create a data structure to associate with each frontend that lists
only the relevant plugins. Take the field plugin loading machinery, which
currently just loops over all plugins, and have it only load plugins relevant
to the loaded frontend.
-* With the above as an example, identify and document all of the places in the
+- With the above as an example, identify and document all of the places in the
code where the domain is assumed to be astronomy. Use this to come up with a
set of attributes that minimally describe a scientific domain, i.e., list of
field plugins, unit system, etc.
-* Write up a [YTEP](https://ytep.readthedocs.org) describing the proposed design
+- Write up a [YTEP](https://ytep.readthedocs.org) describing the proposed design
and ideas for implementation. Should identify an initial set of domain
contexts, sort fields into domain contexts, and sketch how frontends should
declare needed domain contexts.
-* Create a domain context class with the identified attributes. Implement an
+- Create a domain context class with the identified attributes. Implement an
Base, astronomy, and possibly a nuclear engineering domain context and
associate it with the existing frontends.
diff --git a/_projects/2017/astropy/astroplan-speed.md b/src/content/pages/gsoc/2017/astropy/astroplan-speed.md
similarity index 69%
rename from _projects/2017/astropy/astroplan-speed.md
rename to src/content/pages/gsoc/2017/astropy/astroplan-speed.md
index c1544eeb..2fcbbd16 100644
--- a/_projects/2017/astropy/astroplan-speed.md
+++ b/src/content/pages/gsoc/2017/astropy/astroplan-speed.md
@@ -2,30 +2,30 @@
name: Pedal to the metal for astroplan
desc: Profiling and speeding up observation scheduling with astroplan and astropy
requirements:
- - Python
- - Observational astronomy experience may be helpful, but not required
+ - Python
+ - Observational astronomy experience may be helpful, but not required
difficulty: Intermediate
-mentors:
- - bmorris3
- - stuartlittlefair
- - eteq
+mentors:
+ - bmorris3
+ - stuartlittlefair
+ - eteq
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astroplan
+ - python
+ - astroplan
collaborating_projects:
- - astropy
- - astroplan
+ - astropy
+ - astroplan
---
#### Description
You want to schedule observations of one thousand targets over the next month. You are given one hour. Can you help us make astroplan the tool that's up to the task?
-Last summer's astroplan GSoC student began implementing a module for [scheduling astronomical observations](http://astroplan.readthedocs.io/en/latest/tutorials/scheduling.html). These scheduling operations require many calls to basic coordinate calculations – e.g. when does this target rise/set? – which can be optimized at several places within astropy core in the [`SkyCoord`](http://docs.astropy.org/en/stable/api/astropy.coordinates.SkyCoord.html) object and within the astroplan package to speed up astroplan's schedulers. Some goals of this project are to:
+Last summer's astroplan GSoC student began implementing a module for [scheduling astronomical observations](http://astroplan.readthedocs.io/en/latest/tutorials/scheduling.html). These scheduling operations require many calls to basic coordinate calculations - e.g. when does this target rise/set? - which can be optimized at several places within astropy core in the [`SkyCoord`](http://docs.astropy.org/en/stable/api/astropy.coordinates.SkyCoord.html) object and within the astroplan package to speed up astroplan's schedulers. Some goals of this project are to:
1. Profile astroplan's rise/set functions and identify inefficiencies in the `SkyCoord` object
2. Make efficiency improvements wherever possible with the findings of Step 1
3. Design/implement an API for accessing simple trigonometric rise/set calculations within astroplan's schedulers (this is where some observational astronomy experience would be handy)
-4. Test improved astroplan against some target use cases. We'd like to generate schedules for thousands of targets in a reasonable amounts of time, like those required by the [LCOGT](https://lco.global) operators.
+4. Test improved astroplan against some target use cases. We'd like to generate schedules for thousands of targets in a reasonable amounts of time, like those required by the [LCOGT](https://lco.global) operators.
diff --git a/_projects/2017/astropy/astroquery.md b/src/content/pages/gsoc/2017/astropy/astroquery.md
similarity index 80%
rename from _projects/2017/astropy/astroquery.md
rename to src/content/pages/gsoc/2017/astropy/astroquery.md
index 95f70a50..51e56291 100644
--- a/_projects/2017/astropy/astroquery.md
+++ b/src/content/pages/gsoc/2017/astropy/astroquery.md
@@ -2,24 +2,24 @@
name: Add additional archives to astroquery
desc: Implement module(s) to access currently unsupported astronomical archives using astroquery.
requirements:
- - Python
- - Basic understanding of web queries and APIs
+ - Python
+ - Basic understanding of web queries and APIs
difficulty: low
issues:
- - https://github.com/astropy/astroquery/issues/226
-mentors:
- - keflavich
- - eteq
- - bsipocz
- - pllim
+ - https://github.com/astropy/astroquery/issues/226
+mentors:
+ - keflavich
+ - eteq
+ - bsipocz
+ - pllim
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropquery
+ - python
+ - astropquery
collaborating_projects:
- - astropy
- - astroquery
+ - astropy
+ - astroquery
---
#### Description
@@ -32,12 +32,10 @@ A list of new services that have been suggested by our users
[can be found here](https://github.com/astropy/astroquery/issues?q=is%3Aissue+is%3Aopen+label%3A%22New+Service%22) and
in [this summary issue](https://github.com/astropy/astroquery/issues/226).
-
-A *possible* set of milestones for any particular one of these modules might be:
+A _possible_ set of milestones for any particular one of these modules might be:
1. Research the web API for the archive sufficiently to determine what exactly astroquery should expose.
2. Determine the best interface to access the simplest subset of that archive that would be useful.
3. Create an astroquery module to actually implement that interface.
4. Add tests to ensure the module works correctly.
5. Generalize that architecture to extend to other data products from the archive - e.g. repeat 1-4 until all useful functionality in the module is complete.
-
diff --git a/_projects/2017/astropy/astrowidgets.md b/src/content/pages/gsoc/2017/astropy/astrowidgets.md
similarity index 71%
rename from _projects/2017/astropy/astrowidgets.md
rename to src/content/pages/gsoc/2017/astropy/astrowidgets.md
index e82a2351..34c6ef67 100644
--- a/_projects/2017/astropy/astrowidgets.md
+++ b/src/content/pages/gsoc/2017/astropy/astrowidgets.md
@@ -2,20 +2,20 @@
name: Jupyter widgets for Astropy
desc: Create "astrowidgets" - Jupyter widgets for Astropy.
requirements:
- - Python
- - Very basic knowledge of CSS.
- - Basic understanding of javascript.
+ - Python
+ - Very basic knowledge of CSS.
+ - Basic understanding of javascript.
difficulty: low to intermediate
-mentors:
- - mwcraig
+mentors:
+ - mwcraig
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - javascript
+ - python
+ - javascript
collaborating_projects:
- - astropy
- - astrowidgets
+ - astropy
+ - astrowidgets
---
#### Description
@@ -26,15 +26,15 @@ The final deliverable for the project will be a new package ready for applicatio
Some of the deliverables for this project would be widget interfaces for:
-+ A FITS image viewer utilizing the affiliated package [ginga](https://github.com/ejeschke/ginga) to handle the image display. This widget should allow for overlays of sources from catalogs (using [astroquery](https://github.com/astropy/astroquery)), selection of sources in the image using a mouse, and user-configurable key bindings.
-+ Point source detection and photometry using either [photutils](https://github.com/astropy/photutils) or [sep](https://github.com/kbarbary/sep).
-+ Observation planning using [astroplan](https://github.com/astropy/astroplan).
+- A FITS image viewer utilizing the affiliated package [ginga](https://github.com/ejeschke/ginga) to handle the image display. This widget should allow for overlays of sources from catalogs (using [astroquery](https://github.com/astropy/astroquery)), selection of sources in the image using a mouse, and user-configurable key bindings.
+- Point source detection and photometry using either [photutils](https://github.com/astropy/photutils) or [sep](https://github.com/kbarbary/sep).
+- Observation planning using [astroplan](https://github.com/astropy/astroplan).
In addition, these Jupyter notebooks will be developed:
-+ Sample notebooks demonstrating how to compose the widgets into applications.
-+ An image reduction notebook, similar to [reducer](https://github.com/mwcraig/reducer).
-+ A photometry notebook for source detection and photometry.
-+ A notebook for performing differential photometry on a time series of measurements.
+- Sample notebooks demonstrating how to compose the widgets into applications.
+- An image reduction notebook, similar to [reducer](https://github.com/mwcraig/reducer).
+- A photometry notebook for source detection and photometry.
+- A notebook for performing differential photometry on a time series of measurements.
Preliminary development of this project is already underway, so some of the specific deliverables might have changed by the beginning of the summer of code.
diff --git a/_projects/2017/astropy/coord-velocities.md b/src/content/pages/gsoc/2017/astropy/coord-velocities.md
similarity index 75%
rename from _projects/2017/astropy/coord-velocities.md
rename to src/content/pages/gsoc/2017/astropy/coord-velocities.md
index 9f640a8a..86be7df0 100644
--- a/_projects/2017/astropy/coord-velocities.md
+++ b/src/content/pages/gsoc/2017/astropy/coord-velocities.md
@@ -2,21 +2,21 @@
name: Velocities in Astropy coordinates
desc: Implement framework for handling velocities and velocity transforms in astropy.coordinates.
requirements:
- - Python
- - Some knowledge of coordinate transformations.
- - Background in astronomical velocity frames and how they are used (helpful but not necessarily a strict requirement).
+ - Python
+ - Some knowledge of coordinate transformations.
+ - Background in astronomical velocity frames and how they are used (helpful but not necessarily a strict requirement).
difficulty: Expert
-mentors:
- - mhvk
- - eteq
- - adrn
+mentors:
+ - mhvk
+ - eteq
+ - adrn
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy core
+ - python
+ - astropy core
collaborating_projects:
- - astropy
+ - astropy
---
#### Description
diff --git a/_projects/2017/astropy/ds9-regions.md b/src/content/pages/gsoc/2017/astropy/ds9-regions.md
similarity index 90%
rename from _projects/2017/astropy/ds9-regions.md
rename to src/content/pages/gsoc/2017/astropy/ds9-regions.md
index 485d632c..e4314b0a 100644
--- a/_projects/2017/astropy/ds9-regions.md
+++ b/src/content/pages/gsoc/2017/astropy/ds9-regions.md
@@ -3,18 +3,18 @@ name: Complete the ds9 region file reader/writer
desc: Implement a reader and writer for the ds9 regions file format.
# add a description of your project
requirements:
- - Python
+ - Python
difficulty: low to intermediate
-mentors:
- - keflavich
- - cdeil
+mentors:
+ - keflavich
+ - cdeil
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - regions
+ - python
+ - regions
collaborating_projects:
- - astropy
+ - astropy
---
#### Description
diff --git a/_projects/2017/astropy/fits-table-wcs.md b/src/content/pages/gsoc/2017/astropy/fits-table-wcs.md
similarity index 73%
rename from _projects/2017/astropy/fits-table-wcs.md
rename to src/content/pages/gsoc/2017/astropy/fits-table-wcs.md
index 7f6c7bd7..adbb730c 100644
--- a/_projects/2017/astropy/fits-table-wcs.md
+++ b/src/content/pages/gsoc/2017/astropy/fits-table-wcs.md
@@ -1,28 +1,28 @@
---
name: Seamless Combination of SkyCoord, Table, WCS, and FITS
-desc:
+desc:
requirements:
- - Python
- - Some familiarity with FITS files
+ - Python
+ - Some familiarity with FITS files
difficulty: intermediate
issues:
- - https://github.com/astropy/astropy/issue/5626
-mentors:
- - hamogu
- - taldcroft
- - eteq
+ - https://github.com/astropy/astropy/issue/5626
+mentors:
+ - hamogu
+ - taldcroft
+ - eteq
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy core
+ - python
+ - astropy core
collaborating_projects:
- - astropy
+ - astropy
---
#### Description
-Here is a common astronomical problem: I have a table with objects on the sky, each of which has a flux and an observation time. I match them with some other photometric catalog and them compute certain values (e.g. the mass, the age and the accretion rate). I store all that in the table. Astropy offers a lot of classes to make this easier, for example coordinates that know how to transform between different coordinate systems.
+Here is a common astronomical problem: I have a table with objects on the sky, each of which has a flux and an observation time. I match them with some other photometric catalog and them compute certain values (e.g. the mass, the age and the accretion rate). I store all that in the table. Astropy offers a lot of classes to make this easier, for example coordinates that know how to transform between different coordinate systems.
Once I write my publication, I need to store that table as a fits file and print it out to LaTeX. This is where the problem comes: Each of the special objects (coordinates, times, units) has metadata that does not easily fit into the data column.
Astropy grew out of several independent pacakges (pyfits, asciitable) that each did one thing well, but were not very easy to interoperate. Astropy has (mostly) unified the interface, but functionally components still work separately. In this project, you will makes things interoperable. For the example above, you need to develop a protocol that allows storage of coordinates and times in fits and ascii tables.
@@ -33,6 +33,6 @@ This project the following stages:
- Find breaks in the workflow as described in the example above.
- Define protocols for meta data that make it work between different packages.
- Solicit feedback from the community on those protocols.
-- Implement code and test cases.
+- Implement code and test cases.
- Test and document the steps above.
- Add an [astropy tutorials](http://tutorials.astropy.org) and update Astropy core package documentation to show the new capabilities.
diff --git a/_projects/2017/astropy/hips.md b/src/content/pages/gsoc/2017/astropy/hips.md
similarity index 86%
rename from _projects/2017/astropy/hips.md
rename to src/content/pages/gsoc/2017/astropy/hips.md
index 6485caba..80396a35 100644
--- a/_projects/2017/astropy/hips.md
+++ b/src/content/pages/gsoc/2017/astropy/hips.md
@@ -2,24 +2,24 @@
name: HIPS to Py
desc: Write a Python client for Hierarchical Progressive Surveys (HIPS)
requirements:
- - Have Python / Numpy / Astropy skills
- - Know how to write tests with pytest and docs with Sphinx
- - Some open source experience
- - Some image processing experience
- - Interest in spherical geometry and HEALPIX / HIPS
+ - Have Python / Numpy / Astropy skills
+ - Know how to write tests with pytest and docs with Sphinx
+ - Some open source experience
+ - Some image processing experience
+ - Interest in spherical geometry and HEALPIX / HIPS
difficulty: Intermediate to high
-mentors:
- - cdeil
- - tboch
+mentors:
+ - cdeil
+ - tboch
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - regions
- - web
- - math
+ - python
+ - regions
+ - web
+ - math
collaborating_projects:
- - astropy
+ - astropy
---
#### Description
diff --git a/_projects/2017/astropy/performance.md b/src/content/pages/gsoc/2017/astropy/performance.md
similarity index 78%
rename from _projects/2017/astropy/performance.md
rename to src/content/pages/gsoc/2017/astropy/performance.md
index 9d88646f..26362b6c 100644
--- a/_projects/2017/astropy/performance.md
+++ b/src/content/pages/gsoc/2017/astropy/performance.md
@@ -2,33 +2,34 @@
name: Improve astropy performance in a sustainable way
desc: Increase the air speed velocity of Astropy core.
requirements:
- - Python
- - Cython
- - C
- - web
+ - Python
+ - Cython
+ - C
+ - web
difficulty: Intermediate
-mentors:
- - taldcroft
+mentors:
+ - taldcroft
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy core
+ - python
+ - astropy core
collaborating_projects:
- - astropy
+ - astropy
---
+
#### Description
The Astropy core package was designed and implemented with priority placed on
-good code structure, long-term maintainability, and code correctness. Currently
+good code structure, long-term maintainability, and code correctness. Currently
the package is nearly six years old and this strategy has proved its merit.
Nevertheless, development decisions along the way often sacrificed performance
-in favor of clean or simple implementation. At this point as a relatively
+in favor of clean or simple implementation. At this point as a relatively
mature project with wide community adoption it makes sense to profile
both the astronomical user community and the code to find areas where
-performance issues need to be addressed. In many cases there is "low-hanging
+performance issues need to be addressed. In many cases there is "low-hanging
fruit" where simple solutions like caching or initialization fixes can
-yield factors-of-many improvement. In other areas there may be need for
+yield factors-of-many improvement. In other areas there may be need for
more substantial changes and even reimplementation using Cython or C.
One of the key available technologies for performance evaluation is the asv (Air
@@ -41,8 +42,8 @@ prevent performance regressions from getting into the code base.
This GSoC project thus has the following high-level steps:
- Poll the astropy user community for their perspectives on performance
- bottlenecks in astropy. Engage in discussion and develop a prioritized
- list of areas to improve. A minimal list of known issues right now
+ bottlenecks in astropy. Engage in discussion and develop a prioritized
+ list of areas to improve. A minimal list of known issues right now
includes coordinate initialization, iteration, and table / column
creation.
- Work on asv (performance testing suite) to make it easy to run relevant tests
diff --git a/_projects/2017/astropy/test-helper.md b/src/content/pages/gsoc/2017/astropy/test-helper.md
similarity index 82%
rename from _projects/2017/astropy/test-helper.md
rename to src/content/pages/gsoc/2017/astropy/test-helper.md
index c702cc5e..3dc3d482 100644
--- a/_projects/2017/astropy/test-helper.md
+++ b/src/content/pages/gsoc/2017/astropy/test-helper.md
@@ -2,23 +2,23 @@
name: Astropy Test Helper as a Separate Package
desc: Re-implement Astropy Test Helper as Separate Installable Package
requirements:
- - Python packaging experience.
- - familiarity with pytest
+ - Python packaging experience.
+ - familiarity with pytest
difficulty: Intermediate to Advanced
issues:
- - https://github.com/astropy/astropy/pull/5770
-mentors:
- - pllim
- - bsipocz
- - Cadair
+ - https://github.com/astropy/astropy/pull/5770
+mentors:
+ - pllim
+ - bsipocz
+ - Cadair
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy
- - pytest
+ - python
+ - astropy
+ - pytest
collaborating_projects:
- - astropy
+ - astropy
---
#### Description
diff --git a/src/content/pages/gsoc/2017/casacore/testing.md b/src/content/pages/gsoc/2017/casacore/testing.md
new file mode 100644
index 00000000..3d1347f9
--- /dev/null
+++ b/src/content/pages/gsoc/2017/casacore/testing.md
@@ -0,0 +1,30 @@
+---
+name: Casacore testing
+desc: Improve the test coverage of the python wrappers around casacore, and possibly add some python functionality
+# add a description of your project
+requirements:
+ - Proficiency in Python
+difficulty: intermediate
+issues:
+ - https://github.com/casacore/python-casacore/issues/6
+ - https://github.com/casacore/python-casacore/issues/60
+mentors:
+ - tammojan
+ - gijzelaerr
+initiatives:
+ - GSOC
+tags:
+ - python casacore testing
+collaborating_projects:
+ - casacore
+---
+
+#### Description
+
+Python-casacore is a set of Python bindings for [casacore] (), a c++ library used in radio astronomy. This python binding to casacore is now python 3 compatible, contains some unit tests, etc. But some work remains to be done:
+
+- Remove all compile warnings
+- Modernise code, add missing features, maybe more ‘pythonic’.
+- Improve test coverage (24% at the moment)
+
+This is a typical project to learn making good code.
diff --git a/_projects/2017/glue/notebook.md b/src/content/pages/gsoc/2017/glue/notebook.md
similarity index 87%
rename from _projects/2017/glue/notebook.md
rename to src/content/pages/gsoc/2017/glue/notebook.md
index c12e5480..1448e4b6 100644
--- a/_projects/2017/glue/notebook.md
+++ b/src/content/pages/gsoc/2017/glue/notebook.md
@@ -3,21 +3,22 @@ name: Glue notebook viewers
desc: Make it possible to use glue from the Jupyter notebook by developing notebook-based data viewers. This will make it possible to also use glue remotely, and will be a widely used feature!
# add a description of your project
requirements:
- - Proficiency in Python
- - Familiarity with the Jupyter notebook
+ - Proficiency in Python
+ - Familiarity with the Jupyter notebook
difficulty: high
issues:
- - https://github.com/glue-viz/glue/issues/1226
+ - https://github.com/glue-viz/glue/issues/1226
mentors:
- - astrofrog
- - eteq
+ - astrofrog
+ - eteq
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
+ - python
collaborating_projects:
- - glue
+ - glue
---
+
#### Description
At the moment, the main way users use glue is via the Qt-based application.
diff --git a/_projects/2017/glue/widgets.md b/src/content/pages/gsoc/2017/glue/widgets.md
similarity index 54%
rename from _projects/2017/glue/widgets.md
rename to src/content/pages/gsoc/2017/glue/widgets.md
index 51ed412c..779f9da5 100644
--- a/_projects/2017/glue/widgets.md
+++ b/src/content/pages/gsoc/2017/glue/widgets.md
@@ -3,34 +3,35 @@ name: New glue widgets
desc: Expand the functionality of glue by developing a range of new widgets, including to better read in and edit data.
# add a description of your project
requirements:
- - Proficiency in Python
- - Familiarity with GUI programming, ideally Qt
+ - Proficiency in Python
+ - Familiarity with GUI programming, ideally Qt
difficulty: medium
issues:
- - https://github.com/glue-viz/glue/issues/836
- - https://github.com/glue-viz/glue/issues/981
- - https://github.com/glue-viz/glue/issues/1073
+ - https://github.com/glue-viz/glue/issues/836
+ - https://github.com/glue-viz/glue/issues/981
+ - https://github.com/glue-viz/glue/issues/1073
mentors:
- - astrofrog
+ - astrofrog
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
+ - python
collaborating_projects:
- - glue
+ - glue
---
+
#### Description
This project is to develop new widgets/dialogs inside glue. Examples include:
-* A dialog that would be useful beyond this project is a dialog for importing
+- A dialog that would be useful beyond this project is a dialog for importing
ASCII tables into glue, similar to the CSV import functionality in e.g.
OpenOffice/LibreOffice or Excel.
-* A dialog that allows the user to edit components of a datasets, including
+- A dialog that allows the user to edit components of a datasets, including
renaming them, sorting them, and changing datatypes.
-* A dialog that can be used to re-order categorical components
+- A dialog that can be used to re-order categorical components
-* A dialog to visually create simple selections (for example that a specific
+- A dialog to visually create simple selections (for example that a specific
component should be in a certain range)
diff --git a/src/content/pages/gsoc/2017/index.md b/src/content/pages/gsoc/2017/index.md
new file mode 100644
index 00000000..51e590dc
--- /dev/null
+++ b/src/content/pages/gsoc/2017/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2017"
+show_main: false
+season: 2017
+---
diff --git a/_projects/2017/juliaastro/astrolib.md b/src/content/pages/gsoc/2017/juliaastro/astrolib.md
similarity index 74%
rename from _projects/2017/juliaastro/astrolib.md
rename to src/content/pages/gsoc/2017/juliaastro/astrolib.md
index 1a95bf1e..e63a5242 100644
--- a/_projects/2017/juliaastro/astrolib.md
+++ b/src/content/pages/gsoc/2017/juliaastro/astrolib.md
@@ -2,26 +2,26 @@
name: Porting the IDL Astronomy User's Library to Julia
desc: Expand the ecosystem of astronomical routines in Julia language.
requirements:
- - Julia
- - IDL
- - Knowledge of astronomy is beneficial, but not required
+ - Julia
+ - IDL
+ - Knowledge of astronomy is beneficial, but not required
difficulty: low to intermediate
mentors:
- - giordano
- - kbarbary
+ - giordano
+ - kbarbary
initiatives:
- - GSOC
+ - GSOC
tags:
- - julia
+ - julia
collaborating_projects:
- - JuliaAstro
+ - JuliaAstro
---
#### Description
[Julia](http://julialang.org/) is a programming language designed for technical
computing that combines ease-of-use of dynamical languages and high-performance
-of statically-compiled languages like C. Its most notable feature
+of statically-compiled languages like C. Its most notable feature
is [multiple dispatch](http://en.wikipedia.org/wiki/Multiple_dispatch), which
greatly simplifies the definition of complex functions whose behavior depends on
the type of the arguments.
@@ -35,24 +35,24 @@ The goal of this project is to expand
the [AstroLib.jl](https://github.com/JuliaAstro/AstroLib.jl) package, which
bundles generic astronomical and astrophysical functions, mainly ported from
the [IDL Astronomy User's Library](https://idlastro.gsfc.nasa.gov/homepage.html)
-(a.k.a. AstroLib). You should focus on porting the astronomical utilities
-first. If you don't know where to start from, have a look at:
+(a.k.a. AstroLib). You should focus on porting the astronomical utilities
+first. If you don't know where to start from, have a look at:
-* the
+- the
[AstroLib.jl manual](https://juliaastro.github.io/AstroLib.jl/latest/index.html)
-* the [TODO list](https://github.com/JuliaAstro/AstroLib.jl/blob/master/TODO.md)
- of the project, with the list of *all* functions in IDL AstroLib not yet
+- the [TODO list](https://github.com/JuliaAstro/AstroLib.jl/blob/master/TODO.md)
+ of the project, with the list of _all_ functions in IDL AstroLib not yet
ported
-* the list
+- the list
of [Astronomical Utilities](https://idlastro.gsfc.nasa.gov/contents.html) in
IDL AstroLib
While an experience with programming in Julia would be helpful, this is not
necessary, but you should get acquainted with the language before the coding
-period. If you are a Julia newbie, check out
+period. If you are a Julia newbie, check out
the [Manual](http://docs.julialang.org/en/latest/index.html), in particular
the
[performance tips](https://docs.julialang.org/en/latest/manual/performance-tips/) and
the
[style guide](https://docs.julialang.org/en/latest/manual/style-guide/).
-[Here](http://julialang.org/learning/) you may find other useful resources.
+[Other Julia learning resources](http://julialang.org/learning/) are available as well.
diff --git a/_projects/2017/sunpy/drms.md b/src/content/pages/gsoc/2017/sunpy/drms.md
similarity index 69%
rename from _projects/2017/sunpy/drms.md
rename to src/content/pages/gsoc/2017/sunpy/drms.md
index be257810..70e04d6b 100644
--- a/_projects/2017/sunpy/drms.md
+++ b/src/content/pages/gsoc/2017/sunpy/drms.md
@@ -2,24 +2,24 @@
name: DRMS Module for JSOC Downloads
desc: Improve the drms package and the SunPy JSOC client,
requirements:
- - Familiarity with Python class development.
+ - Familiarity with Python class development.
difficulty: medium
issues:
- - https://github.com/kbg/drms/issues/3
- - https://github.com/sunpy/sunpy/issues/1909
-mentors:
- - Cadair
- - kbg
- - mbobra
+ - https://github.com/kbg/drms/issues/3
+ - https://github.com/sunpy/sunpy/issues/1909
+mentors:
+ - Cadair
+ - kbg
+ - mbobra
initiatives:
- - GSOC
- - SoCiS
+ - GSOC
+ - SoCiS
tags:
-- sunpy
-- python
+ - sunpy
+ - python
collaborating_projects:
- - sunpy
- - drms
+ - sunpy
+ - drms
---
#### Description
@@ -40,7 +40,7 @@ the majority of the drms functionality through the unified search API of SunPy.
While the SunPy implementation would not need to provide all the features of the
drms library, it would strive to provide a simple API for most queries supported
by drms. One high-priority feature that should be availble in SunPy is the
-ability to query drms series for which the prime key is not ``T_REC``, also it
+ability to query drms series for which the prime key is not `T_REC`, also it
should be possible to download only the metadata from drms without downloading
the associated image data.
@@ -48,26 +48,24 @@ Finally, documentation in SunPy should be improved to detail much more of the
JSOC functionality. This should include API documentation, narrative
documentation in the guide and examples in the gallery.
-
#### Milestones
##### GSOC 2017 CODING STARTS
-* Have familiarised yourself with the drms module, the `sunpy.net.jsoc` and `sunpy.net.Fido` submodules.
-* Become comfortable with writing tests in pytest, and using mock.
+- Have familiarised yourself with the drms module, the `sunpy.net.jsoc` and `sunpy.net.Fido` submodules.
+- Become comfortable with writing tests in pytest, and using mock.
##### GSOC 2017 MIDTERM
-* Have developed a test suite for drms.
-* Have worked with the mentors to enable CI testing and build a conda package for the drms library.
-
-##### GSOC 2017 FINAL
+- Have developed a test suite for drms.
+- Have worked with the mentors to enable CI testing and build a conda package for the drms library.
-* Have completed a rework of the `sunpy.net.jsoc` module to use the features of drms.
+##### GSOC 2017 FINAL
+- Have completed a rework of the `sunpy.net.jsoc` module to use the features of drms.
##### Additional Resources
-* [drms Tutorial](https://drms.readthedocs.io/en/stable/tutorial.html)
-* [SHARP Example](https://nbviewer.jupyter.org/github/kbg/ipynbs/blob/master/hminuggets/sharp_imgdata.ipynb)
-* [Metadata example](https://nbviewer.jupyter.org/github/mbobra/calculating-spaceweather-keywords/blob/master/plot_swx_d3.ipynb)
+- [drms Tutorial](https://drms.readthedocs.io/en/stable/tutorial.html)
+- [SHARP Example](https://nbviewer.jupyter.org/github/kbg/ipynbs/blob/master/hminuggets/sharp_imgdata.ipynb)
+- [Metadata example](https://nbviewer.jupyter.org/github/mbobra/calculating-spaceweather-keywords/blob/master/plot_swx_d3.ipynb)
diff --git a/_projects/2017/sunpy/iris.md b/src/content/pages/gsoc/2017/sunpy/iris.md
similarity index 53%
rename from _projects/2017/sunpy/iris.md
rename to src/content/pages/gsoc/2017/sunpy/iris.md
index 82f6d5e9..b8203d7e 100644
--- a/_projects/2017/sunpy/iris.md
+++ b/src/content/pages/gsoc/2017/sunpy/iris.md
@@ -2,21 +2,21 @@
name: SunPy IRIS Data class
desc: Develop tools to read in and analyze IRIS image and spectral data using SunPy.
requirements:
- - Familiarity with Python class development.
- - (Optional) A knowledge of the Interactive Data Language (IDL) would be useful, but not requried.
+ - Familiarity with Python class development.
+ - (Optional) A knowledge of the Interactive Data Language (IDL) would be useful, but not requried.
difficulty: medium
issues:
-mentors:
- - ehsteve
- - DanRyanIrish
+mentors:
+ - ehsteve
+ - DanRyanIrish
initiatives:
- - GSOC
- - SoCiS
+ - GSOC
+ - SoCiS
tags:
-- sunpy
-- python
+ - sunpy
+ - python
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -39,28 +39,28 @@ using SunPy. This includes the following tasks:
and analyzed in a convenient way.
2. Develop and test an IRISRaster class to read in, combine and
-analyze IRIS spectra from different raster positions.
+ analyze IRIS spectra from different raster positions.
3. Using the two classes developed above, build an IRISObservation
container class to allow users to easily associate co-temporal
slit-jaw images and spectra.
-*Optional:* Although the IRIS instrument team has calibrated the
- publicly available IRIS data, finer tuning of this calibration can be
- helpful for advanced data analysis. Tools to do this have been
- developed by the IRIS team in the Interactive Data Language (IDL),
- but no such tools exist in Python. Depending on the progress and
- preference of the student, these tools can be developed in Python as
- part of this project. This would include the following tasks:
+_Optional:_ Although the IRIS instrument team has calibrated the
+publicly available IRIS data, finer tuning of this calibration can be
+helpful for advanced data analysis. Tools to do this have been
+developed by the IRIS team in the Interactive Data Language (IDL),
+but no such tools exist in Python. Depending on the progress and
+preference of the student, these tools can be developed in Python as
+part of this project. This would include the following tasks:
1. Develop and test a function for residual wavelength calibration.
-This already exists in IDL.
+ This already exists in IDL.
2. Develop and test a function to calculate the IRIS response
-function. This already exists in IDL but not Python.
+ function. This already exists in IDL but not Python.
3. Using the IRIS response function code, develop a function to
- convert IRIS data into physical units. This already exists in IDL
+ convert IRIS data into physical units. This already exists in IDL
but not Python.
A good proposal would demonstrate that the student is familiar with
@@ -68,35 +68,34 @@ the Xarray package.
##### Expected Outcomes
-* IRIS MapSequence class
-* IRISRaster class
-* IRISObservation class
-
+- IRIS MapSequence class
+- IRISRaster class
+- IRISObservation class
#### Milestones
##### GSOC 2017 CODING STARTS
-* Have familiarised yourself with the basics of IRIS data through the
-resources below and Python classes nd the Xarray package.
-* Have worked with the mentors to get the package repository setup on
-GitHub.
+- Have familiarised yourself with the basics of IRIS data through the
+ resources below and Python classes nd the Xarray package.
+- Have worked with the mentors to get the package repository setup on
+ GitHub.
##### GSOC 2017 MIDTERM
-* Have developed an IRISMapSequence object and submitted a PR.
-* Have started work on an IRISRaster object.
+- Have developed an IRISMapSequence object and submitted a PR.
+- Have started work on an IRISRaster object.
-##### GSOC 2017 FINAL
+##### GSOC 2017 FINAL
-* Have got IRISMapSequence PR accepted.
-* Have completed development of an IRISRaster object and have a PR
-ready submitted and ready to be accepted.
-* Have completed development of an IRISObservation object and have
-opened a PR.
+- Have got IRISMapSequence PR accepted.
+- Have completed development of an IRISRaster object and have a PR
+ ready submitted and ready to be accepted.
+- Have completed development of an IRISObservation object and have
+ opened a PR.
##### Additional Resources
-* [IRIS website](http://iris.lmsal.com/)
-* [IRIS instrument paper](https://www.lmsal.com/iris_science/doc?cmd=dcur&proj_num=IS0196&file_type=pdf)
-* [Guide to IRIS data analysis](http://iris.lmsal.com/itn26/itn26.pdf)
+- [IRIS website](http://iris.lmsal.com/)
+- [IRIS instrument paper](https://www.lmsal.com/iris_science/doc?cmd=dcur&proj_num=IS0196&file_type=pdf)
+- [Guide to IRIS data analysis](http://iris.lmsal.com/itn26/itn26.pdf)
diff --git a/_projects/2017/sunpy/mag_field.md b/src/content/pages/gsoc/2017/sunpy/mag_field.md
similarity index 65%
rename from _projects/2017/sunpy/mag_field.md
rename to src/content/pages/gsoc/2017/sunpy/mag_field.md
index 214ed3e4..72c2a999 100644
--- a/_projects/2017/sunpy/mag_field.md
+++ b/src/content/pages/gsoc/2017/sunpy/mag_field.md
@@ -3,33 +3,34 @@ name: 3D Map Class for Field Extrapolations in Spherical Coordinates
desc: Generalize magnetic field extrapolation to spherical coordinates in `solarbextrapolation` package with a "coordinate-aware" 3D Map-like object.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of vector calculus and differential equations
- - Familiar with numerical methods
- - Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
+ # Student requirements:
+ - Knowledge of vector calculus and differential equations
+ - Familiar with numerical methods
+ - Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
difficulty: intermediate
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/solarbextrapolation/issues/12
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/solarbextrapolation/issues/12
mentors:
-# First person in contact; mentors may change before project starts.
- - Alex-Ian-Hamilton
- - wtbarnes
+ # First person in contact; mentors may change before project starts.
+ - Alex-Ian-Hamilton
+ - wtbarnes
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
- - numba
- - numpy
+ - python
+ - numba
+ - numpy
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - sunpy
+ # suborganization(s) to which this project belongs.
+ - sunpy
---
+
#### Description
Determining the 3D geometry of the tangled and dynamic coronal magnetic field is an open research problem in solar physics.
-A common technique for deriving the 3D vector field from a photospheric magnetogram is to assume a *potential* field such that it can be derived by solving Laplace's equation.
+A common technique for deriving the 3D vector field from a photospheric magnetogram is to assume a _potential_ field such that it can be derived by solving Laplace's equation.
The SunPy-affiliated [`solarbextrapolation`](https://github.com/sunpy/solarbextrapolation) package solves Laplace's equation using the method of [Sakurai (1982)](http://adsabs.harvard.edu/abs/1982SoPh...76..301S).
However, when constructing the 3D field from the magnetogram, the "small-angle" approximation is used such that the curvature of the Sun is ignored, a valid approximation on the scale of an active region.
@@ -41,19 +42,22 @@ Currently, the `solarbextrapolation` package uses a Map3D class that is limited
It is expected that this new object will serve as a prototype for a first-class data type in the core SunPy package.
#### Primary Goals
-* Develop a coordinate-aware 3D Map class
-* Use 3D Map class for global field extrapolations
+
+- Develop a coordinate-aware 3D Map class
+- Use 3D Map class for global field extrapolations
#### Possible Secondary Goals
-* Performance improvements
-* Improvements to the documentation and examples
-* Better visualization methods
-* Addition of more advanced extrapolators, e.g. non-linear force-free field
+
+- Performance improvements
+- Improvements to the documentation and examples
+- Better visualization methods
+- Addition of more advanced extrapolators, e.g. non-linear force-free field
#### Additional Resources
-* [`solarbextrapolation` package ](https://github.com/sunpy/solarbextrapolation)
-* [Maps in SunPy](http://docs.sunpy.org/en/stable/code_ref/map.html)
-* [Coordinates in SunPy](http://docs.sunpy.org/en/stable/code_ref/coordinates.html)
-* [Coordinates for Solar Image Data -- Thompson (2006)](http://adsabs.harvard.edu/abs/2006A%26A...449..791T)
-* [IDL package for global potential field extrapolations](http://www.lmsal.com/~derosa/pfsspack/)
-* [Review of Magnetic Field Extrapolation Techniques -- T. Neukirch](http://adsabs.harvard.edu/abs/2005ESASP.596E..12N)
+
+- [`solarbextrapolation` package](https://github.com/sunpy/solarbextrapolation)
+- [Maps in SunPy](http://docs.sunpy.org/en/stable/code_ref/map.html)
+- [Coordinates in SunPy](http://docs.sunpy.org/en/stable/code_ref/coordinates.html)
+- [Coordinates for Solar Image Data -- Thompson (2006)](http://adsabs.harvard.edu/abs/2006A%26A...449..791T)
+- [IDL package for global potential field extrapolations](http://www.lmsal.com/~derosa/pfsspack/)
+- [Review of Magnetic Field Extrapolation Techniques -- T. Neukirch](http://adsabs.harvard.edu/abs/2005ESASP.596E..12N)
diff --git a/_projects/2017/sunpy/realtimesun.md b/src/content/pages/gsoc/2017/sunpy/realtimesun.md
similarity index 72%
rename from _projects/2017/sunpy/realtimesun.md
rename to src/content/pages/gsoc/2017/sunpy/realtimesun.md
index a6ffec36..c0062c15 100644
--- a/_projects/2017/sunpy/realtimesun.md
+++ b/src/content/pages/gsoc/2017/sunpy/realtimesun.md
@@ -3,32 +3,32 @@ name: Sun, Right now!
desc: Build a website to display what the Sun looks like in real time
# add a description of your project
requirements:
- - Familiarity with Python
- - Understanding of databases
- - Basic web development
- - Familiarity with Flask
+ - Familiarity with Python
+ - Understanding of databases
+ - Basic web development
+ - Familiarity with Flask
difficulty: Intermediate
issues:
- - https://github.com/sunpy/sunpy/issues/1442
- - https://github.com/sunpy/sunpy/pull/1852
-mentors:
- - dpshelio
- - Cadair
+ - https://github.com/sunpy/sunpy/issues/1442
+ - https://github.com/sunpy/sunpy/pull/1852
+mentors:
+ - dpshelio
+ - Cadair
initiatives:
- - GSOC
+ - GSOC
tags:
- - sunpy
+ - sunpy
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
-The project requires the combination of multiple parts of the sunpy
+The project requires the combination of multiple parts of the sunpy
library to combine them all and together with a flask (or similar) application
to visualise real time and past images of the sun on a website.
-The project should have three parts:
+The project should have three parts:
- Add missing data sources like [DISCOVR](http://www.swpc.noaa.gov/products/real-time-solar-wind)
- Download, visualise (and probably annotate) and save real time data.
diff --git a/_projects/2017/sunpy/roi.md b/src/content/pages/gsoc/2017/sunpy/roi.md
similarity index 87%
rename from _projects/2017/sunpy/roi.md
rename to src/content/pages/gsoc/2017/sunpy/roi.md
index 75c0278b..5f81384b 100644
--- a/_projects/2017/sunpy/roi.md
+++ b/src/content/pages/gsoc/2017/sunpy/roi.md
@@ -3,20 +3,20 @@ name: Region of Interest
desc: Meta-Object creation for holding temporal and spatial features.
# add a description of your project
requirements:
- - Familiarity with Python
- - Understanding of design patterns
+ - Familiarity with Python
+ - Understanding of design patterns
difficulty: High
issues:
- - https://github.com/sunpy/sunpy/issues/164
-mentors:
- - dpshelio
- - wafels
+ - https://github.com/sunpy/sunpy/issues/164
+mentors:
+ - dpshelio
+ - wafels
initiatives:
- - GSOC
+ - GSOC
tags:
- - sunpy
+ - sunpy
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -26,7 +26,7 @@ region of interest (ROI) in any physical dimension (such as spatial area,
temporal range or spectral window) and interact with the rest of data types used
in sunpy.
-For example, a region of interest could be a particular area in the Sun
+For example, a region of interest could be a particular area in the Sun
at a particular moment in time. Therefore, that object should contain the extent
of such area, its contour and the time when it was observed.
It also needs other information, such as the coordinate system that it
@@ -39,6 +39,5 @@ plotting the box containing such region and being aware of difference in time or
observational point. So, it needs to be spatial and temporal aware.
Additionally, the object needs to understand (be able to parse in) features and
-events catalogued in the [HEK](http://www.lmsal.com/hek/hek_isolsearch.html)
+events catalogued in the [HEK](http://www.lmsal.com/hek/hek_isolsearch.html)
and [HELIO](http://hfc.helio-vo.eu/) databases.
-
diff --git a/_projects/2017/sunpy/sunkit-image.md b/src/content/pages/gsoc/2017/sunpy/sunkit-image.md
similarity index 74%
rename from _projects/2017/sunpy/sunkit-image.md
rename to src/content/pages/gsoc/2017/sunpy/sunkit-image.md
index 4e40579e..d5602b63 100644
--- a/_projects/2017/sunpy/sunkit-image.md
+++ b/src/content/pages/gsoc/2017/sunpy/sunkit-image.md
@@ -2,24 +2,24 @@
name: Develop sunkit-image
desc: Create and develop a package for solar image analysis.
requirements:
- - Good understanding of Python.
- - Enthusiasm to learn solar image processing.
+ - Good understanding of Python.
+ - Enthusiasm to learn solar image processing.
difficulty: low
issues:
- - https://github.com/sunpy/sunpy/pull/1899
- - https://github.com/sunpy/sunpy/pull/1876
+ - https://github.com/sunpy/sunpy/pull/1899
+ - https://github.com/sunpy/sunpy/pull/1876
mentors:
- - Cadair
- - wafels
- - Nabobalis
+ - Cadair
+ - wafels
+ - Nabobalis
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
- - sunpy
+ - python
+ - sunpy
collaborating_projects:
- - sunpy
+ - sunpy
---
In this project you would create the foundations of the 'sunkit-image' SunPy
@@ -45,23 +45,22 @@ the following goals (roughly in this order):
optional extras:
-6. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
-8. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
-
+1. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
+2. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
#### Milestones
##### GSOC 2017 CODING STARTS
-* Have familiarised yourself with the algorithms and with Python packaging. Have worked with the mentors to get the package repository setup on GitHub and the CI and documentation running.
+- Have familiarised yourself with the algorithms and with Python packaging. Have worked with the mentors to get the package repository setup on GitHub and the CI and documentation running.
##### GSOC 2017 MIDTERM
-* Have copied in and documented and tested the MGN code.
-* Have opened a PR to SunPy to convert the `sunpy.physics` module to use `sunpy.coordinates`.
-* Have implemented the Map warping code.
+- Have copied in and documented and tested the MGN code.
+- Have opened a PR to SunPy to convert the `sunpy.physics` module to use `sunpy.coordinates`.
+- Have implemented the Map warping code.
-##### GSOC 2017 FINAL
+##### GSOC 2017 FINAL
-* Have got the SunPy PR for coordinates in `sunpy.physics` merged.
-* Have implemented OCCULT-2.
+- Have got the SunPy PR for coordinates in `sunpy.physics` merged.
+- Have implemented OCCULT-2.
diff --git a/_projects/2017/sunpy/theme.md b/src/content/pages/gsoc/2017/sunpy/theme.md
similarity index 73%
rename from _projects/2017/sunpy/theme.md
rename to src/content/pages/gsoc/2017/sunpy/theme.md
index 2ae9af13..d3df59c1 100644
--- a/_projects/2017/sunpy/theme.md
+++ b/src/content/pages/gsoc/2017/sunpy/theme.md
@@ -2,19 +2,19 @@
name: SunPy Website Improvements
desc: Improve the SunPy website and documentation with a new look and new features.
requirements:
- - Experience with CSS and website design.
- - Excellent English language writing skills.
+ - Experience with CSS and website design.
+ - Excellent English language writing skills.
difficulty: low
issues:
-mentors:
- - Cadair
- - dpshelio
+mentors:
+ - Cadair
+ - dpshelio
initiatives:
- - GSOC
+ - GSOC
tags:
- - sunpy
+ - sunpy
collaborating_projects:
- - sunpy
+ - sunpy
---
The SunPy [website](http://sunpy.org) and the SunPy [documentation](http://docs.sunpy.org) do
@@ -26,7 +26,7 @@ and as a sphinx theme for the documentation.
This project will design a new look for the SunPy website, and implement this as
a HTML/CSS theme which can be used by the current Jekyll website, and any future
-technology used by the website.
+technology used by the website.
Once this is done a sphinx theme will be developed that has the same design as
the SunPy website, and can be used by the main SunPy documentation and any SunPy
@@ -34,12 +34,11 @@ affiliated packages.
As extensions to this project any of the following things could be implemented:
-* Implement a registry of SunPy Affiliated packages on the website.
-* Move away from Jekyll to a Python based static site generator. (Sphinx, Nikola, Pelican etc.)
-* Write a sphinx extension that maintains an up to date list on the main website
+- Implement a registry of SunPy Affiliated packages on the website.
+- Move away from Jekyll to a Python based static site generator. (Sphinx, Nikola, Pelican etc.)
+- Write a sphinx extension that maintains an up to date list on the main website
of the instruments and data products supported by the sunpy library.
-* Improve the content of the SunPy website.
-
+- Improve the content of the SunPy website.
As this project is quite open to be customised in any proposal, a good proposal
will have taken the time to evaluate what can be achieved within the time frame
@@ -52,12 +51,12 @@ undertake the project to a high standard.
##### GSOC 2017 CODING STARTS
-* Have evaulated which tools will be used to undertake the project in collaboration with the mentors.
+- Have evaulated which tools will be used to undertake the project in collaboration with the mentors.
##### GSOC 2017 MIDTERM
-* Have designed and implemented the website theme.
+- Have designed and implemented the website theme.
##### GSOC 2017 FINAL
-* Have created the sphinx theme and finished any extensions to the base project.
+- Have created the sphinx theme and finished any extensions to the base project.
diff --git a/src/content/pages/gsoc/2018/astropy/astropy-learn-website.md b/src/content/pages/gsoc/2018/astropy/astropy-learn-website.md
new file mode 100644
index 00000000..939ba902
--- /dev/null
+++ b/src/content/pages/gsoc/2018/astropy/astropy-learn-website.md
@@ -0,0 +1,52 @@
+---
+name: Astropy Learn Website
+desc: Design and Implement landing page for Astropy Learn ecosystem.
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Web development knowledge
+ - User interface design and user experience
+ - Knowledge of the Sphinx documentation tool is a plus
+difficulty: moderate
+issues:
+# Related issues (if any) to this project.
+mentors:
+ # First person in contact; mentors may change before project starts.
+ - kelle
+ - eblur
+ - adrn
+ - eteq
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - Web design
+ - javascript
+ - python
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - astropy
+---
+
+Design and Implement landing page for Astropy Learn ecosystem.
+
+#### Description
+
+This project is for the creation of a landing web page for the Astropy Learn ecosystem. The Learn ecosystems includes the Astropy documentation and associated examples, the Astropy tutorials, and guides (e.g., worked out science use cases). Implementing this likely also requires harmonizing the existing tutorials web site with the astropy documentation (which is generated by Sphinx). This project may also include indexing/tagging of the materials and searching for content (this is already possible to some extent, but the current capabilities are inadequate).
+
+#### Possible Milestones
+
+##### At start of coding for GSOC 2018
+
+- Have a big-picture plan for how the learn landing page, astropy web site, astropy docs, and astropy tutorials link together.
+- Have a general sense of what actual web page javascript code and sphinx extension changes might be necessary.
+
+##### GSOC 2018 Midterm
+
+- Have a draft design for the new web pages ready to get comment from the community.
+- Have Pull Requests open for any changes necessary to the astropy documentation or tutorials page templates.
+
+##### GSOC 2018 Final
+
+- Have the completed landing page launched.
+- (Stretch goal) Include in the landing page a search that works across all of the learn resources.
diff --git a/_projects/2018/astropy/astroquery.md b/src/content/pages/gsoc/2018/astropy/astroquery.md
similarity index 80%
rename from _projects/2018/astropy/astroquery.md
rename to src/content/pages/gsoc/2018/astropy/astroquery.md
index 1ba6d2ac..be5ef9d6 100644
--- a/_projects/2018/astropy/astroquery.md
+++ b/src/content/pages/gsoc/2018/astropy/astroquery.md
@@ -2,26 +2,26 @@
name: Add additional archives to astroquery
desc: Implement module(s) to access currently unsupported astronomical archives using astroquery.
requirements:
- - Python
- - Basic understanding of web queries and APIs
+ - Python
+ - Basic understanding of web queries and APIs
difficulty: low
issues:
- - https://github.com/astropy/astroquery/issues/226
+ - https://github.com/astropy/astroquery/issues/226
mentors:
- - keflavich
- - bsipocz
- - pllim
- - migueldvb
- - stargaser
+ - keflavich
+ - bsipocz
+ - pllim
+ - migueldvb
+ - stargaser
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astroquery
- - astropy
+ - python
+ - astroquery
+ - astropy
collaborating_projects:
- - astropy
- - astroquery
+ - astropy
+ - astroquery
---
#### Description
@@ -34,8 +34,7 @@ A full list of new services that have been suggested by our users
[can be found in these issues](https://github.com/astropy/astroquery/issues?q=is%3Aissue+is%3Aopen+label%3A%22New+Service%22),
and a summary [in this issue](https://github.com/astropy/astroquery/issues/226).
-
-A *possible* set of milestones for any particular one of these modules might be:
+A _possible_ set of milestones for any particular one of these modules might be:
1. Research the web API for the archive sufficiently to determine what exactly astroquery should expose.
2. Determine the best interface to access the simplest subset of that archive that would be useful.
diff --git a/_projects/2018/astropy/astrowidgets.md b/src/content/pages/gsoc/2018/astropy/astrowidgets.md
similarity index 73%
rename from _projects/2018/astropy/astrowidgets.md
rename to src/content/pages/gsoc/2018/astropy/astrowidgets.md
index 97b6d956..52662cd0 100644
--- a/_projects/2018/astropy/astrowidgets.md
+++ b/src/content/pages/gsoc/2018/astropy/astrowidgets.md
@@ -2,21 +2,21 @@
name: Jupyter widgets for Astropy
desc: Create "astrowidgets" - Jupyter widgets for Astropy.
requirements:
- - Python
- - Very basic knowledge of CSS.
- - Basic understanding of javascript.
+ - Python
+ - Very basic knowledge of CSS.
+ - Basic understanding of javascript.
difficulty: intermediate
mentors:
- - mwcraig
- - astrofrog
+ - mwcraig
+ - astrofrog
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - javascript
+ - python
+ - javascript
collaborating_projects:
- - astropy
- - astrowidgets
+ - astropy
+ - astrowidgets
---
#### Description
@@ -27,15 +27,15 @@ The final deliverable for the project will be a new package ready for applicatio
Some of the deliverables for this project would be widget interfaces for:
-+ A FITS image viewer utilizing the affiliated package [ginga](https://github.com/ejeschke/ginga) to handle the image display. This widget should allow for overlays of sources from catalogs (using [astroquery](https://github.com/astropy/astroquery)), selection of sources in the image using a mouse, and user-configurable key bindings. An initial implementation, using [ipyevents](https://github.com/mwcraig/ipyevents), has been done in [ginga](https://github.com/ejeschke/ginga).
-+ Point source detection and photometry using either [photutils](https://github.com/astropy/photutils) or [sep](https://github.com/kbarbary/sep).
-+ Observation planning using [astroplan](https://github.com/astropy/astroplan).
+- A FITS image viewer utilizing the affiliated package [ginga](https://github.com/ejeschke/ginga) to handle the image display. This widget should allow for overlays of sources from catalogs (using [astroquery](https://github.com/astropy/astroquery)), selection of sources in the image using a mouse, and user-configurable key bindings. An initial implementation, using [ipyevents](https://github.com/mwcraig/ipyevents), has been done in [ginga](https://github.com/ejeschke/ginga).
+- Point source detection and photometry using either [photutils](https://github.com/astropy/photutils) or [sep](https://github.com/kbarbary/sep).
+- Observation planning using [astroplan](https://github.com/astropy/astroplan).
In addition, these Jupyter notebooks will be developed:
-+ Sample notebooks demonstrating how to compose the widgets into applications.
-+ An image reduction notebook, similar to [reducer](https://github.com/mwcraig/reducer).
-+ A photometry notebook for source detection and photometry.
-+ A notebook for performing differential photometry on a time series of measurements.
+- Sample notebooks demonstrating how to compose the widgets into applications.
+- An image reduction notebook, similar to [reducer](https://github.com/mwcraig/reducer).
+- A photometry notebook for source detection and photometry.
+- A notebook for performing differential photometry on a time series of measurements.
Preliminary development of this project is already underway, so some of the specific deliverables might have changed by the beginning of the summer of code.
diff --git a/_projects/2018/astropy/casa-regions.md b/src/content/pages/gsoc/2018/astropy/casa-regions.md
similarity index 88%
rename from _projects/2018/astropy/casa-regions.md
rename to src/content/pages/gsoc/2018/astropy/casa-regions.md
index c75c1126..ef718e6b 100644
--- a/_projects/2018/astropy/casa-regions.md
+++ b/src/content/pages/gsoc/2018/astropy/casa-regions.md
@@ -2,22 +2,22 @@
name: CASA CRTF region file handling
desc: Implement a parser for CASA CRTF region files
requirements:
- - Python
+ - Python
difficulty: low
issues:
- - https://github.com/astropy/regions/issues/119
+ - https://github.com/astropy/regions/issues/119
mentors:
- - keflavich
- - migueldvb
+ - keflavich
+ - migueldvb
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - regions
- - astropy
+ - python
+ - regions
+ - astropy
collaborating_projects:
- - astropy
- - regions
+ - astropy
+ - regions
---
#### Description
@@ -28,7 +28,6 @@ CASA is the main package for radio interferometry data reduction and processing.
CASA regions are mostly compatible with and translatable to ds9 regions and other formats, but the only parser that presently exists lives within CASA.
Details about the CASA region parser are linked from the [associated issue](https://github.com/astropy/regions/issues/119).
-
Some milestones for this project will be:
1. Implementation of basic region reading without metadata
diff --git a/_projects/2018/astropy/ccdproc-optimize.md b/src/content/pages/gsoc/2018/astropy/ccdproc-optimize.md
similarity index 59%
rename from _projects/2018/astropy/ccdproc-optimize.md
rename to src/content/pages/gsoc/2018/astropy/ccdproc-optimize.md
index ee717dc7..1fb0b750 100644
--- a/_projects/2018/astropy/ccdproc-optimize.md
+++ b/src/content/pages/gsoc/2018/astropy/ccdproc-optimize.md
@@ -3,25 +3,26 @@ name: Optimizing performance of ccdproc
desc: Optimize speed and memory use of the package ccdproc.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiar with the basics of astronomical image reduction
+ # Student requirements:
+ - Familiar with the basics of astronomical image reduction
difficulty: medium
mentors:
-# First person in contact; mentors may change before project starts.
- - mwcraig
- - crawfordsm
- - bsipocz
+ # First person in contact; mentors may change before project starts.
+ - mwcraig
+ - crawfordsm
+ - bsipocz
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - Cython (maybe)
+ # Different technologies needed
+ - python
+ - Cython (maybe)
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
- - ccdproc
+ # suborganization(s) to which this project belongs.
+ - astropy
+ - ccdproc
---
+
Optimizing performance of ccdproc
#### Description
@@ -32,14 +33,14 @@ The [ccdproc](https://ccdproc.readthedocs.io) package contains functions for red
##### GSOC 2018 CODING STARTS
-* Perform developer install of `ccdproc`
-* Install Python profiling tools
-* Install and run `asv`.
+- Perform developer install of `ccdproc`
+- Install Python profiling tools
+- Install and run `asv`.
##### GSOC 2018 Milestones
-* Profile code to identify targets for performance (speed) optimization.
-* Set up regular performance testing of `ccdproc` on CI.
-* Propose fixes for each of the problems identified in previous milestone.
-* Identify memory bottlenecks.
-* Fix memory bottlenecks.
+- Profile code to identify targets for performance (speed) optimization.
+- Set up regular performance testing of `ccdproc` on CI.
+- Propose fixes for each of the problems identified in previous milestone.
+- Identify memory bottlenecks.
+- Fix memory bottlenecks.
diff --git a/_projects/2018/astropy/mcmc.md b/src/content/pages/gsoc/2018/astropy/mcmc.md
similarity index 65%
rename from _projects/2018/astropy/mcmc.md
rename to src/content/pages/gsoc/2018/astropy/mcmc.md
index 4fdb84d7..55b2caf2 100644
--- a/_projects/2018/astropy/mcmc.md
+++ b/src/content/pages/gsoc/2018/astropy/mcmc.md
@@ -2,22 +2,22 @@
name: A compatibility protocol for astropy models and emcee
desc: Implement a protocol to enable astropy models to be used in emcee
requirements:
- - Python
- - Solid understanding of probability (likelihood functions, Bayes' theorem, etc)
- - Working knowledge on Markov Chain Monte Carlo
+ - Python
+ - Solid understanding of probability (likelihood functions, Bayes' theorem, etc)
+ - Working knowledge on Markov Chain Monte Carlo
difficulty: medium
mentors:
- - mirca
- - karllark
- - eteq
+ - mirca
+ - karllark
+ - eteq
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy
- - emcee
+ - python
+ - astropy
+ - emcee
collaborating_projects:
- - astropy
+ - astropy
---
#### Description
@@ -30,29 +30,33 @@ on the other hand, offers a myriad of easy-to-use models.
The goal of this project is to design and implement a protocol
that enables astropy models to be used in emcee.
-A *potential* list of milestones might be:
+A _potential_ list of milestones might be:
1. Determine the best way to integrate an astropy model with
-a posterior distribution.
+ a posterior distribution.
2. Design and implement classes to represent Likelihood Functions and
-Prior distributions.
+ Prior distributions.
3. Determine the best interface to be exposed to the user. For example,
-```
+
+```python
g = Gaussian1D()
posterior = g.sample(likelihood='gaussian', prior='uniform', nwalkers=1000, kwargs)
```
+
or
-```
+
+```python
sampler = Sampler()
posterior = sampler(model=Gaussian1D(), likelihood='gaussian', prior='uniform', nwalkers=1000, kwargs)
```
-4. Write unit tests and documentation (using the astropy affiliated package template)
-to ensure the implementations are operational.
-*Notes: a potential good start for any candidates would be to take an
-extensive look at*
+1. Write unit tests and documentation (using the astropy affiliated package template)
+ to ensure the implementations are operational.
+
+_Notes: a potential good start for any candidates would be to take an
+extensive look at_
[this](https://github.com/astropy/astropy-model-ideas/blob/master/MCMCWithAstropyModels.ipynb)
-*IPython notebook.*
+_IPython notebook._
-*Might be worth to look at* [oktopus](https://github.com/KeplerGO/oktopus)
-*for inspiration on step 2.*
+_Might be worth to look at_ [oktopus](https://github.com/KeplerGO/oktopus)
+_for inspiration on step 2._
diff --git a/src/content/pages/gsoc/2018/astropy/sphinx-example-index.md b/src/content/pages/gsoc/2018/astropy/sphinx-example-index.md
new file mode 100644
index 00000000..faad1631
--- /dev/null
+++ b/src/content/pages/gsoc/2018/astropy/sphinx-example-index.md
@@ -0,0 +1,55 @@
+---
+name: Indexing examples in Astropy Sphinx documentation
+desc: Write a Sphinx plugin to identify examples in the Astropy documentation, tag/index them, and build an example gallery from them
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Knowledge of [sphinx](http://www.sphinx-doc.org/en/stable/)
+ - Interest in user training
+difficulty: moderate
+issues:
+ # Related issues (if any) to this project.
+ - https://github.com/astropy/astropy/issues/6589
+ - https://github.com/astropy/astropy-helpers/issues/371
+mentors:
+ # First person in contact; mentors may change before project starts.
+ - eteq
+ - adrn
+ - bsipocz
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - python
+ - sphinx
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - astropy
+---
+
+Write a Sphinx plugin to identify examples in the Astropy documentation, tag/index them, and build an example gallery from them
+
+#### Description
+
+The [current astropy example gallery](http://docs.astropy.org/en/stable/generated/examples/) is problematic because it duplicates content from the astropy documentation and it is not clear which examples are "worthy" of the example gallery. It also overlaps with the [astropy tutorials](http://tutorials.astropy.org). Hence, this project is focused on developing the infrastructure to auto-generate the example gallery from examples _in_ the documentation. This will require building a Sphinx plugin to find tagged examples and generating links. It will also require coordinating moving of existing gallery examples to the documentation and tagging them appropriately.
+
+#### Possible Milestones
+
+##### At start of coding for GSOC 2018
+
+- Identify what labeling technique is best for tagging the examples.
+- Solicit authors of gallery examples to determine where they should be moved. Some may belong in the documentations, whil others might be better places as Astropy Tutorials.
+- Determine where the plugin will go (either a standalone small package, in the astropy-helpers, or in astropy itself), in consultation with the Astropy documentation maintainers.
+
+##### GSOC 2018 Midterm
+
+- Have examples identified and ready to be moved out of the gallery and into their relevant locations in the astropy docs or tutorials.
+- Have a first-draft working plugin ready for review by Astropy documentation maintainers.
+- Determine how difficult it will be to have an example _gallery_ (as opposed to simply an index/list of the examples).
+
+##### GSOC 2018 Final
+
+- Release the plugin, with minimum functionality of generating the example list (or have it merged if it ends up as part of another project).
+- (Stretch Goal) have the plugin generate an example gallery instead of a list.
+- Complete a Pull Request to activate the (finished) plugin in the Astropy repository.
+- Have a Pull Request to tag all the relevant examples which sucessfully generates the example _list_.
diff --git a/src/content/pages/gsoc/2018/astropy/table-optimize.md b/src/content/pages/gsoc/2018/astropy/table-optimize.md
new file mode 100644
index 00000000..fc6e8b33
--- /dev/null
+++ b/src/content/pages/gsoc/2018/astropy/table-optimize.md
@@ -0,0 +1,61 @@
+---
+name: Improving astropy Table performance
+desc: Improve the speed of common Table operations like slicing
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Familiar with Cython and Python code profiling
+ - Familiar with Python speed optimization strategies
+difficulty: medium
+issues:
+# Related issues (if any) to this project.
+mentors:
+ # First person in contact; mentors may change before project starts.
+ - taldcroft
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - python
+ - Cython
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - astropy
+---
+
+Improving astropy Table performance
+
+#### Description
+
+The astropy table sub-package defines a core Table class that is
+used to store and manipulate tabular data within astropy. This class
+was written with an emphasis on functionality, convenience for astronomers,
+and code clarity. With the astropy table package now fairly mature
+and with a strong set of regression tests in place, it is time to focus
+on performance for basic operations like table creation and slicing.
+For a simple operation like slicing, astropy Table is currently about
+a factor of 10 slower than Pandas. This project will focus on identifying
+performance bottlenecks, writing performance tests for astropy-benchmarks,
+and then developing code to improve the performance. It is possible that
+some fixes
+
+#### Milestones (if any)
+
+##### GSOC 2018 CODING STARTS
+
+- Perform developer install of `astropy`.
+- Install Python profiling tools.
+- Study astropy and the table package capabilities.
+
+##### GSOC 2018 MIDTERM
+
+- Install and run `asv`.
+- Examine existing `asv` benchmarks and identify areas for improved benchmarking.
+- Profile key parts of table code and identify performance bottlenecks.
+- Identify strategies for improved speed performance.
+- Implement initial performance improvements.
+
+##### GSOC 2018 FINAL
+
+- Continue and finalize implementation of performance improvements.
+- Contine and finalize additional `asv` benchmark tests.
diff --git a/_projects/2018/astropy/tutorials.md b/src/content/pages/gsoc/2018/astropy/tutorials.md
similarity index 53%
rename from _projects/2018/astropy/tutorials.md
rename to src/content/pages/gsoc/2018/astropy/tutorials.md
index 7a65ba20..62e5d61c 100644
--- a/_projects/2018/astropy/tutorials.md
+++ b/src/content/pages/gsoc/2018/astropy/tutorials.md
@@ -3,39 +3,40 @@ name: Develop Astropy Tutorials and/or Guides
desc: Generate content used to demonstrate advanced functionality of Astropy
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of Astropy and affiliated packages functionality.
- - Interest in developing educational materials.
- - Knowledge of Astronomy sufficient for developing selected tutorials on specific science cases.
+ # Student requirements:
+ - Knowledge of Astropy and affiliated packages functionality.
+ - Interest in developing educational materials.
+ - Knowledge of Astronomy sufficient for developing selected tutorials on specific science cases.
difficulty: High
issues:
-# Related issues (if any) to this project.
- - https://github.com/astropy/astropy-tutorials/issues?q=is%3Aissue+is%3Aopen+label%3Acontent-new
+ # Related issues (if any) to this project.
+ - https://github.com/astropy/astropy-tutorials/issues?q=is%3Aissue+is%3Aopen+label%3Acontent-new
mentors:
-# First person in contact; mentors may change before project starts.
- - kelle
- - eblur
- - adrn
- - eteq
+ # First person in contact; mentors may change before project starts.
+ - kelle
+ - eblur
+ - adrn
+ - eteq
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - Jupyter notebooks
+ # Different technologies needed
+ - python
+ - Jupyter notebooks
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
+ # suborganization(s) to which this project belongs.
+ - astropy
---
+
Generate content used to demonstrate advanced functionality of Astropy
#### Description
-Create tutorials and/or guides which demonstrate more complex uses of astropy and affiliate package functionality. E.g., use of classes and object-oriented programming for astronomical data analysis with Astropy, usage of astroquery and ccdproc together to download and reduce an image, etc.
+Create tutorials and/or guides which demonstrate more complex uses of astropy and affiliate package functionality. E.g., use of classes and object-oriented programming for astronomical data analysis with Astropy, usage of astroquery and ccdproc together to download and reduce an image, etc.
Must would work closely with Astropy Tutorial Leads to identify tutorial topics, as well as a tutorial flow/narrative. The student will primarily be mostly responsible for writing the code, but not the pedagogy.
#### Possible Milestones
-* Have a list of possible tutorials to develop
-* Have an outline of selected tutorial(s) for review by the Learn team and/or an astropy package maintainer.
-* Complete the tutorial by getting it merged in the [astropy-tutorials repository](https://github.com/astropy/astropy-tutorials).
+- Have a list of possible tutorials to develop
+- Have an outline of selected tutorial(s) for review by the Learn team and/or an astropy package maintainer.
+- Complete the tutorial by getting it merged in the [astropy-tutorials repository](https://github.com/astropy/astropy-tutorials).
diff --git a/_projects/2018/glue/widgets.md b/src/content/pages/gsoc/2018/glue/widgets.md
similarity index 54%
rename from _projects/2018/glue/widgets.md
rename to src/content/pages/gsoc/2018/glue/widgets.md
index 51ed412c..779f9da5 100644
--- a/_projects/2018/glue/widgets.md
+++ b/src/content/pages/gsoc/2018/glue/widgets.md
@@ -3,34 +3,35 @@ name: New glue widgets
desc: Expand the functionality of glue by developing a range of new widgets, including to better read in and edit data.
# add a description of your project
requirements:
- - Proficiency in Python
- - Familiarity with GUI programming, ideally Qt
+ - Proficiency in Python
+ - Familiarity with GUI programming, ideally Qt
difficulty: medium
issues:
- - https://github.com/glue-viz/glue/issues/836
- - https://github.com/glue-viz/glue/issues/981
- - https://github.com/glue-viz/glue/issues/1073
+ - https://github.com/glue-viz/glue/issues/836
+ - https://github.com/glue-viz/glue/issues/981
+ - https://github.com/glue-viz/glue/issues/1073
mentors:
- - astrofrog
+ - astrofrog
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
+ - python
collaborating_projects:
- - glue
+ - glue
---
+
#### Description
This project is to develop new widgets/dialogs inside glue. Examples include:
-* A dialog that would be useful beyond this project is a dialog for importing
+- A dialog that would be useful beyond this project is a dialog for importing
ASCII tables into glue, similar to the CSV import functionality in e.g.
OpenOffice/LibreOffice or Excel.
-* A dialog that allows the user to edit components of a datasets, including
+- A dialog that allows the user to edit components of a datasets, including
renaming them, sorting them, and changing datatypes.
-* A dialog that can be used to re-order categorical components
+- A dialog that can be used to re-order categorical components
-* A dialog to visually create simple selections (for example that a specific
+- A dialog to visually create simple selections (for example that a specific
component should be in a certain range)
diff --git a/_projects/2018/heliopy/heliopy-units.md b/src/content/pages/gsoc/2018/heliopy/heliopy-units.md
similarity index 69%
rename from _projects/2018/heliopy/heliopy-units.md
rename to src/content/pages/gsoc/2018/heliopy/heliopy-units.md
index 1a381771..2eef1c11 100644
--- a/_projects/2018/heliopy/heliopy-units.md
+++ b/src/content/pages/gsoc/2018/heliopy/heliopy-units.md
@@ -2,23 +2,24 @@
name: Using physical units with HelioPy
desc: Convert HelioPy's data import methods to return data that has units attached.
requirements:
- - Some experience using python
- - Some knowledge about different physical units and their use in science
- (e.g. time, distance, velocity)
+ - Some experience using python
+ - Some knowledge about different physical units and their use in science
+ (e.g. time, distance, velocity)
difficulty: low
issues:
- - https://github.com/heliopython/heliopy/issues/291
+ - https://github.com/heliopython/heliopy/issues/291
mentors:
- - dstansby
- - dpshelio
+ - dstansby
+ - dpshelio
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - heliopy
+ - python
+ - heliopy
collaborating_projects:
- - heliopy
+ - heliopy
---
+
#### Description
HelioPy is a relatively new python package, whose aim is to automate the
@@ -39,22 +40,22 @@ Find more information about [HelioPy](http://docs.heliopy.org/en/stable/) and
##### GSOC 2018 CODING STARTS
-* Have installed HelioPy and used it to download and plot some data to get a
+- Have installed HelioPy and used it to download and plot some data to get a
feel of how it currently works.
-* Have read the documentation on astropy units and know how they work,
+- Have read the documentation on astropy units and know how they work,
and what their advantages are over using data without units.
##### GSOC 2018 1ST EVALUATION
-* Have investigated a way of automatically extracting the correct units from
+- Have investigated a way of automatically extracting the correct units from
raw data files.
##### GSOC 2018 2ND EVALUATION
-* Have written code to make at least one data import function return data
+- Have written code to make at least one data import function return data
with units attached.
##### GSOC 2018 FINAL EVALUATION
-* Have expanded the new code to all of the data import functions, to make
+- Have expanded the new code to all of the data import functions, to make
HelioPy fully compatible with the astropy units system.
diff --git a/src/content/pages/gsoc/2018/index.md b/src/content/pages/gsoc/2018/index.md
new file mode 100644
index 00000000..56e38c80
--- /dev/null
+++ b/src/content/pages/gsoc/2018/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2018"
+show_main: false
+season: 2018
+---
diff --git a/_projects/2018/juliaastro/astronomicaltime.md b/src/content/pages/gsoc/2018/juliaastro/astronomicaltime.md
similarity index 83%
rename from _projects/2018/juliaastro/astronomicaltime.md
rename to src/content/pages/gsoc/2018/juliaastro/astronomicaltime.md
index 6b895ae1..65979dff 100644
--- a/_projects/2018/juliaastro/astronomicaltime.md
+++ b/src/content/pages/gsoc/2018/juliaastro/astronomicaltime.md
@@ -2,26 +2,26 @@
name: Porting ERFA's Time Scale Conversion Functions to Julia
desc: Expand the ecosystem of astronomical routines in the Julia language.
requirements:
- - Julia
- - C
- - Knowledge of astronomical time systems is beneficial, but not required
+ - Julia
+ - C
+ - Knowledge of astronomical time systems is beneficial, but not required
difficulty: low to intermediate
mentors:
- - helgee
- - giordano
+ - helgee
+ - giordano
initiatives:
- - GSOC
+ - GSOC
tags:
- - julia
+ - julia
collaborating_projects:
- - JuliaAstro
+ - JuliaAstro
---
#### Description
[Julia](http://julialang.org/) is a programming language designed for technical
computing that combines ease-of-use of dynamical languages and high-performance
-of statically-compiled languages like C. Its most notable feature
+of statically-compiled languages like C. Its most notable feature
is [multiple dispatch](http://en.wikipedia.org/wiki/Multiple_dispatch), which
greatly simplifies the definition of complex functions whose behavior depends on
the type of the arguments.
@@ -41,11 +41,11 @@ packages's interoperability with the rest of the Julia ecosystem and validate
the new implementation against ERFA.
If you don't know where to start from, have a look at:
-* the
+- the
[AstroTime.jl manual](https://juliaastro.github.io/AstroTime.jl/latest/index.html),
-* the [TODO list](https://github.com/JuliaAstro/AstroTime.jl/issues/1)
- of the project, with the list of *all* functions not yet ported,
-* the [SOFA Time Scale and Calendar Tools](http://www.iausofa.org/2017_0420_C/sofa/sofa_ts_c.pdf)
+- the [TODO list](https://github.com/JuliaAstro/AstroTime.jl/issues/1)
+ of the project, with the list of _all_ functions not yet ported,
+- the [SOFA Time Scale and Calendar Tools](http://www.iausofa.org/2017_0420_C/sofa/sofa_ts_c.pdf)
manual.
While experience with programming in Julia would be helpful, it is not
diff --git a/_projects/2018/plasmapy/plasma-object.md b/src/content/pages/gsoc/2018/plasmapy/plasma-object.md
similarity index 85%
rename from _projects/2018/plasmapy/plasma-object.md
rename to src/content/pages/gsoc/2018/plasmapy/plasma-object.md
index a0f621fe..9a4a4779 100644
--- a/_projects/2018/plasmapy/plasma-object.md
+++ b/src/content/pages/gsoc/2018/plasmapy/plasma-object.md
@@ -2,20 +2,20 @@
name: Plasma class
desc: Devlop a new Plasma class for loading and storing multiple types of plasma physics data.
requirements:
- - Good knowledge of Python, including object-oriented programming
- - Some background of physics preferred, especially electromagnetism, flulid mechanics and/or plasma physics
- - Some experience with scientific data formats, especially plasma physics data formats, is preferred
+ - Good knowledge of Python, including object-oriented programming
+ - Some background of physics preferred, especially electromagnetism, flulid mechanics and/or plasma physics
+ - Some experience with scientific data formats, especially plasma physics data formats, is preferred
difficulty: High
mentors:
- - SolarDrew
- - namurphy
- - StanczakDominik
+ - SolarDrew
+ - namurphy
+ - StanczakDominik
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
+ - python
collaborating_projects:
- - PlasmaPy
+ - PlasmaPy
---
#### Description
diff --git a/_projects/2018/poliastro/benchmark-propagators.md b/src/content/pages/gsoc/2018/poliastro/benchmark-propagators.md
similarity index 60%
rename from _projects/2018/poliastro/benchmark-propagators.md
rename to src/content/pages/gsoc/2018/poliastro/benchmark-propagators.md
index 0362933a..97965539 100644
--- a/_projects/2018/poliastro/benchmark-propagators.md
+++ b/src/content/pages/gsoc/2018/poliastro/benchmark-propagators.md
@@ -2,25 +2,25 @@
name: Benchmark orbit propagators
desc: Implement several orbit propagation algorithms to improve current error rates and performance
requirements:
- - Familiar with numerical analysis
+ - Familiar with numerical analysis
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/253
- - https://github.com/poliastro/poliastro/issues/265
- - https://github.com/poliastro/poliastro/issues/285
- - https://github.com/poliastro/poliastro/issues/286
- - https://github.com/poliastro/poliastro/issues/294
+ - https://github.com/poliastro/poliastro/issues/253
+ - https://github.com/poliastro/poliastro/issues/265
+ - https://github.com/poliastro/poliastro/issues/285
+ - https://github.com/poliastro/poliastro/issues/286
+ - https://github.com/poliastro/poliastro/issues/294
mentors:
- - astrojuanlu
- - aunsiro
+ - astrojuanlu
+ - aunsiro
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - scipy
- - numba
+ - python
+ - scipy
+ - numba
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -46,30 +46,30 @@ choose the best that suits their needs.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and reproduced the existing propagation
+- Have set up a development environment and reproduced the existing propagation
issues.
##### 1st evaluation
-* Fix [convergence problems (#265)](https://github.com/poliastro/poliastro/issues/265),
+- Fix [convergence problems (#265)](https://github.com/poliastro/poliastro/issues/265),
either with a new propagator or fixing the current one
-* Have all code, tests and documentation in GitHub
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Add time and accuracy benchmarks for the propagators that can be easily
+- Add time and accuracy benchmarks for the propagators that can be easily
reproducible
-* Have all code, tests and documentation in GitHub
+- Have all code, tests and documentation in GitHub
##### Final
-* Have at least two new propagators
-* Have all code, tests and documentation in GitHub
+- Have at least two new propagators
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding propagation, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding propagation, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
diff --git a/_projects/2019/poliastro/export-czml.md b/src/content/pages/gsoc/2018/poliastro/export-czml.md
similarity index 56%
rename from _projects/2019/poliastro/export-czml.md
rename to src/content/pages/gsoc/2018/poliastro/export-czml.md
index 6c2a922f..b3368b5a 100644
--- a/_projects/2019/poliastro/export-czml.md
+++ b/src/content/pages/gsoc/2018/poliastro/export-czml.md
@@ -2,22 +2,22 @@
name: Export to CZML
desc: Implement export of Orbit objects to CZML to visualize in Cesium.js
requirements:
- - Familiar with the JSON format
- - Basic experience with JavaScript or TypeScript
+ - Familiar with the JSON format
+ - Basic experience with JavaScript or TypeScript
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/117
- - https://github.com/poliastro/poliastro/issues/287
+ - https://github.com/poliastro/poliastro/issues/117
+ - https://github.com/poliastro/poliastro/issues/287
mentors:
- - astrojuanlu
- - AunSiro
+ - astrojuanlu
+ - newlawrence
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - javascript
+ - python
+ - javascript
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -38,33 +38,33 @@ understand our output.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with the Cesium
+- Have set up a development environment and get familiar with the Cesium
Sandcastle (see "Additional resources")
##### 1st evaluation
-* Have basic export for an orbit around the Earth
-* Have all code, tests and documentation in GitHub
+- Have basic export for an orbit around the Earth
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Have complex export that includes attractors and target bodies, if any
-* Have all code, tests and documentation in GitHub
+- Have complex export that includes attractors and target bodies, if any
+- Have all code, tests and documentation in GitHub
##### Final
-* Have created a Cesium application that understand the necessary metadata
-* Have all code, tests and documentation in GitHub
+- Have created a Cesium application that understand the necessary metadata
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
#### Additional resources
-* [Cesium Sandcastle](https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=CZML.html&label=DataSources)
-* [Sample data](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Apps/SampleData/simple.czml)
+- [Cesium Sandcastle](https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=CZML.html&label=DataSources)
+- [Sample data](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Apps/SampleData/simple.czml)
diff --git a/_projects/2018/poliastro/reference-frames.md b/src/content/pages/gsoc/2018/poliastro/reference-frames.md
similarity index 64%
rename from _projects/2018/poliastro/reference-frames.md
rename to src/content/pages/gsoc/2018/poliastro/reference-frames.md
index b33c6d22..bd7464eb 100644
--- a/_projects/2018/poliastro/reference-frames.md
+++ b/src/content/pages/gsoc/2018/poliastro/reference-frames.md
@@ -2,23 +2,23 @@
name: Add reference frames to Orbit objects
desc: Make Orbit objects completely defined by adding a reference frame as a property
requirements:
- - Knowledge on kinematics
- - A taste for API design
+ - Knowledge on kinematics
+ - A taste for API design
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/109
- - https://github.com/poliastro/poliastro/issues/257
- - https://github.com/poliastro/poliastro/issues/288
+ - https://github.com/poliastro/poliastro/issues/109
+ - https://github.com/poliastro/poliastro/issues/257
+ - https://github.com/poliastro/poliastro/issues/288
mentors:
- - astrojuanlu
- - newlawrence
+ - astrojuanlu
+ - newlawrence
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy
+ - python
+ - astropy
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -47,33 +47,33 @@ for instance using the SPICE toolkit by NASA. Check out
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and run a basic example using SPICE
+- Have set up a development environment and run a basic example using SPICE
kernels.
##### 1st evaluation
-* Have all the current reference frames conversion validated against SpiceyPy
-* Have all code, tests and documentation in GitHub
+- Have all the current reference frames conversion validated against SpiceyPy
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Have a working prototype on how to add reference frames to `Orbit` objects
-* Have all code, tests and documentation in GitHub
+- Have a working prototype on how to add reference frames to `Orbit` objects
+- Have all code, tests and documentation in GitHub
##### Final
-* Have finished the refactoring of `Orbit` objects to allow for reference frames,
+- Have finished the refactoring of `Orbit` objects to allow for reference frames,
using a default one if appropriate
-* Have all code, tests and documentation in GitHub
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, reference frames and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, reference frames and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
#### Additional resources
-* [USNO Circular 179](http://aa.usno.navy.mil/publications/docs/Circular_179.pdf)
+- [USNO Circular 179](http://aa.usno.navy.mil/publications/docs/Circular_179.pdf)
diff --git a/_projects/2018/poliastro/web-app-neos.md b/src/content/pages/gsoc/2018/poliastro/web-app-neos.md
similarity index 66%
rename from _projects/2018/poliastro/web-app-neos.md
rename to src/content/pages/gsoc/2018/poliastro/web-app-neos.md
index 84b1133c..3182902e 100644
--- a/_projects/2018/poliastro/web-app-neos.md
+++ b/src/content/pages/gsoc/2018/poliastro/web-app-neos.md
@@ -2,19 +2,19 @@
name: Web app to visualize asteroid trajectories
desc: Create a web application so users can easily visualize Near Earth Object trajectories
requirements:
- - Experience in web or interface design
+ - Experience in web or interface design
difficulty: medium
mentors:
- - astrojuanlu
- - anhiga
+ - astrojuanlu
+ - anhiga
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - plotly
- - dash
+ - python
+ - plotly
+ - dash
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -47,30 +47,30 @@ which recently became a NumFOCUS affiliated project.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and tried to build some basic Dash
+- Have set up a development environment and tried to build some basic Dash
application
##### 1st evaluation
-* Have a basic web application to display the 3D trajectory of one NEO of choice
-* Have all code, tests and documentation in GitHub
+- Have a basic web application to display the 3D trajectory of one NEO of choice
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Allow the user to change the epoch and/or select a time period
-* Add examples of popular NEOs and showcase some approaches from the news
-* Have all code, tests and documentation in GitHub
+- Allow the user to change the epoch and/or select a time period
+- Add examples of popular NEOs and showcase some approaches from the news
+- Have all code, tests and documentation in GitHub
##### Final
-* Allow the user to display more than one NEO in the application
-* Allow the user to export the result as a Python script
-* Have all code, tests and documentation in GitHub
+- Allow the user to display more than one NEO in the application
+- Allow the user to export the result as a Python script
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
diff --git a/_projects/2018/sunpy/mag_field.md b/src/content/pages/gsoc/2018/sunpy/mag_field.md
similarity index 65%
rename from _projects/2018/sunpy/mag_field.md
rename to src/content/pages/gsoc/2018/sunpy/mag_field.md
index 15599207..7f7f48af 100644
--- a/_projects/2018/sunpy/mag_field.md
+++ b/src/content/pages/gsoc/2018/sunpy/mag_field.md
@@ -3,32 +3,33 @@ name: 3D Map Class for Field Extrapolations in Spherical Coordinates
desc: Generalize magnetic field extrapolation to spherical coordinates.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of vector calculus and differential equations
- - Familiar with numerical methods
- - Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
+ # Student requirements:
+ - Knowledge of vector calculus and differential equations
+ - Familiar with numerical methods
+ - Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
difficulty: intermediate
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/solarbextrapolation/issues/12
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/solarbextrapolation/issues/12
mentors:
-# First person in contact; mentors may change before project starts.
- - Alex-Ian-Hamilton
- - wtbarnes
+ # First person in contact; mentors may change before project starts.
+ - Alex-Ian-Hamilton
+ - wtbarnes
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - numba
- - numpy
+ - python
+ - numba
+ - numpy
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - sunpy
+ # suborganization(s) to which this project belongs.
+ - sunpy
---
+
#### Description
Determining the 3D geometry of the tangled and dynamic coronal magnetic field is an open research problem in solar physics.
-A common technique for deriving the 3D vector field from a photospheric magnetogram is to assume a *potential* field such that it can be derived by solving Laplace's equation.
+A common technique for deriving the 3D vector field from a photospheric magnetogram is to assume a _potential_ field such that it can be derived by solving Laplace's equation.
The SunPy-affiliated [`solarbextrapolation`](https://github.com/sunpy/solarbextrapolation) package solves Laplace's equation using the method of [Sakurai (1982)](http://adsabs.harvard.edu/abs/1982SoPh...76..301S).
However, when constructing the 3D field from the magnetogram, the "small-angle" approximation is used such that the curvature of the Sun is ignored, a valid approximation on the scale of an active region.
@@ -40,19 +41,22 @@ Currently, the `solarbextrapolation` package uses a Map3D class that is limited
It is expected that this new object will serve as a prototype for a first-class data type in the core SunPy package.
#### Primary Goals
-* Develop a coordinate-aware 3D Map class
-* Use 3D Map class for global field extrapolations
+
+- Develop a coordinate-aware 3D Map class
+- Use 3D Map class for global field extrapolations
#### Possible Secondary Goals
-* Performance improvements
-* Improvements to the documentation and examples
-* Better visualization methods
-* Addition of more advanced extrapolators, e.g. non-linear force-free field
+
+- Performance improvements
+- Improvements to the documentation and examples
+- Better visualization methods
+- Addition of more advanced extrapolators, e.g. non-linear force-free field
#### Additional Resources
-* [`solarbextrapolation` package ](https://github.com/sunpy/solarbextrapolation)
-* [Maps in SunPy](http://docs.sunpy.org/en/stable/code_ref/map.html)
-* [Coordinates in SunPy](http://docs.sunpy.org/en/stable/code_ref/coordinates.html)
-* [Coordinates for Solar Image Data -- Thompson (2006)](http://adsabs.harvard.edu/abs/2006A%26A...449..791T)
-* [IDL package for global potential field extrapolations](http://www.lmsal.com/~derosa/pfsspack/)
-* [Review of Magnetic Field Extrapolation Techniques -- T. Neukirch](http://adsabs.harvard.edu/abs/2005ESASP.596E..12N)
+
+- [`solarbextrapolation` package](https://github.com/sunpy/solarbextrapolation)
+- [Maps in SunPy](http://docs.sunpy.org/en/stable/code_ref/map.html)
+- [Coordinates in SunPy](http://docs.sunpy.org/en/stable/code_ref/coordinates.html)
+- [Coordinates for Solar Image Data -- Thompson (2006)](http://adsabs.harvard.edu/abs/2006A%26A...449..791T)
+- [IDL package for global potential field extrapolations](http://www.lmsal.com/~derosa/pfsspack/)
+- [Review of Magnetic Field Extrapolation Techniques -- T. Neukirch](http://adsabs.harvard.edu/abs/2005ESASP.596E..12N)
diff --git a/_projects/2018/sunpy/remote_data.md b/src/content/pages/gsoc/2018/sunpy/remote_data.md
similarity index 61%
rename from _projects/2018/sunpy/remote_data.md
rename to src/content/pages/gsoc/2018/sunpy/remote_data.md
index 7e125e6a..47e790b3 100644
--- a/_projects/2018/sunpy/remote_data.md
+++ b/src/content/pages/gsoc/2018/sunpy/remote_data.md
@@ -2,22 +2,22 @@
name: Remote Data in SunPy
desc: Implement support for versioned, validated remote data handling in SunPy.
requirements:
- - Familiar with HTTP client libraries.
- - Familiar with checksumming and caches.
+ - Familiar with HTTP client libraries.
+ - Familiar with checksumming and caches.
difficulty: low
issues:
- - https://github.com/sunpy/sunpy/issues/1939
- - https://github.com/sunpy/sunpy/issues/1897
+ - https://github.com/sunpy/sunpy/issues/1939
+ - https://github.com/sunpy/sunpy/issues/1897
mentors:
- - Cadair
- - wtbarnes
- - dpshelio
+ - Cadair
+ - wtbarnes
+ - dpshelio
initiatives:
- - GSOC
+ - GSOC
tags:
- - Python
+ - Python
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -40,21 +40,21 @@ See [issue #1939](https://github.com/sunpy/sunpy/issues/1939) for more details.
##### Coding Starts
-* Engaged with the community and understand the motivation and challenges of the project.
+- Engaged with the community and understand the motivation and challenges of the project.
##### Evaluation 1
-* Have evaluated and chosen the best approach for storing a local cache of data.
-* Have implemented a basic cache and download system, including tests and documentation.
+- Have evaluated and chosen the best approach for storing a local cache of data.
+- Have implemented a basic cache and download system, including tests and documentation.
##### Evaluation 2
-* Have worked with your mentors and the community to design a simple and functional API.
-* Have a working prototype of this API, including tests.
+- Have worked with your mentors and the community to design a simple and functional API.
+- Have a working prototype of this API, including tests.
##### Final
-* Have finished implementation, testing and documentation.
-* Have written examples for the gallery of how to use the functionality.
-* Have written developer documentation.
-* Have the Pull Request merged after review and feedback.
+- Have finished implementation, testing and documentation.
+- Have written examples for the gallery of how to use the functionality.
+- Have written developer documentation.
+- Have the Pull Request merged after review and feedback.
diff --git a/_projects/2018/sunpy/roi.md b/src/content/pages/gsoc/2018/sunpy/roi.md
similarity index 87%
rename from _projects/2018/sunpy/roi.md
rename to src/content/pages/gsoc/2018/sunpy/roi.md
index 75c0278b..5f81384b 100644
--- a/_projects/2018/sunpy/roi.md
+++ b/src/content/pages/gsoc/2018/sunpy/roi.md
@@ -3,20 +3,20 @@ name: Region of Interest
desc: Meta-Object creation for holding temporal and spatial features.
# add a description of your project
requirements:
- - Familiarity with Python
- - Understanding of design patterns
+ - Familiarity with Python
+ - Understanding of design patterns
difficulty: High
issues:
- - https://github.com/sunpy/sunpy/issues/164
-mentors:
- - dpshelio
- - wafels
+ - https://github.com/sunpy/sunpy/issues/164
+mentors:
+ - dpshelio
+ - wafels
initiatives:
- - GSOC
+ - GSOC
tags:
- - sunpy
+ - sunpy
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -26,7 +26,7 @@ region of interest (ROI) in any physical dimension (such as spatial area,
temporal range or spectral window) and interact with the rest of data types used
in sunpy.
-For example, a region of interest could be a particular area in the Sun
+For example, a region of interest could be a particular area in the Sun
at a particular moment in time. Therefore, that object should contain the extent
of such area, its contour and the time when it was observed.
It also needs other information, such as the coordinate system that it
@@ -39,6 +39,5 @@ plotting the box containing such region and being aware of difference in time or
observational point. So, it needs to be spatial and temporal aware.
Additionally, the object needs to understand (be able to parse in) features and
-events catalogued in the [HEK](http://www.lmsal.com/hek/hek_isolsearch.html)
+events catalogued in the [HEK](http://www.lmsal.com/hek/hek_isolsearch.html)
and [HELIO](http://hfc.helio-vo.eu/) databases.
-
diff --git a/_projects/2018/sunpy/sunkit-image.md b/src/content/pages/gsoc/2018/sunpy/sunkit-image.md
similarity index 62%
rename from _projects/2018/sunpy/sunkit-image.md
rename to src/content/pages/gsoc/2018/sunpy/sunkit-image.md
index cb7329d2..62b96fa0 100644
--- a/_projects/2018/sunpy/sunkit-image.md
+++ b/src/content/pages/gsoc/2018/sunpy/sunkit-image.md
@@ -2,23 +2,23 @@
name: Develop sunkit-image
desc: Create and develop a package for solar image analysis.
requirements:
- - Good understanding of Python.
- - Enthusiasm to learn solar image processing.
+ - Good understanding of Python.
+ - Enthusiasm to learn solar image processing.
difficulty: medium to low
issues:
- - https://github.com/sunpy/sunpy/pull/1899
+ - https://github.com/sunpy/sunpy/pull/1899
mentors:
- - Cadair
- - wafels
- - nabobalis
- - mbobra
+ - Cadair
+ - wafels
+ - nabobalis
+ - mbobra
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - sunpy
+ - python
+ - sunpy
collaborating_projects:
- - sunpy
+ - sunpy
---
In this project you would create the foundations of the 'sunkit-image' SunPy
@@ -39,32 +39,31 @@ the following goals (roughly in this order):
1. Implement the [normalizing-radial-graded filter (NRGF)](http://adsabs.harvard.edu/abs/2006SoPh..236..263M).
2. Port the Multi-Scale Gaussian Normalisation (MGN) code from [#1899](https://github.com/sunpy/sunpy/pull/1899).
3. Implement the [OCCULT-2 algorithm](http://arxiv.org/abs/1307.5046) for coronal loop tracing.
-4. Implement image re-sampling as described [here](https://link.springer.com/content/pdf/10.1023/B:SOLA.0000021743.24248.b0.pdf) through updating [this pull request](https://github.com/astropy/reproject/pull/52) to the Astropy [image resampling](https://reproject.readthedocs.io/en/stable/) repository.
+4. Implement image re-sampling as described in [this resampling paper](https://link.springer.com/content/pdf/10.1023/B:SOLA.0000021743.24248.b0.pdf) through updating [this pull request](https://github.com/astropy/reproject/pull/52) to the Astropy [image resampling](https://reproject.readthedocs.io/en/stable/) repository.
Optional extras:
-5. Implement the [soft morphological filtering of solar images](https://www.aanda.org/articles/aa/pdf/2006/38/aa4852-06.pdf)
-6. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
-7. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
-
+1. Implement the [soft morphological filtering of solar images](https://www.aanda.org/articles/aa/pdf/2006/38/aa4852-06.pdf)
+2. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
+3. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
#### Milestones
##### GSOC 2018 Official Coding Start
-* Have familiarised yourself with the algorithms and with Python packaging. Have worked with the mentors to get the package repository setup on GitHub and the CI and documentation running.
+- Have familiarised yourself with the algorithms and with Python packaging. Have worked with the mentors to get the package repository setup on GitHub and the CI and documentation running.
##### To be completed by the GSOC 2018 Phase 1 Evaluation Deadline
-* Have implemented, tested and documented the NRGF code.
-* Have implemented, tested and documented the MGN code.
+- Have implemented, tested and documented the NRGF code.
+- Have implemented, tested and documented the MGN code.
##### To be completed by the GSOC 2018 Phase 2 Evaluation Deadline
-* Have successfully merged the NRGF and MGN code.
-* Have implemented OCCULT-2.
+- Have successfully merged the NRGF and MGN code.
+- Have implemented OCCULT-2.
-##### To be completed by the end of the GSOC 2018 Final Week
+##### To be completed by the end of the GSOC 2018 Final Week
-* Have tested, documented and merged the OCCULT-2 code.
-* Have developed an outline of the implementation of the image resampling code in the context of the Astropy reproject module.
+- Have tested, documented and merged the OCCULT-2 code.
+- Have developed an outline of the implementation of the image resampling code in the context of the Astropy reproject module.
diff --git a/_projects/2018/sunpy/time_refactor.md b/src/content/pages/gsoc/2018/sunpy/time_refactor.md
similarity index 68%
rename from _projects/2018/sunpy/time_refactor.md
rename to src/content/pages/gsoc/2018/sunpy/time_refactor.md
index cb7b854e..c3ba2bd4 100644
--- a/_projects/2018/sunpy/time_refactor.md
+++ b/src/content/pages/gsoc/2018/sunpy/time_refactor.md
@@ -2,25 +2,25 @@
name: Transition to Astropy Time in SunPy
desc: Convert the whole SunPy module to using astropy.time to represent time.
requirements:
- - Good general Python skills.
- - Willingness to learn a little about a lot of SunPy.
+ - Good general Python skills.
+ - Willingness to learn a little about a lot of SunPy.
difficulty: medium
issues:
- - https://github.com/sunpy/sunpy/issues/993
- - https://github.com/sunpy/sunpy/issues/994
- - https://github.com/sunpy/sunpy/issues/2383
- - https://github.com/sunpy/sunpy/issues/2155
- - https://github.com/sunpy/sunpy/pull/2260
+ - https://github.com/sunpy/sunpy/issues/993
+ - https://github.com/sunpy/sunpy/issues/994
+ - https://github.com/sunpy/sunpy/issues/2383
+ - https://github.com/sunpy/sunpy/issues/2155
+ - https://github.com/sunpy/sunpy/pull/2260
mentors:
- - Cadair
- - nabobalis
- - Punyaslok
+ - Cadair
+ - nabobalis
+ - Punyaslok
initiatives:
- - GSOC
+ - GSOC
tags:
- - Python
+ - Python
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -29,7 +29,7 @@ SunPy currently uses `datetime.datetime` objects as it's internal representation
of time. The goal of this project is to transition every part of the SunPy
codebase to using `astropy.time.Time` instead. The main motivation for this is
that the `Time` object in Astropy supports much higher precision representations
-of time as well as supporting time formats *e.g.* TAI time which are commonly
+of time as well as supporting time formats _e.g._ TAI time which are commonly
used by solar physicists.
This transition is a major component of the planned SunPy 1.0 release, and will
@@ -46,22 +46,21 @@ project will have done substantial research on the use of `parse_time` in the
SunPy code and will appreciate the requirements for changes to this part of
SunPy.
-
#### Milestones (if any)
##### Coding Starts
-* Engaged with the community and understand the motivation and challenges of the project, especially the desired changes to `parse_time`.
+- Engaged with the community and understand the motivation and challenges of the project, especially the desired changes to `parse_time`.
##### Evaluation 1
-* Have implemented a new version of `parse_time` including, tests and documentation.
+- Have implemented a new version of `parse_time` including, tests and documentation.
##### Evaluation 2
-* Have transitioned `sunpy.net` to use `astropy.time.Time`
+- Have transitioned `sunpy.net` to use `astropy.time.Time`
##### Final
-* Have finished transitioning to `Time`, including increasing test coverage where required.
-* Have written some narrative documentation to assist users in making the transition.
+- Have finished transitioning to `Time`, including increasing test coverage where required.
+- Have written some narrative documentation to assist users in making the transition.
diff --git a/_projects/2018/timelab/XSPEC.md b/src/content/pages/gsoc/2018/timelab/XSPEC.md
similarity index 66%
rename from _projects/2018/timelab/XSPEC.md
rename to src/content/pages/gsoc/2018/timelab/XSPEC.md
index bddacc67..7da412e7 100644
--- a/_projects/2018/timelab/XSPEC.md
+++ b/src/content/pages/gsoc/2018/timelab/XSPEC.md
@@ -2,74 +2,75 @@
name: Python API for XSPEC
desc: Develop a modular python API to use XSPEC (a popular X-ray astronomy tool) in python workflows
requirements:
-- Familiar with Fortran and/or C++
+ - Familiar with Fortran and/or C++
difficulty: hard
issues:
-- https://github.com/StingraySoftware/stingray/issues/294
+ - https://github.com/StingraySoftware/stingray/issues/294
mentors:
- - dhuppenkothen
- - abigailStev
+ - dhuppenkothen
+ - abigailStev
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - scipy
+ - python
+ - scipy
collaborating_projects:
- - timelab
+ - timelab
---
#### Description
-X-ray spectroscopy (measuring and understanding how the brightness of a black
-hole source varies with wavelength of the light) is one of the most important
-ways we learn about the physics of black holes and their companion stars. For
-the past twenty years ago, the main package for X-ray spectroscopy has been
-[XSPEC](https://heasarc.gsfc.nasa.gov/docs/xanadu/xspec/manual/XspecManual.html).
-While other options exist (e.g., [Sherpa](https://github.com/sherpa/sherpa)),
-all of them have one thing in common:
-they provide a convenient, but very rigid user interface. This makes them hard
-to modify or extend without having to change a large amount of the underlying
-source code, something that few scientists are able or willing to do (especially
-since XSPEC is mostly written in C++). However, astronomy is changing, and the
-requirements we have for our software are changing, too! The current software
-environment makes it extremely difficult to build new models and test new ideas,
-and it is very hard to install XSPEC in a shared cluster environment due to a
-legacy of complex software dependencies. This is especially important in the
-context of [Stingray](https://github.com/StingraySoftware): while we have so
-far focused on methods that help us
-explore how the brightness of black hole sources changes with time, we would
-ideally also want to connect this to how the brightness of black hole sources
-changes with energy, and model both at the same time. At the same time, as our
-data sets grow, it is becoming increasingly unrealistic that we will be able to
-analyse our data on conventional desktop computers. None of the current software
-packages allow the user to step outside the few, well-defined commands the user
-interface allows, and installing these packages on large computer clusters is
-exceptionally difficult. This means that successful completion of this project
+X-ray spectroscopy (measuring and understanding how the brightness of a black
+hole source varies with wavelength of the light) is one of the most important
+ways we learn about the physics of black holes and their companion stars. For
+the past twenty years ago, the main package for X-ray spectroscopy has been
+[XSPEC](https://heasarc.gsfc.nasa.gov/docs/xanadu/xspec/manual/XspecManual.html).
+While other options exist (e.g., [Sherpa](https://github.com/sherpa/sherpa)),
+all of them have one thing in common:
+they provide a convenient, but very rigid user interface. This makes them hard
+to modify or extend without having to change a large amount of the underlying
+source code, something that few scientists are able or willing to do (especially
+since XSPEC is mostly written in C++). However, astronomy is changing, and the
+requirements we have for our software are changing, too! The current software
+environment makes it extremely difficult to build new models and test new ideas,
+and it is very hard to install XSPEC in a shared cluster environment due to a
+legacy of complex software dependencies. This is especially important in the
+context of [Stingray](https://github.com/StingraySoftware): while we have so
+far focused on methods that help us
+explore how the brightness of black hole sources changes with time, we would
+ideally also want to connect this to how the brightness of black hole sources
+changes with energy, and model both at the same time. At the same time, as our
+data sets grow, it is becoming increasingly unrealistic that we will be able to
+analyse our data on conventional desktop computers. None of the current software
+packages allow the user to step outside the few, well-defined commands the user
+interface allows, and installing these packages on large computer clusters is
+exceptionally difficult. This means that successful completion of this project
would be a big step forward for the entire field of X-ray astrophysics.
For a test of this project by one of our Stingray leads, see
[(dhuppenkothen/clarsach)](https://github.com/dhuppenkothen/clarsach).
#### Deliverables
+
Deliverables for this project will be:
##### To complete each milestone
-+ Working unit tests for each piece of code
+- Working unit tests for each piece of code
-+ Documentation for each class, method and function implemented
+- Documentation for each class, method and function implemented
##### Milestone 1
-+ Python bindings to the XSPEC models and an API for access
+- Python bindings to the XSPEC models and an API for access
##### Milestone 2
-+ Installation files for the XSPEC models (fortran/C++) and the Python library
+- Installation files for the XSPEC models (fortran/C++) and the Python library
##### Final
-+ [Example/tutorial notebooks](https://github.com/StingraySoftware/notebooks)
-connecting the models to the
-[Stingray modeling API](https://github.com/StingraySoftware/stingray/tree/master/stingray/modeling)
-(in progress)
+- [Example/tutorial notebooks](https://github.com/StingraySoftware/notebooks)
+ connecting the models to the
+ [Stingray modeling API](https://github.com/StingraySoftware/stingray/tree/master/stingray/modeling)
+ (in progress)
diff --git a/_projects/2018/timelab/optimize.md b/src/content/pages/gsoc/2018/timelab/optimize.md
similarity index 75%
rename from _projects/2018/timelab/optimize.md
rename to src/content/pages/gsoc/2018/timelab/optimize.md
index a38dfebd..b918f42c 100644
--- a/_projects/2018/timelab/optimize.md
+++ b/src/content/pages/gsoc/2018/timelab/optimize.md
@@ -2,24 +2,24 @@
name: Optimize Stingray for Large Datasets
desc: Optimize tools in the Stingray library for use on large datasets from new X-ray space missions.
requirements:
-- Familiar with python optimization tools
+ - Familiar with python optimization tools
difficulty: medium
issues:
-- https://github.com/StingraySoftware/stingray/issues/164
+ - https://github.com/StingraySoftware/stingray/issues/164
mentors:
- - matteobachetti
- - pbalm
- - abigailStev
+ - matteobachetti
+ - pbalm
+ - abigailStev
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - scipy
- - numba
- - dask
- - memmap
+ - python
+ - scipy
+ - numba
+ - dask
+ - memmap
collaborating_projects:
- - timelab
+ - timelab
---
#### Description
@@ -34,12 +34,13 @@ practical use cases, make a thorough profiling of the code, single out
bottlenecks, and find solutions.
#### Deliverables
+
Deliverables for this project will be profiling and developing solutions for
code bottlenecks and other hindrances to using Stingray library tools on large
datasets.
##### To complete each milestone
-+ Working unit tests for each piece of code
+- Working unit tests for each piece of code
-+ Documentation for each class, method and function implemented
\ No newline at end of file
+- Documentation for each class, method and function implemented
diff --git a/_projects/2018/timelab/quasiperiodic.md b/src/content/pages/gsoc/2018/timelab/quasiperiodic.md
similarity index 61%
rename from _projects/2018/timelab/quasiperiodic.md
rename to src/content/pages/gsoc/2018/timelab/quasiperiodic.md
index bec0a114..7596cca4 100644
--- a/_projects/2018/timelab/quasiperiodic.md
+++ b/src/content/pages/gsoc/2018/timelab/quasiperiodic.md
@@ -2,64 +2,65 @@
name: Phase-resolved oscillations
desc: Implement method to calculate the phase of oscillatory phenomena with non-constant frequency, and calculate phase-resolved spectra.
requirements:
- - Familiar with numerical analysis
+ - Familiar with numerical analysis
difficulty: medium
issues:
- - https://github.com/StingraySoftware/stingray/issues/293
+ - https://github.com/StingraySoftware/stingray/issues/293
mentors:
- - abigailStev
- - matteobachetti
+ - abigailStev
+ - matteobachetti
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - scipy
- - numba
+ - python
+ - scipy
+ - numba
collaborating_projects:
- - timelab
+ - timelab
---
#### Description
-Quasi-periodic oscillations are the "heart-beat" of black holes and neutron stars:
-oscillations with changing phase and frequency, probably due to the complicated motion of matter around these objects.
-Besides characterizing how these frequencies evolve in time (accelerate, decelerate, for example, when the luminosity increases),
-it is important to understand their exact physical meaning. A few examples in the literature use different approaches
-to the problem, and calculate the different spectrum of the light emitted at different phases of these oscillations.
-This is highly non-trivial: one cannot follow easily the single "heartbeat", but needs to apply a strong de-noising to
-the signal first, and then calculate the average spectrum during the oscillation.
+Quasi-periodic oscillations are the "heart-beat" of black holes and neutron stars:
+oscillations with changing phase and frequency, probably due to the complicated motion of matter around these objects.
+Besides characterizing how these frequencies evolve in time (accelerate, decelerate, for example, when the luminosity increases),
+it is important to understand their exact physical meaning. A few examples in the literature use different approaches
+to the problem, and calculate the different spectrum of the light emitted at different phases of these oscillations.
+This is highly non-trivial: one cannot follow easily the single "heartbeat", but needs to apply a strong de-noising to
+the signal first, and then calculate the average spectrum during the oscillation.
The reward for this scientific approach can be very high, and people have implemented a few different approaches to the problem, e.g.:
-+ [Ingram et al. 2016](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.461.1967I&link_type=EJOURNAL) [open-access preprint](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.461.1967I&link_type=PREPRINT)
+- [Ingram et al. 2016](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.461.1967I&link_type=EJOURNAL) [open-access preprint](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.461.1967I&link_type=PREPRINT)
-+ [Stevens & Uttley 2016](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.460.2796S&link_type=ARTICLE) [open-access preprint](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.460.2796S&link_type=PREPRINT)
+- [Stevens & Uttley 2016](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.460.2796S&link_type=ARTICLE) [open-access preprint](http://adsabs.harvard.edu/cgi-bin/nph-data_query?bibcode=2016MNRAS.460.2796S&link_type=PREPRINT)
-In this Project, the student will work with the mentor to implement the full chain of de-noising and
+In this Project, the student will work with the mentor to implement the full chain of de-noising and
phase-resolved spectroscopy of quasi-periodic oscillations, in such a way that
-+ Any user with proper data sets can easily get a result
+- Any user with proper data sets can easily get a result
-+ If datasets do not allow a solution (e.g., the modulation is not strong enough) warnings have to be sent.
+- If datasets do not allow a solution (e.g., the modulation is not strong enough) warnings have to be sent.
-+ Both methods can actually be used for pulsars too (it is the trivial case!).
+- Both methods can actually be used for pulsars too (it is the trivial case!).
#### Deliverables
+
Deliverables for this project will be
##### To complete each milestone
-+ Working unit tests for each piece of code
+- Working unit tests for each piece of code
-+ Documentation for each class, method and function implemented
+- Documentation for each class, method and function implemented
##### Milestone 1
-+ A semi-automated procedure to follow the frequency of oscillations as they vary
+- A semi-automated procedure to follow the frequency of oscillations as they vary
##### Milestone 2
-+ The de-noising function that leads to the oscillation average profile ("heartbeat" shape) at different energies
+- The de-noising function that leads to the oscillation average profile ("heartbeat" shape) at different energies
##### Final
-+ A suite of scripts outlining workflows useful to scientists in practice
+- A suite of scripts outlining workflows useful to scientists in practice
diff --git a/_projects/2019/astropy/astroquery.md b/src/content/pages/gsoc/2019/astropy/astroquery.md
similarity index 81%
rename from _projects/2019/astropy/astroquery.md
rename to src/content/pages/gsoc/2019/astropy/astroquery.md
index 4fc208be..2f0a4231 100644
--- a/_projects/2019/astropy/astroquery.md
+++ b/src/content/pages/gsoc/2019/astropy/astroquery.md
@@ -2,23 +2,23 @@
name: Add additional archives to astroquery
desc: Implement module(s) to access currently unsupported astronomical archives using astroquery.
requirements:
- - Python
- - Basic understanding of web queries and APIs
+ - Python
+ - Basic understanding of web queries and APIs
difficulty: low
issues:
- - https://github.com/astropy/astroquery/issues/226
+ - https://github.com/astropy/astroquery/issues/226
mentors:
- - keflavich
- - bsipocz
+ - keflavich
+ - bsipocz
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astroquery
- - astropy
+ - python
+ - astroquery
+ - astropy
collaborating_projects:
- - astropy
- - astroquery
+ - astropy
+ - astroquery
---
#### Description
@@ -31,8 +31,7 @@ A full list of new services that have been suggested by our users
[can be found in these issues](https://github.com/astropy/astroquery/issues?q=is%3Aissue+is%3Aopen+label%3A%22New+Service%22),
and a summary [in this issue](https://github.com/astropy/astroquery/issues/226).
-
-A *possible* set of milestones for any particular one of these modules might be:
+A _possible_ set of milestones for any particular one of these modules might be:
1. Research the web API for the archive sufficiently to determine what exactly astroquery should expose.
2. Determine the best interface to access the simplest subset of that archive that would be useful.
diff --git a/_projects/2019/astropy/astrowidgets.md b/src/content/pages/gsoc/2019/astropy/astrowidgets.md
similarity index 70%
rename from _projects/2019/astropy/astrowidgets.md
rename to src/content/pages/gsoc/2019/astropy/astrowidgets.md
index 711681be..ce02adc4 100644
--- a/_projects/2019/astropy/astrowidgets.md
+++ b/src/content/pages/gsoc/2019/astropy/astrowidgets.md
@@ -2,24 +2,24 @@
name: Jupyter widgets for Astropy
desc: Create "astrowidgets" - Jupyter widgets for Astropy.
requirements:
- - Python
- - Very basic knowledge of CSS.
- - Basic understanding of javascript.
- - Basic knowledge of astronomical images and photometry
+ - Python
+ - Very basic knowledge of CSS.
+ - Basic understanding of javascript.
+ - Basic knowledge of astronomical images and photometry
difficulty: intermediate
mentors:
- - mwcraig
- - astrofrog
- - pllim
- - eteq
+ - mwcraig
+ - astrofrog
+ - pllim
+ - eteq
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - javascript
+ - python
+ - javascript
collaborating_projects:
- - astropy
- - astrowidgets
+ - astropy
+ - astrowidgets
---
#### Description
@@ -30,22 +30,22 @@ The final deliverable for the project will be a version of the [astrowidgets](ht
Some of the deliverables for this project would be:
-+ Development of the remaining unimplemented features in the
+- Development of the remaining unimplemented features in the
[target API](https://github.com/eteq/nb-astroimage-api) using ginga as the backend.
-+ Develop an implementation using [bqplot](https://github.com/bloomberg/bqplot) and
+- Develop an implementation using [bqplot](https://github.com/bloomberg/bqplot) and
the [ipyastroimage](https://github.com/glue-viz/ipyastroimage) mark for
[bqplot](https://github.com/bloomberg/bqplot) as the backend.
-+ Explore development of a non-interactive version using matplotlib as the backend.
+- Explore development of a non-interactive version using matplotlib as the backend.
The non-interactive version would implement as much of the API as possible in a
non-interactive format.
-+ Develop a method for identifying the nearest point source to a click on an image
+- Develop a method for identifying the nearest point source to a click on an image
(very preliminary work on this is available) by combining the above with astropy
and its affiliated packages (particularly photutils).
-+ Documentation for the implemented backends.
-+ More extensive test suite.
+- Documentation for the implemented backends.
+- More extensive test suite.
In addition, these Jupyter notebooks will be developed:
-+ Sample notebooks demonstrating each of the back ends.
+- Sample notebooks demonstrating each of the back ends.
Preliminary development of this project is already underway, so some of the specific deliverables might have changed by the beginning of the summer of code.
diff --git a/_projects/2019/astropy/n-waymatch.md b/src/content/pages/gsoc/2019/astropy/n-waymatch.md
similarity index 86%
rename from _projects/2019/astropy/n-waymatch.md
rename to src/content/pages/gsoc/2019/astropy/n-waymatch.md
index 84f63b2f..162dffff 100644
--- a/_projects/2019/astropy/n-waymatch.md
+++ b/src/content/pages/gsoc/2019/astropy/n-waymatch.md
@@ -2,21 +2,20 @@
name: Developing an n-way matcher for Astropy
desc: Develop an Astropy Table compatible n-way matcher of astronomical catalogues
requirements:
- - Python
+ - Python
difficulty: medium
issues:
- - https://groups.google.com/forum/#!topic/astropy-dev/Y8qHC9_I0VI
+ - https://groups.google.com/forum/#!topic/astropy-dev/Y8qHC9_I0VI
mentors:
- - manodeep
- - parejkoj
+ - manodeep
+ - parejkoj
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - astropy
+ - python
+ - astropy
collaborating_projects:
- - astropy
-
+ - astropy
---
#### Description
diff --git a/_projects/2019/astropy/stcs_regions.md b/src/content/pages/gsoc/2019/astropy/stcs_regions.md
similarity index 77%
rename from _projects/2019/astropy/stcs_regions.md
rename to src/content/pages/gsoc/2019/astropy/stcs_regions.md
index 010f9ec0..44c26c0f 100644
--- a/_projects/2019/astropy/stcs_regions.md
+++ b/src/content/pages/gsoc/2019/astropy/stcs_regions.md
@@ -3,26 +3,26 @@ name: STC-S regions
desc: Implement the STC-S regions standard in astropy/regions
# add a short one line description of your project
requirements:
-# Student requirements:
- - Python
+ # Student requirements:
+ - Python
difficulty: low
issues:
-# Related issues (if any) to this project.
- - https://github.com/astropy/regions/issues/21
+ # Related issues (if any) to this project.
+ - https://github.com/astropy/regions/issues/21
mentors:
-# First person in contact; mentors may change before project starts.
- - keflavich
+ # First person in contact; mentors may change before project starts.
+ - keflavich
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - regions
- - astropy
+ # Different technologies needed
+ - python
+ - regions
+ - astropy
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - astropy
- - regions
+ # suborganization(s) to which this project belongs.
+ - astropy
+ - regions
---
#### Description
diff --git a/src/content/pages/gsoc/2019/astropy/table-optimize.md b/src/content/pages/gsoc/2019/astropy/table-optimize.md
new file mode 100644
index 00000000..e50dac98
--- /dev/null
+++ b/src/content/pages/gsoc/2019/astropy/table-optimize.md
@@ -0,0 +1,63 @@
+---
+name: Improving astropy Table performance
+desc: Improve the speed of common Table operations like slicing
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Familiar with Cython and Python code profiling
+ - Familiar with Python speed optimization strategies
+difficulty: medium
+issues:
+# Related issues (if any) to this project.
+mentors:
+ # First person in contact; mentors may change before project starts.
+ - taldcroft
+ - mhvk
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - python
+ - Cython
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - astropy
+---
+
+Improving astropy Table performance
+
+#### Description
+
+The astropy table sub-package defines a core Table class that is
+used to store and manipulate tabular data within astropy. This class
+was written with an emphasis on functionality, convenience for astronomers,
+and code clarity. With the astropy table package now fairly mature
+and with a strong set of regression tests in place, it is time to focus
+on performance for basic operations like table creation and slicing.
+For a simple operation like slicing, astropy Table is currently about
+a factor of 10 slower than Pandas. This project will focus on identifying
+performance bottlenecks, writing performance tests for astropy-benchmarks,
+and then developing code to improve the performance. It is possible that
+some fixes will require the use of Cython so previous experience is
+desirable though not absolutely required.
+
+#### Milestones (if any)
+
+##### GSOC 2019 CODING STARTS
+
+- Perform developer install of `astropy`.
+- Install Python profiling tools.
+- Study astropy and the table package capabilities.
+
+##### GSOC 2019 MIDTERM
+
+- Install and run `asv`.
+- Examine existing `asv` benchmarks and identify areas for improved benchmarking.
+- Profile key parts of table code and identify performance bottlenecks.
+- Identify strategies for improved speed performance.
+- Implement initial performance improvements.
+
+##### GSOC 2019 FINAL
+
+- Continue and finalize implementation of performance improvements.
+- Contine and finalize additional `asv` benchmark tests.
diff --git a/src/content/pages/gsoc/2019/astropy/telescopy.md b/src/content/pages/gsoc/2019/astropy/telescopy.md
new file mode 100644
index 00000000..1ad35718
--- /dev/null
+++ b/src/content/pages/gsoc/2019/astropy/telescopy.md
@@ -0,0 +1,50 @@
+---
+name: telescopy
+desc: A generic API for telescope S/N calculations.
+requirements:
+ # Student requirements:
+ - Observational astronomy
+difficulty: medium
+mentors:
+ # First person in contact; mentors may change before project starts.
+ - bmorris3
+ - eteq
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - python
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - astropy
+---
+
+Specify some telescope, filter, imager, and target properties, and estimate the photons or counts you’d measure
+
+#### Description
+
+The goal of this project is to create a simple API for performing signal-to-noise calculations
+for telescopic observations using astropy. Users will specify an input source spectrum (e.g. a blackbody),
+properties of the source (e.g. magnitude in one band, or a distance), properties of the telescope
+(e.g. aperture, throughput), and properties of the imager (e.g. quantum efficiency, gain) in order to calculate
+the expected photon flux and count rate. If time allows, the applicant will also develop a submodule for
+signal-to-noise calculations of spectroscopic observations.
+
+#### Milestones (if any)
+
+##### GSOC CODING STARTS
+
+- Get to know the existing API, design strawman API
+- Generalize the input spectrum object for objects other than blackbodies
+- Work out scaling of magnitudes from one band to another
+
+##### GSOC MIDTERM
+
+- Write tests which will validate predictions against real data
+- Write documentation which explains how to construct your own S/N calculations
+
+##### GSOC FINAL
+
+- Have _passing_ tests which validate the API for real observations
+- Handle spectroscopic observations at arbitrary spectral resolution
+- Write extensive documentation with examples for widely-used telescopes
diff --git a/_projects/2019/ctlearn/3d-reconstruction.md b/src/content/pages/gsoc/2019/ctlearn/3d-reconstruction.md
similarity index 69%
rename from _projects/2019/ctlearn/3d-reconstruction.md
rename to src/content/pages/gsoc/2019/ctlearn/3d-reconstruction.md
index 60a8db74..53b9eab9 100644
--- a/_projects/2019/ctlearn/3d-reconstruction.md
+++ b/src/content/pages/gsoc/2019/ctlearn/3d-reconstruction.md
@@ -3,28 +3,28 @@ name: 3D Reconstruction/Convolutional Neural Networks
desc: Implement a pipeline for reconstructing 3D inputs from multiple telescope images and training a 3D CNN on them.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Python
- - Moderate familiarity with neural networks (specifically 3D CNNs)
- - Some familiarity with 3D geometry/linear algebra implementation in Python (optional)
+ # Student requirements:
+ - Python
+ - Moderate familiarity with neural networks (specifically 3D CNNs)
+ - Some familiarity with 3D geometry/linear algebra implementation in Python (optional)
difficulty: hard
issues:
# Related issues (if any) to this project.
mentors:
-# First person in contact; mentors may change before project starts.
- - aribrill
- - bryankim96
- - qi-feng
+ # First person in contact; mentors may change before project starts.
+ - aribrill
+ - bryankim96
+ - qi-feng
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - tensorflow
- - pyeuclid (optional)
+ # Different technologies needed
+ - python
+ - tensorflow
+ - pyeuclid (optional)
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - ctlearn
+ # suborganization(s) to which this project belongs.
+ - ctlearn
---
#### Description
@@ -33,25 +33,25 @@ One of the main goals of CTLearn is developing and implementing methods to perfo
When it comes to event reconstruction with convolutional neural networks (CNNs), it likely that in order to improve noticeably on existing reconstruction methods, it will be necessary for CNN-based methods to make full use of this stereo information. The current methods implemented in CTLearn, like the convolutional recurrent neural network (CRNN) model do not take full advantage of this information, as they handle each input image of an event without any explicit reference to the geometrical relationship between all of the images.
-The idea behind this project is to implement a pre-processing stage which does a preliminary geometric reconstruction before passing the data to a CNN. A purely geometric method, based on photon back-tracing coupled with information about the telescope positions and pointings, is used to reconstruct a 3D array input representing the shower. In this 3D array, unlike the original images (which is only a projection of the 3D shower onto the camera), locality is preserved, as information about the same part of the shower (in three dimensions) will be combined from all telescopes. Ideally, this should result in the locality and hierarchicality assumptions of CNNs being better satisfied, the CNN being better able to extract and use low-level shower information/features, and a more powerful classifier.
-
+The idea behind this project is to implement a pre-processing stage which does a preliminary geometric reconstruction before passing the data to a CNN. A purely geometric method, based on photon back-tracing coupled with information about the telescope positions and pointings, is used to reconstruct a 3D array input representing the shower. In this 3D array, unlike the original images (which is only a projection of the 3D shower onto the camera), locality is preserved, as information about the same part of the shower (in three dimensions) will be combined from all telescopes. Ideally, this should result in the locality and hierarchicality assumptions of CNNs being better satisfied, the CNN being better able to extract and use low-level shower information/features, and a more powerful classifier.
+
#### Milestones
##### GSOC CODING STARTS
-* Install CTLearn and DL1 Data Handler and verify that shower images can be loaded and manipulated as numpy arrays.
-* Read and understand the 3D geometric reconstruction method laid out in the Event Reconstruction for VERITAS note.
-* Make a plan for implementation and a definition for the 3D input structure (how photon tracks will be converted into a voxel volume)
+- Install CTLearn and DL1 Data Handler and verify that shower images can be loaded and manipulated as numpy arrays.
+- Read and understand the 3D geometric reconstruction method laid out in the Event Reconstruction for VERITAS note.
+- Make a plan for implementation and a definition for the 3D input structure (how photon tracks will be converted into a voxel volume)
##### GSOC MIDTERM
-* Implement the 3D reconstruction method and present example outputs (w/ visualization so they can be validated).
-* Present a design for a minimal 3D convolutional neural network for classification (based on a review of the literature).
-* Have all code and documentation in GitHub.
+- Implement the 3D reconstruction method and present example outputs (w/ visualization so they can be validated).
+- Present a design for a minimal 3D convolutional neural network for classification (based on a review of the literature).
+- Have all code and documentation in GitHub.
##### GSOC FINAL
-* Preprocess a small dataset using the 3D reconstruction code and write code in TensorFlow to train the 3D model on it (should be based on the existing CTLearn framework and only involve definining a new model + any modifications to data loading code required to load 3D data).
-* Further optimize/improve implementation of 3D reconstruction method.
-* Prepare a report on method feasibility: training time/speed, dataset size/reduction factors, dataset processing time, GPU memory limitations, preliminary performance/observations about training.
-* Have all code, documentation, and final configuration files and plots in GitHub.
+- Preprocess a small dataset using the 3D reconstruction code and write code in TensorFlow to train the 3D model on it (should be based on the existing CTLearn framework and only involve definining a new model + any modifications to data loading code required to load 3D data).
+- Further optimize/improve implementation of 3D reconstruction method.
+- Prepare a report on method feasibility: training time/speed, dataset size/reduction factors, dataset processing time, GPU memory limitations, preliminary performance/observations about training.
+- Have all code, documentation, and final configuration files and plots in GitHub.
diff --git a/_projects/2019/ctlearn/hexagonal_convolution.md b/src/content/pages/gsoc/2019/ctlearn/hexagonal_convolution.md
similarity index 62%
rename from _projects/2019/ctlearn/hexagonal_convolution.md
rename to src/content/pages/gsoc/2019/ctlearn/hexagonal_convolution.md
index 09d368f2..6874fae5 100644
--- a/_projects/2019/ctlearn/hexagonal_convolution.md
+++ b/src/content/pages/gsoc/2019/ctlearn/hexagonal_convolution.md
@@ -3,28 +3,28 @@ name: Hexagonal convolution
desc: Implement hexagonal convolution and pooling methods
# add a short one line description of your project
requirements:
-# Student requirements:
-- Python
-- Basic familiarity with neural networks
+ # Student requirements:
+ - Python
+ - Basic familiarity with neural networks
difficulty: medium
issues:
-# Related issues (if any) to this project.
-- https://github.com/ctlearn-project/ctlearn/issues/88
-- https://github.com/ctlearn-project/ctlearn/issues/56
+ # Related issues (if any) to this project.
+ - https://github.com/ctlearn-project/ctlearn/issues/88
+ - https://github.com/ctlearn-project/ctlearn/issues/56
mentors:
-# First person in contact; mentors may change before project starts.
-- aribrill
-- nietootein
-- TjarkMiener
+ # First person in contact; mentors may change before project starts.
+ - aribrill
+ - nietootein
+ - TjarkMiener
initiatives:
-- GSOC
+ - GSOC
tags:
-# Different technologies needed
-- python
-- tensorflow
+ # Different technologies needed
+ - python
+ - tensorflow
collaborating_projects:
-# suborganisation(s) to which this project belongs.
-- ctlearn
+ # suborganization(s) to which this project belongs.
+ - ctlearn
---
#### Description
@@ -39,18 +39,18 @@ In this project, the student will first study the different packages like [Index
##### GSOC CODING STARTS
-* Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
-* Understand the technical and scientific goals of the project.
+- Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
+- Understand the technical and scientific goals of the project.
##### GSOC MIDTERM
-* Implement hexagonal convolution and pooling methods in CTLearn.
-* Test/Train CTLearn default models using the new method.
-* Have all code and documentation in GitHub.
+- Implement hexagonal convolution and pooling methods in CTLearn.
+- Test/Train CTLearn default models using the new method.
+- Have all code and documentation in GitHub.
##### GSOC FINAL
-* Complete the training and optimize the performance of the neural network for hexagonal convolution.
-* Compare performance with previous benchmarks.
-* Make/Edit configuration files and plots demonstrating the performance of hexagonal convolution.
-* Have all code, documentation, and final configuration files and plots in GitHub.
+- Complete the training and optimize the performance of the neural network for hexagonal convolution.
+- Compare performance with previous benchmarks.
+- Make/Edit configuration files and plots demonstrating the performance of hexagonal convolution.
+- Have all code, documentation, and final configuration files and plots in GitHub.
diff --git a/_projects/2019/ctlearn/optimization.md b/src/content/pages/gsoc/2019/ctlearn/optimization.md
similarity index 61%
rename from _projects/2019/ctlearn/optimization.md
rename to src/content/pages/gsoc/2019/ctlearn/optimization.md
index f8fa60de..cd6501a2 100644
--- a/_projects/2019/ctlearn/optimization.md
+++ b/src/content/pages/gsoc/2019/ctlearn/optimization.md
@@ -3,27 +3,27 @@ name: Optimization
# add a short one line description of your project
desc: Implement a framework for model optimization
requirements:
-# Student requirements:
- - Python
- - Basic familiarity with neural networks
+ # Student requirements:
+ - Python
+ - Basic familiarity with neural networks
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/ctlearn-project/ctlearn/issues/89
+ # Related issues (if any) to this project.
+ - https://github.com/ctlearn-project/ctlearn/issues/89
mentors:
-# First person in contact; mentors may change before project starts.
- - nietootein
- - bryankim96
- - rlopezcoto
+ # First person in contact; mentors may change before project starts.
+ - nietootein
+ - bryankim96
+ - rlopezcoto
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - tensorflow
+ # Different technologies needed
+ - python
+ - tensorflow
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - ctlearn
+ # suborganization(s) to which this project belongs.
+ - ctlearn
---
#### Description
@@ -39,7 +39,7 @@ distinguishing gamma-ray induced events from cosmic-ray induced
events. The better our deep learning models are in telling these two
populations apart the better our reach in the gamma-ray Universe will
be. Therefore, optimizing our deep learning models has the potential
-to make a difference in our view of the Universe at these energies.
+to make a difference in our view of the Universe at these energies.
In this project, the student will first learn how to use CTLearn to
train classification models that tell gamma-ray images from cosmic-ray
@@ -54,18 +54,18 @@ currently implemented models.
##### GSOC CODING STARTS
-* Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
-* Understand the technical and scientific goals of the project.
+- Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
+- Understand the technical and scientific goals of the project.
##### GSOC MIDTERM
-* Implement the calculation of useful metrics from a prediction file.
-* Implement iterative grid and random searches in (a)the hyperparameter (sub)space.
-* Have all code and documentation in GitHub.
+- Implement the calculation of useful metrics from a prediction file.
+- Implement iterative grid and random searches in (a)the hyperparameter (sub)space.
+- Have all code and documentation in GitHub.
##### GSOC FINAL
-* Complete coarse iterative grid and random searches for the single_tel model.
-* Complete coarse iterative grid and random searches for the cnn_rnn model.
-* Implement other optimization searches, e.g., random search, genetic algorithms, Bayesian optimization, etc. (time permitting).
-* Have all code, documentation, and plots in GitHub.
+- Complete coarse iterative grid and random searches for the single_tel model.
+- Complete coarse iterative grid and random searches for the cnn_rnn model.
+- Implement other optimization searches, e.g., random search, genetic algorithms, Bayesian optimization, etc. (time permitting).
+- Have all code, documentation, and plots in GitHub.
diff --git a/_projects/2019/ctlearn/regression.md b/src/content/pages/gsoc/2019/ctlearn/regression.md
similarity index 62%
rename from _projects/2019/ctlearn/regression.md
rename to src/content/pages/gsoc/2019/ctlearn/regression.md
index 93dc1330..2a614f33 100644
--- a/_projects/2019/ctlearn/regression.md
+++ b/src/content/pages/gsoc/2019/ctlearn/regression.md
@@ -3,28 +3,28 @@ name: Regression
desc: Implement regression for energy estimation and angular reconstruction
# add a short one line description of your project
requirements:
-# Student requirements:
- - Python
- - Basic familiarity with neural networks
+ # Student requirements:
+ - Python
+ - Basic familiarity with neural networks
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/ctlearn-project/ctlearn/issues/67
- - https://github.com/ctlearn-project/ctlearn/issues/82
+ # Related issues (if any) to this project.
+ - https://github.com/ctlearn-project/ctlearn/issues/67
+ - https://github.com/ctlearn-project/ctlearn/issues/82
mentors:
-# First person in contact; mentors may change before project starts.
- - aribrill
- - bryankim96
- - TjarkMiener
+ # First person in contact; mentors may change before project starts.
+ - aribrill
+ - bryankim96
+ - TjarkMiener
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - tensorflow
+ # Different technologies needed
+ - python
+ - tensorflow
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - ctlearn
+ # suborganization(s) to which this project belongs.
+ - ctlearn
---
#### Description
@@ -39,20 +39,20 @@ In this project, the student will first implement the ability to load continuous
##### GSOC CODING STARTS
-* Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
-* Understand the technical and scientific goals of the project.
+- Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
+- Understand the technical and scientific goals of the project.
##### GSOC MIDTERM
-* Implement loading continuous variables in CTLearn.
-* Make a neural network for energy estimation based on the single telescope model in CTLearn and begin training it.
-* Have all code and documentation in GitHub.
+- Implement loading continuous variables in CTLearn.
+- Make a neural network for energy estimation based on the single telescope model in CTLearn and begin training it.
+- Have all code and documentation in GitHub.
##### GSOC FINAL
-* Complete the training and optimize the performance of the neural network for energy estimation.
-* Add the capability for angular reconstruction to the neural network (time permitting).
-* Create and train a neural network for energy estimation using multiple images based on the CNN-RNN model in CTLearn (time permitting).
-* Make configuration files and plots demonstrating the performance of the neural network(s).
-* Evaluating the energy bias and point spread function with the regression network.
-* Have all code, documentation, and final configuration files and plots in GitHub.
+- Complete the training and optimize the performance of the neural network for energy estimation.
+- Add the capability for angular reconstruction to the neural network (time permitting).
+- Create and train a neural network for energy estimation using multiple images based on the CNN-RNN model in CTLearn (time permitting).
+- Make configuration files and plots demonstrating the performance of the neural network(s).
+- Evaluating the energy bias and point spread function with the regression network.
+- Have all code, documentation, and final configuration files and plots in GitHub.
diff --git a/_projects/2019/ctlearn/rootinput.md b/src/content/pages/gsoc/2019/ctlearn/rootinput.md
similarity index 63%
rename from _projects/2019/ctlearn/rootinput.md
rename to src/content/pages/gsoc/2019/ctlearn/rootinput.md
index 730ee90a..be2f2152 100644
--- a/_projects/2019/ctlearn/rootinput.md
+++ b/src/content/pages/gsoc/2019/ctlearn/rootinput.md
@@ -1,28 +1,28 @@
---
name: ROOT input
-desc: Enable input of data in ROOT format from current-generation imaging atmospheric Cherenkov telescopes
+desc: Enable input of data in ROOT format from current-generation imaging atmospheric Cherenkov telescopes
# add a short one line description of your project
requirements:
-# Student requirements
- - Python
- - Basic familiarity with neural networks
+ # Student requirements
+ - Python
+ - Basic familiarity with neural networks
difficulty: medium
mentors:
-# First person in contact; mentors may change before project starts.
- - rlopezcoto
- - aribrill
- - qi-feng
+ # First person in contact; mentors may change before project starts.
+ - rlopezcoto
+ - aribrill
+ - qi-feng
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - tensorflow
- - uproot
- - dl1-data-handler
+ # Different technologies needed
+ - python
+ - tensorflow
+ - uproot
+ - dl1-data-handler
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - ctlearn
+ # suborganization(s) to which this project belongs.
+ - ctlearn
---
#### Description
@@ -54,18 +54,18 @@ from current-generation IACTs.
##### GSOC CODING STARTS
-* Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
-* Understand the technical and scientific goals of the project.
+- Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
+- Understand the technical and scientific goals of the project.
##### GSOC MIDTERM
-* Implement input of generic data in ROOT format using the packages uproot and Dl1-data-handler.
-* Enable input of data in ROOT format from a specific IACT using the packages uproot and Dl1-data-handler.
-* Have all code and documentation in GitHub.
+- Implement input of generic data in ROOT format using the packages uproot and Dl1-data-handler.
+- Enable input of data in ROOT format from a specific IACT using the packages uproot and Dl1-data-handler.
+- Have all code and documentation in GitHub.
##### GSOC FINAL
-* Enable input of data in ROOT format from a given collection of IACTs.
-* Train single_tel classification model on data from a specific IACT.
-* Train cnn_rnn classification model on data from a specific IACT.
-* Have all code, documentation, and plots in GitHub.
+- Enable input of data in ROOT format from a given collection of IACTs.
+- Train single_tel classification model on data from a specific IACT.
+- Train cnn_rnn classification model on data from a specific IACT.
+- Have all code, documentation, and plots in GitHub.
diff --git a/src/content/pages/gsoc/2019/index.md b/src/content/pages/gsoc/2019/index.md
new file mode 100644
index 00000000..55dfb44b
--- /dev/null
+++ b/src/content/pages/gsoc/2019/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2019"
+show_main: false
+season: 2019
+---
diff --git a/_projects/2019/juliaastro/astroimages.md b/src/content/pages/gsoc/2019/juliaastro/astroimages.md
similarity index 65%
rename from _projects/2019/juliaastro/astroimages.md
rename to src/content/pages/gsoc/2019/juliaastro/astroimages.md
index 547404d3..5c2573b0 100644
--- a/_projects/2019/juliaastro/astroimages.md
+++ b/src/content/pages/gsoc/2019/juliaastro/astroimages.md
@@ -2,29 +2,29 @@
name: Visualization of astronomical images in Julia
desc: Expand the capabilities of the AstroImages.jl package
requirements:
- - Familiarity with FITS files
- - Julia
+ - Familiarity with FITS files
+ - Julia
difficulty: medium
issues:
- - https://github.com/JuliaAstro/AstroImages.jl/issues/1
- - https://github.com/JuliaAstro/AstroImages.jl/issues/2
- - https://github.com/JuliaAstro/FITSIO.jl/issues/90
+ - https://github.com/JuliaAstro/AstroImages.jl/issues/1
+ - https://github.com/JuliaAstro/AstroImages.jl/issues/2
+ - https://github.com/JuliaAstro/FITSIO.jl/issues/90
mentors:
- - giordano
- - dpshelio
+ - giordano
+ - dpshelio
initiatives:
- - GSOC
+ - GSOC
tags:
- - julia
+ - julia
collaborating_projects:
- - JuliaAstro
+ - JuliaAstro
---
#### Description
[Julia](http://julialang.org/) is a programming language designed for technical
computing that combines ease-of-use of dynamical languages, like Python, and
-high-performance of statically-compiled languages, like C. Its most notable
+high-performance of statically-compiled languages, like C. Its most notable
feature is [multiple dispatch](https://en.wikipedia.org/wiki/Multiple_dispatch),
which greatly simplifies the definition of complex functions whose behavior
depends on the type of the arguments.
@@ -37,33 +37,33 @@ calculations, time system conversions, and computation of dust extinction laws.
One of the latest packages is
[`AstroImages.jl`](https://github.com/JuliaAstro/AstroImages.jl), which will
allow researchers to visualize astronomical images coming from [FITS
-files](https://en.wikipedia.org/wiki/FITS). This package is now in its infancy
+files](https://en.wikipedia.org/wiki/FITS). This package is now in its infancy
and has very basic features, the goal of this project is to expand it and make
-it more useful. `AstroImages.jl` has not been officially registered yet, thus
+it more useful. `AstroImages.jl` has not been officially registered yet, thus
you will be able to freely make any breaking change.
#### Expected Outcomes
-* Design and implement the user interface
-* Support visualization of multiple extensions (e.g., three extensions combined
+- Design and implement the user interface
+- Support visualization of multiple extensions (e.g., three extensions combined
with RGB)
-* Integrate with WCS info (accessible via
+- Integrate with WCS info (accessible via
[`WCS.jl`](https://github.com/JuliaAstro/WCS.jl))
-* Integrate with common visualization and plotting frameworks in Julia, like
+- Integrate with common visualization and plotting frameworks in Julia, like
[`Images.jl`](https://github.com/JuliaImages/Images.jl),
[`Plots.jl`](https://github.com/JuliaPlots/Plots.jl), and optionally
[`Makie.jl`](https://github.com/JuliaPlots/Makie.jl)
-* Ensure smooth integration with Jupyter notebooks (basic integration is already
+- Ensure smooth integration with Jupyter notebooks (basic integration is already
in place)
-* Write documentation and tests
+- Write documentation and tests
#### Additional resources
-* [Presentation of
+- [Presentation of
`AstroImages.jl`](https://giordano.github.io/blog/2018-03-22-astroimages/)
-* [Preparing Red‐Green‐Blue Images from CCD
+- [Preparing Red‐Green‐Blue Images from CCD
Data](http://dx.doi.org/10.1086/382245)
-* [Making plots with world coordinates in
+- [Making plots with world coordinates in
Astropy](http://docs.astropy.org/en/stable/visualization/wcsaxes/)
-* [Image reprojection (resampling) in
+- [Image reprojection (resampling) in
Python](https://reproject.readthedocs.io/en/stable/)
diff --git a/_projects/2019/poliastro/earth-specific-capabilities.md b/src/content/pages/gsoc/2019/poliastro/earth-specific-capabilities.md
similarity index 54%
rename from _projects/2019/poliastro/earth-specific-capabilities.md
rename to src/content/pages/gsoc/2019/poliastro/earth-specific-capabilities.md
index 5c4ff1e3..936ca3d0 100644
--- a/_projects/2019/poliastro/earth-specific-capabilities.md
+++ b/src/content/pages/gsoc/2019/poliastro/earth-specific-capabilities.md
@@ -2,18 +2,18 @@
name: Earth-specific capabilities
desc: Add more Earth-specific capabilities to poliastro to make it more attractive for non-interplanetary use cases
requirements:
- - Basic notions of orbital mechanics
+ - Basic notions of orbital mechanics
difficulty: easy
mentors:
- - astrojuanlu
- - AunSiro
+ - astrojuanlu
+ - AunSiro
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
+ - python
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -23,21 +23,21 @@ of which are only present in commercial-off-the-shelf alternatives, such as
predefined low-thrust guidance laws, flybys analysis, and more. In fact, the scope of poliastro
explicitly mentions interplanetary applications, and we started there because
-* It is fun
-* There were scripts here and there, but some of them didn't work well for attractors other than the Earth
-* We were too lazy to learn SPICE
+- It is fun
+- There were scripts here and there, but some of them didn't work well for attractors other than the Earth
+- We were too lazy to learn SPICE
However, most potential poliastro users (including commercial companies) are interested in
Earth-bound trajectory analysis. This includes:
-* Launch windows and orbit injection
-* Station-keeping and orbit correction maneuvers
-* Precise propagation using high-order gravitational and atmospheric models
-* Two-Line Element (TLE) usage
-* Orbit determination
-* Observation scheduling
-* Groundtrack plotting
-* And more!
+- Launch windows and orbit injection
+- Station-keeping and orbit correction maneuvers
+- Precise propagation using high-order gravitational and atmospheric models
+- Two-Line Element (TLE) usage
+- Orbit determination
+- Observation scheduling
+- Groundtrack plotting
+- And more!
The goal of the project is open-ended and involves improving poliastro for some or all of the above use cases.
@@ -45,29 +45,27 @@ The goal of the project is open-ended and involves improving poliastro for some
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment
+- Have set up a development environment
##### 1st evaluation
-* TBD
-* Have all code, tests and documentation in GitHub
+- TBD
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* TBD
-* Have all code, tests and documentation in GitHub
+- TBD
+- Have all code, tests and documentation in GitHub
##### Final
-* TBD
-* Have all code, tests and documentation in GitHub
+- TBD
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
-
-
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
diff --git a/_projects/2018/poliastro/export-czml.md b/src/content/pages/gsoc/2019/poliastro/export-czml.md
similarity index 56%
rename from _projects/2018/poliastro/export-czml.md
rename to src/content/pages/gsoc/2019/poliastro/export-czml.md
index e2ea826e..b209dbd2 100644
--- a/_projects/2018/poliastro/export-czml.md
+++ b/src/content/pages/gsoc/2019/poliastro/export-czml.md
@@ -2,22 +2,22 @@
name: Export to CZML
desc: Implement export of Orbit objects to CZML to visualize in Cesium.js
requirements:
- - Familiar with the JSON format
- - Basic experience with JavaScript or TypeScript
+ - Familiar with the JSON format
+ - Basic experience with JavaScript or TypeScript
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/117
- - https://github.com/poliastro/poliastro/issues/287
+ - https://github.com/poliastro/poliastro/issues/117
+ - https://github.com/poliastro/poliastro/issues/287
mentors:
- - astrojuanlu
- - newlawrence
+ - astrojuanlu
+ - AunSiro
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - javascript
+ - python
+ - javascript
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -38,33 +38,33 @@ understand our output.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with the Cesium
+- Have set up a development environment and get familiar with the Cesium
Sandcastle (see "Additional resources")
##### 1st evaluation
-* Have basic export for an orbit around the Earth
-* Have all code, tests and documentation in GitHub
+- Have basic export for an orbit around the Earth
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Have complex export that includes attractors and target bodies, if any
-* Have all code, tests and documentation in GitHub
+- Have complex export that includes attractors and target bodies, if any
+- Have all code, tests and documentation in GitHub
##### Final
-* Have created a Cesium application that understand the necessary metadata
-* Have all code, tests and documentation in GitHub
+- Have created a Cesium application that understand the necessary metadata
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
#### Additional resources
-* [Cesium Sandcastle](https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=CZML.html&label=DataSources)
-* [Sample data](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Apps/SampleData/simple.czml)
+- [Cesium Sandcastle](https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/index.html?src=CZML.html&label=DataSources)
+- [Sample data](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Apps/SampleData/simple.czml)
diff --git a/_projects/2020/poliastro/poliastro-as-a-service.md b/src/content/pages/gsoc/2019/poliastro/poliastro-as-a-service.md
similarity index 61%
rename from _projects/2020/poliastro/poliastro-as-a-service.md
rename to src/content/pages/gsoc/2019/poliastro/poliastro-as-a-service.md
index 127acd6c..0dd09204 100644
--- a/_projects/2020/poliastro/poliastro-as-a-service.md
+++ b/src/content/pages/gsoc/2019/poliastro/poliastro-as-a-service.md
@@ -2,24 +2,24 @@
name: poliastro-as-a-Service
desc: Deploy poliastro in one or more serverless cloud providers
requirements:
- - Basic experience with cloud, serverless
- - Basic experience with Docker
+ - Basic experience with cloud, serverless
+ - Basic experience with Docker
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/168
- - https://github.com/poliastro/poliastro/issues/444
+ - https://github.com/poliastro/poliastro/issues/168
+ - https://github.com/poliastro/poliastro/issues/444
mentors:
- - astrojuanlu
- - jorgepiloto
+ - astrojuanlu
+ - AunSiro
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
- - javascript
- - docker
+ - python
+ - javascript
+ - docker
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -43,29 +43,29 @@ and if time permits create a demo REST API.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with poliastro dependencies and usage of external data
+- Have set up a development environment and get familiar with poliastro dependencies and usage of external data
##### 1st evaluation
-* Identified poliastro heaviest dependencies (probably SciPy) and implemented proper alternatives, warnings and error messages when they are not installed
-* Have all code, tests and documentation in GitHub
+- Identified poliastro heaviest dependencies (probably SciPy) and implemented proper alternatives, warnings and error messages when they are not installed
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Created a Dockerfile for poliastro
-* Deployed poliastro in Amazon Web Services Lambda
-* Have all code, tests and documentation in GitHub
+- Created a Dockerfile for poliastro
+- Deployed poliastro in Amazon Web Services Lambda
+- Have all code, tests and documentation in GitHub
##### Final
-* Deployed poliastro in a second cloud or PaaS
-* Created a demo REST API covering some basic functionality
-* Have all code, tests and documentation in GitHub
+- Deployed poliastro in a second cloud or PaaS
+- Created a demo REST API covering some basic functionality
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
diff --git a/_projects/2019/poliastro/validation-framework.md b/src/content/pages/gsoc/2019/poliastro/validation-framework.md
similarity index 54%
rename from _projects/2019/poliastro/validation-framework.md
rename to src/content/pages/gsoc/2019/poliastro/validation-framework.md
index 31375fa3..67abd9e1 100644
--- a/_projects/2019/poliastro/validation-framework.md
+++ b/src/content/pages/gsoc/2019/poliastro/validation-framework.md
@@ -2,21 +2,21 @@
name: Validation framework
desc: Create a validation framework that compares poliastro with other similar software
requirements:
- - Experience automating processes with Python
- - Basic notions of numerical analysis
+ - Experience automating processes with Python
+ - Basic notions of numerical analysis
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/109
+ - https://github.com/poliastro/poliastro/issues/109
mentors:
- - astrojuanlu
- - AunSiro
+ - astrojuanlu
+ - AunSiro
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
+ - python
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -26,8 +26,8 @@ _Validation is hard._ The current approach in poliastro is to add unit tests tha
However, poliastro is now a mature project and validating against textbook examples is not enough anymore,
for several reasons:
-* It is being used more and more in companies and professional settings, which cannot afford failure
-* It has grown in feature set and can do more complicated things, which are out of the scope of undergraduate textbooks
+- It is being used more and more in companies and professional settings, which cannot afford failure
+- It has grown in feature set and can do more complicated things, which are out of the scope of undergraduate textbooks
One example of this is the tests covering perturbations and low-thrust guidance laws
(see [last year results](https://blog.poliastro.space/2018/08/05/2018-08-05-google-summer-of-code-2018/)
@@ -44,40 +44,39 @@ much further than that.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with either SPICE, GMAT, STK, or all of them
+- Have set up a development environment and get familiar with either SPICE, GMAT, STK, or all of them
##### 1st evaluation
-* Have settled on one of the tools for reference frame validation
-* Have a basic understanding of reference frames
-* Have converted the `Body` rotational elements to proper reference frames
-* Have all code, tests and documentation in GitHub
+- Have settled on one of the tools for reference frame validation
+- Have a basic understanding of reference frames
+- Have converted the `Body` rotational elements to proper reference frames
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Have produced a table similar to [astropy's](http://www.astropy.org/coordinates-benchmark/summary.html) for our planetary reference frames
-* Have all code, tests and documentation in GitHub
+- Have produced a table similar to [astropy's](http://www.astropy.org/coordinates-benchmark/summary.html) for our planetary reference frames
+- Have all code, tests and documentation in GitHub
##### Final
-* Have used a second method to validate the reference frames
-* Have started a conversation in Astropy to integrate our code upstream
-* Have all code, tests and documentation in GitHub
+- Have used a second method to validate the reference frames
+- Have started a conversation in Astropy to integrate our code upstream
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Maintain [poliastro benchmarks](https://blog.poliastro.space/poliastro-benchmarks/)
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Maintain [poliastro benchmarks](https://blog.poliastro.space/poliastro-benchmarks/)
+- Give a talk about the work at some Python event
#### Additional resources
-* [Wiki page on Validation](https://github.com/poliastro/poliastro/wiki/Validation)
-* [SpiceyPy](http://spiceypy.readthedocs.io/) (Python wrappers for SPICE)
-* [GMAT](http://www.gmatcentral.org/)
-* [STK](https://agi.com/products/engineering-tools)
-* [Discussion about ecliptic reference frames in Astropy](https://github.com/astropy/astropy/pull/6508)
-
+- [Wiki page on Validation](https://github.com/poliastro/poliastro/wiki/Validation)
+- [SpiceyPy](http://spiceypy.readthedocs.io/) (Python wrappers for SPICE)
+- [GMAT](http://www.gmatcentral.org/)
+- [STK](https://agi.com/products/engineering-tools)
+- [Discussion about ecliptic reference frames in Astropy](https://github.com/astropy/astropy/pull/6508)
diff --git a/src/content/pages/gsoc/2019/sunpy/featuresevents.md b/src/content/pages/gsoc/2019/sunpy/featuresevents.md
new file mode 100644
index 00000000..a61dfbb5
--- /dev/null
+++ b/src/content/pages/gsoc/2019/sunpy/featuresevents.md
@@ -0,0 +1,74 @@
+---
+name: Feature and Event Objects in SunPy
+desc: Implements a feature/event object in SunPy.
+requirements:
+ - Familiar with methods for creating classes, objects and subclasses.
+difficulty: medium
+issues:
+ - https://github.com/sunpy/sunpy/pull/2759
+ - https://github.com/sunpy/sunpy/issues/1792
+ - https://github.com/sunpy/sunpy/issues/1398
+ - https://github.com/sunpy/sunpy/issues/164
+mentors:
+ - wafels
+ - Cadair
+ - dpshelio
+initiatives:
+ - GSOC
+tags:
+ - Python
+collaborating_projects:
+ - SunPy
+---
+
+#### Description
+
+The Sun displays many different features and events (FEs). These are
+detected and described either automatically by algorithm, or by visual
+inspection by human, or by a combination of both. There are many
+different repositories of these FEs online. SunPy provides access to
+two large FE repositories, the Heliophysics Event Knowledgebase (HEK) and
+the Helio Event Catalogue (HEC).
+
+The aim of this project is to create a SunPy object that normalizes
+input from both the HEK and HEC and creates a SunPy FE object. The
+SunPy FE object should take advantage of existing SunPy capabilities
+such as SunPy spatial co-ordinates and SunPy time. This will make FE
+data much more useful to SunPy users.
+
+The SunPy FE object should interact intuitively with existing SunPy
+objects such as the SunPy maps and timeseries. For example, it should
+be simple for a FE with a spatial extent property to be overplotted
+on SunPy map; similarly, it should be simple for a FE with a temporal
+duration to be overplotted on a SunPy timeseries.
+
+#### Milestones
+
+##### Coding Starts
+
+- Engaged with the community and understand the motivation and
+ challenges of the project.
+
+##### Evaluation 1
+
+- Have understood what a FE is in the context of solar physics
+ research and why their interaction with existing SunPy objects is
+ important.
+- Have evaluated and chosen an approach to the design of a SunPy FE
+ object.
+- Have implemented a basic SunPy FE object.
+
+##### Evaluation 2
+
+- Have worked with your mentors and the community to design a simple
+ and functional API.
+- Have a working prototype of the SunPy FE object that normalizes
+ input from both the HEK and HEC.
+- Have tests for the working prototype.
+
+##### Final
+
+- Have finished implementation, testing and documentation.
+- Have written examples for the gallery of how to use the functionality.
+- Have written developer documentation.
+- Have the Pull Request merged after review and feedback.
diff --git a/_projects/2019/sunpy/helioviewer.md b/src/content/pages/gsoc/2019/sunpy/helioviewer.md
similarity index 58%
rename from _projects/2019/sunpy/helioviewer.md
rename to src/content/pages/gsoc/2019/sunpy/helioviewer.md
index 53ae2828..733338c8 100644
--- a/_projects/2019/sunpy/helioviewer.md
+++ b/src/content/pages/gsoc/2019/sunpy/helioviewer.md
@@ -2,23 +2,23 @@
name: HelioViewer Python API Wrapper
desc: Creating a full Python wrapper for the Unirest Helioviewer API
requirements:
- - Familiarity with Python
- - Some familiarity with Unirest/HTTP requests (ideally)
+ - Familiarity with Python
+ - Some familiarity with Unirest/HTTP requests (ideally)
difficulty: medium
issues:
- - https://github.com/sunpy/sunpy/issues/2860
- - https://github.com/sunpy/sunpy/issues/2762
- - https://github.com/sunpy/sunpy/issues/2878
+ - https://github.com/sunpy/sunpy/issues/2860
+ - https://github.com/sunpy/sunpy/issues/2762
+ - https://github.com/sunpy/sunpy/issues/2878
mentors:
- - wafels
- - Cadair
- - Helioviewer-Kirill
+ - wafels
+ - Cadair
+ - Helioviewer-Kirill
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
+ - python
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -26,7 +26,7 @@ collaborating_projects:
This project aims to design and implement a low level Python wrapper around the unirest API provided by the HelioViewer Project. This would create a new affiliated SunPy package (name up for suggestions).
Currently SunPy has a `HelioviewerClient` that implements only a handful of the available API.
-They are `getClosestImage`, `getJP2Image`, `getJP2Header (in an open pull request as of writing)` and `takeScreenshot` from the Helioviewer API and you can see our code [here.](https://github.com/sunpy/sunpy/blob/master/sunpy/net/helioviewer.py)
+They are `getClosestImage`, `getJP2Image`, `getJP2Header (in an open pull request as of writing)` and `takeScreenshot` from the Helioviewer API and you can see our code in [the current SunPy client implementation](https://github.com/sunpy/sunpy/blob/master/sunpy/net/helioviewer.py).
What we want to do is to create a new Python package that will lightly wrap every aspect of the HelioViewer API allowing anyone to create their own helioviewer.org like GUI in Python (this could be part of the project but will depend on the progress). To facilitate this, we will need to remove the current code from SunPy and move it to the new affiliated package.
@@ -34,25 +34,25 @@ What we want to do is to create a new Python package that will lightly wrap ever
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of the project.
-* Have set up a development environment.
-* Helped to setup the new package.
+- Engaged with the community and understand the motivation and challenges of the project.
+- Have set up a development environment.
+- Helped to setup the new package.
##### To be completed by the Phase 1 Evaluation Deadline
-* Have 33% of the API wrapped.
-* Have all code, tests and documentation in GitHub.
+- Have 33% of the API wrapped.
+- Have all code, tests and documentation in GitHub.
##### To be completed by the Phase 2 Evaluation Deadline
-* Have 66% of the API wrapped.
-* Have all code, tests and documentation in GitHub.
+- Have 66% of the API wrapped.
+- Have all code, tests and documentation in GitHub.
##### To be completed by the end of GSoC
-* All of the API is wrapped within the package.
-* Have all code, tests and documentation in GitHub.
+- All of the API is wrapped within the package.
+- Have all code, tests and documentation in GitHub.
##### Additional Aims (time permitting)
-* Start on a GUI-like interface for the new package, if time permits.
+- Start on a GUI-like interface for the new package, if time permits.
diff --git a/_projects/2019/sunpy/irispy_response.md b/src/content/pages/gsoc/2019/sunpy/irispy_response.md
similarity index 59%
rename from _projects/2019/sunpy/irispy_response.md
rename to src/content/pages/gsoc/2019/sunpy/irispy_response.md
index 64d25ccc..805c5482 100644
--- a/_projects/2019/sunpy/irispy_response.md
+++ b/src/content/pages/gsoc/2019/sunpy/irispy_response.md
@@ -3,25 +3,25 @@ name: Add Time-dependent Instrument Response Function to IRISpy
desc: Enable IRISpy users to derive the relationship between instrument and physical intensity unitsbased in the time at which observations were taken.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Python
+ # Student requirements:
+ - Python
difficulty: beginner
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/irispy/issues/27
- - https://github.com/sunpy/irispy/pull/102
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/irispy/issues/27
+ - https://github.com/sunpy/irispy/pull/102
mentors:
-# First person in contact; mentors may change before project starts.
- - DanRyanIrish
- - asainz-solarphysics
+ # First person in contact; mentors may change before project starts.
+ - DanRyanIrish
+ - asainz-solarphysics
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
+ # Different technologies needed
+ - python
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - SunPy
+ # suborganization(s) to which this project belongs.
+ - SunPy
---
#### Description
@@ -30,31 +30,31 @@ The Interface Region Imaging Spectrograph (IRIS) is a NASA Small Explorer satell
to make spectroscopic and imaging observations of the solar chromosphere and transition region.
An important tool in interpreting these observations is the instrument response function which
expresses the relationship between the physical intensity of light entering the instrument and
-the data number (DN) recorded by the CCD detectors. The response function was carefully measured
+the data number (DN) recorded by the CCD detectors. The response function was carefully measured
by the IRIS team before launch and this is currently available to IRISpy users for their analysis.
-However, due to time-dependent factors like degradation, it is known that the response function
-evolves with time in orbit. For this reason the IRIS team has developed a fitting algorithm based on
-calibration flights that predicts the response function as a function of time. A direct translation
+However, due to time-dependent factors like degradation, it is known that the response function
+evolves with time in orbit. For this reason the IRIS team has developed a fitting algorithm based on
+calibration flights that predicts the response function as a function of time. A direct translation
of this algorithm from its original language, IDL (Interactive Data Langauage), into Python has already
been performed but requires more work before it can be merged into IRISpy.
In this project, the following tasks must be performed:
-* The time-dependent instrument function response code must be rewritten to be more efficient and Python-friendly;
-* Formal benchmarking between the results it produces and those found using the original IDL code must be performed;
-* Tests for the Python version must be written;
-* This software must be incoporated into methods and functions in IRISpy that depend on the instrument response function.
+
+- The time-dependent instrument function response code must be rewritten to be more efficient and Python-friendly;
+- Formal benchmarking between the results it produces and those found using the original IDL code must be performed;
+- Tests for the Python version must be written;
+- This software must be incoporated into methods and functions in IRISpy that depend on the instrument response function.
These new feaures will give scientists far greater power and abilty to perform IRIS data analysis in Python
and make new discoveries regarding the energetics and dynamics of the solar chromosphere and transition region.
#### Expected Outcomes
-* A function for deriving the time-dependent IRIS reponse function.
-* Benchmarking and unit tests so this new software can be reliably maintained.
-* Updated intensity conversion methods between intrument and physical units that correct for
-the time observations were taken.
-
+- A function for deriving the time-dependent IRIS reponse function.
+- Benchmarking and unit tests so this new software can be reliably maintained.
+- Updated intensity conversion methods between intrument and physical units that correct for
+ the time observations were taken.
#### Milestones (if any)
diff --git a/_projects/2019/sunpy/mag_field.md b/src/content/pages/gsoc/2019/sunpy/mag_field.md
similarity index 67%
rename from _projects/2019/sunpy/mag_field.md
rename to src/content/pages/gsoc/2019/sunpy/mag_field.md
index b8f6eb0a..8d696310 100644
--- a/_projects/2019/sunpy/mag_field.md
+++ b/src/content/pages/gsoc/2019/sunpy/mag_field.md
@@ -2,25 +2,25 @@
name: Expand the scope of solarbextrapolation.
desc: Add more numerical models and generalize magnetic field extrapolation to spherical coordinates.
requirements:
- - Knowledge of vector calculus and differential equations
- - Familiar with numerical methods
- - Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
+ - Knowledge of vector calculus and differential equations
+ - Familiar with numerical methods
+ - Some familiarity with electromagnetism, MHD, potential/force-free magnetic fields (optional)
difficulty: intermediate
issues:
- - https://groups.google.com/forum/#!topic/sunpy/ZLu_HoX_lbc
- - https://github.com/sunpy/solarbextrapolation/issues/12
+ - https://groups.google.com/forum/#!topic/sunpy/ZLu_HoX_lbc
+ - https://github.com/sunpy/solarbextrapolation/issues/12
mentors:
- - Alex-Ian-Hamilton
- - Cadair
+ - Alex-Ian-Hamilton
+ - Cadair
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
- - cython
- - numpy
+ - python
+ - cython
+ - numpy
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -41,28 +41,28 @@ Though this idea is for SOCIS, [same GSOC rules apply](https://github.com/sunpy/
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of the project.
-* Have set up a development environment.
-* Some understanding of what `solarbextrapolation` does and how.
+- Engaged with the community and understand the motivation and challenges of the project.
+- Have set up a development environment.
+- Some understanding of what `solarbextrapolation` does and how.
##### To be completed by the Phase 1 Evaluation Deadline
-* Add PFSS modelling to the package.
-* Have all code, tests and documentation in GitHub.
+- Add PFSS modelling to the package.
+- Have all code, tests and documentation in GitHub.
##### To be completed by the Phase 2 Evaluation Deadline
-* Develop a coordinate-aware 3D Map class
-* Have all code, tests and documentation in GitHub.
+- Develop a coordinate-aware 3D Map class
+- Have all code, tests and documentation in GitHub.
##### To be completed by the end of GSoC
-* Use 3D Map class for global field extrapolations
-* Have all code, tests and documentation in GitHub.
-* Improvements to the documentation and examples
+- Use 3D Map class for global field extrapolations
+- Have all code, tests and documentation in GitHub.
+- Improvements to the documentation and examples
##### Additional Aims (time permitting)
-* Performance improvements
-* Better visualization methods
-* Addition of more advanced extrapolators, e.g. non-linear force-free field
+- Performance improvements
+- Better visualization methods
+- Addition of more advanced extrapolators, e.g. non-linear force-free field
diff --git a/_projects/2019/sunpy/ndcube_ape14.md b/src/content/pages/gsoc/2019/sunpy/ndcube_ape14.md
similarity index 56%
rename from _projects/2019/sunpy/ndcube_ape14.md
rename to src/content/pages/gsoc/2019/sunpy/ndcube_ape14.md
index 499ca658..5e36ed6d 100644
--- a/_projects/2019/sunpy/ndcube_ape14.md
+++ b/src/content/pages/gsoc/2019/sunpy/ndcube_ape14.md
@@ -3,31 +3,31 @@ name: Incorporate Powerful New WCS API into ndcube
desc: Incorporating the AstroPy APE 14 API into ndcube.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Python
+ # Student requirements:
+ - Python
difficulty: intermediate
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/ndcube/projects/1
- - https://zenodo.org/record/1188875#.XBE3S1JRcWo
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/ndcube/projects/1
+ - https://zenodo.org/record/1188875#.XBE3S1JRcWo
mentors:
-# First person in contact; mentors may change before project starts.
- - DanRyanIrish
- - Cadair
+ # First person in contact; mentors may change before project starts.
+ - DanRyanIrish
+ - Cadair
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
+ # Different technologies needed
+ - python
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - SunPy
+ # suborganization(s) to which this project belongs.
+ - SunPy
---
#### Description
ndcube is a SunPy-affiliated package for generalized handling,
-manipulating and visualizing N-dimensional astronomical data. The
+manipulating and visualizing N-dimensional astronomical data. The
translations between the array indices and the real world coordinates
is described by the FITS-standard World Coordinate System (FITS-WCS).
However, other WCS frameworks exist such as generalized WCS (gWCS)
@@ -36,24 +36,23 @@ JWST.
In order to support both FITS-WCS and gWCS and hence support more
future and current missions, this project aims to convert the ndcube
-package to a common WCS API. The new API has already been outlined by
+package to a common WCS API. The new API has already been outlined by
astropy's [APE 14](https://zenodo.org/record/1188875#.XBE3S1JRcWo). Implementing support
for APE 14 will enable ndcube to use FITS-WCS and gWCS agnostically
-and hence increase the power and scope of the ndcube package. With
+and hence increase the power and scope of the ndcube package. With
this new feature ndcube will become better placed to serve a wider
array of n-dimensional data analysis needs from multiple astronomical
communities.
#### Expected Outcomes
-* Replace usage in NDCube of `.wcs`, `.pixel_to_world` and `.world_to_pixel`
-methods with APE 14 API.
-* Replace implementation `NDCube.world_axis_physical_types` with that
-of APE 14
-* Generalize slicing of the `NDCube.wcs` attribute so that it works
-for both FITS-WCS and gWCS.
-* Reimplement the ndcube visualization mixins to use APE 14.
-
+- Replace usage in NDCube of `.wcs`, `.pixel_to_world` and `.world_to_pixel`
+ methods with APE 14 API.
+- Replace implementation `NDCube.world_axis_physical_types` with that
+ of APE 14
+- Generalize slicing of the `NDCube.wcs` attribute so that it works
+ for both FITS-WCS and gWCS.
+- Reimplement the ndcube visualization mixins to use APE 14.
#### Milestones (if any)
diff --git a/_projects/2019/sunpy/remote_data.md b/src/content/pages/gsoc/2019/sunpy/remote_data.md
similarity index 62%
rename from _projects/2019/sunpy/remote_data.md
rename to src/content/pages/gsoc/2019/sunpy/remote_data.md
index 92fea3cb..878f8b6c 100644
--- a/_projects/2019/sunpy/remote_data.md
+++ b/src/content/pages/gsoc/2019/sunpy/remote_data.md
@@ -2,21 +2,21 @@
name: Remote Data in SunPy
desc: Implement support for versioned, validated remote data handling in SunPy.
requirements:
- - Familiar with HTTP client libraries.
- - Familiar with checksumming and caches.
+ - Familiar with HTTP client libraries.
+ - Familiar with checksumming and caches.
difficulty: low
issues:
- - https://github.com/sunpy/sunpy/issues/1939
- - https://github.com/sunpy/sunpy/issues/1897
+ - https://github.com/sunpy/sunpy/issues/1939
+ - https://github.com/sunpy/sunpy/issues/1897
mentors:
- - Cadair
- - dpshelio
+ - Cadair
+ - dpshelio
initiatives:
- - GSOC
+ - GSOC
tags:
- - Python
+ - Python
collaborating_projects:
- - SunPy
+ - SunPy
---
#### Description
@@ -39,22 +39,22 @@ See [issue #1939](https://github.com/sunpy/sunpy/issues/1939) for more details.
##### Coding Starts
-* Engaged with the community and understand the motivation and challenges of the project.
-* Have set up a development environment.
+- Engaged with the community and understand the motivation and challenges of the project.
+- Have set up a development environment.
##### To be completed by the Phase 1 Evaluation Deadline
-* Have evaluated and chosen the best approach for storing a local cache of data.
-* Have implemented a basic cache and download system, including tests and documentation.
+- Have evaluated and chosen the best approach for storing a local cache of data.
+- Have implemented a basic cache and download system, including tests and documentation.
##### To be completed by the Phase 2 Evaluation Deadline
-* Have worked with your mentors and the community to design a simple and functional API.
-* Have a working prototype of this API, including tests.
+- Have worked with your mentors and the community to design a simple and functional API.
+- Have a working prototype of this API, including tests.
##### To be completed by the end of GSoC
-* Have finished implementation, testing and documentation.
-* Have written examples for the gallery of how to use the functionality.
-* Have written developer documentation.
-* Have the Pull Request merged after review and feedback.
+- Have finished implementation, testing and documentation.
+- Have written examples for the gallery of how to use the functionality.
+- Have written developer documentation.
+- Have the Pull Request merged after review and feedback.
diff --git a/_projects/2019/sunpy/sunkit_image.md b/src/content/pages/gsoc/2019/sunpy/sunkit_image.md
similarity index 53%
rename from _projects/2019/sunpy/sunkit_image.md
rename to src/content/pages/gsoc/2019/sunpy/sunkit_image.md
index 2e2cc07d..81da82db 100644
--- a/_projects/2019/sunpy/sunkit_image.md
+++ b/src/content/pages/gsoc/2019/sunpy/sunkit_image.md
@@ -2,30 +2,30 @@
name: Develop sunkit-image
desc: Add features to a new package for solar image analysis.
requirements:
- - Good understanding of Python.
- - Some understanding of mathematics.
- - Enthusiasm to learn image processing.
+ - Good understanding of Python.
+ - Some understanding of mathematics.
+ - Enthusiasm to learn image processing.
difficulty: medium
issues:
- - https://github.com/sunpy/sunkit-image/issues/1
- - https://github.com/sunpy/sunkit-image/issues/3
- - https://github.com/sunpy/sunkit-image/issues/5
- - https://github.com/sunpy/sunkit-image/issues/6
- - https://github.com/sunpy/sunkit-image/issues/7
- - https://github.com/sunpy/sunkit-image/issues/9
- - https://github.com/sunpy/sunkit-image/issues/10
- - https://github.com/sunpy/sunkit-image/issues/13
+ - https://github.com/sunpy/sunkit-image/issues/1
+ - https://github.com/sunpy/sunkit-image/issues/3
+ - https://github.com/sunpy/sunkit-image/issues/5
+ - https://github.com/sunpy/sunkit-image/issues/6
+ - https://github.com/sunpy/sunkit-image/issues/7
+ - https://github.com/sunpy/sunkit-image/issues/9
+ - https://github.com/sunpy/sunkit-image/issues/10
+ - https://github.com/sunpy/sunkit-image/issues/13
mentors:
- - nabobalis
- - wafels
+ - nabobalis
+ - wafels
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - numpy
- - cython
+ - python
+ - numpy
+ - cython
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -45,29 +45,29 @@ This project should achieve most or all of the following goals (roughly in this
There are more complex features we would like but will only be looked at once the previous features have been implemented.
-5. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
-6. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
-7. Implement image re-sampling as described [here](https://link.springer.com/content/pdf/10.1023/B:SOLA.0000021743.24248.b0.pdf) through updating [this pull request](https://github.com/astropy/reproject/pull/52) to the Astropy [image resampling](https://reproject.readthedocs.io/en/stable/) repository.
+1. Refactor and write a Python wrapper for [FLCT](https://arxiv.org/abs/0712.4289) [code](http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html).
+2. Implement image alignment using feature detection and tracking. [Example](http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_brief.html)
+3. Implement image re-sampling as described in [this resampling paper](https://link.springer.com/content/pdf/10.1023/B:SOLA.0000021743.24248.b0.pdf) through updating [this pull request](https://github.com/astropy/reproject/pull/52) to the Astropy [image resampling](https://reproject.readthedocs.io/en/stable/) repository.
#### Milestones
##### Coding starts
-* Have familiarized yourself with the algorithms.
-* Have set up a development environment.
-* Understand of what is currently in `sunkit-image`.
+- Have familiarized yourself with the algorithms.
+- Have set up a development environment.
+- Understand of what is currently in `sunkit-image`.
##### To be completed by the Phase 1 Evaluation Deadline
-* Have implemented, tested and documented the NRGF code.
-* Have implemented, tested and documented the MGN code.
+- Have implemented, tested and documented the NRGF code.
+- Have implemented, tested and documented the MGN code.
##### To be completed by the Phase 2 Evaluation Deadline
-* Have successfully merged the NRGF and MGN code.
-* Have implemented OCCULT-2.
+- Have successfully merged the NRGF and MGN code.
+- Have implemented OCCULT-2.
##### To be completed by the end of GSoC
-* Have implemented, tested and documented soft morphological filtering code.
-* Have tested, documented and merged the OCCULT-2 code.
+- Have implemented, tested and documented soft morphological filtering code.
+- Have tested, documented and merged the OCCULT-2 code.
diff --git a/_projects/2019/sunpy/sunspotter.md b/src/content/pages/gsoc/2019/sunpy/sunspotter.md
similarity index 68%
rename from _projects/2019/sunpy/sunspotter.md
rename to src/content/pages/gsoc/2019/sunpy/sunspotter.md
index 6d102c0c..27556af2 100644
--- a/_projects/2019/sunpy/sunspotter.md
+++ b/src/content/pages/gsoc/2019/sunpy/sunspotter.md
@@ -2,21 +2,21 @@
name: Space Weather forecasting using machine learning
desc: Create a model to forecast solar flare events of new solar active regions images.
requirements:
- - Familiar with methods for creating classes, objects and subclasses.
- - Confident with machine learning methods.
+ - Familiar with methods for creating classes, objects and subclasses.
+ - Confident with machine learning methods.
difficulty: medium
issues:
mentors:
- - dpshelio
- - drsophiemurray
- - samaloney
- - mbobra
+ - dpshelio
+ - drsophiemurray
+ - samaloney
+ - mbobra
initiatives:
- - SOCIS
+ - SOCIS
tags:
- - Python
+ - Python
collaborating_projects:
- - SunPy
+ - SunPy
---
#### Description
@@ -45,33 +45,32 @@ Though this idea is for SOCIS, [same GSOC rules apply](https://github.com/sunpy/
##### 1st Month
-* Familiarisation with the dataset. Read and visualise the different type of
+- Familiarisation with the dataset. Read and visualise the different type of
data (images, classifications, …)
-* Have evaluated and chosen an approach to the design of a SunPy search events
+- Have evaluated and chosen an approach to the design of a SunPy search events
object based on the images using [HEK or
HELIO](https://docs.sunpy.org/en/latest/guide/acquiring_data/hek.html).
-* Implementation of a basic machine learning model to understand the steps
+- Implementation of a basic machine learning model to understand the steps
needed for this problem
-* Write up notebook for the sunpy gallery that exemplifies an analysis of this
+- Write up notebook for the sunpy gallery that exemplifies an analysis of this
dataset
##### 2nd Month
-* Experiment with different machine learning methods to find the best model.
-* Write up as blog posts the different attempts tried.
+- Experiment with different machine learning methods to find the best model.
+- Write up as blog posts the different attempts tried.
##### 3rd Month
-* Check the accuracy of the model with SDO/HMI images from HEK
-* Create notebook for the sunpy gallery explaining how to use the model
+- Check the accuracy of the model with SDO/HMI images from HEK
+- Create notebook for the sunpy gallery explaining how to use the model
#### Resources
-* [Predicting Coronal Mass Ejections Using Machine Learning Methods](
-https://doi.org/10.3847/0004-637X/821/2/127)
-* [Sunspotter: Using Citizen Science to Determine the Complexity of
+- [Predicting Coronal Mass Ejections Using Machine Learning Methods](https://doi.org/10.3847/0004-637X/821/2/127)
+- [Sunspotter: Using Citizen Science to Determine the Complexity of
Sunspots](https://doi.org/10.6084/m9.figshare.1050569.v1)
-* [Machine Learning, Statistics, and Data Mining for
+- [Machine Learning, Statistics, and Data Mining for
Heliophysics](https://helioml.github.io/HelioML/title.html)
-* [A Comparison of Flare Forecasting Methods. I. Results from the "All-Clear"
+- [A Comparison of Flare Forecasting Methods. I. Results from the "All-Clear"
Workshop](https://doi.org/10.3847/0004-637X/829/2/89)
diff --git a/_projects/2020/astronomy-commons/spark-jupyter-widget.md b/src/content/pages/gsoc/2020/astronomy-commons/spark-jupyter-widget.md
similarity index 67%
rename from _projects/2020/astronomy-commons/spark-jupyter-widget.md
rename to src/content/pages/gsoc/2020/astronomy-commons/spark-jupyter-widget.md
index fb5d8fa5..7d562903 100644
--- a/_projects/2020/astronomy-commons/spark-jupyter-widget.md
+++ b/src/content/pages/gsoc/2020/astronomy-commons/spark-jupyter-widget.md
@@ -2,22 +2,22 @@
name: Jupyter Widgets for Spark
desc: Create Jupyter notebook extensions and lab widgets to interface with Apache Spark clusters
requirements:
- - Python
- - JavaScript
+ - Python
+ - JavaScript
difficulty: medium
mentors:
- - stevenstetzler
- - mjuric
+ - stevenstetzler
+ - mjuric
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - javascript
- - jupyter
- - spark
- - UI / UX
+ - python
+ - javascript
+ - jupyter
+ - spark
+ - UI / UX
collaborating_projects:
- - astronomy-commons
+ - astronomy-commons
---
#### Description
@@ -28,19 +28,19 @@ Within the Astronomy Data Commons group, we use Apache Spark for distributed com
##### GSOC CODING STARTS
-* Work with users in the Astronomy Commons community to understand User Interface and User Experience constraints for this project
-* Investigate how Jupyter notebooks and the Jupyter lab system work, if required
-* Obtain access to local and remote computing resources and development environments as needed
+- Work with users in the Astronomy Commons community to understand User Interface and User Experience constraints for this project
+- Investigate how Jupyter notebooks and the Jupyter lab system work, if required
+- Obtain access to local and remote computing resources and development environments as needed
##### GSOC MIDTERM
-* A sketch interface is made of the final product that incorporates feedback from community and guidance from mentors
-* Progress has been made toward a working prototype
-* The working prototype interface contains several browser element and the layout resembles the final interface
-* The working prototype back-end links at least one interaction with a browser element to the Spark API
+- A sketch interface is made of the final product that incorporates feedback from community and guidance from mentors
+- Progress has been made toward a working prototype
+- The working prototype interface contains several browser element and the layout resembles the final interface
+- The working prototype back-end links at least one interaction with a browser element to the Spark API
##### GSOC FINAL
-* A user is able to launch and connect to a local Spark cluster using just browser interactions
-* A user is able to launch and connect to a remote Spark cluster using just browser interactions
-* Code is documented and exists on a GitHub repository under the Astronomy Data Commons organization
+- A user is able to launch and connect to a local Spark cluster using just browser interactions
+- A user is able to launch and connect to a remote Spark cluster using just browser interactions
+- Code is documented and exists on a GitHub repository under the Astronomy Data Commons organization
diff --git a/_projects/2020/ctlearn/rootinput.md b/src/content/pages/gsoc/2020/ctlearn/rootinput.md
similarity index 63%
rename from _projects/2020/ctlearn/rootinput.md
rename to src/content/pages/gsoc/2020/ctlearn/rootinput.md
index 2fcc1f6e..df325333 100644
--- a/_projects/2020/ctlearn/rootinput.md
+++ b/src/content/pages/gsoc/2020/ctlearn/rootinput.md
@@ -1,28 +1,28 @@
---
name: ROOT input
-desc: Enable input of data in ROOT format from current-generation imaging atmospheric Cherenkov telescopes
+desc: Enable input of data in ROOT format from current-generation imaging atmospheric Cherenkov telescopes
# add a short one line description of your project
requirements:
-# Student requirements
- - Python
- - Basic familiarity with neural networks
+ # Student requirements
+ - Python
+ - Basic familiarity with neural networks
difficulty: medium
mentors:
-# First person in contact; mentors may change before project starts.
- - nietootein
- - TjarkMiener
- - aribrill
+ # First person in contact; mentors may change before project starts.
+ - nietootein
+ - TjarkMiener
+ - aribrill
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - tensorflow
- - uproot
- - dl1-data-handler
+ # Different technologies needed
+ - python
+ - tensorflow
+ - uproot
+ - dl1-data-handler
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - ctlearn
+ # suborganization(s) to which this project belongs.
+ - ctlearn
---
#### Description
@@ -54,18 +54,18 @@ from current-generation IACTs.
##### GSOC CODING STARTS
-* Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
-* Understand the technical and scientific goals of the project.
+- Install CTLearn and train a pre-existing benchmark model to verify that it runs correctly.
+- Understand the technical and scientific goals of the project.
##### GSOC MIDTERM
-* Implement input of generic data in ROOT format using the packages uproot and Dl1-data-handler.
-* Enable input of data in ROOT format from a specific IACT using the packages uproot and Dl1-data-handler.
-* Have all code and documentation in GitHub.
+- Implement input of generic data in ROOT format using the packages uproot and Dl1-data-handler.
+- Enable input of data in ROOT format from a specific IACT using the packages uproot and Dl1-data-handler.
+- Have all code and documentation in GitHub.
##### GSOC FINAL
-* Enable input of data in ROOT format from a given collection of IACTs.
-* Train single_tel classification model on data from a specific IACT.
-* Train cnn_rnn classification model on data from a specific IACT.
-* Have all code, documentation, and plots in GitHub.
+- Enable input of data in ROOT format from a given collection of IACTs.
+- Train single_tel classification model on data from a specific IACT.
+- Train cnn_rnn classification model on data from a specific IACT.
+- Have all code, documentation, and plots in GitHub.
diff --git a/src/content/pages/gsoc/2020/einsteinpy/Null-geodesics-for-Schwarzschild-and-Kerr-Geometries..md b/src/content/pages/gsoc/2020/einsteinpy/Null-geodesics-for-Schwarzschild-and-Kerr-Geometries..md
new file mode 100644
index 00000000..2e9da94f
--- /dev/null
+++ b/src/content/pages/gsoc/2020/einsteinpy/Null-geodesics-for-Schwarzschild-and-Kerr-Geometries..md
@@ -0,0 +1,98 @@
+---
+name: Null geodesics for Schwarzschild and Kerr Geometries
+desc: The project aims at adding functionality of ray-tracing to EinsteinPy
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Knowledge on ODEs, basic mathematics
+ - Some Familiarity with General Relativity, or the will to read about it.
+ - Basic knowledge of differential geometry
+difficulty: medium
+issues:
+ # Related issues (if any) to this project.
+ - https://github.com/einsteinpy/einsteinpy/issues/105
+ - https://github.com/einsteinpy/einsteinpy/issues/106
+ - https://github.com/einsteinpy/einsteinpy/issues/275
+ - https://github.com/einsteinpy/einsteinpy/issues/144
+ - https://github.com/einsteinpy/einsteinpy/issues/145
+mentors:
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - ritzvik
+ - OVSofia
+ - rishi-s8
+initiatives:
+ - GSOC
+ - SOCIS
+tags:
+ # Different technologies needed
+ - python
+ - C++
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - einsteinpy
+---
+
+#### Description
+
+Null-geodesics is the path traced by light rays in 4-D space-time. We aim to calculate null geodesics around non-rotating (Schwarzschild) and rotating (Kerr) massive bodies given the initial conditions.
+
+The project has roughly the following objectives :
+
+- Calculating null trajectories around a rotating/non-rotating black hole.
+- Use those trajectories to raytrace a bundle of photon rays, to visualize how space-time gets distorted in presence of black holes.
+- Calculate redshifts in photon rays due to space-time curvature.
+- Visualization of Keplerian disc/shell in around it.
+- In short, we aim to replicate one of the few papers available with proper coding paradigms like OOPs, good documentation and unit tests.
+- If required due to performance issues, python wrappers over native C/C++ have to be written.
+
+This project also aims at fixing the problem of natural units introduced due to the research papers and books and to give native support to MKS units.
+
+##### Papers we intend to replicate
+
+- Odyssey:
+- YNOGK:
+
+##### Links to other relevant papers
+
+-
+-
+-
+
+#### Milestones (if any)
+
+##### Coding starts
+
+- Engaged with the community and understand the motivation and challenges of
+ the project.
+- Have set up a development environment and get familiar with einsteinpy dependencies.
+- Have read relevant literature/codes required for the project.
+
+##### 1st evaluation
+
+- Null geodesic in Kerr space-time
+- Null geodesic in Schwarzschild space-time (It can be implemented by creating a class inheriting from Kerr null geodesics and setting a=0. However, it would lead to unnecessary calculation and therefore, seperate Schwarzschild-Null class is necessary.)
+- If possible, basic raytracing using the newly created classes.
+- Have all code, tests and documentation in GitHub.
+
+##### 2nd evaluation
+
+- Plotting class for both Kerr and Schwarzschild null geodesics.
+- Improvement in raytracing, along with simulation of a photon sheet around a black hole.
+- Calculation of redshifts along the null trajectory.
+- Have all code, tests and documentation in GitHub.
+
+##### Final
+
+- Good-enough implementation of any of the relavent papers.
+- Complete any chores left out during the 1st and 2nd phase.
+- Fix the Natural Units Problem in Kerr-Newman time-like geodesics.
+- Fix the Natural Units Problem in Hypersurface Module.
+- Have all code, tests and documentation in GitHub.
+
+#### Secondary goals
+
+- Fix any bugs that might appear regarding visualization, symbolic module and so forth.
+- Review pull requests from other einsteinpy contributors, including the mentor.
+- Give a talk about the work at some Python event.
+- EinsteinPy is nothing without its community. Therefore, getting integrated deeply within the community and oversee future development of EinsteinPy.
diff --git a/_projects/2020/einsteinpy/Performance-Improvements-in-EinsteinPy.md b/src/content/pages/gsoc/2020/einsteinpy/Performance-Improvements-in-EinsteinPy.md
similarity index 60%
rename from _projects/2020/einsteinpy/Performance-Improvements-in-EinsteinPy.md
rename to src/content/pages/gsoc/2020/einsteinpy/Performance-Improvements-in-EinsteinPy.md
index f8fde1c4..d7f065d4 100644
--- a/_projects/2020/einsteinpy/Performance-Improvements-in-EinsteinPy.md
+++ b/src/content/pages/gsoc/2020/einsteinpy/Performance-Improvements-in-EinsteinPy.md
@@ -3,35 +3,35 @@ name: Performance Improvements in EinsteinPy
desc: The project aims at making EinsteinPy high-performace computation ready.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge on ODEs, basic mathematics
- - Familiarity with multithreading, Rust or C++
- - Some experience with CUDA
+ # Student requirements:
+ - Knowledge on ODEs, basic mathematics
+ - Familiarity with multithreading, Rust or C++
+ - Some experience with CUDA
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/einsteinpy/einsteinpy/issues/316
- - https://github.com/einsteinpy/einsteinpy/issues/233
- - https://github.com/einsteinpy/einsteinpy/issues/223
- - https://github.com/einsteinpy/einsteinpy/issues/164
+ # Related issues (if any) to this project.
+ - https://github.com/einsteinpy/einsteinpy/issues/316
+ - https://github.com/einsteinpy/einsteinpy/issues/233
+ - https://github.com/einsteinpy/einsteinpy/issues/223
+ - https://github.com/einsteinpy/einsteinpy/issues/164
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - shreyasbapat
- - shilpi1958
- - spino17
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - shreyasbapat
+ - shilpi1958
+ - spino17
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
-# Different technologies needed
- - python
- - CUDA
- - Rust
- - C++
+ # Different technologies needed
+ - python
+ - CUDA
+ - Rust
+ - C++
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - einsteinpy
+ # suborganization(s) to which this project belongs.
+ - einsteinpy
---
#### Description
@@ -42,7 +42,7 @@ There are multiple ways of accelerating the codebase. We would like to slowly tr
After profiling is done, we can have two backend type model (like tensorflow). For the low performance codebase too, we will need to replace certain Python snippets with either less complex pyton code snippets (accelerated with numba) wherever possible, or with some sort of compiled fast language (C++ / Rust).
-However the GPU backend is not a hard and fast requirement from this project as per the current state of the codebase. The coordinate conversions in EinsteinPy are not the best in the industry right now. We aim to fix the problem of coordinate conversion. This fix can give a significance boost to the computation speed.
+However the GPU backend is not a hard and fast requirement from this project as per the current state of the codebase. The coordinate conversions in EinsteinPy are not the best in the industry right now. We aim to fix the problem of coordinate conversion. This fix can give a significance boost to the computation speed.
Some modules like, shadow do not scale well. Also there are some theoretical issues which make the whole module slow. We would like to simulate black hole shadows of real sized black holes rather than M=1 Black holes which have no practical significance.
@@ -50,34 +50,32 @@ Some modules like, shadow do not scale well. Also there are some theoretical iss
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with einsteinpy dependencies.
-
+- Have set up a development environment and get familiar with einsteinpy dependencies.
##### 1st evaluation
-* Have done the profiling of the codebase, found the bottlenecks.
-* Fixed the ODE Solver as it is too slow.
-* Fixed the coordinate conversions.
-* Have all code, tests and documentation in GitHub.
+- Have done the profiling of the codebase, found the bottlenecks.
+- Fixed the ODE Solver as it is too slow.
+- Fixed the coordinate conversions.
+- Have all code, tests and documentation in GitHub.
##### 2nd evaluation
-* Work on shadow and hypersurface modules, find the reason why they do not scale well (possibly because of the integrator)
-* Publish the performance comparisons.
-* Have all code, tests and documentation in GitHub.
+- Work on shadow and hypersurface modules, find the reason why they do not scale well (possibly because of the integrator)
+- Publish the performance comparisons.
+- Have all code, tests and documentation in GitHub.
##### Final
-* Complete the Rust/C++ backend for the project and publish it on GitHub.
-* Complete the coordinate conversion issue and add an easy way to introduce new coordinate systems.
-* Have all code, tests and documentation in GitHub.
+- Complete the Rust/C++ backend for the project and publish it on GitHub.
+- Complete the coordinate conversion issue and add an easy way to introduce new coordinate systems.
+- Have all code, tests and documentation in GitHub.
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, symbolic module and so forth
-* Make the code work on GPU too.
-* Review pull requests from other einsteinpy contributors, including the mentor
-* Give a talk about the work at some Python event.
-
+- Fix any bugs that might appear regarding visualization, symbolic module and so forth
+- Make the code work on GPU too.
+- Review pull requests from other einsteinpy contributors, including the mentor
+- Give a talk about the work at some Python event.
diff --git a/src/content/pages/gsoc/2020/index.md b/src/content/pages/gsoc/2020/index.md
new file mode 100644
index 00000000..4427c371
--- /dev/null
+++ b/src/content/pages/gsoc/2020/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2020"
+show_main: false
+season: 2020
+---
diff --git a/_projects/2020/juliaastro/ccd_data_reduction.md b/src/content/pages/gsoc/2020/juliaastro/ccd_data_reduction.md
similarity index 71%
rename from _projects/2020/juliaastro/ccd_data_reduction.md
rename to src/content/pages/gsoc/2020/juliaastro/ccd_data_reduction.md
index c2bcf577..55bff7eb 100644
--- a/_projects/2020/juliaastro/ccd_data_reduction.md
+++ b/src/content/pages/gsoc/2020/juliaastro/ccd_data_reduction.md
@@ -3,29 +3,29 @@ name: CCD Processing Package
desc: Develop a CCD data reduction package in Julia
# add a short one line description of your project
requirements:
-# Student requirements:
- - Basic knowledge of CCD data
- - Familiarity with Julia and Julia packaging
+ # Student requirements:
+ - Basic knowledge of CCD data
+ - Familiarity with Julia and Julia packaging
difficulty: low
issues:
# Related issues (if any) to this project.
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - mileslucas
- - giordano
- - yashrsharma44
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - mileslucas
+ - giordano
+ - yashrsharma44
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - Julia
+ # Different technologies needed
+ - Julia
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - JuliaAstro
+ # suborganization(s) to which this project belongs.
+ - JuliaAstro
---
-For a good background on astronomical data, check out [this paper](https://arxiv.org/abs/1905.13189).
+For a good background on astronomical data, check out [this paper](https://arxiv.org/abs/1905.13189).
#### Description
diff --git a/_projects/2020/poliastro/earth-specific-capabilities.md b/src/content/pages/gsoc/2020/poliastro/earth-specific-capabilities.md
similarity index 54%
rename from _projects/2020/poliastro/earth-specific-capabilities.md
rename to src/content/pages/gsoc/2020/poliastro/earth-specific-capabilities.md
index e213afba..57e29d3b 100644
--- a/_projects/2020/poliastro/earth-specific-capabilities.md
+++ b/src/content/pages/gsoc/2020/poliastro/earth-specific-capabilities.md
@@ -2,18 +2,18 @@
name: Earth-specific capabilities
desc: Add more Earth-specific capabilities to poliastro to make it more attractive for non-interplanetary use cases
requirements:
- - Basic notions of orbital mechanics
+ - Basic notions of orbital mechanics
difficulty: medium
mentors:
- - astrojuanlu
- - jorgepiloto
+ - astrojuanlu
+ - jorgepiloto
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
+ - python
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -23,21 +23,21 @@ of which are only present in commercial-off-the-shelf alternatives, such as
predefined low-thrust guidance laws, flybys analysis, and more. In fact, the scope of poliastro
explicitly mentions interplanetary applications, and we started there because
-* It is fun
-* There were scripts here and there, but some of them didn't work well for attractors other than the Earth
-* We were too lazy to learn SPICE
+- It is fun
+- There were scripts here and there, but some of them didn't work well for attractors other than the Earth
+- We were too lazy to learn SPICE
However, most potential poliastro users (including commercial companies) are interested in
Earth-bound trajectory analysis. This includes:
-* Launch windows and orbit injection
-* Station-keeping and orbit correction maneuvers
-* Precise propagation using high-order gravitational and atmospheric models
-* Two-Line Element (TLE) usage
-* Orbit determination
-* Observation scheduling
-* Groundtrack plotting
-* And more!
+- Launch windows and orbit injection
+- Station-keeping and orbit correction maneuvers
+- Precise propagation using high-order gravitational and atmospheric models
+- Two-Line Element (TLE) usage
+- Orbit determination
+- Observation scheduling
+- Groundtrack plotting
+- And more!
The goal of the project is open-ended and involves improving poliastro for some or all of the above use cases.
@@ -45,27 +45,27 @@ The goal of the project is open-ended and involves improving poliastro for some
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment
+- Have set up a development environment
##### 1st evaluation
-* TBD
-* Have all code, tests and documentation in GitHub
+- TBD
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* TBD
-* Have all code, tests and documentation in GitHub
+- TBD
+- Have all code, tests and documentation in GitHub
##### Final
-* TBD
-* Have all code, tests and documentation in GitHub
+- TBD
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
diff --git a/_projects/2019/poliastro/poliastro-as-a-service.md b/src/content/pages/gsoc/2020/poliastro/poliastro-as-a-service.md
similarity index 61%
rename from _projects/2019/poliastro/poliastro-as-a-service.md
rename to src/content/pages/gsoc/2020/poliastro/poliastro-as-a-service.md
index 874ce5d6..b240abfe 100644
--- a/_projects/2019/poliastro/poliastro-as-a-service.md
+++ b/src/content/pages/gsoc/2020/poliastro/poliastro-as-a-service.md
@@ -2,24 +2,24 @@
name: poliastro-as-a-Service
desc: Deploy poliastro in one or more serverless cloud providers
requirements:
- - Basic experience with cloud, serverless
- - Basic experience with Docker
+ - Basic experience with cloud, serverless
+ - Basic experience with Docker
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/168
- - https://github.com/poliastro/poliastro/issues/444
+ - https://github.com/poliastro/poliastro/issues/168
+ - https://github.com/poliastro/poliastro/issues/444
mentors:
- - astrojuanlu
- - AunSiro
+ - astrojuanlu
+ - jorgepiloto
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
- - javascript
- - docker
+ - python
+ - javascript
+ - docker
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -43,30 +43,29 @@ and if time permits create a demo REST API.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with poliastro dependencies and usage of external data
+- Have set up a development environment and get familiar with poliastro dependencies and usage of external data
##### 1st evaluation
-* Identified poliastro heaviest dependencies (probably SciPy) and implemented proper alternatives, warnings and error messages when they are not installed
-* Have all code, tests and documentation in GitHub
+- Identified poliastro heaviest dependencies (probably SciPy) and implemented proper alternatives, warnings and error messages when they are not installed
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Created a Dockerfile for poliastro
-* Deployed poliastro in Amazon Web Services Lambda
-* Have all code, tests and documentation in GitHub
+- Created a Dockerfile for poliastro
+- Deployed poliastro in Amazon Web Services Lambda
+- Have all code, tests and documentation in GitHub
##### Final
-* Deployed poliastro in a second cloud or PaaS
-* Created a demo REST API covering some basic functionality
-* Have all code, tests and documentation in GitHub
+- Deployed poliastro in a second cloud or PaaS
+- Created a demo REST API covering some basic functionality
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Give a talk about the work at some Python event
-
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Give a talk about the work at some Python event
diff --git a/_projects/2020/poliastro/validation-framework.md b/src/content/pages/gsoc/2020/poliastro/validation-framework.md
similarity index 56%
rename from _projects/2020/poliastro/validation-framework.md
rename to src/content/pages/gsoc/2020/poliastro/validation-framework.md
index cb72d850..2e396c9a 100644
--- a/_projects/2020/poliastro/validation-framework.md
+++ b/src/content/pages/gsoc/2020/poliastro/validation-framework.md
@@ -2,21 +2,21 @@
name: Validation framework
desc: Create a validation framework that compares poliastro with other similar software
requirements:
- - Experience automating processes with Python
- - Basic notions of numerical analysis
+ - Experience automating processes with Python
+ - Basic notions of numerical analysis
difficulty: medium
issues:
- - https://github.com/poliastro/poliastro/issues/109
+ - https://github.com/poliastro/poliastro/issues/109
mentors:
- - astrojuanlu
- - jorgepiloto
+ - astrojuanlu
+ - jorgepiloto
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
- - python
+ - python
collaborating_projects:
- - poliastro
+ - poliastro
---
#### Description
@@ -26,8 +26,8 @@ _Validation is hard._ The current approach in poliastro is to add unit tests tha
However, poliastro is now a mature project and validating against textbook examples is not enough anymore,
for several reasons:
-* It is being used more and more in companies and professional settings, which cannot afford failure
-* It has grown in feature set and can do more complicated things, which are out of the scope of undergraduate textbooks
+- It is being used more and more in companies and professional settings, which cannot afford failure
+- It has grown in feature set and can do more complicated things, which are out of the scope of undergraduate textbooks
One example of this is the tests covering perturbations and low-thrust guidance laws
(see [GSOC 2018 results](https://blog.poliastro.space/2018/08/05/2018-08-05-google-summer-of-code-2018/)
@@ -46,39 +46,39 @@ with a basic structure and a simple test case, but we want to expand it much fur
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of
+- Engaged with the community and understand the motivation and challenges of
the project.
-* Have set up a development environment and get familiar with either SPICE, GMAT, STK, or all of them
+- Have set up a development environment and get familiar with either SPICE, GMAT, STK, or all of them
##### 1st evaluation
-* Have settled on one of the tools for reference frame validation
-* Have a basic understanding of reference frames
-* Have converted the `Body` rotational elements to proper reference frames
-* Have all code, tests and documentation in GitHub
+- Have settled on one of the tools for reference frame validation
+- Have a basic understanding of reference frames
+- Have converted the `Body` rotational elements to proper reference frames
+- Have all code, tests and documentation in GitHub
##### 2nd evaluation
-* Have produced a table similar to [astropy's](http://www.astropy.org/coordinates-benchmark/summary.html) for our planetary reference frames
-* Have all code, tests and documentation in GitHub
+- Have produced a table similar to [astropy's](http://www.astropy.org/coordinates-benchmark/summary.html) for our planetary reference frames
+- Have all code, tests and documentation in GitHub
##### Final
-* Have used a second method to validate the reference frames
-* Have started a conversation in Astropy to integrate our code upstream
-* Have all code, tests and documentation in GitHub
+- Have used a second method to validate the reference frames
+- Have started a conversation in Astropy to integrate our code upstream
+- Have all code, tests and documentation in GitHub
#### Secondary goals
-* Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
-* Review pull requests from other poliastro contributors, including the mentor
-* Maintain [poliastro benchmarks](https://benchmarks.poliastro.space/)
-* Give a talk about the work at some Python event
+- Fix any bugs that might appear regarding visualization, hyperbolic orbits and so forth
+- Review pull requests from other poliastro contributors, including the mentor
+- Maintain [poliastro benchmarks](https://benchmarks.poliastro.space/)
+- Give a talk about the work at some Python event
#### Additional resources
-* [Wiki page on Validation](https://github.com/poliastro/poliastro/wiki/Validation)
-* [SpiceyPy](http://spiceypy.readthedocs.io/) (Python wrappers for SPICE)
-* [GMAT](http://www.gmatcentral.org/)
-* [STK](https://agi.com/products/engineering-tools)
-* [Discussion about ecliptic reference frames in Astropy](https://github.com/astropy/astropy/pull/6508)
+- [Wiki page on Validation](https://github.com/poliastro/poliastro/wiki/Validation)
+- [SpiceyPy](http://spiceypy.readthedocs.io/) (Python wrappers for SPICE)
+- [GMAT](http://www.gmatcentral.org/)
+- [STK](https://agi.com/products/engineering-tools)
+- [Discussion about ecliptic reference frames in Astropy](https://github.com/astropy/astropy/pull/6508)
diff --git a/_projects/2020/radis/accelerate_synthetic_spectra_calculations.md b/src/content/pages/gsoc/2020/radis/accelerate_synthetic_spectra_calculations.md
similarity index 58%
rename from _projects/2020/radis/accelerate_synthetic_spectra_calculations.md
rename to src/content/pages/gsoc/2020/radis/accelerate_synthetic_spectra_calculations.md
index d2e0aef5..2e5fc57c 100644
--- a/_projects/2020/radis/accelerate_synthetic_spectra_calculations.md
+++ b/src/content/pages/gsoc/2020/radis/accelerate_synthetic_spectra_calculations.md
@@ -2,34 +2,35 @@
name: Accelerate Synthetic Spectra Calculations
desc: Implement GPU acceleration and new state-of-the-art methods to compute synthetic emission and absorption spectra
requirements:
- - Basic notions of spectroscopy
- - Some experience with CUDA
+ - Basic notions of spectroscopy
+ - Some experience with CUDA
difficulty: medium
mentors:
-# GitHub handles
- - erwanp
- - dcmvdbekerom
- - minouHub
+ # GitHub handles
+ - erwanp
+ - dcmvdbekerom
+ - minouHub
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - CUDA
+ # Different technologies needed
+ - python
+ - CUDA
collaborating_projects:
- - radis
+ - radis
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/46
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/46
---
#### Description
-The presence and concentration of molecules in a gas can be measured by comparing absorption and emission experimental spectra to synthetic spectra. However, under high-temperature conditions, the synthetic spectra contain dozens of millions of lines. In any line-by-line code the bottleneck is the calculation of the lineshapes, which can require long computational times (up to several minutes).
-
+The presence and concentration of molecules in a gas can be measured by comparing absorption and emission experimental spectra to synthetic spectra. However, under high-temperature conditions, the synthetic spectra contain dozens of millions of lines. In any line-by-line code the bottleneck is the calculation of the lineshapes, which can require long computational times (up to several minutes).
+
The RADIS code was recently developed for the characterization of high-temperature infrared spectra in plasmas and flames. It uses a new approach to quickly calculate lineshapes of synthetic spectra. The latest developments already make it one the fastest spectral codes in the world. The goal of this project is to push further and implement two new techniques to gain another orders of magnitude, by two means:
+
- Implementing GPU acceleration for lineshape calculation (proof-of-concept example has shown we can compute 250 millions lines in 150 ms!)
-- Implementing a new vectorization technique to quickly compute lineshapes in line-of-sight spectra (i.e., a column of heterogeneous gas)
+- Implementing a new vectorization technique to quickly compute lineshapes in line-of-sight spectra (i.e., a column of heterogeneous gas)
This performance would be beneficial for new applications such as exoplanet characterization.
@@ -37,36 +38,32 @@ This performance would be beneficial for new applications such as exoplanet char
##### Coding starts
-* Engage with the community and understand the motivation of spectroscopy users
-* Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
-* Get used with RADIS architecture: review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74#issuecomment-585773087))
-* Learn about the details of the vectorized calculation of lineshapes in line-of-sight spectra.
-
+- Engage with the community and understand the motivation of spectroscopy users
+- Training on emission & absorption spectroscopy
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
+- Get used with RADIS architecture: review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74#issuecomment-585773087))
+- Learn about the details of the vectorized calculation of lineshapes in line-of-sight spectra.
##### 1st evaluation
-* Proof of concept GPU implementation example has been reproduced
-* GPU acceleration is implemented and working on your own Fork for at least one combination of lineshape broadening parameters.
+- Proof of concept GPU implementation example has been reproduced
+- GPU acceleration is implemented and working on your own Fork for at least one combination of lineshape broadening parameters.
##### 2nd evaluation
-* GPU acceleration is implemented in the main project for all combinations of lineshape broadening parameters
-* Have all code, tests and documentation in GitHub.
+- GPU acceleration is implemented in the main project for all combinations of lineshape broadening parameters
+- Have all code, tests and documentation in GitHub.
##### Final
-* GPU acceleration is implemented in the main project and tested on many architectures
-* Write an iPython notebook to document the performance benchmark on [radis-benchmark](https://github.com/radis/radis-benchmark)
-* Have all code, tests and documentation in GitHub.
-* Proof of concept of the vectorized calculation of lineshapes in line-of-sight spectra is implemented
+- GPU acceleration is implemented in the main project and tested on many architectures
+- Write an iPython notebook to document the performance benchmark on [radis-benchmark](https://github.com/radis/radis-benchmark)
+- Have all code, tests and documentation in GitHub.
+- Proof of concept of the vectorized calculation of lineshapes in line-of-sight spectra is implemented
#### Secondary goals
-* Direct line-of-sight spectra technique is implemented in main project
-* Document architecture and developer guide when facing unclear points that may appear.
-* Review pull requests from other RADIS contributors
-* Interface to atmosphere calculations (merge results with project [RADIS Atmosphere Calculation Interface](https://openastronomy.org/gsoc/gsoc2020/#/projects?project=radis_atmosphere_calculation_interface) )
-
-
-
+- Direct line-of-sight spectra technique is implemented in main project
+- Document architecture and developer guide when facing unclear points that may appear.
+- Review pull requests from other RADIS contributors
+- Interface to atmosphere calculations (merge results with project [RADIS Atmosphere Calculation Interface](https://openastronomy.org/gsoc/2020/#/projects?project=radis_atmosphere_calculation_interface) )
diff --git a/src/content/pages/gsoc/2020/radis/radis_atmosphere_calculation_interface.md b/src/content/pages/gsoc/2020/radis/radis_atmosphere_calculation_interface.md
new file mode 100644
index 00000000..d7ed1bde
--- /dev/null
+++ b/src/content/pages/gsoc/2020/radis/radis_atmosphere_calculation_interface.md
@@ -0,0 +1,60 @@
+---
+name: RADIS Atmosphere Calculation Interface
+desc: Adapt a spectroscopy open-source code to characterize exoplanet atmospheres.
+requirements:
+ - Basic notions of spectroscopy
+difficulty: easy
+mentors:
+ # GitHub handles
+ - erwanp
+ - minouHub
+ - dcmvdbekerom
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - python
+ - CUDA
+collaborating_projects:
+ - radis
+issues:
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/74
+---
+
+#### Description
+
+The presence and concentration of molecules in exoplanet atmospheres are measured by comparing absorption and emission spectra to synthetic spectra. However, under high-temperature conditions, the synthetic spectra contain dozens of millions of lines, which require long computational times .
+
+The RADIS code was recently developed for the characterization of plasmas and flames. It uses a new approach to quickly calculate high-temperature infrared spectra. New developments are in progress (see our [other project](https://openastronomy.org/gsoc/2020/#/projects?project=accelerate_synthetic_spectra_calculations) on further accelerating the code), but it is already one of the fastest spectral codes in the world. This performance would be beneficial for exoplanet characterization, and this is the goal of this project: adapt the RADIS code to the calculation of exoplanet atmospheres!
+
+#### Milestones
+
+##### Coding starts
+
+- Engage with the community and understand the motivation of spectroscopy users
+- Training on emission & absorption spectroscopy
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
+- Get used with RADIS architecture: review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74#issuecomment-585773087))
+
+##### 1st evaluation
+
+- Indirect integration of databases from the Exoplanet atmosphere community (ExoMol), using a converter to the HITRAN format supported by RADIS
+- 1st calculation of an atmosphere line-of-sight spectrum with Python hardcoded inputs
+
+##### 2nd evaluation
+
+- Direct integration of ExoMol, and memory optimization
+- Calculation of atmosphere with standard atmosphere input files (mole fractions, temperature profile, pressure profile)
+
+##### Final
+
+- Write an iPython notebook to document the atmosphere module on [radis-examples](https://github.com/radis/radis-examples)
+- Have all code, tests and documentation in GitHub.
+
+#### Secondary goals
+
+- Document architecture and developer guide when facing unclear points that may appear.
+- Review pull requests from other RADIS contributors
+- Optimized calculation of atmospheres in optically thin configurations (merge results with project [Accelerate Synthetic Spectra Calculations](https://openastronomy.org/gsoc/2020/#/projects?project=accelerate_synthetic_spectra_calculations) )
+ )
diff --git a/_projects/2020/stingray/multitaper.md b/src/content/pages/gsoc/2020/stingray/multitaper.md
similarity index 71%
rename from _projects/2020/stingray/multitaper.md
rename to src/content/pages/gsoc/2020/stingray/multitaper.md
index 34811fdc..4fb21662 100644
--- a/_projects/2020/stingray/multitaper.md
+++ b/src/content/pages/gsoc/2020/stingray/multitaper.md
@@ -1,52 +1,50 @@
---
name: Multitaper-Periodograms in Stingray.
-desc: Add a new algorithm for building periodograms to Stingray. The multitaper periodogram is a method that's fairly well-known in signal processing, but virtually unknown in (X-ray) astronomy.
+desc: Add a new algorithm for building periodograms to Stingray. The multitaper periodogram is a method that's fairly well-known in signal processing, but virtually unknown in (X-ray) astronomy.
requirements:
- - Proficiency in Python
- - Knowledge of signal processing and Fourier methods would be ideal
+ - Proficiency in Python
+ - Knowledge of signal processing and Fourier methods would be ideal
difficulty: medium
issues:
- - https://github.com/StingraySoftware/stingray/issues/361
+ - https://github.com/StingraySoftware/stingray/issues/361
mentors:
- - dhuppenkothen
- - matteobachetti
+ - dhuppenkothen
+ - matteobachetti
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - signal processing
- - time series analysis
- - Fourier analysis
- - astronomy
+ - python
+ - signal processing
+ - time series analysis
+ - Fourier analysis
+ - astronomy
collaborating_projects:
- - stingray
+ - stingray
---
#### Description
+
Generating periodograms for astronomical data is the core task of Stingray. Because periodograms are often noisy, several methods to denoise periodograms exist in the literature, among them the multi-taper periodogram
Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy. In this project, the student will add the multi-taper periodogram to the existing code base in order to allow astronomers build periodograms with better noise properties.
-
#### Milestones (if any)
1. Proof-of-concept implementation of the multi-taper algorithm
2. Full implementation of the algorithm in the Stingray framework, including tests and relevant documentation
-
##### Coding starts
-* Understand algorithm and have an overview of the individual components that need to be implemented.
+- Understand algorithm and have an overview of the individual components that need to be implemented.
##### 1st evaluation
-* Proof-of-concept implementation is complete.
+- Proof-of-concept implementation is complete.
##### 2nd evaluation
-* Full implementation is complete
+- Full implementation is complete
##### Final
-* Wrap up connecting the new implementation to existing Stingray classes, finish documentation and associated tutorial in a Jupyter notebook.
-
+- Wrap up connecting the new implementation to existing Stingray classes, finish documentation and associated tutorial in a Jupyter notebook.
diff --git a/_projects/2020/stingray/optimize.md b/src/content/pages/gsoc/2020/stingray/optimize.md
similarity index 71%
rename from _projects/2020/stingray/optimize.md
rename to src/content/pages/gsoc/2020/stingray/optimize.md
index 333d94ce..47650484 100644
--- a/_projects/2020/stingray/optimize.md
+++ b/src/content/pages/gsoc/2020/stingray/optimize.md
@@ -2,26 +2,27 @@
name: A lightning-fast stingray.
desc: Improve how the X-ray spectral timing library Stingray deals with large input datasets
requirements:
- - Familiarity with code optimization
- - Proficiency in Python
+ - Familiarity with code optimization
+ - Proficiency in Python
difficulty: medium
issues:
- - https://github.com/StingraySoftware/stingray/issues/451
+ - https://github.com/StingraySoftware/stingray/issues/451
mentors:
- - matteobachetti
- - dhuppenkothen
+ - matteobachetti
+ - dhuppenkothen
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - memory mapping
- - parallel processing
- - llvm (numba)
+ - python
+ - memory mapping
+ - parallel processing
+ - llvm (numba)
collaborating_projects:
- - stingray
+ - stingray
---
#### Description
+
This project is about making the [Stingray spectral timing library](https://stingray.readthedocs.io) ready for the data coming from high-sensitivity X-ray detectors like NICER (and, in the future, eXTP and/or Strobe-X), or other kinds of high-throughput photon counters (i.e. in the optical).
The student will start by benchmarking the code through simulated data, address a few known bottlenecks of the code (for example, the need for loading full dataset into the RAM), and explore alternative technologies (memory mapping, parallel computing) to speed up the computation and the data retrieval for larger-than-memory datasets.
@@ -35,16 +36,16 @@ The student will start by benchmarking the code through simulated data, address
##### Coding starts
-* Setup benchmarks to test the performance of different parts of the code with larger and larger simulated datasets.
+- Setup benchmarks to test the performance of different parts of the code with larger and larger simulated datasets.
##### 1st evaluation
-* A thorough report on the scalability of the various parts of the library. Draft memory mapping to allow larger-than-memory datasets in the `EventList` and `Lightcurve` classes.
+- A thorough report on the scalability of the various parts of the library. Draft memory mapping to allow larger-than-memory datasets in the `EventList` and `Lightcurve` classes.
##### 2nd evaluation
-* Memory mapping completed and tested. Speed up computation in `AveragedCrossspectrum`.
+- Memory mapping completed and tested. Speed up computation in `AveragedCrossspectrum`.
##### Final
-* Wrap up all optimizations, described in the `restructuredText` documentation and in Jupyter notebooks.
+- Wrap up all optimizations, described in the `restructuredText` documentation and in Jupyter notebooks.
diff --git a/_projects/2020/sunpy/fido.md b/src/content/pages/gsoc/2020/sunpy/fido.md
similarity index 83%
rename from _projects/2020/sunpy/fido.md
rename to src/content/pages/gsoc/2020/sunpy/fido.md
index dd02f03f..39d4768f 100644
--- a/_projects/2020/sunpy/fido.md
+++ b/src/content/pages/gsoc/2020/sunpy/fido.md
@@ -2,30 +2,29 @@
name: Fido
desc: Towards metadata only searches with Fido
requirements:
- - Quite familiar with Python.
+ - Quite familiar with Python.
difficulty: Medium
issues:
-- https://github.com/sunpy/sunpy/pulls?q=is%3Apr+label%3A%22Needs+Adoption%22+is%3Aclosed+label%3Aunidown
-- https://github.com/sunpy/sunpy/issues/3336
-- https://github.com/sunpy/sunpy/issues/3735
-- https://github.com/sunpy/sunpy/issues/3733
-- https://github.com/sunpy/sunpy/issues/3734
-- https://github.com/sunpy/sunpy/issues/2744
-- https://github.com/sunpy/sunpy/issues/2631
+ - https://github.com/sunpy/sunpy/pulls?q=is%3Apr+label%3A%22Needs+Adoption%22+is%3Aclosed+label%3Aunidown
+ - https://github.com/sunpy/sunpy/issues/3336
+ - https://github.com/sunpy/sunpy/issues/3735
+ - https://github.com/sunpy/sunpy/issues/3733
+ - https://github.com/sunpy/sunpy/issues/3734
+ - https://github.com/sunpy/sunpy/issues/2744
+ - https://github.com/sunpy/sunpy/issues/2631
mentors:
- - Cadair
- - nabobalis
+ - Cadair
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
+ - python
collaborating_projects:
- - SunPy
+ - SunPy
---
#### Description
-
SunPy provides a Python interface to many different sources of solar data.
These data are generally of two forms, file based downloads where observations are downloaded as FITS files or other files, and metadata only searches such as event lists or spatial location of features.
Currently in sunpy the file based downloads are all accessible in one single search interface called "Fido", this project would provide the foundations needed to extend Fido to include metadata only searches.
diff --git a/_projects/2020/sunpy/solarglue.md b/src/content/pages/gsoc/2020/sunpy/solarglue.md
similarity index 73%
rename from _projects/2020/sunpy/solarglue.md
rename to src/content/pages/gsoc/2020/sunpy/solarglue.md
index 86eb8b52..7ff88c7d 100644
--- a/_projects/2020/sunpy/solarglue.md
+++ b/src/content/pages/gsoc/2020/sunpy/solarglue.md
@@ -2,23 +2,23 @@
name: glue-solar
desc: Making Glue work for Solar Physics datasets
requirements:
- - Quite familiar with Python.
- - Previous QT or GUI experience would be nice
+ - Quite familiar with Python.
+ - Previous QT or GUI experience would be nice
difficulty: Medium to High
issues:
-- None
+ - None
mentors:
- - Cadair
- - nabobalis
- - astrofrog
+ - Cadair
+ - nabobalis
+ - astrofrog
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - GUI (qtpy)
+ - python
+ - GUI (qtpy)
collaborating_projects:
- - SunPy
- - Glue
+ - SunPy
+ - Glue
---
#### Description
@@ -31,12 +31,13 @@ The objective of this project is to provide a foundation for these types of proj
While a fully featured GUI toolkit for solar data can not be built in one summer, the goal is to provide the technical building blocks, but more importantly to demonstrate, and document, how this framework can be used by instrument teams to build custom solutions for their data.
The sort of features that exist in other interactive exploration tools are:
- - Able to open the files and understand the metadata.
- - Creating movies or PNGs of different frames and wavelengths.
- - Basic slit analysis of images through several dimensions.
- - Basic Doppler and magnetic field support.
- - Re-scaling images.
- - Line profile fitting.
+
+- Able to open the files and understand the metadata.
+- Creating movies or PNGs of different frames and wavelengths.
+- Basic slit analysis of images through several dimensions.
+- Basic Doppler and magnetic field support.
+- Re-scaling images.
+- Line profile fitting.
This project will use [Glue](https://glueviz.org/) **"A python project to link visualizations of scientific datasets across many files."**
Glue is a very powerful and extensible tool which already has support for many solar physics data through use of the WCS and coordinate frames implemented in Astropy and SunPy.
@@ -49,12 +50,11 @@ Previous (and on-going) work for supporting astronomy and solar datasets is occu
The primary development and documentation effort for this project would take place in the glue-solar repository.
-
This project would be considered successful if many of the following goals were achieved (in descending order of priority):
-* Glue-solar is an installable package, with a first official release.
-* Glue-solar is well documented, both for users and future developers, with screenshots and screencasts as appropriate.
-* Glue-solar can load many different complex datasets such as SST cubes, IRIS data, DKIST data as well as AIA, HMI etc.
-* Glue-solar demonstrates how to implement custom data loaders (i.e. for IRIS data).
-* Glue-solar demonstrates how to implement custom linked layouts (i.e. SJI + Raster iris data).
-* Glue-solar includes a custom splash screen with the SunPy logo.
+- Glue-solar is an installable package, with a first official release.
+- Glue-solar is well documented, both for users and future developers, with screenshots and screencasts as appropriate.
+- Glue-solar can load many different complex datasets such as SST cubes, IRIS data, DKIST data as well as AIA, HMI etc.
+- Glue-solar demonstrates how to implement custom data loaders (i.e. for IRIS data).
+- Glue-solar demonstrates how to implement custom linked layouts (i.e. SJI + Raster iris data).
+- Glue-solar includes a custom splash screen with the SunPy logo.
diff --git a/_projects/2020/sunpy/sunspotter.md b/src/content/pages/gsoc/2020/sunpy/sunspotter.md
similarity index 68%
rename from _projects/2020/sunpy/sunspotter.md
rename to src/content/pages/gsoc/2020/sunpy/sunspotter.md
index 0bf6fa8c..47b1b138 100644
--- a/_projects/2020/sunpy/sunspotter.md
+++ b/src/content/pages/gsoc/2020/sunpy/sunspotter.md
@@ -2,22 +2,22 @@
name: Space Weather forecasting using linear algebra
desc: Create a model to forecast solar flare events of new solar active regions images.
requirements:
- - Familiar with methods for creating classes, objects and subclasses.
- - Confident with linear algebra methods.
+ - Familiar with methods for creating classes, objects and subclasses.
+ - Confident with linear algebra methods.
difficulty: medium
issues:
mentors:
- - dpshelio
- - drsophiemurray
- - samaloney
- - mbobra
+ - dpshelio
+ - drsophiemurray
+ - samaloney
+ - mbobra
initiatives:
- - SOCIS
- - GSOC
+ - SOCIS
+ - GSOC
tags:
- - Python
+ - Python
collaborating_projects:
- - SunPy
+ - SunPy
---
#### Description
@@ -46,33 +46,32 @@ Though this idea is for SOCIS, [same GSOC rules apply](https://github.com/sunpy/
##### 1st Month
-* Familiarisation with the dataset. Read and visualise the different type of
+- Familiarisation with the dataset. Read and visualise the different type of
data (images, classifications, …)
-* Have evaluated and chosen an approach to the design of a SunPy search events
+- Have evaluated and chosen an approach to the design of a SunPy search events
object based on the images using [HEK or
HELIO](https://docs.sunpy.org/en/latest/guide/acquiring_data/hek.html).
-* Implementation of a basic linear algebra model to understand the steps
+- Implementation of a basic linear algebra model to understand the steps
needed for this problem
-* Write up notebook for the sunpy gallery that exemplifies an analysis of this
+- Write up notebook for the sunpy gallery that exemplifies an analysis of this
dataset
##### 2nd Month
-* Experiment with different linear algebra methods to find the best model.
-* Write up as blog posts the different attempts tried.
+- Experiment with different linear algebra methods to find the best model.
+- Write up as blog posts the different attempts tried.
##### 3rd Month
-* Check the accuracy of the model with SDO/HMI images from HEK
-* Create notebook for the sunpy gallery explaining how to use the model
+- Check the accuracy of the model with SDO/HMI images from HEK
+- Create notebook for the sunpy gallery explaining how to use the model
#### Resources
-* [Predicting Coronal Mass Ejections Using Machine Learning Methods](
-https://doi.org/10.3847/0004-637X/821/2/127)
-* [Sunspotter: Using Citizen Science to Determine the Complexity of
+- [Predicting Coronal Mass Ejections Using Machine Learning Methods](https://doi.org/10.3847/0004-637X/821/2/127)
+- [Sunspotter: Using Citizen Science to Determine the Complexity of
Sunspots](https://doi.org/10.6084/m9.figshare.1050569.v1)
-* [Machine Learning, Statistics, and Data Mining for
+- [Machine Learning, Statistics, and Data Mining for
Heliophysics](https://helioml.github.io/HelioML/title.html)
-* [A Comparison of Flare Forecasting Methods. I. Results from the "All-Clear"
+- [A Comparison of Flare Forecasting Methods. I. Results from the "All-Clear"
Workshop](https://doi.org/10.3847/0004-637X/829/2/89)
diff --git a/src/content/pages/gsoc/2021/astropy/astropyCDS.md b/src/content/pages/gsoc/2021/astropy/astropyCDS.md
new file mode 100644
index 00000000..0396f60b
--- /dev/null
+++ b/src/content/pages/gsoc/2021/astropy/astropyCDS.md
@@ -0,0 +1,48 @@
+---
+name: Add a CDS-ASCII writer to astropy
+desc: Allow writing an astropy Table to CDS format
+requirements:
+ # Student requirements:
+ - Python
+ - Some familiarity with ASCII files is preferred
+difficulty: low
+issues:
+ # Related issues (if any) to this project.
+ - https://github.com/astropy/astropy/issues/11257
+ - https://github.com/astropy/astropy/issues/11239
+ - https://github.com/astropy/astropy/issues/9291
+mentors:
+ # GitHub handles
+ - hamogu
+ - aaryapatil
+initiatives:
+ - GSOC
+tags:
+ # Different technologies needed
+ - python
+ - astropy core
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - astropy
+---
+
+#### Description
+
+Astropy is a core python package for astronomy that provides several modules for the analysis of observational data. A common problem is storing and retrieving tabular data in standard formats which include metadata to fully describe the contents of a table. One such ASCII format is CDS () that is used for publishing catalogues accompanying papers to astronomical databases like Vizier. Astropy has the capability of reading a CDS file to an astropy Table but not writing a Table to CDS. In this project, the student will create a CDS writer in astropy.io.ascii. A python module from CDS () uses astropy to write CDS files, and the astropy writer can be based on that.
+
+#### Milestones (if any)
+
+##### Coding starts
+
+- Understand the CDS format, and write an example astropy Table to this format using python
+- Get familiar with the astropy.io.ascii framework
+
+##### 1st evaluation
+
+- Add the writer to astropy.io.ascii (PR open and tests pass)
+- Add documentation for the writer
+
+##### Final
+
+- Finish testing and documentation
+- Fix any bugs (if found or reported)
diff --git a/_projects/2021/gnuastro/astrometry.md b/src/content/pages/gsoc/2021/gnuastro/astrometry.md
similarity index 59%
rename from _projects/2021/gnuastro/astrometry.md
rename to src/content/pages/gsoc/2021/gnuastro/astrometry.md
index c61a2f22..47fe7569 100644
--- a/_projects/2021/gnuastro/astrometry.md
+++ b/src/content/pages/gsoc/2021/gnuastro/astrometry.md
@@ -3,31 +3,30 @@ name: Astrometry
desc: Astrometry library in Gnuastro
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knoweledge of C programming language.
+ # Student requirements:
+ - Knoweledge of C programming language.
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://savannah.gnu.org/task/?15747
- - https://savannah.gnu.org/task/?15636
+ # Related issues (if any) to this project.
+ - https://savannah.gnu.org/task/?15747
+ - https://savannah.gnu.org/task/?15636
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - mohammad-akhlaghi
- - sachinkumarsingh092
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - mohammad-akhlaghi
+ - sachinkumarsingh092
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
-# Different technologies needed
- - C
- - Git
+ # Different technologies needed
+ - C
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - Gnuastro
+ # suborganization(s) to which this project belongs.
+ - Gnuastro
---
-
#### Description
Astrometry is a critical component in the processing of astronomical data.
@@ -39,26 +38,26 @@ To get started, check [our checklist](http://savannah.gnu.org/support/?110457#co
#### Milestones (if any)
- * Learning basic concepts of Astrometry and existing functions.
+- Learning basic concepts of Astrometry and existing functions.
- * Fixing bugs in existing components (for example bugs #59324, #58773).
+- Fixing bugs in existing components (for example bugs #59324, #58773).
- * Adding the remaining high-level components to complete astrometry.
+- Adding the remaining high-level components to complete astrometry.
##### Coding starts
-* Actively start fixing/adding some minor bugs/tasks in Gnuastro to get a good feeling of the coding style and logic within Gnuastro (this can be independent of astrometry).
+- Actively start fixing/adding some minor bugs/tasks in Gnuastro to get a good feeling of the coding style and logic within Gnuastro (this can be independent of astrometry).
-* Study the basic concepts of Astrometry and learning/testing the existing low-level features that have already been written.
+- Study the basic concepts of Astrometry and learning/testing the existing low-level features that have already been written.
##### 1st evaluation
-* Fixing bugs in existing components.
+- Fixing bugs in existing components.
##### 2nd evaluation
-* Adding the remaining higher-level functions.
+- Adding the remaining higher-level functions.
##### Final
-* Writing robust tests for the library, using data from several space-based and ground-based imaging surveys.
+- Writing robust tests for the library, using data from several space-based and ground-based imaging surveys.
diff --git a/_projects/2021/gnuastro/python-wrapper.md b/src/content/pages/gsoc/2021/gnuastro/python-wrapper.md
similarity index 62%
rename from _projects/2021/gnuastro/python-wrapper.md
rename to src/content/pages/gsoc/2021/gnuastro/python-wrapper.md
index 6b7ab1c0..a4c9f075 100644
--- a/_projects/2021/gnuastro/python-wrapper.md
+++ b/src/content/pages/gsoc/2021/gnuastro/python-wrapper.md
@@ -3,31 +3,30 @@ name: Gnuastro library in Python
desc: Wrappers over the Gnuastro C library to allow usage in Python.
# add a short one line description of your project
requirements:
-# Student requirements:
- - The Python and Numpy core C library.
- - C programming language.
+ # Student requirements:
+ - The Python and Numpy core C library.
+ - C programming language.
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://savannah.gnu.org/task/?13786
+ # Related issues (if any) to this project.
+ - https://savannah.gnu.org/task/?13786
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - mohammad-akhlaghi
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - mohammad-akhlaghi
initiatives:
- - GSOC
- - SOCIS
+ - GSOC
+ - SOCIS
tags:
-# Different technologies needed
- - Python
- - C
- - Git
+ # Different technologies needed
+ - Python
+ - C
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - Gnuastro
+ # suborganization(s) to which this project belongs.
+ - Gnuastro
---
-
#### Description
Gnuastro is primarily written in C because astronomical datasets are large and thus need to be efficient with few dependencies.
@@ -36,33 +35,33 @@ However, Gnuastro's also has an extensive set of installed, dynamic C/C++ librar
However, many projects today are done in Python, almost excuslively using Numpy for their numerical operations (like data arrays).
Python and Numpy are actually written in C, therefore they have very well-defined interfaces for communicating with installed C libraries.
Gnuastro therefore plans on adding a low-level wrapper infra-structure which will allow easy usage of Gnuastro's powerful libraries in Python.
-Note that this won't involve intermediate wrapper languages SWIG, we will directly link with the core C library of Numpy: https://docs.scipy.org/doc/numpy-1.10.0/reference/c-api.html
+Note that this won't involve intermediate wrapper languages SWIG, we will directly link with the core C library of Numpy:
This will be a wonderful chance to master Python and Scipy/Numpy at a very fundamental level, giving you a great experience to expand what you have learnt afterwards into many other functionalities.
Of course, in the meantime you will also working on many real-world astronomical data and science scenarios using ground-based and space-based data.
To get started, check [our checklist](http://savannah.gnu.org/support/?110457#comment0).
#### Milestones (if any)
- * Mastering the C interface of Numpy and Gnuastro.
+- Mastering the C interface of Numpy and Gnuastro.
- * Writing functions to convert Numpy's core data structure to Gnuastro's core data structure and vice-versa.
+- Writing functions to convert Numpy's core data structure to Gnuastro's core data structure and vice-versa.
- * Build and install the Python components as part of the Gnuastro's build.
+- Build and install the Python components as part of the Gnuastro's build.
##### Coding starts
-* Learning the numpy C interface and writing small test usages on some basic operations (not necessarily involving Gnuastro).
+- Learning the numpy C interface and writing small test usages on some basic operations (not necessarily involving Gnuastro).
-* Fixing small bugs in Gnuastro's library (as an excuse to learn the programming style and usage of Gnuastro's libraries).
+- Fixing small bugs in Gnuastro's library (as an excuse to learn the programming style and usage of Gnuastro's libraries).
##### 1st evaluation
-* Having a working converter between Numpy's data structure and Gnuastro's data structure.
+- Having a working converter between Numpy's data structure and Gnuastro's data structure.
##### 2nd evaluation
-* Adding wrappers to the core lower-level Gnuastro libraries.
+- Adding wrappers to the core lower-level Gnuastro libraries.
##### Final
-* Writing tests and build/install steps of the Python wrappers in Gnuastro's build system.
+- Writing tests and build/install steps of the Python wrappers in Gnuastro's build system.
diff --git a/src/content/pages/gsoc/2021/index.md b/src/content/pages/gsoc/2021/index.md
new file mode 100644
index 00000000..c69b0087
--- /dev/null
+++ b/src/content/pages/gsoc/2021/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2021"
+show_main: false
+season: 2021
+---
diff --git a/_projects/2021/juliaastro/NOVAS.md b/src/content/pages/gsoc/2021/juliaastro/NOVAS.md
similarity index 58%
rename from _projects/2021/juliaastro/NOVAS.md
rename to src/content/pages/gsoc/2021/juliaastro/NOVAS.md
index aa74d2b4..7734c1be 100644
--- a/_projects/2021/juliaastro/NOVAS.md
+++ b/src/content/pages/gsoc/2021/juliaastro/NOVAS.md
@@ -2,32 +2,33 @@
name: NOVAS
desc: Implement a Julia vectorized version of the NOVAS library
# add a short one line description of your project
-requirements:
-# Student requirements:
- - Familiarity with the Julia programming language.
- - Familiarity with linear algebra/numerical methods.
- - Familiarity with astronomy/astrometry.
+requirements:
+ # Student requirements:
+ - Familiarity with the Julia programming language.
+ - Familiarity with linear algebra/numerical methods.
+ - Familiarity with astronomy/astrometry.
difficulty: medium
issues:
# Related issues (if any) to this project.
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - barrettp
- - giordano
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - barrettp
+ - giordano
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - Julia
- - linear algebra
- - astronomy/astrometry
- - JPL ephemeris library
+ # Different technologies needed
+ - Julia
+ - linear algebra
+ - astronomy/astrometry
+ - JPL ephemeris library
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - juliaAstro
+ # suborganization(s) to which this project belongs.
+ - juliaAstro
---
-Implement a Julia version of the U.S. Naval Observatory Vector Astrometry
+
+Implement a Julia version of the U.S. Naval Observatory Vector Astrometry
Software (NOVAS) library and vectorize it to improve performance.
#### Description
@@ -46,24 +47,24 @@ stars. The current C and FORTRAN versions do not have this feature.
#### Milestones (if any)
-* Initial implementation of the basic algorithms/functions.
+- Initial implementation of the basic algorithms/functions.
-* Vectorize the basic algorithms/functions
+- Vectorize the basic algorithms/functions
-* Modifications to the design to improve ease-of-use.
+- Modifications to the design to improve ease-of-use.
##### Coding starts
-* Understand the astrometrc algorithms and the related functions.
+- Understand the astrometrc algorithms and the related functions.
##### 1st evaluation
-* Initial implementation of basic algorithms/functions
+- Initial implementation of basic algorithms/functions
##### 2nd evaluation
-* Vectorize the basis algorithms/functions.
+- Vectorize the basis algorithms/functions.
##### Final
-* Submit final implementation with improvements for ease-of-use.
+- Submit final implementation with improvements for ease-of-use.
diff --git a/_projects/2021/radis/atmosphere_interface.md b/src/content/pages/gsoc/2021/radis/atmosphere_interface.md
similarity index 56%
rename from _projects/2021/radis/atmosphere_interface.md
rename to src/content/pages/gsoc/2021/radis/atmosphere_interface.md
index 48d05d52..1196fe6c 100644
--- a/_projects/2021/radis/atmosphere_interface.md
+++ b/src/content/pages/gsoc/2021/radis/atmosphere_interface.md
@@ -3,30 +3,29 @@ name: Atmosphere Calculations
desc: Model atmospheres in the RADIS spectral code with a simplified frontend and more line databases
# add a short one line description of your project
requirements:
-# Student requirements:
- - Ideally : familiar with radiative transfer equations.
+ # Student requirements:
+ - Ideally: familiar with radiative transfer equations.
difficulty: easy
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/34
- - https://github.com/radis/radis/issues/189
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/34
+ - https://github.com/radis/radis/issues/189
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - erwanp
- - ulyssed
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - erwanp
+ - ulyssed
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available. This performance makes it very suitable to compute high-temperature atmospheres.
@@ -37,40 +36,36 @@ The goal of this project is to simplify the user interface to compute atmosphere
- make RADIS compatible with more line databases (ExoMol, GEISA, etc.)
-- if interested in the radiative transfer-physics, add a plane-parallel model for multiple-layers-atmospheres.
-
+- if interested in the radiative transfer-physics, add a plane-parallel model for multiple-layers-atmospheres.
#### Milestones
-
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy
+- Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
-* Get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture) : in particular, review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74))
+- Get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture) : in particular, review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74))
##### 1st evaluation
-* Write interface to read standard atmosphere input files (mole fractions, temperature profile, pressure profile)
+- Write interface to read standard atmosphere input files (mole fractions, temperature profile, pressure profile)
-* Add a detailed Notebook example in the documentation
-
-* Add integration to more line databases, like ExoMol or GEISA ([#34](https://github.com/radis/radis/issues/34))
+- Add a detailed Notebook example in the documentation
+- Add integration to more line databases, like ExoMol or GEISA ([#34](https://github.com/radis/radis/issues/34))
##### Final
-* Improve how these databases are downloaded automatically and converted to RADIS standard format (see [#210](https://github.com/radis/radis/issues/210))
-
-* Add a Gallery Example in RADIS documentation
+- Improve how these databases are downloaded automatically and converted to RADIS standard format (see [#210](https://github.com/radis/radis/issues/210))
-* Have all code, tests and documentation in GitHub.
+- Add a Gallery Example in RADIS documentation
+- Have all code, tests and documentation in GitHub.
##### Secondary Goals
-* If the student is interested in the radiative-transfer physics, set-up a plane-parallel model to compute multiple-layers atmospheres ([#189](https://github.com/radis/radis/issues/189))
\ No newline at end of file
+- If the student is interested in the radiative-transfer physics, set-up a plane-parallel model to compute multiple-layers atmospheres ([#189](https://github.com/radis/radis/issues/189))
diff --git a/_projects/2021/radis/auto_engine.md b/src/content/pages/gsoc/2021/radis/auto_engine.md
similarity index 56%
rename from _projects/2021/radis/auto_engine.md
rename to src/content/pages/gsoc/2021/radis/auto_engine.md
index d27a3965..032daecf 100644
--- a/_projects/2021/radis/auto_engine.md
+++ b/src/content/pages/gsoc/2021/radis/auto_engine.md
@@ -6,74 +6,71 @@ requirements:
# Student requirements:
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis-benchmark/issues/5
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis-benchmark/issues/5
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - erwanp
- - pkj-m
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - erwanp
+ - pkj-m
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
+The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
-The new algorithm is very efficient for large number of lines. However, for very widespread spectra with low number of lines, the legacy algorithm performs better. It was suggested that a scaling number would of the form :
+The new algorithm is very efficient for large number of lines. However, for very widespread spectra with low number of lines, the legacy algorithm performs better. It was suggested that a scaling number would of the form :
-$$ Rc = broadening_cutoff / wstep * N_lines / log(spectral range / wstep) $$
+$$ Rc = broadening_cutoff / wstep \* N_lines / log(spectral range / wstep) $$
-For low values of Rc, the legacy method would perform better. For large values of R, the new algorithm would perform better.
+For low values of Rc, the legacy method would perform better. For large values of R, the new algorithm would perform better.
-The first goal of the project is to confirm or adjust this number, by setting up benchmark cases under various simulation conditions.
+The first goal of the project is to confirm or adjust this number, by setting up benchmark cases under various simulation conditions.
The second goal of the project is to automatically switch the lineshape algorithm used at runtime based on the value of the number.
-
#### Milestones
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy
+- Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st Evaluation
-The goal is to confirm or adjust the critical number above. We only use RADIS and do not edit the codebase yet :
-
-* Run at least 100 benchmark cases, for various HITRAN (see [HITRAN spectra](https://radis.readthedocs.io/en/latest/examples/hitran-spectra.html#) ) and larger databases (HITEMP, CDSD-4000).
+The goal is to confirm or adjust the critical number above. We only use RADIS and do not edit the codebase yet :
-* Compare the results for the two lineshape engines of [calc_spectrum](https://radis.readthedocs.io/en/latest/source/radis.lbl.calc.html#radis.lbl.calc.calc_spectrum) (`optimization="None"` and `optimization="simple"`), and plot them against the R number.
+- Run at least 100 benchmark cases, for various HITRAN (see [HITRAN spectra](https://radis.readthedocs.io/en/latest/examples/hitran-spectra.html#) ) and larger databases (HITEMP, CDSD-4000).
-* Write a Jupyter Notebook to discuss the changes made to the R number formula, and the critical value obtained.
+- Compare the results for the two lineshape engines of [calc_spectrum](https://radis.readthedocs.io/en/latest/source/radis.lbl.calc.html#radis.lbl.calc.calc_spectrum) (`optimization="None"` and `optimization="simple"`), and plot them against the R number.
+- Write a Jupyter Notebook to discuss the changes made to the R number formula, and the critical value obtained.
##### Final
We now update the RADIS codebase to implement the automatic engine choice :
-* Add some of the benchmarks above in the [cpu-performance benchmark](https://github.com/radis/radis-benchmark/tree/master/manual_benchmarks) to track the changes.
+- Add some of the benchmarks above in the [cpu-performance benchmark](https://github.com/radis/radis-benchmark/tree/master/manual_benchmarks) to track the changes.
-* Compute the `Rc` number in [calc_spectrum](https://radis.readthedocs.io/en/latest/source/radis.lbl.calc.html#radis.lbl.calc.calc_spectrum) and automatically choose the optimization mode accordingly.
+- Compute the `Rc` number in [calc_spectrum](https://radis.readthedocs.io/en/latest/source/radis.lbl.calc.html#radis.lbl.calc.calc_spectrum) and automatically choose the optimization mode accordingly.
-* Choose what lineshape-broadening-cutoff to use by default in the legacy algorithm.
+- Choose what lineshape-broadening-cutoff to use by default in the legacy algorithm.
-* Re-run the benchmarks and ensure the fastest option is always chosen.
+- Re-run the benchmarks and ensure the fastest option is always chosen.
-* Have all code, tests and documentation in GitHub.
+- Have all code, tests and documentation in GitHub.
-##### Secondary Goals
+##### Secondary Goals
-* For the math/algorithm-oriented student : set-up the code architecture to deal with large spectra composed of multiple spectral regions, some of which would have different `Rc` numbers, and use the appropriate algorithm for each spectral region before merging the spectra.
\ No newline at end of file
+- For the math/algorithm-oriented student : set-up the code architecture to deal with large spectra composed of multiple spectral regions, some of which would have different `Rc` numbers, and use the appropriate algorithm for each spectral region before merging the spectra.
diff --git a/_projects/2021/radis/non_air_diluent.md b/src/content/pages/gsoc/2021/radis/non_air_diluent.md
similarity index 62%
rename from _projects/2021/radis/non_air_diluent.md
rename to src/content/pages/gsoc/2021/radis/non_air_diluent.md
index 78b6dcd3..a1937334 100644
--- a/_projects/2021/radis/non_air_diluent.md
+++ b/src/content/pages/gsoc/2021/radis/non_air_diluent.md
@@ -3,32 +3,31 @@ name: Non-air diluent
desc: Add non-air diluent and custom collisional broadening in RADIS spectra
# add a short one line description of your project
requirements:
-# Student requirements:
- - familiar with pandas
+ # Student requirements:
+ - familiar with pandas
difficulty: hard
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/213
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/213
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - erwanp
- - minouHub
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - erwanp
+ - minouHub
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that makes it one of the fastest line-by-line spectral codes available.
+The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that makes it one of the fastest line-by-line spectral codes available.
Currently RADIS supports calculation of about every possible molecule, but assumes that it is diluted in air by default. It is possible to manually adjust it to replace air by one other diulter (for instance : compute CO diluted in CO2). The goal of the current project is to make it automatic, and extend it to multiple diluents (for instance: CO diluted in CO2 and H2O).
@@ -36,42 +35,40 @@ No background in spectroscopy and collisional broadening is required, but the st
#### Milestones
-
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy, with a focus on collisional broadening.
+- Training on emission & absorption spectroscopy, with a focus on collisional broadening.
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st evaluation
-Learn the physics :
+Learn the physics :
-* With the help of the mentors, write a Tutorial notebook about collisional broadening and the effect of diluent (for instance using the existing implementation in the very good [HAPI](https://github.com/hitranonline/hapi) code)
+- With the help of the mentors, write a Tutorial notebook about collisional broadening and the effect of diluent (for instance using the existing implementation in the very good [HAPI](https://github.com/hitranonline/hapi) code)
-* Add tutorial to show how to manually replace the broadening coefficients in RADIS (with Pandas).
+- Add tutorial to show how to manually replace the broadening coefficients in RADIS (with Pandas).
-Implement :
+Implement :
-* write a method in [SpectrumFactory](https://github.com/radis/radis/blob/develop/radis/lbl/factory.py#L109) to set-up the dilution gas, and read the corresponding coefficients from the loaded database.
+- write a method in [SpectrumFactory](https://github.com/radis/radis/blob/develop/radis/lbl/factory.py#L109) to set-up the dilution gas, and read the corresponding coefficients from the loaded database.
-* Update the [pressure_broadening_HWMH](https://github.com/radis/radis/blob/develop/radis/lbl/broadening.py#L249) function to compute more than one diluent.
+- Update the [pressure_broadening_HWMH](https://github.com/radis/radis/blob/develop/radis/lbl/broadening.py#L249) function to compute more than one diluent.
##### Final
-Make it user friendly :
-
-* Add a `diluent` parameter in the high-level [calc_spectrum](https://github.com/radis/radis/blob/develop/radis/lbl/calc.py#L29) function
+Make it user friendly :
-* automatically retrieve non-air broadening coefficients from the HITRAN database and convert it to the RADIS database format (see [#213](https://github.com/radis/radis/issues/213) ).
+- Add a `diluent` parameter in the high-level [calc_spectrum](https://github.com/radis/radis/blob/develop/radis/lbl/calc.py#L29) function
-* Add a Gallery Example
+- automatically retrieve non-air broadening coefficients from the HITRAN database and convert it to the RADIS database format (see [#213](https://github.com/radis/radis/issues/213) ).
-* Have all code, tests and documentation in GitHub.
+- Add a Gallery Example
+- Have all code, tests and documentation in GitHub.
##### Secondary goals
-* allow user to specify their own collisional broadening formula.
+- allow user to specify their own collisional broadening formula.
diff --git a/_projects/2021/radis/reduce_memory_usage.md b/src/content/pages/gsoc/2021/radis/reduce_memory_usage.md
similarity index 56%
rename from _projects/2021/radis/reduce_memory_usage.md
rename to src/content/pages/gsoc/2021/radis/reduce_memory_usage.md
index f29af32e..c386ebc0 100644
--- a/_projects/2021/radis/reduce_memory_usage.md
+++ b/src/content/pages/gsoc/2021/radis/reduce_memory_usage.md
@@ -3,59 +3,56 @@ name: Memory Usage
desc: Reduce Memory usage in RADIS to be able to compute terabyte-scale databases
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/118
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/118
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - erwanp
- - dcmvdbekerom
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - erwanp
+ - dcmvdbekerom
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
-
-However, although the algorithm is very CPU/GPU efficient, the RADIS code is still memory-hungry. The first goal of the current project is to reduce the memory usage of current calculations. Then, it is to replace the current core with libraries better suited to process larger-than-memory-data, which would make it possible to compute spectral databases of up to billions of lines (hundred of GB or terabyte-scale).
+The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
+However, although the algorithm is very CPU/GPU efficient, the RADIS code is still memory-hungry. The first goal of the current project is to reduce the memory usage of current calculations. Then, it is to replace the current core with libraries better suited to process larger-than-memory-data, which would make it possible to compute spectral databases of up to billions of lines (hundred of GB or terabyte-scale).
#### Milestones
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy
+- Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st Evaluation
-* Work on the current memory bottlenecks (#118)
-
-* Setup [memory-performance benchmark](https://github.com/radis/radis-benchmark/tree/master/manual_benchmarks) to track the changes
+- Work on the current memory bottlenecks (#118)
-* Merge the changes
+- Setup [memory-performance benchmark](https://github.com/radis/radis-benchmark/tree/master/manual_benchmarks) to track the changes
+- Merge the changes
##### Final
-* Setup a proof-of-concept with Vaex / Dask or alternative libraries with lazy-loading features, to be able to compute larger-than-memory-databases (> tens of GB - terabyte-scale )
+- Setup a proof-of-concept with Vaex / Dask or alternative libraries with lazy-loading features, to be able to compute larger-than-memory-databases (> tens of GB - terabyte-scale )
-* Based on results, decide whether to integrate Vaex, Dask or alternative library in the code.
+- Based on results, decide whether to integrate Vaex, Dask or alternative library in the code.
-* Have all code, tests and documentation in GitHub.
+- Have all code, tests and documentation in GitHub.
diff --git a/_projects/2021/stingray/daveupdate.md b/src/content/pages/gsoc/2021/stingray/daveupdate.md
similarity index 72%
rename from _projects/2021/stingray/daveupdate.md
rename to src/content/pages/gsoc/2021/stingray/daveupdate.md
index 8a4c8a89..1deddeb2 100644
--- a/_projects/2021/stingray/daveupdate.md
+++ b/src/content/pages/gsoc/2021/stingray/daveupdate.md
@@ -2,53 +2,52 @@
name: Stingray GUI update
desc: Update Stingray's GUI, DAVE, to use the most recent Javascript dependencies and Stingray API (including faster pulsar searches, faster processing, large data handling) and infrastructure (e.g. the modifications introduced by [APE 17](https://docs.astropy.org/projects/package-template/en/latest/ape17.html))
requirements:
- - Good knowledge of Python and Javascript
- - Knowledge of signal processing and Fourier methods would be ideal
+ - Good knowledge of Python and Javascript
+ - Knowledge of signal processing and Fourier methods would be ideal
difficulty: medium
issues:
- - https://github.com/StingraySoftware/dave/pull/74
+ - https://github.com/StingraySoftware/dave/pull/74
mentors:
- - matteobachetti
- - smigliari
+ - matteobachetti
+ - smigliari
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - signal processing
- - time series analysis
- - Fourier analysis
- - astronomy
- - javascript
+ - python
+ - signal processing
+ - time series analysis
+ - Fourier analysis
+ - astronomy
+ - javascript
collaborating_projects:
- - stingray
+ - stingray
---
#### Description
+
Generating periodograms for astronomical data is the core task of Stingray. Because periodograms are often noisy, several methods to denoise periodograms exist in the literature, among them the multi-taper periodogram
-Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy.
-DAVE is an elegant GUI to the library, developed during a previous GSoC.
+Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy.
+DAVE is an elegant GUI to the library, developed during a previous GSoC.
Due to the fast evolving Python and Javascript landscape, this GUI is not compatible with the current versions of the dependencies.
Also, Stingray has now new features that were not implemented in the original GUI.
In this project, the student will refresh the GUI dependencies, update the package building infrastructure, and add the new functionality introduced in recent versions of Stingray.
-
#### Milestones (if any)
1. Package build working again
2. New Stingray features introduced as proof-of-concept
-2. Fully working interface
-
+3. Fully working interface
##### Coding starts
-* Understand GUI functionality and have an overview of the individual components that need to be implemented.
+- Understand GUI functionality and have an overview of the individual components that need to be implemented.
##### 1st evaluation
-* Proof-of-concept implementation is complete (M1 and M2).
+- Proof-of-concept implementation is complete (M1 and M2).
##### Final
-* Full implementation is complete (M3)
+- Full implementation is complete (M3)
diff --git a/_projects/2021/stingray/modeling_improvements.md b/src/content/pages/gsoc/2021/stingray/modeling_improvements.md
similarity index 69%
rename from _projects/2021/stingray/modeling_improvements.md
rename to src/content/pages/gsoc/2021/stingray/modeling_improvements.md
index 8895c123..0993e627 100644
--- a/_projects/2021/stingray/modeling_improvements.md
+++ b/src/content/pages/gsoc/2021/stingray/modeling_improvements.md
@@ -1,34 +1,34 @@
---
name: Modern Statistical Modeling in Stingray.
-desc: Make the statistical modeling infrastructure in stingray more robust by using algorithms and implementations developed for machine learning, such as TensorFlow Probability, PyMC3 and JAX.
+desc: Make the statistical modeling infrastructure in stingray more robust by using algorithms and implementations developed for machine learning, such as TensorFlow Probability, PyMC3 and JAX.
requirements:
- - Proficiency in Python
- - Knowledge of automatic differentiation or probabilistic programming helpful, but not essential
+ - Proficiency in Python
+ - Knowledge of automatic differentiation or probabilistic programming helpful, but not essential
difficulty: medium
issues:
- - https://github.com/StingraySoftware/stingray/issues/520
+ - https://github.com/StingraySoftware/stingray/issues/520
mentors:
- - dhuppenkothen
- - matteobachetti
+ - dhuppenkothen
+ - matteobachetti
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - signal processing
- - time series analysis
- - statistics
- - Bayesian inference
- - astronomy
+ - python
+ - signal processing
+ - time series analysis
+ - statistics
+ - Bayesian inference
+ - astronomy
collaborating_projects:
- - stingray
+ - stingray
---
#### Description
-Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy. Often, the ultimate goal of a researcher is statistical inference of some properties of an astronomical object. While stingray currently has an infrastructure for parametric modelling of Fourier products and light curves (based primarily on numpy and scipy), the existing infrastructure and algorithms are relatively fragile and tend to fail often.
-In this project, the student will add automatic differentiation and modern optimization algorithms to make the existing infrastructure more robust. In a second step, the student will extend the existing infrastructure to facilitate building fully probabilistic models in TensorFlow Probability or PyMC3.
+Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy. Often, the ultimate goal of a researcher is statistical inference of some properties of an astronomical object. While stingray currently has an infrastructure for parametric modelling of Fourier products and light curves (based primarily on numpy and scipy), the existing infrastructure and algorithms are relatively fragile and tend to fail often.
+In this project, the student will add automatic differentiation and modern optimization algorithms to make the existing infrastructure more robust. In a second step, the student will extend the existing infrastructure to facilitate building fully probabilistic models in TensorFlow Probability or PyMC3.
#### Milestones (if any)
@@ -37,13 +37,13 @@ In this project, the student will add automatic differentiation and modern optim
##### Coding starts
-* Understand basics of automatic differentiation and have an overview of the individual components that need to be implemented/modified.
+- Understand basics of automatic differentiation and have an overview of the individual components that need to be implemented/modified.
##### 1st evaluation
-* Implementation of automatic differentiation is complete..
+- Implementation of automatic differentiation is complete..
##### Final
-* Implementation of automatic differentiation in combination with a probabilistic model.
-* Wrap up connecting the new implementation to existing Stingray classes, finish documentation and associated tutorial in a Jupyter notebook.
+- Implementation of automatic differentiation in combination with a probabilistic model.
+- Wrap up connecting the new implementation to existing Stingray classes, finish documentation and associated tutorial in a Jupyter notebook.
diff --git a/_projects/2021/stingray/multitaper.md b/src/content/pages/gsoc/2021/stingray/multitaper.md
similarity index 71%
rename from _projects/2021/stingray/multitaper.md
rename to src/content/pages/gsoc/2021/stingray/multitaper.md
index aa76b336..f1520f67 100644
--- a/_projects/2021/stingray/multitaper.md
+++ b/src/content/pages/gsoc/2021/stingray/multitaper.md
@@ -2,47 +2,46 @@
name: Multitaper-Periodograms in Stingray.
desc: Add a new algorithm for building periodograms to Stingray. The multitaper periodogram is a method that's fairly well-known in signal processing, but virtually unknown in (X-ray) astronomy.
requirements:
- - Proficiency in Python
- - Knowledge of signal processing and Fourier methods would be ideal
+ - Proficiency in Python
+ - Knowledge of signal processing and Fourier methods would be ideal
difficulty: medium
issues:
- - https://github.com/StingraySoftware/stingray/issues/361
+ - https://github.com/StingraySoftware/stingray/issues/361
mentors:
- - dhuppenkothen
- - matteobachetti
+ - dhuppenkothen
+ - matteobachetti
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - signal processing
- - time series analysis
- - Fourier analysis
- - astronomy
+ - python
+ - signal processing
+ - time series analysis
+ - Fourier analysis
+ - astronomy
collaborating_projects:
- - stingray
+ - stingray
---
#### Description
+
Generating periodograms for astronomical data is the core task of Stingray. Because periodograms are often noisy, several methods to denoise periodograms exist in the literature, among them the multi-taper periodogram
Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy. In this project, the student will add the multi-taper periodogram to the existing code base in order to allow astronomers build periodograms with better noise properties.
-
#### Milestones (if any)
1. Proof-of-concept implementation of the multi-taper algorithm
2. Full implementation of the algorithm in the Stingray framework, including tests and relevant documentation
-
##### Coding starts
-* Understand algorithm and have an overview of the individual components that need to be implemented.
+- Understand algorithm and have an overview of the individual components that need to be implemented.
##### 1st evaluation
-* Proof-of-concept implementation is complete.
+- Proof-of-concept implementation is complete.
##### Final
-* Full implementation is complete
-* Wrap up connecting the new implementation to existing Stingray classes, finish documentation and associated tutorial in a Jupyter notebook.
+- Full implementation is complete
+- Wrap up connecting the new implementation to existing Stingray classes, finish documentation and associated tutorial in a Jupyter notebook.
diff --git a/_projects/2021/stingray/typing.md b/src/content/pages/gsoc/2021/stingray/typing.md
similarity index 67%
rename from _projects/2021/stingray/typing.md
rename to src/content/pages/gsoc/2021/stingray/typing.md
index e8fcae84..e77daee2 100644
--- a/_projects/2021/stingray/typing.md
+++ b/src/content/pages/gsoc/2021/stingray/typing.md
@@ -2,47 +2,46 @@
name: Use type hints in Stingray
desc: Introduce and enforce type hints throughout the Stingray library
requirements:
- - Basic knowledge of Python
- - Knowledge of signal processing and Fourier methods would be ideal
+ - Basic knowledge of Python
+ - Knowledge of signal processing and Fourier methods would be ideal
difficulty: easy
issues:
- - https://github.com/StingraySoftware/stingray/issues/544
+ - https://github.com/StingraySoftware/stingray/issues/544
mentors:
- - matteobachetti
- - dhuppenkothen
+ - matteobachetti
+ - dhuppenkothen
initiatives:
- - GSOC
+ - GSOC
tags:
- - python
- - signal processing
- - time series analysis
- - Fourier analysis
- - astronomy
+ - python
+ - signal processing
+ - time series analysis
+ - Fourier analysis
+ - astronomy
collaborating_projects:
- - stingray
+ - stingray
---
#### Description
+
Generating periodograms for astronomical data is the core task of Stingray. Because periodograms are often noisy, several methods to denoise periodograms exist in the literature, among them the multi-taper periodogram
-Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy.
+Stingray aims to provide a comprehensive library of reliable, well-tested implementations of common algorithms for time series analysis in Astronomy.
In this project, the student will introduce type hints in the code, in order to make debugging easier and, possibly, use runtime checks to ensure the consistency of results.
-
#### Milestones (if any)
1. Introduction of type hints everywhere in the code
2. Thorough testing of the consistency of type hints in typical use cases
-
##### Coding starts
-* Understand the general structure of Stingray, the testing environment, the notebooks used to document the library
+- Understand the general structure of Stingray, the testing environment, the notebooks used to document the library
##### 1st evaluation
-* Type hints implementation is complete.
+- Type hints implementation is complete.
##### Final
-* Through tests through external libraries such as [enforce-typing](https://pypi.org/project/enforce-typing/).
+- Through tests through external libraries such as [enforce-typing](https://pypi.org/project/enforce-typing/).
diff --git a/_projects/2021/sunpy/3dplotting.md b/src/content/pages/gsoc/2021/sunpy/3dplotting.md
similarity index 61%
rename from _projects/2021/sunpy/3dplotting.md
rename to src/content/pages/gsoc/2021/sunpy/3dplotting.md
index 9852b587..84ef0314 100644
--- a/_projects/2021/sunpy/3dplotting.md
+++ b/src/content/pages/gsoc/2021/sunpy/3dplotting.md
@@ -3,37 +3,38 @@ name: 3D plotting
desc: Provide 3D plotting capabilities to SunPy
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiarity with Python
- - Familiarity with some plotting tools (e.g. Matplotlib)
+ # Student requirements:
+ - Familiarity with Python
+ - Familiarity with some plotting tools (e.g. Matplotlib)
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/sunpy/pull/4591
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/sunpy/pull/4591
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - dstansby
- - Cadair
- - nabobalis
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - dstansby
+ - Cadair
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - plotting
- - 3D
+ # Different technologies needed
+ - python
+ - plotting
+ - 3D
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - sunpy
+ # suborganization(s) to which this project belongs.
+ - sunpy
---
+
The SunPy ecosystem currently has well developed support for making 2D plots (primarily with Matplotlib), but currently no interface for making 3D plots.
#### Description
In this project the student will code new tools for taking common datasets used in the SunPy ecosystem (e.g. images of the Sun, maps of the Sun, magnetic field lines from models of the Sun), and plotting them in 3D. This will initially be done using the pyvista plotting toolkit, but we would like to make the tools general enough that other plotting toolkits (e.g. plotly) can be used too.
-We have already trialled this, with some demo code at https://github.com/sunpy/sunpy/pull/4591. The goal of this project is to take this demo code, and put it in a new Python package to allow rapid development, independent of the sunpy core package. The work will be evenly split between writing new code, and learning how to write documentation and tests for the code within a package.
+We have already trialled this, with some demo code at . The goal of this project is to take this demo code, and put it in a new Python package to allow rapid development, independent of the sunpy core package. The work will be evenly split between writing new code, and learning how to write documentation and tests for the code within a package.
#### Milestones (if any)
diff --git a/_projects/2021/sunpy/ndcube_resampling.md b/src/content/pages/gsoc/2021/sunpy/ndcube_resampling.md
similarity index 67%
rename from _projects/2021/sunpy/ndcube_resampling.md
rename to src/content/pages/gsoc/2021/sunpy/ndcube_resampling.md
index e4e72d18..cdd8fb72 100644
--- a/_projects/2021/sunpy/ndcube_resampling.md
+++ b/src/content/pages/gsoc/2021/sunpy/ndcube_resampling.md
@@ -3,40 +3,39 @@ name: Supporting Resampling in NDCube
desc: Enable users to resample their data using NDCube.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge on python
+ # Student requirements:
+ - Knowledge on python
difficulty: hard
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/ndcube/issues/155
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/ndcube/issues/155
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - DanRyanIrish
- - Cadair
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - DanRyanIrish
+ - Cadair
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
+ # Different technologies needed
+ - python
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - sunpy
+ # suborganization(s) to which this project belongs.
+ - sunpy
---
-
#### Description
This project will provide a new functionality to the ndcube package,
-namely resampling data using the NDCube data class. The NDCube class
+namely resampling data using the NDCube data class. The NDCube class
enables users to manipulate and visualize n-dimensional astronomical data.
NDCube's big advantage over arrays and other high-level data containers
-is its support for functional coordinate transformations
+is its support for functional coordinate transformations
(World Coordinate System, or WCS) that enable users to easily track
what real world coordinates their data values correspond to.
For example, what point on the sky a pixel is pointing at.
NDCube has made coupling astronomical data and coordinate systems far more
-user-friendly. However the greatest outstanding functionality is
+user-friendly. However the greatest outstanding functionality is
NDCube's inability to resample its data onto a different pixel grid.
This would have many potenital benefits to users.
It would enable them to align data from different imagers onto the same
@@ -48,7 +47,7 @@ the requirement of altering the WCS transformations.
However, if users are able to resample their data with a single command
and have their coordinate transformations automatically update accordingly,
it would greatly speed up data analysis workflows and make such
-analysis less prone to errors.
+analysis less prone to errors.
Therefore this project will be of great benefit to the wider astronomical
community.
@@ -56,14 +55,14 @@ community.
##### Coding starts
-* Become familiar with ndcube and astropy WCS codebase.
-* Begin work on a resampling framework
+- Become familiar with ndcube and astropy WCS codebase.
+- Begin work on a resampling framework
##### 1st evaluation
-* Complete working draft prototype of resampling framework.
-* Seek feedback from the ndcube-using community.
+- Complete working draft prototype of resampling framework.
+- Seek feedback from the ndcube-using community.
##### Final
-* Release new version of ndcube including resampling capability
+- Release new version of ndcube including resampling capability
diff --git a/_projects/2021/sunpy/scraper.md b/src/content/pages/gsoc/2021/sunpy/scraper.md
similarity index 63%
rename from _projects/2021/sunpy/scraper.md
rename to src/content/pages/gsoc/2021/sunpy/scraper.md
index 591a6195..709dd4ee 100644
--- a/_projects/2021/sunpy/scraper.md
+++ b/src/content/pages/gsoc/2021/sunpy/scraper.md
@@ -3,30 +3,30 @@ name: Scraper rewrite
desc: Improve the current scraper to download data
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiarity with Python
- - Knowledge of Python regex
- - Familiar with web protocols
+ # Student requirements:
+ - Familiarity with Python
+ - Knowledge of Python regex
+ - Familiar with web protocols
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/sunpy/issues/4888
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/sunpy/issues/4888
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - nabobalis
- - samaloney
- - hayesla
- - dpshelio
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - nabobalis
+ - samaloney
+ - hayesla
+ - dpshelio
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
- - web
+ # Different technologies needed
+ - python
+ - web
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - sunpy
+ # suborganization(s) to which this project belongs.
+ - sunpy
---
This project will provide the ability to parse URL information in a programmatic way.
@@ -34,16 +34,15 @@ This project will provide the ability to parse URL information in a programmatic
#### Description
sunpy provides a way for users to access data using Fido and its many internal clients.
-Many of these simpler clients do URL scraping to return metadata and data files to a user.
+Many of these simpler clients do URL scraping to return metadata and data files to a user.
-This scraping is done by the `scraper class `__.
+This scraping is done by the `scraper class `\_\_.
Over the years, the scale of what this class has to do has expanded to a point where it has become unmaintainable.
-The goal of this project is to create a new scraper with a predefined API and class structure.
+The goal of this project is to create a new scraper with a predefined API and class structure.
Please be aware that this project is not a design project, the API and the scope of scrapper has been (link to come) predetermined and laid out by the GSoC mentors.
So the primary focus of this project will be to write the class and its methods to follow this specification (obviously leaving the implementation details mainly up to you).
-
#### Milestones (if any)
1. Partial scraper written
@@ -53,13 +52,13 @@ So the primary focus of this project will be to write the class and its methods
##### Coding starts
-* Already have a development environment setup
-* Understand the project and the API design. Having asked questions if you do not.
+- Already have a development environment setup
+- Understand the project and the API design. Having asked questions if you do not.
##### 1st evaluation
-* Partial skeleton of scraper written.
+- Partial skeleton of scraper written.
##### Final
-* Functional replacement ready for review and merging into sunpy.
+- Functional replacement ready for review and merging into sunpy.
diff --git a/_projects/2021/sunpy/sunraster.md b/src/content/pages/gsoc/2021/sunpy/sunraster.md
similarity index 64%
rename from _projects/2021/sunpy/sunraster.md
rename to src/content/pages/gsoc/2021/sunpy/sunraster.md
index c183fd49..ff71b952 100644
--- a/_projects/2021/sunpy/sunraster.md
+++ b/src/content/pages/gsoc/2021/sunpy/sunraster.md
@@ -3,27 +3,27 @@ name: Update sunraster to ndcube 2.0
desc: Updates the sunraster code-base to use the powerful new version of ndcube.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of Python
- - Ideally some familiarity with ndcube 2.0 and sunraster.
+ # Student requirements:
+ - Knowledge of Python
+ - Ideally some familiarity with ndcube 2.0 and sunraster.
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/sunpy/sunraster/issues/177
+ # Related issues (if any) to this project.
+ - https://github.com/sunpy/sunraster/issues/177
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - DanRyanIrish
- - Cadair
- - nabobalis
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - DanRyanIrish
+ - Cadair
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
tags:
-# Different technologies needed
- - python
+ # Different technologies needed
+ - python
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - sunpy
+ # suborganization(s) to which this project belongs.
+ - sunpy
---
This project will update the sunraster package to use the ndcube 2.0, a much more powerful version and lead to the next release of the sunraster package.
@@ -46,23 +46,22 @@ This API is not backwards compatible and so requires upgrades to the sunraster
so users of solar spectrograph observations can more easily perform their
data analysis.
-
#### Milestones (if any)
-* sunraster code has been updated.
-* sunraster tests all pass.
-* sunraster has been released.
+- sunraster code has been updated.
+- sunraster tests all pass.
+- sunraster has been released.
##### Coding starts
-* Become familiar with ndcube and sunraster codebases.
-* Create a test environment for sunraster that uses ndcube 2.0.
-* List out parts of sunraster API that need updating.
+- Become familiar with ndcube and sunraster codebases.
+- Create a test environment for sunraster that uses ndcube 2.0.
+- List out parts of sunraster API that need updating.
##### 1st evaluation
-* Update sunraster code base to get all ndcube-2.0-base tests passing.
+- Update sunraster code base to get all ndcube-2.0-base tests passing.
##### Final
-* sunraster is ready to be released to users.
+- sunraster is ready to be released to users.
diff --git a/_projects/2022/gnuastro/astrometry_distortions.md b/src/content/pages/gsoc/2022/gnuastro/astrometry_distortions.md
similarity index 57%
rename from _projects/2022/gnuastro/astrometry_distortions.md
rename to src/content/pages/gsoc/2022/gnuastro/astrometry_distortions.md
index f69ee097..3241da60 100644
--- a/_projects/2022/gnuastro/astrometry_distortions.md
+++ b/src/content/pages/gsoc/2022/gnuastro/astrometry_distortions.md
@@ -3,34 +3,33 @@ name: Distortion coefficients in astrometry
desc: Thanks to GSoC 2021 linear parameters can be found, we now need distortion.
# add a short one line description of your project
requirements:
-# Student requirements:
- - C programming language.
- - GNU Scientific Library and FITS World Coordinate System (WCS) standrads.
+ # Student requirements:
+ - C programming language.
+ - GNU Scientific Library and FITS World Coordinate System (WCS) standrads.
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://savannah.gnu.org/task/?15747
+ # Related issues (if any) to this project.
+ - https://savannah.gnu.org/task/?15747
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - mohammad-akhlaghi
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - mohammad-akhlaghi
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
-# Different technologies needed
- - C
- - Gnuastro
- - WCSLIB
- - GNU Scientific Library
+ # Different technologies needed
+ - C
+ - Gnuastro
+ - WCSLIB
+ - GNU Scientific Library
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - Gnuastro
+ # suborganization(s) to which this project belongs.
+ - Gnuastro
---
-
#### Description
Astrometry is a critical component in the processing of astronomical data.
@@ -44,24 +43,24 @@ To get started, check [our GSoC 2022 checklist](https://savannah.gnu.org/support
#### Milestones (if any)
- * Completing [our GSoC 2022 checklist](https://savannah.gnu.org/support/index.php?110613#comment0)
+- Completing [our GSoC 2022 checklist](https://savannah.gnu.org/support/index.php?110613#comment0)
- * Learning basic concepts of Astrometry and existing functions.
+- Learning basic concepts of Astrometry and existing functions.
- * Fixing bugs in existing components.
+- Fixing bugs in existing components.
- * Adding the remaining high-level components to complete astrometry.
+- Adding the remaining high-level components to complete astrometry.
##### Coding starts
-* Actively start fixing/adding some minor bugs/tasks in Gnuastro to get a good feeling of the coding style and logic within Gnuastro (this can be independent of astrometry).
+- Actively start fixing/adding some minor bugs/tasks in Gnuastro to get a good feeling of the coding style and logic within Gnuastro (this can be independent of astrometry).
-* Study the basic concepts of Astrometry and learning/testing the existing low-level features that have already been written.
+- Study the basic concepts of Astrometry and learning/testing the existing low-level features that have already been written.
##### 1st evaluation
-* Adding tests to existing steps and start working on finding distortions.
+- Adding tests to existing steps and start working on finding distortions.
##### Final evaluation
-* Library and program for writing the full WCS (including distortions) in the FITS format.
+- Library and program for writing the full WCS (including distortions) in the FITS format.
diff --git a/_projects/2022/gnuastro/python_wrappers.md b/src/content/pages/gsoc/2022/gnuastro/python_wrappers.md
similarity index 64%
rename from _projects/2022/gnuastro/python_wrappers.md
rename to src/content/pages/gsoc/2022/gnuastro/python_wrappers.md
index 76afc682..88e7fdff 100644
--- a/_projects/2022/gnuastro/python_wrappers.md
+++ b/src/content/pages/gsoc/2022/gnuastro/python_wrappers.md
@@ -3,31 +3,30 @@ name: Gnuastro library in Python
desc: Wrappers over the Gnuastro C library to allow usage in Python.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Low-level Python and Numpy (their C library).
+ # Student requirements:
+ - Low-level Python and Numpy (their C library).
difficulty: low
issues:
-# Related issues (if any) to this project.
- - https://savannah.gnu.org/task/?13786
+ # Related issues (if any) to this project.
+ - https://savannah.gnu.org/task/?13786
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - mohammad-akhlaghi
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - mohammad-akhlaghi
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
- - C
+ # Different technologies needed
+ - python
+ - C
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - Gnuastro
+ # suborganization(s) to which this project belongs.
+ - Gnuastro
---
-
#### Description
Gnuastro is primarily written in C because astronomical datasets are large and thus need to be efficient with few dependencies.
@@ -45,26 +44,26 @@ To get started, check [our GSoC 2022 checklist](https://savannah.gnu.org/support
#### Milestones (if any)
- * Completing [our GSoC 2022 checklist](https://savannah.gnu.org/support/index.php?110613#comment0)
+- Completing [our GSoC 2022 checklist](https://savannah.gnu.org/support/index.php?110613#comment0)
- * Mastering the C interface of Python/Numpy and Gnuastro.
+- Mastering the C interface of Python/Numpy and Gnuastro.
- * Writing functions to convert Numpy's core data structure to Gnuastro's core data structure and vice-versa.
+- Writing functions to convert Numpy's core data structure to Gnuastro's core data structure and vice-versa.
- * Build and install the Python components as part of the Gnuastro's build.
+- Build and install the Python components as part of the Gnuastro's build.
##### Coding starts
-* Learning the numpy C interface and writing small test usages on some basic operations (not necessarily involving Gnuastro).
+- Learning the numpy C interface and writing small test usages on some basic operations (not necessarily involving Gnuastro).
-* Fixing small bugs in Gnuastro's library (as an excuse to learn the programming style and usage of Gnuastro's libraries).
+- Fixing small bugs in Gnuastro's library (as an excuse to learn the programming style and usage of Gnuastro's libraries).
##### 1st evaluation
-* Having a working converter between Numpy's data structure and Gnuastro's data structure.
+- Having a working converter between Numpy's data structure and Gnuastro's data structure.
##### Final evaluation
-* Adding wrappers to the core lower-level Gnuastro libraries.
+- Adding wrappers to the core lower-level Gnuastro libraries.
-* Writing tests and build/install steps of the Python wrappers in Gnuastro's build system.
+- Writing tests and build/install steps of the Python wrappers in Gnuastro's build system.
diff --git a/src/content/pages/gsoc/2022/index.md b/src/content/pages/gsoc/2022/index.md
new file mode 100644
index 00000000..d190eaed
--- /dev/null
+++ b/src/content/pages/gsoc/2022/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2022"
+show_main: false
+season: 2022
+---
diff --git a/_projects/2022/juliaastro/stingray_porting.md b/src/content/pages/gsoc/2022/juliaastro/stingray_porting.md
similarity index 58%
rename from _projects/2022/juliaastro/stingray_porting.md
rename to src/content/pages/gsoc/2022/juliaastro/stingray_porting.md
index dcf86b13..bc87ebcc 100644
--- a/_projects/2022/juliaastro/stingray_porting.md
+++ b/src/content/pages/gsoc/2022/juliaastro/stingray_porting.md
@@ -3,60 +3,62 @@ name: Spectral timing in Julia
desc: Create a set of timing and spectral timing methods in Julia.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Understanding Python code
- - Julia knowledge
+ # Student requirements:
+ - Understanding Python code
+ - Julia knowledge
difficulty: medium
issues:
# Related issues (if any) to this project.
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - matteobachetti
- - giordano
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - matteobachetti
+ - giordano
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
- - Julia
- - time series analysis
+ # Different technologies needed
+ - python
+ - Julia
+ - time series analysis
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - stingray
- - juliaAstro
+ # suborganization(s) to which this project belongs.
+ - stingray
+ - juliaAstro
---
+
Spectral timing in Julia
#### Description
-The analysis of time series from astronomical observations in the X-rays is an
+
+The analysis of time series from astronomical observations in the X-rays is an
excellent tool to test advanced physical theories.
-Of particular interest are the periodicities that are often observed in the
+Of particular interest are the periodicities that are often observed in the
X-ray signals coming from the surroundings of accreting black holes, and the
evolution of the rotation period of neutron stars.
-The essential toolbox for X-ray timing analysis includes different kinds of
+The essential toolbox for X-ray timing analysis includes different kinds of
periodograms, cross spectra, and a number of "variability vs energy spectra", that
allow to understand the variability at different energies.
-This project is about the implementation of a basic set of X-ray timing analysis
+This project is about the implementation of a basic set of X-ray timing analysis
operations in Julia, starting from the porting of the core operations from the
-`stingray` Python package.
+`stingray` Python package.
#### Milestones (if any)
##### Coding starts
-* Implement a series of tests in Julia that the new code will have to pass
-* Start the porting
+- Implement a series of tests in Julia that the new code will have to pass
+- Start the porting
##### 1st evaluation
-* Basic operations (periodograms and cross spectra) implemented for at least
+- Basic operations (periodograms and cross spectra) implemented for at least
one kind of input data
##### Final evaluation
-* Properly tested periodogram, cross spectra, time lags, and coherence
-* Optional: a working framework for variability vs energy spectra
+- Properly tested periodogram, cross spectra, time lags, and coherence
+- Optional: a working framework for variability vs energy spectra
diff --git a/_projects/2022/radis/atmosphere_interface.md b/src/content/pages/gsoc/2022/radis/atmosphere_interface.md
similarity index 56%
rename from _projects/2022/radis/atmosphere_interface.md
rename to src/content/pages/gsoc/2022/radis/atmosphere_interface.md
index 88e5a8d3..0a8827b8 100644
--- a/_projects/2022/radis/atmosphere_interface.md
+++ b/src/content/pages/gsoc/2022/radis/atmosphere_interface.md
@@ -3,33 +3,32 @@ name: Atmosphere Calculations
desc: Model atmospheres in the RADIS spectral code with a simplified frontend and more line databases
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiar with radiative transfer equations
+ # Student requirements:
+ - Familiar with radiative transfer equations
difficulty: easy
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/34
- - https://github.com/radis/radis/issues/189
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/34
+ - https://github.com/radis/radis/issues/189
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - anandxkumar
- - gagan-aryan
- - erwanp
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - anandxkumar
+ - gagan-aryan
+ - erwanp
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available. This performance makes it very suitable to compute high-temperature atmospheres.
@@ -40,40 +39,36 @@ The goal of this project is to simplify the user interface to compute atmosphere
- make RADIS compatible with more line databases (ExoMol, GEISA, etc)
-- if interested in the radiative transfer-physics, add a plane-parallel model for multiple-layers-atmospheres
-
+- if interested in the radiative transfer-physics, add a plane-parallel model for multiple-layers-atmospheres
#### Milestones
-
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy
+- Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests)
-* Get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture) : in particular, review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74))
+- Get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture) : in particular, review the interface change to calculate multiple molecules at the same time ([#74](https://github.com/radis/radis/pull/74))
##### 1st evaluation
-* Write interface to read standard atmosphere input files (mole fractions, temperature profile, pressure profile)
+- Write interface to read standard atmosphere input files (mole fractions, temperature profile, pressure profile)
-* Add a detailed Notebook example in the documentation
-
-* Add integration to more line databases, like ExoMol or GEISA ([#34](https://github.com/radis/radis/issues/34))
+- Add a detailed Notebook example in the documentation
+- Add integration to more line databases, like ExoMol or GEISA ([#34](https://github.com/radis/radis/issues/34))
##### Final evaluation
-* Improve how these databases are downloaded automatically and converted to RADIS standard format (see [#210](https://github.com/radis/radis/issues/210))
-
-* Add a Gallery Example in RADIS documentation
+- Improve how these databases are downloaded automatically and converted to RADIS standard format (see [#210](https://github.com/radis/radis/issues/210))
-* Have all code, tests and documentation in GitHub.
+- Add a Gallery Example in RADIS documentation
+- Have all code, tests and documentation in GitHub.
##### Secondary Goals
-* If the student is interested in the radiative-transfer physics, set-up a plane-parallel model to compute multiple-layers atmospheres ([#189](https://github.com/radis/radis/issues/189))
\ No newline at end of file
+- If the student is interested in the radiative-transfer physics, set-up a plane-parallel model to compute multiple-layers atmospheres ([#189](https://github.com/radis/radis/issues/189))
diff --git a/_projects/2022/radis/non_air_diluent.md b/src/content/pages/gsoc/2022/radis/non_air_diluent.md
similarity index 62%
rename from _projects/2022/radis/non_air_diluent.md
rename to src/content/pages/gsoc/2022/radis/non_air_diluent.md
index ea49e5ca..1ff15b35 100644
--- a/_projects/2022/radis/non_air_diluent.md
+++ b/src/content/pages/gsoc/2022/radis/non_air_diluent.md
@@ -3,37 +3,36 @@ name: Non-air diluent
desc: Add non-air diluent and custom collisional broadening in RADIS spectra
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiar with pandas
+ # Student requirements:
+ - Familiar with pandas
difficulty: hard
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/213
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/213
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - erwanp
- - minouHub
- - gagan-aryan
- - anandxkumar
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - erwanp
+ - minouHub
+ - gagan-aryan
+ - anandxkumar
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
- - 350 h
+ - 175 h
+ - 350 h
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that makes it one of the fastest line-by-line spectral codes available.
+The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that makes it one of the fastest line-by-line spectral codes available.
Currently RADIS supports calculation of about every possible molecule, but assumes that it is diluted in air by default. It is possible to manually adjust it to replace air by one other diulter (for instance : compute CO diluted in CO2). The goal of the current project is to make it automatic, and extend it to multiple diluents (for instance: CO diluted in CO2 and H2O).
@@ -41,42 +40,40 @@ No background in spectroscopy and collisional broadening is required, but the st
#### Milestones
-
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy, with a focus on collisional broadening.
+- Training on emission & absorption spectroscopy, with a focus on collisional broadening.
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st evaluation
-Learn the physics :
+Learn the physics :
-* With the help of the mentors, write a Tutorial notebook about collisional broadening and the effect of diluent (for instance using the existing implementation in the very good [HAPI](https://github.com/hitranonline/hapi) code)
+- With the help of the mentors, write a Tutorial notebook about collisional broadening and the effect of diluent (for instance using the existing implementation in the very good [HAPI](https://github.com/hitranonline/hapi) code)
-* Add tutorial to show how to manually replace the broadening coefficients in RADIS (with Pandas)
+- Add tutorial to show how to manually replace the broadening coefficients in RADIS (with Pandas)
-Implement :
+Implement :
-* write a method in [SpectrumFactory](https://github.com/radis/radis/blob/develop/radis/lbl/factory.py#L109) to set-up the dilution gas, and read the corresponding coefficients from the loaded database
+- write a method in [SpectrumFactory](https://github.com/radis/radis/blob/develop/radis/lbl/factory.py#L109) to set-up the dilution gas, and read the corresponding coefficients from the loaded database
-* Update the [pressure_broadening_HWMH](https://github.com/radis/radis/blob/develop/radis/lbl/broadening.py#L249) function to compute more than one diluent
+- Update the [pressure_broadening_HWMH](https://github.com/radis/radis/blob/develop/radis/lbl/broadening.py#L249) function to compute more than one diluent
##### Final evaluation
-Make it user friendly :
-
-* Add a `diluent` parameter in the high-level [calc_spectrum](https://github.com/radis/radis/blob/develop/radis/lbl/calc.py#L29) function
+Make it user friendly :
-* automatically retrieve non-air broadening coefficients from the HITRAN database and convert it to the RADIS database format (see [#213](https://github.com/radis/radis/issues/213) )
+- Add a `diluent` parameter in the high-level [calc_spectrum](https://github.com/radis/radis/blob/develop/radis/lbl/calc.py#L29) function
-* Add a Gallery Example
+- automatically retrieve non-air broadening coefficients from the HITRAN database and convert it to the RADIS database format (see [#213](https://github.com/radis/radis/issues/213) )
-* Have all code, tests and documentation in GitHub
+- Add a Gallery Example
+- Have all code, tests and documentation in GitHub
##### Secondary Goals
-* allow user to specify their own collisional broadening formula
+- allow user to specify their own collisional broadening formula
diff --git a/src/content/pages/gsoc/2022/radis/performance_tweaks.md b/src/content/pages/gsoc/2022/radis/performance_tweaks.md
new file mode 100644
index 00000000..ed3a1b82
--- /dev/null
+++ b/src/content/pages/gsoc/2022/radis/performance_tweaks.md
@@ -0,0 +1,73 @@
+---
+name: Performance Tweaks for RADIS
+desc: Reduce Memory usage and improve performance in RADIS to be able to compute terabyte-scale databases
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
+ - Prior working knowledge with big data handling databases like Vaex
+difficulty: medium
+issues:
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/118
+ - https://github.com/radis/radis/issues/176
+mentors:
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - gagan-aryan
+ - anandxkumar
+ - erwanp
+initiatives:
+ - GSOC
+project_size:
+ - 175 h
+tags:
+ # Different technologies needed
+ - Python
+ - Vaex
+ - Pandas
+ - Git
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - radis
+---
+
+#### Description
+
+The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
+
+However, although the algorithm is very CPU/GPU efficient, the RADIS code is still memory-hungry. The first goal of the current project is to reduce the memory usage of current calculations. Then, it is to replace the current core with libraries better suited to process larger-than-memory-data, which would make it possible to compute spectral databases of up to billions of lines (hundred of GB or terabyte-scale).
+
+#### Milestones
+
+##### Coding starts
+
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+
+- Training on emission & absorption spectroscopy
+
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+
+##### 1st Evaluation
+
+- Work on the existing [memory bottlenecks](https://github.com/radis/radis/issues/118)
+
+- Work on [crunching datatypes](https://github.com/radis/radis-benchmark/pull/11) of various columns to optimise dataframe memory usage
+
+- Setup [memory-performance benchmark](https://github.com/radis/radis-benchmark/tree/master/manual_benchmarks) to track the changes
+
+- Automatically [cache non equilibrium parameters](https://github.com/radis/radis/issues/176) to line database cache
+
+- Merge the changes
+
+##### Final evaluation
+
+- Write the Proof-Of-Concept to do out of the core calculations i.e., use Vaex for computations instead of pandas.
+
+- Merge the idea of the Proof-Of-Concept to the codebase.
+
+- Add [automatic linestrength cutoff](https://github.com/radis/radis/issues/268)
+
+- Add [.h5 loading benchmark](https://github.com/radis/radis-benchmark/issues/4)
+
+- Have all code, tests and documentation in GitHub
diff --git a/_projects/2022/radis/radis_app_improvement.md b/src/content/pages/gsoc/2022/radis/radis_app_improvement.md
similarity index 52%
rename from _projects/2022/radis/radis_app_improvement.md
rename to src/content/pages/gsoc/2022/radis/radis_app_improvement.md
index d6fe1371..cde2ed3a 100644
--- a/_projects/2022/radis/radis_app_improvement.md
+++ b/src/content/pages/gsoc/2022/radis/radis_app_improvement.md
@@ -3,80 +3,75 @@ name: Radis App Improvement
desc: Improve the current Radis Web App involving various features enhancement and bugs fixes
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiar with typescript and python
+ # Student requirements:
+ - Familiar with typescript and python
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/suzil/radis-app/issues/147
- - https://github.com/suzil/radis-app/issues/527
- - https://github.com/suzil/radis-app/issues/211
+ # Related issues (if any) to this project.
+ - https://github.com/suzil/radis-app/issues/147
+ - https://github.com/suzil/radis-app/issues/527
+ - https://github.com/suzil/radis-app/issues/211
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - anandxkumar
- - gagan-aryan
- - erwanp
- - suzil
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - anandxkumar
+ - gagan-aryan
+ - erwanp
+ - suzil
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
- - 350 h
+ - 175 h
+ - 350 h
tags:
-# Different technologies needed
- - TypeScript
- - Python
- - HTML/CSS
- - Git
+ # Different technologies needed
+ - TypeScript
+ - Python
+ - HTML/CSS
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-RADIS app is a web app for high-resolution infrared molecular spectra using RADIS. The goal of this project is to provide an easy-to-use UI instead of writing code. Currently, the [RADIS app](https://www.radis.app/) has a simple interface with basic functionalities that helps create a nice spectral graph using certain parameters but there is a lot of scope for improvements.
-
-The goal of this project is to create a more responsive app while improving and implementing new features and fixing various issues.
+RADIS app is a web app for high-resolution infrared molecular spectra using RADIS. The goal of this project is to provide an easy-to-use UI instead of writing code. Currently, the [RADIS app](https://www.radis.app/) has a simple interface with basic functionalities that helps create a nice spectral graph using certain parameters but there is a lot of scope for improvements.
+The goal of this project is to create a more responsive app while improving and implementing new features and fixing various issues.
#### Milestones
-
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy
+- Training on emission & absorption spectroscopy
-* Have set up a development environment for both [RADIS app](https://github.com/suzil/radis-app) and [RADIS](https://github.com/radis/radis), be familiar with open-source tools (GitHub / Git / Tests)
+- Have set up a development environment for both [RADIS app](https://github.com/suzil/radis-app) and [RADIS](https://github.com/radis/radis), be familiar with open-source tools (GitHub / Git / Tests)
-* Get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture) and [RADIS app Architecture](https://github.com/suzil/radis-app#architecture)
+- Get familiar with [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture) and [RADIS app Architecture](https://github.com/suzil/radis-app#architecture)
##### 1st evaluation
-* Add an option to change the units of [spectral range](https://github.com/suzil/radis-app/issues/147) on the go, and generate an output similar to [Link](https://github.com/suzil/radis-app/issues/147#issuecomment-1072872386)
+- Add an option to change the units of [spectral range](https://github.com/suzil/radis-app/issues/147) on the go, and generate an output similar to the [example output](https://github.com/suzil/radis-app/issues/147#issuecomment-1072872386)
-* Add an advance tab option to add more parameters like `medium`, `wstep`, `optimization`, `truncation`, `broadening_method`, etc to add more command to the users and make the calculations more transparent by displaying important parameters using [hover tooltips](https://github.com/suzil/radis-app/issues/184)
-
-* Migrate from native React to [react-hook-form](https://github.com/suzil/radis-app/issues/347) or any other library to simplify the codebase
+- Add an advance tab option to add more parameters like `medium`, `wstep`, `optimization`, `truncation`, `broadening_method`, etc to add more command to the users and make the calculations more transparent by displaying important parameters using [hover tooltips](https://github.com/suzil/radis-app/issues/184)
+- Migrate from native React to [react-hook-form](https://github.com/suzil/radis-app/issues/347) or any other library to simplify the codebase
##### Final evaluation
-* [Cache Hitran dataset](https://github.com/suzil/radis-app/issues/527) to remove download time to generate spectrum of any new molecule and possibly add Hitemp dataset also (molecules can be hardcoded). Data may be to attach to a persistent network file system like Amazon EFS or on a more available database like DynamoDB
-
-* Add ability to download `.spec` file for the spectrum generated and add an option to upload `.spec` file to the load spectrum
+- [Cache Hitran dataset](https://github.com/suzil/radis-app/issues/527) to remove download time to generate spectrum of any new molecule and possibly add Hitemp dataset also (molecules can be hardcoded). Data may be to attach to a persistent network file system like Amazon EFS or on a more available database like DynamoDB
-* Create a detailed documentation of architecture and workflow of RADIS app
+- Add ability to download `.spec` file for the spectrum generated and add an option to upload `.spec` file to the load spectrum
-* Have all code, tests and documentation in GitHub
+- Create a detailed documentation of architecture and workflow of RADIS app
+- Have all code, tests and documentation in GitHub
##### Secondary Goals
-* Upload your experimental spectrum and be able to fit it (to infer temperature or species)
+- Upload your experimental spectrum and be able to fit it (to infer temperature or species)
-* Add a counter to track the use of app (for eg- how many spectrums are generated over time)
\ No newline at end of file
+- Add a counter to track the use of app (for eg- how many spectrums are generated over time)
diff --git a/_projects/2022/radis/spectrum_fitting.md b/src/content/pages/gsoc/2022/radis/spectrum_fitting.md
similarity index 53%
rename from _projects/2022/radis/spectrum_fitting.md
rename to src/content/pages/gsoc/2022/radis/spectrum_fitting.md
index 4464eb01..69f11c8b 100644
--- a/_projects/2022/radis/spectrum_fitting.md
+++ b/src/content/pages/gsoc/2022/radis/spectrum_fitting.md
@@ -3,66 +3,62 @@ name: Spectrum Fitting
desc: Build a function to automatically fit an experimental spectrum with the output of RADIS, with the best performance possible
# add a short one line description of your project
requirements:
-# Student requirements:
- - Familiar with python
+ # Student requirements:
+ - Familiar with python
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/radis/radis/issues/377
+ # Related issues (if any) to this project.
+ - https://github.com/radis/radis/issues/377
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - anandxkumar
- - gagan-aryan
- - erwanp
- - minouHub
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - anandxkumar
+ - gagan-aryan
+ - erwanp
+ - minouHub
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
- - 350 h
+ - 175 h
+ - 350 h
tags:
-# Different technologies needed
- - Python
- - Git
+ # Different technologies needed
+ - Python
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
+The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
-The RADIS code was developed to characterize the radiation of plasmas, flames and atmospheres. It calculates high-temperature infrared spectra from databases of tens of millions of lines, with a new algorithm that already makes it one of the fastest line-by-line spectral codes available.
-
-An experimental spectrum is compared to calculated spectra until a good match is obtained : then, the experimental temperature is known.
-The efficiency of the fitting process depends on the RADIS calculation times as well as the fitting algorithm used.
-
-The goal of this project is to compare and improve fitting algorithms to reduce the fitting time.
+An experimental spectrum is compared to calculated spectra until a good match is obtained : then, the experimental temperature is known.
+The efficiency of the fitting process depends on the RADIS calculation times as well as the fitting algorithm used.
+The goal of this project is to compare and improve fitting algorithms to reduce the fitting time.
#### Milestones
-
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Training on emission & absorption spectroscopy
+- Training on emission & absorption spectroscopy
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st evaluation
-* Build many reference cases for fitting, under various conditions (narrow spectra, large spectra, one parameter, multiple parameters, etc.)
+- Build many reference cases for fitting, under various conditions (narrow spectra, large spectra, one parameter, multiple parameters, etc.)
-* Select the best fitting algorithm to improve performances
+- Select the best fitting algorithm to improve performances
##### Final evaluation
-* Use RADIS's special features (such as caching spectra & creating databases) to improve fitting times further
+- Use RADIS's special features (such as caching spectra & creating databases) to improve fitting times further
-* Create a detailed documentation of architecture and workflow of the fitting process
+- Create a detailed documentation of architecture and workflow of the fitting process
-* Have all code, tests and documentation in GitHub
\ No newline at end of file
+- Have all code, tests and documentation in GitHub
diff --git a/_projects/2022/stingray/bexvar.md b/src/content/pages/gsoc/2022/stingray/bexvar.md
similarity index 61%
rename from _projects/2022/stingray/bexvar.md
rename to src/content/pages/gsoc/2022/stingray/bexvar.md
index 77a26326..7c5248a2 100644
--- a/_projects/2022/stingray/bexvar.md
+++ b/src/content/pages/gsoc/2022/stingray/bexvar.md
@@ -3,45 +3,46 @@ name: Bexvar in Stingray
desc: Implement the Bayesian Excess variance in Stingray
# add a short one line description of your project
requirements:
-# Contributor requirements:
- - Knowledge of Python
- - Familiar with time series methods
+ # Contributor requirements:
+ - Knowledge of Python
+ - Familiar with time series methods
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://github.com/StingraySoftware/stingray/issues/582
+ # Related issues (if any) to this project.
+ - https://github.com/StingraySoftware/stingray/issues/582
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - matteobachetti
- - dhuppenkothen
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - matteobachetti
+ - dhuppenkothen
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
+ # Different technologies needed
+ - python
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - stingray
+ # suborganization(s) to which this project belongs.
+ - stingray
---
+
Bayesian Excess Variance (bexvar) in Stingray
#### Description
-The Bayesian Excess Variance is a statistical measurement of variability
+The Bayesian Excess Variance is a statistical measurement of variability
in Poisson-distributed (e.g. X-ray or gamma-ray) data.
-The time series from most astronomical facilities, and in particular from
-low-Earth orbit satellites, can only be recorded when the source is visible,
-most of all when it is not below the horizon (or in "Earth occultation" in the
+The time series from most astronomical facilities, and in particular from
+low-Earth orbit satellites, can only be recorded when the source is visible,
+most of all when it is not below the horizon (or in "Earth occultation" in the
case of satellites).
The missing data from the occultation periods can result in spurious variability
if not properly accounted for.
-Another possible source of spurious variability is the presence of variable
+Another possible source of spurious variability is the presence of variable
background signals.
-The Bayesian Excess Variance method is suitable for finding variability in
+The Bayesian Excess Variance method is suitable for finding variability in
gappy X-ray light curves with variable background.
The contributor will work to implement this method in Stingray, a Python library
for the analysis of astronomical time series.
@@ -51,13 +52,13 @@ See [Buchner et al. 2021](https://arxiv.org/abs/2106.14529)
##### Coding starts
-* Take confidence with the Stingray infrastructure.
-* Creation of test cases for the Bexvar method, based on real observations.
+- Take confidence with the Stingray infrastructure.
+- Creation of test cases for the Bexvar method, based on real observations.
##### 1st evaluation
-* Draft implementation of bexvar
+- Draft implementation of bexvar
##### Final evaluation
-* Polished implementation, working tests, documentation
+- Polished implementation, working tests, documentation
diff --git a/src/content/pages/gsoc/2022/stingray/type_hints_stingray.md b/src/content/pages/gsoc/2022/stingray/type_hints_stingray.md
new file mode 100644
index 00000000..e9d39da0
--- /dev/null
+++ b/src/content/pages/gsoc/2022/stingray/type_hints_stingray.md
@@ -0,0 +1,53 @@
+---
+name: Type hints in Stingray
+desc: Using type hints throughout the Stingray library
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Knowledge of Python
+difficulty: easy
+issues:
+ # Related issues (if any) to this project.
+ - https://github.com/StingraySoftware/stingray/issues/544
+mentors:
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - matteobachetti
+ - dhuppenkothen
+initiatives:
+ # The programme under this project wish to run.
+ - GSOC
+project_size:
+ - 175 h
+tags:
+ # Different technologies needed
+ - python
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - stingray
+---
+
+Implementing type hints in the Stingray library
+
+#### Description
+
+Despite being and remaining a dynamically-typed language, Python has
+now a [working infrastructure for type hints](https://www.python.org/dev/peps/pep-0484/).
+For a data analysis library, type hinting can be very useful to avoid explicit testing
+for data types and to facilitate debugging.
+
+#### Milestones (if any)
+
+##### Coding starts
+
+- Take confidence with the Stingray infrastructure.
+- Start implementing type hints in the core modules of Stingray
+
+##### 1st evaluation
+
+- Create tests to enforce type checking in selected methods
+- Extend the type hints infrastructure to most of the code base
+
+##### Final evaluation
+
+- Finish up, polish, and document properly
diff --git a/_projects/2022/sunpy/database.md b/src/content/pages/gsoc/2022/sunpy/database.md
similarity index 77%
rename from _projects/2022/sunpy/database.md
rename to src/content/pages/gsoc/2022/sunpy/database.md
index a79ac05b..8ff8ea1d 100644
--- a/_projects/2022/sunpy/database.md
+++ b/src/content/pages/gsoc/2022/sunpy/database.md
@@ -2,24 +2,24 @@
name: Database as a data client
desc: Creating a new database module
requirements:
- - Familiarity with Python
- - Familiarity with SQLAlchemy
+ - Familiarity with Python
+ - Familiarity with SQLAlchemy
difficulty: high
issues:
-- https://github.com/sunpy/sunpy/issues/5880
+ - https://github.com/sunpy/sunpy/issues/5880
mentors:
- - cadair
- - wtbarnes
- - nabobalis
+ - cadair
+ - wtbarnes
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
- - python
+ - python
collaborating_projects:
- - sunpy
- - parfive
+ - sunpy
+ - parfive
---
#### Description
@@ -31,6 +31,7 @@ Over the years, this module has seen little development and has not been linked
For an overview of the current database, you can read [our user guide to acquire data](https://docs.sunpy.org/en/stable/guide/acquiring_data/database.html) and [our tour introduction to the database](https://docs.sunpy.org/en/stable/guide/tour.html#database-package).
The project has several aims:
+
- A creation of a new sub-package, `sunpy.net.database`.
- When a user does a data search and download, the search and file information will be saved to a local database.
- The user can then do the same search and will be informed that the files already exist locally avoiding doing the original download again.
@@ -44,16 +45,16 @@ More technical details can be found on the linked issue.
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of the project.
-* Have set up a development environment.
-* Familiar with the database module
+- Engaged with the community and understand the motivation and challenges of the project.
+- Have set up a development environment.
+- Familiar with the database module
##### 1st evaluation
-* Working prototype of a database "client"
-* Have all code, tests and documentation in GitHub.
+- Working prototype of a database "client"
+- Have all code, tests and documentation in GitHub.
##### Final evaluation
-* Finished database "client"
-* Have all code, tests and documentation in GitHub.
+- Finished database "client"
+- Have all code, tests and documentation in GitHub.
diff --git a/_projects/2022/sunpy/helioviewer.md b/src/content/pages/gsoc/2022/sunpy/helioviewer.md
similarity index 69%
rename from _projects/2022/sunpy/helioviewer.md
rename to src/content/pages/gsoc/2022/sunpy/helioviewer.md
index 6f0f815a..5e0c45d1 100644
--- a/_projects/2022/sunpy/helioviewer.md
+++ b/src/content/pages/gsoc/2022/sunpy/helioviewer.md
@@ -2,25 +2,25 @@
name: HelioViewer Python API Wrapper
desc: Creating a full Python wrapper for the Unirest Helioviewer API
requirements:
- - Familiarity with Python
- - Some familiarity with Unirest/HTTP requests (ideally)
+ - Familiarity with Python
+ - Some familiarity with Unirest/HTTP requests (ideally)
difficulty: medium
issues:
- - https://github.com/sunpy/sunpy/issues/2860
- - https://github.com/sunpy/sunpy/issues/2762
- - https://github.com/sunpy/sunpy/issues/2878
+ - https://github.com/sunpy/sunpy/issues/2860
+ - https://github.com/sunpy/sunpy/issues/2762
+ - https://github.com/sunpy/sunpy/issues/2878
mentors:
- - wafels
- - nabobalis
- - dgarciabriseno
+ - wafels
+ - nabobalis
+ - dgarciabriseno
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
- - python
+ - python
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -43,17 +43,17 @@ Finally, we will then create a new client that interfaces with the `sunpy` downl
##### Coding starts
-* Engaged with the community and understand the motivation and challenges of the project.
-* Have set up a development environment.
-* Helped to setup the new package.
+- Engaged with the community and understand the motivation and challenges of the project.
+- Have set up a development environment.
+- Helped to setup the new package.
##### 1st evaluation
-* Have 45% of the Helioviewer API wrapped.
-* Have all code, tests and documentation in GitHub.
+- Have 45% of the Helioviewer API wrapped.
+- Have all code, tests and documentation in GitHub.
##### Final evaluation
-* All of the Helioviewer API is wrapped within the package.
-* Fido Client created for Helioviewer.
-* Have all code, tests and documentation in GitHub.
+- All of the Helioviewer API is wrapped within the package.
+- Fido Client created for Helioviewer.
+- Have all code, tests and documentation in GitHub.
diff --git a/_projects/2022/sunpy/scraper.md b/src/content/pages/gsoc/2022/sunpy/scraper.md
similarity index 76%
rename from _projects/2022/sunpy/scraper.md
rename to src/content/pages/gsoc/2022/sunpy/scraper.md
index 26ac4529..0bc30e8c 100644
--- a/_projects/2022/sunpy/scraper.md
+++ b/src/content/pages/gsoc/2022/sunpy/scraper.md
@@ -2,25 +2,25 @@
name: Scraper rewrite
desc: Improve the current scraper to download data
requirements:
- - Familiarity with Python
- - Knowledge of Python regex
- - Familiar with web protocols
+ - Familiarity with Python
+ - Knowledge of Python regex
+ - Familiar with web protocols
difficulty: medium
issues:
- - https://github.com/sunpy/sunpy/issues/4888
+ - https://github.com/sunpy/sunpy/issues/4888
mentors:
- - nabobalis
- - samaloney
- - hayesla
+ - nabobalis
+ - samaloney
+ - hayesla
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
- - python
- - web
+ - python
+ - web
collaborating_projects:
- - sunpy
+ - sunpy
---
This project will provide the ability to parse URL information in a programmatic way.
@@ -48,13 +48,13 @@ There are more technical details on the linked issue.
##### Coding starts
-* Already have a development environment setup
-* Understand the project and the API design. Having asked questions if you do not.
+- Already have a development environment setup
+- Understand the project and the API design. Having asked questions if you do not.
##### 1st evaluation
-* Partial skeleton of scraper written.
+- Partial skeleton of scraper written.
##### Final evaluation
-* Functional replacement ready for review and merging into sunpy.
+- Functional replacement ready for review and merging into sunpy.
diff --git a/_projects/2022/sunpy/theme.md b/src/content/pages/gsoc/2022/sunpy/theme.md
similarity index 64%
rename from _projects/2022/sunpy/theme.md
rename to src/content/pages/gsoc/2022/sunpy/theme.md
index dd3bb311..01797c6b 100644
--- a/_projects/2022/sunpy/theme.md
+++ b/src/content/pages/gsoc/2022/sunpy/theme.md
@@ -2,25 +2,25 @@
name: SunPy Website and Theme Rewrite
desc: Replace the sphinx base theme with a newer version.
requirements:
- - Experience with Sphinx and themes ideally.
- - Experience with Jinja templates ideally.
+ - Experience with Sphinx and themes ideally.
+ - Experience with Jinja templates ideally.
difficulty: high
issues:
- - https://github.com/sunpy/sunpy-sphinx-theme/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+ - https://github.com/sunpy/sunpy-sphinx-theme/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
mentors:
- - cadair
- - nabobalis
+ - cadair
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
- - 350 h
+ - 175 h
+ - 350 h
tags:
- - sunpy
- - sphinx
- - web
+ - sunpy
+ - sphinx
+ - web
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -31,11 +31,11 @@ This theme is based upon [Sphinx Bootstrap theme](https://github.com/ryan-roemer
The main aim is to move our theme to use a new [Pydata's base theme](https://pydata-sphinx-theme.readthedocs.io/en/latest/). This gives us a new layout and more modern bootstrap versions.
The issue is that the way we have been using our theme has a few incompatibilities that either need patching to the pydata theme or overridden in our version.
-
-1. A method to create the header bar to match how we currently do, see sunpy.org for an example.
- - We really like our dropdowns
-2. A method to anchor the footer bar instead of having it scroll.
- - Pydata's will only show it when you scroll to the very bottom.
+
+1. A method to create the header bar to match how we currently do, see sunpy.org for an example.
+ - We really like our dropdowns
+2. A method to anchor the footer bar instead of having it scroll.
+ - Pydata's will only show it when you scroll to the very bottom.
If there is time left over, we will then work through the remaining issues we have in our theme repository once the groundwork has been finished.
@@ -43,14 +43,14 @@ If there is time left over, we will then work through the remaining issues we ha
##### Coding starts
-* Already have a development environment setup
-* Understand the project and sphinx build system.
-* Tried to build and modify the pydata-sphinx-theme with our website/documentation
+- Already have a development environment setup
+- Understand the project and sphinx build system.
+- Tried to build and modify the pydata-sphinx-theme with our website/documentation
##### 1st evaluation
-* Have a working header and footer bars.
+- Have a working header and footer bars.
##### Final evaluation
-* Have finished updating the sphinx theme and finished any extensions to the base project.
+- Have finished updating the sphinx theme and finished any extensions to the base project.
diff --git a/_projects/2023/gnuastro/python_wrappers.md b/src/content/pages/gsoc/2023/gnuastro/python_wrappers.md
similarity index 69%
rename from _projects/2023/gnuastro/python_wrappers.md
rename to src/content/pages/gsoc/2023/gnuastro/python_wrappers.md
index 3fa2a088..c35b9a95 100644
--- a/_projects/2023/gnuastro/python_wrappers.md
+++ b/src/content/pages/gsoc/2023/gnuastro/python_wrappers.md
@@ -2,31 +2,30 @@
name: Gnuastro library in Python
desc: Python wrappers over the Gnuastro C library.
requirements:
-# Student requirements:
- - Low-level Python and Numpy (their C library).
+ # Student requirements:
+ - Low-level Python and Numpy (their C library).
difficulty: low
issues:
-# Related issues (if any) to this project.
- - https://github.com/Jash-Shah/pyGnuastro
+ # Related issues (if any) to this project.
+ - https://github.com/Jash-Shah/pyGnuastro
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - mohammad-akhlaghi
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - mohammad-akhlaghi
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
- - C
+ # Different technologies needed
+ - python
+ - C
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - Gnuastro
+ # suborganization(s) to which this project belongs.
+ - Gnuastro
---
-
#### Description
Gnuastro is primarily written in C because astronomical datasets are large and thus need to be efficient with few dependencies.
@@ -36,7 +35,7 @@ On the other hand, many projects today are done in Python, almost excuslively us
Python and Numpy are actually written in C, therefore they have very well-defined interfaces for communicating with installed C libraries.
For example see [the core C library of Numpy](https://numpy.org/doc/stable/reference/c-api/index.html).
-As part of GSoC 2022, Jash Shah completed a first implementation of pyGnuastro, see https://github.com/Jash-Shah/pyGnuastro and https://test.pypi.org/project/pygnuastro.
+As part of GSoC 2022, Jash Shah completed a first implementation of pyGnuastro, see and .
This was mostly focused on the low-level build system (for example to be integrated nicely with PyPi).
With the inclusion of more libraries we discovered that Gnuastro's error reporting also [needs modification](https://savannah.gnu.org/task/?16263) for blending into Python.
Jash also progressed nicely on this front in GSoC 2022, but it is not yet finished.
@@ -49,22 +48,22 @@ To get started, check [our GSoC 2023 checklist](https://savannah.gnu.org/support
#### Milestones (if any)
- * Completing [our GSoC 2022 checklist](https://savannah.gnu.org/support/index.php?110827#comment0)
+- Completing [our GSoC 2022 checklist](https://savannah.gnu.org/support/index.php?110827#comment0)
- * Completing the re-design of Gnuastro's error functionality.
+- Completing the re-design of Gnuastro's error functionality.
- * Adding wrappers for Gnuastro library functions in pyGnuastro.
+- Adding wrappers for Gnuastro library functions in pyGnuastro.
##### Coding starts
-* Learning the new error reporting functionality.
+- Learning the new error reporting functionality.
-* Implementing the error reporting function in some basic functions.
+- Implementing the error reporting function in some basic functions.
##### 1st evaluation
-* Implementing some of Gnuastro's basic libraries in pyGnuastro (with new error reporting feature).
+- Implementing some of Gnuastro's basic libraries in pyGnuastro (with new error reporting feature).
##### Final evaluation
-* Implementing all the necessary library functions in pyGnuastro, and adding high-level functionality to pyGnuastro like Gnuastro's programs.
+- Implementing all the necessary library functions in pyGnuastro, and adding high-level functionality to pyGnuastro like Gnuastro's programs.
diff --git a/src/content/pages/gsoc/2023/index.md b/src/content/pages/gsoc/2023/index.md
new file mode 100644
index 00000000..3706f5fa
--- /dev/null
+++ b/src/content/pages/gsoc/2023/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2023"
+show_main: false
+season: 2023
+---
diff --git a/_projects/2023/radis/common_api.md b/src/content/pages/gsoc/2023/radis/common_api.md
similarity index 63%
rename from _projects/2023/radis/common_api.md
rename to src/content/pages/gsoc/2023/radis/common_api.md
index e393b9fc..daac5200 100644
--- a/_projects/2023/radis/common_api.md
+++ b/src/content/pages/gsoc/2023/radis/common_api.md
@@ -2,83 +2,77 @@
name: Common API for large molecular databases
desc: The project aims at improving a common API currently used by RADIS and Exojax to retrieve large spectroscopy databases, by adding new databases, making it more user-friendly, and eventually stand-alone.
-
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
difficulty: medium
issues:
-- https://github.com/HajimeKawahara/exojax/discussions/257
-- https://github.com/radis/radis/issues/474
+ - https://github.com/HajimeKawahara/exojax/discussions/257
+ - https://github.com/radis/radis/issues/474
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - minouHub
- - HajimeKawahara
- - erwanp
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - minouHub
+ - HajimeKawahara
+ - erwanp
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - Python
- - Vaex
- - Pandas
- - Git
+ # Different technologies needed
+ - Python
+ - Vaex
+ - Pandas
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-
The RADIS code was developed for the characterization of plasmas, flames and atmospheres. High-temperature spectral calculations require to resolve the shape of tens of millions of lines, which is the usual performance bottleneck. RADIS implements a new algorithm to compute these lineshapes, and is already one of the fastest line-by-line spectral codes available. It can also compute many different types of spectra (absorption / emission / equilibrium / nonequilibrium). In a typical calculation, a database of coefficients is loaded and these coefficients are multiplied according to physics laws to generate a set of linestrength in a spectrum.
RADIS can handle different databases such as HITRAN, HITEMP, EXOMOL, GEISA, etc. Another open-source code, called EXOJAX, exchanged portions of code with RADIS until some parts of both codes became very similar. Currently, a database API is written in the RADIS code. The main goal of the current project is to improve this common API to download and manage databases. The mentee will not start from scratch because the community already worked on the problem and set up a frame for this big merge of code built around a [DatabaseManager](https://github.com/radis/radis/blob/develop/radis/api/dbmanager.py#L51) class.
-
#### Milestones
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
-* Get familiar with RADIS architecture, the [DatabaseManager](https://github.com/radis/radis/blob/develop/radis/api/dbmanager.py#L51) class, and what was already implemented.
+- Get familiar with RADIS architecture, the [DatabaseManager](https://github.com/radis/radis/blob/develop/radis/api/dbmanager.py#L51) class, and what was already implemented.
##### 1st Evaluation
-* Add new molecular databases: Kurucz, TheoReTS
+- Add new molecular databases: Kurucz, TheoReTS
-* Add documentation
-
-* Gather feedbacks from current users of ExoJax and RADIS
+- Add documentation
+- Gather feedbacks from current users of ExoJax and RADIS
##### 2nd Evaluation
-* Add atomic database: NIST
+- Add atomic database: NIST
-* Based on the user feebacks and the hands-on experience acquired in the 1st round, refactor the Common API as required to make it more user-friendly. It might require major architectural changes.
+- Based on the user feebacks and the hands-on experience acquired in the 1st round, refactor the Common API as required to make it more user-friendly. It might require major architectural changes.
-* Set up documentation of a stand-alone version of the Database API
+- Set up documentation of a stand-alone version of the Database API
##### Final evaluation
-* Add collisional-induced-absorption (CIA) databases which are a different type of databases than line databases
-
-* If ready and, make the Common API stand-alone.
+- Add collisional-induced-absorption (CIA) databases which are a different type of databases than line databases
-* Have all code, tests, and documentation in GitHub.
+- If ready and, make the Common API stand-alone.
+- Have all code, tests, and documentation in GitHub.
#### Secondary Goals
-* Document architecture and developer guide when facing unclear points that may appear.
+- Document architecture and developer guide when facing unclear points that may appear.
-* Review pull requests from other RADIS contributors, especially parallel GSoC mentee
\ No newline at end of file
+- Review pull requests from other RADIS contributors, especially parallel GSoC mentee
diff --git a/_projects/2023/radis/optimizing_radis_app.md b/src/content/pages/gsoc/2023/radis/optimizing_radis_app.md
similarity index 72%
rename from _projects/2023/radis/optimizing_radis_app.md
rename to src/content/pages/gsoc/2023/radis/optimizing_radis_app.md
index 7be853b2..946e318e 100644
--- a/_projects/2023/radis/optimizing_radis_app.md
+++ b/src/content/pages/gsoc/2023/radis/optimizing_radis_app.md
@@ -4,51 +4,50 @@ desc: Our project is all about enhancing user experience to the next level! We'r
# add a short one line description of your project
requirements:
-# Student requirements
- - TypeScript
- - React
- - FastApi
- - Testing (pytest && vitest)
+ # Student requirements
+ - TypeScript
+ - React
+ - FastApi
+ - Testing (pytest && vitest)
difficulty: medium
issues:
- -
- -
- -
+ - https://github.com/suzil/radis-app/issues/669
+ - https://github.com/suzil/radis-app/issues/85
+ - https://github.com/suzil/radis-app/issues/674
mentors:
-# First person in contact; mentors may change before project starts
-# GitHub handles
- - erwanp
- - arunavabasu-03
+ # First person in contact; mentors may change before project starts
+ # GitHub handles
+ - erwanp
+ - arunavabasu-03
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
-
+ - 350 h
+
tags:
-# Different technologies needed
- - Python
- - TypeScript
- - JavaScript
- - React
- - Fastapi
- - Pandas
- - Git
+ # Different technologies needed
+ - Python
+ - TypeScript
+ - JavaScript
+ - React
+ - Fastapi
+ - Pandas
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs
- - radis
-
+ # suborganization(s) to which this project belongs
+ - radis
---
#### Description
RADIS app is a web application for Radis high-resolution infrared molecular spectra. Instead of writing code, this project aims to create an intuitive user interface (UI).It use radis internally to produce spectrum, and the updated version and radis algorithm make it incredibly efficient to compute the millions of lines in only a few minutes.Radis app leverages React 18 to offer the user interface, and FastApi on the backend. We are using react-hook-form for the fastest user experience and to maintain performance on the client slide. In the backend, we use FastApi to offer the fastest response.We created this app with the intention of giving both researchers and non-researchers access to the most valuable elements of Radis via a straightforward online application. Our team and contributors are always trying to make the app better. The app has additional features and capabilities in newer versions.
-Our project is all about enhancing user experience to the next level! We're committed to bringing you cutting-edge features and fine-tuning these features for maximum performance and efficiency, and rigorous testing to ensure they meet the needs of our highly valued end users.
+Our project is all about enhancing user experience to the next level! We're committed to bringing you cutting-edge features and fine-tuning these features for maximum performance and efficiency, and rigorous testing to ensure they meet the needs of our highly valued end users.
#### Milestones
@@ -58,11 +57,11 @@ Our project is all about enhancing user experience to the next level! We're comm
- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS App](https://github.com/suzil/radis-app)
-- Get familiar with RADIS App's Frontend (how radis app interface works and simulates spectrum )and Backend System (how the app integrated with radis to produce spectrum)
+- Get familiar with RADIS App's Frontend (how radis app interface works and simulates spectrum )and Backend System (how the app integrated with radis to produce spectrum)
##### 1st Evaluation
-- Implement exomol database in radis app api
+- Implement exomol database in radis app api
- Fitting feature (user imports its experimental spectrum)
@@ -78,7 +77,7 @@ Our project is all about enhancing user experience to the next level! We're comm
- Improving code coverage and test all the basic features using vitetest && migrating old test too.
-- Fix the feedback loop for user side(user can submit feedbacks in app !)
+- Fix the feedback loop for user side(user can submit feedbacks in app !)
- Have all code, tests, and documentation in GitHub.
diff --git a/src/content/pages/gsoc/2023/radis/out_of_core_calculations.md b/src/content/pages/gsoc/2023/radis/out_of_core_calculations.md
new file mode 100644
index 00000000..339b7907
--- /dev/null
+++ b/src/content/pages/gsoc/2023/radis/out_of_core_calculations.md
@@ -0,0 +1,76 @@
+---
+name: Out-of-core calculations to reduce memory usage
+desc: The project aims at reducing RADIS memory usage, and make it possible to compute very-large spectral databases of tens of gigabytes that do not fit in RAM memory.
+
+# add a short one line description of your project
+requirements:
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
+ - Prior working knowledge with big data handling databases like Vaex
+difficulty: medium
+issues:
+
+mentors:
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - minouHub
+ - anandxkumar
+ - erwanp
+initiatives:
+ - GSOC
+project_size:
+ - 350 h
+tags:
+ # Different technologies needed
+ - Python
+ - Vaex
+ - Pandas
+ - Git
+collaborating_projects:
+ # suborganization(s) to which this project belongs.
+ - radis
+---
+
+#### Description
+
+The RADIS code was developed for the characterization of plasmas, flames and atmospheres. High-temperature spectral calculations require to resolve the shape of tens of millions of lines, which is the usual performance bottleneck. RADIS implements a new algorithm to compute these lineshapes, and is already one of the fastest line-by-line spectral codes available. It can also compute many different types of spectra (absorption / emission / equilibrium / nonequilibrium).
+
+However, although the algorithm is very CPU/GPU efficient, the RADIS code is still memory-hungry. Databases are currently loaded in RADIS using the VAEX package, but the operations to calculate the spectra are performed using the PANDAS library. VAEX is a similar table management tool than PANDAS but uses memory mapping, a zero memory copy policy, and lazy computations for the best performance. **The main goal of the current project is to refactor RADIS so that dataframes are only manipulated via the VAEX format**. Potentially, this work would make it possible to compute spectral databases of up to billions of lines (hundred of GB or terabyte-scale databases).
+
+#### Milestones
+
+##### Coding starts
+
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+
+- Training on emission & absorption spectroscopy
+
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+
+- Get familiar with RADIS architecture
+
+##### 1st Evaluation
+
+- Create a standalone spectroscopy code working with Out-of-core Vaex calculations (with minimum features: absorption code under equilibrium)
+
+##### 2nd Evaluation
+
+- Create a standalone spectroscopy code working with Out-of-core Vaex calculations (with minimum features: absorption code under equilibrium)
+
+- Implement VAEX out-of-core calculations directly in a single RADIS calculation path (e.g. equilibrium, one lineshape calculation routine), replacing PANDAS
+
+- Implement tests to verify that the implementation of VAEX will not have different output than the current PANDAS implementation
+
+##### Final evaluation
+
+- Implement VAEX out-of-core calculations directly in all othe other RADIS calculation paths (nonequilibrium, all lineshape calculations routine), replacing PANDAS
+
+- Have all code, tests, and documentation in GitHub.
+
+#### Secondary Goals
+
+- Document architecture and developer guide when facing unclear points that may appear.
+
+- Review pull requests from other RADIS contributors, especially parallel GSoC mentee
+
+- List and explore consequences for GPU calculations already implemented in RADIS
diff --git a/_projects/2023/stingray/gaussianprocesses.md b/src/content/pages/gsoc/2023/stingray/gaussianprocesses.md
similarity index 56%
rename from _projects/2023/stingray/gaussianprocesses.md
rename to src/content/pages/gsoc/2023/stingray/gaussianprocesses.md
index 452e06db..1341fbda 100644
--- a/_projects/2023/stingray/gaussianprocesses.md
+++ b/src/content/pages/gsoc/2023/stingray/gaussianprocesses.md
@@ -3,71 +3,70 @@ name: Searching for Quasi-Periodic Oscillations with Gaussian Processes
desc: This project implements a new submodule into the time series analysis package stingray to help us search astronomical data for periodic variations in brightness using Gaussian Process regression.
# add a short one line description of your project
requirements:
-# Student requirements:
-- experience with Python and the scientific stack
-- experience with Gaussian Processes and/or JAX welcome
+ # Student requirements:
+ - experience with Python and the scientific stack
+ - experience with Gaussian Processes and/or JAX welcome
difficulty: high
issues:
-# Related issues (if any) to this project.
-- https://github.com/StingraySoftware/stingray/issues/660
+ # Related issues (if any) to this project.
+ - https://github.com/StingraySoftware/stingray/issues/660
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - dhuppenkothen
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - dhuppenkothen
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
- - time series
- - stingray
- - Gaussian Processes
+ # Different technologies needed
+ - python
+ - time series
+ - stingray
+ - Gaussian Processes
collaborating_projects:
-# suborganisation(s) to which this project belongs.
-- stingray
+ # suborganization(s) to which this project belongs.
+ - stingray
---
#### Description
-Stingray provides methods for analysing astronomical time series,
-in particular data from space telescopes observing some of the most
-extreme sources in the universe: violent stellar explosions, matter
-falling into black holes, and rapidly spinning neutron stars. Among
-all the variations of brightness we can study in these sources,
-periodic and quasi-periodic oscillations are among the most interesting,
-because they can often be directly tied to astrophysical processes in
-the object. Finding them in practice can be difficult, and the methods
-currently implemented in stingray have serious limitations that are
-often not met by the data we observe. Recently, Huebner et al
-(2022, arXiv:2205.12716) proposed a new method for searching for
-quasi-periodic oscillations, including an associated software tool
-(https://github.com/MoritzThomasHuebner/QPOEstimation). While it
-works, it is somewhat unwieldy, not well documented, and not well
-integrated with existing functionality in stingray. In this project,
-we will simplify the existing code, port it to the tinygp library,
-integrate it with stingray in a new submodule, and release it together
+Stingray provides methods for analysing astronomical time series,
+in particular data from space telescopes observing some of the most
+extreme sources in the universe: violent stellar explosions, matter
+falling into black holes, and rapidly spinning neutron stars. Among
+all the variations of brightness we can study in these sources,
+periodic and quasi-periodic oscillations are among the most interesting,
+because they can often be directly tied to astrophysical processes in
+the object. Finding them in practice can be difficult, and the methods
+currently implemented in stingray have serious limitations that are
+often not met by the data we observe. Recently, Huebner et al
+(2022, arXiv:2205.12716) proposed a new method for searching for
+quasi-periodic oscillations, including an associated software tool
+(). While it
+works, it is somewhat unwieldy, not well documented, and not well
+integrated with existing functionality in stingray. In this project,
+we will simplify the existing code, port it to the tinygp library,
+integrate it with stingray in a new submodule, and release it together
with a tutorial.
-
#### Milestones (if any)
#### Community Bonding Period
-* Familiarize with the QPOEstimation code from Huebner et al (2022) and stingray
-* Formulate design plan for the stingray submodule
-* Set up development environment
+
+- Familiarize with the QPOEstimation code from Huebner et al (2022) and stingray
+- Formulate design plan for the stingray submodule
+- Set up development environment
##### Coding starts
-* Start implementation of QPOEstimation using tinygp as a stingray submodule
+- Start implementation of QPOEstimation using tinygp as a stingray submodule
##### 1st evaluation
-* Basic functionality implemented, docstrings and tests exist
+- Basic functionality implemented, docstrings and tests exist
##### Final evaluation
-* QPO search tool is fully functional, including a case study and a tutorial
-
+- QPO search tool is fully functional, including a case study and a tutorial
diff --git a/_projects/2023/stingray/lombscargle.md b/src/content/pages/gsoc/2023/stingray/lombscargle.md
similarity index 58%
rename from _projects/2023/stingray/lombscargle.md
rename to src/content/pages/gsoc/2023/stingray/lombscargle.md
index ad38c2e2..3ff53a39 100644
--- a/_projects/2023/stingray/lombscargle.md
+++ b/src/content/pages/gsoc/2023/stingray/lombscargle.md
@@ -1,30 +1,30 @@
---
name: Astronomy with Unevenly Sampled Data
-desc: Implementing time series analysis methods for unevenly sampled data for X-ray astronomy data
+desc: Implementing time series analysis methods for unevenly sampled data for X-ray astronomy data
requirements:
- - Python
- - Experience with time series methods and/or Fourier analysis welcome
+ - Python
+ - Experience with time series methods and/or Fourier analysis welcome
difficulty: medium
issues:
-# Related issues (if any) to this project.
-- https://github.com/StingraySoftware/stingray/issues/689
+ # Related issues (if any) to this project.
+ - https://github.com/StingraySoftware/stingray/issues/689
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - dhuppenkothen
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - dhuppenkothen
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
-# Different technologies needed
- - python
- -
+ # Different technologies needed
+ - python
+ -
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - stingray
+ # suborganization(s) to which this project belongs.
+ - stingray
---
#### Description
@@ -34,18 +34,20 @@ Stingray provides methods for analysing astronomical time series, in particular
#### Milestones (if any)
##### Community Bonding
+
Community Bonding
-* Scope out which spectral timing methods can be adapted to uneven sampling, and which functionality to adapt from astropy
-* Set up development environment and become familiar with stingray core functionality
+
+- Scope out which spectral timing methods can be adapted to uneven sampling, and which functionality to adapt from astropy
+- Set up development environment and become familiar with stingray core functionality
##### Coding starts
-* Start working on implementation of Lomb-Scargle periodogram as a stingray class
+- Start working on implementation of Lomb-Scargle periodogram as a stingray class
##### 1st evaluation
-* Lomb-Scargle periodogram class implemented
+- Lomb-Scargle periodogram class implemented
##### Final evaluation
-* Implementation of unevenly sampled time lags, and potential other functionality
+- Implementation of unevenly sampled time lags, and potential other functionality
diff --git a/_projects/2023/sunpy/hek.md b/src/content/pages/gsoc/2023/sunpy/hek.md
similarity index 76%
rename from _projects/2023/sunpy/hek.md
rename to src/content/pages/gsoc/2023/sunpy/hek.md
index 516ed031..b841232c 100644
--- a/_projects/2023/sunpy/hek.md
+++ b/src/content/pages/gsoc/2023/sunpy/hek.md
@@ -2,28 +2,28 @@
name: Improved solar feature and event representation
desc: Improve the current representation of solar features and events
requirements:
- - Familiarity with Python
+ - Familiarity with Python
difficulty: medium to high
issues:
- - https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+HEK
+ - https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+HEK
mentors:
- - wafels
- - nabobalis
+ - wafels
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
- - 350 h
+ - 175 h
+ - 350 h
tags:
- - python
+ - python
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
`sunpy` provides access to solar feature and event data held by the [Heliophysics Event Knowledgebase](https://www.lmsal.com/hek/).
-Descriptions of the properties of each feature and event are given [here](https://www.lmsal.com/hek/VOEvent_Spec.html).
+Descriptions of the properties of each feature and event are given in the [HEK VOEvent specification](https://www.lmsal.com/hek/VOEvent_Spec.html).
Feature and event properties include their type, physical extent, location, lifetime, and other feature/event properties that are specific to a given feature/event.
For example, the time at which the energy flux of a solar flare is at a maximum is relevant for flares, but is not relevant to the description of a coronal hole.
@@ -45,18 +45,18 @@ More information is found on the linked issues.
##### Community Bonding Period
-* Understand the project and the API design.
-* Setup a development environment.
+- Understand the project and the API design.
+- Setup a development environment.
##### Coding starts
-* Experimenting with the current representation of HEK feature and event data.
-* Consider parsing the html page for the specification.
+- Experimenting with the current representation of HEK feature and event data.
+- Consider parsing the html page for the specification.
##### 1st evaluation
-* Partial skeleton of the new HEK feature/event object written.
+- Partial skeleton of the new HEK feature/event object written.
##### Final evaluation
-* Functional replacement ready for review and merging into `sunpy`.
+- Functional replacement ready for review and merging into `sunpy`.
diff --git a/_projects/2023/sunpy/scraper.md b/src/content/pages/gsoc/2023/sunpy/scraper.md
similarity index 73%
rename from _projects/2023/sunpy/scraper.md
rename to src/content/pages/gsoc/2023/sunpy/scraper.md
index d95616f8..1a18dfd9 100644
--- a/_projects/2023/sunpy/scraper.md
+++ b/src/content/pages/gsoc/2023/sunpy/scraper.md
@@ -2,26 +2,26 @@
name: Scraper rewrite
desc: Improve the current scraper to download data
requirements:
- - Familiarity with Python
- - Knowledge of Python regex
- - Familiar with web protocols
+ - Familiarity with Python
+ - Knowledge of Python regex
+ - Familiar with web protocols
difficulty: high
issues:
- - https://github.com/sunpy/sunpy/issues/4888
+ - https://github.com/sunpy/sunpy/issues/4888
mentors:
- - nabobalis
- - samaloney
- - hayesla
+ - nabobalis
+ - samaloney
+ - hayesla
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
- - 350 h
+ - 175 h
+ - 350 h
tags:
- - python
- - web
+ - python
+ - web
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -47,17 +47,17 @@ More information is found on the linked issue.
##### Community Bonding Period
-* Understand the project and the API design.
-* Setup a development environment.
+- Understand the project and the API design.
+- Setup a development environment.
##### Coding starts
-* Experimenting with the current Scrapper and reviewing the current Class.
+- Experimenting with the current Scrapper and reviewing the current Class.
##### 1st evaluation
-* Partial skeleton of scraper written.
+- Partial skeleton of scraper written.
##### Final evaluation
-* Functional replacement ready for review and merging into `sunpy`.
+- Functional replacement ready for review and merging into `sunpy`.
diff --git a/_projects/2023/sunpy/sunkit_image.md b/src/content/pages/gsoc/2023/sunpy/sunkit_image.md
similarity index 77%
rename from _projects/2023/sunpy/sunkit_image.md
rename to src/content/pages/gsoc/2023/sunpy/sunkit_image.md
index 27731735..cbc26490 100644
--- a/_projects/2023/sunpy/sunkit_image.md
+++ b/src/content/pages/gsoc/2023/sunpy/sunkit_image.md
@@ -2,25 +2,25 @@
name: sunkit-image and integration with sunpy
desc: Improve the integration of sunkit-image to work with SunPy data structures
requirements:
- - Experience with Python.
- - Experience with sunpy Map.
- - Experience with NDcube.
+ - Experience with Python.
+ - Experience with sunpy Map.
+ - Experience with NDcube.
difficulty: medium to low
issues:
- - https://github.com/sunpy/sunpy-sphinx-theme/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+ - https://github.com/sunpy/sunpy-sphinx-theme/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
mentors:
- - nabobalis
- - wtbarnes
+ - nabobalis
+ - wtbarnes
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
- - sunpy
- - Python
- - refactoring
+ - sunpy
+ - Python
+ - refactoring
collaborating_projects:
- - sunpy
+ - sunpy
---
#### Description
@@ -47,16 +47,17 @@ If there is some time left over:
##### Community Bonding Period
-* Scope out what functions need changing and get familiar with the library.
-* Setup a development environment.
+- Scope out what functions need changing and get familiar with the library.
+- Setup a development environment.
+
##### Coding starts
-* Start working on the first function.
+- Start working on the first function.
##### 1st evaluation
-* Have around ~50% of the functions taken care of.
+- Have around ~50% of the functions taken care of.
##### Final evaluation
-* Finish updating each function in sunkit-image.
+- Finish updating each function in sunkit-image.
diff --git a/_projects/2024/gnuastro/opencl_integration.md b/src/content/pages/gsoc/2024/gnuastro/opencl_integration.md
similarity index 64%
rename from _projects/2024/gnuastro/opencl_integration.md
rename to src/content/pages/gsoc/2024/gnuastro/opencl_integration.md
index 9a37a278..ac4c26d0 100644
--- a/_projects/2024/gnuastro/opencl_integration.md
+++ b/src/content/pages/gsoc/2024/gnuastro/opencl_integration.md
@@ -2,33 +2,32 @@
name: OpenCL integration with Gnuastro
desc: GPU support inside Gnuastro C library.
requirements:
-# Student requirements:
- - C
- - GNU Autotools (build system)
+ # Student requirements:
+ - C
+ - GNU Autotools (build system)
difficulty: medium
issues:
-# Related issues (if any) to this project.
- - https://labeeb-7z.github.io/Blogs/2023/08/12/Integrating-OpenCL.html
+ # Related issues (if any) to this project.
+ - https://labeeb-7z.github.io/Blogs/2023/08/12/Integrating-OpenCL.html
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - labeeb-7z
- - mohammad-akhlaghi
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - labeeb-7z
+ - mohammad-akhlaghi
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - C
- - OpenCL
+ # Different technologies needed
+ - C
+ - OpenCL
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - Gnuastro
+ # suborganization(s) to which this project belongs.
+ - Gnuastro
---
-
#### Description
GNU Astronomy Utilities (Gnuastro) is an astronomical data processing package containing a dynamically linked library as well as command-line programs for high-level access. Astronomical data can be large and most operations highly parallelizable. Until now, only CPU parallelization has been implemented in Gnuastro, but not yet on GPUs. GPUs are special hardware which are specifically designed for such operations and can significantly reduce the overall execution time significantly for specific tasks.
@@ -36,35 +35,34 @@ GNU Astronomy Utilities (Gnuastro) is an astronomical data processing package co
In GSoC 2023, the idea of allowing Gnuastro to leverage GPUs for several parallel subroutines kicked off by integrating the Gnuastro C library with CUDA. However CUDA is a high-level interface, is not free software, and is limited to NVIDIA devices. Therefore it was decided to use the low-level and free standard OpenCL (Open Computing Language). OpenCL is an open, cross-platform framework for programming diverse accelerators at a very low level. Integration with OpenCL will allow users of Gnuastro to run parallel subroutines on specialised hardware (like GPU) regardless of its manufacturer.
At the conclusion of GSoC 2023, a first draft of OpenCL was integrated in Gnuastro. For more see the [report of GSoC 2023](https://labeeb-7z.github.io/Blogs/2023/08/22/Final-Report.html)
-The goal for this summer is to solidify a mature and generic interface to that implementation, such that a Gnuastro user that has a GPU device can use that while a user without a GPU can do exactly the same operation on a CPU. This will be tested by gradually implementing the interface to parallelizable operations (that are currently only using the CPU). Finally, we need to perform extensive testing of the OpenCL-accelerated subroutines on various hardware configurations to ensure robustness and compatibility.
+The goal for this summer is to solidify a mature and generic interface to that implementation, such that a Gnuastro user that has a GPU device can use that while a user without a GPU can do exactly the same operation on a CPU. This will be tested by gradually implementing the interface to parallelizable operations (that are currently only using the CPU). Finally, we need to perform extensive testing of the OpenCL-accelerated subroutines on various hardware configurations to ensure robustness and compatibility.
To get started, check our [GSoC 2024 checklist](https://savannah.gnu.org/support/index.php?110827#comment0).
-
#### Milestones (if any)
- * Setting up the low-level wrapper infrastructure for calling OpenCL kernels from Gnuastro for parallel subroutines (with minimal requirements on the developer to know OpenCL; allowing them to focus on the algorithm and even test without having a GPU, not the OpenCL details).
+- Setting up the low-level wrapper infrastructure for calling OpenCL kernels from Gnuastro for parallel subroutines (with minimal requirements on the developer to know OpenCL; allowing them to focus on the algorithm and even test without having a GPU, not the OpenCL details).
- * Migrating the existing pthreads-based (CPU) wrappers in Gnuastro to the new wrappers.
+- Migrating the existing pthreads-based (CPU) wrappers in Gnuastro to the new wrappers.
- * Allowing users to choose GPU execution from the Command line interface and user documentation.
+- Allowing users to choose GPU execution from the Command line interface and user documentation.
##### Coding starts
-* Reviewing the work in GSoC 2023 and understand the work that was done before to understand all its details.
+- Reviewing the work in GSoC 2023 and understand the work that was done before to understand all its details.
-* Learning OpenCL's API and C interface
+- Learning OpenCL's API and C interface
-* Testing and debugging the work in various scenarios.
+- Testing and debugging the work in various scenarios.
##### 1st evaluation
-* A robust and smooth low level integration of OpenCL with Gnuastro which allows developers to write high level kernels easily compatible and usable inside Gnuastro.
+- A robust and smooth low level integration of OpenCL with Gnuastro which allows developers to write high level kernels easily compatible and usable inside Gnuastro.
-* Have at least a few OpenCL optimised subroutines merged into the main branch of Gnuastro.
+- Have at least a few OpenCL optimised subroutines merged into the main branch of Gnuastro.
##### Final evaluation
-* Completing all the required OpenCL kernels alongside their testing, merged with the main branch of Gnuastro.
+- Completing all the required OpenCL kernels alongside their testing, merged with the main branch of Gnuastro.
-* User documentation and Command line wrappers for using the newly available GPU functionality.
+- User documentation and Command line wrappers for using the newly available GPU functionality.
diff --git a/src/content/pages/gsoc/2024/index.md b/src/content/pages/gsoc/2024/index.md
new file mode 100644
index 00000000..79a546a9
--- /dev/null
+++ b/src/content/pages/gsoc/2024/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2024"
+show_main: false
+season: 2024
+---
diff --git a/_projects/2024/irsa-fornax/astrodata_DL.md b/src/content/pages/gsoc/2024/irsa-fornax/astrodata_DL.md
similarity index 70%
rename from _projects/2024/irsa-fornax/astrodata_DL.md
rename to src/content/pages/gsoc/2024/irsa-fornax/astrodata_DL.md
index c91052d8..33a53592 100644
--- a/_projects/2024/irsa-fornax/astrodata_DL.md
+++ b/src/content/pages/gsoc/2024/irsa-fornax/astrodata_DL.md
@@ -2,25 +2,25 @@
name: Astronomical data enhancement with DL
desc: Improve usability of incomplete archival datasets
requirements:
- - Experience with data processing, AI, and machine learning
- - Experience with Python
- - Experience with AI/ML libraries such as TensorFlor and PyTorch
+ - Experience with data processing, AI, and machine learning
+ - Experience with Python
+ - Experience with AI/ML libraries such as TensorFlor and PyTorch
difficulty: very high
issues:
- - https://github.com/nasa-fornax/fornax-demo-notebooks/issues/243
+ - https://github.com/nasa-fornax/fornax-demo-notebooks/issues/243
mentors:
- - xoubish
- - jkrick
+ - xoubish
+ - jkrick
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h / large
+ - 350 h / large
tags:
- - irsa
- - fornax
- - Python
+ - irsa
+ - fornax
+ - Python
collaborating_projects:
- - irsa-fornax
+ - irsa-fornax
---
# Description
@@ -41,36 +41,32 @@ contribute meaningfully to scientific advancements. A crucial part of our method
involves the development and testing of a data unification schema on large samples
of Active Galactic Nuclei (AGNs), serving as a robust testbed for our algorithms.
-
This effort will not only validate the algorithms' ability to address complex data
challenges but also highlight their applicability across astronomical research.
-
## Goals
-* Design and optimize a deep learning architecture tailored for the enhancement and unification of astronomical archival data.
-* Conduct comprehensive testing of the data unification schema on large samples of AGNs
-
+- Design and optimize a deep learning architecture tailored for the enhancement and unification of astronomical archival data.
+- Conduct comprehensive testing of the data unification schema on large samples of AGNs
## Project requirements
-* Strong foundation in computer science, with a specialization in data processing, AI, and machine learning (ML)
-* Proficiency in programming, particularly Python, and familiarity with AI/ML libraries and frameworks such as TensorFlow and PyTorch
-* Expertise in data analysis, capable of assessing the impact of different augmentation techniques on the informational content and practical utility of datasets.
-* Collaborative spirit, prepared to work within the NASA science platform group and engage with astronomers, ensuring that the project's technical solutions are aligned with scientific objectives and effectively contribute to the field.
-
+- Strong foundation in computer science, with a specialization in data processing, AI, and machine learning (ML)
+- Proficiency in programming, particularly Python, and familiarity with AI/ML libraries and frameworks such as TensorFlow and PyTorch
+- Expertise in data analysis, capable of assessing the impact of different augmentation techniques on the informational content and practical utility of datasets.
+- Collaborative spirit, prepared to work within the NASA science platform group and engage with astronomers, ensuring that the project's technical solutions are aligned with scientific objectives and effectively contribute to the field.
### Community Bonding Period
-* Familiarize yourself with the current code and the challenges.
-* Setup a development environment.
+- Familiarize yourself with the current code and the challenges.
+- Setup a development environment.
### Coding starts
#### 1st evaluation
-* Have developed an initial DL architecture for gap filling in archival AGN data.
+- Have developed an initial DL architecture for gap filling in archival AGN data.
#### Final evaluation
-* Have optimized the DL architecture for data unification from multiple archives, with quantified improvement metrics.
+- Have optimized the DL architecture for data unification from multiple archives, with quantified improvement metrics.
diff --git a/_projects/2024/irsa-fornax/light_curve_dask.md b/src/content/pages/gsoc/2024/irsa-fornax/light_curve_dask.md
similarity index 80%
rename from _projects/2024/irsa-fornax/light_curve_dask.md
rename to src/content/pages/gsoc/2024/irsa-fornax/light_curve_dask.md
index 25a916d1..4e99cc1c 100644
--- a/_projects/2024/irsa-fornax/light_curve_dask.md
+++ b/src/content/pages/gsoc/2024/irsa-fornax/light_curve_dask.md
@@ -2,25 +2,25 @@
name: Enable Dask execution of NASA time-domain analysis
desc: Improve scalability of time-domain analysis
requirements:
- - Experience with Python
- - Experience with Dask
- - Background with astronomy is desired but not required.
+ - Experience with Python
+ - Experience with Dask
+ - Background with astronomy is desired but not required.
difficulty: high
issues:
- - https://github.com/nasa-fornax/fornax-demo-notebooks/issues/240
+ - https://github.com/nasa-fornax/fornax-demo-notebooks/issues/240
mentors:
- - jkrick
- - troyraen
+ - jkrick
+ - troyraen
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h / large
+ - 350 h / large
tags:
- - irsa
- - fornax
- - python
+ - irsa
+ - fornax
+ - python
collaborating_projects:
- - irsa-fornax
+ - irsa-fornax
---
# Description
@@ -31,7 +31,6 @@ development of that console by trying out novel, big-data science projects and t
for use by the astrophysical community. We seek a contributor who can enable our code to be executed efficiently at
scale on a Dask cluster provided by the science console.
-
This project will focus on a science use case that is based on the idea of collecting data from all of NASA's
archival time domain datasets for a user-defined set of targets. This produces "light curves" -- roughly,
brightness as a function of time -- in multiple wavelengths for each target. The science that can result from
@@ -50,16 +49,16 @@ different challenges to running at scale on a Dask cluster.
### Community Bonding Period
-* Familiarize yourself with the current code and the challenges to running at scale.
-* Setup a development environment.
+- Familiarize yourself with the current code and the challenges to running at scale.
+- Setup a development environment.
### Coding starts
#### 1st evaluation
-* Have written new code that executes the light curve collection code on a Dask cluster.
+- Have written new code that executes the light curve collection code on a Dask cluster.
#### Final evaluation
-* Have implemented a solution that runs smoothly on a Dask cluster and finishes in less time than the current
-code takes.
+- Have implemented a solution that runs smoothly on a Dask cluster and finishes in less time than the current
+ code takes.
diff --git a/_projects/2024/radis/Kurucz_and_commonAPI.md b/src/content/pages/gsoc/2024/radis/Kurucz_and_commonAPI.md
similarity index 66%
rename from _projects/2024/radis/Kurucz_and_commonAPI.md
rename to src/content/pages/gsoc/2024/radis/Kurucz_and_commonAPI.md
index 0c0b54cb..dec7582c 100644
--- a/_projects/2024/radis/Kurucz_and_commonAPI.md
+++ b/src/content/pages/gsoc/2024/radis/Kurucz_and_commonAPI.md
@@ -2,81 +2,76 @@
name: Common API for large molecular databases
desc: The project aims at improving a adding new databases, Kurucz atomic database, and eventually develop a common API currently used by RADIS and Exojax to retrieve large spectroscopy databases.
-
# add a short one line description of your project
requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
difficulty: medium
issues:
-- https://github.com/HajimeKawahara/exojax/discussions/257
-- https://github.com/radis/radis/issues/474
+ - https://github.com/HajimeKawahara/exojax/discussions/257
+ - https://github.com/radis/radis/issues/474
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - minouHub
- - erwanp
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - minouHub
+ - erwanp
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - Python
- - Vaex
- - Pandas
- - Git
+ # Different technologies needed
+ - Python
+ - Vaex
+ - Pandas
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-
#### Description
-
The RADIS code was developed for the characterization of plasmas, flames and atmospheres. High-temperature spectral calculations require to resolve the shape of tens of millions of lines, which is the usual performance bottleneck. RADIS implements a new algorithm to compute these lineshapes, and is already one of the fastest line-by-line spectral codes available. It can also compute many different types of spectra (absorption / emission / equilibrium / nonequilibrium). In a typical calculation, a database of coefficients is loaded and these coefficients are multiplied according to physics laws to generate a set of linestrength in a spectrum.
RADIS can handle different databases such as HITRAN, HITEMP, EXOMOL, GEISA, etc. Another open-source code, called EXOJAX, exchanged portions of code with RADIS until some parts of both codes became very similar. Currently, a database API is written in the RADIS code. The main goal of the current project is to add the atomic Kurucz database to RADIS. The second objective is to improve the aformentioned common API to download and manage all databases. The mentee will not start from scratch because the community already worked on the problem and set up a frame for this big merge of code built around a [DatabaseManager](https://github.com/radis/radis/blob/develop/radis/api/dbmanager.py#L51) class. Previous work on the Kurucz database can be found in [this PR](https://github.com/radis/radis/pull/601).
-
#### Milestones
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
-* Get familiar with RADIS architecture, the [DatabaseManager](https://github.com/radis/radis/blob/develop/radis/api/dbmanager.py#L51) class, and what was already implemented.
+- Get familiar with RADIS architecture, the [DatabaseManager](https://github.com/radis/radis/blob/develop/radis/api/dbmanager.py#L51) class, and what was already implemented.
##### 1st Evaluation
-* Add new molecular databases: Kurucz
-
-* Add documentation
+- Add new molecular databases: Kurucz
-* Gather feedbacks from current users of ExoJax and RADIS
+- Add documentation
+- Gather feedbacks from current users of ExoJax and RADIS
##### 2nd Evaluation
-* Add atomic database: NIST
+- Add atomic database: NIST
-* Based on the user feebacks and the hands-on experience acquired in the 1st round, refactor the Common API as required to make it more user-friendly. It might require major architectural changes.
+- Based on the user feebacks and the hands-on experience acquired in the 1st round, refactor the Common API as required to make it more user-friendly. It might require major architectural changes.
-* Set up documentation of a stand-alone version of the Database API
+- Set up documentation of a stand-alone version of the Database API
##### Final evaluation
-* Have all code, tests, and documentation in GitHub.
+- Have all code, tests, and documentation in GitHub.
-* If ready and, make the Common API stand-alone.
+- If ready and, make the Common API stand-alone.
#### Secondary Goals
-* Add collisional-induced-absorption (CIA) databases which are a different type of databases than line databases
+- Add collisional-induced-absorption (CIA) databases which are a different type of databases than line databases
-* Document architecture and developer guide when facing unclear points that may appear.
+- Document architecture and developer guide when facing unclear points that may appear.
-* Review pull requests from other RADIS contributors
+- Review pull requests from other RADIS contributors
diff --git a/_projects/2024/stingray/dashboard.md b/src/content/pages/gsoc/2024/stingray/dashboard.md
similarity index 71%
rename from _projects/2024/stingray/dashboard.md
rename to src/content/pages/gsoc/2024/stingray/dashboard.md
index fdbd5612..3cb1f27d 100644
--- a/_projects/2024/stingray/dashboard.md
+++ b/src/content/pages/gsoc/2024/stingray/dashboard.md
@@ -2,49 +2,49 @@
name: A quicklook dashboard for X-ray astronomy with Stingray
desc: Create a dashboard that displays some quicklook analysis of astronomical X-ray observations.
requirements:
- - Experience with Python
+ - Experience with Python
difficulty: medium
issues:
- - https://github.com/StingraySoftware/stingray/issues/794
+ - https://github.com/StingraySoftware/stingray/issues/794
mentors:
- - matteobachetti
- - mgullik
+ - matteobachetti
+ - mgullik
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h / large
+ - 350 h / large
tags:
- - python
+ - python
collaborating_projects:
- - stingray
+ - stingray
---
# Description
-Stingray is a Python library designed to perform times series analysis and
-related tasks on astronomical light curves. It supports a range of commonly-used
-Fourier analysis techniques, as well as extensions for analyzing pulsar data,
-simulating data sets, and statistical modelling. Stingray is designed to be easy
+Stingray is a Python library designed to perform times series analysis and
+related tasks on astronomical light curves. It supports a range of commonly-used
+Fourier analysis techniques, as well as extensions for analyzing pulsar data,
+simulating data sets, and statistical modelling. Stingray is designed to be easy
to extend, and easy to incorporate into data analysis workflows and pipelines.
-When analyzing a new astronomical dataset, it is often convenient to have some quicklook
+When analyzing a new astronomical dataset, it is often convenient to have some quicklook
visualization with basic information. For X-ray astronomy, the usual information is a
-light curve (a time series showing the flux of the source), a periodogram, spectral
-colors (the ratio of fluxes in different energy bands of the X-rays).
+light curve (a time series showing the flux of the source), a periodogram, spectral
+colors (the ratio of fluxes in different energy bands of the X-rays).
This project leverages Stingray's flexibility to create a quicklook dashboard with basic
-interactivity. The principle is simple: given an event list, one calculates a light curve,
-a power spectrum with default options, maybe a Lomb-Scargle periodogram, color-color or
-HID diagrams, maybe power-color and color hue-rms diagrams. It should be somewhat
+interactivity. The principle is simple: given an event list, one calculates a light curve,
+a power spectrum with default options, maybe a Lomb-Scargle periodogram, color-color or
+HID diagrams, maybe power-color and color hue-rms diagrams. It should be somewhat
configurable, so that one can apply a set of custom options to a series of observations with ease.
Each plot kind should be a separate plugin, with configurable options. The dashboard should
display the plugins that the user requests with a custom JSON configuration file.
-The dashboard could work as an interactive visualization web page (just for zooming in and out),
+The dashboard could work as an interactive visualization web page (just for zooming in and out),
or just make a PDF or image with the plots.
-A bonus could be making it the start for an interactive *analysis* interface (not just
+A bonus could be making it the start for an interactive _analysis_ interface (not just
plotting, but also recalculate the quantities with different parameters and refresh the plots)
## Milestones
@@ -56,18 +56,18 @@ plotting, but also recalculate the quantities with different parameters and refr
### Community Bonding Period
-* Understand Stingray scientific case.
-* Setup a development environment.
+- Understand Stingray scientific case.
+- Setup a development environment.
### Coding starts
-* Design the general structure of the dashboard and the plugins.
-* Use Stingray's tutorials to set up the basic plugins for quicklook
+- Design the general structure of the dashboard and the plugins.
+- Use Stingray's tutorials to set up the basic plugins for quicklook
### 1st evaluation
-* Partial skeleton of the dashboard complete.
+- Partial skeleton of the dashboard complete.
### Final evaluation
-* Dashboard ready for deployment and properly documented.
+- Dashboard ready for deployment and properly documented.
diff --git a/_projects/2024/sunpy/_3dplotting.md b/src/content/pages/gsoc/2024/sunpy/_3dplotting.md
similarity index 57%
rename from _projects/2024/sunpy/_3dplotting.md
rename to src/content/pages/gsoc/2024/sunpy/_3dplotting.md
index 80fe43e9..0e3e5ed8 100644
--- a/_projects/2024/sunpy/_3dplotting.md
+++ b/src/content/pages/gsoc/2024/sunpy/_3dplotting.md
@@ -2,31 +2,31 @@
name: Improve sunkit-pyvista
desc: Improve the 3D plotting capabilities within the SunPy Ecosystem
requirements:
- - Familiarity with Python
- - Familiarity with pyvista
+ - Familiarity with Python
+ - Familiarity with pyvista
difficulty: medium to high
issues:
- - https://github.com/sunpy/sunkit-pyvista/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
- - https://github.com/sunpy/sunkit-pyvista/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc
+ - https://github.com/sunpy/sunkit-pyvista/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+ - https://github.com/sunpy/sunkit-pyvista/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc
mentors:
- -
- - nabobalis
+ -
+ - nabobalis
project_size:
- - 175 h / medium
+ - 175 h / medium
tags:
- - python
- - plotting
- - 3D
+ - python
+ - plotting
+ - 3D
collaborating_projects:
- - sunpy
+ - sunpy
---
# Description
The SunPy Ecosystem currently has well developed support for making 2D plots (with Matplotlib), but currently a simpler interface for making 3D plots.
-[sunkit-pyvista](https://github.com/sunpy/sunkit-pyvista) came out of a previous GSoC project and enables 3D plotting of sunpy Maps.
-This is achieved by wrapping [pyvista](https://github.com/pyvista/pyvista) and adding a "solar-spin" on their API.
+[sunkit-pyvista](https://github.com/sunpy/sunkit-pyvista) came out of a previous GSoC project and enables 3D plotting of sunpy Maps.
+This is achieved by wrapping [pyvista](https://github.com/pyvista/pyvista) and adding a "solar-spin" on their API.
However, after this GSoC, progress was much slower and issues have cropped up with time, the main one being the the API currently has a `plotter.plotter` to access the underlying pyvista API.
It also lacks some useful features such as plotting current sheets and animations.
@@ -37,18 +37,18 @@ This project will be addressing these issues, in part by taking over existing pu
### Community Bonding Period
-* Get familiar with sunkit-pyvista.
-* Get familiar with pyvista.
-* Setup a development environment.
+- Get familiar with sunkit-pyvista.
+- Get familiar with pyvista.
+- Setup a development environment.
### Coding starts
-* Start working on the first issue.
+- Start working on the first issue.
#### 1st evaluation
-* Have around ~50% of the issues and pull requests taken care of.
+- Have around ~50% of the issues and pull requests taken care of.
#### Final evaluation
-* Ideally have 100% of the issues and pull requests finished.
+- Ideally have 100% of the issues and pull requests finished.
diff --git a/_projects/2024/sunpy/eclipse.md b/src/content/pages/gsoc/2024/sunpy/eclipse.md
similarity index 70%
rename from _projects/2024/sunpy/eclipse.md
rename to src/content/pages/gsoc/2024/sunpy/eclipse.md
index 76bfbbde..ed43d222 100644
--- a/_projects/2024/sunpy/eclipse.md
+++ b/src/content/pages/gsoc/2024/sunpy/eclipse.md
@@ -2,24 +2,24 @@
name: Solar Eclipse analysis with sunpy
desc: Process and analysis photographs taken of the total solar eclipse that crosses the US in 2024
requirements:
- - Experience with Python
- - Background with Physics or Astronomy
+ - Experience with Python
+ - Background with Physics or Astronomy
difficulty: very high
issues:
- - https://github.com/sunpy/sunpy/issues/7387
+ - https://github.com/sunpy/sunpy/issues/7387
mentors:
- - nabobalis
- - ehsteve
- - ayshih
+ - nabobalis
+ - ehsteve
+ - ayshih
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h / large
+ - 350 h / large
tags:
- - sunpy
- - Python
+ - sunpy
+ - Python
collaborating_projects:
- - sunpy
+ - sunpy
---
# Description
@@ -27,11 +27,11 @@ collaborating_projects:
On April 8 2024, a total solar eclipse will will cross North America, passing over Mexico, the United States, and Canada.
It is expected that more than 20 million people will be able to witness it and we can expect a large number of amateur photographers to record the event.
-Thus the purpose of this project is to develop tools to enable ground-based amateur photographs of the solar corona taken during the eclipse to be imported into ``sunpy`` and processed to enable comparison with space-based data sets already available in ``sunpy`` such as SDO/AIA.
+Thus the purpose of this project is to develop tools to enable ground-based amateur photographs of the solar corona taken during the eclipse to be imported into `sunpy` and processed to enable comparison with space-based data sets already available in `sunpy` such as SDO/AIA.
Eclipse photographs also frequently require processing steps such as stacking and aligning of multiple exposures, sharpening, and flat-fielding.
-This may require new algorithms to be developed or existing tools in SciPy or other libraries to be identified and applied.
+This may require new algorithms to be developed or existing tools in SciPy or other libraries to be identified and applied.
-This project will need to create the components within ``sunpy`` but also other libraries such as ``sunkit-image``.
+This project will need to create the components within `sunpy` but also other libraries such as `sunkit-image`.
There are several steps:
@@ -52,17 +52,17 @@ A background in Physics or Astronomy with experience of astropy or sunpy coordin
### Community Bonding Period
-* Get familiar wih solar coordinates and solar eclipse data.
-* Setup a development environment.
+- Get familiar wih solar coordinates and solar eclipse data.
+- Setup a development environment.
### Coding starts
-* Start by recreating the eclipse path image.
+- Start by recreating the eclipse path image.
#### 1st evaluation
-* Have updated the old notebook code to work with newer data.
+- Have updated the old notebook code to work with newer data.
#### Final evaluation
-* Ideally finished each bullet pointed task.
+- Ideally finished each bullet pointed task.
diff --git a/_projects/2024/sunpy/hek.md b/src/content/pages/gsoc/2024/sunpy/hek.md
similarity index 79%
rename from _projects/2024/sunpy/hek.md
rename to src/content/pages/gsoc/2024/sunpy/hek.md
index c4779736..c9e64321 100644
--- a/_projects/2024/sunpy/hek.md
+++ b/src/content/pages/gsoc/2024/sunpy/hek.md
@@ -2,27 +2,27 @@
name: Improved solar feature and event representation
desc: Improve the current representation of solar features and events
requirements:
- - Experience with Python
+ - Experience with Python
difficulty: low to medium
issues:
- - https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+HEK
+ - https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+HEK
mentors:
- - wafels
- - nabobalis
+ - wafels
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 90h / small
+ - 90h / small
tags:
- - python
+ - python
collaborating_projects:
- - sunpy
+ - sunpy
---
# Description
`sunpy` provides access to solar feature and event data held by the [Heliophysics Event Knowledgebase](https://www.lmsal.com/hek/).
-Descriptions of the properties of each feature and event are given [here](https://www.lmsal.com/hek/VOEvent_Spec.html).
+Descriptions of the properties of each feature and event are given in the [HEK VOEvent specification](https://www.lmsal.com/hek/VOEvent_Spec.html).
Feature and event properties include their type, physical extent, location, lifetime, and other feature/event properties that are specific to a given feature/event.
For example, the time at which the energy flux of a solar flare is at a maximum is relevant for flares, but is not relevant to the description of a coronal hole.
@@ -47,18 +47,18 @@ For this project, being familiar with astropy regions and some solar coordinate
### Community Bonding Period
-* Understand the project and the API design.
-* Setup a development environment.
+- Understand the project and the API design.
+- Setup a development environment.
### Coding starts
-* Experimenting with the current representation of HEK feature and event data.
-* Consider parsing the html page for the specification.
+- Experimenting with the current representation of HEK feature and event data.
+- Consider parsing the html page for the specification.
### 1st evaluation
-* Partial skeleton of the new HEK feature/event object written.
+- Partial skeleton of the new HEK feature/event object written.
### Final evaluation
-* Functional replacement ready for review and merging into `sunpy`.
+- Functional replacement ready for review and merging into `sunpy`.
diff --git a/_projects/2024/sunpy/ndcube_io.md b/src/content/pages/gsoc/2024/sunpy/ndcube_io.md
similarity index 78%
rename from _projects/2024/sunpy/ndcube_io.md
rename to src/content/pages/gsoc/2024/sunpy/ndcube_io.md
index cba2291c..eb0696f9 100644
--- a/_projects/2024/sunpy/ndcube_io.md
+++ b/src/content/pages/gsoc/2024/sunpy/ndcube_io.md
@@ -2,23 +2,23 @@
name: Serialisation of NDCube classes to ASDF
desc: This project will add functionality to `ndcube` and other relevant packages to save all the ndcube classes to ASDF files.
requirements:
- - Experience with Python
+ - Experience with Python
difficulty: medium to high
issues:
- - https://github.com/sunpy/ndcube/issues/111
+ - https://github.com/sunpy/ndcube/issues/111
mentors:
- - Cadair
- - DanRyanIrish
- - braingram
+ - Cadair
+ - DanRyanIrish
+ - braingram
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h / medium
+ - 175 h / medium
tags:
- - sunpy
- - Python
+ - sunpy
+ - Python
collaborating_projects:
- - sunpy
+ - sunpy
---
# Description
@@ -35,45 +35,45 @@ Since `ndcube` currently does not support ASDF at all, the additional steps of a
The first phase of this project will be to enable serializing a `ndcube.NDCube` object when `.data` is a numpy array and `.wcs` is a [`gwcs.WCS`](https://gwcs.readthedocs.io/) object.
To do this the following classes will need to have `Converters` written for them in `ndcube`:
-* `NDCube`
-* `GlobalCoords`
-* `ExtraCoords`
+- `NDCube`
+- `GlobalCoords`
+- `ExtraCoords`
The next step will be to extend this basic support with support for `astropy.wcs.WCS` classes as the `NDCube.wcs` property.
To do this a `Converter` for `astropy.wcs.WCS` will need to be added to the [`asdf_astropy`](https://github.com/astropy/asdf-astropy/) package.
Then to add support for all the WCS wrapper classes implemented in [ndcube](https://github.com/sunpy/ndcube/tree/main/ndcube/wcs/wrappers) and [astropy](https://github.com/astropy/astropy/blob/main/astropy/wcs/wcsapi/wrappers/sliced_wcs.py#L105) so that `NDCube` object which have been manipulated can also be saved to ASDF.
So by the end of this step the following classes will have converters written:
-* `astropy.wcs.WCS`
-* `SlicedLowLevelWCS`
-* `ResampledLowLevelWCS`
-* `CompoundLowLevelWCS`
-* `ReorderedLowLevelWCS`
+- `astropy.wcs.WCS`
+- `SlicedLowLevelWCS`
+- `ResampledLowLevelWCS`
+- `CompoundLowLevelWCS`
+- `ReorderedLowLevelWCS`
The final stage for the `ndcube.NDCube` object will be to ensure that a `NDCube` object with all optional properties set, such as `mask`, `uncertainty` and `psf` is able to be saved to ASDF.
This will at minimum require writing a `Converter` and schema for the `astropy.nddata.NDUncertainty` class in `asdf_astropy`.
The next phase of the project will be to add support for the other `ndcube` data types:
-* `NDCubeSequence`
-* `NDCollection`
+- `NDCubeSequence`
+- `NDCollection`
## Goals
### Community Bonding Period
-* Setup a development environment.
-* Familiarize yourself with `asdf` extensions, `Converters` and schemas.
+- Setup a development environment.
+- Familiarize yourself with `asdf` extensions, `Converters` and schemas.
### Before 1st Evaluation
-* Add the `asdf` extension infrastructure to `ndcube`.
-* Write Converters and schemas for `GlobalCoords` and `ExtraCoords` (with tests).
-* Write Converter and schema for `NDCube` (with tests).
-* Extend test suite with other examples of saving and loading `NDCube` objects backed by different `gwcs.WCS` objects etc which can be reused as test cases later.
+- Add the `asdf` extension infrastructure to `ndcube`.
+- Write Converters and schemas for `GlobalCoords` and `ExtraCoords` (with tests).
+- Write Converter and schema for `NDCube` (with tests).
+- Extend test suite with other examples of saving and loading `NDCube` objects backed by different `gwcs.WCS` objects etc which can be reused as test cases later.
#### Before Final evaluation
-* Have opened PRs to `asdf_astropy` for `astropy.wcs.WCS` and `astropy.nddata.NDUncertainty` classes.
-* Have written tests in `ndcube` of serializing `NDCube` objects of higher complexity (`.uncertainty`, `.mask` etc) and with `astropy.wcs.WCS` objects.
-* Add `Converters` and schemas for `NDCubeSequence` and `NDCollection` classes to `ndcube`.
+- Have opened PRs to `asdf_astropy` for `astropy.wcs.WCS` and `astropy.nddata.NDUncertainty` classes.
+- Have written tests in `ndcube` of serializing `NDCube` objects of higher complexity (`.uncertainty`, `.mask` etc) and with `astropy.wcs.WCS` objects.
+- Add `Converters` and schemas for `NDCubeSequence` and `NDCollection` classes to `ndcube`.
diff --git a/_projects/2024/sunpy/sunkit_image.md b/src/content/pages/gsoc/2024/sunpy/sunkit_image.md
similarity index 79%
rename from _projects/2024/sunpy/sunkit_image.md
rename to src/content/pages/gsoc/2024/sunpy/sunkit_image.md
index 0803afd8..588b6791 100644
--- a/_projects/2024/sunpy/sunkit_image.md
+++ b/src/content/pages/gsoc/2024/sunpy/sunkit_image.md
@@ -2,22 +2,22 @@
name: Improve sunkit-image
desc: Improve the features of sunkit-image
requirements:
- - Experience with Python
+ - Experience with Python
difficulty: low to medium
issues:
- - https://github.com/sunpy/sunkit-image/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
+ - https://github.com/sunpy/sunkit-image/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
mentors:
- - wtbarnes
- - nabobalis
+ - wtbarnes
+ - nabobalis
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h / medium
+ - 175 h / medium
tags:
- - sunpy
- - Python
+ - sunpy
+ - Python
collaborating_projects:
- - sunpy
+ - sunpy
---
# Description
@@ -44,17 +44,17 @@ If there is some time left over:
### Community Bonding Period
-* Get familiar with the library.
-* Setup a development environment.
+- Get familiar with the library.
+- Setup a development environment.
### Coding starts
-* Start working on the first issue.
+- Start working on the first issue.
#### 1st evaluation
-* Have around ~50% of the issues taken care of.
+- Have around ~50% of the issues taken care of.
#### Final evaluation
-* Ideally have 100% of the issues finished.
+- Ideally have 100% of the issues finished.
diff --git a/_projects/2024/sunpy/sunpy-soar.md b/src/content/pages/gsoc/2024/sunpy/sunpy-soar.md
similarity index 82%
rename from _projects/2024/sunpy/sunpy-soar.md
rename to src/content/pages/gsoc/2024/sunpy/sunpy-soar.md
index 17593c0e..5401a230 100644
--- a/_projects/2024/sunpy/sunpy-soar.md
+++ b/src/content/pages/gsoc/2024/sunpy/sunpy-soar.md
@@ -2,24 +2,24 @@
name: Querying SOAR Metdata
desc: Adding proper metadata handling to sunpy-soar
requirements:
- - Experience with Python
+ - Experience with Python
difficulty: medium to high
issues:
- - https://github.com/sunpy/sunpy-soar/issues/46
- - https://github.com/sunpy/sunpy-soar/issues/66
+ - https://github.com/sunpy/sunpy-soar/issues/46
+ - https://github.com/sunpy/sunpy-soar/issues/66
mentors:
- - hayesla
- - nabobalis
- - ebuchlin
+ - hayesla
+ - nabobalis
+ - ebuchlin
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h / medium
+ - 175 h / medium
tags:
- - sunpy
- - Python
+ - sunpy
+ - Python
collaborating_projects:
- - sunpy
+ - sunpy
---
# Description
@@ -37,7 +37,7 @@ This translates Python code into the correct values required to do any query and
As we are not planning to add every metadata as a new attribute, we will make use of more generic ones to enable filtering, similar to how it is done for another data provider, the [JSOC](https://docs.sunpy.org/en/latest/generated/api/sunpy.net.jsoc.Keyword.html#sunpy.net.jsoc.Keyword).
If we do need to add new ones, they should have a very specific reason to exist, or we might need to add support for them within sunpy for other data
-For example, there are existing attributes like that can be mapped like ``Wavelength`` which would take values from the following table ``v___fits`` with its column `wavelength`.
+For example, there are existing attributes like that can be mapped like `Wavelength` which would take values from the following table `v___fits` with its column `wavelength`.
[More examples are here.](https://github.com/sunpy/sunpy-soar/issues/46#issuecomment-1557936562)
This will project will partly be working out all of the connections for each table to enable these "translations".
@@ -52,17 +52,17 @@ We do have one stretch goal and that would be to look into using [astroquery TAP
### Community Bonding Period
-* Get familiar with the SOAR and TAP protocols.
-* Setup a development environment.
+- Get familiar with the SOAR and TAP protocols.
+- Setup a development environment.
### Coding starts
-* Start working on adding support for additional attributes.
+- Start working on adding support for additional attributes.
#### 1st evaluation
-* Have the additional attributes implemented.
+- Have the additional attributes implemented.
#### Final evaluation
-* Enable filters on the additional attributes.
+- Enable filters on the additional attributes.
diff --git a/src/content/pages/gsoc/2025/index.md b/src/content/pages/gsoc/2025/index.md
new file mode 100644
index 00000000..6211d718
--- /dev/null
+++ b/src/content/pages/gsoc/2025/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2025"
+show_main: false
+season: 2025
+---
diff --git a/_projects/2025/juliaastro/stingray_porting.md b/src/content/pages/gsoc/2025/juliaastro/stingray_porting.md
similarity index 53%
rename from _projects/2025/juliaastro/stingray_porting.md
rename to src/content/pages/gsoc/2025/juliaastro/stingray_porting.md
index 32d81990..170b0757 100644
--- a/_projects/2025/juliaastro/stingray_porting.md
+++ b/src/content/pages/gsoc/2025/juliaastro/stingray_porting.md
@@ -3,63 +3,65 @@ name: Spectral timing in Julia
desc: Create a set of timing and spectral timing methods in Julia.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Understanding Python code
- - Julia knowledge
+ # Student requirements:
+ - Understanding Python code
+ - Julia knowledge
difficulty: medium
issues:
# Related issues (if any) to this project.
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - matteobachetti
- - stefanocovino
- - fjebaker
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - matteobachetti
+ - stefanocovino
+ - fjebaker
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
- - Julia
- - time series analysis
+ # Different technologies needed
+ - python
+ - Julia
+ - time series analysis
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - stingray
- - juliaAstro
+ # suborganization(s) to which this project belongs.
+ - stingray
+ - juliaAstro
---
+
## Spectral timing in Julia
-#### Description
-The analysis of time series from astronomical observations in the X-rays is an
+### Description
+
+The analysis of time series from astronomical observations in the X-rays is an
excellent tool to test advanced physical theories.
-Of particular interest are the periodicities that are often observed in the
+Of particular interest are the periodicities that are often observed in the
X-ray signals coming from the surroundings of accreting black holes, and the
evolution of the rotation period of neutron stars.
-The essential toolbox for X-ray timing analysis includes different kinds of
+The essential toolbox for X-ray timing analysis includes different kinds of
periodograms, cross spectra, and a number of "variability vs energy spectra", that
allow to understand the variability at different energies.
-This project is about the implementation of a basic set of X-ray timing analysis
+This project is about the implementation of a basic set of X-ray timing analysis
operations in Julia, continuing the porting of the core operations from the
`stingray` Python package [initiated during Google Summer of Code 2022]
-(https://github.com/StingraySoftware/Stingray.jl)
+()
-#### Milestones
+### Milestones
-##### Coding starts
+#### Coding starts
-* Gain familiarity with the codebase
-* Apply existing analysis to simulated datasets
-* Implement I/O operation on FITS files
+- Gain familiarity with the codebase
+- Apply existing analysis to simulated datasets
+- Implement I/O operation on FITS files
-##### 1st evaluation
+#### 1st evaluation
-* Implement a series of tests in Julia that the new code will have to pass
-* Extend basic operations (periodograms and cross spectra) to event lists and light curves
-* Time lags and coherence spectra
+- Implement a series of tests in Julia that the new code will have to pass
+- Extend basic operations (periodograms and cross spectra) to event lists and light curves
+- Time lags and coherence spectra
-##### Final evaluation
+#### Final evaluation
-* A working framework for variability vs energy spectra (covariance spectra, time lags)
+- A working framework for variability vs energy spectra (covariance spectra, time lags)
diff --git a/_projects/2025/radis/Exomol_electronic_spectra.md b/src/content/pages/gsoc/2025/radis/Exomol_electronic_spectra.md
similarity index 56%
rename from _projects/2025/radis/Exomol_electronic_spectra.md
rename to src/content/pages/gsoc/2025/radis/Exomol_electronic_spectra.md
index a43a1df8..b0aad192 100644
--- a/_projects/2025/radis/Exomol_electronic_spectra.md
+++ b/src/content/pages/gsoc/2025/radis/Exomol_electronic_spectra.md
@@ -3,34 +3,33 @@ name: Electronic spectra for RADIS
# add a short one line description of your project
desc: The project aims at adding the possibility to calculated electronic spectra with RADIS, mainly using the newly available molecules in ExoMol
requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
difficulty: medium
issues:
-- https://github.com/radis/radis/issues/724
+ - https://github.com/radis/radis/issues/724
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - minouHub
- - erwanp
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - minouHub
+ - erwanp
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - Python
- - Vaex
- - Pandas
- - Git
+ # Different technologies needed
+ - Python
+ - Vaex
+ - Pandas
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
#### Description
-
The RADIS code was developed for the characterization of plasmas, flames and atmospheres.
High-temperature spectral calculations require to resolve the shape of tens of millions of lines, which is the usual performance bottleneck.
RADIS implements a new algorithm to compute these lineshapes, and is already one of the fastest line-by-line spectral codes available.
@@ -43,42 +42,42 @@ Currently, it supports the computation of rovibrational spectra, which correspon
Other codes allow to compute electronic spectra of diatomic molecules and can be used as a reference or comparison point:
-* Moose - https://github.com/AntoineTUE/Moose
-* MassiveOES - https://bitbucket.org/OES_muni/massiveoes (with Radis/MassiveOES example in https://github.com/radis/massiveOES-examples)
-* ExoMol list - https://www.exomol.com/software/
+- Moose -
+- MassiveOES - (with Radis/MassiveOES example in )
+- ExoMol list -
#### Milestones
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st Evaluation
-* Adapt how the EXOMOL database is currently employed to allow the computation of electronic spectra at **thermal equilibrium** (single temperature)
+- Adapt how the EXOMOL database is currently employed to allow the computation of electronic spectra at **thermal equilibrium** (single temperature)
-* Add documentation and example. Add tests against other spectral codes.
+- Add documentation and example. Add tests against other spectral codes.
-* To ease the understand of the physics behind the code, the contributor could start with non-equilibrium spectra of atomic species (see Secondary goals). This is entirely optional and up to the contributor.
+- To ease the understand of the physics behind the code, the contributor could start with non-equilibrium spectra of atomic species (see Secondary goals). This is entirely optional and up to the contributor.
##### 2nd Evaluation
-* Add the possibility to compute electronic spectra at **thermal non-equilibrium** (electronic temperature != translational temperature)
+- Add the possibility to compute electronic spectra at **thermal non-equilibrium** (electronic temperature != translational temperature)
-* Add documentation and example. Add tests against other spectral codes.
+- Add documentation and example. Add tests against other spectral codes.
-* For diatomic species, start a new database based on MassiveOES sources.
+- For diatomic species, start a new database based on MassiveOES sources.
##### Final evaluation
-* Have all code, tests, and documentation in GitHub.
+- Have all code, tests, and documentation in GitHub.
#### Secondary Goals
-* RADIS can compute atomic spectra thanks to the hard work of GSOC 2023 and 2024 contributors, see https://github.com/radis/radis/pull/689. An interesting approach would be to start with non-equilibrium spectra of atomic species as the physics is slighly easier than for molecule.
+- RADIS can compute atomic spectra thanks to the hard work of GSOC 2023 and 2024 contributors, see . An interesting approach would be to start with non-equilibrium spectra of atomic species as the physics is slighly easier than for molecule.
-* Document architecture and developer guide when facing unclear points that may appear.
+- Document architecture and developer guide when facing unclear points that may appear.
-* Review pull requests from other RADIS contributors
+- Review pull requests from other RADIS contributors
diff --git a/_projects/2025/radis/Fast_Parsing.md b/src/content/pages/gsoc/2025/radis/Fast_Parsing.md
similarity index 62%
rename from _projects/2025/radis/Fast_Parsing.md
rename to src/content/pages/gsoc/2025/radis/Fast_Parsing.md
index 9e23d5a7..e305787f 100644
--- a/_projects/2025/radis/Fast_Parsing.md
+++ b/src/content/pages/gsoc/2025/radis/Fast_Parsing.md
@@ -3,30 +3,30 @@ name: Fast parsing of large databases and execution bottlenecks
# add a short one line description of your project
desc: The conversion of large files from a compressed format to hdf5 should be accelerated.
requirements:
-# Student requirements:
- - Knowledge of Pandas or other DataFrame libraries
+ # Student requirements:
+ - Knowledge of Pandas or other DataFrame libraries
difficulty: medium
issues:
-- https://github.com/radis/radis/issues/510
+ - https://github.com/radis/radis/issues/510
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - minouHub
- - TranHuuNhatHuy
- - dcmvdbekerom
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - minouHub
+ - TranHuuNhatHuy
+ - dcmvdbekerom
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
+ - 175 h
tags:
-# Different technologies needed
- - Python
- - Vaex
- - Pandas
- - Git
+ # Different technologies needed
+ - Python
+ - Vaex
+ - Pandas
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
#### Description
@@ -47,32 +47,32 @@ The objective of this project is to accelerate the parsing to HDF5 files.
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Have set up a development environment, be familiar with open-source tools (GitHub / Git / Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st Evaluation
-* Based on the demonstration of @dcmvdbekerom, implement a C++ new parsing algorithm in RADIS. The demonstration can be found [here](https://github.com/radis/radis/issues/510#issuecomment-2037688815), which includes a detailed explanation and code examples.
+- Based on the demonstration of @dcmvdbekerom, implement a C++ new parsing algorithm in RADIS. The demonstration can be found in the [RADIS issue comment](https://github.com/radis/radis/issues/510#issuecomment-2037688815), which includes a detailed explanation and code examples.
-* Add documentation and example. Add tests against other spectral codes.
+- Add documentation and example. Add tests against other spectral codes.
##### 2nd Evaluation
-* Propose a solution to save several HDF5 files instead of a large one in `.radisdb`. For example, save 10 files of 7 GB each instead of a single 70-GB file for HITEMP CO2
+- Propose a solution to save several HDF5 files instead of a large one in `.radisdb`. For example, save 10 files of 7 GB each instead of a single 70-GB file for HITEMP CO2
-* Write a review of current bottleneck in 1/ the **parsing** and 2/ the **computation** of spectra. This bottleneck review should be uploaded on the documentation, with working examples for small (~1 cm-1) and large (~100 cm-1) spectra. See this example: https://github.com/radis/radis/issues/685
+- Write a review of current bottleneck in 1/ the **parsing** and 2/ the **computation** of spectra. This bottleneck review should be uploaded on the documentation, with working examples for small (~1 cm-1) and large (~100 cm-1) spectra. See this example:
-* Tackle some of the bottleneck by either modifying the code, leveraging numba, or writing a C++ code.
+- Tackle some of the bottleneck by either modifying the code, leveraging numba, or writing a C++ code.
##### Final evaluation
-* Have all code, tests, and documentation in GitHub.
+- Have all code, tests, and documentation in GitHub.
#### Secondary Goals
-* Document architecture and developer guide when facing unclear points that may appear.
+- Document architecture and developer guide when facing unclear points that may appear.
-* Review pull requests from other RADIS contributors
+- Review pull requests from other RADIS contributors
-* Although this project is devoted to CPU computation, the interested contributor can also contribute to the resolution of GPU bottlenecks. For instance: in a GPU computation, the database first needs to be copied to a host buffer (i.e. CPU side), a so called 'staging buffer'. After that, the database can be copied to the GPU. For integrated GPU's, i.e. when the GPU is part of the CPU chip (like most Intel and AMD processors), the CPU and GPU memory is shared. Ideally, the database would directly be loaded into the staging buffer to prevent copying the same database 3 times (1: regular load, 2: staging buffer, 3: GPU buffer).
+- Although this project is devoted to CPU computation, the interested contributor can also contribute to the resolution of GPU bottlenecks. For instance: in a GPU computation, the database first needs to be copied to a host buffer (i.e. CPU side), a so called 'staging buffer'. After that, the database can be copied to the GPU. For integrated GPU's, i.e. when the GPU is part of the CPU chip (like most Intel and AMD processors), the CPU and GPU memory is shared. Ideally, the database would directly be loaded into the staging buffer to prevent copying the same database 3 times (1: regular load, 2: staging buffer, 3: GPU buffer).
diff --git a/_projects/2025/radis/Optimizing_Radis_app.md b/src/content/pages/gsoc/2025/radis/Optimizing_Radis_app.md
similarity index 84%
rename from _projects/2025/radis/Optimizing_Radis_app.md
rename to src/content/pages/gsoc/2025/radis/Optimizing_Radis_app.md
index 72d0ad0a..f1bbd725 100644
--- a/_projects/2025/radis/Optimizing_Radis_app.md
+++ b/src/content/pages/gsoc/2025/radis/Optimizing_Radis_app.md
@@ -3,36 +3,36 @@ name: Optimizing Radis app
desc: Our project is all about enhancing user experience to the next level! We're committed to bringing you cutting-edge features and fine-tuning these features for maximum performance and efficiency, and rigorous testing to ensure they meet the needs of our highly valued end users.
# add a short one line description of your project
requirements:
-# Student requirements
- - TypeScript
- - React
- - FastApi
- - Testing (pytest && vitest)
+ # Student requirements
+ - TypeScript
+ - React
+ - FastApi
+ - Testing (pytest && vitest)
difficulty: medium
issues:
- - https://github.com/arunavabasucom/radis-app/issues/85
- - https://github.com/arunavabasucom/radis-app/issues/674
+ - https://github.com/arunavabasucom/radis-app/issues/85
+ - https://github.com/arunavabasucom/radis-app/issues/674
mentors:
-# First person in contact; mentors may change before project starts
-# GitHub handles
- - erwanp
- - arunavabasucom
+ # First person in contact; mentors may change before project starts
+ # GitHub handles
+ - erwanp
+ - arunavabasucom
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - Python
- - TypeScript
- - JavaScript
- - React
- - Fastapi
- - Pandas
- - Git
+ # Different technologies needed
+ - Python
+ - TypeScript
+ - JavaScript
+ - React
+ - Fastapi
+ - Pandas
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs
- - radis
+ # suborganization(s) to which this project belongs
+ - radis
---
#### Description
diff --git a/_projects/2025/stingray/interactive_database.md b/src/content/pages/gsoc/2025/stingray/interactive_database.md
similarity index 78%
rename from _projects/2025/stingray/interactive_database.md
rename to src/content/pages/gsoc/2025/stingray/interactive_database.md
index 2146ba53..fc7b3d79 100644
--- a/_projects/2025/stingray/interactive_database.md
+++ b/src/content/pages/gsoc/2025/stingray/interactive_database.md
@@ -1,57 +1,57 @@
---
-name: Interactive Database for X-ray observations
+name: Interactive Database for X-ray observations
# add a short one line description of your project
desc: Create an interactive database for analyzing, storing, and classifying X-ray observations of accreting black holes
# Student requirements:
requirements:
- - Understanding Python code
- - Manages database
+ - Understanding Python code
+ - Manages database
difficulty: medium
issues:
# Related issues (if any) to this project.
# First person in contact; mentors may change before project starts.
# GitHub handles
mentors:
-- mgullik
-- matteobachetti
+ - mgullik
+ - matteobachetti
# The programme under this project wish to run.
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h
+ - 350 h
# Different technologies needed
tags:
- - python
- - database
- - time series analysis
- - machine learning
-# suborganisation(s) to which this project belongs.
+ - python
+ - database
+ - time series analysis
+ - machine learning
+# suborganization(s) to which this project belongs.
collaborating_projects:
- - stingray
+ - stingray
---
-# Interactive Database for X-ray observations
+# Interactive Database for X-ray observations
## Description
-The increasing number of X-ray telescopes observing accreting black hole sources
-has led to an incredibly large amount of available observational data.
-To build a comprehensive understanding of stellar-mass black hole phenomenology,
+The increasing number of X-ray telescopes observing accreting black hole sources
+has led to an incredibly large amount of available observational data.
+To build a comprehensive understanding of stellar-mass black hole phenomenology,
it is essential to access and analyze this information in an intuitive and structured manner.
-This project aims at developing a tool that analyzes, stores, and organizes
-key data products of multiple observations in a database. Users will be able to interactively explore
-the database and classify individual observations based on data products
-retrieved with Stingray, potentially leveraging innovative machine learning techniques.
-Beyond enabling large-scale classification and the discovery of general trends
-in accreting black hole binaries, the tool will allow astronomers to identify
+This project aims at developing a tool that analyzes, stores, and organizes
+key data products of multiple observations in a database. Users will be able to interactively explore
+the database and classify individual observations based on data products
+retrieved with Stingray, potentially leveraging innovative machine learning techniques.
+Beyond enabling large-scale classification and the discovery of general trends
+in accreting black hole binaries, the tool will allow astronomers to identify
peculiar features hidden within the vast dataset.
-Challenges: Efficient storage and fast retrieval of data products,
+Challenges: Efficient storage and fast retrieval of data products,
ensuring interactivity of the tool, and enabling comparisons across different X-ray instruments.
### Milestones
-
+
#### Coding starts
- Gain familiarity with the observations (different type of X-ray telescopes) and with the products
diff --git a/_projects/2026/astropy/astropy_core_improvements.md b/src/content/pages/gsoc/2026/astropy/astropy_core_improvements.md
similarity index 71%
rename from _projects/2026/astropy/astropy_core_improvements.md
rename to src/content/pages/gsoc/2026/astropy/astropy_core_improvements.md
index db5306a0..bf3893d2 100644
--- a/_projects/2026/astropy/astropy_core_improvements.md
+++ b/src/content/pages/gsoc/2026/astropy/astropy_core_improvements.md
@@ -4,51 +4,49 @@ name: Hardening astropy's core stability
desc: Improvements to astropy low level extension modules (C/C++/Cython)
# Student requirements:
requirements:
- - at least one low level language (C or C++ prefered)
- - testing in Python
+ - at least one low level language (C or C++ prefered)
+ - testing in Python
# How difficult would you consider the project to be: low, medium, high
difficulty: medium to high, depending on candidate
# Related issues (if any) to this project.
# Ideally you want at least one that describes the problem it is trying to solve
issues:
- - https://github.com/neutrinoceros/astropy-APEs/pull/1
- - https://github.com/astropy/astropy/issues/17760
- - https://github.com/astropy/astropy/issues/19249
+ - https://github.com/neutrinoceros/astropy-APEs/pull/1
+ - https://github.com/astropy/astropy/issues/17760
+ - https://github.com/astropy/astropy/issues/19249
# First person in contact; mentors may change before project starts.
# GitHub or GitLab handles
mentors:
- - neutrinoceros
- - astrofrog
- - nstarkman
+ - neutrinoceros
+ - astrofrog
+ - nstarkman
# The programme under this project wish to run. At the moment only GSOC is available
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h
+ - 175 h
# Different technologies needed
tags:
- - python
- - meson-python
- - C
- - C++
- - Cython
- - pytest
-# suborganisation(s) to which this project belongs.
+ - python
+ - meson-python
+ - C
+ - C++
+ - Cython
+ - pytest
+# suborganization(s) to which this project belongs.
collaborating_projects:
- - astropy
+ - astropy
---
# Hardening astropy's core stability
-## Description
-
Astropy is a mixed-language code base. Most of it is pure Python, but many hotpaths are
written in lower level languages (Cython, C and C++). The former is where the vast
majority of past and current development is conducted, while the latter in much more
slowly paced. Meanwhile, the low-level layer overwhemingly dominates other important
-aspects like complexity of *building* and distributing astropy releases, and takes an
-estimated 20 to 50% share of astropy CI time for recompilation *of code that almost never changes*.
+aspects like complexity of _building_ and distributing astropy releases, and takes an
+estimated 20 to 50% share of astropy CI time for recompilation _of code that almost never changes_.
It would be possible to decouple the bulk of the code base from its low level layer,
for instance by splitting the latter into a separate package, but this new package would
@@ -62,6 +60,7 @@ This project would be highly related to (although separable from) the [following
APE](https://github.com/neutrinoceros/astropy-APEs/pull/1), which also contains more details on why the separation is desirable
As such, it would also provide opportunities for exploratory works like
+
- migrating to a modern, externally maintained build system like Meson
- rewritting, or incorporating `rust`-based extensions
- exploring PEP 803/809 Limited API for Python 3.15
@@ -73,15 +72,15 @@ interests and time allocated.
### Coding starts
-* set up dev env and tooling
-* define a subset of astropy's extension modules to test, and testing strategy(ies)
+- set up dev env and tooling
+- define a subset of astropy's extension modules to test, and testing strategy(ies)
### 1st evaluation
-* Write a test suite for a single subpackage's extensions
-* Report on any difficulties met along the way, and identify (general ?) solutions
+- Write a test suite for a single subpackage's extensions
+- Report on any difficulties met along the way, and identify (general ?) solutions
### Final evaluation
-* Complete test coverage for as many subpackages as possible
-* Report on what (if anything) is still missing and identify a path forward
+- Complete test coverage for as many subpackages as possible
+- Report on what (if anything) is still missing and identify a path forward
diff --git a/src/content/pages/gsoc/2026/index.md b/src/content/pages/gsoc/2026/index.md
new file mode 100644
index 00000000..fa7dc964
--- /dev/null
+++ b/src/content/pages/gsoc/2026/index.md
@@ -0,0 +1,5 @@
+---
+title: "Ideas page for Google Summer of Code 2026"
+show_main: false
+season: 2026
+---
diff --git a/_projects/2026/juliaastro/spectra.md b/src/content/pages/gsoc/2026/juliaastro/spectra.md
similarity index 79%
rename from _projects/2026/juliaastro/spectra.md
rename to src/content/pages/gsoc/2026/juliaastro/spectra.md
index 87f56c3a..4c3e06d2 100644
--- a/_projects/2026/juliaastro/spectra.md
+++ b/src/content/pages/gsoc/2026/juliaastro/spectra.md
@@ -2,33 +2,31 @@
name: Spectra.jl across the electromagnetic spectrum
desc: Help develop Spectrajl and friends with JuliaAstro!
requirements:
- - Familiarity with Julia
+ - Familiarity with Julia
difficulty: medium
# Related issues (if any) to this project.
# Ideally you want at least one that describes the problem it is trying to solve
issues:
- - https://github.com/JuliaAstro/Spectra.jl/issues/41
+ - https://github.com/JuliaAstro/Spectra.jl/issues/41
# First person in contact; mentors may change before project starts.
# GitHub or GitLab handles
mentors:
- - fjebaker
- - icweaver
- - cgarling
- - barrettp
+ - fjebaker
+ - icweaver
+ - cgarling
+ - barrettp
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 175 h (Medium)
+ - 175 h (Medium)
# Different technologies needed
tags:
- - Julia
-# suborganisation(s) to which this project belongs.
+ - Julia
+# suborganization(s) to which this project belongs.
collaborating_projects:
- - juliaAstro
+ - juliaAstro
---
-## Spectra.jl across the electromagnetic spectrum
-
#### Description
When we observe a star, we can filter particular colours to learn about the
@@ -59,40 +57,41 @@ uniform interface in Spectra.jl for loading datasets and their associated
metadata, and for performing basic manipulations and first-look analyses.
For some further discussion, see:
-- https://github.com/JuliaAstro/Spectra.jl/pull/24
+
+-
#### Project Milestones
##### Coding starts
-* Learn about the different spectral data types and what makes, e.g. radio or
+- Learn about the different spectral data types and what makes, e.g. radio or
X-ray, spectra unusual.
-* Learn about [FITS](https://en.wikipedia.org/wiki/FITS) tables and other common
+- Learn about [FITS](https://en.wikipedia.org/wiki/FITS) tables and other common
astronomical data formats for spectra.
-* Learn about [Test Driven Development
+- Learn about [Test Driven Development
(TDD)](https://en.wikipedia.org/wiki/Test-driven_development), and techniques
for writing robust and reliable software. We are curating a library of spectral
data that Spectra.jl needs to be compatible with, and so TDD will be our guide
in staying focused.
-* Familiarise yourself with the existing routines in Spectra.jl, and the
+- Familiarise yourself with the existing routines in Spectra.jl, and the
[OGIP](https://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/spectra/ogip_92_007.pdf)
parser in SpectralFitting.jl.
##### 1st evaluation
-* To have moved and integrated the OGIP parser from SpectralFitting.jl to
+- To have moved and integrated the OGIP parser from SpectralFitting.jl to
Spectra.jl. This should be a relatively easy and informative way to start, as
all the code and tests have been written, and you will learn about the
internals of Spectra.jl in the process.
-* To have implemented data loading for (at least) one spectral datatype of your
+- To have implemented data loading for (at least) one spectral datatype of your
choice. In choosing which to implement, you can pick the difficulty that you
feel is appropriate.
##### Final evaluation
-* A revamped Spectra.jl; that is:
-* To have implemented data loading for a significant portion of our library of
+- A revamped Spectra.jl; that is:
+- To have implemented data loading for a significant portion of our library of
example spectra (ideally, for at least three different file formats).
-* To provide some common routines, such as rebinning according to different
+- To provide some common routines, such as rebinning according to different
heuristics (e.g. minimum flux, signal to noise, count rates, ...), adjusting
the wavelength or energy shifts, or converting between common units.
diff --git a/_projects/2026/juliaastro/stingray_porting.md b/src/content/pages/gsoc/2026/juliaastro/stingray_porting.md
similarity index 57%
rename from _projects/2026/juliaastro/stingray_porting.md
rename to src/content/pages/gsoc/2026/juliaastro/stingray_porting.md
index 0a5bc58d..6b18c494 100644
--- a/_projects/2026/juliaastro/stingray_porting.md
+++ b/src/content/pages/gsoc/2026/juliaastro/stingray_porting.md
@@ -3,62 +3,62 @@ name: Spectral timing in Julia
desc: Create a set of timing and spectral timing methods in Julia.
# add a short one line description of your project
requirements:
-# Student requirements:
- - Understanding Python code
- - Julia knowledge
+ # Student requirements:
+ - Understanding Python code
+ - Julia knowledge
difficulty: medium
issues:
# Related issues (if any) to this project.
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - fjebaker
- - matteobachetti
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - fjebaker
+ - matteobachetti
initiatives:
-# The programme under this project wish to run.
- - GSOC
+ # The programme under this project wish to run.
+ - GSOC
project_size:
- - 350 h
+ - 350 h
tags:
-# Different technologies needed
- - python
- - Julia
- - time series analysis
+ # Different technologies needed
+ - python
+ - Julia
+ - time series analysis
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - stingray
- - juliaAstro
+ # suborganization(s) to which this project belongs.
+ - stingray
+ - juliaAstro
---
-## Spectral timing in Julia
#### Description
-The analysis of time series from astronomical observations in the X-rays is an
+
+The analysis of time series from astronomical observations in the X-rays is an
excellent tool to test advanced physical theories.
-Of particular interest are the periodicities that are often observed in the
+Of particular interest are the periodicities that are often observed in the
X-ray signals coming from the surroundings of accreting black holes, and the
evolution of the rotation period of neutron stars.
-The essential toolbox for X-ray timing analysis includes different kinds of
+The essential toolbox for X-ray timing analysis includes different kinds of
periodograms, cross spectra, and a number of "variability vs energy spectra", that
allow to understand the variability at different energies.
-This project is about the implementation of a basic set of X-ray timing analysis
+This project is about the implementation of a basic set of X-ray timing analysis
operations in Julia, continuing the porting of the core operations from the
`stingray` Python package [initiated during Google Summer of Code 2022 and 2025]
-(https://github.com/StingraySoftware/Stingray.jl)
+()
#### Milestones
##### Coding starts
-* Gain familiarity with the codebase
-* Apply existing analysis to simulated datasets
-* Implement I/O operation on FITS files
+- Gain familiarity with the codebase
+- Apply existing analysis to simulated datasets
+- Implement I/O operation on FITS files
##### 1st evaluation
-* Implement a series of tests in Julia that the new code will have to pass
-* Extend basic operations (periodograms and cross spectra) to event lists and light curves
-* Time lags and coherence spectra
+- Implement a series of tests in Julia that the new code will have to pass
+- Extend basic operations (periodograms and cross spectra) to event lists and light curves
+- Time lags and coherence spectra
##### Final evaluation
-* A working framework for variability vs energy spectra (covariance spectra, time lags)
+- A working framework for variability vs energy spectra (covariance spectra, time lags)
diff --git a/_projects/2026/lincc-fw/pyarrow4astro.md b/src/content/pages/gsoc/2026/lincc-fw/pyarrow4astro.md
similarity index 71%
rename from _projects/2026/lincc-fw/pyarrow4astro.md
rename to src/content/pages/gsoc/2026/lincc-fw/pyarrow4astro.md
index 43e273ed..82b4f395 100644
--- a/_projects/2026/lincc-fw/pyarrow4astro.md
+++ b/src/content/pages/gsoc/2026/lincc-fw/pyarrow4astro.md
@@ -4,43 +4,41 @@ name: PyArrow improvements for astronomy
desc: Improve and speed up PyArrow for nested arrays to enable on-scale time-domain analysis in astronomy.
# Student requirements:
requirements:
- - Be familiar with C++
- - Basic Python
- - Basic Git
+ - Be familiar with C++
+ - Basic Python
+ - Basic Git
# How difficult would you consider the project to be: low, medium, high
difficulty: medium
# Related issues (if any) to this project.
# Ideally you want at least one that describes the problem it is trying to solve
issues:
- - https://github.com/apache/arrow/issues/48636
- - https://github.com/apache/arrow/issues/44544
- - https://github.com/apache/arrow/issues/46329
- - https://github.com/apache/arrow/issues/29558
- - https://github.com/lincc-frameworks/nested-pandas/issues/52
- - https://github.com/lincc-frameworks/nested-pandas/issues/421
- - https://github.com/pandas-dev/pandas/issues/60073
+ - https://github.com/apache/arrow/issues/48636
+ - https://github.com/apache/arrow/issues/44544
+ - https://github.com/apache/arrow/issues/46329
+ - https://github.com/apache/arrow/issues/29558
+ - https://github.com/lincc-frameworks/nested-pandas/issues/52
+ - https://github.com/lincc-frameworks/nested-pandas/issues/421
+ - https://github.com/pandas-dev/pandas/issues/60073
# First person in contact; mentors may change before project starts.
# GitHub or GitLab handles
mentors:
- - hombit
- - delucchi-cmu
- - nevencaplar
+ - hombit
+ - delucchi-cmu
+ - nevencaplar
# The programme under this project wish to run. At the moment only GSOC is available
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h (Large)
+ - 350 h (Large)
# Different technologies needed
tags:
- - c++
- - python
-# suborganisation(s) to which this project belongs.
+ - c++
+ - python
+# suborganization(s) to which this project belongs.
collaborating_projects:
- - lincc-frameworks
+ - lincc-frameworks
---
-## pyarrow Improvements for Astronomy
-
#### Description
Modern astronomical surveys produce catalogs containing billions of objects, each with associated time-series (light curves) and spectral measurements. Tools like [HATS (Hierarchical Adaptive Tiling Scheme)](https://hats.readthedocs.io/en/latest/), [LSDB](https://lsdb.io), and [nested-pandas](https://github.com/lincc-frameworks/nested-pandas) enable scalable analysis of these catalogs by storing variable-length nested data (light curves, spectra) directly in Parquet files using [pyarrow](https://github.com/apache/arrow)'s nested array types.
@@ -65,18 +63,18 @@ This project will contribute improvements directly to Apache Arrow, benefiting b
##### Coding starts
-* Set up Arrow development environment and build from source
-* Familiarize with Arrow's C++ codebase, compute kernel architecture, and Parquet reader
-* Review linked issues and create detailed implementation plan
+- Set up Arrow development environment and build from source
+- Familiarize with Arrow's C++ codebase, compute kernel architecture, and Parquet reader
+- Review linked issues and create detailed implementation plan
##### 1st evaluation
-* Implement at least one new compute kernel or Parquet reader improvement
-* Write unit tests and benchmarks for new functionality
-* Submit initial PR to Apache Arrow
+- Implement at least one new compute kernel or Parquet reader improvement
+- Write unit tests and benchmarks for new functionality
+- Submit initial PR to Apache Arrow
##### Final evaluation
-* Complete implementation of planned improvements
-* Address code review feedback and get PRs merged
-* Document new functionality with examples relevant to astronomy use cases
+- Complete implementation of planned improvements
+- Address code review feedback and get PRs merged
+- Document new functionality with examples relevant to astronomy use cases
diff --git a/_projects/2026/radis/vaex_alternatives.md b/src/content/pages/gsoc/2026/radis/vaex_alternatives.md
similarity index 65%
rename from _projects/2026/radis/vaex_alternatives.md
rename to src/content/pages/gsoc/2026/radis/vaex_alternatives.md
index b92f487a..d300241d 100644
--- a/_projects/2026/radis/vaex_alternatives.md
+++ b/src/content/pages/gsoc/2026/radis/vaex_alternatives.md
@@ -3,39 +3,37 @@ name: Integrate a modern lazy-loading alternative for large-scale spectroscopic
# add a short one line description of your project
desc: Replace the unmaintained Vaex library with an actively-maintained alternative (Polars, DuckDB, or Dask) to efficiently handle large spectroscopic databases (50GB+) through lazy loading, memory mapping, and optimized I/O operations.
requirements:
-# Student requirements:
- - Proficiency in Python and DataFrame libraries (Pandas, Polars, or similar)
- - Familiarity with benchmarking and performance profiling
- - Understanding of memory-efficient data processing techniques
- - Experience with HDF5 or Parquet file formats is a plus
+ # Student requirements:
+ - Proficiency in Python and DataFrame libraries (Pandas, Polars, or similar)
+ - Familiarity with benchmarking and performance profiling
+ - Understanding of memory-efficient data processing techniques
+ - Experience with HDF5 or Parquet file formats is a plus
difficulty: medium to high
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub handles
- - Prtm2110
- - minouHub
+ # First person in contact; mentors may change before project starts.
+ # GitHub handles
+ - Prtm2110
+ - minouHub
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h (Large)
+ - 350 h (Large)
tags:
-# Different technologies needed
- - Python
- - Polars
- - DuckDB
- - Dask
- - Pandas
- - HDF5
- - Parquet
- - Benchmarking
- - Git
+ # Different technologies needed
+ - Python
+ - Polars
+ - DuckDB
+ - Dask
+ - Pandas
+ - HDF5
+ - Parquet
+ - Benchmarking
+ - Git
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - radis
+ # suborganization(s) to which this project belongs.
+ - radis
---
-## Integrate a modern lazy-loading alternative for large-scale spectroscopic database processing
-
#### Description
The RADIS code was developed for the characterization of plasmas, flames, and atmospheres.
@@ -54,56 +52,56 @@ The selected solution should maintain or improve upon Vaex's memory efficiency w
##### Coding starts
-* Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
+- Engage with the community on [💬 RADIS Slack](https://github.com/radis/slack-invite)
-* Set up a development environment, become familiar with open-source tools (GitHub/Git/Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
+- Set up a development environment, become familiar with open-source tools (GitHub/Git/Tests) and [RADIS architecture](https://radis.readthedocs.io/en/latest/dev/developer.html#architecture)
##### 1st Evaluation
-* Research and benchmark alternatives: Conduct systematic performance evaluation comparing Polars, DuckDB, and Dask against current Vaex implementation
+- Research and benchmark alternatives: Conduct systematic performance evaluation comparing Polars, DuckDB, and Dask against current Vaex implementation
-* Generate comprehensive benchmark report covering:
+- Generate comprehensive benchmark report covering:
- Memory usage patterns (peak memory, memory mapping efficiency)
- Lazy evaluation capabilities
- Integration complexity with existing RADIS codebase
-* Select the optimal alternative based on benchmarking results and present findings to mentors
+- Select the optimal alternative based on benchmarking results and present findings to mentors
-* Begin implementation of the selected alternative in RADIS codebase:
+- Begin implementation of the selected alternative in RADIS codebase:
- Refactor database loading functions to use the new library
- Ensure backward compatibility with existing HDF5 files
- Implement lazy loading for HITEMP CO2 and H2O databases
##### 2nd Evaluation
-* Implement configurable size limits and an LRU cache system for HITEMP CO2 caches using parameters in `radis.json` to control cache persistence
+- Implement configurable size limits and an LRU cache system for HITEMP CO2 caches using parameters in `radis.json` to control cache persistence
-* Develop comprehensive unit tests and integration tests
+- Develop comprehensive unit tests and integration tests
-* Profile and optimize memory usage for 50GB+ files to ensure they remain under memory limits
+- Profile and optimize memory usage for 50GB+ files to ensure they remain under memory limits
-* Document migration strategy and API changes
+- Document migration strategy and API changes
##### Final Evaluation
-* Complete integration with production-ready code:
+- Complete integration with production-ready code:
- Add new package to fully replace Vaex dependencies with user-selectable backend via `DATAFRAME_ENGINE` parameter in `radis.json`
- Performance validation showing maintained or improved speed
-* Comprehensive documentation:
+- Comprehensive documentation:
- User guide for database operations with the new system
- Performance comparison report (before/after metrics), see `vaex_vs_pandas_performance.py`
-* Identify and document additional I/O bottlenecks discovered during implementation
+- Identify and document additional I/O bottlenecks discovered during implementation
-* All code merged to main branch with passing CI/CD tests
+- All code merged to main branch with passing CI/CD tests
#### Secondary Goals
-* Explore file format alternatives to HDF5 (e.g., Parquet with better compression ratios and faster I/O)
+- Explore file format alternatives to HDF5 (e.g., Parquet with better compression ratios and faster I/O)
-* Profile GPU acceleration opportunities for data processing operations if time permits
+- Profile GPU acceleration opportunities for data processing operations if time permits
-* Document architecture and developer guide for future maintainers
+- Document architecture and developer guide for future maintainers
-* Review pull requests from other RADIS contributors
+- Review pull requests from other RADIS contributors
diff --git a/_projects/2026/reltrans/profiling_reltrans.md b/src/content/pages/gsoc/2026/reltrans/profiling_reltrans.md
similarity index 63%
rename from _projects/2026/reltrans/profiling_reltrans.md
rename to src/content/pages/gsoc/2026/reltrans/profiling_reltrans.md
index 51f5f1fc..a121ef1f 100644
--- a/_projects/2026/reltrans/profiling_reltrans.md
+++ b/src/content/pages/gsoc/2026/reltrans/profiling_reltrans.md
@@ -3,34 +3,33 @@ name: Profiling and Performance Optimization of Reltrans
desc: Code profiling to identify performance bottlenecks and implement targeted optimizations
# add a short one line description of your project
requirements:
-# Student requirements:
- - Fortran knowledge
- - Use of code profiling tools
+ # Student requirements:
+ - Fortran knowledge
+ - Use of code profiling tools
difficulty: medium
# How difficult would you consider the project to be: low, medium, high
issues:
-# Related issues (if any) to this project.
-# Ideally you want at least one that describes the problem it is trying to solve
-- https://github.com/reltrans/reltrans/issues/61
+ # Related issues (if any) to this project.
+ # Ideally you want at least one that describes the problem it is trying to solve
+ - https://github.com/reltrans/reltrans/issues/61
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub or GitLab handles
- - mgullik
- - matteolucchini1
+ # First person in contact; mentors may change before project starts.
+ # GitHub or GitLab handles
+ - mgullik
+ - matteolucchini1
initiatives:
-# The programme under this project wish to run. At the moment only GSOC is available
- - GSOC
+ # The programme under this project wish to run. At the moment only GSOC is available
+ - GSOC
project_size:
- - 175 h (Medium)
+ - 175 h (Medium)
tags:
-# Different technologies needed
- - fortran
- - code profiling tools
+ # Different technologies needed
+ - fortran
+ - code profiling tools
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - reltrans
+ # suborganization(s) to which this project belongs.
+ - reltrans
---
-## Profiling and Performance Optimization of Reltrans
#### Description
@@ -52,20 +51,19 @@ will be implemented to reduce runtime while preserving numerical accuracy and sc
The outcome will be faster model evaluations, improved scalability,
and a more sustainable codebase for future development.
-
#### Project Milestones
##### Coding starts
-* Familiarization with the code
-* Setup of profiling tools and baseline performance measurements
+- Familiarization with the code
+- Setup of profiling tools and baseline performance measurements
##### 1st evaluation
-* Identification of main performance bottlenecks
-* Initial optimization and benchmarking of the most critical portion of the code
+- Identification of main performance bottlenecks
+- Initial optimization and benchmarking of the most critical portion of the code
##### Final evaluation
-* Implementation of further targeted optimizations
-* Documentation of profiling methods and optimization results
\ No newline at end of file
+- Implementation of further targeted optimizations
+- Documentation of profiling methods and optimization results
diff --git a/_projects/2026/reltrans/tutorial_and_unit-testing.md b/src/content/pages/gsoc/2026/reltrans/tutorial_and_unit-testing.md
similarity index 64%
rename from _projects/2026/reltrans/tutorial_and_unit-testing.md
rename to src/content/pages/gsoc/2026/reltrans/tutorial_and_unit-testing.md
index 26eb5482..a626f51a 100644
--- a/_projects/2026/reltrans/tutorial_and_unit-testing.md
+++ b/src/content/pages/gsoc/2026/reltrans/tutorial_and_unit-testing.md
@@ -3,37 +3,36 @@ name: Interactive Tutorials and Automated Testing for the Reltrans Code
desc: Create a series of tutorials on how to use the reltrans code and a suite of unit tests
# add a short one line description of your project
requirements:
-# Student requirements:
- - Basic Fortran knowledge
- - Implementation of Python code
- - Use of python notebook
+ # Student requirements:
+ - Basic Fortran knowledge
+ - Implementation of Python code
+ - Use of python notebook
difficulty: medium
# How difficult would you consider the project to be: low, medium, high
issues:
-# Related issues (if any) to this project.
-# Ideally you want at least one that describes the problem it is trying to solve
-- https://github.com/reltrans/reltrans/issues/59
-- https://github.com/reltrans/reltrans/issues/60
-- https://github.com/reltrans/reltrans/issues/13
+ # Related issues (if any) to this project.
+ # Ideally you want at least one that describes the problem it is trying to solve
+ - https://github.com/reltrans/reltrans/issues/59
+ - https://github.com/reltrans/reltrans/issues/60
+ - https://github.com/reltrans/reltrans/issues/13
mentors:
-# First person in contact; mentors may change before project starts.
-# GitHub or GitLab handles
- - mgullik
- - fjebaker
+ # First person in contact; mentors may change before project starts.
+ # GitHub or GitLab handles
+ - mgullik
+ - fjebaker
initiatives:
-# The programme under this project wish to run. At the moment only GSOC is available
- - GSOC
+ # The programme under this project wish to run. At the moment only GSOC is available
+ - GSOC
project_size:
- - 350 h (Large)
+ - 350 h (Large)
tags:
-# Different technologies needed
- - python
- - fortran
+ # Different technologies needed
+ - python
+ - fortran
collaborating_projects:
-# suborganisation(s) to which this project belongs.
- - reltrans
+ # suborganization(s) to which this project belongs.
+ - reltrans
---
-## Interactive Tutorials and Automated Testing for the Reltrans Code
#### Description
@@ -70,25 +69,23 @@ Reltrans as a community-driven scientific software package.
##### Coding starts
-* Familiarization with the Reltrans codebase, including the Fortran core and existing Python wrappers
-* Review of current documentation and identification of key user workflows
-* Design of the tutorial structure and outline of individual Python notebooks
-* Setup of the testing framework and definition of testing standards and conventions
-
+- Familiarization with the Reltrans codebase, including the Fortran core and existing Python wrappers
+- Review of current documentation and identification of key user workflows
+- Design of the tutorial structure and outline of individual Python notebooks
+- Setup of the testing framework and definition of testing standards and conventions
##### 1st evaluation
-* Delivery of initial Python notebook tutorials covering:
+- Delivery of initial Python notebook tutorials covering:
- Installation and environment setup
- Basic usage of the Python interface
- Core functionality and typical analysis workflows
-* Implementation of unit tests for the most critical components of the Python wrappers
-* Initial integration of tests into the existing development workflow
-
+- Implementation of unit tests for the most critical components of the Python wrappers
+- Initial integration of tests into the existing development workflow
##### Final evaluation
-* Completion of the full tutorial series, including advanced usage examples and best practices
-* Expanded unit test coverage, including edge cases and regression tests
-* Documentation for contributors explaining how to extend both the tutorials and the test suite
-* Final code cleanup and preparation for long-term maintenance
+- Completion of the full tutorial series, including advanced usage examples and best practices
+- Expanded unit test coverage, including edge cases and regression tests
+- Documentation for contributors explaining how to extend both the tutorials and the test suite
+- Final code cleanup and preparation for long-term maintenance
diff --git a/_projects/2026/sunpy/radiospectra.md b/src/content/pages/gsoc/2026/sunpy/radiospectra.md
similarity index 88%
rename from _projects/2026/sunpy/radiospectra.md
rename to src/content/pages/gsoc/2026/sunpy/radiospectra.md
index 7dd6bde3..867861aa 100644
--- a/_projects/2026/sunpy/radiospectra.md
+++ b/src/content/pages/gsoc/2026/sunpy/radiospectra.md
@@ -4,38 +4,36 @@ name: Improving radiospectra’s Functionality and Interoperability
desc: Improving radiospectra’s interoperability by redesining the spectral data container and adding commonly requested usability features
# Student requirements:
requirements:
- - python
+ - python
# How difficult would you consider the project to be: low, medium, high
difficulty: high
# Related issues (if any) to this project.
# Ideally you want at least one that describes the problem it is trying to solve
issues:
-- https://github.com/sunpy/radiospectra/issues/82
-- https://github.com/sunpy/radiospectra/issues/85
-- https://github.com/sunpy/radiospectra/issues/129
-- https://github.com/sunpy/radiospectra/issues/53
+ - https://github.com/sunpy/radiospectra/issues/82
+ - https://github.com/sunpy/radiospectra/issues/85
+ - https://github.com/sunpy/radiospectra/issues/129
+ - https://github.com/sunpy/radiospectra/issues/53
# First person in contact; mentors may change before project starts.
# GitHub or GitLab handles
mentors:
- - samaloney
- - hayesla
+ - samaloney
+ - hayesla
# The programme under this project wish to run. At the moment only GSOC is available
initiatives:
- - GSOC
+ - GSOC
project_size:
- - 350 h (Large)
+ - 350 h (Large)
# Different technologies needed
tags:
- - python
+ - python
-# suborganisation(s) to which this project belongs.
+# suborganization(s) to which this project belongs.
collaborating_projects:
- - sunpy
+ - sunpy
---
-## Improving radiospectra's functionality and interoperability
-
#### Description
Solar radio spectrograms are a fundamental data product for studying energetic and transient processes in the solar atmosphere. The `sunpy/radiospectra` package provides foundational support for working with such data, but its current capabilities are limited and not well aligned with modern SunPy and scientific Python data models.
@@ -47,6 +45,7 @@ The result will be a modern, extensible, and user-friendly foundation for radio
##### Expected Outcomes
By the end of the project the contributor will deliver:
+
- A redesigned, coordinate-aware Spectra object with a clear external API that:
- Provides a WCS-like mapping from physical coordinates (time, frequency) to array indices
- Supports axis-aware operations (e.g., slicing, scaling, statistics) by index or coordinate
@@ -59,13 +58,13 @@ By the end of the project the contributor will deliver:
- Coordinate slicing and analysis workflows
- Background subtraction use cases
- Improved plotting of gappy spectral data
- - Updated documentation and test coverage to support new functionality
+- Updated documentation and test coverage to support new functionality
#### Project Milestones
##### Coding starts
-- Get familiar with the SunPy organisation and the radiospectra codebase
+- Get familiar with the SunPy organization and the radiospectra codebase
- Review existing radiospectra functionality and open issues
- Discuss and refine design choices for the Spectra data model with mentors
- Survey existing approaches (NDCube, xarray, Astropy WCS) and agree on an implementation plan
diff --git a/_projects/_template.md b/src/content/pages/gsoc/_project_template.md
similarity index 74%
rename from _projects/_template.md
rename to src/content/pages/gsoc/_project_template.md
index 9b42ab51..db3c3315 100644
--- a/_projects/_template.md
+++ b/src/content/pages/gsoc/_project_template.md
@@ -1,40 +1,41 @@
---
name: Example project
# Add a short one line description of your project
-desc: This is the first idea for suborg
+desc: This is the first idea for sub-org
# Student requirements:
requirements:
- - Knowledge on pythonic physics.
- - Familiar with numerical methods
+ - Knowledge on pythonic physics.
+ - Familiar with numerical methods
# How difficult would you consider the project to be: low, medium, high
difficulty: low
# Related issues (if any) to this project.
# Ideally you want at least one that describes the problem it is trying to solve
issues:
- - https://github.com/org/org_repo/issues/4444
- - https://github.com/org/org_repo/issues/5555
+ - https://github.com/org/org_repo/issues/4444
+ - https://github.com/org/org_repo/issues/5555
# First person in contact; mentors may change before project starts.
# GitHub or GitLab handles
mentors:
- - astrorobot
+ - astrorobot
# The programme under this project wish to run. At the moment only GSOC is available
initiatives:
- - GSOC
+ - GSOC
+# Pick one size.
project_size:
- - 90 h (Small)
- - 175 h (Medium)
- - 350 h (Large)
+ - 90 h (Small)
+ - 175 h (Medium)
+ - 350 h (Large)
# Different technologies needed
tags:
- - python
- - postgres
-# suborganisation(s) to which this project belongs.
+ - python
+ - postgres
+# Sub-organization(s) to which this project belongs.
collaborating_projects:
- - astropy
- - juliaAstro
+ - astropy
+ - juliaAstro
---
-# This is an awesome project idea for suborg.
+# This is an awesome project idea for suborg
## Description
@@ -54,12 +55,12 @@ quam.
### Coding starts
-* Be awesome
+- Be awesome
### 1st evaluation
-* Have done awesome stuff.
+- Have done awesome stuff.
### Final evaluation
-* Finished the awesome stuff.
+- Finished the awesome stuff.
diff --git a/src/content/pages/gsoc/background.md b/src/content/pages/gsoc/background.md
new file mode 100644
index 00000000..aea7dfc4
--- /dev/null
+++ b/src/content/pages/gsoc/background.md
@@ -0,0 +1,86 @@
+---
+title: "Background on GSoC: Start Here!"
+show_main: false
+---
+
+# Background on GSoC: Start Here
+
+## What is Google Summer of Code (GSoC)?
+
+Google Summer of Code is a remote summer coding program funded by Google.
+Google distributes funds to open software development organizations to recruit new developers and mentors for summer mentorships.
+You will get paid to write software at home (or wherever you like), with guidance from expert mentors distributed around the globe.
+
+To apply to be a GSoC contributor, you must write an application to [GSoC] for one or more OpenAstronomy project ideas.
+Each summer, [several projects][oa projects] are offered by [OpenAstronomy mentors][oa mentors], with well-defined scope and pre-requisite experience.
+If you are selected by OpenAstronomy, you will become a GSoC contributor.
+
+## What is OpenAstronomy (OA)?
+
+OpenAstronomy is an umbrella organization which acts as an interface between the Google Summer of Code and several open source, open development projects in the astronomical community, including [astropy], [sunpy], and [many other astronomy projects][oa members].
+It coordinates mentors and projects for Google Summer of Code mentorships related to astronomy.
+
+## What is the application process?
+
+You must submit your application to the [Google Summer of Code][GSoC], but it is very important that you also share it well before the deadline with your potential project mentors and the rest of the community.
+They will be able to give you feedback before officially submitting it, but this is difficult to do if a propsoal draft is shared with less than 7 days before the deadline.
+
+The [application] process is currently described by our [gsoc-proposals repository](https://github.com/OpenAstronomy/gsoc-proposals) and is required to be accepted.
+It is very possible that the project has its own template and you can use that when submitting to GSOC but for the gsoc-proposals repository, you must follow that template.
+
+You can also find applications from previous years in the GitHub wiki pages of some of the OpenAstronomy members.
+The more details on applying are in the [GSoC Contributor Guide].
+
+## Who is eligible to apply to GSoC?
+
+Until 2021, GSoC was a programme eligible exclusively to university students.
+The ultimate goal of GSoC has always been to attract and retain new open source contributors.
+Hence, as of its 2022 edition, the student status is no longer required, and one is eligible to take part in GSoC as long as they are an "open source beginner".
+
+On the OpenAstronomy side, we actively seek self-motivated applicants with _some_ experience developing software regardless of programming language.
+We are especially looking for individuals who are genuinely interested in developing open source software.
+You don't need to be a Python guru or an astronomical coordinate system expert to be eligible -- projects are available that cover a range of previous experience in Python and astronomy.
+Individuals from any background from anywhere around the world are encouraged to apply.
+
+## Testimonials
+
+> In the summer after my second year of graudate school, I didn't have funding
+> to work on any projects in my home department. I applied and was selected for
+> GSoC 2015, and I worked with another student and several encouraging mentors on
+> developing a new astropy affiliated package, called
+> [astroplan](http://astroplan.readthedocs.io/). The program greatly improved
+> my coding style, taught me loads about managing large projects, version control,
+> testing, and packaging. Do you have a summer without research funding? Apply!
+
+[Brett Morris][bmorris3], Astro PhD student, GSoC 2015
+
+> After spending the summer of 2015 as an intern at NIST, I got really
+> fascinated by how much Python aided scientists get the best out their data.
+> Then, while looking for Python projects to perform data fitting and modeling,
+> I found AstroPy. I got really surprised by how easy and intuitive data fitting
+> can be done with the astropy API. That motivated me to start learning git and
+> later contributing code and documentation for the project. Then in the summer
+> of 2016 I applied to the GSoC to work on PSF photometry for
+> [photutils](https://www.github.com/astropy/photutils) and got selected! :)
+> One of the best parts of the GSoC was the amount of learning I got by being
+> mentored by experts in software development and astronomy! If you want to know
+> more about my journey during the GSoC 2016 see my
+> [blog posts](https://openastronomy.org/Universe_OA/authors/ze-vinicius/).
+
+[Zé Vinícius][mirca], EE undergraduate student, GSoC 2016
+
+## Apply
+
+Now that you know you're a good candidate, check out the [GSoC Contributor Guide] to learn how to apply.
+Also check out [the OpenAstronomy Contributor Guidelines.](../contributor_guidelines/)
+
+[GSoC]: https://summerofcode.withgoogle.com/
+[oa projects]: ../2026/
+[oa mentors]: ../2026/#mentors
+[astropy]: http://www.astropy.org
+[sunpy]: http://sunpy.org
+[oa members]: ../../members/
+[application]: https://github.com/OpenAstronomy/gsoc-proposals/blob/main/template.md
+[GSoC Contributor Guide]: https://google.github.io/gsocguides/student/
+[bmorris3]: https://github.com/bmorris3
+[mirca]: https://github.com/mirca
diff --git a/src/content/pages/gsoc/contributor_guidelines.md b/src/content/pages/gsoc/contributor_guidelines.md
new file mode 100644
index 00000000..e594f558
--- /dev/null
+++ b/src/content/pages/gsoc/contributor_guidelines.md
@@ -0,0 +1,107 @@
+---
+title: "GSoC Contributor Application Guidelines"
+show_main: false
+---
+
+# GSoC Contributor Application Guidelines
+
+## What are the requirements to be accepted for GSoC?
+
+[These are the formal requirements from Google](https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_requirements_for_participation).
+There are OpenAstronomy requirements below which you have to also follow.
+
+## Communication Channels
+
+OpenAstronomy is a collaboration between open source astronomy and astrophysics projects and as such, to get help you need to find the specific project you are interested in:
+
+1. Browse the **[Project Ideas Page](../)** to find a project that interests you.
+2. Check the **[Members Page](../../members/)** to find the chat links for that specific organization.
+3. Join _that_ organization's chat to talk to the mentors!
+
+---
+
+If you want to apply to OpenAstronomy to participate in GSoC there are many things you can do to improve your application.
+Many of OpenAstronomy's admins and mentors have participated in previous editions of GSoC with their projects, so will be able to answer any questions you might have, come talk to us on the [OpenAstronomy discourse](https://community.openastronomy.org).
+
+There are many guidelines on writing a good application and how to increase your chances, this guide covers the most important things to OpenAstronomy.
+However, you should also checkout the [GSoC Contributor Guide], the [Python Software Foundation] guide, the [Astropy GSoC guidelines] and the [SymPy Guidelines] to name but a few.
+It is also possible each OA member has their own guidelines, and you should ask when you interact with them.
+
+Some general pointers to follow are:
+
+- **The better we know you, the better we can judge your application.**
+ There are many ways to get yourself known by the community, you can introduce yourself through the [OpenAstronomy discourse](https://community.openastronomy.org) and if required contact the mentors to know more about certain project.
+ However, contacting mentors through email or direct messages is discouraged, and contacting them in public channels is the preferred way to provide answers to multiple people at once.
+ Also, when you have a particular idea in mind, get in touch with that project and introduce yourself.
+ For example, `astropy` projects, follow the contact guidance in the [Astropy GSoC guidelines] and do not send an email to the `astropy-dev` list.
+ It is important that you follow the guidance for any OA member.
+
+- **Become a user!**
+ Download one or more of the OpenAstronomy projects and start experimenting with the code.
+ Look at the [latest pictures of the million degree Sun] with [SunPy](http://sunpy.org/), [volume render a simulation of the galaxy] with [yt](http://yt-project.org/), or [plan some astronomical observations] with [Astropy](http://www.astropy.org)
+ There are loads of things to do with all the projects involved with OpenAstronomy, get involved!
+
+- **Set yourself up as a developer.**
+ Create an account on [GitHub](http://github.com) or the code hosting platform the organization is using.
+ Don't know how to use [git](http://www.git-scm.com/)?
+ Don't worry, there are lots of git [tutorials](https://docs.github.com/en/get-started/getting-started-with-git/set-up-git) [online](http://gitimmersion.com/) that will help you to get quite confident with it in a short time.
+ Also both the [Astropy](http://docs.astropy.org/en/stable/index.html#developer-documentation)
+ and [yt](http://yt-project.org/docs/dev/developing/developing.html) developer guides are great reads no matter what project you are thinking of working on.
+
+
+
+**If you get stuck ask on the forum or chat rooms for help and volunteers will support you.**
+
+
+
+0. **Respect the AI policies.**
+ Much of the [open source ecosystem is suffering due to AI slop][ai-slop-summary].
+ Do not contribute low-quality AI-generated content; doing so can lead to being banned from the organization.
+ This is not to say that you cannot use AI tools to support learning.
+ You can, while following each sub-org policy.
+ If you do not find an AI policy for a sub-org, assume AI-generated contributions are not allowed.
+
+1. **Start to be a developer.**
+ Checkout the issue lists of the projects to see if there is something that you could do.
+ **You will be expected to submit a pull request to one of the OpenAstronomy projects before you submit your application (it does not have to be accepted, but it has to be something that shows your code abilities!).**
+ This requirement is to show that you know how git, github, pull requests and reviews work and allows mentors to evaluate all applications based on a real code contribution, instead of e.g., the name of a specific school.
+ GSoC is a short program and we want to make sure you are ready to start immediately.
+ If you have previously contributed to OpenAstronomy projects, you can point to those pull requests, too.
+
+2. **Plan your application.**
+ Think which is your favorite project from the [ideas page](../) or think of a new one that will help out one of the OpenAstronomy members.
+ Prepare a plan on how you will tackle that project and the time it will take you to solve it.
+ Do not worry much in providing exact dates, but plan it as best as you can (if you are planing to have some holidays during the GSoC programme, then you should mention it too).
+ Use [our application template][gsoc-proposal-template] to describe how you plan to do the work during the programme.
+ Add your draft to the [gsoc-proposals](https://github.com/OpenAstronomy/gsoc-proposals) repository.
+ This is where to receive feedback.
+ Follow the instructions in that repository to submit your proposal.
+ Also, don't be afraid to ask your potential mentors for help.
+ Don't be shy when describing yourself!
+
+3. **Submit your application.**
+ Besides adding your proposal to the gsoc-proposals repository, you also need to [submit your application](https://summerofcode.withgoogle.com/) before the deadline.
+ **You must submit it there.**
+ Please include the sub-org name at the start of your proposal title as `[] `,
+ where `` should be the name of the sub-org in lower case (e.g., `sunpy`, `stingray`, `radis`),
+ or the combination of two if it's the case (e.g., `astropy|sunpy`).
+ Only proposals present in both the gsoc-proposals repository and the GSoC platform will be considered.
+
+### What are my obligations as a contributor during GSoC?
+
+We expect you to:
+
+- Be online and active during your working hours in your sub-organization chat.
+- Publish a blog post at least once every two weeks.
+- Participate in weekly meetings with your mentors.
+- Contact your mentors or OpenAstronomy admins early if any issues arise.
+
+[SymPy Guidelines]: https://github.com/sympy/sympy/wiki/GSoC-2017-Application-Template
+[Python Software Foundation]: http://python-gsoc.org/
+[GSoC Contributor Guide]: https://google.github.io/gsocguides/student/
+[Astropy GSoC guidelines]: https://github.com/astropy/astropy/wiki/GSoC-Guidelines
+[latest pictures of the million degree Sun]: https://docs.sunpy.org/en/stable/generated/gallery/map/composite_map_AIA_HMI.html
+[volume render a simulation of the galaxy]: http://yt-project.org/docs/dev/quickstart/volume_rendering.html
+[plan some astronomical observations]: https://learn.astropy.org
+[gsoc-proposal-template]: https://github.com/OpenAstronomy/gsoc-proposals/blob/main/template.md
+[ai-slop-summary]: https://redmonk.com/kholterhoff/2026/02/03/ai-slopageddon-and-the-oss-maintainers/
diff --git a/src/content/pages/gsoc/index.md b/src/content/pages/gsoc/index.md
new file mode 100644
index 00000000..d28ea217
--- /dev/null
+++ b/src/content/pages/gsoc/index.md
@@ -0,0 +1,66 @@
+---
+title: Google Summer of Code
+---
+
+## New to Google Summer of Code (GSoC)?
+
+[We provide some background on GSoC right here!](./background/)
+
+## GSoC & OpenAstronomy
+
+OpenAstronomy is an umbrella organization which collects project ideas from any of its members and has been a mentoring organization since 2016.
+
+Contributor applications to OpenAstronomy projects follows the same rules as the [Python Software Foundation] and the [GSoC Contributor Guide].
+[We have also our own guide on what we consider a good application for OpenAstronomy.][OpenAstronomy Contributor Guide]
+
+All contributors blogs are collected on the [OpenAstronomy Universe] site.
+
+## Quick Links
+
+- [OpenAstronomy Contributor Guide]
+- [GSoC Contributor Guide]
+- [Now You Know It!: Getting selected in Outreachy by Kriti Singh]
+
+
+
+
+## Info for sub-organizations' admins
+
+Whether you have been participating for years or this is your first time [read our guide for sub-org admins.](./suborg_guidelines/)
+
+## Related Organizations
+
+OpenAstronomy is closely related to other organizations that support open-source scientific computing:
+
+- [NumFOCUS](https://numfocus.org/) - Supports open-source scientific computing projects, including many under OpenAstronomy [and also participates in GSoC.](https://numfocus.org/community/google-summer-of-code)
+- [Python Software Foundation](https://www.python.org/) - Oversees GSoC projects for the broader Python ecosystem [and also participates in GSoC.](http://python-gsoc.org/)
+- [TARDIS](https://tardis-sn.github.io/) - A radiative transfer code for supernovae, [also participating in GSoC](https://tardis-sn.github.io/summer_of_code/gsoc_start/)
+
+These organizations collaborate on various scientific computing initiatives and GSoC at times.
+
+[OpenAstronomy Contributor Guide]: ./contributor_guidelines/
+[Python Software Foundation]: http://python-gsoc.org/
+[GSoC Contributor Guide]: https://google.github.io/gsocguides/student/
+[OpenAstronomy Universe]: http://openastronomy.org/Universe_OA/
+[Now You Know It!: Getting selected in Outreachy by Kriti Singh]: https://github.com/kritisingh1/numpy/wiki/Now-You-Know-It!-:-Getting-selected-in-Outreachy
diff --git a/src/content/pages/gsoc/suborg_guidelines.md b/src/content/pages/gsoc/suborg_guidelines.md
new file mode 100644
index 00000000..1581946b
--- /dev/null
+++ b/src/content/pages/gsoc/suborg_guidelines.md
@@ -0,0 +1,159 @@
+---
+title: "GSoC Sub-organizations Guidelines"
+show_main: false
+---
+
+# GSoC Sub-organizations Guidelines
+
+OpenAstronomy has been accepted as an umbrella organization since 2016.
+We will keep applying every year, but that doesn't mean we will always be selected.
+If selected, we don't know the number of slots we will get till the contributor selection process ends.
+However, it's our intention to keep the process fair for the sub-organizations and contributors.
+
+## I want to propose a new sub-org, what do I do?
+
+First, we recommend you to carefully read [Google's notes for first year organizations][Google-notes] and [the PSF guidelines for sub orgs][PSF-sub-orgs], which provide a general idea about the goals and concepts underpinning the Google Summer of Code program.
+Then, you need to be a member of the OpenAstronomy team.
+That process is simple (and free!).
+You need to be an open-development organization and be related with astronomy.
+Then make a pull-request to [our repository][OA repository] adding a logo, a short description, etc.
+Follow the instructions in the example at the bottom of [the `members.json` file][members PR].
+The steering council will review your application and give you feedback.
+
+Once a member, you can start the path to participate on GSoC!
+First you should get familiarized with the program, [Google's mentor guide] is a wonderful resource with detailed information of every aspect of it.
+You need the following:
+
+- Time! How much? a fair bit.
+- Ideas! How many? One is enough. How good? more about this below.
+- Helpers! You need mentors, at least two mentors per idea.
+
+Let's look into that in more detail:
+
+### Time
+
+The program has a few deadlines, and Google won't extend them even if their system is down closer to the end.
+They always allow a fair amount of time to submit whatever is needed.
+To be on the safe side of this, OpenAstronomy imposes a deadline of one day before Google's.
+You (and the contributors) will receive a reminder from the OpenAstronomy admins before such deadline.
+If you fail to meet these deadlines, your sub-org and contributors may be affected.
+
+Besides these deadlines, as a sub-org admin, you will have to keep track of all your contributors and mentors, following how they are doing with their projects and making sure they communicate regularly.
+
+### Ideas
+
+Normally organizations provide a list of ideas that can be done by a contributor in approximately three months (working full-time).
+Take a look at what [Google says on how to define a project](https://google.github.io/gsocguides/mentor/defining-a-project-ideas-list), then look at [other ideas OpenAstronomy's members have proposed this or previous years.](../#current-projects).
+
+To add your own, you will have to create a pull-request to [our repository][OA repository] following the [template](../_project_template/).
+Take a look at [how others have done it before](https://github.com/OpenAstronomy/openastronomy.github.io/pull/182).
+The admins and other members will review your ideas and provide feedback.
+Once done, they will be merged and displayed on our website.
+
+It's also possible that a contributor comes up with their own ideas!
+That's OK, the only limitation is that either the contributor or the admin will have to find a mentor for that idea who is familiar with the programming language, the repository, and the idea in itself.
+
+#### What do I need for my project idea?
+
+Everything you need is a title and description of the project idea, a set of requirements for potential contributors (_e.g._, proficiency with `astropy.tables` and `astropy.units`), and a list of potential mentors.
+In addition, please link any related issues or tickets to the project idea, if any.
+Lastly, make sure to indicate the level of difficulty of the project.
+
+In case your project idea already has specific milestones, please add them so as to make contributors aware when they start writing their applications.
+If the project milestones are open ended and you would like to hear input from other members of the community, that is fine too!
+
+### Mentors
+
+For each project idea you need to have at least **two** mentors that are committed to participate in the programme.
+The mentors need most importantly be familiar with the repository, normally they are real core-contributors, they need to be familiar with the idea and have some idea on how that could be implemented.
+
+The mentors also need to have time for the project.
+We expect around 10 hours per week (not only to mentoring, but to the organization in itself).
+That time varies depending from project to project.
+But a minimum they should have a hour per week to discuss with the contributor their progress.
+This can be done as a 10 minutes per day, or as 1 hour video-call.
+Additionally, they will need to review the contributor code, discuss with other core-members to tell how the project is evolving, etc.
+
+Why two mentors?
+Mentors do also need a break.
+They may have a conference to attend or simply they could disappear from the project.
+Having two mentors will help to keep continuity to the contributor project and brings more knowledge to the table.
+
+Though we are not too strict about the availability of the mentors, we suggest they are at least one hour per day - in a non-crazy hour for contributor and mentor - at the chat room of the organization.
+So the contributor can ask the questions needed on the organization room.
+This can also be done via e-mail, but we believe the contributors need to familiarize with the rest of the community.
+(Plus others can help if the mentors are unavailable).
+
+Oh, and yes, **you** as an admin can also be a mentor and don't forget to tell them to read [Google's mentor guide].
+
+## GSoC starts
+
+If we are accepted... what happens next?
+First, have you read the [mentor guide][Google's mentor guide]?
+If so, take a look at it again as a refresher!
+
+The application period for contributors is open just for two weeks.
+However, they will know for more than a month which organizations are participating.
+Even some contributors start to show interest from way before that!!
+The main purpose of the programme is to bring new contributors to the organization, so the more they engage the better for your organization.
+The dream contributor is that one that becomes mentor in the following years.
+
+### Contributor application
+
+Contributors will apply via the [GSoC portal][GSOC].
+If it's not there, their application doesn't count.
+OpenAstronomy offers [a template for the contributors to apply][template-application-wiki].
+Some sub-orgs require they post publicly their application on their wiki ([see for example SunPy's](https://github.com/sunpy/sunpy/wiki/GSoC)), others don't.
+In any case, it's good to encourage the contributors to share the draft of their applications with the mentors, so they can improve it before the deadline.
+
+OpenAstronomy has [certain rules for an application to be considered][contributor guidelines].
+Familiarize with them to be able to inform your mentors and candidates.
+
+### Applications evaluation
+
+Each sub-org will have to evaluate the contributor application using a shared document within all the mentors.
+The OpenAstronomy administrators will share them with you.
+There you will grade the application, the engagement of the contributor shown so far, the quality of the pull request to the organization, any notes from an interview you may do, etc.
+
+### Slots allocation
+
+Based on the numbers of mentors and outstanding applications your sub-org has, you will ask for a number of slots to the Open Astronomy administrators.
+They will collect these numbers from all the other sub-org and request them to Google.
+
+Google will then, after a few days, tell us how many slots we get.
+Nobody knows them _a priori_, and they vary considerably year after year.
+
+If the number of slots obtained is smaller than the requested, then the steering council will decide the distribution of the slots using the following points as guidelines:
+
+- The quality of the contributor proposal.
+ A well-structured and described project will be favored, not simply a copy/paste from the ideas page.
+- What's the likelihood of that candidate contributor to become a long-term contributor?
+ How has the contributor engaged till now?
+- Commitment of the mentors for the project.
+ The mentors need to show they have committed to the sub-org and OpenAstronomy, and evidence of this will make the slot more likely to be allocated.
+ For example, it is best to have mentors that have contributed to the organization's codebase and are familiar with the language and topic.
+- A project that enables cooperation with other sub-organizations of OpenAstronomy will generally be favored over those that do not.
+
+The process will be as open as possible including only the admins and mentors involved in the selection.
+Remember, we cannot disclose any information on contributor selection to the contributors before Google announces the selected contributors
+
+Note that OpenAstronomy usually assigns one slot for first year sub-orgs.
+That may change in a case-by-case basis, e.g., the sub-organization already participated in previous editions of the GSoC (either by itself or with another umbrella organization), or has experience with similar coding outreach programmes, such as [ESA-SOCIS][ESA-SOCIS].
+
+### Evaluations
+
+Once the programme starts each contributor has to pass an evaluation per month.
+If one of them is failed (or not provided on time), the contributor cannot continue in the programme and therefore, not get paid.
+
+OpenAstronomy has also set a set of obligations for the contributors to do during the programme (e.g., a blog post every two weeks describing their progress, telecommuting with mentors weekly).
+If they are not followed the administrators will fail the contributors.
+
+[OA repository]: https://github.com/OpenAstronomy/openastronomy.github.io
+[contributor guidelines]: ../contributor_guidelines/
+[Google's mentor guide]: https://google.github.io/gsocguides/mentor/
+[GSOC]: https://summerofcode.withgoogle.com/
+[members PR]: https://github.com/OpenAstronomy/openastronomy.github.io/blob/master/_data/members.yaml
+[ESA-SOCIS]: https://www.esa.int/Enabling_Support/Space_Engineering_Technology/SOCIS_The_ESA_Summer_of_Code_in_Space
+[Google-notes]: https://google.github.io/gsocguides/mentor/notes-for-first-year-organizations
+[PSF-sub-orgs]: https://python-gsoc.org/mentors.html#sub-orgs
+[template-application-wiki]: https://github.com/OpenAstronomy/openastronomy.github.io/wiki/Contributor-Application-template
diff --git a/_posts/2016-01-15-Workshop.md b/src/content/posts/2016-01-15-Workshop.md
similarity index 93%
rename from _posts/2016-01-15-Workshop.md
rename to src/content/posts/2016-01-15-Workshop.md
index bfcb58ff..22da21ae 100644
--- a/_posts/2016-01-15-Workshop.md
+++ b/src/content/posts/2016-01-15-Workshop.md
@@ -1,5 +1,4 @@
---
-layout: post
title: First OpenAstronomy - Software Carpentry Workshop
date: 2016-01-15
@@ -12,13 +11,13 @@ We all brought different expertise and shared the teaching out to keep the works
We used the red-green post-it technique suggested by software carpentry as a way to know how people were getting on during the sessions, also, for every session the learners were asked to use these post-it notes to give us feedback on the session (green for something good you've learnt, red for something that can be improved).
This not just helped us for the next workshop, but it also helped to the next instructor that day!
-
+
As usual there were some software setup issues at the beginning of the week, however we were very close!
Only one person from the whole class has troubles with the Jupyter notebook - it simply was not able to execute any command within. We didn't manage to fix the problem, but probably it was the oldest laptop (running Windows 7) in the class.
Beside that case, we come across a couple of other problems with other windows machines, in one of them `git log` was blocking the screen and the other could not open the text editor (Notepad++ in this case) when executing `commit` (or `merge` with the default message).
-Each day we updated the [official repository](https://github.com/OpenAstronomy/2016-01-11_Sheffield_Notes) with lesson templates in Jupyter notebook format, where an outline of the class was available, and the code cells were empty to be filled in while following the lecture. Once we completed a session, the notes can be browsed [here](http://nbviewer.jupyter.org/github/OpenAstronomy/2016-01-11_Sheffield_Notes/blob/master/index.ipynb).
+Each day we updated the [official repository](https://github.com/OpenAstronomy/2016-01-11_Sheffield_Notes) with lesson templates in Jupyter notebook format, where an outline of the class was available, and the code cells were empty to be filled in while following the lecture. Once we completed a session, the notes can be browsed in [the workshop notes](http://nbviewer.jupyter.org/github/OpenAstronomy/2016-01-11_Sheffield_Notes/blob/master/index.ipynb).
In this way everyone had to `fork` our repository on github, then `pull` at the start of every session from `upstream` and `push` at the end to their `origin`.
This cemented the work at the start of the week on git+GitHub, while making sure everyone had a backup of all the work they had completed during the week and learning the usual git workflow of contributing to a larger project on GitHub.
Thanks to the visualisations on GitHub we can see how all [these forks evolved](https://github.com/OpenAstronomy/2016-01-11_Sheffield_Notes/network), and see if the participants keep using GitHub!!
diff --git a/_posts/2018-09-24-dotastro.md b/src/content/posts/2018-09-24-dotastro.md
similarity index 94%
rename from _posts/2018-09-24-dotastro.md
rename to src/content/posts/2018-09-24-dotastro.md
index 2fe46f80..22889568 100644
--- a/_posts/2018-09-24-dotastro.md
+++ b/src/content/posts/2018-09-24-dotastro.md
@@ -1,5 +1,4 @@
---
-layout: post
title: 2018 September 24-27 - .Astronomy X
date: 2018-09-24
diff --git a/_posts/2019-07-29-pyastro.md b/src/content/posts/2019-07-29-pyastro.md
similarity index 95%
rename from _posts/2019-07-29-pyastro.md
rename to src/content/posts/2019-07-29-pyastro.md
index 5b306737..d3a7a077 100644
--- a/_posts/2019-07-29-pyastro.md
+++ b/src/content/posts/2019-07-29-pyastro.md
@@ -1,5 +1,4 @@
---
-layout: post
title: 2019 Jul 29 - Aug 2 - Python in Astronomy
date: 2019-07-29
@@ -8,4 +7,3 @@ date: 2019-07-29
The Python in Astronomy conference will be held at the Space Telescope Science
Institute in Baltimore during July 29th - August 2nd. Check out the
[conference website](http://openastronomy.org/pyastro/2019/) for more information.
-
diff --git a/src/data/gsoc-admins.json b/src/data/gsoc-admins.json
new file mode 100644
index 00000000..e275dc2c
--- /dev/null
+++ b/src/data/gsoc-admins.json
@@ -0,0 +1,12 @@
+{
+ "2017": ["dpshelio", "Cadair", "taldcroft", "eteq"],
+ "2018": ["dpshelio", "bsipocz"],
+ "2019": ["dpshelio", "bsipocz", "mirca"],
+ "2020": ["dpshelio", "bsipocz", "mirca"],
+ "2021": ["dpshelio", "bsipocz", "mirca"],
+ "2022": ["dpshelio", "bsipocz", "mirca"],
+ "2023": ["dpshelio", "bsipocz", "mirca"],
+ "2024": ["dpshelio", "bsipocz", "mirca"],
+ "2025": ["dpshelio", "bsipocz", "mirca", "nabobalis"],
+ "2026": ["dpshelio", "bsipocz", "mirca", "nabobalis"]
+}
diff --git a/src/data/icons.json b/src/data/icons.json
new file mode 100644
index 00000000..a250869d
--- /dev/null
+++ b/src/data/icons.json
@@ -0,0 +1,8 @@
+{
+ "gh_logo": "M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z",
+ "bb_logo": "M29.208,3.519c-0.203-0.285-0.451-0.525-0.729-0.738c-0.61-0.475-1.297-0.814-2.01-1.102c-1.516-0.611-3.097-0.971-4.701-1.229C19.81,0.137,17.836,0.012,15.762,0c-1.854,0.016-3.797,0.133-5.725,0.434C8.668,0.649,7.316,0.94,6.002,1.385c-0.869,0.297-1.71,0.649-2.477,1.164C3.16,2.793,2.824,3.07,2.549,3.418C2.205,3.856,2.058,4.344,2.147,4.897C2.32,5.989,2.48,7.082,2.66,8.169c0.264,1.611,0.537,3.222,0.811,4.828c0.306,1.787,0.62,3.573,0.918,5.36c0.07,0.416,0.246,0.769,0.526,1.07c0.179,0.193,0.37,0.377,0.574,0.543c0.73,0.59,1.562,1.01,2.432,1.354c2.082,0.83,4.259,1.205,6.485,1.328c1.616,0.09,3.23,0.033,4.838-0.187c1.369-0.185,2.709-0.479,4.011-0.948c0.965-0.349,1.891-0.775,2.725-1.382c0.355-0.26,0.683-0.547,0.945-0.901c0.181-0.238,0.305-0.504,0.354-0.805c0.397-2.341,0.809-4.679,1.196-7.021c0.362-2.172,0.701-4.346,1.058-6.518C29.617,4.388,29.502,3.935,29.208,3.519z M15.82,19.64c-2.4-0.008-4.341-1.971-4.333-4.383c0.006-2.41,1.958-4.347,4.369-4.338c2.425,0.008,4.359,1.961,4.35,4.387C20.195,17.704,18.227,19.648,15.82,19.64z M24.522,4.394c-0.124,0.139-0.274,0.262-0.436,0.357c-0.45,0.268-0.951,0.409-1.454,0.541c-0.952,0.243-1.923,0.383-2.896,0.485c-1.281,0.136-2.565,0.183-3.791,0.188c-1.49-0.008-2.914-0.068-4.332-0.238c-1.064-0.129-2.124-0.291-3.146-0.633C8.164,4.99,7.869,4.858,7.584,4.713C7.438,4.641,7.309,4.528,7.198,4.409c-0.197-0.215-0.196-0.45,0.005-0.663C7.32,3.621,7.463,3.514,7.61,3.43C8.034,3.184,8.5,3.041,8.969,2.918c0.983-0.256,1.985-0.402,2.994-0.509c1.652-0.17,3.308-0.221,4.967-0.172c1.524,0.045,3.045,0.158,4.55,0.431c0.706,0.127,1.407,0.274,2.075,0.545c0.236,0.096,0.463,0.217,0.683,0.346c0.109,0.064,0.208,0.164,0.288,0.266C24.668,4.007,24.674,4.222,24.522,4.394z M26.186,22.761c0.009,0.088-0.004,0.183-0.021,0.271c-0.305,1.604-0.614,3.205-0.911,4.811c-0.101,0.539-0.344,0.99-0.724,1.377c-0.422,0.432-0.918,0.752-1.448,1.023c-0.979,0.498-2.018,0.811-3.085,1.031c-1.377,0.286-2.771,0.414-3.563,0.407c-2.41-0.006-4.184-0.198-5.917-0.698c-0.802-0.23-1.577-0.529-2.3-0.953c-0.379-0.222-0.732-0.478-1.042-0.789c-0.388-0.392-0.64-0.846-0.741-1.396c-0.296-1.604-0.609-3.207-0.915-4.81c-0.016-0.081-0.021-0.163-0.019-0.245c0.019-0.394,0.37-0.597,0.724-0.423c0.036,0.021,0.072,0.041,0.105,0.063c1.174,0.853,2.484,1.423,3.858,1.856c1.262,0.4,2.556,0.641,3.873,0.758c1.52,0.138,3.031,0.104,4.54-0.11c2-0.28,3.91-0.851,5.687-1.827c0.354-0.194,0.686-0.43,1.025-0.646c0.056-0.035,0.108-0.076,0.167-0.104C25.819,22.206,26.153,22.395,26.186,22.761z M18.027,15.284c-0.005,1.203-0.992,2.184-2.197,2.178c-1.205-0.004-2.178-0.987-2.172-2.196c0.004-1.212,0.98-2.181,2.192-2.175C17.059,13.097,18.03,14.073,18.027,15.284z",
+ "sf_logo": "m0.10973,10.304c-0.063715-0.064-0.10973-0.3695-0.10973-0.7287,0-0.518,0.028754-0.6339,0.17686-0.7132,0.10645-0.056966,0.97285-0.094654,2.1762-0.094654,1.4331,0,2.0304-0.031075,2.109-0.10973,0.14226-0.14226,0.14226-0.9184,0-1.0607-0.077134-0.077135-0.59397-0.10973-1.7402-0.10973-1.7693,0-2.0378-0.054672-2.4475-0.49821-0.22016-0.2382-0.22973-0.2998-0.25796-1.6592-0.027012-1.3006-0.014301-1.4361,0.16145-1.7204,0.37101-0.6003,0.58673-0.6448,3.2814-0.6767,2.9042-0.034316,2.8498-0.050242,2.8498,0.83519,0,0.32448-0.047689,0.62163-0.10972,0.68366-0.078762,0.078762-0.69147,0.11012-2.1716,0.11112-1.134,0.0007216-2.1155,0.035443-2.1812,0.077064-0.081755,0.051857-0.11052,0.24557-0.091435,0.61579l0.027855,0.54013,1.7373,0.045718c1.9027,0.0502,2.1341,0.1109,2.5506,0.6697,0.1761,0.2362,0.1924,0.3777,0.1924,1.662,0,1.5713-0.052879,1.7306-0.68728,2.0709-0.28534,0.15303-0.55769,0.16929-2.8361,0.16929-1.8385,0-2.5502-0.02969-2.6302-0.10973zm9.1862-1.0489c-0.0335-0.0335-0.0609-1.1033-0.0609-2.3773v-2.3164h-0.66748c-0.39724,0-0.7119-0.044425-0.7772-0.10973-0.061907-0.061907-0.10973-0.35849-0.10973-0.68058,0-0.72446,0.15021-0.85554,0.98042-0.85554h0.57399v-0.8472c0-1.0337,0.14644-1.3641,0.77936-1.7587,0.43617-0.27191,0.45323-0.27457,1.9562-0.30408,0.915-0.017969,1.6159,0.008315,1.7676,0.066314,0.24036,0.091851,0.25145,0.12361,0.25145,0.72011,0,0.36344-0.04582,0.66984-0.10972,0.73375-0.07578,0.075781-0.54252,0.10973-1.5087,0.10973h-1.399v0.64005,0.64005h1.3318c0.7432,0,1.41,0.041832,1.5087,0.094655,0.1481,0.079261,0.17686,0.19524,0.17686,0.7132,0,0.35918-0.04601,0.66455-0.10972,0.72827-0.07578,0.075781-0.54252,0.10973-1.5087,0.10973h-1.399v1.8998c0,2.1681,0.0081,2.1405-0.76082,2.5815-0.457,0.2624-0.7882,0.3393-0.9151,0.2124z",
+ "irc_logo": "M30,12V8h-5.004l1-8h-4l-1,8h-7.998l1-8h-4l-1,8H2v4h6.498L7.5,20H2v4h5l-1,8h4l1-8h8l-1.002,8H22l1-8h7v-4h-6.5l0.996-8H30z M19.5,20h-8l0.998-8h7.998L19.5,20z",
+ "mastodon_logo": "M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z",
+ "x_logo": "M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"
+}
diff --git a/src/data/members.json b/src/data/members.json
new file mode 100644
index 00000000..1042d03a
--- /dev/null
+++ b/src/data/members.json
@@ -0,0 +1,297 @@
+{
+ "astropy": {
+ "name": "Astropy",
+ "logo": "astropy.png",
+ "url": "http://www.astropy.org/",
+ "repositories": {
+ "github": "astropy/astropy"
+ },
+ "mailinglist": {
+ "users": "http://mail.python.org/mailman/listinfo/astropy",
+ "devs": "http://groups.google.com/group/astropy-dev"
+ },
+ "chat": {
+ "slack": "http://joinslack.astropy.org/"
+ },
+ "microblogging": {
+ "x": "astropy"
+ },
+ "description": "is a community-driven package intended to contain much of the core functionality and some common tools needed for performing astronomy and astrophysics with Python."
+ },
+ "astronomy-commons": {
+ "name": "Astronomy Data Commons",
+ "logo": "astronomy-commons.png",
+ "url": "https://dirac.astro.washington.edu/data-engineering/",
+ "repositories": {
+ "github": "astronomy-commons/"
+ },
+ "mailinglist": {
+ "devs": "https://groups.google.com/forum/#!forum/astronomy-commons"
+ },
+ "chat": {
+ "matrix": "https://app.element.io/#/room/#astronomy-commons:matrix.org"
+ },
+ "description": "is an initiative for software infrastructure for science platforms and scalable astronomy on cloud resources. Astronomy Data Commons is lead by researchers at the DiRAC Institute at the University of Washington."
+ },
+ "ctlearn": {
+ "name": "CTLearn",
+ "logo": "ctlearn.png",
+ "url": "https://github.com/ctlearn-project",
+ "repositories": {
+ "github": "ctlearn-project/ctlearn"
+ },
+ "chat": {
+ "matrix": "https://app.element.io/#/room/#ctlearn:matrix.org"
+ },
+ "description": "is a package under active development that pursues the application of deep-learning based methods to the analysis of data from imaging atmospheric Cherenkov telescopes (IACTs). CTLearn includes modules for loading and manipulating IACT data and for running machine learning models using pixel-wise camera data as input. Its high-level interface provides a configuration-file-based workflow to drive reproducible training and prediction."
+ },
+ "einsteinpy": {
+ "name": "EinsteinPy",
+ "logo": "einsteinpy.png",
+ "url": "https://einsteinpy.org",
+ "repositories": {
+ "github": "einsteinpy/einsteinpy"
+ },
+ "mailinglist": {
+ "devs": "https://groups.io/g/einsteinpy-dev"
+ },
+ "chat": {
+ "matrix": "https://app.element.io/#/room/#einsteinpy:matrix.org"
+ },
+ "microblogging": {
+ "x": "EinsteinPy"
+ },
+ "description": "is a python package for solving problems in general relativity. Computations can be done for Schwarzschild, Kerr and Kerr-Newman geometries. Visualising relativistic orbits, advancement of perihelion can be simulated in seconds. See documentation for more information."
+ },
+ "glue": {
+ "name": "Glue",
+ "logo": "glue.png",
+ "url": "http://www.glueviz.org/",
+ "repositories": {
+ "github": "glue-viz/glue"
+ },
+ "mailinglist": {
+ "users": "https://groups.google.com/group/glue-viz",
+ "devs": "https://groups.google.com/group/glue-viz-dev"
+ },
+ "microblogging": {
+ "x": "glueviz"
+ },
+ "description": "is a data visualization application and library to explore relationships within and among related datasets. Its main features include linked statistical graphs, flexible linking across data, and full Python scripting capability."
+ },
+ "juliaastro": {
+ "name": "JuliaAstro",
+ "logo": "juliaastro.png",
+ "url": "https://juliaastro.github.io/",
+ "repositories": {
+ "github": "JuliaAstro"
+ },
+ "mailinglist": {
+ "users": "https://discourse.julialang.org/c/domain/astro"
+ },
+ "chat": {
+ "slack": "https://app.slack.com/client/T68168MUP/CMXU6SD7V",
+ "zulip": "https://julialang.zulipchat.com/#narrow/channel/astronomy"
+ },
+ "description": "is an organization that shepherds the development of community astronomy and astrophysics packages for Julia. These include packages for widely used functionality such as FITS file I/O, world coordinate systems and cosmological distance calculations."
+ },
+ "poliastro": {
+ "name": "poliastro",
+ "logo": "poliastro.png",
+ "url": "https://poliastro.readthedocs.io/",
+ "repositories": {
+ "github": "poliastro/poliastro"
+ },
+ "mailinglist": {
+ "devs": "https://groups.io/g/poliastro-dev"
+ },
+ "chat": {
+ "matrix": "https://app.element.io/#/room/#poliastro:matrix.org"
+ },
+ "microblogging": {
+ "x": "poliastro_py",
+ "mastodon": "@poliastro@fosstodon.org"
+ },
+ "description": "is a python package for Astrodynamics and Orbital Mechanics problems, such as orbital elements conversion, orbital propagation, plotting, planetary ephemerides computation, and more."
+ },
+ "sunpy": {
+ "name": "SunPy",
+ "logo": "sunpy.png",
+ "url": "http://sunpy.org",
+ "repositories": {
+ "github": "sunpy/sunpy"
+ },
+ "mailinglist": {
+ "users": "http://groups.google.com/group/sunpy",
+ "devs": "http://groups.google.com/group/sunpy-dev"
+ },
+ "chat": {
+ "matrix": "https://app.element.io/#/room/#sunpy:openastronomy.org"
+ },
+ "microblogging": {
+ "x": "SunPyProject"
+ },
+ "description": "is a community-developed free and open-source software package for solar physics. SunPy is meant to be a free alternative to the SolarSoft and its aim is to provide the software tools necessary so that anyone can analyze solar data."
+ },
+ "stingray": {
+ "name": "Stingray",
+ "logo": "stingray_logo.png",
+ "url": "http://stingray.science",
+ "repositories": {
+ "github": "StingraySoftware"
+ },
+ "chat": {
+ "slack": "https://join.slack.com/t/stingraysoftware/shared_invite/zt-49kv4kba-mD1Y~s~rlrOOmvqM7mZugQ"
+ },
+ "description": ": we are a team of astrophysicists and software developers working together to build a variability analysis software to study black holes and fundamental physics under extreme conditions."
+ },
+ "casacore": {
+ "name": "Casacore",
+ "logo": "casacore.png",
+ "url": "https://www.github.com/casacore/casacore/",
+ "repositories": {
+ "github": "casacore"
+ },
+ "description": "is a suite of C++ libraries for radio astronomy data processing. Casacore underlies CASA, the Common Astronomy Software Applications developed by an international consortium of scientists at various institutes. Python bindings exist in Python-casacore. Casacore also underlies other radio astronomy software such as WSClean, and LOFAR tools. Casacore is developed by the radio astro organizations around the world. It is open source and will happily merge any (good) pull requests."
+ },
+ "chiantipy": {
+ "name": "ChiantiPy",
+ "logo": "chiantipy.png",
+ "url": "http://chiantipy.sourceforge.net/welcome.html",
+ "repositories": {
+ "github": "chianti-atomic/ChiantiPy"
+ },
+ "mailinglist": {
+ "users": "https://lists.sourceforge.net/lists/listinfo/chiantipy-users"
+ },
+ "description": "is a Python interface to the CHIANTI atomic database for astrophysical spectroscopy. CHIANTI consists of a database of atomic data that can be used to interpret spectral lines and continua emitted from high-temperature, optically-thin astrophysical sources."
+ },
+ "coin": {
+ "name": "COIN",
+ "logo": "coin.png",
+ "url": "https://cosmostatistics-initiative.org/",
+ "repositories": {
+ "github": "COINtoolbox"
+ },
+ "mailinglist": {
+ "admin (Rafael S. de Souza)": "mailto:rafael.2706@gmail.com"
+ },
+ "description": "(COsmostatistics INitiative) is an international working group built under the auspices of the International Astrostatistics Association (IAA). It aims to create an interdisciplinary environment where collaborations between astronomers, statisticians and machine learning experts can flourish. COIN is designed to promote the development of a new family of tools for data exploration in astrophysics and cosmology."
+ },
+ "gnuastro": {
+ "name": "GNU Astronomy Utilities",
+ "logo": "gnuastro.png",
+ "url": "https://www.gnu.org/software/gnuastro/",
+ "repositories": {
+ "savannah": "https://git.savannah.gnu.org/cgit/gnuastro.git"
+ },
+ "mailinglist": {
+ "users": "https://lists.gnu.org/mailman/listinfo/help-gnuastro",
+ "devs": "https://lists.gnu.org/mailman/listinfo/gnuastro-devel"
+ },
+ "description": "(Gnuastro) is an official GNU package consisting of many command-line programs and library functions for the manipulation and analysis of astronomical data. All the programs share the same basic and familiar (GNU style) command-line user interface for the comfort of both the users and developers. Gnuastro is written to comply fully with the GNU coding standards so it blends nicely with all Unix-like operating systems. This also enables astronomers to expect a fully familiar experience in the source code, building, installing and command-line user interaction. Gnuastro also has a very complete book/manual, the tutorials is the best place to start using it."
+ },
+ "ims": {
+ "name": "The Italian Mars Society",
+ "logo": "ims.png",
+ "url": "http://www.marssociety.it/?lang=en",
+ "repositories": {
+ "bitbucket": "italianmarssociety/"
+ },
+ "mailinglist": {
+ "admin": "mailto:gsoc@marssociety.it"
+ },
+ "microblogging": {
+ "x": "marssociety"
+ },
+ "description": "(IMS) is a non-profit organization, existing from 2004, as Italian branch of the International Mars Society, created in the USA by Robert Zubrin. IMS is a member of the Mars Society European network. The foundation scope of the Italian Mars Society is to promote research projects devoted to Mars Exploration and the involvement of SMEs and large enterprises in the new economy related to space exploration. IMS is currently spearheading the MARS CITY project. The project aims to address the major issues that could jeopardize a crewed mission to Mars and are not adequately being addressed at existing terrestrial Mars analogs."
+ },
+ "plasmapy": {
+ "name": "PlasmaPy",
+ "logo": "plasmapy.png",
+ "url": "http://www.plasmapy.org",
+ "repositories": {
+ "github": "plasmapy/plasmapy"
+ },
+ "mailinglist": {
+ "users": "https://groups.google.com/group/plasmapy"
+ },
+ "chat": {
+ "matrix": "https://app.element.io/#/room/#plasmapy:matrix.org"
+ },
+ "microblogging": {
+ "x": "plasmapy"
+ },
+ "description": "aims to be a collection of functionality commonly used and shared between plasma physicists and researchers globally, running within and leveraging the open source scientific Python ecosystem."
+ },
+ "radis": {
+ "name": "radis",
+ "logo": "radis_ico.png",
+ "url": "https://radis.readthedocs.io/",
+ "repositories": {
+ "github": "radis/radis"
+ },
+ "mailinglist": {
+ "users": "https://groups.google.com/forum/#!forum/radis-radiation"
+ },
+ "chat": {
+ "gitter": "https://gitter.im/radis-radiation/community"
+ },
+ "microblogging": {
+ "x": "radis_radiation"
+ },
+ "description": "A fast line-by-line code for high-resolution infrared molecular spectra. RADIS can compute spectra of millions of lines within seconds. Also includes a post-processing tools to compare experimental spectra with spectra calculated in RADIS or other spectral codes."
+ },
+ "sherpa": {
+ "name": "Sherpa",
+ "logo": "sherpa_logo.png",
+ "url": "http://cxc.cfa.harvard.edu/contrib/sherpa/",
+ "repositories": {
+ "github": "sherpa/sherpa/"
+ },
+ "description": "is a modeling and fitting application for Python. It contains a powerful language for combining simple models into complex expressions that can be fit to the data using a variety of statistics and optimization methods. It is easily extensible to include user models, statistics and optimization methods."
+ },
+ "yt": {
+ "name": "yt",
+ "logo": "yt.png",
+ "url": "https://yt-project.org/",
+ "repositories": {
+ "github": "yt-project/yt"
+ },
+ "mailinglist": {
+ "users": "https://mail.python.org/archives/list/yt-users@python.org/",
+ "devs": "https://mail.python.org/archives/list/yt-dev@python.org/"
+ },
+ "chat": {
+ "slack": "https://yt-project.slack.com/"
+ },
+ "microblogging": {
+ "x": "yt_astro"
+ },
+ "description": "is a python package for analyzing and visualizing volumetric, multi-resolution data from astrophysical simulations, radio telescopes, and a burgeoning interdisciplinary community."
+ },
+ "lincc-frameworks": {
+ "name": "LINCC Frameworks",
+ "logo": "lincc-frameworks.png",
+ "url": "https://lsstdiscoveryalliance.org/lsst-discovery-alliance-programs/lincc-frameworks/",
+ "repositories": {
+ "github": "lincc-frameworks"
+ },
+ "chat": {
+ "slack": "https://join.slack.com/t/gsoc26arrowforastro/shared_invite/zt-3qpirqhkg-qTHUg4R0iMewhIprewR1eg"
+ },
+ "description": "builds open-source tools for scalable data analysis in astronomy, aimed at enabling scientific discovery with large datasets."
+ },
+ "reltrans": {
+ "name": "Reltrans",
+ "logo": "reltrans_logo.png",
+ "url": "https://reltrans.github.io/reltrans_website/Home.html",
+ "repositories": {
+ "github": "reltrans"
+ },
+ "chat": {
+ "slack": "https://join.slack.com/t/reltrans-workspace/shared_invite/zt-3p234fciq-lD12LDPTCCPf0DTT1ZocmQ"
+ },
+ "description": "Reltrans (Relativistic transfer functions) is a publicly available, semi-analytical model for X-ray reverberation mapping of accreting black holes in both AGN and X-ray binaries. It can be used to compute both time-averaged spectra and energy-dependent, Fourier domain cross spectra."
+ }
+}
diff --git a/src/data/site.json b/src/data/site.json
new file mode 100644
index 00000000..e5ecffe1
--- /dev/null
+++ b/src/data/site.json
@@ -0,0 +1,18 @@
+{
+ "title": "OpenAstronomy",
+ "email": "",
+ "description": "Where all about the combined force of different open source projects in astronomy and astrophysics takes place.",
+ "url": "https://openastronomy.org",
+ "x_username": "Open_Astronomy",
+ "github_username": "openastronomy",
+ "irc_channel": "openastronomy",
+ "discussiongroup_url": "https://community.openastronomy.org",
+ "nav_links": {
+ "Contributor Blogs": "http://openastronomy.org/Universe_OA"
+ },
+ "page_links": [
+ { "title": "Members", "href": "/members/" },
+ { "title": "News and Events", "href": "/news/" },
+ { "title": "Google Summer of Code", "href": "/gsoc/" }
+ ]
+}
diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro
new file mode 100644
index 00000000..4e1dd320
--- /dev/null
+++ b/src/layouts/BaseLayout.astro
@@ -0,0 +1,23 @@
+---
+import Head from "../components/Head.astro";
+import Header from "../components/Header.astro";
+import Footer from "../components/Footer.astro";
+
+const { title, description } = Astro.props;
+---
+
+
+
+
+
+
+
+
diff --git a/src/layouts/PostLayout.astro b/src/layouts/PostLayout.astro
new file mode 100644
index 00000000..125df0b4
--- /dev/null
+++ b/src/layouts/PostLayout.astro
@@ -0,0 +1,36 @@
+---
+/*
+ * PostLayout - wraps a blog post with its title, date, author, and meta line.
+ *
+ * Formats the date with Intl.DateTimeFormat and joins non-empty meta parts
+ * (date, author, meta) with " • " separators into a single
.
+ * The post body is rendered via .
+ */
+import BaseLayout from "./BaseLayout.astro";
+
+const { title, date, author, meta, description } = Astro.props;
+const formattedDate = date
+ ? new Intl.DateTimeFormat("en-US", {
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+ }).format(new Date(date))
+ : "";
+const metaParts = [formattedDate, author, meta].filter(Boolean);
+---
+
+
+
+
+
{title}
+ {
+ metaParts.length ? (
+
{metaParts.join(" • ")}
+ ) : null
+ }
+
+
+
+
+
+
diff --git a/src/layouts/ProjectsLayout.astro b/src/layouts/ProjectsLayout.astro
new file mode 100644
index 00000000..ae6c95b1
--- /dev/null
+++ b/src/layouts/ProjectsLayout.astro
@@ -0,0 +1,141 @@
+---
+/**
+ * Layout for GSoC season pages (e.g. /gsoc/2025/).
+ *
+ * Aggregates all project idea files for the requested season from
+ * `src/content/pages/gsoc///.md`, then renders them
+ * as a tabbed page with three sections: Projects, Mentors, Admins.
+ *
+ * Project data transformation is handled by `src/lib/gsoc.ts`. Rendering is
+ * delegated to the focused sub-components in `src/components/gsoc/`.
+ */
+import BaseLayout from "./BaseLayout.astro";
+import ProjectCard from "../components/gsoc/ProjectCard.astro";
+import ProjectDetail from "../components/gsoc/ProjectDetail.astro";
+import PeopleSection from "../components/gsoc/PeopleSection.astro";
+import Modal from "../components/gsoc/Modal.astro";
+import admins from "../data/gsoc-admins.json";
+import members from "../data/members.json";
+import { fromSiteRoot } from "../lib/relative-paths.js";
+import { buildProject, isProjectFile } from "../lib/gsoc.ts";
+import type { ProjectModule } from "../lib/gsoc.ts";
+
+const frontmatter = Astro.props.frontmatter ?? {};
+const pagePath = Astro.url.pathname;
+const title = Astro.props.title ?? frontmatter.title;
+const season = Astro.props.season ?? frontmatter.season;
+
+// Prefer the year extracted from the URL path over the frontmatter `season`
+// field, since the URL is authoritative and avoids stale frontmatter issues.
+const seasonMatch = Astro.url.pathname.match(/\/gsoc\/(\d{4})(?:\/|$)/);
+const seasonKey = (
+ seasonMatch ? seasonMatch[1] : String(season ?? "").trim()
+).trim();
+
+const pageTitle = seasonKey
+ ? title
+ ? `${title} (${seasonKey})`
+ : `GSoC ${seasonKey}`
+ : (title ?? "OpenAstronomy");
+
+// Eagerly load all GSoC markdown files; filter and transform in one pass below.
+const projectModules = import.meta.glob(
+ "../content/pages/gsoc/**/*.md",
+ { eager: true },
+);
+
+const memberLookup = members as Record;
+const adminLookup = admins as Record;
+
+const projects = (Object.entries(projectModules) as [string, ProjectModule][])
+ .filter(([path]) => isProjectFile(path.replace(/\\/g, "/"), seasonKey))
+ .map(([path, mod]) =>
+ buildProject(path, mod, seasonKey, memberLookup, pagePath, fromSiteRoot),
+ )
+ .sort((a, b) => a.name.localeCompare(b.name));
+
+const mentors = Array.from(
+ new Set(projects.flatMap((p) => p.mentors).filter(Boolean)),
+).sort((a, b) => a.localeCompare(b));
+
+const adminHandles = adminLookup[seasonKey] ?? [];
+
+const projectsSectionLabel = `GSoC Projects for ${seasonKey}`;
+const mentorsSectionLabel = `Mentors for ${seasonKey}`;
+const adminsSectionLabel = `Admins for ${seasonKey}`;
+
+const sectionLinks = [
+ { id: "projects", label: "Projects", heading: projectsSectionLabel },
+ { id: "mentors", label: "Mentors", heading: mentorsSectionLabel },
+ { id: "admins", label: "Admins", heading: adminsSectionLabel },
+];
+
+const peopleSections = [
+ {
+ id: "mentors",
+ heading: mentorsSectionLabel,
+ intro: `We are the mentors for OpenAstronomy in GSoC ${seasonKey}.`,
+ handles: mentors,
+ },
+ {
+ id: "admins",
+ heading: adminsSectionLabel,
+ intro: "We are the admins for OpenAstronomy.",
+ handles: adminHandles,
+ },
+];
+---
+
+
+
+
diff --git a/src/lib/__tests__/gsoc.test.ts b/src/lib/__tests__/gsoc.test.ts
new file mode 100644
index 00000000..4f3f5190
--- /dev/null
+++ b/src/lib/__tests__/gsoc.test.ts
@@ -0,0 +1,207 @@
+import { describe, it, expect } from "vitest";
+import {
+ normalizeArray,
+ slugify,
+ formatMemberLink,
+ joinableRows,
+ isProjectFile,
+} from "../gsoc.ts";
+
+// ---------------------------------------------------------------------------
+// normalizeArray
+// ---------------------------------------------------------------------------
+
+describe("normalizeArray", () => {
+ it("returns an array value as-is after trimming", () => {
+ expect(normalizeArray(["python", "rust"])).toEqual(["python", "rust"]);
+ });
+
+ it("wraps a scalar string in an array", () => {
+ expect(normalizeArray("python")).toEqual(["python"]);
+ });
+
+ it("returns an empty array for null", () => {
+ expect(normalizeArray(null)).toEqual([]);
+ });
+
+ it("returns an empty array for undefined", () => {
+ expect(normalizeArray(undefined)).toEqual([]);
+ });
+
+ it("returns an empty array for an empty string", () => {
+ expect(normalizeArray("")).toEqual([]);
+ });
+
+ it('filters out the placeholder value "none"', () => {
+ expect(normalizeArray(["python", "none"])).toEqual(["python"]);
+ });
+
+ it('filters out the placeholder value "n/a" (case-insensitive)', () => {
+ expect(normalizeArray(["N/A", "rust"])).toEqual(["rust"]);
+ });
+
+ it('filters out the placeholder value "null"', () => {
+ expect(normalizeArray(["null"])).toEqual([]);
+ });
+
+ it("trims whitespace from values", () => {
+ expect(normalizeArray([" python ", " rust "])).toEqual([
+ "python",
+ "rust",
+ ]);
+ });
+
+ it("filters out values that are blank after trimming", () => {
+ expect(normalizeArray(["python", " "])).toEqual(["python"]);
+ });
+
+ it("coerces numbers to strings", () => {
+ expect(normalizeArray(42)).toEqual(["42"]);
+ });
+});
+
+// ---------------------------------------------------------------------------
+// slugify
+// ---------------------------------------------------------------------------
+
+describe("slugify", () => {
+ it("lowercases the input", () => {
+ expect(slugify("Hello World")).toBe("hello-world");
+ });
+
+ it("replaces spaces with hyphens", () => {
+ expect(slugify("my cool project")).toBe("my-cool-project");
+ });
+
+ it("collapses multiple spaces into one hyphen", () => {
+ expect(slugify("a b")).toBe("a-b");
+ });
+
+ it("removes leading and trailing hyphens", () => {
+ expect(slugify(" leading")).toBe("leading");
+ expect(slugify("trailing ")).toBe("trailing");
+ });
+
+ it("replaces special characters with hyphens", () => {
+ expect(slugify("C++")).toBe("c");
+ expect(slugify("node.js")).toBe("node-js");
+ });
+
+ it("preserves digits", () => {
+ expect(slugify("Project 2025")).toBe("project-2025");
+ });
+});
+
+// ---------------------------------------------------------------------------
+// formatMemberLink
+// ---------------------------------------------------------------------------
+
+const memberLookup = {
+ sunpy: { name: "SunPy" },
+ astropy: { name: "Astropy" },
+};
+
+/** Simple stand-in for fromSiteRoot that just prefixes with the pathname. */
+const fakeFromSiteRoot = (pathname: string, target: string) =>
+ `${pathname}${target}`;
+
+describe("formatMemberLink", () => {
+ it("returns the member name and an href for a known key", () => {
+ const result = formatMemberLink(
+ "sunpy",
+ memberLookup,
+ "/gsoc/2025/",
+ fakeFromSiteRoot,
+ );
+ expect(result.label).toBe("SunPy");
+ expect(result.href).toContain("members");
+ });
+
+ it("encodes the member name in the href anchor", () => {
+ const result = formatMemberLink(
+ "astropy",
+ memberLookup,
+ "/",
+ fakeFromSiteRoot,
+ );
+ expect(result.href).toContain(encodeURIComponent("Astropy"));
+ });
+
+ it("returns the raw key with a null href for an unknown member", () => {
+ const result = formatMemberLink(
+ "unknown-org",
+ memberLookup,
+ "/",
+ fakeFromSiteRoot,
+ );
+ expect(result.label).toBe("unknown-org");
+ expect(result.href).toBeNull();
+ });
+});
+
+// ---------------------------------------------------------------------------
+// joinableRows
+// ---------------------------------------------------------------------------
+
+describe("joinableRows", () => {
+ it("keeps rows that have values", () => {
+ const rows = [
+ { label: "Tags", values: ["python"] },
+ { label: "Empty", values: [] },
+ ];
+ expect(joinableRows(rows)).toEqual([{ label: "Tags", values: ["python"] }]);
+ });
+
+ it("returns an empty array when all rows are empty", () => {
+ expect(joinableRows([{ label: "X", values: [] }])).toEqual([]);
+ });
+
+ it("returns all rows when all have values", () => {
+ const rows = [
+ { label: "A", values: ["1"] },
+ { label: "B", values: ["2"] },
+ ];
+ expect(joinableRows(rows)).toHaveLength(2);
+ });
+});
+
+// ---------------------------------------------------------------------------
+// isProjectFile
+// ---------------------------------------------------------------------------
+
+describe("isProjectFile", () => {
+ it("returns true for a valid project file", () => {
+ expect(
+ isProjectFile("../content/pages/gsoc/2025/sunpy/my-project.md", "2025"),
+ ).toBe(true);
+ });
+
+ it("returns false for index.md files", () => {
+ expect(
+ isProjectFile("../content/pages/gsoc/2025/sunpy/index.md", "2025"),
+ ).toBe(false);
+ });
+
+ it("returns false for template files starting with _", () => {
+ expect(
+ isProjectFile("../content/pages/gsoc/_project_template.md", "2025"),
+ ).toBe(false);
+ });
+
+ it("returns false for files in the wrong year", () => {
+ expect(
+ isProjectFile("../content/pages/gsoc/2024/sunpy/my-project.md", "2025"),
+ ).toBe(false);
+ });
+
+ it("returns false for files at the season root (no suborg subdir)", () => {
+ // gsoc / 2025 / project.md — only 3 parts after gsoc, needs 4
+ expect(isProjectFile("../content/pages/gsoc/2025/project.md", "2025")).toBe(
+ false,
+ );
+ });
+
+ it("returns false when the path contains no gsoc segment", () => {
+ expect(isProjectFile("../content/pages/other/file.md", "2025")).toBe(false);
+ });
+});
diff --git a/src/lib/__tests__/members.test.ts b/src/lib/__tests__/members.test.ts
new file mode 100644
index 00000000..ee362cce
--- /dev/null
+++ b/src/lib/__tests__/members.test.ts
@@ -0,0 +1,102 @@
+import { describe, it, expect } from "vitest";
+import { buildRepositoryLinks, buildSocialLinks } from "../members.ts";
+
+// ---------------------------------------------------------------------------
+// buildRepositoryLinks
+// ---------------------------------------------------------------------------
+
+describe("buildRepositoryLinks", () => {
+ it("returns an empty array when repositories is undefined", () => {
+ expect(buildRepositoryLinks(undefined, "myorg")).toEqual([]);
+ });
+
+ it("returns an empty array for an empty object", () => {
+ expect(buildRepositoryLinks({}, "myorg")).toEqual([]);
+ });
+
+ it("builds a github link from a known provider", () => {
+ const [link] = buildRepositoryLinks(
+ { github: "astropy/astropy" },
+ "astropy",
+ );
+ expect(link.href).toBe("https://github.com/astropy/astropy");
+ expect(link.label).toBe("astropy/astropy");
+ });
+
+ it("builds a bitbucket link from a known provider", () => {
+ const [link] = buildRepositoryLinks(
+ { bitbucket: "myteam/myrepo" },
+ "myorg",
+ );
+ expect(link.href).toBe("https://bitbucket.com/myteam/myrepo");
+ expect(link.label).toBe("myteam/myrepo");
+ });
+
+ it("builds a sourceforge link from a known provider", () => {
+ const [link] = buildRepositoryLinks({ sourceforge: "my-project" }, "myorg");
+ expect(link.href).toBe("https://sourceforge.net/projects/my-project");
+ expect(link.label).toBe("my-project");
+ });
+
+ it("uses the raw value as href and memberKey as label for unknown providers", () => {
+ const [link] = buildRepositoryLinks(
+ { gitlab: "https://gitlab.com/org/repo" },
+ "org",
+ );
+ expect(link.href).toBe("https://gitlab.com/org/repo");
+ expect(link.label).toBe("org");
+ });
+
+ it("handles multiple providers", () => {
+ const links = buildRepositoryLinks(
+ { github: "org/repo", bitbucket: "org/repo2" },
+ "org",
+ );
+ expect(links).toHaveLength(2);
+ });
+});
+
+// ---------------------------------------------------------------------------
+// buildSocialLinks
+// ---------------------------------------------------------------------------
+
+describe("buildSocialLinks", () => {
+ it("returns an empty array when microblogging is undefined", () => {
+ expect(buildSocialLinks(undefined)).toEqual([]);
+ });
+
+ it("returns an empty array for an empty object", () => {
+ expect(buildSocialLinks({})).toEqual([]);
+ });
+
+ it("builds an X (Twitter) link", () => {
+ const [link] = buildSocialLinks({ x: "astropy" });
+ expect(link.href).toBe("https://x.com/astropy");
+ expect(link.label).toBe("@astropy");
+ });
+
+ it("builds a Mastodon link from a valid @user@instance handle", () => {
+ const [link] = buildSocialLinks({
+ mastodon: "@astropy@mastodon.social",
+ });
+ expect(link.href).toBe("https://mastodon.social/@astropy");
+ expect(link.label).toBe("@astropy@mastodon.social");
+ });
+
+ it("skips Mastodon entries with malformed handles", () => {
+ // A handle without the @instance part cannot be resolved
+ expect(buildSocialLinks({ mastodon: "astropy" })).toEqual([]);
+ });
+
+ it("silently ignores unsupported platforms", () => {
+ expect(buildSocialLinks({ bluesky: "astropy.bsky.social" })).toEqual([]);
+ });
+
+ it("handles multiple platforms", () => {
+ const links = buildSocialLinks({
+ x: "astropy",
+ mastodon: "@astropy@mastodon.social",
+ });
+ expect(links).toHaveLength(2);
+ });
+});
diff --git a/src/lib/__tests__/posts.test.js b/src/lib/__tests__/posts.test.js
new file mode 100644
index 00000000..c7549bd7
--- /dev/null
+++ b/src/lib/__tests__/posts.test.js
@@ -0,0 +1,181 @@
+import { describe, it, expect } from "vitest";
+import {
+ getPostSlug,
+ getPostDateParts,
+ getPostUrl,
+ getExcerpt,
+} from "../posts.js";
+
+// ---------------------------------------------------------------------------
+// Helpers
+// ---------------------------------------------------------------------------
+
+/** Creates a minimal fake post entry for testing. */
+const makeEntry = (id, data = {}) => ({ id, data });
+
+/** Creates a fake entry that also has a `body` (for getExcerpt). */
+const makePostEntry = (id, data = {}, body = "") => ({ id, data, body });
+
+// ---------------------------------------------------------------------------
+// getPostSlug
+// ---------------------------------------------------------------------------
+
+describe("getPostSlug", () => {
+ it("strips the YYYY-MM-DD prefix from a dated filename", () => {
+ expect(getPostSlug(makeEntry("2024-03-15-my-post.md"))).toBe("my-post");
+ });
+
+ it("handles multi-word slugs separated by hyphens", () => {
+ expect(getPostSlug(makeEntry("2024-03-15-hello-world-post.md"))).toBe(
+ "hello-world-post",
+ );
+ });
+
+ it("returns the base filename unchanged when there is no date prefix", () => {
+ expect(getPostSlug(makeEntry("about-us.md"))).toBe("about-us");
+ });
+
+ it("normalises underscores to hyphens", () => {
+ expect(getPostSlug(makeEntry("2024-01-01-some_post.md"))).toBe("some-post");
+ });
+
+ it("lowercases the result", () => {
+ expect(getPostSlug(makeEntry("2024-01-01-MyPost.md"))).toBe("mypost");
+ });
+
+ it("uses the last path segment when id contains directories", () => {
+ expect(getPostSlug(makeEntry("posts/2024-03-15-deep-post.md"))).toBe(
+ "deep-post",
+ );
+ });
+
+ it("falls back to entry.slug when id is absent", () => {
+ expect(getPostSlug({ slug: "2024-03-15-slug-post.md", data: {} })).toBe(
+ "slug-post",
+ );
+ });
+});
+
+// ---------------------------------------------------------------------------
+// getPostDateParts
+// ---------------------------------------------------------------------------
+
+describe("getPostDateParts", () => {
+ it("returns correct UTC year/month/day from a Date object", () => {
+ const entry = makeEntry("foo.md", {
+ date: new Date("2024-03-05T00:00:00Z"),
+ });
+ const { year, month, day } = getPostDateParts(entry);
+ expect(year).toBe("2024");
+ expect(month).toBe("03");
+ expect(day).toBe("05");
+ });
+
+ it("pads single-digit months and days with leading zeros", () => {
+ const entry = makeEntry("foo.md", {
+ date: new Date("2024-01-07T00:00:00Z"),
+ });
+ const { month, day } = getPostDateParts(entry);
+ expect(month).toBe("01");
+ expect(day).toBe("07");
+ });
+
+ it("also accepts a date string in the data field", () => {
+ const entry = makeEntry("foo.md", { date: "2023-11-20" });
+ const { year, month, day } = getPostDateParts(entry);
+ expect(year).toBe("2023");
+ expect(month).toBe("11");
+ expect(day).toBe("20");
+ });
+
+ it("falls back to pubDate when date is absent", () => {
+ const entry = makeEntry("foo.md", {
+ pubDate: new Date("2022-06-15T00:00:00Z"),
+ });
+ const { year } = getPostDateParts(entry);
+ expect(year).toBe("2022");
+ });
+
+ it("returns the resolved Date object", () => {
+ const d = new Date("2024-03-15T00:00:00Z");
+ const entry = makeEntry("foo.md", { date: d });
+ expect(getPostDateParts(entry).date).toBeInstanceOf(Date);
+ });
+});
+
+// ---------------------------------------------------------------------------
+// getPostUrl
+// ---------------------------------------------------------------------------
+
+describe("getPostUrl", () => {
+ it("builds a /year/month/day/slug/ URL", () => {
+ const entry = makeEntry("2024-03-15-my-post.md", {
+ date: new Date("2024-03-15T00:00:00Z"),
+ });
+ expect(getPostUrl(entry)).toBe("/2024/03/15/my-post/");
+ });
+
+ it("includes leading and trailing slashes", () => {
+ const url = getPostUrl(
+ makeEntry("2020-01-01-test.md", {
+ date: new Date("2020-01-01T00:00:00Z"),
+ }),
+ );
+ expect(url).toMatch(/^\//);
+ expect(url).toMatch(/\/$/);
+ });
+});
+
+// ---------------------------------------------------------------------------
+// getExcerpt
+// ---------------------------------------------------------------------------
+
+describe("getExcerpt", () => {
+ it("returns the frontmatter summary when present", () => {
+ const post = makePostEntry("p.md", { summary: "Custom summary." }, "Body");
+ expect(getExcerpt(post)).toBe("Custom summary.");
+ });
+
+ it("strips Markdown links, keeping the link label", () => {
+ const post = makePostEntry(
+ "p.md",
+ {},
+ "Read [the docs](https://example.com) for more.",
+ );
+ expect(getExcerpt(post)).toBe("Read the docs for more.");
+ });
+
+ it("strips inline code backticks", () => {
+ const post = makePostEntry("p.md", {}, "Use `npm install` to set up.");
+ expect(getExcerpt(post)).toBe("Use npm install to set up.");
+ });
+
+ it("strips Markdown images", () => {
+ const post = makePostEntry(
+ "p.md",
+ {},
+ "\n\nThe real paragraph.",
+ );
+ // Image-only first paragraph is skipped; second paragraph used
+ expect(getExcerpt(post)).toBe("The real paragraph.");
+ });
+
+ it("truncates at a word boundary when text exceeds maxLength", () => {
+ // Each "word" is 4 chars + 1 space = 5 chars.
+ // With maxLength=12, slice(0,12) = "word word wo" — "wo" is partial.
+ // The implementation must strip the partial word, leaving "word word".
+ const text = "word word word word word";
+ const result = getExcerpt(makePostEntry("p.md", {}, text), 12);
+ expect(result).toBe("word word...");
+ });
+
+ it("returns the full text when it is shorter than maxLength", () => {
+ const post = makePostEntry("p.md", {}, "Short text.");
+ expect(getExcerpt(post, 280)).toBe("Short text.");
+ });
+
+ it("strips heading markers", () => {
+ const post = makePostEntry("p.md", {}, "## Section heading");
+ expect(getExcerpt(post)).toBe("Section heading");
+ });
+});
diff --git a/src/lib/__tests__/relative-paths.test.js b/src/lib/__tests__/relative-paths.test.js
new file mode 100644
index 00000000..9785c88b
--- /dev/null
+++ b/src/lib/__tests__/relative-paths.test.js
@@ -0,0 +1,104 @@
+import { describe, it, expect } from "vitest";
+import {
+ getRelativeRoot,
+ fromSiteRoot,
+ localizeHref,
+} from "../relative-paths.js";
+
+// ---------------------------------------------------------------------------
+// getRelativeRoot
+// ---------------------------------------------------------------------------
+
+describe("getRelativeRoot", () => {
+ it("returns ./ for the root path", () => {
+ expect(getRelativeRoot("/")).toBe("./");
+ });
+
+ it("returns ../ for a one-segment path", () => {
+ expect(getRelativeRoot("/members/")).toBe("../");
+ });
+
+ it("returns ../../ for a two-segment path", () => {
+ expect(getRelativeRoot("/gsoc/2025/")).toBe("../../");
+ });
+
+ it("returns ../../../ for a three-segment path", () => {
+ expect(getRelativeRoot("/a/b/c/")).toBe("../../../");
+ });
+
+ it("defaults to ./ when pathname is omitted", () => {
+ expect(getRelativeRoot()).toBe("./");
+ });
+
+ it("ignores query strings when counting depth", () => {
+ expect(getRelativeRoot("/members/?q=foo")).toBe("../");
+ });
+
+ it("ignores hash fragments when counting depth", () => {
+ expect(getRelativeRoot("/members/#section")).toBe("../");
+ });
+});
+
+// ---------------------------------------------------------------------------
+// fromSiteRoot
+// ---------------------------------------------------------------------------
+
+describe("fromSiteRoot", () => {
+ it("builds a relative path from the root", () => {
+ expect(fromSiteRoot("/members/", "/css/style.css")).toBe(
+ "../css/style.css",
+ );
+ });
+
+ it("returns the relative root alone when targetPath is empty", () => {
+ expect(fromSiteRoot("/members/", "")).toBe("../");
+ });
+
+ it("strips leading slashes from the target before appending", () => {
+ expect(fromSiteRoot("/", "/members/")).toBe("./members/");
+ });
+
+ it("works from a deeply nested page", () => {
+ expect(fromSiteRoot("/gsoc/2025/sunpy/", "/members/")).toBe(
+ "../../../members/",
+ );
+ });
+});
+
+// ---------------------------------------------------------------------------
+// localizeHref
+// ---------------------------------------------------------------------------
+
+describe("localizeHref", () => {
+ it("returns fragment-only hrefs unchanged", () => {
+ expect(localizeHref("/page/", "#section")).toBe("#section");
+ });
+
+ it("returns external https:// URLs unchanged", () => {
+ expect(localizeHref("/page/", "https://example.com")).toBe(
+ "https://example.com",
+ );
+ });
+
+ it("returns protocol-relative //example.com URLs unchanged", () => {
+ expect(localizeHref("/page/", "//example.com")).toBe("//example.com");
+ });
+
+ it("returns mailto: links unchanged", () => {
+ expect(localizeHref("/page/", "mailto:hi@example.com")).toBe(
+ "mailto:hi@example.com",
+ );
+ });
+
+ it("converts absolute-path hrefs to relative", () => {
+ expect(localizeHref("/gsoc/2025/", "/members/")).toBe("../../members/");
+ });
+
+ it("returns relative hrefs unchanged", () => {
+ expect(localizeHref("/page/", "other-page/")).toBe("other-page/");
+ });
+
+ it("returns an empty string for an empty href", () => {
+ expect(localizeHref("/page/", "")).toBe("");
+ });
+});
diff --git a/src/lib/gsoc.ts b/src/lib/gsoc.ts
new file mode 100644
index 00000000..9e3446ee
--- /dev/null
+++ b/src/lib/gsoc.ts
@@ -0,0 +1,240 @@
+/**
+ * Utility functions for building GSoC project data from Astro content modules.
+ *
+ * These helpers are extracted from the layout so they can be independently
+ * tested. All functions are pure (no side effects, no Astro-runtime imports).
+ */
+
+// ---------------------------------------------------------------------------
+// Types
+// ---------------------------------------------------------------------------
+
+export type AstroComponentFactory = (...args: unknown[]) => unknown;
+
+export type ProjectModule = {
+ frontmatter?: Record;
+ Content: AstroComponentFactory;
+};
+
+export type MemberLink = {
+ label: string;
+ href: string | null;
+};
+
+export type DetailRow = {
+ label: string;
+ values: string[];
+};
+
+export type GsocProject = {
+ name: string;
+ /** Slugified version of `name` used as an HTML anchor ID. */
+ anchor: string;
+ /** Relative URL to the project's standalone page. */
+ href: string;
+ desc: string;
+ requirements: string[];
+ mentors: string[];
+ collaborators: MemberLink[];
+ issues: string[];
+ /** Rows shown on the summary card (mentors + detail rows). */
+ cardRows: DetailRow[];
+ /** Rows shown in the expanded detail panel (no mentors row). */
+ detailRows: DetailRow[];
+ Content: AstroComponentFactory;
+};
+
+// ---------------------------------------------------------------------------
+// Helpers
+// ---------------------------------------------------------------------------
+
+/**
+ * Coerces an unknown frontmatter value to a clean array of non-empty strings.
+ *
+ * Handles three cases commonly produced by YAML frontmatter:
+ * - An array of values (normal case)
+ * - A single scalar value (author wrote a string instead of a list)
+ * - A null/undefined/empty value (field was omitted)
+ *
+ * Placeholder strings like `"none"`, `"n/a"`, `"na"`, and `"null"` are
+ * filtered out — contributors sometimes use these in project templates.
+ *
+ * @param value - Raw frontmatter field value.
+ * @returns Array of trimmed, non-empty, non-placeholder strings.
+ */
+export const normalizeArray = (value: unknown): string[] => {
+ const values = Array.isArray(value)
+ ? value
+ : value !== null && value !== undefined && value !== ""
+ ? [value]
+ : [];
+ return values
+ .map((item) => String(item ?? "").trim())
+ .filter((item) => {
+ const normalized = item.toLowerCase();
+ if (!normalized) return false;
+ return !["none", "n/a", "na", "null"].includes(normalized);
+ });
+};
+
+/**
+ * Converts a string to a lowercase kebab-case slug suitable for use as an
+ * HTML `id` attribute or URL path segment.
+ *
+ * @param value - Input string.
+ * @returns Slugified string (e.g. `"My Cool Project"` → `"my-cool-project"`).
+ */
+export const slugify = (value: string): string =>
+ value
+ .toLowerCase()
+ .trim()
+ .replace(/[^a-z0-9]+/g, "-")
+ .replace(/(^-|-$)/g, "");
+
+/**
+ * Resolves a `collaborating_projects` key from a project's frontmatter to a
+ * display label and optional href pointing to the member's entry on `/members/`.
+ *
+ * If the key is found in `memberLookup` the member's full name is used as the
+ * label and a relative URL to the members page anchor is returned.
+ * If the key is unknown the raw key string is shown without a link.
+ *
+ * @param key - The member key as written in the project's frontmatter.
+ * @param memberLookup - The full `members.json` object keyed by member slug.
+ * @param pagePath - The current page's URL pathname (used to generate relative URLs).
+ * @param fromSiteRoot - Helper that converts an absolute path to a relative one.
+ * @returns `{ label, href }` where `href` may be `null` for unknown members.
+ */
+export const formatMemberLink = (
+ key: string,
+ memberLookup: Record,
+ pagePath: string,
+ fromSiteRoot: (pathname: string, targetPath: string) => string,
+): MemberLink => {
+ const member = memberLookup[key];
+ if (member?.name) {
+ return {
+ label: member.name,
+ href: fromSiteRoot(
+ pagePath,
+ `/members/#${encodeURIComponent(member.name)}`,
+ ),
+ };
+ }
+ return { label: key, href: null };
+};
+
+/**
+ * Filters a list of detail rows to only those with at least one value.
+ * Used to avoid rendering empty `
` sections in the project card/detail.
+ *
+ * @param rows - Array of label + values pairs.
+ * @returns Subset of `rows` where `values` is non-empty.
+ */
+export const joinableRows = (rows: DetailRow[]): DetailRow[] =>
+ rows.filter((row) => row.values.length > 0);
+
+/**
+ * Returns true if a file path points to a GSoC project idea file for the
+ * given season year.
+ *
+ * Project files live at `gsoc///.md`. Files that should
+ * NOT be treated as projects are:
+ * - `index.md` (season landing page)
+ * - Files starting with `_` (e.g. `_project_template.md`)
+ * - Files at the season root (not inside a suborg subdirectory)
+ *
+ * @param normalizedPath - Forward-slash file path string.
+ * @param seasonKey - Four-digit year string (e.g. `"2025"`).
+ * @returns True if the path is a project file for the given season.
+ */
+export const isProjectFile = (
+ normalizedPath: string,
+ seasonKey: string,
+): boolean => {
+ const parts = normalizedPath.split("/");
+ const gsocIndex = parts.lastIndexOf("gsoc");
+ if (gsocIndex === -1) return false;
+ const year = parts[gsocIndex + 1];
+ if (year !== seasonKey) return false;
+ // Must have at least: gsoc / year / suborg / file.md
+ if (parts.length < gsocIndex + 4) return false;
+ const filename = parts[parts.length - 1] ?? "";
+ if (filename.startsWith("_") || filename === "index.md") return false;
+ return true;
+};
+
+/**
+ * Builds a structured {@link GsocProject} object from a raw Vite module path
+ * and its eagerly-loaded module.
+ *
+ * This is the main transformation step that converts raw frontmatter (which may
+ * be missing, malformed, or use placeholder values) into a clean, typed object
+ * ready for rendering.
+ *
+ * @param modulePath - Vite module path string for the project file.
+ * @param mod - Eagerly-loaded module containing `frontmatter` and `Content`.
+ * @param seasonKey - Four-digit year string (e.g. `"2025"`).
+ * @param memberLookup - Full `members.json` object keyed by member slug.
+ * @param pagePath - Current page pathname (used for relative URL generation).
+ * @param fromSiteRoot - Relative-URL helper.
+ * @returns A fully populated `GsocProject`.
+ */
+export const buildProject = (
+ modulePath: string,
+ mod: ProjectModule,
+ seasonKey: string,
+ memberLookup: Record,
+ pagePath: string,
+ fromSiteRoot: (pathname: string, targetPath: string) => string,
+): GsocProject => {
+ const data = mod.frontmatter ?? {};
+ const normalizedPath = modulePath.replace(/\\/g, "/");
+ const parts = normalizedPath.split("/");
+ const gsocIndex = parts.lastIndexOf("gsoc");
+ const year = parts[gsocIndex + 1] ?? seasonKey;
+ const suborg = parts[gsocIndex + 2] ?? "";
+ const fileSlug = (parts[parts.length - 1] ?? "").replace(/\.md$/, "");
+
+ const name =
+ typeof data.name === "string" && data.name.trim()
+ ? data.name.trim()
+ : fileSlug; // fall back to filename if `name` is missing
+
+ const projectPath = `/gsoc/${year}/${suborg}/${fileSlug}/`;
+ const desc = typeof data.desc === "string" ? data.desc : "";
+ const requirements = normalizeArray(data.requirements);
+ const mentors = normalizeArray(data.mentors);
+ const initiatives = normalizeArray(data.initiatives);
+ const projectSize = normalizeArray(data.project_size);
+ const tags = normalizeArray(data.tags);
+ const collaborators = normalizeArray(data.collaborating_projects).map((key) =>
+ formatMemberLink(key, memberLookup, pagePath, fromSiteRoot),
+ );
+ const issues = normalizeArray(data.issues);
+
+ const detailRows = joinableRows([
+ { label: "Initiatives", values: initiatives },
+ { label: "Project size", values: projectSize },
+ { label: "Tags", values: tags },
+ ]);
+
+ const cardRows = joinableRows([
+ { label: "Mentors", values: mentors },
+ ...detailRows,
+ ]);
+
+ return {
+ name,
+ anchor: slugify(name),
+ href: fromSiteRoot(pagePath, projectPath),
+ desc,
+ requirements,
+ mentors,
+ collaborators,
+ issues,
+ cardRows,
+ detailRows,
+ Content: mod.Content,
+ };
+};
diff --git a/src/lib/members.ts b/src/lib/members.ts
new file mode 100644
index 00000000..4ab5058a
--- /dev/null
+++ b/src/lib/members.ts
@@ -0,0 +1,150 @@
+/**
+ * Utility functions for building member card data from `members.json` entries.
+ *
+ * Extracted from `MemberCard.astro` so the data-transformation logic can be
+ * tested independently of the Astro component runtime.
+ */
+
+import icons from "../data/icons.json";
+
+// ---------------------------------------------------------------------------
+// Types
+// ---------------------------------------------------------------------------
+
+export type RepositoryLink = {
+ href: string;
+ label: string;
+ icon: string;
+ viewBox: string;
+ height: string | undefined;
+};
+
+export type SocialLink = {
+ href: string;
+ label: string;
+ icon: string;
+};
+
+// ---------------------------------------------------------------------------
+// Known repository providers
+// ---------------------------------------------------------------------------
+
+/**
+ * Map of known repository host keys (as used in `members.json`) to their URL
+ * builder and SVG icon configuration.
+ *
+ * The `height` field controls the SVG element's height attribute; `undefined`
+ * lets it default to its natural size.
+ */
+const repoProviders: Record<
+ string,
+ {
+ href: (repo: string) => string;
+ icon: string;
+ viewBox: string;
+ height: string | undefined;
+ }
+> = {
+ github: {
+ href: (repo) => `https://github.com/${repo}`,
+ icon: icons.gh_logo,
+ viewBox: "0 0 16 16",
+ height: undefined,
+ },
+ bitbucket: {
+ href: (repo) => `https://bitbucket.com/${repo}`,
+ icon: icons.bb_logo,
+ viewBox: "0 0 30 30",
+ height: "50%",
+ },
+ sourceforge: {
+ href: (repo) => `https://sourceforge.net/projects/${repo}`,
+ icon: icons.sf_logo,
+ viewBox: "0 0 15 10",
+ height: "50%",
+ },
+};
+
+// ---------------------------------------------------------------------------
+// Public helpers
+// ---------------------------------------------------------------------------
+
+/**
+ * Builds the list of repository links for a member card.
+ *
+ * For known providers (github, bitbucket, sourceforge) the href is constructed
+ * from the repo identifier. For unknown providers the raw value is used as the
+ * href and the github icon is used as a fallback.
+ *
+ * @param repositories - The `repositories` field from a `members.json` entry
+ * (e.g. `{ github: "astropy/astropy" }`).
+ * @param memberKey - The member's slug key, used as a fallback label for unknown providers.
+ * @returns Array of repository link descriptors.
+ */
+export const buildRepositoryLinks = (
+ repositories: Record | undefined,
+ memberKey: string,
+): RepositoryLink[] => {
+ if (!repositories) return [];
+ return Object.entries(repositories).map(([provider, repo]) => {
+ const known = repoProviders[provider];
+ if (known) {
+ return {
+ href: known.href(repo),
+ label: repo,
+ icon: known.icon,
+ viewBox: known.viewBox,
+ height: known.height,
+ };
+ }
+ // Unknown provider: use the raw value as a URL with the github icon as fallback
+ return {
+ href: repo,
+ label: memberKey,
+ icon: icons.gh_logo,
+ viewBox: "0 0 16 16",
+ height: undefined,
+ };
+ });
+};
+
+/**
+ * Builds the list of social/microblogging links for a member card.
+ *
+ * Supported platforms: `x` (formerly Twitter), `mastodon`.
+ * Unsupported platforms are silently ignored (returns nothing for that entry).
+ *
+ * For Mastodon the handle is expected in the format `@username@instance.social`.
+ * Malformed handles (missing the two `@` separators) are skipped.
+ *
+ * @param microblogging - The `microblogging` field from a `members.json` entry
+ * (e.g. `{ x: "astropy" }` or `{ mastodon: "@astropy@mastodon.social" }`).
+ * @returns Array of social link descriptors (only supported platforms included).
+ */
+export const buildSocialLinks = (
+ microblogging: Record | undefined,
+): SocialLink[] => {
+ if (!microblogging) return [];
+ return Object.entries(microblogging)
+ .map(([platform, handle]) => {
+ if (platform === "x") {
+ return {
+ href: `https://x.com/${handle}`,
+ label: `@${handle}`,
+ icon: icons.x_logo,
+ };
+ }
+ if (platform === "mastodon") {
+ // Handle format: @username@instance.social — split on @ to get host
+ const [, username, host] = handle.split("@");
+ if (!username || !host) return null; // malformed handle
+ return {
+ href: `https://${host}/@${username}`,
+ label: handle,
+ icon: icons.mastodon_logo,
+ };
+ }
+ return null;
+ })
+ .filter((link): link is SocialLink => link !== null);
+};
diff --git a/src/lib/posts.js b/src/lib/posts.js
new file mode 100644
index 00000000..895874eb
--- /dev/null
+++ b/src/lib/posts.js
@@ -0,0 +1,117 @@
+/** Pads a number to 2 digits with a leading zero (e.g. 7 → "07"). */
+const pad2 = (value) => String(value).padStart(2, "0");
+
+/** Coerces a value that may already be a Date or a date string into a Date. */
+const ensureDate = (value) => {
+ if (value instanceof Date) {
+ return value;
+ }
+ return new Date(value);
+};
+
+/**
+ * Derives the URL slug for a post from its content collection entry.
+ *
+ * Post filenames follow the convention `YYYY-MM-DD-my-title.md`. The date
+ * prefix is stripped so the slug becomes `my-title`. If the filename does not
+ * match the date-prefix pattern the full base filename is used as-is.
+ *
+ * @param {object} entry - Astro content collection entry (posts collection).
+ * @returns {string} URL-safe slug string.
+ */
+export const getPostSlug = (entry) => {
+ const id = entry?.id || entry?.slug || "";
+ const base = id.replace(/\.md$/, "").split("/").pop();
+ const match = base.match(/^(\d{4})-(\d{2})-(\d{2})-(.+)$/);
+ const raw = match ? match[4] : base;
+ return raw.replace(/\s+/g, "-").replace(/_/g, "-").toLowerCase();
+};
+
+/**
+ * Extracts UTC year / month / day parts and the resolved Date from a post entry.
+ *
+ * Multiple frontmatter field names are tried in order (`date`, `pubDate`,
+ * `published`, `datetime`) so the helper stays compatible with different
+ * authoring conventions without requiring callers to know which field is set.
+ *
+ * UTC accessors are used intentionally to avoid timezone-dependent shifts when
+ * the site is built in different environments.
+ *
+ * @param {object} entry - Astro content collection entry (posts collection).
+ * @returns {{ year: string, month: string, day: string, date: Date }}
+ */
+export const getPostDateParts = (entry) => {
+ const date = ensureDate(
+ entry?.data?.date ??
+ entry?.data?.pubDate ??
+ entry?.data?.published ??
+ entry?.data?.datetime,
+ );
+ return {
+ year: String(date.getUTCFullYear()),
+ month: pad2(date.getUTCMonth() + 1),
+ day: pad2(date.getUTCDate()),
+ date,
+ };
+};
+
+/**
+ * Returns the canonical URL path for a post, e.g. `/2024/03/15/my-title/`.
+ *
+ * @param {object} entry - Astro content collection entry (posts collection).
+ * @returns {string} Absolute URL path with leading and trailing slashes.
+ */
+export const getPostUrl = (entry) => {
+ const { year, month, day } = getPostDateParts(entry);
+ const slug = getPostSlug(entry);
+ return `/${year}/${month}/${day}/${slug}/`;
+};
+
+/**
+ * Extracts a plain-text excerpt from a post for use in news listing pages.
+ *
+ * If the post frontmatter contains a `summary` field it is returned as-is.
+ * Otherwise the first non-image paragraph of the post body is used, with
+ * Markdown syntax (links, inline code, emphasis, headings) stripped out.
+ * The result is truncated at the last word boundary before `maxLength`.
+ *
+ * @param {import('astro:content').CollectionEntry<'posts'>} post
+ * @param {number} [maxLength=280] - Maximum character length before truncation.
+ * @returns {string}
+ */
+export const getExcerpt = (post, maxLength = 280) => {
+ const customSummary = post?.data?.summary;
+ if (typeof customSummary === "string" && customSummary.trim()) {
+ return customSummary.trim();
+ }
+
+ const paragraphs = String(post.body ?? "")
+ .split(/\n\s*\n/)
+ .map((paragraph) => paragraph.trim())
+ .filter(Boolean);
+
+ // Skip image-only paragraphs (e.g. ``) so the excerpt starts
+ // with actual prose text.
+ const firstParagraph =
+ paragraphs.find((paragraph) => !paragraph.startsWith("![")) ??
+ paragraphs[0] ??
+ "";
+
+ const plainText = firstParagraph
+ .replace(/!\[[^\]]*\]\([^)]+\)/g, "") // strip images
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, "$1") // strip links, keep label
+ .replace(/`([^`]+)`/g, "$1") // strip inline code ticks
+ .replace(/[*_>#]/g, "") // strip emphasis, heading markers
+ .replace(/\s+/g, " ")
+ .trim();
+
+ if (plainText.length <= maxLength) {
+ return plainText;
+ }
+
+ // Truncate at a word boundary to avoid cutting mid-word.
+ return `${plainText
+ .slice(0, maxLength)
+ .replace(/\s+\S*$/, "")
+ .trim()}...`;
+};
diff --git a/src/lib/relative-paths.js b/src/lib/relative-paths.js
new file mode 100644
index 00000000..86a56dc7
--- /dev/null
+++ b/src/lib/relative-paths.js
@@ -0,0 +1,65 @@
+/**
+ * Utilities for generating relative URLs in the OpenAstronomy site.
+ *
+ * Astro is configured with `trailingSlash: "always"` and the site can be
+ * previewed at a non-root path (e.g. CircleCI build previews). Hardcoding
+ * absolute paths like `/members/` breaks those environments. These helpers
+ * convert site-root-relative paths to relative paths based on the current
+ * page's depth in the URL hierarchy.
+ */
+
+/** Matches any URI scheme such as `https:`, `mailto:`, `data:`, etc. */
+const PROTOCOL_RE = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
+
+/**
+ * Returns the relative prefix needed to reach the site root from a given page.
+ *
+ * Examples:
+ * `/` → `./`
+ * `/members/` → `../`
+ * `/gsoc/2025/` → `../../`
+ *
+ * @param {string} [pathname="/"] - The current page's URL pathname.
+ * @returns {string} A relative path prefix ending with `/`.
+ */
+export const getRelativeRoot = (pathname = "/") => {
+ // Strip query string and hash before counting path segments.
+ const cleanPath = String(pathname).split("?")[0].split("#")[0];
+ const depth = cleanPath.split("/").filter(Boolean).length;
+ return depth === 0 ? "./" : "../".repeat(depth);
+};
+
+/**
+ * Converts an absolute site-root path to a path relative to the current page.
+ *
+ * @param {string} pathname - The current page's URL pathname.
+ * @param {string} targetPath - Absolute path from the site root (leading `/` optional).
+ * @returns {string} A relative URL string.
+ */
+export const fromSiteRoot = (pathname, targetPath) => {
+ const relativeRoot = getRelativeRoot(pathname);
+ const normalizedTarget = String(targetPath ?? "").replace(/^\/+/, "");
+ return normalizedTarget ? `${relativeRoot}${normalizedTarget}` : relativeRoot;
+};
+
+/**
+ * Resolves an href value for use in the current page context.
+ *
+ * - External URLs (with a scheme or `//` prefix) and fragment-only links (`#…`)
+ * are returned unchanged.
+ * - Absolute-path links (starting with `/`) are converted to relative paths via
+ * {@link fromSiteRoot} so they work regardless of deployment base path.
+ * - Relative hrefs are returned as-is.
+ *
+ * @param {string} pathname - The current page's URL pathname.
+ * @param {string} href - The raw href value to resolve.
+ * @returns {string} The resolved href.
+ */
+export const localizeHref = (pathname, href) => {
+ const value = String(href ?? "");
+ if (!value) return value;
+ if (value.startsWith("#")) return value;
+ if (value.startsWith("//") || PROTOCOL_RE.test(value)) return value;
+ if (value.startsWith("/")) return fromSiteRoot(pathname, value);
+ return value;
+};
diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro
new file mode 100644
index 00000000..c7b72dc0
--- /dev/null
+++ b/src/pages/[...slug].astro
@@ -0,0 +1,101 @@
+---
+import BaseLayout from "../layouts/BaseLayout.astro";
+import PageLayout from "../layouts/PageLayout.astro";
+import ProjectsLayout from "../layouts/ProjectsLayout.astro";
+
+type AstroComponentFactory = (...args: unknown[]) => unknown;
+type PageModule = {
+ frontmatter?: Record;
+ Content: AstroComponentFactory;
+};
+
+type RoutedPage = {
+ slug: string | null;
+ module: PageModule;
+ frontmatter: Record;
+};
+
+export const getStaticPaths = () => {
+ const pageModules = import.meta.glob("../content/pages/**/*.md", {
+ eager: true,
+ });
+
+ /**
+ * Converts a Vite module path like `../content/pages/gsoc/index.md` to the
+ * route slug `gsoc` (i.e. the path segment after `/pages/`, without the
+ * `.md` extension or a trailing `/index`).
+ * Returns `null` for the site root (`pages/index.md`).
+ */
+ const toRouteSlug = (modulePath: string) => {
+ const normalizedPath = modulePath.replace(/\\\\/g, "/");
+ const marker = "/pages/";
+ const markerIndex = normalizedPath.indexOf(marker);
+ if (markerIndex === -1) return null;
+ const relativePath = normalizedPath
+ .slice(markerIndex + marker.length)
+ .replace(/\.md$/, "")
+ .replace(/\/index$/, "");
+ return relativePath === "index" ? null : relativePath;
+ };
+
+ /**
+ * GSoC project idea files live under `gsoc///` and are
+ * aggregated by `ProjectsLayout` — they must not become individual routes
+ * here, otherwise Astro would generate a duplicate page for each project.
+ */
+ const isProjectContent = (routeSlug: string | null) =>
+ routeSlug === "gsoc/projects" || routeSlug?.startsWith("gsoc/projects/");
+
+ const routedPages: RoutedPage[] = (
+ Object.entries(pageModules) as [string, PageModule][]
+ )
+ .map(([modulePath, module]) => {
+ const slug = toRouteSlug(modulePath);
+ if (isProjectContent(slug)) return null;
+ return { slug, module, frontmatter: module.frontmatter ?? {} };
+ })
+ .filter((page): page is RoutedPage => page !== null)
+ .sort((a, b) => (a.slug ?? "").localeCompare(b.slug ?? ""));
+
+ return routedPages.map((page) => ({
+ params: { slug: page.slug ?? undefined },
+ props: page,
+ }));
+};
+
+const { module, frontmatter } = Astro.props as RoutedPage;
+const { Content } = module;
+
+const slug = Astro.params.slug ?? null;
+const title =
+ (typeof frontmatter.title === "string" && frontmatter.title) ||
+ (typeof frontmatter.name === "string" && frontmatter.name) ||
+ undefined;
+const description =
+ typeof frontmatter.description === "string"
+ ? frontmatter.description
+ : undefined;
+const season = frontmatter.season;
+const isGsocSeasonPage = /^gsoc\/\d{4}$/.test(slug ?? "");
+---
+
+{
+ isGsocSeasonPage ? (
+
+
+
+ ) : slug === "gsoc" ? (
+
+
+
+ ) : (
+
+
+
+ )
+}
diff --git a/src/pages/[year]/[month]/[day]/[slug].astro b/src/pages/[year]/[month]/[day]/[slug].astro
new file mode 100644
index 00000000..4954246b
--- /dev/null
+++ b/src/pages/[year]/[month]/[day]/[slug].astro
@@ -0,0 +1,28 @@
+---
+import { getCollection } from "astro:content";
+import PostLayout from "../../../../layouts/PostLayout.astro";
+import { getPostDateParts, getPostSlug } from "../../../../lib/posts.js";
+
+export async function getStaticPaths() {
+ const posts = await getCollection("posts");
+ return posts.map((post) => {
+ const { year, month, day } = getPostDateParts(post);
+ return {
+ params: { year, month, day, slug: getPostSlug(post) },
+ props: { post },
+ };
+ });
+}
+
+const { post } = Astro.props;
+const { Content } = await post.render();
+---
+
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
new file mode 100644
index 00000000..9e6b96a3
--- /dev/null
+++ b/src/pages/index.astro
@@ -0,0 +1,66 @@
+---
+import { Image } from "astro:assets";
+import BaseLayout from "../layouts/BaseLayout.astro";
+import logo from "../assets/logoOA.png";
+---
+
+
+
+
+
+ OpenAstronomy is a collaboration between open source astronomy and
+ astrophysics projects to share resources, ideas, and to improve code.
+
+
+
Principles of OpenAstronomy (OA)
+
+
The core principles of OpenAstronomy (OA) include:
+
+
+
+ Open Source: OA projects are committed to their software being
+ Open Source. This promotes
+ accessibility, reliability, and scientific reproducibility.
+
+
+ Open Development: OA projects support the principle of
+ Open Development, a model where the software is both by and for the community.
+ More concretely, these projects try to work in publicly-visible spaces, encouraging
+ discussion and participation from their public user community on both code and
+ project-level decisions.
+
+
+ Open Science: OA projects support reproducible science through the use of
+ open and accessible data both through good data management practices and
+ effective open software.
+
+
+
+
Get involved with OpenAstronomy
+
+
+ If you want to get involved with OpenAstronomy or maybe you have a project
+ that would like to join the collaboration, please feel free to get in touch
+ on the
+ OpenAstronomy discourse.
+ You can freely browse the channels but posting and other interaction
+ requires you to sign up.
+
+
+
Contact the OpenAstronomy Members
+
+
+ As OA is an umbrella organization, you will need to see our
+ members page for both information and contact details
+ of all the individual organizations.
+
+
diff --git a/src/pages/members.astro b/src/pages/members.astro
new file mode 100644
index 00000000..90be5704
--- /dev/null
+++ b/src/pages/members.astro
@@ -0,0 +1,23 @@
+---
+import PageLayout from "../layouts/PageLayout.astro";
+import MemberCard from "../components/MemberCard.astro";
+import members from "../data/members.json";
+
+const sortedMembers = Object.entries(members).sort(([a], [b]) =>
+ a.localeCompare(b),
+);
+---
+
+
+
Who is part of OpenAstronomy?
+
+
+ {
+ sortedMembers.map(([key, details]) => (
+
+
+
+ ))
+ }
+
+
diff --git a/src/pages/news.astro b/src/pages/news.astro
new file mode 100644
index 00000000..970afadc
--- /dev/null
+++ b/src/pages/news.astro
@@ -0,0 +1,37 @@
+---
+// /news/ — lists all blog posts sorted by date, newest first.
+import PageLayout from "../layouts/PageLayout.astro";
+import { getCollection } from "astro:content";
+import { getPostUrl, getPostDateParts, getExcerpt } from "../lib/posts.js";
+import { localizeHref } from "../lib/relative-paths.js";
+
+const posts = (await getCollection("posts")).sort(
+ (a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime(),
+);
+const pagePath = Astro.url.pathname;
+const dateFormatter = new Intl.DateTimeFormat("en-US", {
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+});
+---
+
+
+