UCSC高效获取启动子序列:从TSS定位到批量提取全攻略

做启动子相关研究的人,几乎都经历过这个场面:从某个数据库里下了一段“启动子序列”,实验做完才发现方向是反的,或者坐标版本对不上,又或者拿到的其实只是转录本的一部分。我早期也在这上面栽过跟头,后来把整套取启动子序列的流程理顺之后才明白,大部分问题都出在一件事上——没在UCSC里先把启动子的边界定义清楚。

这篇就来聊聊我日常怎么用UCSC高效获取启动子序列:怎么从基因名快速定位到转录起始位点(TSS),怎么用浏览器视图和Table Browser两种方式提取序列,怎么一次性批量拿几十上百个基因的启动子,以及我踩过的一些坑和校验套路。内容兼顾生信入门者和经常做启动子克隆、转录因子结合位点预测、启动子区变异筛查的实验研究人员,拿到手就能照着操作。

1. 启动子序列这件事,为什么绕不开UCSC

1.1 启动子不是一个“一键下载”的固定对象

很多人以为启动子就是基因上游某一段固定长度的序列,比如“上游2000 bp”,输个坐标就能拿到。实际操作起来远没这么简单——启动子不是一个数据库里标注好的“实体”,而是转录起始位点(TSS)上游和下游的一段调控区域,不同数据库、不同转录本注释给出的TSS可能相差几十到几百个碱基。

同一条染色体上,同一个基因经常有多个转录本(isoform),每个转录本都可能拥有自己的TSS和启动子区域。哪怕你指定“chr1:1000-3000”这样一个坐标区间,得到的也只是这段位置的基因组序列,至于这段序列算不算某个基因的启动子,取决于你以哪个转录本的TSS为锚点。

所以“取启动子序列”的正确第一步,永远是先确定你关心的是哪个TSS、哪个转录本,然后在这个锚点上定义上下游边界。绕开这个前提直接去爬序列,后面大概率要返工。

1.2 为什么我优先用UCSC,而不是NCBI或Ensembl

NCBI Gene可以查到基因坐标,Ensembl也能下载启动子序列,但我日常还是最常用UCSC,原因是它的操作路径更贴近“先定TSS,再取序列”这个逻辑。

对比项UCSC Genome BrowserNCBI GeneEnsembl
TSS定位速度输入基因名直接跳到转录本结构,多个isoform并列展示能看到转录本信息,但要逐层点进细节页定位准确,但页面层级较多
序列导出Table Browser一键输出FASTA,自动处理方向一般需要手工确认区域和链向有序列下载入口,批量不如Table Browser顺手
调控注释同屏TSS旁边就是CpG岛、组蛋白修饰、转录因子ChIP-seq等track注释分散也有调控track,但配置稍复杂
批量获取支持粘贴ID列表,一次输出上百条序列不便批量可用BioMart,但学习成本更高
可重复性配置可以保存Session,便于复现一般一般

UCSC的Table Browser在批量导出序列时,会自动按基因方向返回上游序列,这一点非常省事。相比之下,在NCBI里取负链基因的启动子,经常要自己手动做反向互补,一不留神就反了。

1.3 拿到启动子之后要做什么

之所以强调“高效获取”,是因为启动子序列从来不是终点,而是很多实验和分析的共同起点。

最常见的用途包括:启动子克隆加荧光素酶报告基因实验,验证某个片段有没有转录活性;转录因子结合位点预测,把FASTA喂给JASPAR或MEME Suite扫描motif;启动子区SNP或变异筛查,看突变落在哪个可能的调控元件上;启动子甲基化检测引物设计,需要精确定位CpG岛附近区域;还有近几年比较火的CRISPR干扰启动子筛选,也需要以启动子坐标为基础设计sgRNA。

在这些场景里,序列的边界、方向、版本一旦出错,后面所有分析都会跟着错。所以下面的内容重点放在“如何拿得对、拿得全、拿得快”上。

2. 从基因名到启动子坐标:先理清边界再取序列

