日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
只有想不到,「99」種擴(kuò)展Jupyter功能的好方法

當(dāng)有人說:「你可以用 Jupyter 擴(kuò)展解決這個(gè)問題」,他們可能沒有說清楚是什么樣的擴(kuò)展。Jupyter 生態(tài)系統(tǒng)是非常模塊化且具有擴(kuò)展性的,所以有很多種擴(kuò)展方式。這個(gè)博客希望能總結(jié)最常用的 Jupyter 擴(kuò)展,并幫助你發(fā)掘生態(tài)系統(tǒng)中的新功能。

JupyterLab 擴(kuò)展

在 JupyterLab 中用 jupyterlab-drawio 擴(kuò)展繪圖

JupyterLab 是廣受歡迎的 Jupyter Notebook「新」界面。它是一個(gè)交互式的開發(fā)環(huán)境,可用于筆記本、代碼或數(shù)據(jù),因此它的擴(kuò)展性非常強(qiáng)。使用相關(guān)的擴(kuò)展,可以添加一整套新功能,或者完全改變界面的運(yùn)行方式。這些擴(kuò)展是基于 TypeScript 火 JavaScript 寫的,它們在瀏覽器里運(yùn)行。

經(jīng)典的 Jupyter Notebook 擴(kuò)展

Jupyter Notebook 中的內(nèi)容列表擴(kuò)展

人們總是會(huì)想到經(jīng)典的 Jupyter 筆記本界面,但實(shí)際上,你可擴(kuò)展它的各個(gè)模塊。這些 JavaScript 客戶端可以讓你按照自己的想法添加或改變功能,它們和 JupyterLab 擴(kuò)展是一樣的。

筆記本服務(wù)器擴(kuò)展(serverextention)

和前兩種擴(kuò)展不同,Jupyter 筆記本的服務(wù)器擴(kuò)展使用 Python 語言編寫,并加入了很多服務(wù)端的功能,以下有兩個(gè)主要的例子。

在 JupyterLab 中預(yù)覽 LaTeX 內(nèi)容

(1) 預(yù)覽 LaTeX

***個(gè)是一個(gè)為 JupyterLab 或經(jīng)典的 Jupyter 筆記本提供的后端擴(kuò)展——jupyterlab-latex。它可以在 JupyterLab 中預(yù)覽 LaTeX 文件。它有一個(gè)和 JupyterLab 文本編輯器集成的擴(kuò)展,以及一個(gè)后端服務(wù)器擴(kuò)展,可以運(yùn)行 LaTeX 命令,并在前端顯示效果。

(2) 集成網(wǎng)絡(luò)應(yīng)用

第二個(gè)則是為提供服務(wù)端處理提供用戶界面的擴(kuò)展。因?yàn)榉?wù)網(wǎng)擴(kuò)展可以作為任意 TornadoHTTP handler,因此任何你想得到的網(wǎng)絡(luò)應(yīng)用都可以寫成一個(gè) Jupyter 服務(wù)擴(kuò)展。這里的例子是 npgipuller,提供了用戶界面,可以將 git 代碼倉庫發(fā)布給用戶。

