<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: pupper emeritus</title>
    <description>The latest articles on DEV Community by pupper emeritus (@pupperemeritus).</description>
    <link>https://dev.to/pupperemeritus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1078058%2F6d6154f6-576e-4e6f-8b3b-e6a61b167f57.jpeg</url>
      <title>DEV Community: pupper emeritus</title>
      <link>https://dev.to/pupperemeritus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pupperemeritus"/>
    <language>en</language>
    <item>
      <title>GSoC Week 11-13</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Thu, 31 Aug 2023 20:38:33 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-week-11-13-1ja4</link>
      <guid>https://dev.to/pupperemeritus/gsoc-week-11-13-1ja4</guid>
      <description>&lt;p&gt;I am reaching the final stages of my project well ahead of the schedule.&lt;/p&gt;

&lt;p&gt;Both the Crosspectrum and Powerspectrum classes, the Lomb Scargle Fourier Transform and Basic Documentation have been completed. Tests are almost done too&lt;/p&gt;

&lt;p&gt;I have double checked with Matteo that the results are consistent using multiple examples and they are close to expected results.&lt;/p&gt;

&lt;p&gt;The following are the documentation notebooks on how to use the classes.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>GSoC Week 9-10</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Sun, 13 Aug 2023 10:23:47 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-week-9-10-17mo</link>
      <guid>https://dev.to/pupperemeritus/gsoc-week-9-10-17mo</guid>
      <description>&lt;p&gt;Big progress on the front of algorithm working. Turns out there wasn't that much of a problem in the algorithm. I just had to subtract the mean from the data before taking the fourier transform. The Lomb Scargle seems to work on data that has mean subtracted from it. Furthermore they dont seem to work that well or at all in full spectrum. &lt;br&gt;
The LSFT also is highly sensitive to the time intervals that are input to it. I have found some more clues as to how to make it even better. I will expound upon this further within 2 weeks since my final exams are going on and I have limited time.&lt;/p&gt;

&lt;p&gt;Minimum Working Code Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def data_func(time, freq=1.2324235252):
    return  2 * np.sin(2 * np.pi * time * freq)

t0 = 0
t1 = 100
dt = 0.1

np.random.seed(43)
time_uniform = np.arange(t0, t1, dt)
time_nonuniform = np.sort(np.random.uniform(t0, t1, time_uniform.size))

npft = np.fft.fft(data_func(time_uniform))
npfreqs = np.fft.fftfreq(npft.size, dt)
npft = npft[npfreqs&amp;gt;=0]
npfreqs = npfreqs[npfreqs&amp;gt;=0]
lsfreqs = np.linspace(np.min(npfreqs), np.max(npfreqs), npfreqs.size * 8)
lsfreqs = lsfreqs[lsfreqs&amp;gt;=0]
np.random.seed(43)
lsft_slow_arr = lsft_slow(data_func(time_nonuniform), time_nonuniform, lsfreqs,sign=-1, fullspec=False)
lsft_fast_arr = lsft_fast(data_func(time_nonuniform), time_nonuniform, lsfreqs,sign=-1, fullspec=False,oversampling=10)
plt.plot(time_nonuniform,lsft_slow_inv(lsft_slow_arr,freqs=time_nonuniform, t=lsfreqs).real ,alpha=0.5,label="Slow")
plt.plot(time_nonuniform,lsft_fast_inv(lsft_fast_arr,freqs=time_nonuniform, t=lsfreqs).real,alpha=0.5,label="Fast")
plt.plot(time_nonuniform,data_func(time_nonuniform),label="Original Data")
plt.legend()
plt.xlim(0,10)
plt.ylim(-3,3)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg10l11a0u36xzhtkq5n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg10l11a0u36xzhtkq5n5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>GSoC Week 5-8</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Sun, 30 Jul 2023 07:35:19 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-week-5-8-5198</link>
      <guid>https://dev.to/pupperemeritus/gsoc-week-5-8-5198</guid>
      <description>&lt;h2&gt;
  
  
  Brief
&lt;/h2&gt;

&lt;p&gt;I have worked on creating unit tests for the Lomb Scargle Cross Spectrum class, cross verifying the algorithm by comparing with the papers and fixed typos in docstrings. Apologies for the delay. Had my exams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Details
&lt;/h2&gt;

