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: EGFRpath: https://igv.org/genomes/locus.php?genome=hg38&name=EGFRoptions: {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) //18672xhr.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}; //57796const result = //手動設置,確認格式 //57731

這里很關鍵

(2) 線索2b: 該函數調用 parseSearchResults

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

(3) 線索2c: 這是最終格式

     * Parse the igv line-oriented (non json) search results.* Example*    EGFR    chr7:55,086,724-55,275,031    refseqfunction 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" | head -n 1

其他關鍵技術點:

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

幸運的是,這些之前都解決過。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36796.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36796.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36796.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode-每日一題【劍指 Offer 13. 機器人的運動范圍】

題目 地上有一個m行n列的方格,從坐標 [0,0] 到坐標 [m-1,n-1] 。一個機器人從坐標 [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行坐標和列坐標的數位之和大于k的格子。例…

一個簡單實用的線程池及線程池組的實現!

1.線程池簡介 線程池,顧名思義,就是一個“池子”里面放有多個線程。為什么要使用線程池呢?當我們編寫的代碼需要并發異步處理很多任務時候,一般的處理辦法是一個任務開啟一個線程去處理,處理結束后釋放線程。可是這樣…

【QT】窗口通過dragEnterEvent和dropEvent拖拽導入文件

【QT】窗口通過dragEnterEvent和dropEvent拖拽導入文件 界面允許接受拖拽 在界面的構造函數中設置接受拖拽放置文件 setAcceptDrops(true); 拖拽進入、放下事件 dragEnterEvent函數對拖動的文件進行過濾,如果不符合過濾條件按將無法拖拽進入窗口 dropEvent函數…

支付總架構解析

一、支付全局分層 一筆支付以用戶為起點,經過眾多支付參與者之后,到達央行的清算賬戶,完成最終的資金清算。那么我們研究支付宏觀,可以站在央行清算賬戶位置,俯視整個支付金字塔,如圖1所示: 圖…

[保研/考研機試] KY135 又一版 A+B 浙江大學復試上機題 C++實現

題目鏈接&#xff1a; KY135 又一版 AB https://www.nowcoder.com/share/jump/437195121691736185698 描述 輸入兩個不超過整型定義的非負10進制整數A和B(<231-1)&#xff0c;輸出AB的m (1 < m <10)進制數。 輸入描述&#xff1a; 輸入格式&#xff1a;測試輸入包…

小米200萬LOGO設計的前端實現技術詳解

引言 小米是一家知名的科技公司&#xff0c;擁有眾多粉絲。其標志性的LOGO是小米200萬像素的文字LOGO&#xff0c;給人留下了深刻的印象。本文將詳細介紹小米200萬LOGO的前端設計實現技術&#xff0c;包括HTML、CSS和JavaScript的使用&#xff0c;以及展示最多的代碼示例。 設…

mysql使用redis+canal實現緩存一致性

一、開啟binlog日志 1.首先查看是否開啟了binlog show variables like %log_bin%; 如果是OFF說明位開啟 2、開啟binlog日志&#xff0c;并重啟mysql服務 右鍵我的電腦——管理——服務——MYSQL——屬性 這里是my.ini地址 在[mysqld]底下添加 log-bin mysqlbinlog binlog-f…

c#設計模式-創建型模式 之 工廠模式

前言&#xff1a; 工廠模式&#xff08;Factory Pattern&#xff09;是一種常用的對象創建型設計模式。該模式的主要思想是提供一個創建對象的接口&#xff08;也可以是抽象類、靜態方法等&#xff09;&#xff0c;將實際創建對象的工作推遲到子類中進行。這樣一來&#xff0c…

【計算機視覺|生成對抗】帶條件的對抗網絡進行圖像到圖像的轉換

本系列博文為深度學習/計算機視覺論文筆記&#xff0c;轉載請注明出處 標題&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks 鏈接&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks | IEEE Conference Publicati…

Spring-2-深入理解Spring 注解依賴注入(DI):簡化Java應用程序開發

今日目標 掌握純注解開發依賴注入(DI)模式 學習使用純注解進行第三方Bean注入 1 注解開發依賴注入(DI)【重點】 問題導入 思考:如何使用注解方式將Bean對象注入到類中 1.1 使用Autowired注解開啟自動裝配模式&#xff08;按類型&#xff09; Service public class StudentS…

HTTP 協議的基本格式和 fiddler 的用法

目錄 一. HTTP 協議 1. HTTP協議是什么 2. HTTP協議的基本格式 HTTP請求 首行 GET和POST方法&#xff1a; 其他方法 經典面試題&#xff1a; URL Header(請求報頭)部分 空行 ?HTTP響應 狀態碼總結: 二、Fiddler的用法 1.Fidder的安裝 2.Fidder的使用 一. HTTP 協議 1. H…

解決macOS執行fastboot找不到設備的問題

背景 最近準備給我的備用機Redmi Note 11 5G刷個類原生的三方ROM&#xff0c;MIUI實在是用膩了。搜羅了一番&#xff0c;在XDA上找到了一個基于Pixel Experience開發的ROM&#xff1a;PixelExperience Plus for Redmi Note 11T/11S 5G/11 5G/POCO M4 Pro 5G (everpal)&#xf…

TMC Self-Managed 提升跨多云環境安全性

作為云原生技術棧的關鍵技術之一&#xff0c;Kubernetes 被企業用戶廣泛試用并開始支撐實際業務應用運行&#xff0c;實現技術先進性帶來的生產力提升。但與此同時&#xff0c;隨著 Kubernetes 技術的不斷廣泛與深化使用&#xff0c;企業用戶也開始面臨諸多技術上的挑戰&#x…

嵌入式:ARM Day1

1. 思維導圖 2.作業一 3.作業2

Android T 窗口層級其二 —— 層級結構樹的構建(更新中)

如何通過dump中的內容找到對應的代碼&#xff1f; 我們dump窗口層級發現會有很多信息&#xff0c;adb shell dumpsys activity containers 這里我們以其中的DefaultTaskDisplayArea為例 在源碼的framework目錄下查找該字符串&#xff0c;找到對應的代碼就可以通過打印堆棧或者…

日常BUG —— Java判空注解

&#x1f61c;作 者&#xff1a;是江迪呀??本文關鍵詞&#xff1a;日常BUG、BUG、問題分析??每日 一言 &#xff1a;存在錯誤說明你在進步&#xff01; 一. 問題描述 問題一&#xff1a; 在使用Java自帶的注解NotNull、NotEmpty、NotBlank時報錯&#xff0c;…

CentOS8安裝Git

錯誤1. 執行yum命令報錯 【錯誤&#xff1a;Invalid configuration value: failovermethodpriority in /etc/yum.repos.d/CentOS-epel.repo; 配置&#xff1a;ID 為 "failovermethod" 的 OptionBinding 不存在】 1.cd /etc/yum.repos.d 2.vim CentOS-epel.repo //…

背上沉重的書包準備面試之react篇

目錄 react特性&#xff1f; react生命周期&#xff1f; state和props區別 react中setState執行機制&#xff1f; 在react類組件形式中&#xff0c;setState第二個參數的作用&#xff1f; react事件機制&#xff1f; react事件綁定方式有哪些&#xff1f; react組件之間…

k8s通過sa和自建角色實現權限精細化分配

文章目錄 權限精細化分配---通過sa和自建角色實現權限精細化分配1.新建sa2.建立一個角色&#xff0c;并將該角色綁定到sa上3.授權namespace的權限,設置ClusterRole和ClusterRolebinding 權限精細化分配—通過sa和自建角色實現權限精細化分配 1.新建sa kubectl create sa lish…

warning: remember to run ‘libtool --finish /usr/local/1/php-7.4.29/libs

ubuntu上php7.4.33編譯安裝完成后警告報錯&#xff0c;如下所示 # /usr/local/apache2/apr/build-1/libtool --finish /usr/local/soft/php-7.4.33/libs # vim /etc/ld.so.conf.d/local.conf /usr/local/lib /usr/lib64 # ldconfig 或者安裝依賴服務&#xff0c;重新編譯 #…