<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.3">Jekyll</generator><link href="https://lgatto.codeberg.page/feed.xml" rel="self" type="application/atom+xml" /><link href="https://lgatto.codeberg.page/" rel="alternate" type="text/html" /><updated>2026-03-29T14:17:32+02:00</updated><id>https://lgatto.codeberg.page/feed.xml</id><title type="html">~/</title><subtitle>Laurent Gatto&apos;s online home</subtitle><author><name>Laurent Gatto</name></author><entry><title type="html">Rethinking how I use git and reduce my dependency on Github</title><link href="https://lgatto.codeberg.page/rethinking-git-github-usage/" rel="alternate" type="text/html" title="Rethinking how I use git and reduce my dependency on Github" /><published>2025-12-25T00:00:00+01:00</published><updated>2025-12-25T00:00:00+01:00</updated><id>https://lgatto.codeberg.page/rethinking-git-github-usage</id><content type="html" xml:base="https://lgatto.codeberg.page/rethinking-git-github-usage/">&lt;p&gt;I have been wanting to reduce my usage and dependency on Github for
quite some time now.&lt;/p&gt;

&lt;p&gt;My first initiative was to join
&lt;a href=&quot;https://codeberg.org/lgatto&quot;&gt;codeberg.org&lt;/a&gt;, on 9 June 2024. I am
really happy I did so, but Codeberg is a non-profit association and
has &lt;a href=&quot;https://blog.codeberg.org/new-storage-limits-on-codeberg-what-you-need-to-know.html&quot;&gt;storage
limits&lt;/a&gt;,
and rightly so. But my usage of Github exceeds what they can offer, so
I had to (1) carefully choose what to migrate and (2) adapt what/how I
store files in my repos (by switching to
&lt;a href=&quot;https://git-annex.branchable.com/&quot;&gt;git-annex&lt;/a&gt; for larger blobs, for
example).&lt;/p&gt;

&lt;p&gt;My university has a &lt;a href=&quot;https://forge.uclouvain.be/&quot;&gt;Gitlab&lt;/a&gt; server but
with a limited number of private projects. Ignoring this limitation,
it is the right place for (a limited number of) projects related to my
teaching activities, for example.&lt;/p&gt;

&lt;p&gt;I concluded that my best solution was to self-host private
repositories that are not meant to become public. Yesterday, I
experimented a bit with &lt;a href=&quot;https://gitolite.com/gitolite/&quot;&gt;gitolite&lt;/a&gt;,
but today I realised how trivial it is to self-host git repositories
once you have a server with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh&lt;/code&gt; access: this
&lt;a href=&quot;https://www.youtube.com/watch?v=iuIdBfjL62s&amp;amp;si=JVVT_w-f7pgwntuy&quot;&gt;video&lt;/a&gt;
and the &lt;a href=&quot;https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server&quot;&gt;git
book&lt;/a&gt;
show how.&lt;/p&gt;

&lt;p&gt;Github is still inevitable: I have many projects/software that have
been there for a long time, and that are expected to remain
there. Githun is still the &lt;em&gt;de facto&lt;/em&gt; infrastructure for many
collaborative projects, and that is unlikely to change.&lt;/p&gt;

&lt;p&gt;Ironically, you (still) read this page served on Github. I will
eventually migrate my personal page and other websites to
codeberg. It’s still a work in progress, but since I started cleaning
up in October 2025, I have &lt;a href=&quot;https://fediscience.org/@lgatto/115321983514080309&quot;&gt;deleted hundreds of
repositories&lt;/a&gt; and
even two inactive organisation - I have now less than 100 (mostly
public) repos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2025-12-26: here’s a related article by members of rOpenSci: &lt;a href=&quot;https://ropensci.org/blog/2025/12/17/beyond-github/&quot;&gt;Code
Hosting Options Beyond
GitHub&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;2026-01-11: this website has now migrated to
&lt;a href=&quot;https://lgatto.codeberg.page/&quot;&gt;lgatto.codeberg.page&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Laurent Gatto</name></author><category term="conference" /><category term="software" /><category term="talks" /><category term="CBIO" /><summary type="html">I have been wanting to reduce my usage and dependency on Github for quite some time now.</summary></entry><entry><title type="html">The tragic death of open source research software</title><link href="https://lgatto.codeberg.page/death-research-software/" rel="alternate" type="text/html" title="The tragic death of open source research software" /><published>2025-10-21T00:00:00+02:00</published><updated>2025-10-21T00:00:00+02:00</updated><id>https://lgatto.codeberg.page/death-research-software</id><content type="html" xml:base="https://lgatto.codeberg.page/death-research-software/">&lt;p&gt;This post is a write up of my contribution to the &lt;a href=&quot;https://www.circle-u.eu/events/2025/fast-forward-open-science.html&quot;&gt;Fast forward Open
Science&lt;/a&gt; event organised by Circle U. I’ll be sharing some thoughts
about research software maintenance and survival as part of the ‘Open
Source Codes and Software’ discussion.&lt;/p&gt;

&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;/h1&gt;

&lt;p&gt;Reserach software has become an central player in scientific research,
to the point that it is hard to imagine scientific research without
software.&lt;/p&gt;

&lt;p&gt;But because of its nature and how it is funded/valued, it can also be
a &lt;a href=&quot;https://en.wikipedia.org/wiki/Single_point_of_failure&quot;&gt;single point of failure&lt;/a&gt;.&lt;/p&gt;

&lt;h1 id=&quot;setting-the-stage&quot;&gt;Setting the stage&lt;/h1&gt;

&lt;p&gt;Imagine that 6 months ago, you, a brilliant and motivated early career
researcher in biomedical sciences, defined the ideal experiment to
answer an important biological question in your domain. After several
months of hard work and thousands of euros of consumables, you have
acquired the precious data.&lt;/p&gt;

&lt;p&gt;You have even identified a research paper that tackles a similar
question using exactly the same technology and type of data. That
paper describes a data analysis method and published a piece of
software that are ideally suited to answer your question with your
data.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Experimental design + data + software = results
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You have generated good quality data and found the right
software.&lt;/p&gt;

&lt;p&gt;Your results are at arm’s length, aren’t they?&lt;/p&gt;

&lt;p&gt;What could go wrong?&lt;/p&gt;

&lt;h1 id=&quot;possible-causes-of-death&quot;&gt;Possible causes of death&lt;/h1&gt;

&lt;p&gt;Sadely, lots of unfortunate events stand in the way of your results:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The software isn’t available (anymore).&lt;/li&gt;
  &lt;li&gt;The software is available, but it can’t be installed.&lt;/li&gt;
  &lt;li&gt;The software can be installed, but it doesn’t work.&lt;/li&gt;
  &lt;li&gt;The software “works” on test data , but you can’t get it to run on
your data.&lt;/li&gt;
  &lt;li&gt;The software “runs” with your data, but the results don’t make any
sense.&lt;/li&gt;
  &lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;software-collapse&quot;&gt;Software collapse&lt;/h1&gt;

&lt;h2 id=&quot;the-software-doesnt-work&quot;&gt;The software doesn’t work&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Software collapse (or software rot) is the fact that software will
stop working at some point if is not &lt;strong&gt;actively maintained&lt;/strong&gt;. Collapse
can be the results of bugs, accidental changes or voluntary breaking
changes (i.e. that don’t guarantee backward compatibility) in the
software itself, changes in software (and service) depedendencies,
…&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Or simply disappearance of the software (or more generally, the page
where it was available), or the lack of responses when originally
available on request only.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Or maybe that the “software” was never meant to last beyond that one
use case/paper. In such cases, it should have clearly been labelled
as a protoype, not a tool/software can other can reuse.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;or-the-software-works-but&quot;&gt;Or the software &lt;em&gt;works&lt;/em&gt; but&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;There is no example data, and it’s not clear what the input should
look like.&lt;/li&gt;
  &lt;li&gt;There is no documentation - the software works (with the
example/test data or with yours), but the commands and/or output
don’t make any sense.&lt;/li&gt;
  &lt;li&gt;Even though the software (correctly?) runs, the lack of
documentation or its inadequacy make it too difficult to use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;making-software-survive-longer&quot;&gt;Making software survive longer&lt;/h1&gt;

&lt;p&gt;There exist many steps that one can take to minimise the risks
described above. These steps are technical to write better, and more
maintainable software, or non-technical, to grow and foster a
community and support around the software and their developers. These
opportunities aren’t presented in any order of importance. Different
situations and constrains will define what is possible in terms of
possibilities.&lt;/p&gt;

&lt;p&gt;If there’s one thing to take away, it is not to stay alone in the
development and maintenance of a piece of software, especially for
junior researchers/developers.&lt;/p&gt;

&lt;h2 id=&quot;administration&quot;&gt;Administration&lt;/h2&gt;

&lt;p&gt;Stay withing the law, which includes any legal constrains or
limitations, intellectual property, author- and copyrights, funding
obligations, licencing, academia vs industry, policies and
regulations, … Stay informed and identify allies that have the
required experience.&lt;/p&gt;

&lt;p&gt;If possible, make your software widerly available under an open source
licenses increase usage, contributions, and visibility (see below).&lt;/p&gt;

&lt;h2 id=&quot;open-source-development&quot;&gt;Open source development&lt;/h2&gt;