&lt;p&gt;I have noticed a few faults in both the fast and the slow algorithms. I have gone back to the drawing board and tried to address those issues by following the papers as closely as possible. All the changes are visible in the following draft pull request.&lt;br&gt;
&lt;a href="https://github.com/StingraySoftware/stingray/pull/737"&gt;https://github.com/StingraySoftware/stingray/pull/737&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the fixing, the fast and the slow algorithm have started giving very similar outputs. I am starting to suspect that the time lags might be broken in the algorithms themselves. It is starting to get a little suspicious when different methods are giving very similar results and they are still not what that is expected. Last time around the fast and slow algorithms have given different results. After cross verifying with the papers, The results from both have fast and slow algorithms converged.&lt;/p&gt;

&lt;p&gt;To keep the project sailing along while I wait for confirmation that this is an issue with the implementation or the algorithm , I have decided to work on writing unit tests for the various classes and methods. Furthermore I also worked on fixing the docstrings.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>GSoC Week 4 Update</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Mon, 03 Jul 2023 19:17:26 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-week-4-update-2g4a</link>
      <guid>https://dev.to/pupperemeritus/gsoc-week-4-update-2g4a</guid>
      <description>&lt;h1&gt;
  
  
  Brief
&lt;/h1&gt;

&lt;p&gt;This week I successfully finished implementing the fast algorithm. Now my &lt;code&gt;LombScargleCrossspectrum&lt;/code&gt; and &lt;code&gt;LombScarglePowerspectrum&lt;/code&gt; are that much closer to completion. Only things left to sort out/implement are time lags and phase lag functions and checking the phase of the output.&lt;/p&gt;

&lt;h1&gt;
  
  
  Details
&lt;/h1&gt;

&lt;p&gt;Testing on the following synthetic data has been conducted to compare the outputs with the existing cross spectrum and power spectrum for evenly spaced data first then checking the outputs of the lomb scargle variants on unevenly sampled data&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rand = np.random.default_rng(42)
n = 1000
t = np.linspace(0, 10, n)
y = np.sin(2 * np.pi * 3.0 * t) + 0.1 * rand.standard_normal(n)
y2 = np.sin(2 * np.pi * 3.0 * t) + 0.1 * rand.standard_normal(n)
y -= np.min(y)
y2 -= np.min(y2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  The Cross spectra for evenly sampled data
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HDSGExDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ldcxxcpq760ym5yph7jv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HDSGExDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ldcxxcpq760ym5yph7jv.png" alt="Image description" width="558" height="417"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The time lags for evenly sampled data
&lt;/h2&gt;

&lt;p&gt;As it is evident the time lags need work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5_uNnIpc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sknrib3nkos5tcnojlng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5_uNnIpc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sknrib3nkos5tcnojlng.png" alt="Image description" width="559" height="413"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The power spectra for evenly sampled data
&lt;/h2&gt;

&lt;p&gt;One quirk is that the power spectrum class is returning the power spectrum with a negative sign. This is a known bug. The values otherwise are within margin of error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--njHhZDEY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vtf835ktnxo9dn83iy55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--njHhZDEY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vtf835ktnxo9dn83iy55.png" alt="Image description" width="559" height="417"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Lomb Scargle cross spectrum and power spectrum when data is unevenly sampled
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;t = np.sort(rand.random(n))*10&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The cross spectrum
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LeUsZL3d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bzddaq7u9naiskry0x7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LeUsZL3d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bzddaq7u9naiskry0x7i.png" alt="Image description" width="558" height="417"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The power spectrum
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mFs4vcWd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yfz6sav17mw51yas49he.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mFs4vcWd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yfz6sav17mw51yas49he.png" alt="Image description" width="559" height="417"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The time lags
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bAp6Nw-1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkyr5to5lbkxm2s2xbi9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bAp6Nw-1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkyr5to5lbkxm2s2xbi9.png" alt="Image description" width="559" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are off here too. Which will be fixed in the coming week.&lt;/p&gt;

&lt;p&gt;For exhaustive testing code refer&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>GSoC Week 2-3 Update</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Sun, 25 Jun 2023 16:15:57 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-week-2-3-update-1b7l</link>
      <guid>https://dev.to/pupperemeritus/gsoc-week-2-3-update-1b7l</guid>
      <description>&lt;h1&gt;
  
  
  Brief
&lt;/h1&gt;

&lt;p&gt;These weeks I refactored the &lt;code&gt;LombScargleCrossspectrum&lt;/code&gt; and &lt;code&gt;LombScarglePowerspectrum&lt;/code&gt; classes to accommodate the fast algorithm which went smoothly.&lt;br&gt;
However when it comes to the fast algorithm. I had tunnel vision and unconsciously made the &lt;code&gt;lsft_fast&lt;/code&gt; function compute the power spectrum instead of the fourier transform. Right now I am working towards isolating the algorithm to compute the fourier transform using the Press and Rybicki optimizations(&lt;a href="https://ui.adsabs.harvard.edu/abs/1989ApJ...338..277P/abstract"&gt;https://ui.adsabs.harvard.edu/abs/1989ApJ...338..277P/abstract&lt;/a&gt;).&lt;/p&gt;
&lt;h1&gt;
  
  
  Challenges Faced
&lt;/h1&gt;

&lt;p&gt;Integrating the optimization to the existing slow algorithm is giving me a bit of trouble. I'm still figuring out how to add the optimizations. If this is done, I can move onto making the time lag, phase lag functions and then onto testing and documentation.&lt;/p&gt;
&lt;h1&gt;
  
  
  Details
&lt;/h1&gt;

&lt;p&gt;Added the following parameters to both the classes in order to accommodate choice between the fast and slow algorithm.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;method : str
        The method to be used by the Lomb-Scargle Fourier Transformation function. `fast`
        and `slow` are the allowed values. Default is `fast`. fast uses the optimized Press
        and Rybicki O(n*log(n))

    oversampling : float, optional, default: 5
        Interpolation Oversampling Factor (for the fast algorithm)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For full code refer &lt;a href="https://github.com/StingraySoftware/stingray/pull/737"&gt;https://github.com/StingraySoftware/stingray/pull/737&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most important part of the process is the Lomb Scargle Fourier Transform.&lt;br&gt;
The wrapper class is trivial, they only wrap the fast and slow lomb scargle fourier transform functions.&lt;/p&gt;

&lt;h1&gt;
  
  
  Results using the slow algorithm
&lt;/h1&gt;

&lt;h2&gt;
  
  
  On synthetic data
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rand = np.random.default_rng(42)
    n = 100
    t = np.sort(rand.random(n)) * n
    y = np.cos(2 * np.pi * 5 * t) + 0.01 * rand.standard_normal(n)
    y -= np.min(y)
    lc1 = Lightcurve(t, y, err_dist="poisson")
    y2 = np.cos(2 * np.pi * 5.0 * (t)) + 0.01 * rand.standard_normal(n)
    y2 -= np.min(y2)
    lc2 = Lightcurve(t, y2, err_dist="poisson")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--48Z7wHCy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgf4z7yaxi81aoxj9dkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--48Z7wHCy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgf4z7yaxi81aoxj9dkx.png" alt="Image description" width="800" height="827"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  On real data
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The lightcurve
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://heasarc.gsfc.nasa.gov/FTP/nicer/data/obs/2018_03//1200120106/xti/event_cl/ni1200120106_0mpu7_cl.evt.gz"&gt;https://heasarc.gsfc.nasa.gov/FTP/nicer/data/obs/2018_03//1200120106/xti/event_cl/ni1200120106_0mpu7_cl.evt.gz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2qWoGIUP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w3dz8zsjk2ika71ytlkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2qWoGIUP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w3dz8zsjk2ika71ytlkx.png" alt="Image description" width="574" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F7NDO8dr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/167buf3woin2hplbo89r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F7NDO8dr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/167buf3woin2hplbo89r.png" alt="Image description" width="559" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>GSoC Week 1 Progress Update</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Thu, 08 Jun 2023 07:29:01 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-week-1-progress-update-17pp</link>
      <guid>https://dev.to/pupperemeritus/gsoc-week-1-progress-update-17pp</guid>
      <description>&lt;h1&gt;
  
  
  Brief
&lt;/h1&gt;

&lt;p&gt;Week 1 has been quite eventful with me creating a Lomb Scargle Fourier Transform function and get a working class for Lomb Scargle Cross Spectrum and Power Spectrum.&lt;/p&gt;

&lt;p&gt;I inherited my LS cross spectrum from the regular cross spectrum class. Had to rewrite the &lt;code&gt;constructor&lt;/code&gt;, &lt;code&gt;initial_checks&lt;/code&gt; , &lt;code&gt;make_crossspectrum&lt;/code&gt;, &lt;code&gt;_make_auxil_pds&lt;/code&gt; and &lt;code&gt;_initialize_empty&lt;/code&gt;. And also wrote a new &lt;code&gt;_ls_cross&lt;/code&gt; method which just returns the frequencies and cross spectra for given light curves and it is an internal function only to be used by the class.&lt;/p&gt;

&lt;p&gt;The original slow implementation has been completed. I am still working on the fast version.&lt;/p&gt;

&lt;p&gt;As this is not a project that can be completed in a bunch of small PRs, I will push to a single PR which will be merged after completion of the project. The following draft PR is the one to which I will be pushing to. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/StingraySoftware/stingray/pull/737/"&gt;https://github.com/StingraySoftware/stingray/pull/737/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Details
&lt;/h1&gt;

&lt;p&gt;The following are the APIs for the classes&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross Spectrum
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Make a cross spectrum from an unevenly sampled light curve.
You can also make an empty :class:`Crossspectrum` object to populate with your
own Fourier-transformed data (this can sometimes be useful when making
binned power spectra).

Parameters
----------
data1: :class:`stingray.Lightcurve` or :class:`stingray.events.EventList`, optional, default ``None``
    The dataset for the first channel/band of interest.

data2: :class:`stingray.Lightcurve` or :class:`stingray.events.EventList`, optional, default ``None``
    The dataset for the second, or "reference", band.

norm: {``frac``, ``abs``, ``leahy``, ``none``}, default ``none``
    The normalization of the (real part of the) cross spectrum.

power_type: string, optional, default ``real``
    Parameter to choose among complete, real part and magnitude of the cross spectrum.

fullspec: boolean, optional, default ``False``
    If False, keep only the positive frequencies, or if True, keep all of them .

Other Parameters
----------------
dt: float
    The time resolution of the light curve. Only needed when constructing
    light curves in the case where ``data1``, ``data2`` are
    :class:`EventList` objects

skip_checks: bool
    Skip initial checks, for speed or other reasons (you need to trust your
    inputs!)

min_freq : float
    Minimum frequency to take the Lomb-Scargle Fourier Transform

max_freq: float
    Maximum frequency to take the Lomb-Scargle Fourier Transform

df : float
    The time resolution of the light curve. Only needed where ``data1``, ``data2`` are

method : str
    The method to be used by the Lomb-Scargle Fourier Transformation function. `fast`
    and `slow` are the alloowed values. Default is `fast`. fast uses the optimized Press
    and Rybicki O(n*log(n))

Attributes
----------
freq: numpy.ndarray
    The array of mid-bin frequencies that the Fourier transform samples

power: numpy.ndarray
    The array of cross spectra (complex numbers)

power_err: numpy.ndarray
    The uncertainties of ``power``.
    An approximation for each bin given by ``power_err= power/sqrt(m)``.
    Where ``m`` is the number of power averaged in each bin (by frequency
    binning, or averaging more than one spectra). Note that for a single
    realization (``m=1``) the error is equal to the power.

df: float
    The frequency resolution

m: int
    The number of averaged cross-spectra amplitudes in each bin.

n: int
    The number of data points/time bins in one segment of the light
    curves.

k: array of int
    The rebinning scheme if the object has been rebinned otherwise is set to 1.

nphots1: float
    The total number of photons in light curve 1

nphots2: float
    The total number of photons in light curve 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Power Spectrum
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Make a :class:`LombScarglePowerspectrum` (also called periodogram) from a unevenly sampled (binned)
light curve. Periodograms can be normalized by either Leahy normalization,
fractional rms normalization, absolute rms normalization, or not at all.

You can also make an empty :class:`LombScarglePowerspectrum` object to populate with
your own fourier-transformed data (this can sometimes be useful when making
binned power spectra).

Parameters
----------
data: :class:`stingray.lightcurve.Lightcurve` or :class:`stingray.events.EventList` object, optional, default ``None``
    The light curve data to be Fourier-transformed.

norm: {"leahy" | "frac" | "abs" | "none" }, optional, default "frac"
    The normaliation of the power spectrum to be used. Options are
    "leahy", "frac", "abs" and "none", default is "frac".

Other Parameters
----------------
dt: float
    The time resolution of the light curve. Only needed when constructing
    light curves in the case where ``data`` is a
    :class:`EventList` object

skip_checks: bool
    Skip initial checks, for speed or other reasons (you need to trust your
    inputs!).

min_freq : float
    Minimum frequency to take the Lomb-Scargle Fourier Transform

max_freq: float
    Maximum frequency to take the Lomb-Scargle Fourier Transform

df : float
    The time resolution of the light curve. Only needed where ``data`` is a :class`stingray.Eventlist` object

method : str
    The method to be used by the Lomb-Scargle Fourier Transformation function. `fast`
    and `slow` are the alloowed values. Default is `fast`. fast uses the optimized Press
    and Rybicki O(n*log(n))

Attributes
----------
norm: {"leahy" | "frac" | "abs" | "none" }
    The normalization of the power spectrum.

freq: numpy.ndarray
    The array of mid-bin frequencies that the Fourier transform samples.

power: numpy.ndarray
    The array of normalized squared absolute values of Fourier
    amplitudes.

power_err: numpy.ndarray
    The uncertainties of ``power``.
    An approximation for each bin given by ``power_err= power/sqrt(m)``.
    Where ``m`` is the number of power averaged in each bin (by frequency
    binning, or averaging power spectra of segments of a light curve).
    Note that for a single realization (``m=1``) the error is equal to the
    power.

df: float
    The frequency resolution.

m: int
    The number of averaged powers in each bin.

n: int
    The number of data points in the light curve.

nphots: float
    The total number of photons in the light curve. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>Community Bonding Period</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Thu, 01 Jun 2023 03:11:02 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/community-bonding-period-29o4</link>
      <guid>https://dev.to/pupperemeritus/community-bonding-period-29o4</guid>
      <description>&lt;h2&gt;
  
  
  Brief
&lt;/h2&gt;

&lt;p&gt;Hello everyone this is Sri Guru Datta P.(pupperemeritus). I am extremely excited to get started with my GSoC journey. It has been a dream come true for me.&lt;/p&gt;

&lt;p&gt;Most of the progress in these weeks has been done on the fronts of&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Re-adjusting the proposed schedule : Re-evaluating and taking a closer look at requirements&lt;/li&gt;
&lt;li&gt;Gathering more information required to implement : Been provided reference implementation in MATLAB by Dr. Jeff Scargle himself. And validating the plan and research done during the period of creating the project proposal.&lt;/li&gt;
&lt;li&gt;Had weekly meets to break the ice and communicate more directly through weekly meets with mentors.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Environment setup
&lt;/h2&gt;

&lt;p&gt;I had already completed my environment setup earlier in order to make pull requests to stingray. I just followed the documentation.&lt;br&gt;
&lt;a href="https://docs.stingray.science/install.html"&gt;https://docs.stingray.science/install.html&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Codebase familiarity
&lt;/h2&gt;

&lt;p&gt;I already had a bit of familiarity with powerspectrum, crossspectrum and bexvar modules as I had worked on various pull requests on them. My mentor advised me to look into multitaper, which I did. It gave me a few ideas on how I could implement this project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding
&lt;/h2&gt;

&lt;p&gt;I had already started a few days early and went ahead and implemented the Lomb-Scargle Fourier Transform which will be the backbone of the power spectrum and cross spectrum. 2 days into the coding period and I also have started coding up the wrapper classes. It turns out to be a very tangled process in order to get every small nook and cranny of the class to work. But I have seemed to get the hang of it.&lt;/p&gt;

</description>
      <category>gsoc</category>
    </item>
    <item>
      <title>GSoC Blog Zero</title>
      <dc:creator>pupper emeritus</dc:creator>
      <pubDate>Sat, 06 May 2023 21:49:25 +0000</pubDate>
      <link>https://dev.to/pupperemeritus/gsoc-blog-zero-1d9k</link>
      <guid>https://dev.to/pupperemeritus/gsoc-blog-zero-1d9k</guid>
      <description>&lt;p&gt;This is a test post to check the status of the blog and RSS feed. I am very excited to contribute to Stingray @ Open Astronomy this summer.&lt;/p&gt;

</description>
      <category>gsoc</category>
    </item>
  </channel>
</rss>
