Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

2020: GitHub / website (inc., Astropy, Pandas, Altair, Git/Github, linear regression, resampling, and debugging)

2021: GitHub / website (inc., Astropy and Pandas)

2022: GitHub / website (inc., Astropy and Pandas)

2023: GitHub / website

2024: GitHub / website

2025: GitHub / website

Welcome to the 2025 AstroPGH Python Boot Camp for summer undergraduate students and early PhD students new to Python. This 3 day program is designed to help you learn the basics of using Python for astrophysics and physics research.

Boot Camp

Installation and Setup

Python

Please install Python 3 before the Boot Camp. I recommend using Minicondafor Python 3.12. Here are Miniconda installation guides:

To avoid licensing issues, we want to switch the conda channel from defaults to conda-forge. Here's a step-by-step guide to do this: Miniconda + conda-forge setup guide (though please use python 3.12).

Then install the following packages by copy and pasting the following lines into the terminal:

conda install numpy scipy pandas matplotlib astropy jupyter ipython
conda install -c conda-forge jupyterlab
pip install ipympl

If you have trouble with installing Jupyter Lab, see Jupyter Lab installation guide.

From the terminal, launch Jupyter Lab (see Staring Jupyter Lab guide for more details):

jupyter lab

Test Your Conda Installation

  1. Open a new Anaconda prompt or terminal.
  2. Type ipython into the terminal to open an interactive python session (the prompt should say In [1]:).
  3. Copy this code:
importnumpyimportscipyimportmatplotlibimportastropyimportpandas
  1. Type into the iPython shell the word paste, and press enter.
  2. If no errors are raised, you're ready for bootcamp. You may close the terminal window.

If you are having difficulties with installation, please do not hesitate to reach out to Brett Andrews on Slack or via email.

Instructors

  • Collin McLeod: Python Basics
  • Tori Bonidie: Data Structures and Control Flow
  • Lorena Mezini: Functions and Modules
  • Cullen Abelson: Matplotlib
  • Lauren Elicker: Numpy 1a
  • Nathalie Chicoine: Numpy 1b
  • Travis Court: Numpy 2a
  • Jake Magee: Numpy 2b
  • Finian Ashmead: Numpy 3a
  • Marcos Tamargo-Arizmendi: Numpy 3b
  • Chris Hernandez: Numpy 4a
  • Julissa Sarmiento: Numpy 4b

Schedule

Time (ET)Monday (5/19)Tuesday (5/20)Wednesday (5/21)
10:00-11:15Python BasicsNumpy 1aNumpy 3a
11:45-1:00Data Structures and Control FlowNumpy 1bNumpy 3b
2:00-3:15Functions and ModulesNumpy 2aNumpy 4a
3:45-5:00MatplotlibNumpy 2bNumpy 4b

This material is based upon work supported by the National Science Foundation grant number AST-2009251. Any opinions, findings, and conclusions or recommendations expressed on this website are those of the participants and do not necessarily reflect the views of the National Science Foundation or the participating institutions.

About

AstroPGH Python Boot Camp 2025

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages