自学内容网 自学内容网

单细胞BCR的分析Dandelion重注释的安装以及用法----11111

今天来学习下这个新的方法,主要是针对单细胞BCR

在这里插入图片描述

首先安装singularity

Singularity 是一种容器化技术,类似于 Docker,专为高性能计算(HPC)和科学研究领域的需求设计。它允许用户在不同环境中运行和移植应用程序,而无需担心底层系统的兼容性问题。Singularity 的核心目标是解决科学计算中的依赖和兼容性问题,使用户能够方便地在不同的系统(如 HPC 集群、云端、工作站等)上运行一致的工作环境。
安装singularity
在这里插入图片描述

sudo apt-get update && sudo apt-get install -y \
    build-essential \
    libssl-dev \
    uuid-dev \
    libgpgme11-dev \
    squashfs-tools \
    libseccomp-dev \
    pkg-config

当然yum的安装也是有的

sudo yum update -y && \
    sudo yum groupinstall -y 'Development Tools' && \
    sudo yum install -y \
    openssl-devel \
    libuuid-devel \
    libseccomp-devel \
    wget \
    squashfs-tools

然后安装GO

export VERSION=1.11 OS=linux ARCH=amd64 && \
    wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz && \
    sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz && \
    rm go$VERSION.$OS-$ARCH.tar.gz

然后,为 Go 设置你的环境

echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \
    echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \
    source ~/.bashrc

在这里插入图片描述
要确保 Singularity 源代码下载到适当的目录,请使用这些命令。

go get -d github.com/sylabs/singularity
#现在检查您想要安装的 Singularity 版本。
export VERSION=v3.0.3 # or another tag or branch if you like && \
    cd $GOPATH/src/github.com/sylabs/singularity && \
    git fetch && \
    git checkout $VERSION # omit this command to install the latest bleeding edge code from master

到这里GO的配置和singularity都已经安装完成
回到我们的BCR 继续填坑满谷,测试singularity安装是否成功
在这里插入图片描述

如果你安装成功了,直接拉到最后 从 这句话开始看—有两种形式哈(上面奇点下载完成可以直接尝试,看看行不行,不行你就按照我的一步步来)—

如果不行你就回来按照下面一步步来把

#或许你看了下面的重注释的高级分析,我要告诉你的是有坑
在这里插入图片描述
顺着这个连教程你都搞不定
在这里插入图片描述

我出现了跟他一样的问题

Assigning genes :   0%|          | 0/1 [00:00<?, ?it/s]
USAGE
  igblastn [-h] [-help] [-import_search_strategy filename]
    [-export_search_strategy filename] [-germline_db_V germline_database_name]
    [-num_alignments_V int_value] [-germline_db_V_seqidlist filename]
    [-germline_db_D germline_database_name] [-num_alignments_D int_value]
    [-germline_db_D_seqidlist filename]
    [-germline_db_J germline_database_name] [-num_alignments_J int_value]
    [-germline_db_J_seqidlist filename] [-auxiliary_data filename]
    [-min_D_match min_D_match] [-D_penalty D_penalty] [-J_penalty J_penalty]
    [-num_clonotype num_clonotype] [-clonotype_out clonotype_out]
    [-allow_vdj_overlap] [-organism germline_origin]
    [-domain_system domain_system] [-ig_seqtype sequence_type]
    [-focus_on_V_segment] [-extend_align5end] [-min_V_length Min_V_Length]
    [-min_J_length Min_J_Length] [-show_translation] [-db database_name]
    [-dbsize num_letters] [-gilist filename] [-seqidlist filename]
    [-negative_gilist filename] [-negative_seqidlist filename]
    [-entrez_query entrez_query] [-db_soft_mask filtering_algorithm]
    [-db_hard_mask filtering_algorithm] [-subject subject_input_file]
    [-subject_loc range] [-query input_file] [-out output_file]
    [-evalue evalue] [-word_size int_value] [-gapopen open_penalty]
    [-gapextend extend_penalty] [-qcov_hsp_perc float_value]
    [-max_hsps int_value] [-xdrop_ungap float_value] [-xdrop_gap float_value]
    [-xdrop_gap_final float_value] [-searchsp int_value]
    [-sum_stats bool_value] [-penalty penalty] [-reward reward] [-no_greedy]
    [-ungapped] [-culling_limit int_value] [-best_hit_overhang float_value]
    [-best_hit_score_edge float_value] [-window_size int_value]
    [-off_diagonal_range int_value] [-lcase_masking] [-query_loc range]
    [-strand strand] [-parse_deflines] [-outfmt format] [-show_gis]
    [-num_descriptions int_value] [-num_alignments int_value]
    [-line_length line_length] [-max_target_seqs num_sequences]
    [-num_threads int_value] [-remote] [-version]

DESCRIPTION
   Nucleotide-Nucleotide BLAST for immunoglobulin sequences 2.6.1+

Use '-help' to print detailed descriptions of command line arguments
========================================================================

Error: Unknown argument: "c_region_db"
Error:  (CArgException::eInvalidArg) Unknown argument: "c_region_db"
USAGE
  igblastn [-h] [-help] [-import_search_strategy filename]
    [-export_search_strategy filename] [-germline_db_V germline_database_name]
    [-num_alignments_V int_value] [-germline_db_V_seqidlist filename]
    [-germline_db_D germline_database_name] [-num_alignments_D int_value]
    [-germline_db_D_seqidlist filename]
    [-germline_db_J germline_database_name] [-num_alignments_J int_value]
    [-germline_db_J_seqidlist filename] [-auxiliary_data filename]
    [-min_D_match min_D_match] [-D_penalty D_penalty] [-J_penalty J_penalty]
    [-num_clonotype num_clonotype] [-clonotype_out clonotype_out]
    [-allow_vdj_overlap] [-organism germline_origin]
    [-domain_system domain_system] [-ig_seqtype sequence_type]
    [-focus_on_V_segment] [-extend_align5end] [-min_V_length Min_V_Length]
    [-min_J_length Min_J_Length] [-show_translation] [-db database_name]
    [-dbsize num_letters] [-gilist filename] [-seqidlist filename]
    [-negative_gilist filename] [-negative_seqidlist filename]
    [-entrez_query entrez_query] [-db_soft_mask filtering_algorithm]
    [-db_hard_mask filtering_algorithm] [-subject subject_input_file]
    [-subject_loc range] [-query input_file] [-out output_file]
    [-evalue evalue] [-word_size int_value] [-gapopen open_penalty]
    [-gapextend extend_penalty] [-qcov_hsp_perc float_value]
    [-max_hsps int_value] [-xdrop_ungap float_value] [-xdrop_gap float_value]
    [-xdrop_gap_final float_value] [-searchsp int_value]
    [-sum_stats bool_value] [-penalty penalty] [-reward reward] [-no_greedy]
    [-ungapped] [-culling_limit int_value] [-best_hit_overhang float_value]
    [-best_hit_score_edge float_value] [-window_size int_value]
    [-off_diagonal_range int_value] [-lcase_masking] [-query_loc range]
    [-strand strand] [-parse_deflines] [-outfmt format] [-show_gis]
    [-num_descriptions int_value] [-num_alignments int_value]
    [-line_length line_length] [-max_target_seqs num_sequences]
    [-num_threads int_value] [-remote] [-version]

DESCRIPTION
   Nucleotide-Nucleotide BLAST for immunoglobulin sequences 2.6.1+

Use '-help' to print detailed descriptions of command line arguments
========================================================================

Error: Unknown argument: "c_region_db"
Error:  (CArgException::eInvalidArg) Unknown argument: "c_region_db"
ERROR> Input 10kPBMC_CFCOV/dandelion/tmp/all_contig_igblast.fmt7 does not exist.

ERROR> Input 10kPBMC_CFCOV/dandelion/tmp/all_contig_igblast.fmt7 does not exist.

**BLAST Database error: Error: Not a valid version 4 database.**
**BLAST Database error: Error: Not a valid version 4 database.**
Assigning genes : 100%|██████████| 1/1 [00:17<00:00, 17.14s/it]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/miniconda3/envs/dandelion/lib/python3.10/site-packages/sc_dandelion-0.3.9.dev4+g3faaadd-py3.10.egg/dandelion/preprocessing/_preprocessing.py", line 1150, in reannotate_genes
    rename_dandelion(
  File "~/miniconda3/envs/dandelion/lib/python3.10/site-packages/sc_dandelion-0.3.9.dev4+g3faaadd-py3.10.egg/dandelion/utilities/_io.py", line 1016, in rename_dandelion
    fp = filePath.parent / filePath.name.rsplit(ends_with)[0]
AttributeError: 'NoneType' object has no attribute 'parent'

OS information
Linux

Version information
dandelion==0.3.9.dev4 pandas==2.2.2 numpy==1.26.4 matplotlib==3.9.2 networkx==2.7 scipy==1.14.1

Additional context
I have retried in a new window, and now instead of the errors with asterisks above, I got current error. Seems like a blast and igblast confusion?

BLAST Database error: No alias or index file found for nucleotide database [home/dandelion/Github/dandelion/container/database/igblast/database/imgt_human_tr_j] in search path [home/dandelion:home/dandelion/Github/dandelion/container/database/blast:]
BLAST Database error: No alias or index file found for nucleotide database [home/dandelion/Github/dandelion/container/database/igblast/database/imgt_human_tr_d] in search path [home/dandelion:home/dandelion/Github/dandelion/container/database/blast:]

接着我就要告诉你还需要安装blast+ and igblast.
在这里插入图片描述
作者回复也是让你安装最新的版本
在这里插入图片描述
最后结果新的问题来了

I have upgraded both, the error above got solved, but now getting errors as below:

Assigning genes : 0%| | 0/1 [00:00<?, ?it/s]
BLAST query/options error: Germline annotation database human/human_TR_V could not be found in [internal_data] directory
Please refer to the BLAST+ user manual.
BLAST query/options error: Germline annotation database human/human_TR_V could not be found in [internal_data] directory
Please refer to the BLAST+ user manual.
ERROR> Input 10kPBMC_CFCOV/dandelion/tmp/all_contig_igblast.fmt7 does not exist.

ERROR> Input 10kPBMC_CFCOV/dandelion/tmp/all_contig_igblast.fmt7 does not exist.

BLAST Database error: Database memory map file error
BLAST Database error: Database memory map file error
Assigning genes : 100%|██████████| 1/1 [00:09<00:00, 9.30s/it]
Traceback (most recent call last):
File "", line 1, in
File "home/miniconda3/envs/dandelion/lib/python3.10/site-packages/sc_dandelion-0.3.9.dev4+g3faaadd-py3.10.egg/dandelion/preprocessing/_preprocessing.py", line 1150, in reannotate_genes
rename_dandelion(
File "home/miniconda3/envs/dandelion/lib/python3.10/site-packages/sc_dandelion-0.3.9.dev4+g3faaadd-py3.10.egg/dandelion/utilities/_io.py", line 1016, in rename_dandelion
fp = filePath.parent / filePath.name.rsplit(ends_with)[0]
AttributeError: 'NoneType' object has no attribute 'parent'

I have noticed similar issues mentioned in tracer repo and recently in #382. I tried to specify igblast_db parameter either as internal_data in the container folder or home/miniconda3/pkgs/igblast-1.22.0-h6a68c12_1/bin, but it did not work. Can you provide detailed guidance on how to solve this problem? Thanks.

最后如何解决的呢
在这里插入图片描述
问题的链接你们可以自己看最后解决的方式

我的策略安装了最新的 igblast 和 blast ,然后按照运行奇点容器,所有这些都将变得简单 - 它不需要 anndata 进行预处理
当然我也附上安装的代码

wget -c https://ftp.ncbi.nih.gov/blast/executables/igblast/release/LATEST/ncbi-igblast-1.22.0-x64-linux.tar.gz
tar -xvf ncbi-igblast-1.22.0-x64-linux.tar.gz
nano ~/.bashrc
export PATH=$PATH:/home/sayhello/ncbi-igblast-1.22.0/bin
#然后ctrl+o 写入 然后回车 最后ctrl+x 退出
source ~/.bashrc
 #blast 操作根上面一样 
 wget -c https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.16.0+-x64-linux.tar.gz
 #我给了网址后面的操作跟igblast 一样

接着我们下载依赖的数据集,作者已经整理好了,建议先下载后执行shell

# bash/shell
echo "export GERMLINE=$HOME/Documents/Github/dandelion/container/database/germlines/" >> ~/.bash_profile
echo "export IGDATA=$HOME/Documents/Github/dandelion/container/database/igblast/" >> ~/.bash_profile
echo "export BLASTDB=$HOME/Documents/Github/dandelion/container/database/blast/" >> ~/.bash_profile
# reload
source ~/.bash_profile

实际上你可以下载
https://github.com/zktuong/dandelion/tree/master/container/database
在这里插入图片描述
这个是上面的shell对应的文件库,你可以按照shell对应的路径,然后下载到对于的路径然后配置即可

我们还没开始安装包作后续的分析

conda create -n VDJ_BCR python=3.10
conda activate VDJ_BCR
conda install -c conda-forge scanpy python-igraph leidenalg
pip install scanpy
conda install -c conda-forge graph-tool
pip install sc-dandelion

一定要先安装scanpy,看见新的安装了方式了,可以尝试下
在这里插入图片描述

随后在这个VDJ_BCR的环境中装个R,装以下的R包,这个装包是玄学,报错就是缺依赖,依赖下载不下来,可以根据下载失败的链接直接网页下载后,本地安装,重复安装就可以

install.packages(c("optparse", "airr", "shazam", "alakazam", "tigger"))

最后终于可以重新注释了,这个包有点麻烦,我是把所有的坑都踩完了,我感觉直接singularity也会成功,但是我没有尝试

singularity pull library://kt16/default/sc-dandelion:latest
singularity shell --writable-tmpfs -B $PWD sc-dandelion_latest.sif

本地会有一个sif的文件
在这里插入图片描述

把你的单细胞bcr的数据安装我的形式放在一个目录下

在这里插入图片描述

有两种形式哈(上面奇点下载完成可以直接尝试,看看行不行,不行你就按照我的一步步来)

我们先讲第一种

在这里插入图片描述

就是每个文件里面都是all_contig_annotations.csv和all_contig.fasta

最重要的看看原始的前处理脚本

我直接把参数的含义说明

parse_args() 函数的目的是通过命令行解析参数,允许用户灵活配置脚本的运行方式。该函数使用 argparse.ArgumentParser() 来定义各种选项,并将命令行参数转换为程序中的变量。以下是对每个参数的详细解释:

--meta:

类型: 字符串 (文件路径)
说明: 可选的元数据 CSV 文件。文件的第一列应该包含样本 ID,且这些 ID 应与当前工作目录下的文件夹名匹配。可选的 "prefix""suffix" 列可用于修改条形码,还有一个 "individual" 列用于分组样本。如果没有提供此文件,程序将假定所有样本都将被一起分析。
用途: 用于指定每个样本的相关信息,如条形码前缀或后缀,以及是否对样本进行分组。
--chain:

类型: 字符串,默认值为 "IG"
说明: 数据类型,接受两种类型 "IG"(免疫球蛋白链)或 "TR"(T 细胞受体链)。两者的处理管道不同。默认是 "IG"。
用途: 确定所处理的链类型,从而选择相应的预处理和重注释步骤。
--org:

类型: 字符串,默认值为 "human"
说明: 生物体类型,接受 "human""mouse"。指定后可以根据物种选择正确的基因注释。
用途: 决定重注释步骤时使用的人类或小鼠的基因库。
--file_prefix:

类型: 字符串,默认值为 "all"
说明: 指定 contig 文件的前缀,用于确定要处理的文件(如 "PREFIX_contig_annotations.csv""PREFIX_contig.fasta")。
用途: 用于选择不同文件的前缀,以处理特定的数据子集。
--db:

类型: 字符串,默认值为 "imgt"
说明: 数据库类型,接受 "imgt""ogrdb"。指定数据库用于基因重注释。
用途: 决定重注释时使用哪个基因数据库。
--strain:

类型: 字符串,默认值为 None
说明: 指定用于重注释的小鼠品系(仅用于 "ogrdb" 数据库)。如果不指定,默认会使用所有小鼠品系。
用途: 用于小鼠数据的品系特定重注释。
--sep:

类型: 字符串,默认值为 "_"
说明: 设置条形码和前缀/后缀之间的分隔符。如果没有元数据文件,将使用样本名称作为前缀。
用途: 决定条形码和前缀/后缀的格式。
--flavour:

类型: 字符串,默认值为 "strict"
说明: 设置 igblastn 重注释的风格。"strict" 模式会强制执行更严格的 e 值和惩罚阈值,而 "original" 则不会。
用途: 选择基因注释时的严格程度。
--filter_to_high_confidence:

类型: 布尔值,默认未设置
说明: 如果指定,仅保留在 contig 注释中被标记为 "高置信度" 的 contig。
用途: 过滤掉低置信度的数据。
--keep_trailing_hyphen_number:

类型: 布尔值,默认 True
说明: 如果指定,保留条形码末尾的 "-1" 等后缀。
用途: 控制是否保留条形码的尾号。
--skip_format_header:

类型: 布尔值,默认 False
说明: 如果指定,跳过 contig 文件头的格式化步骤。
用途: 控制是否需要格式化 contig 的头信息。
--skip_tigger:

类型: 布尔值,默认 False
说明: 如果指定,跳过 TIgGER 的等位基因重新分配步骤。
用途: 控制是否运行 TIgGER 分析。
--skip_reassign_dj:

类型: 布尔值,默认 True
说明: 如果指定,跳过使用 blastn 重新分配 D 和 J 片段的步骤(仅当风格为 "strict" 时)。
用途: 控制是否在严格模式下重新分配 D 和 J 片段。
--skip_correct_c:

类型: 布尔值,默认 True
说明: 如果指定,跳过在 isotype 分配阶段修正 C 片段的步骤(仅当链类型为 IG 时)。
用途: 控制是否修正 C 片段注释。
--clean_output:

类型: 布尔值,默认 False
说明: 如果指定,移除运行结果中的中间文件,仅保留主要输出文件。
用途: 控制是否清理中间输出文件。
逻辑部分:
args.chain = args.chain.lower(): 将 chain 参数转化为小写,以便于后续处理。
if args.chain not in ["tr", "ig"]: 如果用户输入的 chain 参数既不是 "tr" 也不是 "ig",则抛出错误。
最终返回:
该函数返回 args,其中包含用户通过命令行传入的所有参数。

那么碰到上面的文件我们如何设置参数呢

首先必须在这个目录下

在这里插入图片描述
如果研究的是小鼠加上–org=“mouse” ,研究人就删除,好好看我上面对所有参数的描述,然后加上出

sayhello@xuguangji:~/Biosoft/VDJ_test$ singularity run -B $PWD sc-dandelion_latest.sif dandelion-preprocess --meta meta1.csv --org="mouse"

至于我的meta1.csv 也给你看看
在这里插入图片描述

然后我们讲另外一种输入文件

比如在s10ug_07D的文件夹下是这三种文件,其余的准备文件都不变
在这里插入图片描述
代码我们加上了–file_prefix filtered
–file_prefix:

类型: 字符串,默认值为 “all”
说明: 指定 contig 文件的前缀,用于确定要处理的文件(如 “PREFIX_contig_annotations.csv” 和 “PREFIX_contig.fasta”)。
用途: 用于选择不同文件的前缀,以处理特定的数据子集。

singularity run -B $PWD sc-dandelion_latest.sif dandelion-preprocess --meta meta1.csv --file_prefix filtered --org="mouse"

最后还是多看看我上面写的对参数的说明,然后对应自己的数据改参数

后续分析完成更新Dandelion后续操作


原文地址:https://blog.csdn.net/sayhello1025/article/details/142346698

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!