IGV.js 的完全本地化运行探索

问题及解决方法

  1. IGV.js 完全本地化是为了合规,不使用外网的情况下查看基因组。
  2. 不联网需要下载 genomes.json 文件及其中的内容之外,还需要修改 igv.js本身,防止5s超时后才显示网页内容。修改的关键词是: genomes.json,改为本地的。
  3. 这时搜索功能障碍,可以搜索定位 chr1:12345 这样的位点,不能搜索EGFR 这样的基因字符串。还是要修改js文件,具体方法见下文。

版本号: igv.version() #'2.15.10'


怎么本地支持搜索?

1. 需要修改的地方

(1) 线索1a:该函数的返回值是什么类型的?

function searchWebService(browser, locus, searchConfig){ //57722
	//
	const result = await igvxhr.loadString(path, options);
	//
}

(2) 线索1b: 先看参数类型

igvxhr.loadString(path, options); // line 57728
debug wjl: 1 EGFR https://igv.org/genomes/locus.php?genome=hg38&name=EGFR {timeout: 5000}
参数
	cocus: EGFR
	path: https://igv.org/genomes/locus.php?genome=hg38&name=EGFR
	options: {timeout: 5000}

(3) 线索1c: 返回值
不确定,只能根据代码推测

	return this._loadStringFromUrl(path, options)

	async _loadStringFromUrl(url, options) {

		options = options || {};
		options.responseType = "arraybuffer";
		const data = await this.load(url, options);
		return arrayBufferToString(data)
	}

	this.load(url, options); 中引用的是
	return this._loadURL(url, options) //18672
	xhr.send(sendData); //18825

(4) 线索1d: ajax 的请求链接

url: 'https://igv.org/genomes/locus.php?genome=$GENOME$&name=$FEATURE$', //57547
https://igv.org/genomes/locus.php?genome=hg38&name=EGFR 

2. 从下文代码找线索,需要什么数据?

(1) 线索2a: 下一行怎么使用该数据?

	const locusObject = processSearchResult(browser, result, searchConfig);
	找到最相关的 const locusObject = {chr, start, end}; //57796
	const result = //手动设置,确认格式 //57731

这里很关键

(2) 线索2b: 该函数调用 parseSearchResults

function processSearchResult(browser, result, searchConfig) { //57750
if ('plain' === searchConfig.type) {
	console.log("debug wjl: 4", result, searchConfig ) // ===>>>>debug 11223344
	results = parseSearchResults(browser, result); 
}

(3) 线索2c: 这是最终格式

     * Parse the igv line-oriented (non json) search results.
     * Example
     *    EGFR    chr7:55,086,724-55,275,031    refseq
    function parseSearchResults(browser, data) { //57827
	}

(4) 这个格式怎么修改? 就是 refseq的第13,3,5和第6列。

$ zcat ref/hg38/ncbiRefSeq.txt.gz | awk '{print $13"\t"$3":"$5"-"$6"\trefseq"}' | grep "EGFR" | head -n1
EGFR    chr7:55019016-55156939  refseq

(5) 回退到上一步

57843行 line="EGFR\tchr7:55019016-55156939\trefseq"
57731 const result = "EGFR\tchr7:55019016-55156939\trefseq"
57547 url: 'https://igv.org/genomes/locus.php?genome=$GENOME$&name=$FEATURE$',

(6) 设置一个支持cors的、返回字符串的服务器,返回值是

zcat /home/wangjl/soft/scIGV/ref/hg38/ncbiRefSeq.txt.gz | awk '{print $13"\t"$3":"$5"-"$6"\trefseq"}' | grep "CCND1\t" | head -n 1

其他关键技术点:

  • flask 在后台执行 linux 命令
  • flask返回支持cors的字符串
  • 支持cors和range的bam大文件服务器

幸运的是,这些之前都解决过。

### IGV软件下载、安装及使用指南 #### 软件概述 Integrative Genomics Viewer (IGV) 是一种高性能的交互式可视化工具,用于探索大型综合基因组数据。它支持多种数据类型,包括基于芯片测序、二代测序数据和基因组注释数据等[^2]。 #### 下载与安装 用户可以从 IGV 官方网站下载软件并进行安装。具体步骤如下: 1. **访问官方网站**:前往 IGV 的官方下载页面(http://www.broadinstitute.org/software/igv/)。 2. **选择版本**:根据操作系统选择合适的版本进行下载。IGV 支持 Windows、Mac 和 Linux 系统[^2]。 3. **安装程序**:下载完成后,按照安装向导完成安装过程。 对于 Linux 用户,可以通过以下命令手动安装 IGV: ```bash # 下载 IGV wget https://data.broadinstitute.org/igv/projects/downloads/<version>/IGV_Linux_<version>.tar.gz # 解压文件 tar -xvzf IGV_Linux_<version>.tar.gz # 运行 IGV cd igv ./igv.sh ``` #### 使用说明 IGV 提供了丰富的功能来帮助用户分析基因组数据。以下是其主要功能及使用方法: - **加载数据**:通过菜单栏中的“File -> Load from File”选项,可以加载本地的基因组数据文件。 - **浏览数据**:用户可以通过拖动和缩放操作查看不同区域的基因组数据。 - **远程数据加载**:支持直接从服务器加载数据,例如通过“File -> Load from Server”选项[^2]。 - **自定义显示**:用户可以根据需求调整轨道的高度、颜色和其他显示属性。 #### Web版 IGV 除了传统的桌面版 IGV,用户还可以使用基于浏览器的 IGV-Web App。该应用无需安装任何软件即可在现代浏览器中运行。用户可以直接访问托管的应用程序(https://igv.org/app),或者按照指南自行部署[^1]。 #### 技术细节 IGV-Web App 基于 igv.js 开发,提供了一种轻量级的方式来浏览和分析基因组数据。其纯客户端架构确保了数据的安全性和隐私性[^1]。 ### 注意事项 在使用 IGV 时,请确保系统满足最低硬件要求,并安装必要的 Java 运行环境(适用于桌面版)。此外,建议定期更新软件以获取最新的功能和安全补丁。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值