选择清除分析软件XP-CLR的安装折腾之路

1. 原版

安装比较简单。

wget https://reich.hms.harvard.edu/sites/reich.hms.harvard.edu/files/inline-files/XPCLR.tar

tar xvf XPCLR.tar

直接运行bin下的XPCLR即可,若不能运行,则编译下:

cd src
make 
make install

原版分析时准备文件过程较为繁琐,因此更建议使用Python版。

$ /project/biosoft/XPCLR/bin/XPCLR -h
Usage:
 XPCLR -xpclr hapmapInput1 hapmapInput2 mapInput outFile -w gWin(Morgan) snpWin gridSize(bp) chrN -p corrLevel
-w1: gWin sets the size of a sliding window(units: 100cM),sWin sets # of SNPs in a window. otherwise, no sliding window
-p1:the input genotpe is already phased. -p0: the input genotype is not phased
corrLevel: the value is on (0,1], set corrLevel equal to 0 if no correction is needed

2. Python版本

安装

conda create -n xpclr  -c bioconda xpclr
conda activate xpclr

报错:

$ xpclr -h
Traceback (most recent call last):
  File "/home/miniconda3/envs/xpclr/bin/xpclr", line 5, in <module>
    import xpclr
  File "/home/miniconda3/envs/xpclr/lib/python2.7/site-packages/xpclr/__init__.py", line 3, in <module>
    from xpclr import methods
  File "/home/miniconda3/envs/xpclr/lib/python2.7/site-packages/xpclr/methods.py", line 11, in <module>
    from functools import lru_cache
ImportError: cannot import name lru_cache

重新安装pip install lru_cache仍然报错。
由于python版本引起,直接修改methods.pyfrom functools import lru_cache的为:

try:
    from functools import lru_cache
except ImportError:
    from backports.functools_lru_cache import lru_cache

运行

xpclr --format  vcf --input /project/04.sweep/sample750_miss0.6_impute/meanDP3.miss0.6.maf0.01.impute.rename.vcf \
    --samplesA /project/04.sweep/sample750_miss0.6_impute/List/w-l-c/Cultivar.list \
    --samplesB /project/04.sweep/sample750_miss0.6_impute/List/w-l-c/Wild.list \
    --chr 1 --maxsnps 600 --size 1000 --step 1000 --out test_out

报错:

Traceback (most recent call last):
  File "/home/miniconda3/envs/xpclr/bin/xpclr", line 195, in <module>
    main()
  File "/home/miniconda3/envs/xpclr/bin/xpclr", line 88, in main
    "No permission to write in the specified directory: {0}".format(outdir)
AssertionError: No permission to write in the specified directory:

xpclr第84行fn = args.out修改为:

fn = os.path.abspath(args.out)

运行继续报错:

2023-03-17 19:05:48 : INFO : running xpclr v1.1.0
2023-03-17 19:05:48 : INFO : Loading VCF
Traceback (most recent call last):
  File "/home/miniconda3/envs/xpclr/bin/xpclr", line 196, in <module>
    main()
  File "/home/miniconda3/envs/xpclr/bin/xpclr", line 103, in main
    gdistkey=args.gdistkey)
  File "/home/miniconda3/envs/xpclr/lib/python2.7/site-packages/xpclr/util.py", line 112, inload_vcf_format_data
    pos1, geno1 = load_vcf_wrapper(vcf_fn, chrom, samples1)
  File "/home/miniconda3/envs/xpclr/lib/python2.7/site-packages/xpclr/util.py", line 94, in load_vcf_wrapper
    callset = allel.read_vcf(
AttributeError: 'module' object has no attribute 'read_vcf'

网上没有我的同类安装相关错误报道,查看了下allel模块,确实没有read_vcf函数:

Python 2.7.18 |Anaconda, Inc.| (default, Nov 25 2022, 06:27:37)
[GCC 11.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import allel
>>> allel
<module 'allel' from '/home/miniconda3/envs/xpclr/lib/python2.7/site-packages/scikit_allel-0.20.3-py2.7-linux-x86_64.egg/allel/__init__.py'>
>>> dir(allel)
['AlleleCountsArray', 'AlleleCountsCArray', 'AlleleCountsCTable', 'AlleleCountsChunkedArray', 'AlleleCountsChunkedTable', 'AlleleCountsDaskArray', 'FeatureCTable', 'FeatureChunkedTable', 'FeatureTable', 'GenotypeArray', 'GenotypeCArray', 'GenotypeChunkedArray', 'GenotypeDaskArray', 'HaplotypeArray', 'HaplotypeCArray', 'HaplotypeChunkedArray', 'HaplotypeDaskArray', 'SortedIndex', 'SortedMultiIndex', 'UniqueIndex', 'VariantCTable', 'VariantChunkedTable', 'VariantTable', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__version__', '_bcolz', '_da', 'chunked', 'compat', 'constants', 'io', 'model', 'plot', 'stats', 'util']

但实际上官网上是有这个函数的:


image.png

难道是版本问题吗?装了下python3版本,发现确实是有的:


image.png

试图重新安装,旧版本删除不了:

$ pip uninstall scikit-allel
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will dropsupport for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
ERROR: Cannot remove entries from nonexistent file /home/pengjx/miniconda3/envs/xpclr/lib/python2.7/site-packages/easy-install.pth

升级也升级不了:

>pip install --upgrade --ignore-installed scikit-allel -i https://pypi.tuna.tsinghua.edu.cn/simple
.......
  ERROR: Command errored out with exit status 1:

没办法放弃conda安装,直接从GitHub安装:https://github.com/hardingnj/xpclr

git clone https://github.com/hardingnj/xpclr.git
cd xpclr
python setup.py install

进入bin后,可直接运行xpclr:

$ xpclr -h
usage: xpclr [-h] --out OUT [--format FORMAT] [--input INPUT] [--gdistkey GDISTKEY] [--samplesA SAMPLESA] [--samplesB SAMPLESB] [--rrate RRATE] [--map MAP] [--popA POPA] [--popB POPB]
             --chr CHROM [--ld LDCUTOFF] [--phased] [--verbose VERBOSE] [--maxsnps MAXSNPS] [--minsnps MINSNPS] [--size SIZE] [--start START] [--stop STOP] [--step STEP]

Tool to calculate XP-CLR as per Chen, Patterson, Reich 2010

需要注意的是,你如果使用xpclr的全路径是运行不了的:

$ /project/xpclr/bin/xpclr
Traceback (most recent call last):
  File "/project/xpclr/bin/xpclr", line 4, in <module>
    import numpy as np
ImportError: No module named numpy

安装依赖包:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
这时,也可以用python(实际上我当前的版本已经是Python 3.9.1,所以xpclr也是支持的。)来调用全路径:

python /project/xpclr/bin/xpclr --format  vcf --input /project/04.sweep/sample750_miss0.6_impute/meanDP3.miss0.6.maf0.01.impute.rename.vcf --samplesA /project/04.sweep/sample750_miss0.6_impute/List/w-l-c/Cultivar.list --samplesB /project/04.sweep/sample750_miss0.6_impute/List/w-l-c/Wild.list --chr 1 --maxsnps 600 --size 1000 --step 1000 --out test_out

建议还是将安装路径/project/xpclr/bin加入环境变量(测试了下,貌似不用加入环境变量也可直接调用,可能是软件安装环节已经加入),直接用xpclr。

原因分析

conda安装虽然便捷,但作者没有及时更新,最早的版本也是在3年前(Python2),导致一些包不兼容。


image.png

而GitHub版本作者还是在维护的,所以对于后来者推荐之。


image.png

后续分析推荐

原版XP-CLR用法参考:https://zhuanlan.zhihu.com/p/145387269
Python版XP-CLR用法参考://www.greatytc.com/p/9c827a0be66d

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容