我正在使用python/pysam来分析测序数据.在其教程(pysam - 读取和编写SAM文件的界面)中,命令配合说:
'这种方法对于高吞吐量处理来说太慢了.如果需要使用其配合处理读取,则从读取名称的排序文件开始工作,或者更好的是缓存读取.
你会如何"缓存读取"?
我正在使用 GitHub Actions 设置持续集成。先决条件之一 ( samtools) 是最容易安装的conda。使用已安装软件包的标准方法是激活相应的conda环境。我正在寻找一种激活conda环境的方法。常见的激活方法均失败,详情见下文。我当前的解决方法是添加到由 . 安装的PATH硬编码路径。但如果安装的软件包数量增加,这是不可维护的。这也不是使用随.samtoolscondaconda
细节:
.github/workflows/conda.yml
name: Conda
on: [push]
jobs:
# label of the job
tests:
name: Tests
# containers must run in Linux based operating systems
runs-on: ubuntu-latest
# Docker Hub image that `postgres-job` executes in
container: node:latest
# service containers to run with `postgres-job`
steps:
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
channels: bioconda, conda-forge, defaults
use-only-tar-bz2: true # …Run Code Online (Sandbox Code Playgroud) 我有一个名为 samtools(1.3 版)的程序,用于操作您从 DNA 测序实验中获得的文件。
下载的程序包含在一个文件夹中。为了设置程序,我在终端(在 ubuntu 计算机上)输入该文件夹。我输入突击队“制造”。
它运行打印它所做的事情,但以错误消息终止:
bam_tview_curses.o bam_tview_curses.c
bam_tview_curses.c:41:20: fatal error: curses.h: No such file or directory
#include <curses.h>
^
compilation terminated.
make: *** [bam_tview_curses.o] Error 1
Run Code Online (Sandbox Code Playgroud)
我最初的反应(在互联网上搜索后)是没有安装 curses,我尝试使用 sudo 来解决这个问题(显然我的用户不在 sudoers 列表中。
所以我试着看看curses是否已经安装,在查阅互联网后我尝试了
ldconfig -p | grep ncurses
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
libncursesw.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libncursesw.so.5
libncurses.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libncurses.so.5
Run Code Online (Sandbox Code Playgroud)
我认为这是因为安装了诅咒。但这让我不知所措。但这至少应该意味着存在诅咒,对吗?我在使用 ubuntu 或 C 程序方面不是很有经验(很久以前我在 C 方面上了一个较小的课程,虽然我已经使用了相当多的 linux 计算机,但我主要使用终端进行导航)
乐于助人!
假设我从shell运行以下命令
{
samtools view -HS header.sam; # command1
samtools view input.bam 1:1-50000000; # command2
} | samtools view -bS - > output.bam # command3
Run Code Online (Sandbox Code Playgroud)
对于那些不熟悉samtools视图的人(因为这是stackoverflow).这实际上是在创建一个具有新标头的新bam文件.bam文件通常是大型压缩文件,因此即使在某些情况下通过文件也可能非常耗时.一种替代方法是进行command2,然后使用samtools reheader来切换标头.这会两次通过大文件.上面的命令一次性通过bam,这对于较大的bam文件是有用的(即使在压缩时它们也会大于20GB - WGS).
我的问题是如何使用subprocess在python中实现这种类型的命令.
我有以下内容:
fh_bam = open('output.bam', 'w')
params_0 = [ "samtools", "view", "-HS", "header.sam" ]
params_1 = [ "samtools", "view", "input.bam", "1:1-50000000"]
params_2 = [ "samtools", "view", "-bS", "-" ]
sub_0 = subprocess.Popen(params_0, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
sub_1 = subprocess.Popen(params_1, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
### SOMEHOW APPEND sub_1.stdout to sub_0.stdout
sub_2 = subprocess.Popen(params_2, stdin=appended.stdout, stdout=fh_bam)
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.谢谢.
我很快意识到,生物信息学不是一个明确定义且易于获取的术语的主题.我的一些结果明显不一致.
我用过samtools view -b -h -f 8 fileName.bam > mateUnmapped.bam几个BAM文件.我的印象是这个命令只提取其伙伴不与草图基因组对齐的读数(也包括标题;输出是BAM格式)
当我samtools 'flagstat'在生成的文件上使用时,我得到一个有趣的结果:"单例"的数量与读取的总数不匹配......这对我来说似乎很奇怪.
我能找到的唯一对比是:
http://seqanswers.com/forums/showthread.php?t=46711
回答本论坛提出的问题的一个人声称,单身人士有时被定义为根本没有伴侣阅读的序列.但是,这仍然无法解释我的结果.弗拉格斯塔特说我的读书中大约有40%是单身,但我觉得我根据我使用的"观察"命令,他们应该都是单身人士.
经验丰富的生物信息学家可以帮助我吗?
我在其他地方看到过一些类似的问题,但我似乎找不到适合我的解决方案。我正在尝试在 anaconda 上使用 python 运行 samtools。我正在运行 macOS Catalina。这是错误代码
dyld: Library not loaded: @rpath/libcrypto.1.0.0.dylib
Referenced from: /Users/me/anaconda3/bin/samtools
Reason: image not found
zsh: abort samtools
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种努力通过anaconda安装早期版本的openssl,但它仍然显示我安装了openssl版本1.1.1。
感谢您提供有关如何(a)通过 anaconda 安装早期版本的 openssl 或(b)直接 samtools 评估早期版本的不同路径或(c)任何其他解决方案的指导。
我有一个带有RX:的SAM文件:字段包含12个碱基,中间用-ie 隔开RX:Z:CTGTGC-TCGTAA
我想从此字段中删除连字符,但是我不能简单地从整个文件中删除所有连字符,因为读取的名称包含它们,例如 1713704_EP0004-T
大多数情况下都在尝试,tr,但这只是从文件中删除所有连字符。
tr -d '"-' < sample.fq.unaln.umi.sam > sample.fq.unaln.umi.re.sam
Run Code Online (Sandbox Code Playgroud)
输入是一个大于10,000,000行的大型SAM文件,如下所示:
1902336-103-016_C1D1_1E-T:34 99 chr1 131341 36 146M = 131376 182 GGACAGGGAGTGTTGACCCTGGGCGGCCCCCTGGAGCCACCTGCCCTGAAAGCCCAGGGCCCGCAACCCCACACACTTTGGGGCTGGTGGAACCTGGTAAAAGCTCACCTCCCACCATGGAGGAGGAGCCCTGGGCCCCTCAGGGG NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN MC:Z:147M MD:Z:83T62cD:i:4 cE:f:0 PG:Z:bwa RG:Z:A MI:Z:34 NM:i:1 cM:i:3 MQ:i:36 UQ:i:45 AS:i:141 XS:i:136 RX:Z:CTGTGC-TCGTAA
Run Code Online (Sandbox Code Playgroud)
所需的输出(即最后一个字段)
1902336-103-016_C1D1_1E-T:34 99 chr1 131341 36 146M = 131376 182 GGACAGGGAGTGTTGACCCTGGGCGGCCCCCTGGAGCCACCTGCCCTGAAAGCCCAGGGCCCGCAACCCCACACACTTTGGGGCTGGTGGAACCTGGTAAAAGCTCACCTCCCACCATGGAGGAGGAGCCCTGGGCCCCTCAGGGG NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN MC:Z:147M MD:Z:83T62cD:i:4 cE:f:0 PG:Z:bwa RG:Z:A MI:Z:34 NM:i:1 cM:i:3 MQ:i:36 UQ:i:45 AS:i:141 XS:i:136 RX:Z:CTGTGCTCGTAA
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我正在尝试从 GEO/SRA 下载 BAM 格式的数据集,我可以使用它在 RStudio 中进行分析。
我尝试使用这种方法:我下载了 .sra 并将其转换为 .bam
prefetch GSM269238
sam-dump C:\Users\Desktop\sratoolkit.2.10.8-win64\bin\ncbi\SRA\sra\GSM2692389.sra --output-file GSM2692389.bam
Run Code Online (Sandbox Code Playgroud)
然而,在 RStudio 中这不起作用,并返回一个错误,说它无法读取 bam 文件这是我的 R 代码;我正在使用 RSamTools
> bamfiles <- list.files("directory redacted due to privacy", ".bam")
> file.exists(bamfiles)
[1] TRUE
>
>
> #---> Define bam files for count step on Rsamtools
>
> library("Rsamtools")
> bamfiles <- BamFileList(bamfiles, yieldSize=2000000)
> seqinfo(bamfiles)
Error in value[[3L]](cond) :
failed to open BamFile: SAM/BAM header missing or empty
file: 'GSM2692389.bam'
Run Code Online (Sandbox Code Playgroud)
有谁知道如何帮助我将 SRA 数据下载到可读的 .bam 文件中?任何帮助或指导将不胜感激,因为我真的很努力在截止日期前完成这件事。