这个处理不同基因组区域关系的工具集很不错
liuian 2025-04-24 03:32 130 浏览
Bedtools是处理基因组信息分析的强大工具集合,本文列出自己学习其官方文档的几个点,对后面计算不同样品peak相似性的脚本做了下更新和调整,使用起来更为简单方便。
内容摘要
- 区域注释,如peak注释,peak分布分析,peak与调控元件交集等。
- 区域合并,如求算多样品peak合集,或合并重叠区域
- 区域互补,如得到非基因区
- 利用比对结果对测序广度和深度评估
- 多样品peak相似性计算,评估ChIP类区域结果的样品相似性。
bedtools主要功能
bedtools: flexible tools for genome arithmetic and DNA sequence analysis.
usage: bedtools <subcommand> [options]
The bedtools sub-commands include:
[ Genome arithmetic ]
intersect Find overlapping intervals in various ways.
求区域之间的交集,可以用来注释peak,计算reads比对到的基因组区域
不同样品的peak之间的peak重叠情况。
window Find overlapping intervals within a window around an interval.
closest Find the closest, potentially non-overlapping interval.
寻找最近但可能不重叠的区域
coverage Compute the coverage over defined intervals.
计算区域覆盖度
map Apply a function to a column for each overlapping interval.
genomecov Compute the coverage over an entire genome.
merge Combine overlapping/nearby intervals into a single interval.
合并重叠或相接的区域
cluster Cluster (but don't merge) overlapping/nearby intervals.
complement Extract intervals _not_ represented by an interval file.
获得互补区域
subtract Remove intervals based on overlaps b/w two files.
计算区域差集
slop Adjust the size of intervals.
调整区域大小,如获得转录起始位点上下游3 K的区域
flank Create new intervals from the flanks of existing intervals.
sort Order the intervals in a file.
排序,部分命令需要排序过的bed文件
random Generate random intervals in a genome.
获得随机区域,作为背景集
shuffle Randomly redistrubute intervals in a genome.
根据给定的bed文件获得随机区域,作为背景集
sample Sample random records from file using reservoir sampling.
spacing Report the gap lengths between intervals in a file.
annotate Annotate coverage of features from multiple files.
[ Multi-way file comparisons ]
multiinter Identifies common intervals among multiple interval files.
unionbedg Combines coverage intervals from multiple BEDGRAPH files.
[ Paired-end manipulation ]
pairtobed Find pairs that overlap intervals in various ways.
pairtopair Find pairs that overlap other pairs in various ways.
[ Format conversion ]
bamtobed Convert BAM alignments to BED (& other) formats.
bedtobam Convert intervals to BAM records.
bamtofastq Convert BAM records to FASTQ records.
bedpetobam Convert BEDPE intervals to BAM records.
bed12tobed6 Breaks BED12 intervals into discrete BED6 intervals.
[ Fasta manipulation ]
getfasta Use intervals to extract sequences from a FASTA file.
提取给定位置的FASTA序列
maskfasta Use intervals to mask sequences from a FASTA file.
nuc Profile the nucleotide content of intervals in a FASTA file.
[ BAM focused tools ]
multicov Counts coverage from multiple BAMs at specific intervals.
tag Tag BAM alignments based on overlaps with interval files.
[ Statistical relationships ]
jaccard Calculate the Jaccard statistic b/w two sets of intervals.
计算数据集相似性
reldist Calculate the distribution of relative distances b/w two files.
fisher Calculate Fisher statistic b/w two feature files.
[ Miscellaneous tools ]
overlap Computes the amount of overlap from two intervals.
igv Create an IGV snapshot batch script.
用于生成一个脚本,批量捕获IGV截图
links Create a HTML page of links to UCSC locations.
makewindows Make interval "windows" across a genome.
把给定区域划分成指定大小和间隔的小区间 (bin)
groupby Group by common cols. & summarize oth. cols. (~ SQL "groupBy")
分组结算,不只可以用于bed文件。
expand Replicate lines based on lists of values in columns.
split Split a file into multiple files with equal records or base pairs.安装bedtools
(Linux - Conda软件安装方法)
ct@ehbio:~$ conda install bedtools获得测试数据集(http://quinlanlab.org/tutorials/bedtools/bedtools.html)
ct@ehbio:~$ mkdir bedtools
ct@ehbio:~$ cd bedtools
ct@ehbio:~$ url=https://s3.amazonaws.com/bedtools-tutorials/web
ct@ehbio:~/bedtools$ curl -O ${url}/maurano.dnaseI.tgz
ct@ehbio:~/bedtools$ curl -O ${url}/cpg.bed
ct@ehbio:~/bedtools$ curl -O ${url}/exons.bed
ct@ehbio:~/bedtools$ curl -O ${url}/gwas.bed
ct@ehbio:~/bedtools$ curl -O ${url}/genome.txt
ct@ehbio:~/bedtools$ curl -O ${url}/hesc.chromHmm.bed交集 (intersect)
查看输入文件,bed格式,至少三列,分别是染色体,起始位置(0-based,
包括),终止位置
(1-based,不包括)。第四列一般为区域名字,第五列一般为空,第六列为链的信息。更详细解释见
http://www.genome.ucsc.edu/FAQ/FAQformat.html#format1。
自己做研究CpG岛信息可以从UCSC的Table Browser获得,具体操作见
http://blog.genesino.com/2013/05/ucsc-usages/。
ct@ehbio:~/bedtools$ head -n 3 cpg.bed exons.bed
==> cpg.bed <==
chr1 28735 29810 CpG:_116
chr1 135124 135563 CpG:_30
chr1 327790 328229 CpG:_29
==> exons.bed <==
chr1 11873 12227 NR_046018_exon_0_0_chr1_11874_f 0 +
chr1 12612 12721 NR_046018_exon_1_0_chr1_12613_f 0 +
chr1 13220 14409 NR_046018_exon_2_0_chr1_13221_f 0 +获得重叠区域(既是外显子,又是CpG岛的区域)
ct@ehbio:~/bedtools$ bedtools intersect -a cpg.bed -b exons.bed | head -5
chr1 29320 29370 CpG:_116
chr1 135124 135563 CpG:_30
chr1 327790 328229 CpG:_29
chr1 327790 328229 CpG:_29
chr1 327790 328229 CpG:_29输出重叠区域对应的原始区域(与外显子存在交集的CpG岛)
ct@ehbio:~/bedtools$ bedtools intersect -a cpg.bed -b exons.bed -wa -wb > | head -5- chr1 28735 29810 CpG:_116 chr1 29320 29370
- NR_024540_exon_10_0_chr1_29321_r 0 -
- chr1 135124 135563 CpG:_30 chr1 134772 139696
- NR_039983_exon_0_0_chr1_134773_r 0 -
- chr1 327790 328229 CpG:_29 chr1 324438 328581
- NR_028322_exon_2_0_chr1_324439_f 0 +
- chr1 327790 328229 CpG:_29 chr1 324438 328581
- NR_028325_exon_2_0_chr1_324439_f 0 +
- chr1 327790 328229 CpG:_29 chr1 327035 328581
- NR_028327_exon_3_0_chr1_327036_f 0 +
计算重叠碱基数
ct@ehbio:~/bedtools$ bedtools intersect -a cpg.bed -b exons.bed -wo | head -10- chr1 28735 29810 CpG:_116 chr1 29320 29370
- NR_024540_exon_10_0_chr1_29321_r 0 - 50
- chr1 135124 135563 CpG:_30 chr1 134772 139696
- NR_039983_exon_0_0_chr1_134773_r 0 - 439
- chr1 327790 328229 CpG:_29 chr1 324438 328581
- NR_028322_exon_2_0_chr1_324439_f 0 + 439
- chr1 327790 328229 CpG:_29 chr1 324438 328581
- NR_028325_exon_2_0_chr1_324439_f 0 + 439
- chr1 327790 328229 CpG:_29 chr1 327035 328581
- NR_028327_exon_3_0_chr1_327036_f 0 + 439
- chr1 713984 714547 CpG:_60 chr1 713663 714068
- NR_033908_exon_6_0_chr1_713664_r 0 - 84
- chr1 762416 763445 CpG:_115 chr1 761585 762902
- NR_024321_exon_0_0_chr1_761586_r 0 - 486
- chr1 762416 763445 CpG:_115 chr1 762970 763155
- NR_015368_exon_0_0_chr1_762971_f 0 + 185
- chr1 762416 763445 CpG:_115 chr1 762970 763155
- NR_047519_exon_0_0_chr1_762971_f 0 + 185
- chr1 762416 763445 CpG:_115 chr1 762970 763155
- NR_047520_exon_0_0_chr1_762971_f 0 + 185
计算第一个(-a)bed区域有多少个重叠的第二个(-b)bed文件中有多少个区域
ct@ehbio:~/bedtools$ bedtools intersect -a cpg.bed -b exons.bed -c | head
chr1 28735 29810 CpG:_116 1
chr1 135124 135563 CpG:_30 1
chr1 327790 328229 CpG:_29 3
chr1 437151 438164 CpG:_84 0
chr1 533219 534114 CpG:_94 0
chr1 544738 546649 CpG:_171 0
chr1 713984 714547 CpG:_60 1
chr1 762416 763445 CpG:_115 10
chr1 788863 789211 CpG:_28 9另外还有-v取出不重叠的区域,
-f限定重叠最小比例,-sorted可以对按sort -k1,1 -k2,2n排序好的文件加速操作。
同时对多个区域求交集 (可以用于peak的多维注释)
# -names标注注释来源
# -sorted: 如果使用了这个参数,提供的一定是排序好的bed文件
ct@ehbio:~/bedtools$ bedtools intersect -a exons.bed \
-b cpg.bed gwas.bed hesc.chromHmm.bed -sorted -wa -wb -names cpg gwas chromhmm \
| head -10000 | tail -10- chr1 27632676 27635124
- NM_001276252_exon_15_0_chr1_27632677_chromhmm chr1 27633213
- 27635013 5_Strong_Enhancer
- chr1 27632676 27635124
- NM_001276252_exon_15_0_chr1_27632677_chromhmm chr1 27635013
- 27635413 7_Weak_Enhancer
- chr1 27632676 27635124 NM_015023_exon_15_0_chr1_27632677_f
- chromhmm chr1 27632613 27632813 6_Weak_Enhancer
- chr1 27632676 27635124 NM_015023_exon_15_0_chr1_27632677_f
- chromhmm chr1 27632813 27633213 7_Weak_Enhancer
- chr1 27632676 27635124 NM_015023_exon_15_0_chr1_27632677_f
- chromhmm chr1 27633213 27635013 5_Strong_Enhancer
- chr1 27632676 27635124 NM_015023_exon_15_0_chr1_27632677_f
- chromhmm chr1 27635013 27635413 7_Weak_Enhancer
- chr1 27648635 27648882 NM_032125_exon_0_0_chr1_27648636_f cpg
- chr1 27648453 27649006 CpG:_63
- chr1 27648635 27648882 NM_032125_exon_0_0_chr1_27648636_f
- chromhmm chr1 27648613 27649413 1_Active_Promoter
- chr1 27648635 27648882 NR_037576_exon_0_0_chr1_27648636_f cpg
- chr1 27648453 27649006 CpG:_63
- chr1 27648635 27648882 NR_037576_exon_0_0_chr1_27648636_f
- chromhmm chr1 27648613 27649413 1_Active_Promoter
合并区域
bedtools merge输入的是按sort -k1,1 -k2,2n排序好的bed文件。
只需要输入一个排序好的bed文件,默认合并重叠或邻接区域。
ct@ehbio:~/bedtools$ bedtools merge -i exons.bed | head -n 5
chr1 11873 12227
chr1 12612 12721
chr1 13220 14829
chr1 14969 15038
chr1 15795 15947合并区域并输出此合并后区域是由几个区域合并来的
ct@ehbio:~/bedtools$ bedtools merge -i exons.bed -c 1 -o count | head -n 5
chr1 11873 12227 1
chr1 12612 12721 1
chr1 13220 14829 2
chr1 14969 15038 1
chr1 15795 15947 1合并相距90 nt内的区域,并输出是由哪些区域合并来的
# -c: 指定对哪些列进行操作
# -o: 与-c对应,表示对指定列进行哪些操作
# 这里的用法是对第一列做计数操作,输出这个区域是由几个区域合并来的
# 对第4列做收集操作,记录合并的区域的名字,并逗号分隔显示出来
ct@ehbio:~/bedtools$ bedtools merge -i exons.bed -d 340 -c 1,4 -o count,collapse | head -4
chr1 11873 12227 1 NR_046018_exon_0_0_chr1_11874_f
chr1 12612 12721 1 NR_046018_exon_1_0_chr1_12613_f
chr1 13220 15038 3 NR_046018_exon_2_0_chr1_13221_f,NR_024540_exon_0_0_chr1_14362_r,NR_024540_exon_1_0_chr1_14970_r
chr1 15795 15947 1 NR_024540_exon_2_0_chr1_15796_r计算互补区域
给定一个全集,再给定一个子集,求另一个子集。比如给定每条染色体长度和外显子区域,求非外显子区域。给定基因区,求非基因区。给定重复序列,求非重复序列等。
重复序列区域的获取也可以用下面提供的链接:
http://blog.genesino.com/2013/05/ucsc-usages/。
ct@ehbio:~/bedtools$ head genome.txt
chr1 249250621
chr10 135534747
chr11 135006516
chr11_gl000202_random 40103
chr12 133851895
chr13 115169878
chr14 107349540
chr15 102531392
ct@ehbio:~/bedtools$ bedtools complement -i exons.bed -g genome.txt | head -n 5
chr1 0 11873
chr1 12227 12612
chr1 12721 13220
chr1 14829 14969
chr1 15038 15795基因组覆盖广度和深度
计算基因组某个区域是否被覆盖,覆盖深度多少。有下图多种输出格式,也支持RNA-seq数据,计算junction-reads覆盖。
genome.txt里面的内容就是染色体及对应的长度。
# 对单行FASTA,可如此计算
# 如果是多行FASTA,则需要累加
ct@ehbio:~/bedtools$ awk 'BEGIN{OFS=FS="\t"}{\
if($0~/>/) {seq_name=$0;sub(">","",seq_name);} \
else {print seq_name,length;} }' ../bio/genome.fa | tee ../bio/genome.txt
chr1 60001
chr2 54001
chr3 54001
chr4 60001
ct@ehbio:~/bedtools$ bedtools genomecov -ibam ../bio/map.sortP.bam -bga \
-g ../bio/genome.txt | head
# 这个warning很有意思,因为BAM中已经有这个信息了,就不需要提供了
*****
*****WARNING: Genome (-g) files are ignored when BAM input is provided.
*****
# bedgraph文件,前3列与bed相同,最后一列表示前3列指定的区域的覆盖度。
chr1 0 11 0
chr1 11 17 1
chr1 17 20 2
chr1 20 31 3
chr1 31 36 4
chr1 36 43 6
chr1 43 44 7
chr1 44 46 8
chr1 46 48 9
chr1 48 54 10两个思考题:
怎么计算有多少基因组区域被测到了?
怎么计算平均测序深度是多少?
数据集相似性
bedtools jaccard计算的是给定的两个bed文件之间交集区域(intersection)占总区域(union-intersection)的比例(jaccard)和交集的数目(n_intersections)。
ct@ehbio:~/bedtools$ bedtools jaccard \
-a fHeart-DS16621.hotspot.twopass.fdr0.05.merge.bed \
-b fHeart-DS15839.hotspot.twopass.fdr0.05.merge.bed
intersection union-intersection jaccard n_intersections
81269248 160493950 0.50637 130852小思考:1. 如何用bedtools其它工具算出这个结果?2. 如果需要比较的文件很多,怎么充分利用计算资源?
一个办法是使用for循环,
双层嵌套。这种用法也很常见,不管是单层还是双层for循环,都有利于简化重复运算。
ct@ehbio:~/bedtools$ for i in *.merge.bed; do \
for j in *.merge.bed; do \
bedtools jaccard -a $i -b $j | cut -f3 | tail -n +2 | sed "s/^/$i\t$j\t/"; \
done; done >total.similarity另一个办法是用parallel,不只可以批量,更可以并行。
root@ehbio:~# yum install parallel.noarch
# parallel 后面双引号("")内的内容为希望用parallel执行的命令,
# 整体写法与Linux下命令写法一致。
# 双引号后面的 三个相邻冒号 (:::)默认用来传递参数的,可多个连写。
# 每个三冒号后面的参数会被循环调用,而在命令中的引用则是根据其出现的位置,分别用{1}, {2}
# 表示第一个三冒号后的参数,第二个三冒号后的参数。
#
# 这个命令可以替换原文档里面的整合和替换, 相比于原文命令生成多个文件,这里对每个输出结果
# 先进行了比对信息的增加,最后结果可以输入一个文件中。
#
ct@ehbio:~/bedtools$ parallel "bedtools jaccard -a {1} -b {2} | awk 'NR> | cut -f 3 \
| sed 's/^/{1}\t{2}\t/'" ::: `ls *.merge.bed` ::: `ls *.merge.bed` >totalSimilarity.2
# 上面的命令也有个小隐患,并行计算时的输出冲突问题,可以修改为输出到单个文件,再cat到一起
ct@ehbio:~/bedtools$ parallel "bedtools jaccard -a {1} -b {2} | awk 'NR> | cut -f 3 \
| sed 's/^/{1}\t{2}\t/' >{1}.{2}.totalSimilarity_tmp" ::: `ls *.merge.bed` ::: `ls *.merge.bed`
ct@ehbio:~/bedtools$ cat *.totalSimilarity_tmp >totalSimilarity.2
# 替换掉无关信息
ct@ehbio:~/bedtools$ sed -i -e 's/.hotspot.twopass.fdr0.05.merge.bed//' \
-e 's/.hg19//' totalSimilarity.2 totalSimilarity.2数据表格式如下 (数据是假的):
fMusle_leg-DS19115 fMusle_back-DS18454 0.55
fMusle_leg-DS19115 fHeart-DS15643 0.4
fHeart-DS15643 fHeart-DS16621 0.8
fHeart-DS15643 fHeart-DS15839 0.7
fHeart-DS16621 fHeart-DS15839 0.7得到结果后,就可以绘制相关性热图或PCA了。
也可以使用下面的命令转换成Wide format矩阵,用高颜值可定制在线绘图工具-第三版绘制。
# 这里面b和c可以用一个,因为是一个对称阵
# 如果2和3列内容不同,此脚本也可用
ct@ehbio:~/bedtools$ awk 'BEGIN{OFS=FS="\t"}{a[$1, $2]=$3; b[$1]=1; c[$2]=1;}END\
{printf("ID"); for(i in c) printf("\t%s", i); \
for (i in b) {printf("%s", i); for(j in c) {printf("\t%s", a[i, j]);} print "";}}原文档(
http://quinlanlab.org/tutorials/bedtools/bedtools.html)的命令,稍微有些复杂,利于学习不同命令的组合。使用时推荐使用上面的命令。
ct@ehbio:~/bedtools$ parallel "bedtools jaccard -a {1} -b {2} \
| awk 'NR>1' | cut -f 3 \
> {1}.{2}.jaccard" \
::: `ls *.merge.bed` ::: `ls *.merge.bed`This command will create a single file containing the pairwise Jaccard
measurements from all 400 tests.
find . \
| grep jaccard \
| xargs grep "" \
| sed -e s"/\.\///" \
| perl -pi -e "s/.bed./.bed\t/" \
| perl -pi -e "s/.jaccard:/\t/" \
> pairwise.dnase.txtA bit of cleanup to use more intelligible names for each of the samples.
cat pairwise.dnase.txt \
| sed -e 's/.hotspot.twopass.fdr0.05.merge.bed//g' \
| sed -e 's/.hg19//g' \
> pairwise.dnase.shortnames.txtNow let’s make a 20x20 matrix of the Jaccard statistic. This will allow
the data to play nicely with R.
awk 'NF==3' pairwise.dnase.shortnames.txt \
| awk '$1 ~ /^f/ && $2 ~ /^f/' \
| python make-matrix.py \
> dnase.shortnames.distance.matrix- 上一篇:安装Dify源码并修改前端发布
- 下一篇:bug现场谜之进程为什么消失了?
相关推荐
-
- 驱动网卡(怎么从新驱动网卡)
-
网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...
-
2026-01-30 00:37 liuian
- win10更新助手装系统(微软win10更新助手)
-
1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...
- windows11专业版密钥最新(windows11专业版激活码永久)
-
Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...
-
- 手机删过的软件恢复(手机删除过的软件怎么恢复)
-
操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...
-
2026-01-29 23:55 liuian
- 一键ghost手动备份系统步骤(一键ghost 备份)
-
步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。 步骤...
- 怎么创建局域网(怎么创建局域网打游戏)
-
1、购买路由器一台。进入路由器把dhcp功能打开 2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。 3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...
- 精灵驱动器官方下载(精灵驱动手机版下载)
-
是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...
- 一键还原系统步骤(一键还原系统有哪些)
-
1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。 2、在弹出的“准备安装”窗口中,可...
- 电脑加速器哪个好(电脑加速器哪款好)
-
我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...
- 任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)
-
是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...
- u盘怎么恢复文件(u盘文件恢复的方法)
-
开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...
- 系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)
-
1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...
-
- 剪贴板权限设置方法(剪贴板访问权限)
-
1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...
-
2026-01-29 21:37 liuian
- 平板系统重装大师(平板重装win系统)
-
如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...
- 联想官网售后服务网点(联想官网售后服务热线)
-
联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
