Shubo Chakrabarti, MathWorks
学习如何使用MATLAB编写透明易懂的代码®创建可与其他语言互操作的MATLAB代码,与您的社区共享研究成果,包括那些没有许可证的研究成果,并在Science gateway上使用MATLAB。
Open Science的不同产品分为三类,旨在使代码透明、可用和可访问。
我的名字叫舒波。这个网络研讨会有点哲学的意味,因为它不是关于算法的。但这是关于如何让你的科学更加开放,以及这样做的可能性是什么。好的。让我们开始吧。所以在我深入你们可以使用的所有细节之前,我想先给你们一个非常高水平的概述,为什么MATLAB和开放科学。因为你可能会问自己,MATLAB是一种私有语言。那么这与开放科学是如何兼容的呢?
事实证明MATLAB非常适合于开放科学原理。我来告诉你怎么做。所以MATLAB可能是一种专有语言,但实际上大多数的MATLAB函数,大多数的MATLAB代码,实际上是开放的。它是透明的。你可以在任何文本编辑器中打开它,不管有没有MATLAB许可证,看看做了什么,怎么做的,甚至得到一个参考。我们的大多数用户,你们中的大多数,全球400万使用Matlab的人中的大多数并不关心Matlab代码里面是什么。他们关心的是,他们所做的是使用MATLAB环境。这个你们都知道的工具栏。
他们用它来获取这些代码片段,来自MATLAB的私有代码片段,他们可以查看并使用它。他们使用它们。他们信任他们。他们知道他们在工作。但他们用它们来构建应用程序和分析自己的数据。而这个环境,MATLAB环境,让这变得很容易,因为你可以用一种相当简单的方式点击,指向,连接物体。但一直以来,它都不是一个黑盒子。在每个阶段,您都可以看到这个特定分析背后的代码。当然,所有的应用程序,你构建的分析,都不是私有的。这是你的分享。
事实上,我们强烈鼓励你们——我要把我挪开。我们强烈鼓励您分享您的代码。如果你打开MATLAB工具栏点击这里的社区按钮,这就会把你带到MATLAB中心,这是MATLAB和Simulink社区的MathWorks开放交换平台。万博1manbetx这包括一个免费的开源工具交换门户。你可以在那里测试你的编码能力。你可以应对挑战。您可以与其他MATLAB用户一起加入讨论论坛。所以这真的都是关于分享和很多人在那里。
最后,我们明白,随着人们从本地桌面转向科学网关,再到超级计算中心,MATLAB需要无处不在。所以这是关于覆盖面的问题。正如我们在网络研讨会开始前简要讨论的那样,校园和机构范围内的许可都试图这样做,将整个校园置于一个许可保护伞下。所以这些校园里的每个人都可以很容易地分享和合作。如果你不是校园许可证的一部分——我们现在有1800个校园许可证。如果你不是其中的一员,也别担心。我会让你看看你的执照能做什么。但这是关于覆盖范围,地理覆盖范围。
然后,MATLAB现在与几种不同的语言(包括Python)具有强大的集成能力,这意味着可以覆盖各种方法。如果你认识的人正在使用另一种语言的工具箱,你需要集成,你可以很容易地从MATLAB中完成。最后,还有持续的支持。万博1manbetx我们的开发人员在MATLAB中构建了对各种数据格式的持续支持万博1manbetx。这是非常重要的,因为我们知道在每个领域都有特定的数据文件格式。我们支持的这些数据文件格式越多,我们所覆盖的领域就越多。万博1manbetx
你可以在你最喜欢的MATLAB环境中得到所有这些不同的数据。这就是为什么MATLAB与开放科学兼容的一个非常高水平的概述。现在我要深入讨论具体问题
提供具体的功能,你可以用来实践开放科学。首先,我要告诉你们如何用数据讲故事。我要讲的是有效地开发软件,源代码控制,以及简单地分享工具和软件的技巧。我要讲的是从MATLAB Central, File Exchange免费下载和重用软件。
我将简要地,详细地,讨论如何与那些不是MATLAB用户的用户联系,如何与他们共享代码,协作者。我要讲的是用MATLAB构建一个便携式软件胶囊,如果你们听说过Docker, Docker容器。然后,我将简要介绍大计算、大数据、并行计算,并讨论如何通过浏览器访问MATLAB。最后,我将讨论如何将计算和数据放在同一个地方。这实际上是网络研讨会中我最喜欢的部分,因为它与我的工作直接相关。我要讲的是科学通道。好的。
我试着把它们分成三个类别,透明的,可用的和可访问的。尽管我承认,这不是一个公平的分类。好的。让我们从如何使用数据讲故事开始。现在,我给你们看一些MATLAB代码。它们做的事情完全一样。左边是传统的MATLAB代码,注释很好,但仍然是静态代码。在右边,你有一个我们称之为实时脚本的东西。当有人试图掌握你的工作流程时,你认为哪一个更透明、更容易理解?右边的那个,Live Script。 So a Live Script is nothing else than a digital notebook.
它使您能够将MATLAB代码和其他相关输出结合在一起,这些相关输出可以是解释您所做的工作的文本、图形、方程,并将它们组合成一个文档。你有用户控件,这样用户。UI控件,这样用户可以通过改变一些参数与你的代码交互。你可以把它导出成各种不同的格式,所以你可以很容易地分享。我发现当你想交流你的研究时,这真的很有用。所以我在实验室会议上做了一点,人们一直在问,你到底做了什么?如何使之正常化?合作者也可以很棒。它允许其他人实际与您的代码交互。
有时,当您需要在一个文档中上传代码、文档和结果时,这可以派上用场。所以现在我将向你展示如何提出一个现场脚本。这是一个短视频。先介绍一下我的MATLAB工作区,这是我的编辑器,在这里是实时编辑器。这是我的工作区,这样你们就熟悉我如何组织我的IDE了。好的。因此,要开始一个新的实时脚本,转到Home选项卡,你可以点击new Live Script。有很多方法可以做这件事。一旦你这样做了,你就有了一个实时脚本。
等一下,我把这些处理掉。Live Scripts不是。m文件,而是。mlx文件。然后你可以去现场编辑器,这是一个工具栏,上面有所有的工具来制作现场脚本。首先,你可以选择文本,你可以选择标题。您可以给您的Live Script一个标题,因此创建一个简单的脚本。在这种情况下,我们要做一个非常简单的正弦波,没什么特别的。你有一些文字解释。
它的振幅和频率构成了一个正弦波。然后,你点击代码,它会插入一个小代码块。在这里你可以输入你的代码,基本上就是一个振幅和频率变量,一个时间轴,然后画出正弦波。继续,点击Run。它给出了输出,你可以把这个输出放在一边。你也可以有一个内联,就像我在前面的例子中展示的那样。现在轮到互动部分了。
假设有人想要改变正弦波的频率。显然,他们可以改变这个值,重新运行代码。但是一个更简单,更有用的方法是
去控制,并将它替换为一个UI控制器,在这里是一个数值滑块。现在,你设置了限制,0和20,通过移动滑块,用户可以选择0到20赫兹之间的任何频率,输出会自动更新。所以它变得很有互动性。现在我们要做点别的。
我们将做一些标准的数据预处理任务。我们要找到极大值,局部极大值。你可以用其他的东西,但这只是一个标准的。要执行这些任务,请转到任务按钮。你会有一堆预编程的即插即用任务模块,我们从这个调色板中选择查找局部极值,然后插入这里。这就是给你一个图形用户界面。你可以选择你的信号,你的输入信号,从你的工作空间变量之一,就是y,它会立即取它并输出这个极大值检测的结果。
这又回到了我关于透明度的观点。在每个点上,你都可以找到这三个点,你可以看到这个预先编程的GUI背后的代码。所以你可以学习这是怎么做的,你也可以自己做。结果出来了。这就是如何组合一个实时脚本。你可以放入方程式,链接,甚至可以放入目录。它就像一个数字笔记本,你可以继续和你的合作者分享。现在,如果你对更多的实时脚本感兴趣,我们有一个来自MathWorks的实时脚本库。我在幻灯片上给你们看了链接。它有很多来自不同学科的实时脚本。
如果你感兴趣,可以去看看。关于Live Script gallery的一件漂亮的事情是你可以在你的软件浏览器上在线打开这些Live Script——你不需要许可证——然后运行它们,并从File Exchange下载代码。好的。接下来,让我们讨论如何有效地开发软件。你可以使用源代码控制。源代码控制的作用是——你在你的桌面上,在你的本地机器上有一个工作副本,你还有另一个副本,存储库,要么在服务器上,要么在云上的某个地方。在每个阶段,您的本地副本,当您这样说的时候,都会与这个存储库同步,结果是任何合作者都可以从这个远程存储库下载最新的版本,即您的代码的同步版本。
所以它可以跟踪变化。它还能帮助你高效地合作。两个最常见的源代码控制功能来自Git和Subversion, Git来自GitHub。现在可以将Git和SVN与MATLAB代码集成。您可以从IDE访问它们,也可以使用命令感叹号和git从命令行访问它们。好的。你是怎么做到的?首先,在IDE中,如果你到文件夹视图,你到主页,布局,显示当前文件夹,然后右键单击。您可以在菜单中看到源代码控制。
然后点击管理文件。在开始一个新项目之前,你要这样做。然后你会得到这个弹出框,你可以输入你的存储库路径。这可以是一个GitHub地址。它可以是一个本地的内部实验室。它可以是本地服务器上的一个位置。从那时起,这个文件夹将被置于源代码控制之下。无论你做什么,你都可以进入这个菜单,但你也可以进入命令行,输入git add,它会添加你所有的更改。Git提交,它会使用您的特定注释提交它们。原谅我。
然后是git push它的作用是将你所有的更改提交,并发送到远程存储库。现在,让我们再谈谈共享工具和软件,使用项目和工具箱,把软件作为项目或工具箱来共享。所以项目所做的就是将所有依赖项与你的代码打包在项目中。你们可以试一下。你可以举个例子,
matlab.project.e xample.timesTable。如果您在命令窗口中输入该参数,则应该会弹出MATLAB项目工具栏。
在Project工具栏中,您可以看到一个依赖分析程序。如果你点击那个依赖分析,你会看到这样一个图表。这个图表显示的是包中的哪些代码片段依赖于其他的代码片段。在另一边,你甚至会得到所有产品的列表,所有运行这个包所需的MATLAB工具箱。s manbetx 845
这样你就可以检查是否万事俱备了。如果您想要共享一个项目,那么共享它的一个好方法是使用工具箱。工具箱所做的就是把所有东西都取出来,然后吐出一个可执行文件,这样用户就可以用这个可执行文件安装你的整个包,就像你对任何程序所做的一样。
要做到这一点,很简单。点击“Add-Ons”按钮,点击“Package Toolbox”,然后就会有一系列简单的点击步骤,最后就会弹出工具箱。现在,您已经与合作者一起使用Git源代码控制有效地开发了代码。你已经把它变成了一个项目。你在哪里分享?
现在,有许多平台可以共享。一个你可能不知道的平台是MATLAB文件交换。文件交换是MATLAB中心的一部分。File Exchange是一个用于存储库、代码存储库的平台。您可以免费获取、共享和重用工具。
目前大约有40000个可用的存储库。这些都是由该领域的专家撰写的,有成千上万的下载量。这就是文件交换的样子。这些都是用户上传到网站上的工具箱。根据学科和子学科,你有一个很好的搜索栏。
所以你可以在你特定研究领域的工具上磨炼。你还可以根据类型筛选工具,比如Simulink模型,工具箱,应用程序。万博1manbetx你们中的许多人可能会在GitHub上分享你们的工具箱。如果你这样做了,你现在就可以把它们链接到File Exchange而不需要加倍的工作。
你可以简单地在文件交换上链接GitHub存储库。用户可以使用这个链接从你的GitHub存储库下载,它只是让你的工具箱更可见。因此,我强烈鼓励工具箱的作者去尝试File Exchange。好的。现在让我们讨论一下与非matlab用户的连接。这实际上是关于MATLAB的共享。让我们面对现实吧,不是每个人都有驾照。
MATLAB并不是每个人都可以选择的工具。当你在做一个项目的时候如果你的合作者不使用MATLAB。第一种情况是你开发软件,或者你是这个项目的中心,你有一群人依赖你的代码,或者想要使用你的代码,而他们没有MATLAB许可证。
有很多可能性,这取决于这次共享的时间框架。第一个是短期的,30天。如果某个地方的某人没有MATLAB许可证,只是需要在他们的数据上运行一次您的代码,那么我认为最简单的方法是让他们简单地下载一个免费的MATLAB试用版,30天,然后运行代码。好的。
然而,这是有限的用途。所以最常见的情况是一个扩展项目,几所大学一起合作一个学术项目。现在对于学术项目你能做的就是分享你的执照。这基本上是对教育机构开放的。
这就是所谓的第三方访问。你,作为大学或个人执照的拥有者,你可以开放。你可以给这些你可以给你的合作者证书然后他们可以访问你的许可证并使用MATLAB。唯一需要注意的是MATLAB是在硬件上使用的。所以你必须给他们一些
某种程度上可以访问你的硬件。或者他们可能是你身边的客座教授。但这使得在这些合作项目中工作具有很大的灵活性。
第三个选择是长期的。假设你开发了一个应用程序,或者你开发了一个分析,你想让每个人都能在很长一段时间内使用它。你们可以尝试的一个东西是MATLAB Web Apps。这很简单。你进入应用程序设计器。然后你只需简单地把你的MATLAB应用转换成一个Web应用通过点击分享,点击Web应用。
它的作用是将你的应用程序转换成一个可以在网络服务器上托管的应用程序,每个人,不管他们是否有许可证,都可以拨入网络地址并与你的服务器交互。现在让我们讨论一下在稍微不同的情况下与非matlab用户的连接,也就是使用其他软件的用户。
我之前给你们看的图标,你在中间,其他人没有许可证,这是一种情况。当你在一个项目中开发软件时,一个更常见的场景是这个图标,每个人都在一起工作。有人会MATLAB,有人会Python,有人会Java,还有人会c++。好消息是MATLAB已经集成了,已经集成了很多其他语言。
您可以从MATLAB调用其他语言库,包括Python。你也可以反过来做。所以你可以从另一种语言调用MATLAB。这里有很多不同的语言支持。万博1manbetx
我应该在这里提到,用于web服务和从web读取数据的RESTful API在访问在线数据库时非常有用。要在Python上分享MATLAB,实际上有两种方法。你可以直接与MATLAB交互,这是我要展示给你们的。你也可以把你的MATLAB代码打包成Python包,让它在Python中可用。
这是一个演示,展示如何从Python中访问MATLAB。这里,我有一个只有一个变量y的MATLAB工作空间,我的MATLAB命令窗口。这是Windows PowerShell,但你可以使用任何其他命令行界面或Python IDE。
让我们进入Python。然后你要做的第一件事就是输入import matlab。导入MATLAB引擎。所以你可以在Python中使用MATLAB的功能。然后调用matlab.engine.start_matlab。让我们使用一个变量eng作为这个类的实例。现在你有了eng,你可以从eng调用MATLAB函数。
我们调用一个MATLAB函数。我们打电话给兰登吧。让我们给它一个普通的输入就像你在MATLAB中做的那样,如果你这样做,你会看到数据类型是MATLAB数据类型,double。现在让我们退出这个命令。我将向你展示如何连接到一个正在进行的MATLAB会话。
为此,在命令窗口中输入matlab.engine.shareEngine。你所做的就是用Python来共享你当前的MATLAB会话——你给它一个名字。现在,您可以从Python访问会话,包括它的工作区。现在我们不说start_matlab,而是说connect_matlab。
我们给它一个我们要连接的session的名字,也就是我的session。当我们这样做时,我们会连接到这个特定的会话。现在我们可以访问工作区中的变量了。我们再次使用eng。我们使用workspace方法来访问工作空间。
在方括号内,你可以输入你想要访问的变量的名字,在这里是y。我们把它放到Python的一个变量里。现在我们可以继续玩了。您甚至可以使用Python中的MATLAB绘图特性以这种方式绘图。
你可以用这个方法调用figure,就像平常一样。所以你给它一个名字。我们称它为calledfropython,这样我们就知道这个图形实际上是从Python中调用的。如果你这样做,你会得到一个MATLAB窗口。你可以从这个窗口开始绘图。
让我们在这个窗口中绘制变量y,使用标准的MATLAB绘图命令,用linestyle来绘制颜色线。你已经用Python做了一些MATLAB绘图。所以这只是冰山一角。还有很多其他功能。
这是一个备忘单,把你在做这种MATLAB Python集成时应该知道的一些重要的事情放在一起。如果你觉得它真的有用,就去看看。看看它的产品页面。有更多的信息和视频。好的。现在让我们再来谈谈共享数据和重复使用——研究的可重复性。
首先让我们谈谈创建便携式软件胶囊,在Docker容器中的Matlab。最基本的问题是不管你写代码的时候,抱歉。不管你的代码写得多好,你经常会遇到这样的情况:在某一时刻,许多年后,当你想重用你的代码时,你发现你的代码不能工作。
这是研究中的一个大问题,重复性危机等等。然后你可能会有其他问题。您的旧版本可能不受支持,可能您的操作系统更改了,DLL丢失万博1manbetx了,或者依赖项丢失了。在这种情况下你能做的就是使用Docker容器。
对于那些不知道这个的人,Docker容器本质上是一个胶囊或盒子,在这个盒子里,你的代码,它需要运行的数据,所有的依赖关系,甚至操作系统的一些方面都被包装在这个盒子里。你可以从Docker Hub下载这个盒子,这个容器,你可以启动它,它就会运行。它将从主机操作系统中获取一些资源,然后运行。这样做的好处是,现在你有了一个便携式容器,可以在任何地方运行。它是便携的,可复制的,可重复使用的。现在它带有MATLAB。
因此,如果你想在Docker容器中使用MATLAB,下面的链接为你提供了到GitHub存储库的链接,该库具有构造自己的Docker文件的架构。如果你有兴趣看看MATLAB和Docker是如何在线运行的,我将与你分享一个来自Code Ocean的例子。海洋代码是一个科学门户。他们鼓励你,一旦你有了一个出版物,就上传与该出版物相关的代码,他们会为你把它打包在一个容器里,并保存在他们的网站上,任何人都可以打开这个容器,运行那个代码。所以它试图解决可重复性的挑战。
所以如果你去Code Ocean的网站,你去探索,你会看到一堆Docker容器,他们称之为胶囊,有主题领域,有时,通常是与之相关的出版物。这里你可以看到不同的胶囊。你看,有些是c++,有些是MATLAB,有些是Python语言。如果你点击其中一个胶囊,它就会把你带到Code Ocean的MATLAB IDE。左边是MATLAB,抱歉,这有点太快了。在左边,你有MATLAB的m文件。这是编辑器。
在右边这里,你有一个叫做可复制运行的东西。如果你点击可复制运行,它就会启动这个容器,并旋转这个容器。现在你会看到发生了什么。一旦容器启动,您将在命令行中看到MATLAB。
然后它会吐出计算的结果。所以以可复制的方式编写代码是非常好的。当然,如果你不想在线运行容器,你可以简单地下载所有这些文件到你的本地机器上,然后使用它。好的。这就是Docker容器中的MATLAB的思想。这是一个实际的例子。
现在,我想简单介绍一下大计算和大数据。在很多很多的研究领域,数据都呈指数级增长。20年前,当我开始攻读神经科学博士学位时,我们用一个电极记录,也许是几个电极。今天的人们有几百个电极的记录芯片,他们把几个这样的芯片放在大脑里。
我相信在其他领域也是如此。因此,随着数据变大,数据处理成为一个问题。甚至当我们在本地实验室工作时,我们也在使用更多的计算资源。我们可能使用的是多核CPU,也可能是GPU。
我们很多人都在使用集群之类的设施。它可以是on-prem。可以是超级计算中心,也可以是惠普中心。它可以是一朵云。它可以是私有云,比如AWS和Azure。我们处理大数据。你可以用MATLAB并行计算工具箱和MATLAB并行服务器做的是你可以很容易地扩展你的代码来实现并行化。
所以你需要做一些改变。为了部署到集群上,您不需要重新编码并重新编写代码。几个点击点,你就可以部署它了。用MATLAB并行服务器,它在服务器端工作,它以智能方式征用服务器资源这样你的代码就能以最佳方式运行。
现在,您可以访问特定服务提供的所有可用集群。你可以通过修改代码来实现。所以如果你对并行计算感兴趣,我们有很多信息,包括并行计算的视频和演示,你应该去看看。这里有一些链接可以帮助你入门。
现在,我想谈谈如何从浏览器访问MATLAB。所以这些天,人们做基于浏览器的工作变得非常普遍。在COVID危机期间,我们都不在工作岗位。现在,你可以通过浏览器通过MATLAB和Simulink在线访问MATLAB甚万博1manbetx至Simulink。
任何连接互联网的浏览器都可以做到这一点。如果您没有任何安装,您可以通过浏览器进行协作。你可以将数据同步到名为MATLAB Drive的云存储上。你甚至可以托管你自己的MATLAB在线,我会在几张幻灯片中展示。这就是MATLAB在线的工作原理。在浏览器窗口中输入matlab.mathworks.com。
当然,你需要有许可证才能使用MATLAB Online。然后在浏览器中得到MATLAB IDE。你可以用普通的MATLAB做任何事情。你可以摆弄图形,部署应用程序,你可以运行Live Script。你可以去你的Add-Ons链接,访问File Exchange,然后导入File Exchange工具,并安装它们。
你可以把本地机器上的数据放到MATLAB Drive上。这就向你们展示了。视频现在展示的是MATLAB驱动器。然后你可以从MATLAB Online中访问MATLAB Drive并访问你的数据。好的。最后一点我想跟你们说的是必须在科学网关的数据旁进行计算。
那么什么是科学门户呢?科学网关提供了对科学和工程资源的访问。这些资源可以是数据,可以是代码,可以是教学资源,也可以是计算资源。本质上,它的工作方式是科学家们通过在线门户登录。
这个在线门户网站是一个渠道,是一个连接不同资源的接口。它可以是数据库,数据存储库,可以是计算资源,也可以是软件工具的回购。所有这些都是科学的大门。
优点是,首先,你不需要随身携带大量数据;第二,价格合理,容易获得;它真的能帮助你轻松地分享东西,重复利用研究成果,再生产。你可以做的是,如果你有一个最喜欢的科学门户,你想要MATLAB -首先,与我们联系。我们会帮你的。科学网关可以做的是它可以成为一个托管提供商,这意味着它拥有所有的MATLAB资源,它让它的用户能够使用MATLAB。
我将给你们一个科学门户的例子,它实际上是这样做的。氢共享是CUAHSI的科学门户,这是北美水解协会。他们是研究水的人。这是Hydroshare的网站。你看,这是一个用于共享数据、模型和代码的在线协作环境。基本上,如果你进入Hydroshare,你会得到一堆数据。这是数据资源的一个例子。它对特定的数据文件进行特定的分析。你可以选择Open with,也可以选择MATLAB Online来获得数据结果。
它所做的就是在浏览器上旋转一个MATLAB Online的实例,你可以在MATLAB中查看资源和分析。在这个例子中,如果你看网址,上面写着,matlab-online。cuahsi.org。在这种情况下,这个科学网关实际上承载了MATLAB在线。
你的科学门户也可以做到这一点。所以如果你觉得这是你感兴趣的东西,请与我们联系。好的。总之,我已经讲过了所有这些不同的——我一开始就讲过了,为了得到所有这些不同的点。我已经尝试用可供您使用的产品来覆盖它们,您可以最优地使用它们来做这些事情。
我希望在这个列表中,你能发现一些有用的新东西。在我们结束之前,作为最后一张幻灯片,我想说的是,在我的愿景中,你们的生活或你们的研究受到了所有这些工具的影响。我认为这些有助于全球合作。我认为,我对你的工作流程的设想是,它使你能够参与全球合作。
在这个工作流程的几个部分中,这些工具可以派上用场。你可以创建透明代码,共享它,在文件交换中使用它,做所有这些事情,那里有很多功能。机构范围的许可有助于覆盖许多机构,因此您可以轻松地在这些机构的人员之间交换信息。
如果你没有——即使你的合作者实际上没有许可证,灵活的许可意味着你可以开放你的许可证和第三方访问,并与你的合作者共享。你甚至可以在使用远程设备时携带你的执照。它可以是一个超级计算中心。它可以成为科学的门户。最后,随着你的移动,MATLAB可以在越来越多的地方使用,可以在科学网关上使用,可以通过浏览器使用MATLAB和Simulink Online。万博1manbetx所以,希望所有这些东西结合起来会让你的合作生活更容易一些。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。