<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Universe OpenAstronomy (Posts by Manit Singh)</title><link>http://openastronomy.org/Universe_OA/</link><description></description><atom:link href="http://openastronomy.org/Universe_OA/authors/manit-singh.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Tue, 18 Aug 2026 01:45:43 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>During GSoC 2024, I made several key contributions to the sunpy-soar project:</title><link>http://openastronomy.org/Universe_OA/posts/2024/08/20240823_1710_nucleongodx/</link><dc:creator>Manit Singh</dc:creator><description>&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Initial Implementation of Metadata for Remote Sensing Instrument(merged):&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/118"&gt;PR #118&lt;/a&gt;: This was my initial pull request where I established join operations for tables and implemented metadata for wavelength and detector for remote sensing instruments.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;2. Gallery Examples and How-to Guide for recent implementations(merged):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/127"&gt;PR #127&lt;/a&gt;: In this pull request, I added gallery examples and a how-to guide showcasing the newly implemented wavelength and detector metadata.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;3. Error Handling for SOAR Server Downtime(merged):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/135"&gt;PR #135&lt;/a&gt;: This update involved catching server errors thrown by SOAR when it’s down, enhancing the robustness of the system.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;4. Distance Filtering Query Support(merged):&lt;/strong&gt;&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/137"&gt;PR #137&lt;/a&gt;: I added support for a new query method, REQUEST="doQueryFilteredByDistance", enabling distance-based filtering for queries.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;5. Observation Mode Metadata (Not Yet Merged):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/140"&gt;PR #140&lt;/a&gt;: This pull request introduced Observation Mode as a new metadata. After discussions with my mentors, we decided not to merge this feature for now.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;6. Field of View (FoV) Values Extraction(Not yet merged):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/143"&gt;PR #143&lt;/a&gt;: I added a third join table to extract Field of View (FoV) values with “earth” and “sun” references, allowing users to plot these on a SunPy map.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;7. Developer Guides for Future Development(Not yet merged)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/147"&gt;PR #147&lt;/a&gt;: This pull request added a section of developer guides designed to assist future contributors in developing sunpy-soar.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;8. External Method for URL Construction (closed):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/sunpy/sunpy-soar/pull/129"&gt;PR #129&lt;/a&gt;: This pull request proposed using an external method for making URL calls instead of manually constructing them. However, after further discussion with my mentors, we realized this approach could limit our ability to add future functionality, so we decided not to close it.&lt;/li&gt;&lt;/ul&gt;&lt;img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;amp;referrerSource=full_rss&amp;amp;postId=6fe71e4df084" width="1"&gt;</description><category>SunPy</category><guid>http://openastronomy.org/Universe_OA/posts/2024/08/20240823_1710_nucleongodx/</guid><pubDate>Fri, 23 Aug 2024 16:10:53 GMT</pubDate></item><item><title>Enhancing SOAR Queries: Improved Error Handling and Support for Distance-Based Filtering</title><link>http://openastronomy.org/Universe_OA/posts/2024/07/20240723_1650_nucleongodx/</link><dc:creator>Manit Singh</dc:creator><description>&lt;h4&gt;Improved Error Handling and Support for Distance-Based Filtering&lt;/h4&gt;&lt;h4&gt;Introduction&lt;/h4&gt;&lt;p&gt;Over the past few weeks, I’ve been working on addressing and enhancing certain functionalities within the sunpy-soar package. This post delves into the two main improvements I’ve implemented: better error handling for server downtime and the introduction of support for distance-based query filtering.&lt;/p&gt;
&lt;h4&gt;Improved Error Handling for Server Downtime&lt;/h4&gt;&lt;p&gt;Previously, when the SOAR server was down, a generic JSONDecodeError would be raised. This was less than ideal as it did not provide a clear indication of what the actual issue was. To improve this, I worked on implementing a more descriptive error message that would be raised in such scenarios.&lt;/p&gt;
&lt;pre&gt;r = requests.get(f"{tap_endpoint}/sync", params=payload)&lt;br&gt;try:&lt;br&gt;    response_json = r.json()&lt;br&gt;except JSONDecodeError:&lt;br&gt;    msg = "Server returned an invalid JSON response. The SOAR server may be down or not functioning correctly."&lt;br&gt;    raise RuntimeError(msg)&lt;/pre&gt;&lt;p&gt;With this change, users will now see a RuntimeError with a clear message indicating that the server may be down or not functioning correctly, which makes troubleshooting much easier.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;h4&gt;Implementing Support for Different REQUEST Types&lt;/h4&gt;&lt;p&gt;After resolving the error handling issue, I moved on to implementing support for different REQUEST types. Sunpy-soar initially only supported the doQuery REQUEST type. However, there was a need to expand this to support the doQueryFilteredByDistance REQUEST type as well.&lt;/p&gt;
&lt;h4&gt;What is doQueryFilteredByDistance?&lt;/h4&gt;&lt;p&gt;The doQueryFilteredByDistance REQUEST type allows for filtering the query results based on a specified distance range. The main change here is setting the REQUEST parameter to doQueryFilteredByDistance and appending &amp;amp;DISTANCE(distancemin,distancemax) to the query.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example Query:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;SELECT * FROM soar.v_sc_data_item WHERE instrument='MAG' AND level='LL02'&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;With Distance Filtering:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;SELECT * FROM soar.v_sc_data_item WHERE instrument='MAG' AND level='LL02' AND DISTANCE(0.28,0.49)&lt;/pre&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;p&gt;These enhancements significantly improve the functionality and user experience of the sunpy-soar package. The improved error handling provides clearer feedback to users when the SOAR server is down, and the support for doQueryFilteredByDistance allows for more refined queries based on distance, opening up new possibilities for data analysis.&lt;/p&gt;
&lt;img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;amp;referrerSource=full_rss&amp;amp;postId=79c57af30ffc" width="1"&gt;</description><category>SunPy</category><guid>http://openastronomy.org/Universe_OA/posts/2024/07/20240723_1650_nucleongodx/</guid><pubDate>Tue, 23 Jul 2024 15:50:13 GMT</pubDate></item><item><title>Midterm Evaluations Are Close!</title><link>http://openastronomy.org/Universe_OA/posts/2024/07/20240707_1602_nucleongodx/</link><dc:creator>Manit Singh</dc:creator><description>&lt;p&gt;So, in the past two weeks, upon discussion with my mentors, I started working on the stretch goal, which involves using Astroquery’s TAP Plus for making the URL calls. Additionally, I had to clean up some code and remove the instruments SPICE and PHI from returning wavelength data due to their individual issues.&lt;/p&gt;
&lt;p&gt;For SPICE, the `wavemin’ and `wavemax` values are only available for the first spectral window in SOAR, so the data is not entirely representative of what a user might be searching for. Similarly, for PHI, the issue is that two different units are used to represent wavelength, which results in very&lt;br&gt;different `wavemin’ and `wavemax` data due to the data being in both angstrom and nanometer units. Unfortunately, this is not specified anywhere in SOAR, so to ensure that `sunpy-soar` does not&lt;br&gt;return any misleading data to the user, we’ve decided to exclude the wavelength data for these instruments.&lt;/p&gt;
&lt;p&gt;Coming to the change in table fetching methods. TAP Plus basically uses SQL to fetch tables, which is different from the normal TAP that uses ADQL to fetch tables. This avoids the entire process of manually constructing Astropy tables after calling the SOAR API with TAP.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;For comparison, this is how the method looks with TAP:&lt;/p&gt;
&lt;pre&gt;@staticmethod&lt;br&gt;    def _do_search(query):&lt;br&gt;        """&lt;br&gt;        Query the SOAR server with a single query.&lt;br&gt;&lt;br&gt;        Parameters&lt;br&gt;        ----------&lt;br&gt;        query : list[str]&lt;br&gt;            List of query items.&lt;br&gt;&lt;br&gt;        Returns&lt;br&gt;        -------&lt;br&gt;        astropy.table.QTable&lt;br&gt;            Query results.&lt;br&gt;        """&lt;br&gt;        tap_endpoint = "http://soar.esac.esa.int/soar-sl-tap/tap"&lt;br&gt;        payload = SOARClient._construct_payload(query)&lt;br&gt;        # Need to force requests to not form-encode the parameters&lt;br&gt;        payload = "&amp;amp;".join([f"{key}={val}" for key, val in payload.items()])&lt;br&gt;        # Get request info&lt;br&gt;        r = requests.get(f"{tap_endpoint}/sync", params=payload)&lt;br&gt;        log.debug(f"Sent query: {r.url}")&lt;br&gt;        r.raise_for_status()&lt;br&gt;&lt;br&gt;        # Do some list/dict wrangling&lt;br&gt;        names = [m["name"] for m in r.json()["metadata"]]&lt;br&gt;        info = {name: [] for name in names}&lt;br&gt;&lt;br&gt;        for entry in r.json()["data"]:&lt;br&gt;            for i, name in enumerate(names):&lt;br&gt;                info[name].append(entry[i])&lt;br&gt;&lt;br&gt;        if len(info["begin_time"]):&lt;br&gt;            info["begin_time"] = parse_time(info["begin_time"]).iso&lt;br&gt;            info["end_time"] = parse_time(info["end_time"]).iso&lt;br&gt;&lt;br&gt;        result_table = astropy.table.QTable(&lt;br&gt;            {&lt;br&gt;                "Instrument": info["instrument"],&lt;br&gt;                "Data product": info["descriptor"],&lt;br&gt;                "Level": info["level"],&lt;br&gt;                "Start time": info["begin_time"],&lt;br&gt;                "End time": info["end_time"],&lt;br&gt;                "Data item ID": info["data_item_id"],&lt;br&gt;                "Filename": info["filename"],&lt;br&gt;                "Filesize": info["filesize"],&lt;br&gt;                "SOOP Name": info["soop_name"],&lt;br&gt;            },&lt;br&gt;        )&lt;br&gt;        if "detector" in info:&lt;br&gt;            result_table["Detector"] = info["detector"]&lt;br&gt;        if "wavelength" in info:&lt;br&gt;            result_table["Wavelength"] = info["wavelength"]&lt;br&gt;        result_table.sort("Start time")&lt;br&gt;        return result_table&lt;/pre&gt;&lt;p&gt;This is how the method looks with Astroquery TAP plus.&lt;/p&gt;
&lt;pre&gt;`def _do_search(query):&lt;br&gt;        """&lt;br&gt;        Query the SOAR server with a single query.&lt;br&gt;&lt;br&gt;        Parameters&lt;br&gt;        ----------&lt;br&gt;        query : list[str]&lt;br&gt;            List of query items.&lt;br&gt;&lt;br&gt;        Returns&lt;br&gt;        -------&lt;br&gt;        astropy.table.Table&lt;br&gt;            Query results.&lt;br&gt;        """&lt;br&gt;        tap_endpoint = "http://soar.esac.esa.int/soar-sl-tap/tap"&lt;br&gt;        sql_query = SOARClient._construct_payload(query)&lt;br&gt;        soar = TapPlus(url=tap_endpoint)&lt;br&gt;        job = soar.launch_job_async(sql_query)&lt;br&gt;        results = job.results&lt;br&gt;        new_colnames = {&lt;br&gt;            "instrument": "Instrument",&lt;br&gt;            "descriptor": "Data product",&lt;br&gt;            "level": "Level",&lt;br&gt;            "begin_time": "Start time",&lt;br&gt;            "end_time": "End time",&lt;br&gt;            "filename": "Filename",&lt;br&gt;            "filesize": "Filesize",&lt;br&gt;            "soop_name": "SOOP Name",&lt;br&gt;        }&lt;br&gt;        new_colnames.update({k: k.capitalize() for k in ["wavelength", "detector"] if k in results.colnames})&lt;br&gt;        for old_name, new_name in new_colnames.items():&lt;br&gt;            results.rename_column(old_name, new_name)&lt;br&gt;        results.sort("Start time")&lt;br&gt;        return results&lt;/pre&gt;&lt;p&gt;Even the query construction methods, they looks a lot more cleaner. As the final query generated is an SQL query not an ADQL query.&lt;/p&gt;
&lt;img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;amp;referrerSource=full_rss&amp;amp;postId=459d99d953ff" width="1"&gt;</description><category>SunPy</category><guid>http://openastronomy.org/Universe_OA/posts/2024/07/20240707_1602_nucleongodx/</guid><pubDate>Sun, 07 Jul 2024 15:02:57 GMT</pubDate></item><item><title>It’s going good.</title><link>http://openastronomy.org/Universe_OA/posts/2024/06/20240623_0821_nucleongodx/</link><dc:creator>Manit Singh</dc:creator><description>&lt;p&gt;It’s going good.&lt;/p&gt;
&lt;p&gt;The past two weeks were dedicated to the implementation of wavelength functionality. Now, wavelength has been successfully implemented for the applicable instruments. Along with that, a how-to guide has been created to assist users in navigating querying over wavelength for different instruments. Additionally, a gallery example for wavelength and detector has been added.&lt;/p&gt;
&lt;h4&gt;What’s the direction of implementation:&lt;/h4&gt;&lt;p&gt;The implementation of wavelength can be divided into two parts:&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Instruments with a “wavelength” column in SOAR&lt;/strong&gt;: These remote sensing instruments are EUI, SOLOHI, and METIS. For these instruments, we query on the basis of wavelength.&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt; instrument = a.Instrument("EUI")&lt;br&gt; time = a.Time("2023-04-03 15:00", "2023-04-03 16:00")&lt;br&gt; level = a.Level(1)&lt;br&gt; wavelength = a.Wavelength(304 * u.AA)&lt;br&gt; res = Fido.search(instrument &amp;amp; time &amp;amp; level &amp;amp; wavelength)&lt;/pre&gt;&lt;p&gt;Result:&lt;/p&gt;
&lt;figure&gt;&lt;img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ty2aSvBet-8KYDf6iE729w.png"&gt;&lt;/figure&gt;&lt;p&gt;A range of wavelength can also be passed, which will be considered wavemin and wavemax for these three instruments.&lt;/p&gt;
&lt;pre&gt;wavelength = a.Wavelength(171 * u.AA, 185 * u.AA)&lt;/pre&gt;&lt;p&gt;Result:&lt;/p&gt;
&lt;figure&gt;&lt;img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oUBJwth5UcL9IegFG5LjaA.png"&gt;&lt;/figure&gt;&lt;p&gt;2. For the instruments PHI and SPICE, we don’t have a “wavelength” column in their instrument table, so we use wavemin and wavemax for querying.&lt;/p&gt;
&lt;p&gt;However, there is a problem with SPICE. Since the range of wavelength is only given for the first spectral window of the data, to ensure the data is not misleading to the user, we do not return any wavelength values.&lt;/p&gt;
&lt;pre&gt; instrument = a.Instrument("PHI")&lt;br&gt; time = a.Time("2023-02-01", "2023-02-02")&lt;br&gt; level = a.Level(2)&lt;br&gt; wavelength = a.Wavelength(6173.065 * u.AA, 6173.501 * u.AA)&lt;br&gt; res = Fido.search(instrument &amp;amp; time &amp;amp; level &amp;amp; wavelength)&lt;/pre&gt;&lt;p&gt;Result:&lt;/p&gt;
&lt;figure&gt;&lt;img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fxkPK8p3KR6xMEv7zIkTXQ.png"&gt;&lt;/figure&gt;&lt;p&gt;Although passing a range of wavelengths is preferred for PHI, if only one value is passed, it will be taken as wavemin, and filtering will be done based on it. Additionally, the corresponding wavemax will be provided in the output table.&lt;/p&gt;
&lt;pre&gt;wavelength = a.Wavelength(6173.065 * u.AA)&lt;/pre&gt;&lt;p&gt;Result:&lt;/p&gt;
&lt;figure&gt;&lt;img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O-pETZd8HZi9qVt9NQGa-w.png"&gt;&lt;/figure&gt;&lt;h4&gt;Challenges that still needs working:&lt;/h4&gt;&lt;p&gt;There is an issue with PHI’s wavelength data as well. The wavelengths returned are sometimes in the order of 6173 and sometimes 617.3, which are essentially just different units of similar wavelength data, but this is not specified in SOAR.&lt;/p&gt;
&lt;img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;amp;referrerSource=full_rss&amp;amp;postId=160df7122684" width="1"&gt;</description><category>SunPy</category><guid>http://openastronomy.org/Universe_OA/posts/2024/06/20240623_0821_nucleongodx/</guid><pubDate>Sun, 23 Jun 2024 07:21:59 GMT</pubDate></item><item><title>A Great Start to GSoC with SunPy</title><link>http://openastronomy.org/Universe_OA/posts/2024/06/20240602_0915_nucleongodx/</link><dc:creator>Manit Singh</dc:creator><description>&lt;p&gt;Hello, everyone! My name is Manit Singh, and I’m thrilled to share my journey as a participant in Google Summer of Code (GSoC) with SunPy. Getting selected for this prestigious program has been a significant milestone in my career, and I am excited to contribute to the Enhancing SOAR Metadata project.&lt;/p&gt;
&lt;h4&gt;Community Bonding Period&lt;/h4&gt;&lt;h4&gt;Introduction to the Community Bonding Period&lt;/h4&gt;&lt;p&gt;The community bonding period was an essential phase where I got to know my mentors, understand the project’s goals in-depth, and prepare for the coding period.&lt;/p&gt;
&lt;h4&gt;Meetings and Discussions&lt;/h4&gt;&lt;p&gt;During this period, I had several meetings and discussions with my mentors and community members. These interactions were crucial for:&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;ul&gt;&lt;li&gt;Understanding the Project Goals: The project aims to increase the scope of SOAR data in sunpy-soar.&lt;/li&gt;&lt;li&gt;Clarifying Initial Approaches: My initial approach was to implement wavelength and detector first, and then discuss the implementation of the next set of metadata.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;From these initial discussions, we concluded that the Detector should be implemented first, after creating methods to support the joining of instrument and data tables (i.e., v_&amp;lt;instrument&amp;gt;_&amp;lt;ll/sc&amp;gt;_fits and v_&amp;lt;ll/sc&amp;gt;_data_item).&lt;/p&gt;
&lt;h4&gt;First Coding Week: Implementing the Detector in the SOAR Project&lt;/h4&gt;&lt;h4&gt;Objectives&lt;/h4&gt;&lt;p&gt;The primary objective for the first week was to add methods to support querying data involving instrument and data tables both and implement the detector component in the SOAR project. Although the detector is part of the SOAR product, my mentors suggested that there are many people who might still want to query over the detector.&lt;/p&gt;
&lt;h4&gt;Implementation Details&lt;/h4&gt;&lt;p&gt;As discussed in the meetings held during the community bonding period, I worked on constructing methods to enable joining two different tables. Initially, it all looked very messy, but with time and refactoring, a quite simple join constructing method was created.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Implementing Detector: Similar to how other metadata in the sunpy.net attribute system was implemented, I implemented the Detector. The only major difference was taking data from two tables and joining them.&lt;/li&gt;&lt;li&gt;Testing: I added tests to ensure that the construct method designed for joining tables could give the desired query outputs and that the detector was working fine for instruments with multiple dimensional data. (which depends on the dimensional index).&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Challenges and Solutions&lt;/h4&gt;&lt;h5&gt;Different Dimension Index for instruments:&lt;/h5&gt;&lt;p&gt;Instruments collect a wide variety of data types that can be multidimensional. For example, for SPICE, there are 4 dimensions, resulting in 4 similar rows of data, one for each dimension. This could be confusing for the user unless the dimension index is also shown in a column. For the STIX instrument, there are 0 dimensions, meaning it does not have any detector column in its instrument fits table. For other remote sensing instruments, there are 2 dimensions.&lt;/p&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;pre&gt;# As there are no dimensions in STIX, the dimension index need not be included in the query for STIX.&lt;br&gt;if "stx" not in instrument_table:&lt;br&gt;# To avoid duplicate rows in the output table, the dimension index is set to 1.&lt;br&gt;final_query += "h2.dimension_index='1'+AND+"&lt;/pre&gt;&lt;p&gt;In the construct methods of the ADQL query I added dimension_index to be taken 1 by default for all instruments other than STIX, this results in no repetition of data.&lt;br&gt;For STIX instrument, since there are no dimension it just works simply okay without taking any dimension in the join query constructed after construct methods&lt;/p&gt;
&lt;h4&gt;Outcomes&lt;/h4&gt;&lt;p&gt;code:&lt;/p&gt;
&lt;pre&gt;instrument = a.Instrument("METIS")&lt;br&gt;time = a.Time("2022-06-02 0:00","2022-06-02 1:00")&lt;br&gt;level = a.Level(2)&lt;br&gt;detector=a.Detector("VLD")&lt;/pre&gt;&lt;figure&gt;&lt;img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ek6niIkxBvp0a6AqSrAivw.png"&gt;&lt;/figure&gt;&lt;p&gt;By the end of the first week, the detector component was successfully implemented in sunpy-soar. The pull request is currently awaiting review from all the mentors to ensure any discrepancies in the implementation are addressed and to gather additional insights. :)&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;p&gt;The journey so far has been incredibly enriching. The support from my mentors and the community has been invaluable. I am looking forward to the upcoming weeks and continuing to contribute to the SOAR project.&lt;/p&gt;
&lt;img alt="" height="1" src="https://medium.com/_/stat?event=post.clientViewed&amp;amp;referrerSource=full_rss&amp;amp;postId=c0fa3bca6157" width="1"&gt;</description><category>SunPy</category><guid>http://openastronomy.org/Universe_OA/posts/2024/06/20240602_0915_nucleongodx/</guid><pubDate>Sun, 02 Jun 2024 08:15:15 GMT</pubDate></item></channel></rss>