問題描述
在分析的過程中,有些資料的染色體命名為「chr1、chr2、…、chrx、chry」,而有些資料的染色體命名則為「1、2、…、x、y」 (也就是不包含 chr 字元)。這裡,通過**對 bam 檔案作為修改,實現染色體名的統一。
**實現
假設我們有乙個名為通過test.bam
的檔案,其中染色體名不包含chr
字元,需要在染色體名前加上chr
字元。
samtools
和shell
實現 (注:samtools reheader 需要給乙個-
的引數,不給會報錯):
samtools view -h test.bam |
sed -e 's/sn:\([0-9xy]\)/sn:chr\1/' -e 's/sn:mt/sn:chrm/'
| samtools reheader - test.bam > test.chr.bam
**封裝
因為會經常碰到這樣的情況,因此就將上面的這段**封裝到乙個名為bam_add_chr.sh
的指令碼,放在bin
目錄下面,方便呼叫。
#! /usr/bin/bash
samtools view -h $1
|sed -e 's/sn:\([0-9xy]\)/sn:chr\1/' -e 's/sn:mt/sn:chrm/'
| samtools reheader - $1
>
$2echo
"finished!"
呼叫方法:
bam_add_chr.sh test.bam test.chr.bam
其它方法
可以通過 python 的 pysam 模組進行修改,但計算速度相對更低。
shell指令碼 批量修改檔名 檔名中新增字元
舉例如下 批量建立10個隨機字串的檔案,要求每個檔名後面新增 aaa,字尾名不變 root localhost goodboy ls adddbbdedf.html baacjaiija.html bhcfaabcfh.html dgjdcdfbca.html efejadfdji.html agd...
shell指令碼 批量修改檔名 刪除檔名中字元
舉例如下 批量改名,刪除檔名中多餘字元 目錄下檔名為如下,要求去掉 finished。可以實現的方法有很多種 方法一 for迴圈結合sed替換 baby localhost for file in ls jpg do mv file echo file sed s finished g done 方...
批量修改檔名中相同部分(Python)
在網上找了很多方法,最多的是寫乙個bat檔案,在嘗試之後發現只能批量修改前字尾,中間部分無法直接修改,索性自己用python的os模組寫了乙個簡單的批量修改 直接修改 中的dirpath,originalname,modifyname即可 注意 可以修改當前檔案下下所有檔案 包括子資料夾下的檔案,但...