从磁盘进行快速、可扩展的SNP距离计算。
项目描述
Find Neighbour 5
是Find Neighbour 4的精神继承者 - 继续David Wyllie的工作。
使用缓存到磁盘的SNP矩阵生成。
安装
由于这是编译的客户端,请确保已安装功能齐全的C++编译器,如GCC。目前仅在Linux上进行了测试。
# Optional virtual environment
python -m virtualenv env
souce env/bin/activate
# Install via pip
pip install fn5
注意
这提供了一些底层FN5库的绑定,但有一些限制。大部分功能应通过Python绑定公开。
读取FASTA文件
首先,您需要一个参考基因组,以及在其中进行掩码的位置列表。掩码是可选的,但可以用来掩蔽没有流行病学意义的同源或多系谱区域。掩码应该是行分隔的基因组位置。
import fn5
reference = fn5.load_reference("<path to your reference>")
mask = fn5.load_mask("<path to your mask>")
# Alternatively ignore the mask
mask = set()
然后,可以从FASTA文件中解析出样本
sample1 = fn5.Sample("<path to sample1's FASTA>", reference, mask, "sample1")
sample2 = fn5.Sample("<path to sample2's FASTA>", reference, mask, "sample2")
...
保存样本
为了提高效率,可以将样本写入(随后从)磁盘。
请注意,fn5.save
方法将写入5个文件到指定目录。 <path>/<sample ID>.A
,<path>/<sample ID>.C
。 ...
fn5.save("<some output directory>", sample1)
加载样本
从磁盘加载预先保存的样本。这应该比重新解析FASTA文件要快得多。
sample1 = fn5.load("<some output directory>/sample1")
计算距离
可以使用任意的SNP截止值来计算距离。
单个距离
如果返回的距离 == 您的截止值 + 1,则两个样本比SNP截止值更远。
sample1.dist(sample2, <some cutoff>)
距离矩阵
默认情况下,此方法使用4个线程,没有截止值。如果返回的距离列表中缺少一对样本,则它们比给定的截止值更远。
samples = [fn5.load("<some directory>/"+f) for f in <existing filepaths>]
fn5.compute(samples)
# With more/less threads
fn5.compute(samples, thread_count=12)
fn5.compute(samples, thread_count=1)
# With a SNP cutoff
fn5.compute(samples, cutoff=12)
项目详情
关闭
fn5-2.0.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 958c5a50028b0e7ae3fb5a4f24523aff141a3bac2518a6c2e76176c5618a6177 |
|
MD5 | e4ab8624582ef1f234f125162287ca2b |
|
BLAKE2b-256 | f98a5ff898a368c91daf8b9e22aa60b03e090b51253ce155d6aeb1223572f4ea |