funny生物信息

Pysam BAM操作

2020-09-07  本文已影响0人  茄子_0937

SAM/BAM/CRAM files

class pysam.AlignmentFile

AlignmentFile(filepath_or_object, mode=None, template=None, \\
reference_names=None, reference_lengths=None, text=NULL, header=None, \\
add_sq_text=False, check_header=True, check_sq=True, reference_filename=None, \\
filename=None, index_filename=None, filepath_index=None, require_index=False, \\
duplicate_filehandle=True, ignore_truncation=False, threads=1)

filepath_or_object 既可以是 文件路径,也可以是文件对象;

如果输入的文件没有 index 将无法使用 fetch()pileup()

如果是写文件:

默认'r' mode 下,会检查头文件(check_header = True)和染色体名称的定义(check_sq = True).

参数:

check_index(self)

存在 index时会返回 True

Raise:

close(self)

关闭 pysam.AlignmentFile .

count(self, contig=None, start=None, stop=None, region=None, until_eof=False, read_callback='nofilter', reference=None, end=None)

计算给定区间内的reads 数量

这个区间通过 contig 、start、stop 进行描述,也支持 samtools regin 格式的描述(‘chr1:10000:20000’)

不支持SAM格式的文件

Parameters:

Raises: ValueError — 基因组的坐标超过范围或无效的

count_coverage(self, contig, start=None, stop=None, region=None, quality_threshold=15, read_callback='all', reference=None, end=None)

计算reads在这个基因区间的覆盖度,结果是 four array.arrays of the same length in order A C G T

参数:

Raises: ValueError – if the genomic coordinates are out of range or invalid.

Returns: four array.arrays of the same length in order A C G T

Return type: tuple

例子:

pysam01.png

fetch(self, contig=None, start=None, stop=None, region=None, tid=None, until_eof=False, multiple_iterators=False, reference=None, end=None)

获取指定区域内的reads, 返回一个 AlignedSegment 对象 的 iteration

不指定 contig 或 region 就会获取文件中所有的reads,reads的顺序按参考序列排序,不一定和文件中的顺序相同。 如果没有index,则 until_eof = True

如果只设定了 contig ,则整个contig中的reads都会获取

不支持 SAM文件

参数

Return type: An iterator over a collection of reads.

例子:

pysam05.png

find_introns(self, read_iterator)

返回一个字典 {(start, stop): count} ,列出reads中的 intronic sites( 通过ciger值中的'N'来辨认 ),支持度是reads的数量 。

read_iterator 可以是 fetch(…) 的结果,也可以是对这些reads再进行过滤的生成器。

Ex. samfile.find_introns((read for read in samfile.fetch(…) if read.is_reverse))

get_index_statistics(self)

返回每个染色体 mapped/unmapped reads 的统计。

Returns: list – ‘mapped’, ‘unmapped’ and ‘total’.

Return type: a list of records for each chromosome. Each record has the attributes ‘contig’,

例子:

pysam03.png

head(self, n, multiple_iterators=True)

返回包含文件前几行的 iterator

参数:

Return type: an iterator over a collection of reads

例子:

pysam04.png

mate(self, AlignedSegment read)

返回 AlignedSegment 的配对

会改变文件指针位置,会干扰不是re-opened 文件的 iterators

大量处理时会很慢,推荐使用readname sorted BAM

Raises: ValueError – if the read is unpaired or the mate is unmapped

例子:

pysam06.png

pileup(*self, contig=None, start=None, stop=None, region=None, reference=None, end=None, *kwargs)

pileup()方法可以获得特定区域的每个碱基;每次迭代会生成一个PileupColumn对象。该对象包含了覆盖到该位点的所有reads,这些reads 在 PileupColumn.pileups中被记录为 PileupRead对象

若没有指定 contig 和 region 则用所有reads 进行pileup。

不支持SAM文件

覆盖指定区域的所有reads都会返回;返回的第一个碱基,是第一条read的第一个碱基所以不一定是 query region的第一个碱基

参数:

Return type: an iterator over genomic positions.



pysam07.png

class pysam.AlignedSegment(AlignmentHeader header=None)**

表示 SAM 或 BAM文件中的一个 aligned segment

cigarstring

得到这条read 的cigar值,string 格式

cigartuples

得到tuples 形式的cigar值

pysam09.png

get_blocks(self)

没有间隔的区间,比对结果的起始、终止位点的列表,若两个块之间有插入,则会相邻。

pysam08.png

flag

得到 flag 值

get_forward_sequence(self)

获得reads的序列。如果是mapping到反链,得到是反向互补的序列,

get_forward_qualities(self)

同上,得到的是质量值,结果是 arrary

pysam10.png

get_overlap(self, uint32_t start, uint32_t end)

得到read 在指定区间内的碱基覆盖数量

get_reference_positions(self, full_length=False)

得到read 每个碱基比对到参考基因组的位置,当full_length=True 时,会显示soft-clip的位置None

get_reference_sequence(self)

得到read 比对到参考基因位置的,参考基因碱基序列

pysam11.png

get_tags(self, with_value_type=False)

has_tag(self, tag)

获取optional aligment section

pysam12.png

infer_query_length(self, always=False)

infer_read_length(self)

根据CIGAR 值推导 query length 和 read length,但是不包含 hard-clipped bases

pysam13.png

一些reads 属性 (只记录了部分)

pysam14.png

class pysam.PileupColumn

A pileup of reads at a particular reference sequence position (column). A pileup column contains all the reads that map to a certain target base.

覆盖到指定区域的reads 集合。所以返回的第一个值不一定是指定的区间最左侧,而是能覆盖到指定区间最左侧的reads,最靠左的碱基。

pysam15.png

class pysam.PileupRead

alignment

返回 pysam.AlignedSegment object

indel

indel length for the position following the current pileup site.

接下来是ins 则为正数,del 则为 负数,不是indel 是 0

其它

pysam16.png
上一篇下一篇

猜你喜欢

热点阅读