在服务器上安装SpatialTE
约 389 个字
134 行代码
预计阅读时间 4 分钟
SpatialTE 是一个以空间转录组学对TE进行分析的软件,其基于 MIT 许可开源分发,有关论文原文参阅此处。
项目仓库点此跳转。
环境基本信息
- Server OS: Ubuntu 20.04.6 LTS
- APT Version: 2.0.9(amd64)
- Anaconda Version: conda 24.11.2
跟着README走
SpatialTE项目开发者在README中推荐通过conda部署,其给出的基本步骤如下:
conda env create -f SpatialTE.yml
pip install stpipeline==1.7.9
chmod u+x spatialte_v1.0/*
export PATH=$PATH:/path/to/spatialte
在这个过程中主要遇到了两个问题,第一个是其给出的SpatialTE.yml
中samtools
的版本在conda的仓库中可能没办法找到适配版本的依赖,如果在第一步遇到相应的问题,则使用以下的SpatialTE.yml
:
name: SpatialTE
channels:
- bioconda
- conda-forge
- defaults
dependencies:
- python=3.8
- samtools
- bedtools=2.29.2
- r=4.0.0
好潦草的一个解决方式……(吐槽
第二步pip
则遇到了较大的问题,当时的报错提示有ERROR: Failed building wheel for taggd
这个重要信息,tagged
是一个预构建的二进制发行版,而pip
需要一些依赖才能将其编译为wheel
文件,这个报错是因为缺乏相应依赖导致的,我通过更新pip
与相应依赖来解决:
之后就很顺利了~
通过Docker部署
我一开始就想以Docker的方式安装SpatialTE
,一方面是这样子可以尽可能模拟从0开始安装这个软件所需的各种依赖,另一方面是手痒了想练练(
我使用的Dockerfile文件可见下方,点此下载。
# ==============================
# 预构建
FROM ubuntu:22.04 AS builder
# 预构建依赖
RUN apt-get update -qq && apt-get install -y --no-install-recommends --fix-missing\
build-essential \
wget \
curl \
# wget: 是的孩子们我需要证书
ca-certificates \
autoconf \
automake \
make \
gcc \
perl \
# bedtools: 是的孩子们我找不到python
python3 \
python-is-python3 \
zlib1g-dev \
libbz2-dev \
liblzma-dev \
libcurl4-gnutls-dev \
libssl-dev \
libncurses5-dev \
libdeflate-dev && \
rm -rf /var/lib/apt/lists/*
# 编译 BEDTools
ENV BEDTOOLS_VERSION=2.29.2
WORKDIR /opt
RUN wget -q https://github.com/arq5x/bedtools2/releases/download/v${BEDTOOLS_VERSION}/bedtools-${BEDTOOLS_VERSION}.tar.gz && \
tar -zxvf bedtools-${BEDTOOLS_VERSION}.tar.gz && \
cd bedtools2 && \
make
# 编译 Samtools
ENV SAMTOOLS_VERSION=1.11
WORKDIR /opt
RUN wget -q https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2 && \
tar -xjf samtools-${SAMTOOLS_VERSION}.tar.bz2 && \
cd samtools-${SAMTOOLS_VERSION} && \
./configure --prefix=/usr/local && \
make && \
make install
# ==============================
# 镜像
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ENV ROOT_DIR=/opt
# 运行依赖
RUN apt-get update -qq && apt-get install -y --no-install-recommends \
git \
wget \
curl \
# wget: 是的孩子们我需要证书
ca-certificates \
unzip \
python3 \
python3-pip \
# samtools 和 bedtools 的运行时依赖
zlib1g \
libbz2-1.0 \
liblzma5 \
libcurl4 \
libssl3 \
libncurses5 \
libdeflate0 \
# R 的依赖
software-properties-common \
dirmngr && \
rm -rf /var/lib/apt/lists/*
# 安装R,来自上交镜像
RUN apt update -qq && \
apt install --no-install-recommends software-properties-common dirmngr -y && \
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc && \
add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/" && \
apt install --no-install-recommends r-base -y
# 安装 ST Pipeline
ENV ST_PIPELINE_VERSION=1.7.9
# stpipeline: 是的孩子们我也干了[○・`Д´・ ○]
# 补齐build-essential 与 python3-dev,安装完后删掉
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends build-essential python3-dev && \
pip3 install --no-cache-dir stpipeline==${ST_PIPELINE_VERSION} && \
apt-get purge -y --auto-remove build-essential python3-dev && \
rm -rf /var/lib/apt/lists/*
# 复制工具
COPY --from=builder /opt/bedtools2/bin/* /usr/local/bin/
COPY --from=builder /usr/local/bin/samtools /usr/local/bin/
# 安装 SpatialTE
# ==============================
# COPY源码来自SpatialT仓库,构建镜像前先手动在Dockerfile同目录下执行git clone https://github.com/bvaldebenitom/SpatialTE.git
# ==============================
ENV SPATIALTE_VERSION=1.0
ENV SPATIALTE_DIR=${ROOT_DIR}/spatialTE-${SPATIALTE_VERSION}
WORKDIR ${SPATIALTE_DIR}
COPY ./SpatialTE/release_1.0 ${SPATIALTE_DIR}/
RUN chmod -R u+x ${SPATIALTE_DIR}/
ENV PATH="${SPATIALTE_DIR}:${PATH}"
# 默认工作目录
WORKDIR /data
# 首先在本地准备好一个文件夹,包含数据文件
# 然后通过如下命令启动容器
# docker run --rm -it -v "path/to/your/data":/data -w /data your/image/name bash
至于镜像……还没研究过怎么push到docker hub上哈哈哈,之后再说吧。