2.1 三个关键概念:转录本、TSS、上游方向

在动手操作UCSC之前,我建议先把三个概念在脑子里过一遍。

第一个是转录本。同一个基因可以转录出多个mRNA异构体,UCSC里会按RefSeq、Ensembl等来源列出多个ID。不同转录本的起始外显子可能不同,TSS就不同,启动子区域也因此不同。所以取序列前要明确“以哪个转录本为准”。

第二个是TSS。转录起始位点是启动子坐标的锚点。通常说的“上游2000 bp”,指的是TSS上游2000 bp,不是基因最左边坐标往左2000 bp。正链基因的TSS坐标是起始位点,负链基因的TSS位于基因结构的最右侧,取上游时实际坐标是递减方向。

第三个最容易出错:上游方向。很多人在浏览器里看到一个负链基因,直接复制“chr1:1000-2000”这段正链坐标的序列,然后拿去设计引物,结果把基因的“下游”当成了“上游”。原因就在于这段坐标对应的序列是基因组正链的序列,而负链基因的启动子是以负链为模板转录的,正链坐标提取出的序列和实际启动子序列正好是反向互补关系。

2.2 第一步操作:在UCSC里定位目标转录本和TSS

UCSC定位操作的完整路径并不复杂,但每一个选项都有讲究。

  1. 打开UCSC Genome Browser主页,点击顶部“Genomes”下拉框,先选物种,再选基因组版本。人类数据最常用的是GRCh38/hg38,老一些的项目可能用GRCh37/hg19。这里一定要记下版本号,后面所有坐标都基于这个版本。

  2. 在搜索框输入基因名或转录本ID。基因名输入后会出现匹配下拉列表,如果多个物种有同名的基因,注意物种标识。输入RefSeq登录号(比如带NM_前缀的编号)则能直接锁定某个具体转录本。

  3. 点击进入基因详情页,页面会展示该基因的多个转录本结构,以及它们在染色体上的起止坐标和链向。每个转录本条目下能看到CDS、UTR、外显子位置。

  4. 从转录本列表里找到你打算用的那个。判断标准通常是:是否带NM_前缀的代表性转录本,是否有“reviewed”或“canonical”标记,是否在你的研究体系里被文献经常引用。记录该转录本的起始坐标、终止坐标、TSS坐标和链方向。

2.3 第二步操作:圈定启动子区间

有了TSS,就可以定义启动子区间了。不同研究目的对区间长度的需求不一样。

如果只是做转录因子结合位点预测,取TSS上游2000 bp(即-2000到-1)基本够用,很多数据库和工具也默认这个范围。如果要做启动子克隆和报告基因实验,强烈建议把区间取为TSS上游2000 bp到TSS下游200 bp左右,也就是-2000到+200。因为核心启动子元件通常分布在TSS上下游几十个碱基内,只取上游容易把Inr、DPE这类元件切掉,克隆出来的片段转录活性显著下降。

坐标换算很简单。假设某个正链转录本的TSS位于chr1:12,345,678(虚拟位置举例),取-2000到+200的区间就是:

  • 起点:chr1:12,343,678
  • 终点:chr1:12,345,878

如果基因在负链,TSS在转录本最右侧,则“上游”是坐标递减的方向,-2000区域对应的坐标是TSS坐标减2000。这里务必先做一次正向和反向验证,再进入序列提取环节。

3. 两种取序列的路径:浏览器视图与Table Browser批处理

3.1 路径一:浏览器里调整窗口,用“DNA”功能导出FASTA

单基因、临时查看、想同时确认启动子区域在基因组上的上下文时,我一般直接用浏览器视图提取,操作最快。

把2.3算好的坐标区间输入UCSC页面上方的位置框,比如“chr1:12,343,678-12,345,878”,点击“go”跳转。窗口会居中显示这段区域。此时注意观察轨道里基因模型的方向箭头——如果基因是负链,箭头应该指向左侧,这时候取到的“正向”序列仍然不是启动子的模板链序列。

接下来点击顶部菜单栏“View”下的“DNA”,或者直接点工具栏里的“DNA”按钮。弹出的对话框中最重要的选项是“Mask repeats and lower-case”:如果要做PCR引物设计或克隆,记得选择不要屏蔽重复序列,也就是让输出尽量保留原始大写的A/T/G/C。重复序列被转成小写并不会改变序列本身,但会给引物设计软件带来干扰。

点击“Submit”后会得到一段FASTA。标题行包含坐标和链信息,序列就是该坐标区间的单链DNA序列。如果想要反向互补序列,网页上通常也有对应选项,或者拿到序列后用其他工具处理一下。

这条路径适合一两个基因的快速提取,它的最大优点是直观——你能眼睁睁看到取出的区域对不对、基因方向对不对。缺点是如果要做几十个基因,一天都在重复点击,效率太低。

3.2 路径二:Table Browser参数化导出序列

当任务变成“按基因列表批量取启动子序列”,我会改用Table Browser,操作可重复、参数明确、一次能处理大量基因。

进入UCSC主页后点击“Tools”菜单下的“Table Browser”,然后按下面的参数设置:

设置项推荐取值说明
cladeMammal按物种分类选择
genomeHuman(或其他物种)与你的实验一致
assemblyGRCh38/hg38和定位TSS时保持同一个版本
groupGenes and Gene Prediction Tracks找基因注释类数据
trackNCBI RefSeq常用基因注释来源,ID稳定
region坐标区间或粘贴基因ID列表根据任务选择
output formatsequence输出序列不是表格
Sequence Retrieval Method5' upstream按基因方向取上游序列
upstream bases2000需要多长就填多少

设置完点击“get output”后,会进入序列检索选项页。把“Sequence Retrieval Method”选成“5' upstream”,填入上游碱基数2000,然后提交。工具会按基因所在链的方向自动提取TSS上游指定长度的序列,并自动处理反向互补。

这一步是Table Browser最有价值的地方:你不用自己判断正链负链,工具返回的就是以基因为方向的上游序列。拿到FASTA后,每条序列的标题会带上基因ID和坐标信息,保存成文本即可。

3.3 什么时候用哪条路径

我的习惯是:1到3个基因,用浏览器视图路径,边看边取,心里踏实;10个以上基因,直接上Table Browser;如果是需要反复更新的长期项目,把Table Browser的配置保存到UCSC Session里,下次直接调用。

这里也提醒一句,Table Browser的region如果选“position”,一次只能输入一个区间。真要批量处理,要用它的“paste IDs”模式,具体操作在下一节展开。

4. 高通量场景:几十个基因的启动子批量获取与下游衔接

4.1 批量思路一:在Table Browser里粘贴基因ID列表

需要一次性取几十个基因的启动子时,不建议用region里的“position”逐条输入坐标,而是用Table Browser的标识符列表模式。

在region下拉框里选择“define regions”,然后选择“paste IDs”。此时可以输入一组RefSeq基因ID或基因名,每行一个。UCSC会识别这些ID并映射到对应的基因组区间。

粘贴完成后,其余输出设置不变,仍然选择“sequence”格式,Sequence Retrieval Method选“5' upstream”,填好碱基数。提交后返回的FASTA文件里包含全部基因的上游序列,每条的标题行带着基因ID,方便后续按ID拆分。

我实测过几百个基因的规模,这个方式一次也能完成,只是输出页面的加载时间会长一些。如果网络环境不稳,建议把列表拆成几十个一组分批提交,避免超时报错。输出结果保存为本地文本文件,就是一个可以直接给下游工具用的启动子序列集。

4.2 批量思路二:先导坐标表,再用脚本从本地基因组提取

如果不想每次取序列都依赖网页交互,或者后续要做更灵活的分析(比如同时提取-2000到+200的区域、不同基因用不同长度),可以在Table Browser里把基因坐标表导成BED格式,再用脚本从本地基因组序列文件里提取。

之所以推荐BED坐标表,因为它是一个标准格式,染色体、起止位置、链方向都在同一行,可以被很多工具和处理流程复用。导出BED时,在Table Browser的output format里选“BED”,得到的内容类似:

chr1 12343678 12345878 geneX 0 + chr2 987654 989654 geneY 0 -

拿到BED后,可以用pyfaidx读取本地基因组FASTA,按每条记录起止切片,负链记录做reverse complement,然后写成统一的FASTA。下面是示意代码,步骤不复杂:

from pyfaidx import Fasta genome = Fasta("hg38.fa") promoter_length = 2000 results = [] # bed_lines: 从BED文件读入的 [chrom, start, end, name, score, strand] for chrom, start, end, name, _, strand in bed_lines: if strand == "+": seq = genome[chrom][start-promoter_length:start] else: seq = genome[chrom][end:end+promoter_length] # 负链取上游,实际坐标为[end, end+length],再反向互补 seq = str(seq.reverse_complement()) results.append(f">{name}|{chrom}:{start}-{end}|{strand}\n{seq}")

这段代码的关键在于负链的处理逻辑:负链基因的启动子位于转录本坐标的右侧,所以切片要切在end和end+length之间,然后对整个片段做reverse complement,得到以负链为方向的上游序列。

用本地脚本的好处是可追溯、可重现,整个提取过程完全由坐标表驱动,不容易受网页改版影响。缺点是需要先准备对应版本的基因组FASTA文件,这个文件可以从公共数据源下载,第一次准备时多花点时间,后续一劳永逸。

4.3 拿到批量序列后怎么衔接下游工具

批量拿到FASTA后,先别急着丢进分析工具,花两分钟检查一下文件里每条序列的标题和长度。我见过不少情况,基因ID列表里混入了某个基因的非编码转录本,导致输出序列对应的是非启动子区域。

做完基本检查后,就可以按目的接入下游了。做引物设计,把序列给Primer3或Primer-BLAST,设计时注意避开SNP位点;做转录因子结合位点预测,取TSS上游500 bp到下游50 bp这个更保守的区域,提交给MEME Suite或JASPAR;做启动子区变异注释,把启动子坐标区间提取出来,用VEP或ANNOVAR注释;做克隆,则直接把FASTA序列加酶切位点合成引物。

这里有个容易被忽略的细节:批量FASTA的下游处理工具,大部分按序列标题中的ID来跟踪来源。因此在导出时就要保证ID可读,比如包含基因名和坐标。如果默认的标题格式里只有一串字母数字编号,建议先解析文件,重命名后再继续,否则后面很难回溯哪条序列属于哪个基因。

5. 启动子提取的常见坑与校验方法

5.1 方向坑:负链基因的启动子最容易拿反

我在第2章提过这个坑,但因为它太常见,值得单独拿出来讲。负链基因的转录方向是染色体坐标递减方向,它的“上游”序列位于转录本在浏览器显示位置的右侧,也就是坐标更大的那一边。

很多人取序列时习惯复制浏览器里显示的坐标区间,但浏览器默认显示的是正链方向。如果直接拿这个区间的序列去设计上游引物,等于把启动子序列完全反向了。用Table Browser的“5' upstream”功能可以避免这个问题,因为它会自动按基因方向处理。实在要用浏览器视图取序列,取完后务必确认输出结果的标题里有strand信息,或者手动做一次反向互补再使用。

5.2 版本坑:hg19还是hg38,坐标差几千甚至几十万碱基

不同基因组版本之间的坐标差异,可能只有几个碱基,也可能相距甚远,完全取决于基因组结构在那个区域有没有大的重排。我见过有人在一个项目里混合使用hg19注释的启动子坐标和hg38版本的基因组序列,最后实验发现PCR条带位置完全不对。

怎么核对版本?最简单是看UCSC页面左上角的assembly标签,或者看BLAT结果里的版本信息。如果项目里多人协作,建议在文件名、记录表里统一标明版本号。启动子坐标表里加一列“assembly”写上hg38或hg19,能避免后面很多麻烦。

5.3 多转录本坑:同一个基因,不同TSS对应不同启动子

基因的多个转录本不只影响注释ID,也直接改变TSS和启动子区间。选择不同的TSS,得到的上游序列可能完全不同。特别是基因结构复杂、有多个转录起始外显子时,启动子区域可能相差数万碱基。

遇到这种情况,我的处理原则是:优先选择代表功能蛋白的经典转录本,例如RefSeq里带NM_前缀的主要转录本,或Ensembl标注为canonical的转录本。如果课题关注某特定组织或细胞类型里的表达,还要结合这个细胞里实际表达的转录本异构体来判断,不要盲目套用一个永远“最经典”的TSS。

5.4 序列内容坑:小写重复区域、N碱基和个体SNP

从UCSC输出序列时,如果保留了默认的重复序列屏蔽设置,Alu、LINE等重复区域会被转成小写。小写本身无害,但有些工具会把小写区域当低质量数据,或者在做引物设计时错误避开。如果目的是拿完整序列,建议在DNA输出页面选择不屏蔽。另一个更麻烦的是基因组组装空缺,某些区域在参考基因组里就是一连串的N。如果启动子刚好落在这种gap区,扩增引物可能根本没有扩增产物,这时候要换个转录本或者明确记录数据缺失。

还有一点容易忽略:参考基因组序列是共识序列,不等于你手上样本的序列。启动子区的单个SNP可能影响转录因子结合位点,也可能让PCR引物错配。设计引物时尽量在引物位置排除群体频率较高的SNP,可以用dbSNP或Ensembl VEP做一次快速筛查。

5.5 一套稳妥的校验链路

每次提取完启动子序列,我都建议走一遍校验链路,步骤不多但能拦住绝大多数低级错误。

第一步是BLAT回帖。把提取的序列粘贴到UCSC的BLAT工具里,查看结果是否落回预期的染色体位置,链方向是否和预期一致。正链基因的启动子序列回帖后应该显示在正链,负链基因如果做了正确的反向互补,回帖后应该显示在负链,坐标和来源位置一致。

第二步是交叉对比。从Ensembl或NCBI的对应区域下载同样长度的序列,和UCSC结果做比对。一般启动子区域保守性不如编码区,但两套数据库在同版本下的坐标一致,序列完全可以对齐。

第三步是实验验证。如果是做克隆实验,最后判断标准仍然是PCR产物条带大小是否正确、克隆测序结果是否与参考序列一致。这一步没有多说的余地,序列本身对不对,跑一次PCR就知道。

我在实际使用中最深的体会是:取启动子序列这件事,80%的错误不是操作问题,而是概念模糊——没确认TSS,没确认版本,没确认链方向。把这几个点先理清楚,UCSC的取序列功能几乎是零门槛的。

最后再分享一个不常见的小技巧。每次取启动子序列时,哪怕你只需要上游2000 bp,也建议顺手把区间延伸到TSS下游的100到200 bp。很多启动子克隆片段活性差,不是启动子不够长,而是TSS下游的Inr、DPE等核心启动子元件被丢掉了。我后来统一取-2000到+200,实验稳定了很多。如果你现在还只取上游序列,下次可以试试这个边界,尤其在报告基因实验里,差异会非常明显。

相关新闻

STM32与1.3寸OLED驱动实战:基于IIC协议与SH1106芯片的完整方案

STM32与1.3寸OLED驱动实战:基于IIC协议与SH1106芯片的完整方案

