Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

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

Repository files navigation

Python and Astropy for Astronomical Data Analysis

Workshop at the 247th Meeting of the AAS in Phoenix, AZ, USA

  • DATE: Sunday January 4, 2026
  • TIME: 9:00 am – 5:30 pm
  • LOCATION: Room 131 C at the Phoenix Convention Center

PRE-WORKSHOP SETUP

Please be sure your laptop is properly configured before the workshop by following the installation and setup instructions.

Warning: Installation and setup could take as long as one hour depending on your current configuration and internet speeds. DO NOT WAIT UNTIL THE DAY OF THE WORKSHOP.

If you have any trouble, we will have facilitators on-site as early as 8:30 AM local time who can help you in person.

As an alternative, a workshop session can be run on mybinder.org via this link: Binder

Schedule

Time (PT)TopicPresenter/Instructor
Before 9:00amInstall and config help, if needed(All)
9:00 - 9:20amIntro to Astropy and Code of ConductKelle Cruz (@kelle)
9:20 - 9:45amAstropy Units, Quantities, and ConstantsKelle Cruz
9:45 - 10:15amIntro to Object Oriented Programming (OOP)Brett Morris (@bmorris3)
10:15 - 10:30amBREAK
10:30 - 11:00amCoordinatesBrett Morris
11:00 - 11:30pmAstropy TablesClara Brasseur (@ceb8)
11:30 – 12:00pmI/O: FITS and ASCIIBrett Morris
12:00 - 1:30pmLUNCH
1:30 - 2:00pmPhotutilsErik Tollerud (@eteq)
2:00 - 2:30pmSpecutilsKelle Cruz
2:30 - 3:00pmBREAK
3:00 - 3:20pmProcess CCD observations with ccdprocErik Tollerud
3:20 - 3:40pmAstropy Communities & Contributing to AstropyKelle Cruz
3:40 - 5:30pmExplore together time

Additional Helpers

TBD

Description

This workshop covers the use of Python tools for astronomical data analysis and visualization, with the focus primarily on UV, Optical, and IR data. Data analysis tools for JWST are being written in Python and distributed as part of Astropy, a community developed Python library for astronomy, and its affiliated packages.

The workshop goals introduce you to the variety of tools which are already available inside the Astropy library as well as provide ample hands-on time during which you’ll be able to explore the science analysis capabilities which the greater Python environment and community provide.

We plan on accomplishing this with brief overview talks on the main tools followed by extended instructor guided tutorials where you’ll be able to try them out for yourself and ask questions in the company of expert users and developers.

Some basic Python experience is highly recommended to be able to effectively participate in the exercises, but those without Python experience will still get much useful information about the capabilities for data analysis in Python and perhaps pick up some pointers on where they can get started learning more scientific Python and integrating it into their work flow.

If you would like to get a head start with the tools we will be concentrating on you can check out their documentation on readthedocs:

Problems or Questions?

We encourage you to submit any problems or questions you have to this repository issue tracker by choosing the "Question from workshop participant" issue template.

Past Workshops

Materials from past workshops can be found in other branches on this repo and in the past-astropy-workshops repo.

About

Materials for Astropy Workshops

Resources

Code of conduct

Stars

127 stars

Watchers

12 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages