<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://digyt.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://digyt.github.io/" rel="alternate" type="text/html" /><updated>2026-10-31T11:21:52+00:00</updated><id>https://digyt.github.io/feed.xml</id><title type="html">DiGyt’s Blog</title><subtitle>A collection of (hopefully) useful texts and code snippets, concerning neuroscience, brains, deep learning, statistics, and complex systems.</subtitle><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><entry><title type="html">Entropy-based measures in Machine Learning</title><link href="https://digyt.github.io/entropy_based_measures_in_ml/" rel="alternate" type="text/html" title="Entropy-based measures in Machine Learning" /><published>2023-02-26T00:00:00+00:00</published><updated>2023-02-26T14:22:00+00:00</updated><id>https://digyt.github.io/entropy_based_measures_in_ml</id><content type="html" xml:base="https://digyt.github.io/entropy_based_measures_in_ml/"><![CDATA[<style>
iframe{height:9070px !important;}
</style>

<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fsnippets%2Fblob%2Fmaster%2Fentropy_based_measures_in_ml.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>

<!--   style="width:100%; height:300px;"   https://github.com/yusanshi/embed-like-gist This is a beautiful way of embedding stuff directly from github
<script src="https://emgithub.com/embed.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fcateye%2Fblob%2Fmain%2Fexample_minimal_use.ipynb&style=github&showBorder=on&showLineNumbers=on&showFileMeta=on&showCopy=on"></script>-->]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Statistics" /><category term="Data Processing" /><category term="Machine Learning Theory" /><summary type="html"><![CDATA[A collection and explanation of the most relevant Entropy-based measures in Machine Learning.]]></summary></entry><entry><title type="html">Introducing: ASRpy</title><link href="https://digyt.github.io/introducing_ASRpy/" rel="alternate" type="text/html" title="Introducing: ASRpy" /><published>2022-07-02T00:00:00+00:00</published><updated>2022-02-02T14:22:00+00:00</updated><id>https://digyt.github.io/introducing_ASRpy</id><content type="html" xml:base="https://digyt.github.io/introducing_ASRpy/"><![CDATA[<p>Last Year, when I started comparing different EEG cleaning algorithms (see <a href="https://digyt.github.io/automated_EEG_cleaning_comparison/">this blog post</a>),
I was looking for a valid and trustworthy Python implementation of the original algorithm for Artifact Subspace Reconstruction.</p>

<p>Artifact Subspace Reconstruction is a promising EEG cleaning algorithm, which is gaining more and more popularity due to its convincing cleaning results.
It was originally developed for an EEGLAB extension in MATLAB, but there was no perfectly equivalent version in Python. Following preceding work done by 
<a href="https://nbara.github.io/python-meegkit/modules/meegkit.asr.html">Nicholas Barascud</a>, and the original implementation by 
<a href="https://github.com/sccn/clean_rawdata">Christian Kothe and Scott Makeig</a>, I started to create a Python version of Artifact Subspace Reconstruction that 
would be perfectly equivalent with the original MATLAB implementation. After a lot of work and comparisons I succeded in doing so, producing an Artifact 
Subspace Reconstruction which was only differing from the MATLAB version by external factors, such as slightly differing Eigenspace solver algorithms used
in numpy and MATLAB. However, all other operations were perfectly replicating the MATLAB code.</p>

<p>The result can be found in my <a href="https://github.com/DiGyt/asrpy">ASRpy repository</a>. Information on the algorithm, installation and examples can be found 
there.</p>

<p>IF you want to know how to apply ASRpy to your own Python EEG data (either with MNE-Python or with numpy arrays), you can go through this quick tutorial:
<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fasrpy%2Fblob%2Fmain%2Fexample.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script></p>

<!--   style="width:100%; height:300px;"   https://github.com/yusanshi/embed-like-gist This is a beautiful way of embedding stuff directly from github
<script src="https://emgithub.com/embed.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fcateye%2Fblob%2Fmain%2Fexample_minimal_use.ipynb&style=github&showBorder=on&showLineNumbers=on&showFileMeta=on&showCopy=on"></script>-->]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Neuroscience" /><category term="Data Processing" /><summary type="html"><![CDATA[Artifact Subspace Reconstruction in Python.]]></summary></entry><entry><title type="html">Introducing: CatEyes</title><link href="https://digyt.github.io/introducing_CatEyes/" rel="alternate" type="text/html" title="Introducing: CatEyes" /><published>2021-11-18T00:00:00+00:00</published><updated>2021-11-18T14:22:00+00:00</updated><id>https://digyt.github.io/introducing_CatEyes</id><content type="html" xml:base="https://digyt.github.io/introducing_CatEyes/"><![CDATA[<p>Over the last years, I have been working a lot with classification of eye tracking data.</p>

<p>I found that there are tons of different gaze classification available out there, but many of them took a terrible amount of installation, implementation, and data wrangling work until ready for application. If you had to apply gaze classification at one point in your career, you might know what I’m talking about. As this problem deterred me and many of my lab members from actually using these algorithms, I decided to unite all these different algorithms in one toolbox, and unite all their functionality into one simple and easily applicable workflow.</p>

<p>The result of this work is the <a href="https://github.com/DiGyt/cateyes">CatEyes</a> Toolbox. It does not allow you to test different gaze classification algorithms with very simple and standardized functions, it also provides some tools to easily handle and visualize eye tracking data, especially with respect to classification.</p>

<p>If this idea caught your attention, feel free to check out the repository, where you can find everything you need to know about application, installation, as well as practical examples on how to directly apply gaze classification to your specific eye tracking project. Probably the best way to get an idea of how CatEyes works, is by using our CatEyes minimal example. You can inspect the intrdocutory example below, or click on the “Open in Colab” button, to run it in Google Colab’s hosted runtime.</p>

<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fcateyes%2Fblob%2Fmain%2Fexample_minimal_use.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>

<p>Of course this is by far not everything you can do with CatEyes. If you wonder what other functionality CatEyes provides, you can check out the repository, or have a look at the <a href="https://digyt.github.io/cateyes/index.html">CatEyes documentation</a>.</p>

<!--   style="width:100%; height:300px;"   https://github.com/yusanshi/embed-like-gist This is a beautiful way of embedding stuff directly from github
<script src="https://emgithub.com/embed.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fcateye%2Fblob%2Fmain%2Fexample_minimal_use.ipynb&style=github&showBorder=on&showLineNumbers=on&showFileMeta=on&showCopy=on"></script>-->]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Neuroscience" /><category term="Data Processing" /><summary type="html"><![CDATA[Unified Gaze Classification for Eye Tracking.]]></summary></entry><entry><title type="html">Automated EEG Cleaning - A Comparison</title><link href="https://digyt.github.io/automated_EEG_cleaning_comparison/" rel="alternate" type="text/html" title="Automated EEG Cleaning - A Comparison" /><published>2021-06-14T00:00:00+00:00</published><updated>2021-06-14T14:22:00+00:00</updated><id>https://digyt.github.io/automated_EEG_cleaning_comparison</id><content type="html" xml:base="https://digyt.github.io/automated_EEG_cleaning_comparison/"><![CDATA[<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fsnippets%2Fblob%2Fmaster%2FEEG_compare_automated_cleaning.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Neuroscience" /><category term="Data Processing" /><summary type="html"><![CDATA[A collection, explanation, and comparison of various automated EEG cleaning algorithms.]]></summary></entry><entry><title type="html">Example: Automated EEG Cleaning</title><link href="https://digyt.github.io/example_automated_EEG_cleaning/" rel="alternate" type="text/html" title="Example: Automated EEG Cleaning" /><published>2021-06-07T00:00:00+00:00</published><updated>2021-06-07T14:22:00+00:00</updated><id>https://digyt.github.io/example_automated_EEG_cleaning</id><content type="html" xml:base="https://digyt.github.io/example_automated_EEG_cleaning/"><![CDATA[<style>
iframe{height:9500px !important;}
</style>

<script src="https://gist.github.com/DiGyt/a0a4294217b67e636318f48bc51cdacc.js"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Neuroscience" /><category term="Data Processing" /><summary type="html"><![CDATA[A simple automated EEG cleaning pipeline for MNE-Python.]]></summary></entry><entry><title type="html">Will there be snow on Christmas?</title><link href="https://digyt.github.io/snow_on_christmas/" rel="alternate" type="text/html" title="Will there be snow on Christmas?" /><published>2021-02-09T00:00:00+00:00</published><updated>2021-02-23T14:22:00+00:00</updated><id>https://digyt.github.io/snow_on_christmas</id><content type="html" xml:base="https://digyt.github.io/snow_on_christmas/"><![CDATA[<hr />

<style>
iframe{height:11220px !important;}
</style>