1. 项目概述与方案定位这块1.3寸OLED屏幕,想必很多做嵌入式、玩单片机的人手里都有一片。它体积小、分辨率高、不需要背光、亮度足、功耗还低,特别适合做状态显示、菜单界面、波形绘制这类任务。我这次把STM32和这块屏通过IIC接口(I2C&#x…

2026/10/20 23:30:08 阅读更多 →
Hermes入门优先级路线:消息模型、任务编排、错误处理与可观测性

Hermes入门优先级路线:消息模型、任务编排、错误处理与可观测性

1. 为什么“入门顺序”比“功能清单”更重要1.1 三个月踩坑后的真实感受刚接触 Hermes 的前两周,我跟大多数人一样,一头扎进功能列表里,看到什么新鲜就试什么。结果三个月下来回头看,真正让我效率发生质变的,其实只有四…

2026/10/20 23:30:08 阅读更多 →
PPT模板即代码:用ppt-master实现幻灯片工程化生成

PPT模板即代码:用ppt-master实现幻灯片工程化生成

1. 项目概述:这不是一个PPT模板库,而是一套可编程的幻灯片生成引擎“ppt-master”这个词最近在技术圈和内容创作社区里悄悄升温,但很多人第一反应是——“又一个PPT模板网站?”其实完全不是。我第一次看到这个词是在某次内部工具分…

2026/10/20 23:29:04 阅读更多 →

最新新闻

开源日报热门项目实操:终端AI助手、剪贴板同步与自托管监控

开源日报热门项目实操:终端AI助手、剪贴板同步与自托管监控

1. 先说说这一期的热门全景怎么观察我做开源项目日报已经有一段时间了。每天早上第一件事,不是打开各种资讯站,而是直接去代码托管平台的榜单上看一圈,再结合社区讨论、release动态、issue反馈,综合判断这一天到底哪些项目值得被写…

2026/10/21 0:52:38 阅读更多 →
有限元面试53题:从刚度矩阵到工程实战的复习指南

有限元面试53题:从刚度矩阵到工程实战的复习指南

一提到“有限元面试”,很多人第一反应就是背公式、刷题。但等真正坐到面试桌对面,面试官问的往往不是“你有多少年经验”,而是“你算过的东西,你真的懂吗”。这份复习指南的核心,就是围绕53道有限元(FEA&am…

2026/10/21 0:52:38 阅读更多 →
游戏支付平台源码:轻量级支付中台搭建与避坑指南

游戏支付平台源码:轻量级支付中台搭建与避坑指南

简介:这是一套面向游戏运营与支付系统开发者的完整技术方案源码包,涵盖游戏支付平台、充值平台、第三方支付对接及游戏网关支付接口四大核心模块,适用于中小型游戏公司快速搭建合规、可扩展的支付中台。资源共2000个文件,主体为Ja…

2026/10/21 0:52:38 阅读更多 →
8类AI文献综述工具全解析:从检索到评述的流水线指南

8类AI文献综述工具全解析:从检索到评述的流水线指南

写文献综述最让人崩溃的不是“写”,而是“综述”这两个字背后的整套流程——找文献、筛文献、读文献、分类、归纳、梳理脉络、找研究空白、建框架、动笔写。我当年写第一篇综述熬了三个通宵,最后被导师一句“只有罗列,没有评述”打回重来&…

2026/10/21 0:51:37 阅读更多 →
Redisson缓存报错missing @class?序列化配置与排查修复全指南

Redisson缓存报错missing @class?序列化配置与排查修复全指南

如果你在项目里用 Redisson 做分布式缓存,get()读取数据时突然抛出missing type id property class,说明你写入缓存的数据格式和读取时使用的解析规则已经对不上了。这个报错我前阵子刚踩过,第一反应以为是get()方法用错了,后来才…

2026/10/21 0:51:37 阅读更多 →
MySQL事务底层原理:undo/redo日志、MVCC与锁机制全解析

MySQL事务底层原理:undo/redo日志、MVCC与锁机制全解析

1. 事务到底在解决什么问题很多刚接触数据库的朋友会觉得事务这东西有点虚——平时写个增删改查,加不加事务好像都能跑,业务也没出过什么大乱子。但只要你经历过一次线上对账不平、库存扣成负数、或者转账转了一半系统崩了,你就会明白事务不是…

2026/10/21 0:51:37 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →