diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/Pamplemousse.iml b/.idea/Pamplemousse.iml
new file mode 100644
index 0000000..c956989
--- /dev/null
+++ b/.idea/Pamplemousse.iml
@@ -0,0 +1,8 @@
+
+
+ This example will guide you through the process of applying a pre-trained network (i.e. the weights have been trained), + to a SITELLE data cube. This example will use the network trained to predict velocity and broadening values, therefore, + we will be applying this to an SN3 cube. +
++ The code will read in a the network and a datacube. We will then step through each pixel in the datacube, extract the + spectrum, subtract the background, interpolate the background-subtracted spectrum onto the reference spectrum's x-axis, + and finally apply the network to extract the velocity and broadening parameters. Let's start with our imports -- I apologize + for all of them! +
+
+
+ import os
+ import numpy as np
+ import matplotlib.pyplot as plt
+ import time
+ from keras.optimizers import Adam
+ from keras.models import load_model
+ from orcs.process import SpectralCube
+ from astropy.io import fits
+ from pickle import load
+ from scipy import interpolate
+
+
+
++ Now we need to define our directories, cube name, and location of the deep frame. If you have not created a deep frame + for the cube, please do so now. Also, be sure to have the reference spectrum in the home directory. +
+ +
+
+ home_dir = '/path/to/main/directory/containing/data' # Location weights file
+ cube_dir = '/path/to/cubes' # Path to data cube
+ cube_name = 'cube_name' # don't add .hdf5 extension
+ output_dir = '/path/to/output' # Path to output directory
+ output_name = 'output_name' # output file prefix
+ deep_file = '/full/path/to/deep/fits' # Path to deep image fits file: required for header
+
+
\ No newline at end of file
diff --git a/css/business-frontpage.css b/css/business-frontpage.css
new file mode 100644
index 0000000..d7ec90a
--- /dev/null
+++ b/css/business-frontpage.css
@@ -0,0 +1,8 @@
+/*!
+ * Start Bootstrap - Business Frontpage (https://startbootstrap.com/template/business-frontpage)
+ * Copyright 2013-2020 Start Bootstrap
+ * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-business-frontpage/blob/master/LICENSE)
+ */
+body {
+ padding-top: 56px;
+}
diff --git a/css/main.css b/css/main.css
new file mode 100644
index 0000000..572f19c
--- /dev/null
+++ b/css/main.css
@@ -0,0 +1,19 @@
+body {
+ padding-top: 56px;
+}
+
+h2 {
+ padding-top: 20px;
+}
+
+/* pygments highlight */
+.highlight {
+ border: 1px solid #cfcfcf;
+ padding-top: 10px;
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 2px;
+ background: #f7f7f7;
+ line-height: 1.21429em;
+ margin-bottom: 10px;
+}
diff --git a/css/notebook.css b/css/notebook.css
new file mode 100644
index 0000000..d7dec4b
--- /dev/null
+++ b/css/notebook.css
@@ -0,0 +1,561 @@
+.prompt {
+ /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
+ min-width: 14ex;
+ /* This padding is tuned to match the padding on the CodeMirror editor. */
+ padding: 0.4em;
+ margin: 0px;
+ font-family: monospace;
+ text-align: right;
+ /* This has to match that of the the CodeMirror class line-height below */
+ line-height: 1.21429em;
+ /* Don't highlight prompt number selection */
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ /* Use default cursor */
+ cursor: default;
+}
+@media (max-width: 540px) {
+ .prompt {
+ text-align: left;
+ }
+}
+div.inner_cell {
+ min-width: 0;
+ /* Old browsers */
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-box-align: stretch;
+ display: -moz-box;
+ -moz-box-orient: vertical;
+ -moz-box-align: stretch;
+ display: box;
+ box-orient: vertical;
+ box-align: stretch;
+ /* Modern browsers */
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ /* Old browsers */
+ -webkit-box-flex: 1;
+ -moz-box-flex: 1;
+ box-flex: 1;
+ /* Modern browsers */
+ flex: 1;
+}
+/* input_area and input_prompt must match in top border and margin for alignment */
+div.input_area {
+ border: 1px solid #cfcfcf;
+ border-radius: 2px;
+ background: #f7f7f7;
+ line-height: 1.21429em;
+}
+/* This is needed so that empty prompt areas can collapse to zero height when there
+ is no content in the output_subarea and the prompt. The main purpose of this is
+ to make sure that empty JavaScript output_subareas have no height. */
+div.prompt:empty {
+ padding-top: 0;
+ padding-bottom: 0;
+}
+div.unrecognized_cell {
+ padding: 5px 5px 5px 0px;
+ /* Old browsers */
+ display: -webkit-box;
+ -webkit-box-orient: horizontal;
+ -webkit-box-align: stretch;
+ display: -moz-box;
+ -moz-box-orient: horizontal;
+ -moz-box-align: stretch;
+ display: box;
+ box-orient: horizontal;
+ box-align: stretch;
+ /* Modern browsers */
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+}
+div.unrecognized_cell .inner_cell {
+ border-radius: 2px;
+ padding: 5px;
+ font-weight: bold;
+ color: red;
+ border: 1px solid #cfcfcf;
+ background: #eaeaea;
+}
+div.unrecognized_cell .inner_cell a {
+ color: inherit;
+ text-decoration: none;
+}
+div.unrecognized_cell .inner_cell a:hover {
+ color: inherit;
+ text-decoration: none;
+}
+@media (max-width: 540px) {
+ div.unrecognized_cell > div.prompt {
+ display: none;
+ }
+}
+div.code_cell {
+ /* avoid page breaking on code cells when printing */
+}
+@media print {
+ div.code_cell {
+ page-break-inside: avoid;
+ }
+}
+/* any special styling for code cells that are currently running goes here */
+div.input {
+ page-break-inside: avoid;
+ /* Old browsers */
+ display: -webkit-box;
+ -webkit-box-orient: horizontal;
+ -webkit-box-align: stretch;
+ display: -moz-box;
+ -moz-box-orient: horizontal;
+ -moz-box-align: stretch;
+ display: box;
+ box-orient: horizontal;
+ box-align: stretch;
+ /* Modern browsers */
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+}
+@media (max-width: 540px) {
+ div.input {
+ /* Old browsers */
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-box-align: stretch;
+ display: -moz-box;
+ -moz-box-orient: vertical;
+ -moz-box-align: stretch;
+ display: box;
+ box-orient: vertical;
+ box-align: stretch;
+ /* Modern browsers */
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ }
+}
+/* input_area and input_prompt must match in top border and margin for alignment */
+div.input_prompt {
+ color: #303F9F;
+ border-top: 1px solid transparent;
+}
+div.input_area > div.highlight {
+ margin: 0.4em;
+ border: none;
+ padding: 0px;
+ background-color: transparent;
+}
+div.input_area > div.highlight > pre {
+ margin: 0px;
+ border: none;
+ padding: 0px;
+ background-color: transparent;
+}
+/* The following gets added to the if it is detected that the user has a
+ * monospace font with inconsistent normal/bold/italic height. See
+ * notebookmain.js. Such fonts will have keywords vertically offset with
+ * respect to the rest of the text. The user should select a better font.
+ * See: https://github.com/ipython/ipython/issues/1503
+ *
+ * .CodeMirror span {
+ * vertical-align: bottom;
+ * }
+ */
+.CodeMirror {
+ line-height: 1.21429em;
+ /* Changed from 1em to our global default */
+ font-size: 14px;
+ height: auto;
+ /* Changed to auto to autogrow */
+ background: none;
+ /* Changed from white to allow our bg to show through */
+}
+.CodeMirror-scroll {
+ /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
+ /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
+ overflow-y: hidden;
+ overflow-x: auto;
+}
+.CodeMirror-lines {
+ /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
+ /* we have set a different line-height and want this to scale with that. */
+ /* Note that this should set vertical padding only, since CodeMirror assumes
+ that horizontal padding will be set on CodeMirror pre */
+ padding: 0.4em 0;
+}
+.CodeMirror-linenumber {
+ padding: 0 8px 0 4px;
+}
+.CodeMirror-gutters {
+ border-bottom-left-radius: 2px;
+ border-top-left-radius: 2px;
+}
+.CodeMirror pre {
+ /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,
+ use .CodeMirror-lines for vertical */
+ padding: 0 0.4em;
+ border: 0;
+ border-radius: 0;
+}
+.CodeMirror-cursor {
+ border-left: 1.4px solid black;
+}
+@media screen and (min-width: 2138px) and (max-width: 4319px) {
+ .CodeMirror-cursor {
+ border-left: 2px solid black;
+ }
+}
+@media screen and (min-width: 4320px) {
+ .CodeMirror-cursor {
+ border-left: 4px solid black;
+ }
+}
+/*
+
+Original style from softwaremaniacs.org (c) Ivan Sagalaev To make the tabs toggleable, add the data-toggle="tab" attribute to each link. Then add a .tab-pane class with a unique ID for every tab and wrap them inside a div element with class .tab-content.
+ + + ++ Machine learning is rapidly becoming ubiquitous in astronomy. The Pamplemousse project is a collection of tools built specifically for the analysis of spectra + taken with the SITELLE instrument on the CFHT. The tools are developed by a team lead by Carter Rhea at the Université de Montréal. The core team includes Dr. Laurie Rousseau-Nepton, + Dr. Simon Prunet, and Dr. Julie Hlavacek-Larrondo. +
++ The first paper explores the use of a convolutional neural network to extract the flux and velocity of underlying components. + We report a standard deviation of ∼5 km/s for the velocity parameter and a standard deviation of approximately 5.5 km/s for the broadening parameter. +
+ ++ In this work, we apply an artificial neural network to combined-filter (SN1, SN2, and SN3) SITELLE data representing typical SIGNALS large program observations. + The network is designed to calculate important emission-line ratios for HII-like regions which are present in the primary SITELLE filters. + Our resultsindicate that the network can potentially constrain the line ratios with greater precision than the standard line fitting technique implemented in ORCS \textbf{if the source spectral properties are well represented in the training set}. + Timing analysis indicates that the network can analyze the entire cube approximately 100 times faster than the standard methods. +
+ + + ++ In this paper (in preparation), the third of the series, we develop a convolutional neural network to classify spectra as having either a sin-gle or double line-of-sight component. + This systemati cmethod will be critical for disentangling components in merger systems, HII regions, and supernova remnants.We demonstrate that the network outperforms AIC andBayesian inference model comparisons. +
+ +