<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fsnippets%2Fblob%2Fmaster%2Fsnow_on_christmas.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Complex Systems" /><category term="Neural Networks" /><summary type="html"><![CDATA[A challenge-winning project for the Potsdam Climate Institute's 2021 "AI for Climate" Hackathon.]]></summary></entry><entry><title type="html">What is noise? (Baby don’t hurt me)</title><link href="https://digyt.github.io/what_is_noise/" rel="alternate" type="text/html" title="What is noise? (Baby don’t hurt me)" /><published>2021-02-08T00:00:00+00:00</published><updated>2021-02-08T14:22:00+00:00</updated><id>https://digyt.github.io/what_is_noise</id><content type="html" xml:base="https://digyt.github.io/what_is_noise/"><![CDATA[<hr />

<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fsnippets%2Fblob%2Fmaster%2Fwhat_is_noise.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Neuroscience" /><category term="Data Processing" /><summary type="html"><![CDATA[Visualization and automated detection of EEG noise.]]></summary></entry><entry><title type="html">Texture Generation with Spatial GANs</title><link href="https://digyt.github.io/SGAN_texture_generation/" rel="alternate" type="text/html" title="Texture Generation with Spatial GANs" /><published>2021-01-28T00:00:00+00:00</published><updated>2020-08-01T14:22:00+00:00</updated><id>https://digyt.github.io/SGAN_texture_generation</id><content type="html" xml:base="https://digyt.github.io/SGAN_texture_generation/"><![CDATA[<p>Last year, I teamed up with Lucas Feldmann and Josefine Zerbe to replicate the SGAN network 
designed by Jetchev, Bergmann &amp; Vollgraf (2016) from Zalando Research. Their SGAN model 
provides a nice way to generate non-repeating patterns of any texture. In the following 
ipynb notebook, we describe the model and training results on different textures. After 
that, we provide another notebook including a Tensorflow implementation of the original 
SGAN architecture as well as the training procedure that we used to generate our textures.
See for yourself and feel free trying out to train the network on your own texture images:</p>

<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fsnippets%2Fblob%2Fmaster%2FSGAN_BlogPost_group_21.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>

<script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2FDiGyt%2Fsnippets%2Fblob%2Fmaster%2FSGAN_SourceCode_group_21.ipynb&amp;style=default&amp;type=ipynb&amp;showBorder=on&amp;showLineNumbers=on&amp;showFileMeta=on&amp;showFullPath=on&amp;showCopy=on"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Neural Networks" /><summary type="html"><![CDATA[Replicating Jetchev, Bergmann & Vollgraf (2016).]]></summary></entry><entry><title type="html">Probabilistic Poker Bots</title><link href="https://digyt.github.io/probabilistic_poker_bots/" rel="alternate" type="text/html" title="Probabilistic Poker Bots" /><published>2020-12-14T00:00:00+00:00</published><updated>2020-12-14T14:22:00+00:00</updated><id>https://digyt.github.io/probabilistic_poker_bots</id><content type="html" xml:base="https://digyt.github.io/probabilistic_poker_bots/"><![CDATA[<hr />

<style>
iframe{height:19000px !important;}
</style>

<script src="https://gist.github.com/DiGyt/2f16695cdf21fe2f5e9a6ecc9d94af41.js"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Statistics" /><category term="Artificial Agents" /><summary type="html"><![CDATA[Define automated Poker algorithms and play against them.]]></summary></entry><entry><title type="html">Large graphs and small worlds</title><link href="https://digyt.github.io/graph_measures_implementation/" rel="alternate" type="text/html" title="Large graphs and small worlds" /><published>2020-12-06T00:00:00+00:00</published><updated>2020-12-06T00:00:00+00:00</updated><id>https://digyt.github.io/graph_measures_implementation</id><content type="html" xml:base="https://digyt.github.io/graph_measures_implementation/"><![CDATA[<p>Making Sense of networks can be hard. In some cases, using graph theory can help to understand certain properties of the underlying network, even though the network itself is too complex to understand.
In the following script, you can investigate Python implementations for a number of graph theory measures which we used to analyze brain connectivity patterns.</p>

<style>
iframe{height:14000px !important;}
</style>

<script src="https://gist.github.com/DiGyt/3c06126e678e4b35afdec43a4943917d.js"></script>]]></content><author><name>Dirk Gütlin</name><email>dirk.guetlin@gmail.com</email></author><category term="Complex Systems" /><category term="Data Processing" /><summary type="html"><![CDATA[A collection of weighted graph measures to compute on numpy arrays.]]></summary></entry></feed>