侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

对 fastq 文件进行双端/单端的分组

barwe
2023-03-17 / 0 评论 / 0 点赞 / 909 阅读 / 548 字
温馨提示:
本文最后更新于 2023-03-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

主要原理就是将(可能)标志着 1/2 序号的字符替换成相同的字符,然后比较修改后的字符串是否相同,相同的字符串对应的原始路径被分到同一组。

理想情况下,每组应该只有一个路径(单端测序)或者两个路径(双端测序),如果出现三个及以上的情况,需要检查对应路径名称,修改文件名称或者匹配规则。

这里使用了 位置匹配 的负向断言功能((?!)):只尝试替换前后都不是数字的 1/2,避免误伤其他序号类数值。

虽然这样还是存在漏洞,例如下面的例子:

  • test-1-1.fq.gz
  • test-1-2.fq.gz
  • test-2-1.fq.gz
  • test-2-2.fq.gz
function groupFastaPaths(strings: string[]): string[][] {
  const groups: { [key: string]: string[] } = {}
  for (let i = 0; i < strings.length; i++) {
    const str = strings[i]
    const key = str.replace(/(?!\d)[12](?!\d)/g, '@')
    if (!groups[key]) {
      groups[key] = [str]
    } else {
      groups[key].push(str)
    }
  }
  return Object.values(groups)
}
0

评论区