Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

mean(), anyNA(), and members of "Summary" group generic should "untranspose"

Offen
#56 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
32/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
r
Bereich
data, performance

Rechercherichtung

Beginne damit, die Implementierungen von mean(), anyNA() und dem generischen "Summary"-Gruppenverfahren für DelayedArray-Objekte zu lokalisieren, und untersuche anschließend DelayedAperm und simplify(). Verfolge den im Issue beschriebenen Stamm der verzögerten Operationen und ermittle, wie ein umgekehrtes aperm() vor der Berechnung angewendet werden könnte. Als erledigt gilt die Aufgabe, wenn diese Operationen ihre Ergebnisse beibehalten und dabei eine unnötige verzögerte Transposition vermeiden, wenn die Vereinfachung den Baum verkürzt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Delayed transposition (t() or aperm()) significantly slows down block processing of a DelayedMatrix or DelayedArray object. However the result of block-processed operations like mean(), anyNA(), and members of the "Summary" group generic does not change if the input is transposed. So these operations should be smart enough to "untranspose" their input in order to be faster.

The exact algorithm for "untransposing" could be:

  • Go up the tree of delayed ops in x until a DelayedAperm op is found. Only climb the trunk of the tree i.e. start from x@seed and go up only if there is exactly 1 "next seed", that is, if the current seed is a DelayedUnaryOp object. Stop on the first DelayedAperm op (i.e. the most recently applied DelayedAperm op), or when the next seed is no longer a DelayedUnaryOp object.
  • If no DelayedAperm op was found then there is nothing to do.
  • If a DelayedAperm op is found, do y <- aperm(x, ....) where the exact aperm() transformation is the reverse of this DelayedAperm op. The tree trunk in y should be either shorter than the tree trunk in x (if the 2 DelayedAperm ops could be simplified) or longer (if they couldn't). If it's shorter then replace x with y before computing mean(), anyNA(), etc...

The advantage of this algo is that it doesn't need to know anything about the delayed ops found between the root of the tree and the first DelayedAperm op found on the trunk. It just relies on simplify().

Vorherrschende Sprache
R
Sterne
29
Forks
12
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Bioconductor/DelayedArray

Alle Issues in Bioconductor/DelayedArray

Ähnliche Issues

Weitere Issues zu R

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.