Enhancement:
readid contains info about spatial position of the physical read (short DNA molecule) on a sequencing flowcell.
This information can be used to find out how many of the observed duplicates are originating from PCR preceding sequencing step, and how many have been formed in the flowcell due to non-ideal conditions/read migration etc.
Proposition:
we can add an onlineDeduplicator-style buffer in the stats module that would keep track of incoming read-pairs and would start accumulating them as soon as it hits a DD-one, until the next one in the buffer in non-DD-one:
rid c1 c2 p1 p2 s1 s2 pt index
. . . . . . . LL 1
. . . . . . . DD 2
. . . . . . . DD 3
. . . . . . . DD 4
. . . . . . . DD 5
. . . . . . . LL 6
so with the input as above the content of the buffer would include pairs with index from 1-5 (including).
read_id (rid) column of that buffer can be further used to cluster pairs by their X,Y - position on the flowcell and to generate corresponding statistics.
We could use the read-clustering algorithm developed by Betul @betulakgol in the lab, and would have to optional because it is not really known, if readid of "any" sequencer would have such information and if it is in the same exact format.
Software:
from coding perspective, we would only need to make stats.add_pair(c1,p1,s1,c2,p2,s2,pt) to accept a read-id as well stats.add_pair(rid,c1,p1,s1,c2,p2,s2,pt) (either permanently or optionally - how? dunno ...) and implement that onlineDedup-style buffer inside the stats, so that everyhting will be nice and hidden from the dedup perspective.
stats are becoming pretty heavy at that point, and some Cythonization might be applied to it (split stats into _stats.pyx with the class and methods and pairsamtools_stats.py - a stand alone script capable of doing stats).
Seems like a doable and not very intrusive thing, which I already discussed with @hakanozadam,
@nvictus, @golobor - what do you think?
Enhancement:
readidcontains info about spatial position of the physical read (short DNA molecule) on a sequencing flowcell.This information can be used to find out how many of the observed duplicates are originating from PCR preceding sequencing step, and how many have been formed in the flowcell due to non-ideal conditions/read migration etc.
Proposition:
we can add an
onlineDeduplicator-style buffer in thestatsmodule that would keep track of incoming read-pairs and would start accumulating them as soon as it hits aDD-one, until the next one in the buffer in non-DD-one:so with the input as above the content of the buffer would include pairs with index from 1-5 (including).
read_id (rid)column of that buffer can be further used to cluster pairs by theirX,Y- position on the flowcell and to generate corresponding statistics.We could use the read-clustering algorithm developed by Betul @betulakgol in the lab, and would have to optional because it is not really known, if
readidof "any" sequencer would have such information and if it is in the same exact format.Software:
from coding perspective, we would only need to make
stats.add_pair(c1,p1,s1,c2,p2,s2,pt)to accept aread-idas wellstats.add_pair(rid,c1,p1,s1,c2,p2,s2,pt)(either permanently or optionally - how? dunno ...) and implement thatonlineDedup-style buffer inside the stats, so that everyhting will be nice and hidden from thededupperspective.statsare becoming pretty heavy at that point, and some Cythonization might be applied to it (splitstatsinto_stats.pyxwith the class and methods andpairsamtools_stats.py- a stand alone script capable of doing stats).Seems like a doable and not very intrusive thing, which I already discussed with @hakanozadam,
@nvictus, @golobor - what do you think?