&lt;p&gt;Choose an &lt;a href=&quot;https://opensource.org/licenses&quot;&gt;open source&lt;/a&gt; license to &lt;strong&gt;publish&lt;/strong&gt; your software (ideally as a
piece of software and as a research paper) and &lt;strong&gt;archive&lt;/strong&gt; (&lt;a href=&quot;https://zenodo.org/&quot;&gt;Zenodo&lt;/a&gt;,
&lt;a href=&quot;https://www.softwareheritage.org/&quot;&gt;Software Heritage&lt;/a&gt;, …) it.&lt;/p&gt;

&lt;p&gt;Making your software known allows to foster a collaborative
environment and a user and (co-)developer community around your
software. To facilitate this, consider having a code of conduct,
onboarding documents, contribution guides, and support forum for
users, … This is particularly relevant if your software is itself
part of a larger ecosystem, and it is possible to adopt or adapt what
is already available in that software ecosystem.&lt;/p&gt;

&lt;h2 id=&quot;development&quot;&gt;Development&lt;/h2&gt;

&lt;p&gt;Good software development is paramount to minimse software
collapse. But everybody starts at some point, and sharing code is a
good way to move towards the next steps. Even if one feels that the
code isn’t ready for prime time because of lack of ‘formal’ training
(many lack it and still become respected developers and contributors),
it is much better in the short and long run to share code.&lt;/p&gt;

&lt;p&gt;Here are some tips:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implement modularity to deal for instance with software collapse. It
is much easier to maintain and extend small independent components
rather than a large monolithic code base.&lt;/li&gt;
  &lt;li&gt;Do learn and follow best practice when in comes to research software
development. These include automation and manual tasks, unit and
integration testing, version control, software versioning,
… Finding a well meaning community will help with this.&lt;/li&gt;
  &lt;li&gt;Don’t reinvent the wheel, and try re-use existing and robust
infrastructure when possible/available - stand on the shoulders of
giants. But beware of fragile dependencies, even though this is
difficult without the experience.&lt;/li&gt;
  &lt;li&gt;Document you code and you software. Forget the silly myth that real
developers focus on writing code and not documenting it - that
certainly holds for bad developers. Writing documentation forces to
put oneself in the position of a user, which is very often
enlightening on the usability of what is produced. There are many
types of documentations: manuals, tutorials, example data,
installation, user and developer guides, slides, videos, web page,
… There’s no need to have all of them - focus on a few high
quality ones.&lt;/li&gt;
  &lt;li&gt;Focus on traceability and reproducibility when analysing data and
developing software to do so. Without traceability and
reproducibility, there’s no science, only anectodal evidence, at
best.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;software-life-cycle&quot;&gt;Software life cycle&lt;/h2&gt;

&lt;p&gt;This is a point of particular interest to more senior developers and
PIs. There’s pressure to produce new features and software, but
planning beyond is important.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Think of your &lt;a href=&quot;https://osf.io/preprints/biohackrxiv/k8znb_v1&quot;&gt;software’s life
cycle&lt;/a&gt;:
maintenance, new features (if possible), new developers, …&lt;/li&gt;
  &lt;li&gt;Plan for sunsetting you software. Consider ending, pausing, or
handing off.&lt;/li&gt;
  &lt;li&gt;Also consider distaster planning, when funding suddenly gets cut
off: make a thread model considering social, financial and technical
vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;community&quot;&gt;Community&lt;/h2&gt;

&lt;p&gt;Consider user and developer communities:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Maintain your software, answer questions, accept contribution,
credit contributors, … make you software findable, citable (DOI),
and re-usable.&lt;/li&gt;
  &lt;li&gt;Announce your software, promote it (on social media, mailing lists,
forums, …) and through more formal academic publications (think of
the different audiences), conference presentations, posters and
workshops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building a community and addressing its needs is also time
consuming. There is some responsability that comes with release a tool
that is meant to be used by others. If one isn’t prepared (or able) to
consider this investment, it might be better to release a prototype.&lt;/p&gt;

&lt;h2 id=&quot;users&quot;&gt;Use(rs)&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The best way to produce software that is used and useful is to ‘eat
your own dog food’ - use the sofware you develop, to assess, in real
time, the usability and relevant of software.&lt;/li&gt;
  &lt;li&gt;Produce software that users can install and use - avoid root/admin
priviledges.&lt;/li&gt;
  &lt;li&gt;Make it (easy to) run on other’s computer (no hard coded paths,
…). “It runs on my computer” is irrelevant.&lt;/li&gt;
  &lt;li&gt;Be explicit on the code: are you publishing one-off analysis scripts
or prototpyes without any gurantees, scripts supporting results that
come some some guarantees/efforts to be reproduces, or tool/software
for wider consumption?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;training&quot;&gt;Training&lt;/h2&gt;

&lt;p&gt;Appropriate training in data analysis, data management, and software
developement/usage is absolutely essentiel. (Some of) these should be
delivered early, and indeally as part of the university curriculum to
students that train in a software-heavy field (all STEM).&lt;/p&gt;

&lt;p&gt;Here are some well-known examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://carpentries.org/&quot;&gt;The Carpentries&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1012925&quot;&gt;Learning and teaching in the Bioconductor community&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://training.galaxyproject.org/training-material/&quot;&gt;Galaxy training&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://elixir-europe.org/platforms/training&quot;&gt;ELIXIR training platform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;incentives-and-funding&quot;&gt;Incentives and funding&lt;/h2&gt;

&lt;p&gt;It is important to
&lt;a href=&quot;https://www.ouvrirlascience.fr/presentation-of-the-2024-open-science-free-research-software-awards/&quot;&gt;recognise&lt;/a&gt;
of the role of those that develope and maintain software, often called
research software engineers, and offer them a (stable) career paths.&lt;/p&gt;

&lt;p&gt;Decicated funding for sofware are rare, but they do exist: &lt;a href=&quot;https://www.software.ac.uk/programmes/research-software-maintenance-fund&quot;&gt;Software
Sustainability Institute Research Software Maintenance Fund&lt;/a&gt; (UK),
CZI’s &lt;a href=&quot;https://chanzuckerberg.com/eoss/&quot;&gt;Essential Open Source Software for Science&lt;/a&gt;, …&lt;/p&gt;

&lt;h1 id=&quot;conclusions&quot;&gt;Conclusions&lt;/h1&gt;

&lt;p&gt;Your results are only as good as the method and the software you
use. Without decent software, there’s hardly any trustworthy science.&lt;/p&gt;

&lt;p&gt;This means that we need to offer the opportunities and support for
developers to develop, release and maintain “good enough”
software. Collectively, we can:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Offer training to researchers who write code or develope software,
but haven’t had any training. These can within an official
curriculum, or workshops such as those cited above.&lt;/li&gt;
  &lt;li&gt;If researchers offer ways to cite their code/software, let’s give
them credit for their work.&lt;/li&gt;
  &lt;li&gt;Ideally, there should be well defined career paths for researchers
whose main tasks centre around software. In many countries, research
software engineers are emerging or are already established.&lt;/li&gt;
  &lt;li&gt;Being able to fund software development and maintenance is
essential. Currently, too much software is developed as explicit or
implicit side effects of research projects.&lt;/li&gt;
  &lt;li&gt;It is also crucial to maintain the infrastructure that supports
software development and maintenant, such as proper archiving.&lt;/li&gt;
  &lt;li&gt;There are many actors that can and should support software:
researchers, of course, but also their institutions, funders,
publishers and libraries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;references&quot;&gt;References&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://ieeexplore.ieee.org/document/8701540&quot;&gt;Dealing With Software Collapse&lt;/a&gt;. Hinsen K. (2019)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2505.06484&quot;&gt;10 quick tips for making your software outlive your job&lt;/a&gt;. Littauer R
et al. (2025).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1011920&quot;&gt;For long-term sustainable software in bioinformatics&lt;/a&gt;. Coelho
LP. (2024).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005412&quot;&gt;Ten simple rules for making research software more robust&lt;/a&gt;. Taschuk
and Wilson (2017).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://hal.science/hal-04930405v1&quot;&gt;CODE beyond FAIR&lt;/a&gt;. Di Cosmo et al. (2025).&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Laurent Gatto</name></author><category term="software" /><category term="open research" /><summary type="html">This post is a write up of my contribution to the Fast forward Open Science event organised by Circle U. I’ll be sharing some thoughts about research software maintenance and survival as part of the ‘Open Source Codes and Software’ discussion.</summary></entry><entry><title type="html">CBIO’s EuroBioc2025 posters and talks</title><link href="https://lgatto.codeberg.page/EuroBioc-Barcelona/" rel="alternate" type="text/html" title="CBIO’s EuroBioc2025 posters and talks" /><published>2025-09-06T00:00:00+02:00</published><updated>2025-09-06T00:00:00+02:00</updated><id>https://lgatto.codeberg.page/EuroBioc-Barcelona</id><content type="html" xml:base="https://lgatto.codeberg.page/EuroBioc-Barcelona/">&lt;p&gt;Before I forget posting this year’s lab EuroBioc contribution, here
are the abstract of the work we will present at the &lt;a href=&quot;https://eurobioc2025.bioconductor.org/&quot;&gt;EuroBioc2025 in
Barcelona&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;psmatch-a-bioconductor-package-for-handling-peptide-spectrum-matches-data&quot;&gt;PSMatch: a Bioconductor Package for Handling Peptide-Spectrum Matches Data&lt;/h1&gt;

&lt;p&gt;Guillaume Deflandre, Sebastian Gibb and Laurent Gatto&lt;/p&gt;

&lt;p&gt;Loading, exploring and analysing the resulting Peptide-Spectrum
Matches (PSMs) from a database search in Mass Spectrometry (MS)-based
proteomics can be time-consuming. &lt;em&gt;PSMatch&lt;/em&gt; is an R/Bioconductor
package designed to handle this process by offering functionalities to
streamline exploration and visualisation of PSM data. It provides
functions to load PSM data from mzId or tabular files, generate
theoretical fragment ions, model peptide-protein relations and
facilitate visualisations.&lt;/p&gt;

&lt;p&gt;Recent developments in &lt;em&gt;PSMatch&lt;/em&gt; have focused on extending these
functionalities to support post-translational modifications, enabling
more accurate characterisation of modified peptides. Effort in
identifying modified peptides is needed as it is these peptides that
are expected to constitute a significant proportion of unidentified
spectra. In fields such as single-cell proteomics or metaproteomics,
where the identification rates pale by comparison with bulk
approaches, this becomes even more prominent.  Enabling users to
benefit from a powerful and flexible R ecosystem to further explore
these unidentified spectra is therefore paramount.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PSMatch&lt;/em&gt; is part of the &lt;em&gt;R for Mass Spectrometry&lt;/em&gt; initiative, that
develops an open and collaborative ecosystem of MS-based proteomics
and metabolomics, offering efficient, scalable, and stable
infrastructure for MS-based proteomics.&lt;/p&gt;

&lt;p&gt;And here’s the relevant
&lt;a href=&quot;https://osf.io/preprints/osf/62v9p_v2&quot;&gt;preprint&lt;/a&gt;.&lt;/p&gt;

&lt;h1 id=&quot;an-open-software-development-based-ecosystem-of-r-packages-for-mass-spectrometry-data-analysis&quot;&gt;An Open Software Development-based Ecosystem of R Packages for Mass Spectrometry Data Analysis&lt;/h1&gt;

&lt;p&gt;Laurent Gatto, Sebastian Gibb and Johannes Rainer&lt;/p&gt;

&lt;p&gt;A frequent problem with scientific research software is the lack of
support, maintenance and further development. In particular,
development by a single researcher can easily result in orphaned and
dysfunctional software packages, especially if combined with poor
documentation, missing unit tests or lack of adherence to open
software development standards. The RforMassSpectrometry
(https://www.rformassspectrometry.org/) initiative aims to develop an
efficient, scalable, and stable infrastructure for mass spectrometry
(MS) based proteomics and metabolomics data analysis. As part of this
initiative, a growing ecosystem of R software packages is being
developed covering different aspects of metabolomics and proteomics
data analysis. To avoid the aforementioned problems, community
contributions are fostered, and open development, documentation and
long-term support emphasised.&lt;/p&gt;

&lt;p&gt;At the heart of the package ecosystem lies the &lt;em&gt;Spectra&lt;/em&gt; package that
provides the core infrastructure to handle, process and visualise MS
data. Its design allows easy expansion to support existing and new
file or data formats, including data representations with minimal
memory footprint or remote data access. For proteomics data analysis,
two packages in particular are dedicated to the analysis or
quantitative and identification data. The &lt;em&gt;PSMatch&lt;/em&gt; package handles
and manages peptide identification data. It also provides functions to
model and visualise peptide-protein relations to make informed
decision about shared peptide filtering. The package also provides
functions to calculate and visualise MS2 fragment ions, in conjunction
with the &lt;em&gt;Spectra&lt;/em&gt; package. The &lt;em&gt;QFeatures&lt;/em&gt; package is the working
horse for quantitative proteomics data. It builds on the familiar
&lt;em&gt;SummarizedExperiment&lt;/em&gt; and &lt;em&gt;MultiAssayExperiment&lt;/em&gt; infrastructure and
provides a familiar Bioconductor user experience to manage bulk and
single-cell quantitative data across different assay levels (such as
peptide spectrum matches, peptides and proteins) in a coherent and
tractable way.&lt;/p&gt;

&lt;p&gt;For metabolomics data analysis, &lt;em&gt;xcms&lt;/em&gt; is one of the core software
packages for the required preprocessing of LC-MS data. This
Bioconductor package was recently updated to reuse the R for Mass
Spectrometry infrastructure, enabling now also the analysis of very
large, and/or remote, data. This integration simplifies in addition
complete analysis workflows which can include functionality from the
&lt;em&gt;MsFeatures&lt;/em&gt; package for compounding, and from the &lt;em&gt;MetaboAnnotation&lt;/em&gt;
package facilitating annotation of untargeted metabolomics
experiments. Public annotation resources can be easily accessed
through packages such as &lt;em&gt;MsBackendMassbank&lt;/em&gt;, &lt;em&gt;MsBackendMsp&lt;/em&gt; or
&lt;em&gt;CompoundDb&lt;/em&gt;, the latter also allowing to create and manage
lab-specific compound databases.  These packages rely on the
&lt;em&gt;MsCoreUtils&lt;/em&gt; and &lt;em&gt;MetaboCoreUtils&lt;/em&gt; packages for efficient
implementations of commonly used algorithms, designed to be re-used by
other R packages.&lt;/p&gt;

&lt;p&gt;In contrast to a monolithic software design, the R for Mass
Spectrometry ecosystem enables to build customised, modular, and
reproducible analysis workflows. Future proteomics- and
metabolomics-related development will focus on improved data
structures and analysis methods, better support for third-party data
import, and better interoperability with other open source software.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Gatto, L., Gibb, S., &amp;amp; Rainer, J. (2025). An Open Software
Development-based Ecosystem of R Packages for Mass Spectrometry Data
Analysis. European Bioconductor Conference (EuroBioc2025),
Barcelona, Spain. Zenodo. https://doi.org/10.5281/zenodo.17105729&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;benchmark-of-module-detection-methods-for-single-cell-proteomics&quot;&gt;Benchmark of Module Detection Methods for Single Cell Proteomics&lt;/h1&gt;

&lt;p&gt;Enes Sefa Ayar and Laurent Gatto&lt;/p&gt;

&lt;p&gt;Proteins are the key molecules in executing biological functions, and they
cooperate as part of protein complexes or biological pathways. Correlation
in their abundance suggests functional interdependence, offering insights
into biological functions. Thus, identifying biologically meaningful protein
groups (modules) is a critical step in understanding cellular processes.
While many module detection methods exist, they were developed for bulk or
transcriptomic data and rely on the assumption that gene expression levels
can identify functionally related protein groups.&lt;/p&gt;

&lt;p&gt;Single-cell proteomics (SCP) quantifies protein levels at single-cell
resolution, eliminating this assumption and offering a more accurate view
of functional protein relationships. Moreover, SCP preserves cellular
heterogeneity, enabling the discovery of dynamic and context-specific
protein modules are often masked in bulk measurements. Despite these
advantages, existing module detection methods may not be well suited for
SCP data, which presents unique challenges such as batch effects and
missing values.&lt;/p&gt;

&lt;p&gt;Moreover, these methods also differ by various features, for instance,
whether they incorporate (or not) prior biological knowledge, whether they
allow (or not) overlapping modules, or to what extent they use differential
correlation analysis. Parameter choices further influence the identified
modules, often leading to arbitrary decisions. However, all share a more
critical limitation: they generate modules even when applied to random data.
It is therefore essential to distinguish biologically relevant modules from
artifacts.&lt;/p&gt;

&lt;p&gt;In this work, we systematically evaluate module detection methods on SCP
datasets. Our assessment framework integrates (1) internal clustering metrics
to evaluate compactness and separation, (2) external validation against known
biological annotations, and (3) network-based analyses incorporating
protein-protein interaction data to enhance biological interpretability. Our
findings reveal notable differences in the biological relevance of the
identified modules and offer practical recommendations for selecting and
validating module detection approaches for single-cell proteomics. Furthermore,
we propose strategies for addressing missing values and batch effects, thereby
improving the accuracy and reliability of module detection.&lt;/p&gt;

&lt;h1 id=&quot;e-omix-a-new-visual-interface-for-analyzing-and-managing-omics-data&quot;&gt;e-OMIX, a new visual interface for analyzing and managing omics data&lt;/h1&gt;

&lt;p&gt;Molka Anaghim Ftouhi, Loïc Guille, Jérôme Linden, Sébastien Jodogne and Laurent Gatto&lt;/p&gt;

&lt;p&gt;The e-OMIX project (https://www.eomix.be) aims to lower the barrier of
entry into omics research by providing an interactive platform where
users will be able to perform analyses, as well as storing the
resulting data and metadata, without the need for advanced coding
skills. e-OMIX is developed under AGPL 3 license as an
Angular/Java-based web-app, making use of several innovative
technologies. Pre-built pipelines are implemented from nf-core, a
repository of publicly available workflows, maximizing their
reproducibility and ease of use. Result matrices are stored in a
database optimized for fast querying of large datasets (TileDB) and
can be exported in several objects notably ‘Bioconductor’s SingleCell
Expriment (SCE) or other (anndata, or Seurat), while metadata are
stored as per-sample individual documents in a document-oriented
database (CouchDB). To increase the interoperability of metadata,
e-OMIX also offers the possibility to manage and export them using
Fast Healthcare Interoperability Resources (FHIR), a widely used
standard in healthcare and clinical research. Finally, data
visualization is made possible by using the &lt;em&gt;iSEE&lt;/em&gt; R/Biocondutor
package. As a first use case, we demonstrate the end-to-end execution
of single-cell RNA-seq pipeline, starting from metadata and raw files
upload, and leading to actionable data, such as annotated cell types,
individual gene expression or marker gene identification.&lt;/p&gt;

&lt;h1 id=&quot;tools-and-strategies-for-systematic-benchmarking-of-r-packages-a-case-study-with-qfeatures&quot;&gt;Tools and Strategies for Systematic Benchmarking of R Packages: A Case Study with QFeatures&lt;/h1&gt;

&lt;p&gt;Léopold Guyot and Laurent Gatto&lt;/p&gt;

&lt;p&gt;As bioinformatics continues to evolve, it must keep pace with
experimental techniques that generate increasingly large volumes of
data. In this context, optimizing the performance of code and packages
that handle these data becomes essential. This work presents the
optimization efforts carried out on the QFeatures R/Bioconductor
package, which is used for the analysis of quantitative proteomics
data. We also highlight a set of tools and methods that are valuable
for performance optimization, with a particular focus on
&lt;a href=&quot;https://leopoldguyot.github.io/VerR/&quot;&gt;VerR&lt;/a&gt;, an R package designed to
create isolated and reproducible environments. These environments
allow for the installation of specific package versions, enabling
systematic benchmarking to assess the performance impact of different
versions. As a result of these optimization efforts, we observed a 90%
reduction in the runtime of a classical single-cell proteomics (scp)
workflow and a 50% decrease in memory usage, demonstrating the
significant impact of targeted optimizations.&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="conference" /><category term="software" /><category term="talks" /><category term="CBIO" /><summary type="html">Before I forget posting this year’s lab EuroBioc contribution, here are the abstract of the work we will present at the EuroBioc2025 in Barcelona</summary></entry><entry><title type="html">CBIO’s EuroBioc2024 posters and talks</title><link href="https://lgatto.codeberg.page/EuroBioc-Oxford/" rel="alternate" type="text/html" title="CBIO’s EuroBioc2024 posters and talks" /><published>2025-06-09T00:00:00+02:00</published><updated>2025-06-09T00:00:00+02:00</updated><id>https://lgatto.codeberg.page/EuroBioc-Oxford</id><content type="html" xml:base="https://lgatto.codeberg.page/EuroBioc-Oxford/">&lt;p&gt;The lab is preparing for &lt;a href=&quot;https://eurobioc2025.bioconductor.org/&quot;&gt;EuroBioc2025 in
Barcelona&lt;/a&gt;, and I realise that
I forgot to post our contributions to &lt;a href=&quot;https://eurobioc2024.bioconductor.org/&quot;&gt;EuroBioc2024 in
Oxford&lt;/a&gt;. So here they are
(with papers that were published in the meantime).&lt;/p&gt;

&lt;h2 id=&quot;differential-correlation-analysis-and-biological-function-inference-on-single-cell-proteomics&quot;&gt;Differential Correlation Analysis and Biological Function Inference on Single Cell Proteomics&lt;/h2&gt;

&lt;p&gt;Author(s): Enes Sefa Ayar, Laurent Gatto&lt;/p&gt;

&lt;p&gt;Proteins are the key molecules in executing biological functions
within cells. They operate in cooperation with other proteins to carry
out these functions as part of protein complexes, or biological
pathways. Thus, the correlation among these proteins implies a
functional interdependence, offering insights into both biological
functions and mechanisms. Differential correlation analysis promises
to infer these biological functions and even underlying mechanisms by
identifying similar or different correlation patterns in groups of
proteins across conditions (ex. cell types, treatments). However,
current approaches, particularly those developed for bulk
measurements, may not be suitable for single-cell proteomics (SCP)
datasets as they may overlook false positives and false negatives
emerging due to batch effects or missing values.&lt;/p&gt;

&lt;p&gt;We aim to investigate the most suitable approach for uncovering
functional correlation in SCP datasets. We compared two approaches
used in SCP [1, 2] and two other network-based methods [3, 4],
commonly used in RNAseq studies. This benchmark involves comparing
these methods across various SCP datasets from scpdata package, each
with different properties including sample size, protein coverage, and
missing values. Thus far, our observations indicate the importance of
addressing batch effect-driven correlations. Our benchmark assesses
the methods based on biological relevance, statistical significance,
and data simulations.&lt;/p&gt;

&lt;h4 id=&quot;references&quot;&gt;References&lt;/h4&gt;

&lt;p&gt;[1] Hu, M., Zhang, Y., Yuan, Y., Ma, W., Zheng, Y., Gu, Q., &amp;amp; Xie,
X. S. (2023). Correlated protein modules revealing functional
coordination of interacting proteins are detected by single-cell
proteomics. The Journal of Physical Chemistry B, 127(27), 6006–6014.&lt;/p&gt;

&lt;p&gt;[2] Khan, S., Conover, R., Asthagiri, A. R., &amp;amp; Slavov,
N. (2023). Dynamics of Single-Cell Protein Covariation during
Epithelial–Mesenchymal Transition.&lt;/p&gt;

&lt;p&gt;[3] Langfelder, P., &amp;amp; Horvath, S. (2008). WGCNA: An R package for
weighted correlation network analysis. BMC Bioinformatics, 9(1).&lt;/p&gt;

&lt;p&gt;[4] Song, W.-M., &amp;amp; Zhang, B. (2015). Multiscale embedded gene
co-expression network analysis. PLOS Computational Biology, 11(11).&lt;/p&gt;

&lt;h2 id=&quot;bulk-vs-single-cell-proteomics-is-there-a-need-for-identification-optimization&quot;&gt;Bulk vs single-cell proteomics: is there a need for identification optimization?&lt;/h2&gt;

&lt;p&gt;Author(s): Guillaume Deflandre, Samuel Grégoire, Laurent Gatto&lt;/p&gt;

&lt;p&gt;Single-cell proteomics (SCP) has emerged as a powerful tool for
elucidating cellular heterogeneity, offering opportunities beyond
traditional bulk sample analysis. However, the application of current
peptide identifications crafted for bulk samples may lead to false
discoveries in SCP. Challenges such as reduced peak counts, lower peak
intensities, and degraded signal-to-noise ratios (as identified by
Boekweg et al. [1]) raise the question: do current peptide scoring
methods in search engines adequately perform in the context of SCP? To
address these limitations, we explore the effectiveness of search
engines and rescoring tools with the use of Bioconductor packages
PSMatch and Spectra. Rescoring tools take profit of as many mass
spectrometry-based features as possible, such as spectral
characteristics and retention time models, which can be particularly
relevant to mitigate the poor quality of SCP spectra. We used
MS²Rescore to generate new features, Mokapot to rescore the SCP
peptides as well as the above-mentioned packages to assess the
efficiency of rescoring tools and potentially improve current scoring
methods in the context of SCP. Our findings demonstrate a significant
increase in confidently identified peptides upon rescoring. In
addition, we suggest a 4-step methodology to evaluate the usefulness
of current and new potential features. Finally, our results shed light
on the differences between bulk and single-cell samples whilst
providing insights that can inform more accurate and reliable data
interpretation in the context of SCP.&lt;/p&gt;

&lt;h4 id=&quot;references-1&quot;&gt;References&lt;/h4&gt;

&lt;p&gt;[1] Hannah Boekweg and Samuel H. Payne. Challenges and Opportunities
for Single-cell Computational Proteomics. Molecular &amp;amp; Cellular
Proteomics, 22(4):100518, April 2023. ISSN 15359476. doi:
10.1016/j.mcpro.2023.100518. URL
https://linkinghub.elsevier.com/retrieve/pii/S1535947623000282.&lt;/p&gt;

&lt;h2 id=&quot;from-cancer-testis-genes-to-cancer-testis-enhancers&quot;&gt;From Cancer-Testis genes to Cancer-Testis enhancers&lt;/h2&gt;

&lt;p&gt;Author(s): Julie Devis, Axelle Loriot, Charles De Smet and Laurent Gatto&lt;/p&gt;

&lt;p&gt;Cancer-Testis (CT) genes are normally expressed only in germ cells and
not in healthy somatic tissues. However, they are aberrantly activated
in many tumours. Many CT genes are regulated by methylation. Their
promoters are highly methylated in all healthy somatic tissues and
demethylated in germ cells. They are also demethylated in tumours in
which they are activated. This is a consequence of the global
demethylation process often observed in cancer. These characteristics
give them clinical potential, as they produce cancer-specific antigens
and can thus be used as target for cancer immunotherapy. We have
recently developed the CTexploreR Bioconductor package, an updated
database for CT genes.&lt;/p&gt;

&lt;p&gt;Promoters are not the only regulatory regions that can be affected by
DNA methylation. It has been shown that many enhancers, that are
activating distal regulatory regions, can be methylated. Their
methylation can be altered in tumours, affecting the expression of
their target genes. We hence wondered if we could find CT enhancers
that would behave like CT genes promoters. We compared ENCODE
cis-regulatory elements and whole genome bisulfite-seq data in somatic
and germinal healthy tissues and in cancer to find enhancers that are
active and demethylated exclusively in germ cells and tumours. We
identified CT-like enhancer candidates that will be further defined.&lt;/p&gt;

&lt;h2 id=&quot;an-open-software-development-based-ecosystem-of-r-packages-for-proteomics-data-analysis&quot;&gt;An Open Software Development-based Ecosystem of R Packages for Proteomics Data Analysis&lt;/h2&gt;

&lt;p&gt;Author(s): Laurent Gatto and RforMassSpectrometry contributors&lt;/p&gt;

&lt;p&gt;A frequent problem with scientific research software is the lack of
support, maintenance and further development. In particular,
development by a single researcher can easily result in orphaned and
dysfunctional software packages, especially if combined with poor
documentation, missing unit tests or lack of adherence to open
software development standards.&lt;/p&gt;

&lt;p&gt;The RforMassSpectrometry (https://www.rformassspectrometry.org/)
initiative aims to develop an efficient, scalable, and stable
infrastructure for mass spectrometry (MS) based proteomics (Gatto et
al. poster) and metabolomics (Rainer et al. poster) data analysis. As
part of this initiative, a growing ecosystem of R software packages is
being developed covering different aspects of metabolomics and
proteomics data analysis. To avoid the aforementioned problems,
community contributions are fostered, and open development,
documentation and long-term support emphasised.&lt;/p&gt;

&lt;p&gt;At the heart of the package ecosystem lies the Spectra package that
provides the core infrastructure to handle, process and visualise MS
data. Its design allows easy expansion to support existing and new
file or data formats, including data representations with minimal
memory footprint or remote data access. For proteomics data analysis,
two packages in particular are dedicated to the analysis or
quantitative and identification data. The PSMatch package handles and
manages peptide identification data. It also provides functions to
model and visualise peptide-protein relations to make informed
decision about shared peptide filtering. The package also provides
functions to calculate and visualise MS2 fragment ions, in conjunction
with the Spectra package. The QFeatures package is the working horse
for quantitative proteomics data. It builds on the familiar
SummarizedExperiment and MultiAssayExperiment infrastructure and
provides a familiar Bioconductor user experience to manage bulk and
single-cell quantitative data across different assay levels (such as
peptide spectrum matches, peptides and proteins) in a coherent and
tractable way. These three packages rely on MsCoreUtils for efficient
implementations of commonly used algorithms, designed to be re-used by
other R packages.&lt;/p&gt;

&lt;p&gt;In contrast to a monolithic software design, the RforMassSpectrometry
ecosystem enables to build customised, modular, and reproducible
analysis workflows. Future proteomics-related development will focus
on improved data structures and analysis methods, better support for
third-party data import, and better interoperability with other open
source software including a direct integration with Python MS
libraries.&lt;/p&gt;

&lt;h4 id=&quot;publication&quot;&gt;Publication&lt;/h4&gt;

&lt;p&gt;Loriot, Axelle, Julie Devis, Laurent Gatto, and Charles De
Smet. 2025. “A Survey of Human Cancer-Germline Genes: Linking X
Chromosome Localization, DNA Methylation and Sex-Biased Expression in
Early Embryos.” bioRxiv. https://doi.org/10.1101/2025.05.19.654804.&lt;/p&gt;

&lt;h2 id=&quot;mass-spectrometry-based-proteomicsmetabolomics-and-bioconductor-from-the-early-days-to-2024&quot;&gt;Mass spectrometry-based proteomics/metabolomics and Bioconductor: from the early days to 2024&lt;/h2&gt;

&lt;p&gt;Author(s): Laurent Gatto, Sebastien Gibb, Johannes Rainer&lt;/p&gt;

&lt;p&gt;The Bioconductor project has always been best known for its
state-of-the-art infrastructure for genomics data analysis and
comprehension. Starting with packages for microarrays, and later RNA
Sequencing, transcriptomics has been the most visible part of the
Bioconductor iceberg. Proteomics has been part of the early days of
the project, with the PROcess package to process SELDI-TO-MS data,
that was cited/documented in the very first Bioconductor paper (2004)
and monograph (2005). Proteomics and metabolomics have grown
substantially since these early days, both in terms of packages,
community contributions, and user base, culminating in the R for Mass
Spectrometry initiative. In this short talk, I will provide an
overview of how the mass spectrometry-based proteomics and
metabolomics infrastructure has evolved since the early days, and what
the goals for the future are.&lt;/p&gt;

&lt;h2 id=&quot;comprehensive-and-standardised-workflow-for-single-cell-proteomics-data-analysis-using-scp-and-scplainer&quot;&gt;Comprehensive and standardised workflow for single-cell proteomics data analysis using scp and scplainer.&lt;/h2&gt;

&lt;p&gt;Author(s): Samuel Grégoire, Christophe Vanderaa and Laurent Gatto&lt;/p&gt;

&lt;p&gt;Single cell proteomics (SCP) via mass spectrometry has become
achievable thanks to technological advancements innovated by various
research teams, resulting in a broad landscape of cutting-edge
methodologies [1]. While this progress has enabled the measurement of
thousands of proteins at the single cell resolution, it has also
resulted in various complex and divergent analysis workflows. To
efficiently tackle biologically relevant questions, the field of SCP
must confront the challenges inherent in SCP data. SCP data are
particularly prone to technical variations, batch effects, and missing
values [2].&lt;/p&gt;

&lt;p&gt;To address these challenges, our team has developed several tools
packaged within the scp R/Bioconductor package. The latest addition is
the scplainer approach, which offers a standardised approach grounded
in linear modeling. scplainer provides key tools to extracts
meaningful insights from SCP data through variance analysis,
differential abundance analysis and component analysis, while
streamlining the visualisation of the results. Integrated into the scp
package, scplainer leverages QFeatures and SingleCellExperiment
infrastructures, providing a comprehensive interface with numerous
data processing functions. In addition, we also developed scpdata, a
package containing standardised and annotated single-cell proteomics
data, which we are still actively extending.&lt;/p&gt;

&lt;p&gt;In this work, we provide a comprehensive overview of SCP data
processing using the scp package, starting from the output table
generated by the search engine software through data processing,
modeling and downstream analyses.&lt;/p&gt;

&lt;h4 id=&quot;references-2&quot;&gt;References&lt;/h4&gt;

&lt;p&gt;[1] Petrosius et Schoof (2023), &lt;em&gt;Recent advances in the field of
single-cell proteomics&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;[2] Vanderaa et Gatto (2021), &lt;em&gt;Replication of single-cell proteomics
data reveals important computational challenges&lt;/em&gt;.&lt;/p&gt;

&lt;h4 id=&quot;publication-1&quot;&gt;Publication&lt;/h4&gt;

&lt;p&gt;Grégoire, Samuel, Christophe Vanderaa, Sébastien Pyr dit Ruys,
Christopher Kune, Gabriel Mazzucchelli, Didier Vertommen, and Laurent
Gatto. 2024. “Standardized Workflow for Mass-Spectrometry-Based
Single-Cell Proteomics Data Processing and Analysis Using the Scp
Package.” In Methods in Molecular Biology, 177–220. Methods in
Molecular Biology (Clifton, N.J.). New York, NY: Springer US
(&lt;a href=&quot;https://arxiv.org/abs/2310.13598&quot;&gt;pre-print&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&quot;scpgui-and-qfeaturesgui-graphical-interfaces-for-single-cell-and-bulk-proteomics&quot;&gt;scpGUI and QFeaturesGUI: Graphical Interfaces for Single-Cell and Bulk Proteomics&lt;/h2&gt;

&lt;p&gt;Author(s): Léopold Guyot, Christophe Vanderaa, Laurent Gatto&lt;/p&gt;

&lt;p&gt;In recent years, significant advancements have been made in the field
of proteomics data analysis. However, the complexity of workflows
involving programming languages such as R and Python can pose
challenges for practitioners without any coding backgrounds. To
address this issue, we introduce two user-friendly packages: &lt;em&gt;scpGUI&lt;/em&gt;
and &lt;em&gt;QFeaturesGUI&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;scpGUI&lt;/em&gt; is tailored for downstream visual analysis in single-cell
proteomics, using the outcomes of the popular package &lt;em&gt;scp&lt;/em&gt;. Developed
using &lt;em&gt;Shiny&lt;/em&gt; and built upon the elegant and efficient &lt;em&gt;iSEE&lt;/em&gt; suite,
&lt;em&gt;scpGUI&lt;/em&gt; offers interactive data visualisations specifically crafted
for single-cell proteomics downstream analysis. The app’s
interactivity helps users in comprehending their results through
various visualisations.&lt;/p&gt;

&lt;p&gt;Similarly, &lt;em&gt;QFeaturesGUI&lt;/em&gt; is designed for single-cell and bulk
proteomics analysis, capitalising on the strengths of the &lt;em&gt;QFeatures&lt;/em&gt;
package. Providing a suite of &lt;em&gt;Shiny&lt;/em&gt; apps, &lt;em&gt;QFeaturesGUI&lt;/em&gt; offers
comprehensive tools for data import and basic processing steps,
simplifying pre-treatment of quantitative proteomics data. Its modular
design ensures flexibility and adaptability to specific
requirements. These apps also enhance transparency and facilitate
replication by generating reproducible R code.&lt;/p&gt;

&lt;p&gt;Together, &lt;em&gt;scpGUI&lt;/em&gt; and &lt;em&gt;QFeaturesGUI&lt;/em&gt; offer valuable support for
proteomics data analysis. By combining user-friendly graphical
interfaces with powerful back-end tools, they make advanced analysis
techniques more accessible to the wider proteomics community.&lt;/p&gt;

&lt;h2 id=&quot;batch-effect-detection-and-visual-quality-control-with-cytomds-a-bioconductor-package-for-low-dimensional-representation-of-distances-between-cytometry-samples&quot;&gt;Batch effect detection and visual quality control with &lt;em&gt;CytoMDS&lt;/em&gt;, a Bioconductor package for low dimensional representation of distances between cytometry samples&lt;/h2&gt;

&lt;p&gt;Author(s): Philippe Hauchamps,Dan Lin,Laurent Gatto&lt;/p&gt;

&lt;p&gt;Quality Control (QC) of samples is an essential preliminary step in
cytometry data analysis. Notably, identification of potential batch
effects and sample outliers is paramount, to avoid mistaking these
effects for true biological signal in downstream analyses. However,
this task can prove to be delicate and tedious, especially for
datasets with many samples.&lt;/p&gt;

&lt;p&gt;Here, we present &lt;em&gt;CytoMDS&lt;/em&gt;, a Bioconductor package implementing a
dedicated method for low dimensional representation of cytometry
samples composed of marker expressions for up to millions of single
cells. This method combines Earth Mover’s Distance (EMD) [1] for
assessing dissimilarities between multidimensional distributions, and
Multi Dimensional Scaling (MDS) [2] for low dimensional projection of
distances. Some additional visual tools, both for projection quality
diagnosis and for user interpretation of the projection axes, are also
provided in the package.&lt;/p&gt;

&lt;p&gt;We demonstrate the strengths and advantages of CytoMDS for QC of
cytometry data on real biological datasets, revealing the presence of
low quality samples, batch effects and biological signal between
sample groups.&lt;/p&gt;

&lt;h4 id=&quot;references-3&quot;&gt;References&lt;/h4&gt;

&lt;p&gt;[1] Haidong Yi and Natalie Stanley. 2022. “CytoEMD: Detecting and
Visualizing between-Sample Variation in Relation to Phenotype with
Earth Mover’s Distance.” In Proceedings of the 13th ACM International
Conference on Bioinformatics, Computational Biology and Health
Informatics, 1–14. BCB ’22 28. New York, NY, USA: Association for
Computing Machinery.&lt;/p&gt;

&lt;p&gt;[2] Jan de Leeuw and Patrick Mair. 2009. “Multidimensional Scaling
Using Majorization: SMACOF in R.” Journal of Statistical Software 31
(3): 1–30.&lt;/p&gt;

&lt;h4 id=&quot;publication-2&quot;&gt;Publication&lt;/h4&gt;

&lt;p&gt;Hauchamps, Philippe, Simon Delandre, Stéphane T. Temmerman, Dan Lin,
and Laurent Gatto. 2025. “Visual Quality Control with CytoMDS, a
Bioconductor Package for Low Dimensional Representation of Cytometry
Sample Distances.” Cytometry. Part A: The Journal of the International
Society for Analytical Cytology,
March. https://doi.org/10.1002/cyto.a.24921
(&lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2024.07.01.601465v2&quot;&gt;pre-print&lt;/a&gt;).&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="conference" /><category term="software" /><category term="talks" /><category term="CBIO" /><summary type="html">The lab is preparing for EuroBioc2025 in Barcelona, and I realise that I forgot to post our contributions to EuroBioc2024 in Oxford. So here they are (with papers that were published in the meantime).</summary></entry><entry><title type="html">6 Questions We Should Ask Before Adopting a New Technology</title><link href="https://lgatto.codeberg.page/neil-postman-six-question-technology/" rel="alternate" type="text/html" title="6 Questions We Should Ask Before Adopting a New Technology" /><published>2025-05-18T00:00:00+02:00</published><updated>2025-05-18T00:00:00+02:00</updated><id>https://lgatto.codeberg.page/neil-postman-six-question-technology</id><content type="html" xml:base="https://lgatto.codeberg.page/neil-postman-six-question-technology/">&lt;p&gt;I stumbled across &lt;a href=&quot;https://tldr.nettime.org/@_elena@mastodon.social/114522680510446087&quot;&gt;this
message&lt;/a&gt;
on mastodon, that directed me to 6 questions what one should ask
before adopting a new technology. These questions where posed by &lt;a href=&quot;https://en.wikipedia.org/wiki/Neil_Postman&quot;&gt;Neil
Postman&lt;/a&gt;, a writer and
academic quite some time ago. A reply in that same thread add a link
to a 1988 &lt;a href=&quot;https://youtu.be/dBlfPhsrvtw?si=RcaLON8mKESvh_hI&quot;&gt;talk&lt;/a&gt;
where he expands one them.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What is the problem that this new technology addresses?&lt;/li&gt;
  &lt;li&gt;Who’s problem is it?&lt;/li&gt;
  &lt;li&gt;What problems do we create by solving this problem?&lt;/li&gt;
  &lt;li&gt;Which people and which institutions might be harmed by a
technological solution?&lt;/li&gt;
  &lt;li&gt;What changes in language occur as the result of technological
change?&lt;/li&gt;
  &lt;li&gt;Which people and which institutions will acquire economic and
political power when this technology is adopted?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions and the whole talk are acutely relevant today, in the
light of generative artificial intelligence, and how it is imposed on
everyone.&lt;/p&gt;

&lt;p&gt;Whenever I hear about about advantages or usages of generative AI, I
always think about the problem they supposedly address, and whether
they actually really solve it rather than the symptoms, and what
would be needed to actually solve the problem. And unsurprisingly,
generative AI hardly ever solves any real problem when it comes to
research or education. The latter is also addressed in Neil Postman’s
talk above.&lt;/p&gt;

&lt;p&gt;Here are two books that are on my reading list, that are relevant to
the talk and topic:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://thecon.ai/&quot;&gt;The AI Con&lt;/a&gt; - How to Fight Big Tech’s Hype and
Create the Future We Want, by Alex Hanna and Emily M. Bender&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://bookshop.org/p/books/the-mechanic-and-the-luddite-a-ruthless-criticism-of-technology-and-capitalism-jathan-sadowski/21312179&quot;&gt;The Mechanic and the
Luddite&lt;/a&gt; -
A Ruthless Criticism of Technology and Capitalism, by Jathan
Sadowski.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is another set of questions, specifically about AI/LLMs, that are
proposed by Dr Gwen Varley in her &lt;a href=&quot;https://www.youtube.com/watch?v=1ON-FJHq9aM&quot;&gt;Ethics of ChatGPT and
AI&lt;/a&gt; video. The question
come towards the end the video (31:18), but I suggest you listen to
the whole thing.&lt;/p&gt;

&lt;p&gt;Whenever we face a new technology, especially when branded as new and
inevitable by those that sell it, we should ask ourselves:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Is it actually new? In what way, specifically?
    &lt;ul&gt;
      &lt;li&gt;If it’s not new, &lt;strong&gt;who&lt;/strong&gt; is trying to present it as novel, and
why? What is the narrative? *Whose** technology are they
attempting to rebrand, and why?&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Who&lt;/strong&gt; (if anyone) was asking for this technology?
    &lt;ul&gt;
      &lt;li&gt;Is it a hammer in search of nails?
        &lt;ul&gt;
          &lt;li&gt;Does it have a discernible business model?&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Who&lt;/strong&gt; benefits from it? How do they benefit?
    &lt;ul&gt;
      &lt;li&gt;(Profits? Political power? Shifts in social norms?)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;What are the costs of the technology? &lt;strong&gt;Who&lt;/strong&gt; bears those costs?
    &lt;ul&gt;
      &lt;li&gt;Includes economic bit also environmental and social costs.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;What resources (including labour - &lt;strong&gt;whose?&lt;/strong&gt;) are powering this
technology? Are any of these resources being stolen or gained
through exploitation/&lt;/li&gt;
  &lt;li&gt;How is the introduction of this technology similar to (or different
from) historical examples of past technologies? What can we learn
from this?
    &lt;ul&gt;
      &lt;li&gt;Does the technology claim to be ‘neutral’ or ‘unbiaised’?
        &lt;ul&gt;
          &lt;li&gt;Technology is a mirror (of the values their creator)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name>Laurent Gatto</name></author><category term="AI" /><category term="education" /><category term="technology" /><summary type="html">I stumbled across this message on mastodon, that directed me to 6 questions what one should ask before adopting a new technology. These questions where posed by Neil Postman, a writer and academic quite some time ago. A reply in that same thread add a link to a 1988 talk where he expands one them.</summary></entry><entry><title type="html">On cats, farts and parrots.</title><link href="https://lgatto.codeberg.page/ia-irss/" rel="alternate" type="text/html" title="On cats, farts and parrots." /><published>2024-05-30T00:00:00+02:00</published><updated>2024-05-30T00:00:00+02:00</updated><id>https://lgatto.codeberg.page/ia-irss</id><content type="html" xml:base="https://lgatto.codeberg.page/ia-irss/">&lt;p&gt;I was invited to contribute to a
&lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:activity:7201099969779351552/&quot;&gt;seminar/discussion&lt;/a&gt;
on AI, and using language models in research. These are the notes I
prepared my short presentation. I am not presenting anything new, or
original - I will merely be sharing what I consider being the main
take home messages from information I have been collecting since April 2023.
I also realised that these don’t seem to be widely known among my
immediate peers.&lt;/p&gt;

&lt;h1 id=&quot;who-am-i&quot;&gt;Who am I&lt;/h1&gt;

&lt;p&gt;I feel it is important to say a few words to put my talk into
perspective:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I am a &lt;a href=&quot;https://lgatto.codeberg.page/about/&quot;&gt;Computational Biologist&lt;/a&gt;,
heading the &lt;a href=&quot;https://lgatto.codeberg.page/cbio-lab/&quot;&gt;CBIO lab&lt;/a&gt; at the
&lt;a href=&quot;https://www.deduveinstitute.be/research-group/laurent-gatto&quot;&gt;de Duve
Institute&lt;/a&gt;,
&lt;a href=&quot;https://uclouvain.be/&quot;&gt;UCLouvain&lt;/a&gt;. We occasionally use/develop of
DL in the CBIO lab as part of our research. I am not an expert in
AI.&lt;/li&gt;
  &lt;li&gt;I have never used ChatGPT or any similar tools, and I’ll tell you
why! I however actively follow discussions on AI and its impact on
society.&lt;/li&gt;
  &lt;li&gt;I will focus on ChatGTP and similar LMs that are released by large
and very powerful commercial entities for wide public consumption. I
am not focusing on application of DL, LM, or AI in general in
research.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;reference&quot;&gt;Reference&lt;/h1&gt;

&lt;p&gt;If there’s one reference to remember, it is this seminal paper from
March 2021, published in the Proceedings 2021 ACM Conference on
Fairness, Accountability, and Transparency (FAccT ‘21)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://dl.acm.org/doi/10.1145/3442188.3445922&quot;&gt;On the Dangers of Stochastic Parrots: Can Language Models Be Too
Big?&lt;/a&gt;&lt;/strong&gt; by &lt;a href=&quot;https://faculty.washington.edu/ebender/&quot;&gt;Emily
M. Bender&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Timnit_Gebru&quot;&gt;Timnit
Gebru&lt;/a&gt;, &lt;a href=&quot;https://linguistics.washington.edu/people/angelina-y-mcmillan-major&quot;&gt;Angelina
McMillan-Major&lt;/a&gt;,
&lt;a href=&quot;http://www.m-mitchell.com/&quot;&gt;Shmargaret Shmitchell&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Emily Bender is a professor of computational linguistics at
Washington University. Angelina McMillan-Major is/was a PhD student
in her lab.&lt;/li&gt;
  &lt;li&gt;Timnit Gebru is one of the most well-known and respected Black
female scientists working in AI. She was a co-lead of Google’s
&lt;em&gt;ethical AI&lt;/em&gt; research team. In December 2020, her employment with
Google ended after Google management asked her to either withdraw
the paper before publication, or remove the names of all the Google
employees from the paper.&lt;/li&gt;
  &lt;li&gt;Margaret Mitchell was later also fired from Google.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More about the &lt;a href=&quot;https://en.wikipedia.org/wiki/Stochastic_parrot&quot;&gt;Stochastic
parrot&lt;/a&gt; paper here.&lt;/p&gt;

&lt;h1 id=&quot;when-can-i-use-chatgpt&quot;&gt;When can I use ChatGPT?&lt;/h1&gt;

&lt;p&gt;Following Yves Deville and Christine Jacqmot’s recommendations
(&lt;a href=&quot;https://oer.uclouvain.be/jspui/bitstream/20.500.12279/885.2/14/ChatGPT_UCL_2023_03_28_CC.pdf&quot;&gt;ChatGPT : Menace ou opportunité pour l’enseignement
supérieur&lt;/a&gt;,
March 2023):&lt;/p&gt;

&lt;h2 id=&quot;given-that&quot;&gt;Given that&lt;/h2&gt;

&lt;p&gt;LLMs have absolutely no notion of “true” or “false”, nor any
understanding of what it is asked.&lt;/p&gt;

&lt;h2 id=&quot;use-it-if&quot;&gt;Use it if&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;You don’t can about the validity of the results.&lt;/li&gt;
  &lt;li&gt;You are an expert in the field.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note: lots has been said about ChatGPT’s “occasional” hallucinations
(beware of the &lt;strong&gt;anthropomorphising&lt;/strong&gt; word here). They always
hallucinate. It just happens so that sometimes, what is made up, is
not wrong. I will come back to some of these points in the later
&lt;strong&gt;stochastic parrot&lt;/strong&gt; section.&lt;/p&gt;

&lt;h1 id=&quot;at-what-cost&quot;&gt;At what cost?&lt;/h1&gt;

&lt;p&gt;Many have tested ChatGPT. Some (&lt;a href=&quot;https://www.bbc.com/news/articles/c511x4g7x7jo&quot;&gt;New AI tools much hyped but not much
used, study says)&lt;/a&gt;
possibly make regular use of the free and/or the paid version. It
might be used for important or minor/mundane tasks. But at what costs?&lt;/p&gt;

&lt;h2 id=&quot;human-cost&quot;&gt;Human cost&lt;/h2&gt;

&lt;p&gt;Human cost is real and current. It is not a potential science-fiction
picture of AI vs humanity. Such a picture diminishes the current human
cost of AI, as is force-fed by big tech.&lt;/p&gt;

&lt;p&gt;Here are some investigations about worker exploitation at OpenAI and
Google with respect to the curation of AI-generated content:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://time.com/6247678/openai-chatgpt-kenya-workers/&quot;&gt;TIME&lt;/a&gt;:
OpenAI Used Kenyan Workers on Less Than $2 Per Hour.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.theguardian.com/technology/2023/aug/02/ai-chatbot-training-human-toll-content-moderator-meta-openai&quot;&gt;The
Guardian&lt;/a&gt;:
‘It’s destroyed me completely’: Kenyan moderators decry toll of
training of AI models.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.businessinsider.com/openai-kenyan-contract-workers-label-toxic-content-chatgpt-training-report-2023-1&quot;&gt;Business
Insider&lt;/a&gt;:
Kenyan Workers Paid $2/hr Labeled Horrific Content for OpenAI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fortune.com/2024/05/03/google-search-raters-wages-benefits-contractors-tech-ai-employment/&quot;&gt;Fortune&lt;/a&gt;:
I’m paid $14 an hour to rate AI-generated Google search
results. Subcontractors like me do key work but don’t get fair wages
or benefits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that this isn’t specific to ChatGPT. Similar workers exploitation
has been documented for Meta/Facebook reviewers from the Global South.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Already marginalised communities suffer the highest human cost.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;environmental-cost&quot;&gt;Environmental cost&lt;/h2&gt;

&lt;p&gt;Here are some relevant articles and illustrative quotes;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nature.com/articles/s42256-020-0219-9&quot;&gt;Nature Machine
Intelligence&lt;/a&gt;:
The carbon impact of artificial intelligence.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.technologyreview.com/2022/11/14/1063192/were-getting-a-better-idea-of-ais-true-carbon-footprint/&quot;&gt;technologyreview.com&lt;/a&gt;:
We’re getting a better idea of AI’s true carbon footprint.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nature.com/articles/s41558-022-01377-7&quot;&gt;Nature Climate
Change&lt;/a&gt;:
Aligning artificial intelligence with climate change mitigation.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nature.com/articles/d41586-024-00478-x&quot;&gt;nature.com&lt;/a&gt;:
Generative AI’s environmental costs are soaring - and mostly secret.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nature.com/articles/d41586-022-01983-7&quot;&gt;nature.com&lt;/a&gt;:
How to shrink AI’s ballooning carbon footprint.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.theguardian.com/commentisfree/article/2024/may/30/ugly-truth-ai-chatgpt-guzzling-resources-environment&quot;&gt;The
Guardian&lt;/a&gt;The
ugly truth behind ChatGPT: AI is guzzling resources at planet-eating
rates.&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Despite its name, the infrastructure used by the “cloud” accounts
for more global greenhouse emissions than commercial flights. In
2018, for instance, the 5bn YouTube hits for the viral song
Despacito used the same amount of energy it would take to heat
40,000 US homes annually.&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Furthermore, while minerals such as lithium and cobalt are most
commonly associated with batteries in the motor sector, they are
also crucial for the batteries used in datacentres. The extraction
process often involves significant water usage and can lead to
pollution, undermining water security. The extraction of these
minerals are also often linked to human rights violations and poor
labour standards. Trying to achieve one climate goal of limiting
our dependence on fossil fuels can compromise another goal, of
ensuring everyone has a safe and accessible water supply.&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.theguardian.com/technology/2023/jun/08/artificial-intelligence-industry-boom-environment-toll&quot;&gt;The
Guardian&lt;/a&gt;:
As the AI industry booms, what toll will it take on the environment?
(citing - &lt;a href=&quot;https://arxiv.org/abs/2211.02001&quot;&gt;Estimating the Carbon Footprint of BLOOM, a 176B
Parameter Language Model&lt;/a&gt;)&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;[Luccioni et al.] tallied the amount of energy used to train […]
Bloom, on a supercomputer; the energy used to manufacture the
supercomputer’s hardware and maintain its infrastructure; and the
electricity used to run the program once it launched. They found
that it generated about 50 metric tons of carbon dioxide emissions,
the equivalent of an individual taking about 60 flights between
London and New York.&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;blockquote&gt;
      &lt;p&gt;By contrast, limited publicly available data suggests about 500
metric tonnes of CO2 were produced just in the training of ChatGPT’s
GPT3 model 3 – the equivalent of over a million miles driven by
average gasoline-powered cars, the researchers noted.&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Even more unclear is the amount of water consumed in the creation
and use of various AI models. Data centers use water in evaporative
cooling systems to keep equipment from overheating. One
non-peer-reviewed study, led by researchers at UC Riverside,
estimates that training GPT3 in Microsoft’s state-of-the-art US data
centers could potentially have consumed 700,000 liters of
freshwater.&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://theconversation.com/ai-has-a-large-and-growing-carbon-footprint-but-there-are-potential-solutions-on-the-horizon-223488&quot;&gt;theconversation.com&lt;/a&gt;:
AI has a large and growing carbon footprint, but there are potential
solution on the horizon.&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Since the AI boom started in the early 2010s, the energy
requirements of AI systems known as large language models (LLMs) –
the type of technology that’s behind ChatGPT – have gone up by a
factor of 300,000. With the increasing ubiquity and complexity of
AI models, this trend is going to continue, potentially making AI
a significant contributor of CO₂ emissions. In fact, our current
estimates could be lower than AI’s actual carbon footprint due to
a lack of standard and accurate techniques for measuring
AI-related emissions.&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/ai-may-eventually-consume-a-quarter-of-americas-power-by-2030-warns-arm-ceo&quot;&gt;tomshardware.com&lt;/a&gt;:
AI may eventually consume a quarter of America’s power by 2030,
warns Arm CEO.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.bloomberg.com/news/articles/2024-05-15/microsoft-s-ai-investment-imperils-climate-goal-as-emissions-jump-30&quot;&gt;bloomberg.com&lt;/a&gt;:
Microsoft’s AI Investment Imperils Climate Goal As Emissions Jump
30%.&lt;/p&gt;

    &lt;p&gt;How ironic!!&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;“The company’s goal to be carbon negative by 2030 is harder to
reach, but President Brad Smith says the good AI can do for the
world will outweigh its environmental impact.”&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that this is also relevant for other cloud services, such as
video on demande (detail for
&lt;a href=&quot;https://theconversation.com/que-sait-on-des-impacts-environnementaux-de-la-video-en-ligne-lexemple-de-netflix-229955&quot;&gt;Netflix&lt;/a&gt;
here).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Already marginalised communities (will) suffer the highest
environmental cost.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;intellectual-property&quot;&gt;Intellectual property&lt;/h2&gt;

&lt;p&gt;Where does all that training data come from?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What about the credit and licensing of text, voice and images of
those that produced that data used for training.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;stochastic-parrot&quot;&gt;Stochastic parrot&lt;/h1&gt;

&lt;p&gt;I’ll borrow here directly from the paper, to highlight specific issues
with the vast amounts of data needed to train these large models, and
the (absence of) meaning output by the models.&lt;/p&gt;

&lt;h2 id=&quot;unfathomable-training-data&quot;&gt;Unfathomable training data&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Size doesn’t guarantee diversity: from initial participation, to
data filtering, the data reflect the hegemonic viewpoint.&lt;/li&gt;
  &lt;li&gt;Data is static data, but social views change.&lt;/li&gt;
  &lt;li&gt;Biais is encoding and amplified in the training data, in particular
stereotypical associations and negative sentiment towards specific
groups.&lt;/li&gt;
  &lt;li&gt;Large data and the lack of curation, documentation and
accountability lead to a major documentation debt, that can’t be
addressed after the fact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Systematic biais against already marginalised communities.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;stochastic-parrot-1&quot;&gt;Stochastic parrot&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Coherence is in the eye of the beholder&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;There is no meaning, no model of the world, no intend to communicate
in ChatGPT’s output.&lt;/li&gt;
  &lt;li&gt;Perceived “fluency” and “confidence” give the illusion of (implicit)
meaning and expertise.&lt;/li&gt;
  &lt;li&gt;We tend to mistake the coherence of LLM outputs for meaningful text
or expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;Contrary to how it may seem when we observe its output, an LM is a
system for haphazardly stitching together sequences of linguistic
forms it has observed in its vast training data, according to
probabilistic information about how they combine, but without any
reference to meaning: a stochastic parrot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is important to note that, in addition to highlight the risks, the
authors do propose paths forward for LM research and development.&lt;/p&gt;

&lt;h1 id=&quot;ai-contamination&quot;&gt;AI contamination&lt;/h1&gt;

&lt;p&gt;AI-generated text is already ubiquitous on-line, and it becomes more
and more difficult to identify AI-generated text. How long until
AI-generated (meaningless) text (including as answers in Q&amp;amp;A sites),
will be (or are) re-used for training.&lt;/p&gt;

&lt;p&gt;Outlets are terminating journalist contract to replace them by AI, and
independent writers are ‘competing’ against AI.&lt;/p&gt;

&lt;p&gt;We have all faced AI chat-bots in so-called help-desks. But &lt;a href=&quot;https://theconversation.com/ai-chatbots-are-intruding-into-online-communities-where-people-are-trying-to-connect-with-other-humans-229473&quot;&gt;AI
chatbots are intruding into online communities where people are trying
to connect with other humans&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Both of these responses were lies. That child does not exist and
neither do the camera or air conditioner. The answers came from an
artificial intelligence chatbot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;According to a Meta help page, Meta AI will respond to a post in a
group if someone explicitly tags it or if someone “asks a question
in a post and no one responds within an hour.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are prime examples of &lt;strong&gt;enshittification&lt;/strong&gt; (from
&lt;a href=&quot;https://en.wikipedia.org/wiki/Enshittification&quot;&gt;Wikipedia&lt;/a&gt;):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Enshittification is the pattern of decreasing quality observed in
online services and products such as Amazon, Facebook, Google
Search, Twitter, Bandcamp, Reddit, Uber, and Unity. The term was
used by writer Cory Doctorow in November 2022, and the American
Dialect Society selected it as its 2023 Word of the Year. Doctorow
has also used the term platform decay to describe the same concept.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;chatgpt-in-research&quot;&gt;ChatGPT in research&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Reproducibility? &lt;a href=&quot;https://www.nature.com/articles/d41586-024-01463-0&quot;&gt;AlphaFold3 — why did Nature publish it without its
code?&lt;/a&gt;&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;When AlphaFold2 was published, the full underlying code was made
accessible to all researchers. But AlphaFold3 comes with
‘pseudocode’ — a detailed description of what the code can do and
how it works.&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;blockquote&gt;
      &lt;p&gt;[…] for AlphaFold2, the DeepMind team worked with the European
Molecular Biology Laboratory’s European Bioinformatics Institute
[…] Now, DeepMind has partnered with Isomorphic Labs, a
London-based drug-development company owned by Google’s parent,
Alphabet. In addition to the non-availability of the full code,
there are other restrictions on the use of the tool — for example,
in drug development. There are also daily limits on the numbers of
predictions that individual researchers can perform.&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.theguardian.com/science/2023/jan/26/science-journals-ban-listing-of-chatgpt-as-co-author-on-papers&quot;&gt;Science journals ban listing of ChatGPT as co-author on
papers&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Paper writing (paper mills) and reviews (ChatGPT is
&lt;a href=&quot;https://www.nature.com/articles/d41586-024-01106-4&quot;&gt;polluting&lt;/a&gt;/&lt;a href=&quot;https://arxiv.org/abs/2405.02150&quot;&gt;influencing&lt;/a&gt;
peer review).&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;who-benefits-from-chatgtpai&quot;&gt;Who benefits from ChatGTP/AI?&lt;/h1&gt;

&lt;p&gt;AI, as a &lt;a href=&quot;https://www.helmut-schmidt.de/aktuelles/detail/die-rede-der-zukunftspreistraegerin&quot;&gt;hyped-up surveillance business
model&lt;/a&gt;,
force-fed by big tech:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In search engines (Google’s &lt;a href=&quot;https://www.platformer.news/google-ai-overviews-eat-rocks-glue-pizza/&quot;&gt;“AI
Overviews”&lt;/a&gt;).
Not the users.&lt;/li&gt;
  &lt;li&gt;Use your social media photos, posts, info, … to train AI. Not the
users.&lt;/li&gt;
  &lt;li&gt;Facial recognition. Not the citizens.&lt;/li&gt;
  &lt;li&gt;Microsoft Windows
&lt;a href=&quot;https://www.theverge.com/2024/5/20/24159258/microsoft-recall-ai-explorer-windows-11-surface-event&quot;&gt;Recall&lt;/a&gt;. Not
the employees.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Already marginalised communities likely to benefit the
least. Privileged communities to benefit the most.&lt;/strong&gt;&lt;/p&gt;

&lt;h1 id=&quot;what-about-regulations&quot;&gt;What about regulations?&lt;/h1&gt;

&lt;p&gt;In the light of what has been said so far, I think it is reasonable to
wonder whether regulations shouldn’t be put in place, to address
current and future impact and scope of the technologies put in place,
their concrete risks and harms, and their implications in terms of
systematic (private) data collection and use. Every major big tech
company is investing vast amounts of money in AI technologies, data
centres, and data collection. And they are demanding returns on these
investments.&lt;/p&gt;

&lt;p&gt;These same companies are actively lobbying to assure support in their
vested interested. This becomes clear when reviewing their
implications in various working groups and how AI is framed and
communicated to the public and various stakeholders.&lt;/p&gt;

&lt;p&gt;Here are two examples, one very recent from the Guardian, and one that
directly relates to the influence of Silicon Valley on academia:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.theguardian.com/technology/article/2024/may/28/openai-safety-council-chatgpt&quot;&gt;OpenAI forms safety council as it trains latest artificial
intelligence
model&lt;/a&gt;:
The safety committee is filled with company insiders, including Sam
Altman, the OpenAI CEO, and its chairman, Bret Taylor, and four
OpenAI technical and policy experts. It also includes the board
members Adam D’Angelo, who is the CEO of Quora, and Nicole Seligman,
a former Sony general counsel.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://theintercept.com/2019/12/20/mit-ethical-ai-artificial-intelligence/&quot;&gt;How Big Tech Manipulates Academia to Avoid
Regulation&lt;/a&gt;:
The discourse of “ethical AI” was aligned strategically with a
Silicon Valley effort seeking to avoid legally enforceable
restrictions of controversial technologies.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;conclusions&quot;&gt;Conclusions&lt;/h1&gt;

&lt;p&gt;Despite some notable failures with ‘AI for public consumption’ , one
can’t ignore that there there are also success stories, and possibly
still untapped opportunities. But …&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;AI can be kind of useful, but I’m not sure that a “kind of useful”
tool justifies the harm.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://www.citationneeded.news/ai-isnt-useless/&quot;&gt;AI isn’t useless. But is it worth
it?&lt;/a&gt;, Molly White&lt;/p&gt;

&lt;h1 id=&quot;update-2024-10-10&quot;&gt;Update (2024-10-10)&lt;/h1&gt;

&lt;p&gt;There are many more relevant articles that could be added and
referenced here, too many for me to keep up with. But the following
&lt;a href=&quot;https://aus.social/@crumbleneedy/113280973349444816&quot;&gt;Mastodon post&lt;/a&gt;
by &lt;em&gt;sneedy maccreedy&lt;/em&gt; and article it links to seem particularly
relevant:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;hinton getting the nobel is a good time to re-read @emilymbender ‘s
excellent piece on so-called ‘AI safety’ and different take on
hinton than you’re likely to see in the next few days&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The article is &lt;a href=&quot;https://medium.com/@emilymenonbender/talking-about-a-schism-is-ahistorical-3c454a77220f&quot;&gt;Talking about a ‘schism’ is
ahistorical&lt;/a&gt;
by Emily M. Bender (also cited above), documenting the phony shism
rhetoric of AI safety fantasy on one hand and very real AI ethics on
the other.&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="AI" /><category term="ChatGPT" /><category term="UCLouvain" /><summary type="html">I was invited to contribute to a seminar/discussion on AI, and using language models in research. These are the notes I prepared my short presentation. I am not presenting anything new, or original - I will merely be sharing what I consider being the main take home messages from information I have been collecting since April 2023. I also realised that these don’t seem to be widely known among my immediate peers.</summary></entry><entry><title type="html">Podcasts du LLL: Et si on oubliait les notes?</title><link href="https://lgatto.codeberg.page/oublions-les-notes/" rel="alternate" type="text/html" title="Podcasts du LLL: Et si on oubliait les notes?" /><published>2024-04-24T00:00:00+02:00</published><updated>2024-04-24T00:00:00+02:00</updated><id>https://lgatto.codeberg.page/oublions-les-notes</id><content type="html" xml:base="https://lgatto.codeberg.page/oublions-les-notes/">&lt;p&gt;Deuxième billet en français référençant un podcast du &lt;a href=&quot;https://uclouvain.be/fr/etudier/lll/a-propos.html&quot;&gt;Louvain
Learning Lab&lt;/a&gt; (le
premier est &lt;a href=&quot;https://lgatto.codeberg.page/podcast-eval/&quot;&gt;ici&lt;/a&gt;). Cette
fois, je fais un peu d’auto-promotion:&lt;/p&gt;

&lt;p&gt;Repensons l’évaluation… &lt;a href=&quot;https://www.podcastics.com/podcast/episode/et-si-on-oubliait-les-notes-286178/&quot;&gt;Et si on oubliait les
notes?&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Dans cet épisode, nous sortons des sentiers battus…&lt;/p&gt;

  &lt;p&gt;Avec mes invités nous questionnons le rapport entre les notes et
l’apprentissage. Nous ouvrons la possibilité de se défaire des notes
le plus longtemps possible… pour poursuivre un but d’apprentissage
plutôt que de performance.&lt;/p&gt;

  &lt;p&gt;Pour ces échanges, j’ai eu le plaisir d’inviter Laurent Gatto,
Professeur à l’UCLouvain ainsi que Pascal Wilhelm et Frank van den
Berg de l’Université de Twente aux Pays-Bas.&lt;/p&gt;

  &lt;p&gt;Merci au Louvain Learning Lab de nous permettre de consacrer du
temps à cette collection.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Et merci à Emilie Malcourant d’avoir préparer ce podcast!&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="teaching" /><category term="education" /><category term="UCLouvain" /><summary type="html">Deuxième billet en français référençant un podcast du Louvain Learning Lab (le premier est ici). Cette fois, je fais un peu d’auto-promotion:</summary></entry><entry><title type="html">HUPO ECR Online Panel Discussion - Getting recognised for your work</title><link href="https://lgatto.codeberg.page/ecr-recognition/" rel="alternate" type="text/html" title="HUPO ECR Online Panel Discussion - Getting recognised for your work" /><published>2024-02-28T00:00:00+01:00</published><updated>2024-02-28T00:00:00+01:00</updated><id>https://lgatto.codeberg.page/ecr-recognition</id><content type="html" xml:base="https://lgatto.codeberg.page/ecr-recognition/">&lt;p&gt;The HUPO Early Career Researcher (ECR) committee has organised a
discussion panel on &lt;em&gt;Getting recognised for your work&lt;/em&gt; and have asked
me to participate - thank you! I am always keen on such events,
organised by and for ECRs.&lt;/p&gt;

&lt;h2 id=&quot;introductions&quot;&gt;Introductions&lt;/h2&gt;

&lt;p&gt;The first part of the panel is a short 5-minute introduction of the
panellists, including &lt;a href=&quot;https://www.malakerlab.com/&quot;&gt;Prof Stacy
Malaker&lt;/a&gt; from Yale University and &lt;a href=&quot;https://www.ebi.ac.uk/people/person/juan-vizcaino/&quot;&gt;Dr
Juan Antonio
Vizcaino&lt;/a&gt; from the
EMBL-EBI and myself.&lt;/p&gt;

&lt;p&gt;I prepared this career flow chart as a visual aid:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2024-ecr-recognition-careerpath.png&quot; alt=&quot;Career path&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I earned my PhD in 2006, from the &lt;a href=&quot;https://www.ulb.be/&quot;&gt;Free University of
Brussels&lt;/a&gt; (ULB). My PhD work focused on the
evaluation of different types of evolutionary genetic markers to
study cetaceans phylogeny.&lt;/li&gt;
  &lt;li&gt;During my PhD (probably around 2004 or so), when my work and
interests shifted toward bioinformatics, I started a part-time
degree in computer science at the &lt;a href=&quot;https://unamur.be/&quot;&gt;University of
Namur&lt;/a&gt;. That lasted until I left Belgium for the
UK in 2010, after completing all my exams, but before finishing my
masters project - I never graduated.&lt;/li&gt;
  &lt;li&gt;After my PhD, I worked for 3 years in industry, in a small company
(we probably were about 15 employees). I didn’t see much point in
continuing in academia at that point, considering my experience so
far and my personal situation. The environment and general
atmosphere was very much like an academic lab, with many more
collaborations within the team, and clear and common
objectives. This goal-oriented work environment was a very
refreshing experience that has been influential for the next steps
of my career. At some point, I felt I was starting to run in circles
and got a chance to move back to academia, at the &lt;a href=&quot;https://www.cam.ac.uk/&quot;&gt;University of
Cambridge&lt;/a&gt; nonetheless.&lt;/li&gt;
  &lt;li&gt;In 2010, I started a post-doctoral research associate (PDRA)
position in the &lt;a href=&quot;https://proteomics.bio.cam.ac.uk/&quot;&gt;Cambridge Centre for
Proteomics&lt;/a&gt;, working on mass
spectrometry-based proteomics.&lt;/li&gt;
  &lt;li&gt;In 2013, I got promoted to senior research associate (SRA), which
allowed me to earn some grants as main PI and develop a small
research team.&lt;/li&gt;
  &lt;li&gt;In 2018, I joined the
&lt;a href=&quot;https://uclouvain.be/fr/index.html&quot;&gt;UCLouvain&lt;/a&gt; as a professor of
bioinformatics. I teach in the &lt;a href=&quot;https://uclouvain.be/fr/facultes/fasb&quot;&gt;faculty of pharmacy and biomedical
sciences&lt;/a&gt; (FASB) and run the
CBIO &lt;a href=&quot;https://lgatto.codeberg.page/cbio-lab/&quot;&gt;computational research
group&lt;/a&gt; in the &lt;a href=&quot;https://www.deduveinstitute.be/&quot;&gt;de Duve
Institute&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An interesting fact is that I started working on DNA during my PhD,
moved on with RNA in the private company, and since moving back to
academia, I have been focusing on proteins: my career followed the
main path of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology&quot;&gt;central dogma of molecular
biology&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To give more context to my career path, I also highlight some other
activities and interests, that have guided and supported my academic
activities.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I started to realise the importance of open and reproducible
research around 2010, both with respect to the rigour of doing
research, but also in the light of the (at times) &lt;a href=&quot;http://bulliedintobadscience.org/&quot;&gt;oppressive and
restrictive global research
environment&lt;/a&gt; ECR have to
endure. The desire for others to benefit from my research by making
it as open, collaborative and reproducible as possible, and being
&lt;a href=&quot;https://lgatto.codeberg.page/open-and-rr-2/&quot;&gt;vocal about it&lt;/a&gt;, has
followed me since then.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;a href=&quot;https://bioconductor.org/&quot;&gt;Bioconductor project&lt;/a&gt; has been
instrumental for me. It has allowed me over the years to meet and be
influenced by outstanding scientists, and has offered an
international environment in which I was able to grow and
flourish. I published my first (now retired) &lt;a href=&quot;https://bioconductor.org/packages/3.12/bioc/html/yaqcaffy.html&quot;&gt;Bioconductor
package&lt;/a&gt;
around 2007 (Bioconductor 2.2 and R 2.7), and many more followed. I
am a Bioconductor package reviewer, a member of the European
Bioconductor (EuroBioc) conference organisation committee (I was a
local organiser for a handful EuroBioc conferences in Cambridge, in
2019 in Brussels, and in &lt;a href=&quot;https://eurobioc2023.bioconductor.org/&quot;&gt;2023 in
Ghent&lt;/a&gt;), have been part
until recently of the &lt;a href=&quot;https://bioconductor.org/about/code-of-conduct/&quot;&gt;Code of
Conduct&lt;/a&gt; committee,
am part of the social media working group, I co-lead the &lt;a href=&quot;https://bioconductor.org/help/education-training/&quot;&gt;Teaching
committee&lt;/a&gt;, am
since 2018 member of the &lt;a href=&quot;https://bioconductor.org/about/technical-advisory-board/&quot;&gt;Technical Advisory
Board&lt;/a&gt;,
and co-created, in 2021, the &lt;a href=&quot;https://bioconductor.org/about/european-bioconductor-society/&quot;&gt;European Bioconductor
Society&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;recognition&quot;&gt;Recognition&lt;/h2&gt;

&lt;p&gt;The panellists were also asked to comment on how they have been
recognised for their work, with a particular emphasis their time as
ECRs. This is of course very subjective, and I’m not sure if my answer
will reflect how I have been recognised (assuming I have), or how I
hope I have been. I will also try to look beyond papers, the obvious
academic outputs - without those, there is little chance to get
academic recognition. This is of course a major problem, as there’s
much more to research than papers:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;An article about computational science in a scientific publication
is not the scholarship itself, it is merely advertising of the
scholarship. The actual scholarship is the complete software
development environment and that complete set of instructions that
generated the figures.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[Buckheit and Donoho 1995, after Claerbout]&lt;/p&gt;

&lt;p&gt;I think I’m known for the computational development and applications
in spatial (2010…) and single-cell proteomics (2018…), my efforts
to produce open and reproducible research, open and collaborative
software development, my R/Bioconductor contributions (some packages
have been around for since 2010) as well as my involvement in
teaching, such as international workshops (for example the mythical -
for me at least - Bioconductor &lt;a href=&quot;https://csama2024.bioconductor.eu/&quot;&gt;CSAMA
course&lt;/a&gt; workshop).&lt;/p&gt;

&lt;p&gt;One noteworthy aspect of my publication strategy, that highlights my
efforts for openness and reproducibility, is the workflow that
typically starts with the release of the software (more often than not
after review, on Bioconductor), then the publication of a pre-print
with code to reproduce the analyses and, eventually, a peer-reviewed
paper.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2024-ecr-recognition-pubworkflow.png&quot; alt=&quot;open software, pre-print and paper publication workflow&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I think I have gained some reputation as someome having expertise in
computational quantitative proteomics, including demonstrable
&lt;em&gt;technical skills&lt;/em&gt;, in addition to more standard &lt;em&gt;scientific/academic
output&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In terms of recognition, I suppose that invitations to give talks (for
scientific outputs), teach at workshops (pedagogical and technical
skills) and to submit papers are obvious goals. Being recognised for
my open and collaborative contributions with a &lt;a href=&quot;https://bioconductor.org/about/awards/&quot;&gt;Bioconductor community
award&lt;/a&gt; is one of my proudest
moments. High on the list are also the
&lt;a href=&quot;https://lgatto.codeberg.page/msnbase-contribs/&quot;&gt;many&lt;/a&gt;
&lt;a href=&quot;https://lgatto.codeberg.page/msnbase-contribs-2/&quot;&gt;contributions&lt;/a&gt; that the
&lt;a href=&quot;https://bioconductor.org/packages/release/bioc/html/MSnbase.html&quot;&gt;MSnbase&lt;/a&gt;
package benefited from - some of these indirectly initiated the
collaborations that lead to the creation of the &lt;a href=&quot;https://www.rformassspectrometry.org/&quot;&gt;R for Mass
Spectrometry&lt;/a&gt; initiative.&lt;/p&gt;

&lt;p&gt;But what matters the most, in my eyes, and what in the end is the most
meaningul recognition, are the (shared) &lt;strong&gt;values&lt;/strong&gt; that we promote
with the research we do, and the &lt;strong&gt;intrinsic motivation&lt;/strong&gt; that drive
us.&lt;/p&gt;

&lt;h2 id=&quot;questions&quot;&gt;Questions&lt;/h2&gt;

&lt;p&gt;We were also asked to prepare answers to three short questions. These
have been pre-determined by the HUPO ECR to get things going and give
us, the panellists, a chance to think about the comments we would like
to make.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When hiring a new postdoctoral researcher for your group, what are
the most important attributes for them to have on their CV? What do
you look for other than publication history?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are a couple of things I look for, and that I consider absolutely
essential, much more important than papers. Papers are only one of the
attributes that will help me assess the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Does the candidate’s skills match the project’s needs?&lt;/li&gt;
  &lt;li&gt;What are &lt;strong&gt;concrete signs of mastery&lt;/strong&gt;? I perform regular (and
constructive) appraisals with the researchers in my group, and one
question in that appraisal is “What do you want to become an expert
in?”. In a CV, I want to find what the candidate is an expert in,
whey they can teach me/bring to the lab.&lt;/li&gt;
  &lt;li&gt;I also need to see public/open &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;code&lt;/code&gt;, such as for example
&lt;strong&gt;active&lt;/strong&gt; Github/Gitlab profiles and repositories and
&lt;strong&gt;contributions&lt;/strong&gt; (to their or other’s code base).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course, last but not least, will the person be a good lab/team
member? It is of course very difficult (and arguably subjective) to
assess, but we (the lab) will be attentive to red flags pointing to
the contrary. In case of doubt, I will invite the candidate on site if
the interview (always with the whole group) was remote. I wouldn’t
want to take any risks that could harm the cohesion and well-being of
the group.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;How would you recommend that ECRs promote their work other than
research e.g., teaching, outreach, committee work? Is there anything
they can do other than add a line on their CV?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Yes, ‘add lines’ to your CV, but not at all costs. Be pragmatic! Not
need to run or teach workshops several time a year to demonstrate
that you have done some teaching. Don’t forget that your post-doc
years should be the most productive research-wise of your career!&lt;/li&gt;
  &lt;li&gt;Promote &lt;strong&gt;your research&lt;/strong&gt;, don’t be a vehicle for some else’s
research (typically your advisor), don’t limit yourself to merely
doing it. Show how you go the extra mile - for example by delivering
reproducible research.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Do things you like!&lt;/strong&gt; Nothing beats motivation when it comes to
convincing others that you are good at what you do.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;How much does networking (either via social media or in-person
meetings) play a role in promoting your work?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is &lt;strong&gt;very important!&lt;/strong&gt; Networking are opportunities to learn,
share, discuss, and make yourself known, … Networking can be hard
though, so don’t be too hard on yourselves. It takes time.&lt;/p&gt;

&lt;p&gt;Here’s a simple example illustrating the importance of building a
network: I happily spare myself organising and running interviews when
I can find a candidate in my direct or indirect network.&lt;/p&gt;

&lt;p&gt;To build that network, there’s of course the in-person or remote
conferences and workshops, there may be social media (might not be for
everybody), but also Github issues and code and documentation
contributions and typo fixes. The large and small contributions are
very concrete examples that address the first question above.&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="ECR" /><category term="communication" /><summary type="html">The HUPO Early Career Researcher (ECR) committee has organised a discussion panel on Getting recognised for your work and have asked me to participate - thank you! I am always keen on such events, organised by and for ECRs.</summary></entry><entry><title type="html">The Grid poster, in R</title><link href="https://lgatto.codeberg.page/the-grid-in-r/" rel="alternate" type="text/html" title="The Grid poster, in R" /><published>2024-02-18T00:00:00+01:00</published><updated>2024-02-18T00:00:00+01:00</updated><id>https://lgatto.codeberg.page/the-grid-in-r</id><content type="html" xml:base="https://lgatto.codeberg.page/the-grid-in-r/">&lt;p&gt;The &lt;a href=&quot;https://museel.be/&quot;&gt;MuseeL&lt;/a&gt; is the
&lt;a href=&quot;https://uclouvain.be/&quot;&gt;UCLouvain&lt;/a&gt; University museum in
Louvain-la-Neuve. Highly recommended. It’s located to the lively
&lt;em&gt;place des sciences&lt;/em&gt;, in a nice brutalist style building, formerly the
science university library. If you ever spend some time in
Louvain-la-Neuve, do spare a couple of hours to visit it.&lt;/p&gt;

&lt;p&gt;As an academic and an ‘amis du musée’, I can get in for free, and
sometimes enjoy the quiet and rather unique atmosphere to get some
work. The previous exhibition, named &lt;a href=&quot;https://museel.be/fr/evenement/visite-guidee/decouvrir-lexposition-grid-0&quot;&gt;The
Grid&lt;/a&gt;,
was dedicated to the use of a grid in science. The poster and book of
the exhibition, shown below, shows a grid, formed of smaller, slightly
irregular squares. I thought this was a funny example to reproduce in
R.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/grid-poster.jpg&quot; alt=&quot;The Grid poster&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The first thing I need is the be able to draw squares. The
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;plotSquare()&lt;/code&gt; function below plots on of width &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;width&lt;/code&gt; at positions
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;x&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;y&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;plotSquare&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x1&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y1&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x2&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x1&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y2&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y1&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rect&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Assuming I want an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nsq&lt;/code&gt; by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nsq&lt;/code&gt; grid of squares, below, I define
that value to be 10, to draw a total of 100 squares.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;## Number of squares&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nsq&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I also want some jitter, i.e. some random displacements from a perfect
10 by 10 alignment, set by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;amount&lt;/code&gt; variables.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;## amount of square jittering&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1.2&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Finally, I need to define how much space is dedicated to the border
between the squares.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;## border ratio&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ratio&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0.2&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Assuming that the grid will have a width and a height of 100
(arbitrary) unites, below I define the width &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sq_w&lt;/code&gt; of a square,
considering the number of squares and the space that is dedicated to
the border between squares. One I have the with of a square, I can
compute the width &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;border_w&lt;/code&gt; of the border between two squares.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;sq_w&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nsq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ratio&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;border_w&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nsq&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sq_w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nsq&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I can now compute the x and y position of my squares. Given that my
final grid is a square itself, these x and y positions apply to rows
and columns of squares.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;pos&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;seq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;border_w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;border_w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;length.out&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nsq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We can now produce the figure. I first define the margins of my plot
with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;par&lt;/code&gt; function: the margins have width 1 and outer
margins 0. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;plot()&lt;/code&gt; function doesn’t plot anything (`type = “n”),
no axes, no frame, no labels. It however sets a grid itself, ranging
from -2 to 100, to accommodate my squares and borders.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;par&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mar&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;rep&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;oma&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;rep&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;-2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;border_w&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;-2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;border_w&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;n&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xaxt&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;n&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;yaxt&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;n&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xlab&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ylab&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;frame.plot&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The last step is to place the squares. The x and y positions are
symmetrical, i.e defined by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pos&lt;/code&gt; variable above: the lines and
columns are &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pos[1]&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pos[2]&lt;/code&gt;, …, respectively, and the squares are
added line by line, starting at line at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pos[1]&lt;/code&gt;. A little amount of
noise (defined by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;amount&lt;/code&gt; above) is added to the actual x and y
position by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jitter()&lt;/code&gt; function.&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos_x&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;jitter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;rep&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nsq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos_y&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;jitter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plotSquare&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos_x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pos_y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sq_w&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The final output (with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;set.seed(123)&lt;/code&gt;), with the parameter above is
show here.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/grid123.png&quot; alt=&quot;The R Grid&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The full script is available
&lt;a href=&quot;https://gist.github.com/lgatto/4fa4b3a8a6668a6b755b47da40d8ca81&quot;&gt;here&lt;/a&gt;. The
fun part is of course to play with the parameters, which is left as an
exercise for the reader :-).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update 2025-04-07:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I can across this &lt;a href=&quot;https://mastodon.social/@safest_integer/114296256313964335&quot;&gt;mastodon
post&lt;/a&gt; with
this elegant code chunk to generate a similar figure:&lt;/p&gt;

&lt;div class=&quot;language-r highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;library&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tidyverse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;crossing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&amp;gt;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mutate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dx&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rnorm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1.5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dy&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rnorm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1.5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&amp;gt;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ggplot&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;geom_tile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;aes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dx&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
              &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;colour&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;black&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lwd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
              &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
              &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;m&quot;&gt;0.8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;show.legend&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;scale_fill_gradient&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;high&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;#9f025e&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;low&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;#f9c929&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;scale_y_reverse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theme_void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/images/grid-safest_integer.png&quot; alt=&quot;Grid, by use sagest_integer, via mastodon&quot; /&gt;&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="R" /><category term="UCLouvain" /><summary type="html">The MuseeL is the UCLouvain University museum in Louvain-la-Neuve. Highly recommended. It’s located to the lively place des sciences, in a nice brutalist style building, formerly the science university library. If you ever spend some time in Louvain-la-Neuve, do spare a couple of hours to visit it.</summary></entry><entry><title type="html">Podcasts du LLL: repensons l’évaluation</title><link href="https://lgatto.codeberg.page/podcast-eval/" rel="alternate" type="text/html" title="Podcasts du LLL: repensons l’évaluation" /><published>2024-02-17T00:00:00+01:00</published><updated>2024-02-17T00:00:00+01:00</updated><id>https://lgatto.codeberg.page/podcast-eval</id><content type="html" xml:base="https://lgatto.codeberg.page/podcast-eval/">&lt;p&gt;Une fois n’est pas coutume, un billet en français, pour attirer votre
attention sur les podcasts du LLL. Le LLL, ou &lt;a href=&quot;https://uclouvain.be/fr/etudier/lll/a-propos.html&quot;&gt;Louvain Learning
Lab&lt;/a&gt; accompagne
tous les acteurs et actrices de la formation de l’UCLouvain dans leurs
activités d’enseignement. En plus, c’est une équipe super chouette!&lt;/p&gt;

&lt;p&gt;Parmi leurs
&lt;a href=&quot;https://uclouvain.be/fr/etudier/lll/les-podcasts-du-lll.html&quot;&gt;podcasts&lt;/a&gt;,
il y a celui qui se penche sur &lt;a href=&quot;https://www.podcastics.com/podcast/repensons-les-evaluations/&quot;&gt;l’évaluation des
acquis&lt;/a&gt;
des étudiant(e)s, réalisé et écrit par Emilie Malcourant, que je vous
conseille.&lt;/p&gt;

&lt;p&gt;Parmi les points abordés, il y avait la question&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Quelle serait l’évaluation idéale?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;qui a suscité la réflexion suivante.&lt;/p&gt;

&lt;p&gt;L’évaluation se doit avant tout d’être au service de la
formation. L’évaluation certificative est pour moi une voie sans
issue, que j’ai beaucoup de mal à percevoir comment elle fait partie
de ma mission d’enseignement.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/eval.png&quot; alt=&quot;Évaluations certificative :-( et formative :-)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Pour moi, une évaluation idéale, c’est une formalité, c’est une
évaluation qui n’a pas raison d’être, car les intervenant(e)s du cours
savent que les étudiant(e)s maîtrisent la matière, et que l’évaluation
finale n’est qu’une formalité, et qu’elle n’est donc plus nécessaire.&lt;/p&gt;

&lt;p&gt;Le but d’un enseignement serait donc de rendre l’évaluation
certificative irrelevante, de faire en sorte qu’elle ne soit plus
pertinente, de la rendre impertinente.&lt;/p&gt;

&lt;p&gt;Edit (2024-02-19): The emoticons in my simple chart above use the
number &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8&lt;/code&gt; for the eyes, rather than the standard &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:&lt;/code&gt; because the
column has a specific meaning in
&lt;a href=&quot;https://github.com/stathissideris/ditaa&quot;&gt;ditaa&lt;/a&gt;, the cool
mini-language used to generate the figure, and these special characters
&lt;a href=&quot;https://github.com/stathissideris/ditaa/issues/9&quot;&gt;can’t easily be
escaped&lt;/a&gt;. But I just
learnt that I was 1 character away of calling students a
&lt;a href=&quot;https://pc.net/emoticons/categories/characters&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;8-E&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</content><author><name>Laurent Gatto</name></author><category term="teaching" /><category term="education" /><category term="UCLouvain" /><summary type="html">Une fois n’est pas coutume, un billet en français, pour attirer votre attention sur les podcasts du LLL. Le LLL, ou Louvain Learning Lab accompagne tous les acteurs et actrices de la formation de l’UCLouvain dans leurs activités d’enseignement. En plus, c’est une équipe super chouette!</summary></entry></feed>