Next Generation Sequencing
(NGS) has really taken off the last few years, as both devices and the
cost of experiments have dramatically declined. NGS decipher the
identity (base composition, the sequence of letters in the alphabet of
DNA and RNA) of nucleic acids and return the results in the fastq open data format. Fastq
files are flat text files with a standardized layout: each molecule
present in the sample that is captured by the sequencer is represented
with four fields:
a '@' character and is followed by a sequence identifier and an optional description
one (typically) or more lines of characters in the four letter alphabet of nucleic acids
a metadata field starting with the "+" optionally followed by the
same sequence identifier and description as in the first field
one, or more lines of the quality of each symbol sequence reported in field 2
An example of such a four field entry may look something like this
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on April 21, 2024 at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 2: Completing Word
You are given a string, $str containing alphanumeric characters and array of strings (alphabetic characters only), @str.
Write a script to find the shortest completing word. If none found return empty string.
A completing word is a word that contains all the letters in the given string, ignoring space and number. If a letter appeared more than once in the given string then it must appear the same number or more in the word.
My upgrade of my home server from Debian 11 ("bullseye") to
Debian 12 ("bookworm") went
almost without a hitch. Yesterday I realized that the Postgres data hadn't
been migrated from the old DB to the Debian package of Postgres 15. But
luckily, the good Pg people provide a Debian
package of 9.6 (the version which held my data) for Debian 12.
I could install that one, fire it up, dump all data into SQL, fire up Pg 15
from Debian and import it there. Now I run such an SQL dump daily, just to have
the data available as SQL files.
I wonder if it would be worthwhile for Perl to provide prebuilt
binaries/packages of old Perl versions for current OSes, but then, there are so
many build options that it's not worth the effort in general.
Module::CoreList is still somewhat awkward and manual to update around releases. We need better instructions and possibly some automation around the simpler
Pod’s new U<> format needs more documentation around its limited availability.
Test2::Suite sometimes spuriously fails in perl core; needs some poking
We should put out a call for bugfixes for a possible 5.38.1 release
I noticed the other day we had an old utility script txt2html.pl that gave a warning
/usr/local/bin/txt2html.pl $* is no longer supported at /usr/local/bin/txt2html.pl line 1512.
Apparently $*=1 was how multi-line regex searching was done in old perls.
which gives us /usr/local/bin/txt2html, then mv'd the old txt2html.pl to txt2html.pl.orig and used ln -s to symlink txt2html.pl to point at /usr/local/bin/txt2html.
I have been leaning very heavily on Perl's prototype feature for creating new modules. The imptetus for this can traced back to the day I looked at the source code for Try::Tiny, and realized that it was implemented using prototypes. The main reason for using prototypes for many new modules I've created recently is my focus on making a thing I do repeatedly available in a more Perlish or idiomatic way.
The following article demonstrates 2 CPAN modules I have written that focus more on Perl programmer UX and why Perl prototypes can provide a way forward for a great many ideas that people have. Prototypes misunderstood, yes; but more so, they are misunderestimated. They are infact, very powerful and when used for their intended purpose; a lot of hand wringing can be avoided during feature discussions.
Please note that Komodo IDE is now open source.
Komodo IDE is a very feature-rich Integrated Development Environment (IDE). Basically a sophisticated source-code editor.
Notable features why I used Komodo IDE:
The blog post announcing Komodo IDE going Open Source is here.
The blog post also contains an explanation why it is made open source. One of the reasons is that there is already a lot of free and good editors available, e.g. Visual Studio Code. Though, as I was using Komodo IDE for at least 7 years now, I still very much like it and it’s OOTB feature set.
Hi everybody! In this week's weekly challenge, we're searching for anything but the minimum or maximum in a dataset, and searching for senior citizens on a plane.
Min And Max
This challenge is a very interesting one, because obviously the easiest solution in terms of development is to sort and filter the first and last element. However, that is O(n log n) and it's very little added complexity to do the O(n) solution with a single-pass filter.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on August 27, 2023 at 23:59). This blog post offers some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 2: Senior Citizens
You are given a list of passenger details in the form “9999999999A1122”, where 9 denotes the phone number, A the sex, 1 the age and 2 the seat number.
Write a script to return the count of all senior citizens (age >= 60).
Example 1
Input: @list = ("7868190130M7522","5303914400F9211","9273338290F4010")
Ouput: 2
The age of the passengers in the given list are 75, 92 and 40.
So we have only 2 senior citizens.
DBD::SQLite 1.73_01 (with SQLite 3.42.0) is a release candidate for the next stable DBD::SQLite. This release is mainly to upgrade the bundled SQLite library.
I'll wait for about a month and release 1.74 in the middel of September if there's no blocker nor request to wait for more. Thank you for your patience.
There were only two of us this week, and the list is still a bit quiet.
The main topic was stalled PPC work: we have a few PPCs that have been approved and are in the “Implementing” state, but still waiting for an implementor. We’ll send a separate email asking for volunteers on those.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on April 21, 2024 at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: 33% Appearance
You are given an array of integers, @ints.
Write a script to find an integer in the given array that appeared 33% or more. If more than one found, return the smallest. If none found then return undef.
At the recent YAPC::EU (still running) I gave a talk about my latest CPAN module: Graphics::Toolkit::Color (in short GTC - v1.53). It went a little out of hand and even worse: some of the key thoughts I did not formulate as clear as wanted. That is why I use this channel to correct that. In this first part I outline the goal of the module and the next part will be about the design principles of the public API, moving than into implementation details and the general issues when dealing with colors.
Resource::Silo is a declarative lazy resource container library for Perl. It allows to declare resources such as configuration files, database connections, external service endpoints, and so on, in one place; acquire them on demand; cache them; and release in due order.
It may also be described as the single source of truth for the application's side effects.
For those unfamiliar with Bread::Board:
Hey, hey, hey, hey! A shiny new solution just arrived!
declare all of your application's resources / dependencies in one place using a simple DSL;
instantiate them on demand and only once, with little overhead;
override them with mocks in your tests & guard against unexpected side effects;
gain more fine-grained control via the ctl frontend.
Today was PSC 111 — what happened to 110 you ask? Well, it was a bit of a non-meeting a few weeks ago. Nothing to say about it, sorry!
This week, we:
Said hello to Graham and goodbye to Rik
We did a bunch of handover, making sure we set up a new Zoom meeting and calendar, and talking about our usual order of business
In more normal business, we:
talked about the future of use vX, especially related to builtin:: stuff — do we want “use v5.40” to import “builtin::refaddr” for example
talked about what we’re going to do with the UNIVERSAL::import changes so we can move it forward toward someday making it fatal but without breaking half of CPAN at once
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on April 14, 2024 at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 2: Target Array
You are given two arrays of integers, @source and @indices. The @indices can only contains integers 0 <= i < size of @source.
Write a script to create target array by insert at index $indices[i] the value $source[i].