(3 Jupyter 內(nèi)核

你可能已經(jīng)很熟悉在 Jupyter 筆記本中使用 Python 語言了,其實(shí)你可以在其中運(yùn)行很多語言:R、Julia、JavaScript、Octave、Scala/Spark、C++、bash,甚至是 Matlab。這些都被稱作內(nèi)核。你可以為自己常用的編程語言寫一個(gè)內(nèi)核,將 Jupyter 協(xié)議直接用在上面,用 metakernel 項(xiàng)目打包,或者用 Xeus 打包成 C++依賴。內(nèi)核制作好以后,它可以在任何一個(gè) Jupyter 前端運(yùn)行,包括經(jīng)典筆記本、JupyterLab、 nteract、Jupyter 命令行等。

IPython Magics

如果你在筆記本里寫過如%matplotlib inline 這樣的命令,那么你已經(jīng)嘗試過 IPython 功能了。這些命令就像是 Python 中的宏(macro)——你可以寫定制化的代碼,將剩余的代碼塊獨(dú)立出來,然后做自己想做的事情。

這種魔術(shù)函數(shù)從% 開始,然后通過% 后面的代碼發(fā)揮功能。例如%cd somedirectory 可以切換 Python 運(yùn)行中的文件目錄。代碼塊功能從%% 開始,并運(yùn)行后面的整個(gè)塊。%%timeit 應(yīng)該是***的,它可以提供運(yùn)行代碼塊的時(shí)間。

你也可以構(gòu)建自己的魔術(shù)函數(shù)。例如,ipython-sql (https://github.com/catherinedevlin/ipython-sql) 包提供%%sql 命令,可以和 sql 數(shù)據(jù)庫無縫工作。然而,和之前列出的擴(kuò)展不同,IPython 的命令只能在有 IPython 內(nèi)核的環(huán)境工作。

IPython 小工具

用 drop down 玩轉(zhuǎn)繪圖功能。

IPython 小工具為 Jupyter 筆記本和 IPython 內(nèi)核提供了 GUI 工具。這些工具可以讓你在共享筆記本時(shí),使用 GUI 調(diào)試,而非使用代碼。如果和其他工具,如 voila 聯(lián)用,你可以制作一個(gè)類似儀表盤一樣的應(yīng)用,其他人可以直接使用,甚至都不知道這是一個(gè) Jupyter 筆記本。

你可以自己定制一些工具,為其他人提供領(lǐng)域內(nèi)的動(dòng)態(tài)可視化。例如,你可以用 ipyleaflet 制作動(dòng)態(tài)地圖,用 itk-jupyter-widget 動(dòng)態(tài)地研究圖像分割/配準(zhǔn)任務(wù),或者用 pythreejs 建模 3D 目標(biāo)。

內(nèi)容管理器

內(nèi)容管理器決定了你讀寫文件時(shí)的操作。默認(rèn)情況下,管理器從本地文件系統(tǒng)中讀寫文件,但是一個(gè)定制化的管理器可以從其它地方讀寫文件,如 Amazon S3 / Google Cloud Storage、PostgreSQL、HDFS 等。你可以通過 web 界面讀寫它們,就好像文件在本地一樣。

我最喜歡的內(nèi)容管理器是 Jupytext。在你讀寫.ipynb 的文件時(shí),它會(huì)將其轉(zhuǎn)換為.py 文件,并保持文件同步。在你 IDE 中對一個(gè).py 文件進(jìn)行了很多編輯后,可以自動(dòng)在筆記本中看到這些更新,這是很神奇的事情。

Jupytext: .ipynb 或者 .py? 我全都要

擴(kuò)展 JupyterHub

JupyterHub 是多用戶應(yīng)用,可以使用于教學(xué)、實(shí)驗(yàn)室或者生產(chǎn)中。這些組織很可能有其它系統(tǒng),所以 Jupyter 需要和這些系統(tǒng)集成到一起。以下是一些擴(kuò)展 JupyterHub 的簡單方法。

(1) 認(rèn)證器

JupyterHub 是一個(gè)多用戶應(yīng)用,所以用戶需要登錄,認(rèn)證器的工作是對登錄用戶進(jìn)行身份驗(yàn)證?,F(xiàn)在已經(jīng)有許多流行的驗(yàn)證器了,如 LDAP、OAuth(Google、GitHub、CILogon、Globus、Okta、Canvas 等)。你可以寫一個(gè)自己需要的認(rèn)證器,因此 JupyterHub 可以覆蓋各種使用場景。

(2) 生成器(Spawner)

如果使用一個(gè)可插拔的生成器,你可以用很多方法給每個(gè)用戶提供 Jupyter 筆記本服務(wù)器。你可能讓他們從一個(gè)節(jié)點(diǎn)生成 Docker 容器、將它們連接到 Kubernetes 上、讓它們使用你的 HPC 集群、或者使用你的 Hadoop 或者 Spark 集群、用 systemd 提供服務(wù)、或者直接將這些服務(wù)器視為不同的 Linux 用戶。這些生成器一般都很容易定制參數(shù),當(dāng)然你也可以自己寫一個(gè)。

(3) 服務(wù)

你有時(shí)希望給 JupyterHub 用戶提供額外服務(wù)——在閑置時(shí)回收資源,或者讓他們發(fā)布筆記本。你可以運(yùn)行一個(gè) JupyterHub Service 來提供這些服務(wù)。用戶可以發(fā)起請求,而服務(wù)也可以向 JupyterHub 發(fā)起 API 請求。這些可以是直接的請求,或者網(wǎng)絡(luò)服務(wù)。例如,BinderHub (https://github.com/jupyterhub/binderhub) 是 JupyterHub 服務(wù)中的一種。

NBConvert Exporter

Nbconvert 擴(kuò)展可以令筆記本格式的文件和其他格式相互轉(zhuǎn)換。如果你導(dǎo)出筆記本到 PDF、LaTeX、HTML 或者 nbviwer 的話,你已經(jīng)使用了這個(gè)擴(kuò)展。在這個(gè)擴(kuò)展里,對應(yīng)每一個(gè)格式都有一個(gè)導(dǎo)出器,你也可以寫一個(gè)針對自己格式的導(dǎo)出器,或者可以利用已有的定制一個(gè)。

在寫這篇博客時(shí),我最開心的時(shí)刻是發(fā)現(xiàn)有 docx 文檔(word)導(dǎo)出器。

word 導(dǎo)出器:https://github.com/m-rossi/jupyter-docx-bundler

Bundler 擴(kuò)展

很容易就能找到 nbconvert 導(dǎo)出器的方法

Bundler 擴(kuò)展使你可以在菜單欄添加「下載為」按鈕。這個(gè)按鈕和 nbconvert 導(dǎo)出器聯(lián)用,使得導(dǎo)出器更容易被找到,盡管你可以寫一個(gè)定制化的擴(kuò)展,使筆記本在下載前進(jìn)行任何操作。例如,nbreport 擴(kuò)展提供一個(gè) bundler 擴(kuò)展,可以將筆記本格式導(dǎo)出為 HTML。

Repo2Docker

Repo2Docker 擴(kuò)展將 git 或者其他倉庫轉(zhuǎn)換為可重新使用、適合于數(shù)據(jù)科學(xué)的 docker 鏡像。網(wǎng)站 mybinder.org(和其他 binderhub 安裝包)使用這個(gè)擴(kuò)展構(gòu)建和運(yùn)行 Jupyter/RStudio 進(jìn)程。如下所示,現(xiàn)在有兩種擴(kuò)展 repo2docker 的方式。

(1) BuildPacks

Repo2docker 會(huì)查看代碼庫中的內(nèi)容,并決定如何去構(gòu)建它。例如,如果里面有 requirements.txt 文件,它會(huì)設(shè)置一個(gè)小型 conda 環(huán)境,并把 Python 包安裝進(jìn)去。如果里面有 install.R 文件,擴(kuò)展則會(huì)保證 R/RStudio 已經(jīng)安裝。寫一個(gè) BuildPack (https://repo2docker.readthedocs.io/en/latest/architecture.html#buildpacks) 使你可以將這個(gè)功能擴(kuò)展到你喜歡的編程語言中。

(2) ContentProviders

Repo2docker 中的 repo 部分有點(diǎn)用詞不當(dāng)——實(shí)際上你可以將任何程序打包進(jìn)一個(gè) Docker 鏡像中。現(xiàn)在,它支持 git 本地文件夾和 zenodo (https://zenodo.org/) 代碼倉庫,但是你可以為自己喜歡的代碼源添加支持,并制作一個(gè)新的 ContentProvider。

只有這些了嗎?

當(dāng)然不是!Jupyter 生態(tài)是一個(gè)很大的系統(tǒng),一篇博客無法完全覆蓋所有內(nèi)容。這個(gè)博客已經(jīng)少了一些,如 enterprise gateway 和 TLJH Plugins。Jupyter 的生態(tài)是活躍多變的,很快還有更多好用的擴(kuò)展出現(xiàn)。


分享標(biāo)題:只有想不到,「99」種擴(kuò)展Jupyter功能的好方法
當(dāng)前地址:http://m.5511xx.com/article/cccocgj.html