PURSUE ULTIMATE FACTS

2024-05-19
术语表

术语表

激活剂
一种正向调节转录的蛋白质,通常通过在启动子附近结合并与 RNA 聚合酶发生物理相互作用来增加其活性。

激活
参见正向调节。

等分
从较大样品中取出的小体积。

生物砖
符合指定组装标准的 DNA,通常是在 DNA 部分的侧翼添加特定的限制性位点。

细胞密度
给定体积中的细胞数量。

中心法则
分子生物学中关于从遗传密码到身体特征的信息流的统一思想,它指出 DNA 编码指定蛋白质序列的 RNA。

机壳
系统的外壳。该术语在合成生物学领域使用时通常指细胞宿主。

编码序列 (CDS)
请参阅开放阅读框 (ORF)。

密码子
三个连续的核苷酸,编码开放阅读框中的特定氨基酸或终止信号。

胜任的
描述细胞可以从环境中接受 DNA 的状态。

共识序列
在整个基因组或许多基因组中针对特定 DNA 部分发现的最常见的核苷酸模式。

本构
始终处于“打开”状态的功能,与有时“打开”有时“关闭”的功能形成鲜明对比。

文化
在实验室中培养细胞。

下游
相对于另一个 DNA 序列位于 3’ 的 DNA 序列。

紧急行为
由于更改或重新组合复杂系统的组件而产生的意外特征。


一种生物催化剂,通常是蛋白质,通过降低其活化能来加速化学反应。

正向工程
一种构建新系统的方法,首先对系统设计进行高级描述,然后在逻辑上完善该描述以生成构建策略。

基因表达
DNA 序列的读取导致其 RNA 或蛋白质产物的合成。

基因表达单位
包含开放阅读框以及启动转录(例如启动子)和翻译(例如核糖体结合位点)的信息的 DNA 序列。

遗传不稳定性
遗传性状的变异影响其可靠或可预测的功能。

热休克
温度快速升高,通常用于促进微生物转化。

全酶
一种完整的蛋白质复合物,在生化上已准备好执行细胞功能。

诱导性
一种有时“打开”有时“关闭”的功能,以响应细胞环境的变化。大多数情况下,这种变化是由与基因调控序列结合的蛋白质介导的。

抑制
参见负面调节。

逆变器
逻辑门,也称为非门,可将输入信号的状态转换为其相反状态,将“关”变为“开”或将“开”变为“关”。

紫胶操纵子
由 lacZ、lacY、lacA 三个基因组成的单一调控单元,其协调表达使得细胞能够在缺乏葡萄糖和存在乳糖的情况下生存。

滞后期
细胞生长的早期阶段,其特征是细胞密度低且细胞不活跃分裂。

记录阶段
细胞生长阶段,其特征是细胞密度随着时间的推移呈指数增加,因为细胞正在活跃分裂。

逻辑门
用于将给定输入或一组输入状态转换为指定输出状态的数字电路的构建块,例如仅在检测到两个(或更多)输入时才生成输出的与门。

平均无故障时间 (MTF)
预测物体使用寿命的测量方法。

代谢工程
合理操纵细胞的生物化学,以优化所需小分子的生产。

代谢途径
多种基因产物以逐步的方式将起始材料转化为最终产物。

模块化
系统的属性,描述其功能单元可以如何分离和重新组合以生成新系统。

负面监管
减少基因表达单位输出的机制,通常通过阻遏蛋白控制转录。

噪音
生物系统固有的自然变异性,通常被检测为重复之间的测量不一致。

开放阅读框(ORF)
编码蛋白质的 DNA 序列,其中核苷酸三联体(密码子)可被解码为氨基酸序列。

操纵子
开放阅读框的 DNA 簇,其表达由单个启动子控制。

光密度
细胞密度的衡量标准,通常量化为细胞悬浮液散射的 600 nm 光量。

修补
用牙签将细菌菌落散布在新的培养皿上,使其新鲜地长成小而明确的草坪。

质粒
可以在细胞中独立于染色体复制的环状 DNA 序列。实验室中经常使用的 DNA 工程质粒具有共同特征,例如可选择的遗传标记(例如,赋予氨苄青霉素抗性的标记)和可被限制性内切酶识别的 DNA 序列。

聚合酶链式反应 (PCR)
一种实验室技术,可用于复制给定 DNA 序列。

积极监管
一种增加基因表达单位输出的机制,通常通过激活蛋白控制转录。

促销员
结合 RNA 聚合酶以开始转录的 DNA 序列。

可靠性
行为一致。

解除抑制
将负调节状态转变为“开启”状态的机制,其中可以包括去除或抑制负调节剂。

记者
一种易于检测的基因输出,反映了感兴趣的细胞功能。

可抑制的启动子
一段 DNA 序列,既可以结合 RNA 聚合酶以启动转录,也可以结合阻遏蛋白以抑制转录。

阻遏物
一种 DNA 结合蛋白,可减少启动子的转录量。

阻遏蛋白
参见抑制器。

逆向工程
一种构建系统的方法,首先依赖于解构目标系统的现有物理示例。

核糖体结合序列 (RBS)
由 DNA 编码但功能与 mRNA 相同的序列,使细胞的核糖体能够结合 mRNA 模板并启动蛋白质合成。

RNA聚合酶
一种多蛋白酶复合物,可催化 DNA 模板形成 RNA 链。

分光光度计
用于测量未被液体样品吸收或散射的光量的仪器。

固定相
细胞生长的后期阶段,其特征是细胞密度高且细胞分裂不活跃。

基质
与酶结合并发生化学转化的分子。

转录
生成 RNA 分子的过程,其序列与 DNA 上的核苷酸序列互补。

转换
将 DNA 放入细菌细胞中以使细胞具有新特性的过程。

翻译
通过解码 mRNA 链上的密码子生成蛋白质或肽的过程。

真值表
系统行为的直观表示,将系统的每个输入显示为“开”(1) 或“关”(0) 以及与每个输入状态关联的输出。

上游
相对于另一个 DNA 序列位于 5’ 的 DNA 序列。

野生型
具有自然界中其物种最典型特征的生物体。

关于作者

Natalie Kuldell 是麻省理工学院生物工程系的讲师,也是 BioBuilder 教育基金会的创始人兼主席。她是全国各地会议的特邀发言人,从 2013 年的 TEDxBermuda 会议到 NSTA 等教育工作者全国会议和 AAAS 等科学家全国会议。她在合成生物学和教育方面的专业知识以及她的科学背景导致发表了大量文章和书籍。

她于 1987 年以优异成绩毕业于康奈尔大学,获得化学学士学位,并于 1994 年获得哈佛大学细胞与发育生物学博士学位。在哈佛医学院获得博士后奖学金后,她加入了韦尔斯利学院,在那里她担任教授在生物科学系教授和开发课程。 2003 年,她被招募到麻省理工学院,当时他们正在开设生物工程新专业(课程 20)和新系。库德尔博士与屡获殊荣的高中教师合作,将她的麻省理工学院合成生物学教材收集成适合高中和早期大学环境的模块化课程单元。最终的课程以及维持该课程的非营利组织位于 biobuilder.org。

雷切尔·伯恩斯坦为教育和新闻场所撰写有关科学所有领域的文章。她为《科学》、《自然》、《细胞》和《洛杉矶时报》撰写新闻文章,并为在线教育资源 Visionlearning 做出贡献。在她的所有工作中,她的目标是通过娱乐和讲述引人入胜的故事来提供信息和教育。她还曾担任世界上最大的同行评审期刊 PLOS ONE 的编辑。她是一名经过培训的生物物理化学家,于 2005 年在宾夕法尼亚大学获得化学学士学位,并辅修了英语。 2011 年,她在加州大学伯克利分校获得了化学博士学位,研究蛋白质折叠和动力学。她还曾担任《伯克利科学评论》的主编和执行编辑,该杂志分享了加州大学的广阔世界。伯克利研究拥有广泛的受众。

凯伦·英格拉姆是一位利用设计和创意指导来提高科学意识的艺术家。 Ingram 是数字设计领域的资深人士,曾在 Campfire、McCann Erikson 和 UNICEF 等公司工作。她的作品曾发表在《Die Gestalten》、《科学美国人》和《FWA》等出版物上,并被评为“数字先锋”。她为《计算机艺术》杂志和《新骑士》出版物撰写了数字设计教程。

她是布鲁克林科学歌舞表演 The Empiricist League 的联合组织者,也是 SXSW Interactive 的董事会成员,在 SXSW Interactive 中,她提出与科学 + 艺术相关的主题,并主持 SXSW Biohacker Meetup。她是纽约大学 SHERP 创业科学新闻学课程的创意策略讲师。

作为 Genspace(布鲁克林社区生物技术实验室)的成员,Ingram 于 2014 年参加了首届“社区实验室”iGEM 赛道,并将于 2015 年担任设计赛道评委。作为 2015 年合成生物学 LEAP(卓越领导力加速器计划)研究员,Karen被公认为合成生物学领域的新兴领导者。

Kathryn M. Hart 是圣路易斯华盛顿大学生物化学和分子生物物理学系的研究讲师,也是 BioBuilder 教育基金会的硕士教师。她帮助合成生物学工程研究中心 (SynBERC) 为本科生开发了强化实验室技术课程,并为 BioBuilder 教授专业发展和学生研讨会。拥有生物科学背景的她发现,从工程角度教授生物学为引入传统内容以及以设计为导向的问题解决提供了独特的机会。她目前的研究重点是理解和改造蛋白质功能和能量学。她于 2004 年在哈弗福德学院获得生物学学士学位,并于 2013 年在加州大学伯克利分校获得化学博士学位。

尾注

《BioBuilder》封面上的动物是高尔夫球钉水母(Aegina citrea)。高尔夫球钉水母是一种分布广泛的水母,这意味着它在世界各地深海中都能找到,只要那里有浮游生物和小型无脊椎动物供其捕食。

像其他属于Aeginidae科的水母一样,高尔夫球钉水母的特征是其没有灯泡的四条触手,这些触手连接在圆顶形状的伞盖上方。

高尔夫球钉水母所属的目是裸水母目(Narcomedusae),这一目下的水母与大多数水螅虫类物种不同,它们不经过水螅体阶段。相反,这些目下的幼体直接发育成伞状的水母。据了解,裸水母目幼体可以在附着或寄生在其他物种的水母体内完成部分发育。这些寄生的幼体在寄主身上觅食的同时,甚至可以产生新的幼虫。

许多出现在O’Reilly封面上的动物都是濒危物种;它们对世界都很重要。要了解更多关于如何帮助保护这些动物的信息,请访问 animals.oreilly.com

封面图片是基于赫克尔(Haeckel)版画的绘图。封面字体是URW Typewriter和Guardian Sans。正文字体是Adobe Minion Pro;标题字体是Adobe Myriad Condensed;代码字体是Dalton Maag的Ubuntu Mono。

Read More

2024-05-19
实验室试剂和材料

附录 A 实验室试剂和材料

设备

一个储备充足的实验室会有计时器、微量移液器、永久记号笔和冰桶(还有冰!)等东西。 BioBuilder 实验室还假设有一些消耗材料可用。如果从 Ward’s Science 购买试剂盒,则会提供这些耗材,但许多实验室都有以下耗材:

  • 丁腈或乳胶手套
  • 15 ml 和/或 50 ml 锥形螺旋盖管
  • 微量离心管(1.5–2 ml)和架子
  • 无菌试管和试管架
  • 无菌牙签、接种环和/或涂抹棒
  • 10 厘米聚苯乙烯培养皿 - 如果您自己倒盘子

所述每个实验室都需要以下特定实验室设备。

滚轮或摇床   搅拌板和 125 ml 锥形瓶   分光光度计和比色皿/玻璃管*   培养箱 **(30°C 或 37°C)   水浴(42°C)
ETS   x x x
iT x x
CW x x
GB x x

*可以替代浊度标准品。
**也可以在室温下孵育,但需要更长的孵育时间。

试剂制备和储存

除非另有说明,您可以从主要化学品供应商处购买试剂,例如 Sigma-Aldrich 和 VWR。也可以通过 Gold Biotechnology 和 Ward’s Science 等专业供应商以较低的价格购买它们。

固体和液体介质

您还可以通过 Teknova 等供应商购买介质。

Luria Broth (LB) 液体培养基

将 10 g 胰蛋白胨、5 g 酵母提取物和 10 g 氯化钠溶解在水中,制成 1 L LB 培养基。高压灭菌或使用 0.2 μM 过滤器过滤灭菌。

Luria Broth (LB) 琼脂平板

将 10 g 胰蛋白胨、5 g 酵母提取物、10 g NaCl 和 7.5 g 琼脂添加到水中,制成 500 ml LB 琼脂培养基(足够约 25 个平板)。高压灭菌器溶解和灭菌。每个无菌培养皿中倒入约 20 ml LB 琼脂。冷却直至凝固,然后将介质面朝上存放在冰箱中长达几个月。要制作 LB 琼脂 + 氨苄青霉素平板,首先等待培养基冷却到足以触摸 (~55°C),然后添加 500 µl 1000x 氨苄青霉素原液并旋转混合,然后按照上述方法倒入培养皿中。 1个月内使用。

不含色氨酸 (-Trp) 的合成完全 (SC) 琼脂平板

将 3.4 g 不含氨基酸的酵母氮基、1 g 合成完全氨基酸脱落混合物 (-Trp)、10 g 葡萄糖和 10 个琼脂添加到水中,制成 500 ml LB 琼脂培养基。高压灭菌器溶解和灭菌。每个无菌培养皿中倒入约 20 ml SC-Trp 琼脂。冷却直至凝固,然后将介质面朝上存放在冰箱中长达几个月。

酵母提取物蛋白胨葡萄糖 (YPD) 琼脂平板

将 10 g 蛋白胨、5 g 酵母提取物、10 g 葡萄糖和 10 g 琼脂加入水中,制成 500 ml YPD 琼脂培养基。高压灭菌器溶解和灭菌。每个无菌培养皿中倒入约 20 ml YPD 琼脂。冷却直至凝固,然后将介质面朝上存放在冰箱中长达几个月。

库存解决方案

氨比西林(100 毫克/毫升溶液)

将 100 mg 氨苄青霉素溶解在 1 ml 无菌水中制成 1000x 储备液,或使用 0.2 uM 过滤器对溶液进行过滤灭菌。每 1 L LB 或 LB+琼脂中添加 1 ml 储备液,最终工作浓度为 100 ug/ml。冷冻原料可保存长达六个月或在冰箱中保存一周。

香蕉提取物(例如,在 amazon.com 上出售的 Frontier Banana Flavor)

按照 Eau That Smell 实验室协议中的描述制定香蕉气味标准。标准品可在冰箱中保存长达数周。

氯化钙,CaCl_2 (0.1 M 溶液)

将 735 mg CaCl_2 *2H 2 0 溶解于 50 ml 无菌水中或使用 0.2 μM 过滤器过滤灭菌溶液,制成 0.1 M 细菌转化溶液。在室温下储存溶液。

异戊醇

将 700 μl 添加到 1 L LB 培养基中。将 LB+异戊醇在冰箱中保存最多几天。

异丙基 β-D-1-硫代半乳糖苷,IPTG(0.1M 溶液)

将 24 mg IPTG 溶解在 1 ml 无菌水中,制成 100 倍原液,或使用 0.2 μM 过滤器对溶液进行过滤灭菌。每 25 ml LB 中添加 250 μl 储备液,使最终工作浓度为 1 mM。冷冻原料可保存长达 6 个月或在冰箱中保存一周。

邻硝基苯基-β-半乳糖苷,ONPG(0.01% 溶液)

将 40 mg ONPG 溶解在 40 ml 水中,制成 0.01% 的溶液。冷冻保存长达几个月或在冰箱中保存一周。

缓冲区

碳酸氢盐缓冲液(2% 溶液)

将 1 g 碳酸氢钠或 1 g Arm & Hammer 小苏打溶解在 50 ml 水中,制成 2% 的碳酸氢盐溶液。

碳酸盐缓冲液(1M 溶液)

将 5.3 克碳酸钠或 5.3 克纯碱(例如,在 amazon.com 上出售的 Tulip Fashion Art 纯碱)溶解在 50 ml 水中,制成 1M 碳酸盐溶液。

裂解缓冲液(1% SDS 溶液或稀洗洁精)

将 0.5 克 SDS(十二烷基硫酸钠)或 1 滴“喷射”透明液体洗洁精溶解在 50 毫升水中。

### 各种各样的

氯化钡,BaCl_2 (1% 溶液)

将 20 mg BaCl_2 溶解在 2 ml 水中,制成 1% BaCl_2 溶液。每套完整的浊度标准品大约需要 1.75 ml 1 % BaCl_2 。

漂白剂(10% 溶液)

将 10 毫升漂白剂(次氯酸钠)添加到 100 毫升水中,制成 10% 的漂白剂溶液。

电子构建实验所需试剂

请参阅 Mouser Electronics 网站上的 BioBuilder 项目页面

硫酸(1% 溶液)

将 1 ml 浓 H_2 SO_4 添加到 99 ml 水中,制成 1 % H_2 SO_4 溶液。每套完整的浊度标准品大约需要 80 ml 1 % H_2 SO_4 。安全注意事项:使用浓缩 H_2 SO_4 时要格外小心。应在防护罩中小心操作并使用个人防护装备(例如手套、实验室外套和安全眼镜),避免接触皮肤和/或吸入烟雾。

酵母转化试剂盒

MP Biomedicals 出品的 EZ-Yeast™ 转化试剂盒 #112100200

或者

Frozen-EZ 酵母转化 II 试剂盒(Zymo Research 出品)#T2001

Read More

2024-05-16
人脑海马体的经典计算模型

受量子理论支配的元宇宙中的意识属于受绝对理论支配的宇宙中的意识吗?

由量子计算机生成的元宇宙中的意识与由晶体管计算机生成的元宇宙中的意识有什么不同?

量子计算机的意识与晶体管计算机的意识有什么不同?

NWChem

  • NWChem 是一个开源的计算化学软件包,旨在模拟和预测分子和固体的性质。它支持多种量子化学方法和基组,并具有强大的并行计算功能。NWChem 可以用于计算分子结构、能量、光谱、反应动力学等。
  • NWChem 具有良好的并行化能力,可以有效地处理中等到大规模的量子化学计算。它在大型超级计算机上的性能表现良好,可以处理数百到数千原子的系统,包括分子和固体。

HF(Hartree-Fock)方法

  • Hartree-Fock 方法是一种单参考的自洽场方法,用于计算原子和分子的基态能量和波函数。HF 方法通常用于描述小型分子的电子结构。
  • 在严格意义上,HF(Hartree-Fock)方法在某种程度上可以被认为是不含近似的,因为它是基于非相对论量子力学的精确解,但在实际应用中,HF 方法也会涉及到一些近似,例如闭壳层近似和单 Slater 行列式近似等。
  • Hartree-Fock 方法基于单 Slater 行列式理论,假设体系的波函数可以表示为单个 Slater 行列式。它采用了经典的波函数表示方法,并通过解 Hartree-Fock 方程来优化波函数,以最小化体系的总能量。HF 方法的理论基础主要是非相对论量子力学和电子的波动性。

如何用 NWChem 的 HF(Hartree-Fock)方法计算与海马体相关的量子化学?

特性 PySCF NWChem
编程语言 Python C/C++
主要用途 桌面和中小规模量子化学计算,快速原型开发 大规模量子化学计算,高性能计算
计算方法 HF、DFT、MP2、CC、CI 等 HF、DFT、MP2、CC、分子动力学等
模块化和灵活性 高度模块化,易于扩展和定制 功能全面但模块化程度较低
性能 适合中小规模计算,关键部分有 C 扩展 专为高性能计算设计,适合大规模并行计算
硬件兼容性 桌面计算和中小型集群 超级计算机和高性能计算集群
学习曲线 对 Python 用户友好,易于上手 学习曲线较陡,需要更多的时间掌握
集成性 易于与 Python 生态系统和其他工具集成 集成性较低,但可以通过脚本和接口实现
成熟度和稳定性 新兴工具,正在快速发展 成熟稳定,在学术和工业界广泛应用

为人脑海马体建立量子化学模型需要收集和使用多种数据,包括但不限于:

  1. 分子结构数据:包括海马体中各种分子的结构信息,如蛋白质、脂质、核酸等。

  2. 分子间相互作用数据:了解分子之间的相互作用,包括氢键、范德华力、离子键等。

  3. 电子结构数据:获得分子中各原子的电子分布情况,包括电子云密度、电子轨道能级等。

  4. 动力学数据:了解分子在海马体中的运动情况,包括振动频率、转动角速度等。

  5. 反应性数据:了解分子在不同条件下的反应性,包括活化能、反应速率等。

  6. 环境因素数据:考虑海马体的生理环境因素对分子结构和性质的影响,如 pH 值、温度、离子浓度等。

  7. 实验数据:通过实验手段获取海马体中分子的实际性质数据,如光谱数据、质谱数据、X射线晶体学数据等。

人脑海马体中有许多与记忆相关的关键蛋白质,其中一些包括:

  1. NR2B:N-甲基-D-天冬氨酸受体亚基2B(N-methyl-D-aspartate receptor subunit 2B),是NMDA型谷氨酸受体的亚基之一,与学习和长期记忆形成有关。

  2. CAMKII:钙/钙调素依赖性蛋白激酶II(Ca2+/calmodulin-dependent protein kinase II),是一种钙调素依赖性酶,参与了突触的可塑性和记忆的形成。

  3. CREB:cAMP反应元件结合蛋白(cAMP response element-binding protein),是一种转录因子,参与调节基因的转录,对长期记忆的形成和保持起重要作用。

  4. PSD-95:附着在神经元突触后膜上的后膜密度蛋白(Postsynaptic density protein 95),是一种突触相关蛋白,调节突触的形成和功能,对学习和记忆具有重要作用。

  5. Arc:活动相关的细胞骨架蛋白(Activity-regulated cytoskeleton-associated protein),是一种突触蛋白,参与突触可塑性和长期记忆的形成。

  6. Synapsin I:突触素I(Synapsin I),是一种突触蛋白,调节突触小泡的释放,参与了记忆的形成和维持。

  7. Bdnf:脑源性神经营养因子(Brain-derived neurotrophic factor),是一种神经营养因子,促进神经元的生存、生长和连接形成,对记忆的形成和维持具有重要作用。

这些蛋白质在海马体中参与了多种分子和细胞水平的过程,包括突触可塑性、长期增强和长期抑制等,对学习和记忆的形成起着关键作用。

Read More

2024-05-15
金面包

第10章 金面包

FIGURE

BioBuilder 的 Golden Bread 活动强调设计-构建-测试周期的“构建”阶段。 您将使用一种面包酵母菌株,该酵母菌株已用另一种真菌的基因进行改造,以产生 β-胡萝卜素,这是我们从胡萝卜、红薯和西兰花等食物中自然获得的营养物质。在体内,β-胡萝卜素会转化为维生素 A,这对于视力、免疫系统和其他生物功能至关重要。在一些与营养不良作斗争的发展中国家,维生素 A 缺乏是一个严重的公共卫生问题。研究人员希望,一种旨在产生 β-胡萝卜素的工程化面包酵母菌株(就像您将在本次活动中研究的菌株一样)可以用于面包中,以治疗维生素 A 缺乏症。这种面包由于添加了维生素而呈现金黄色,因此得名“黄金面包”。

对于任何新食品或药物要广泛使用,制造商必须证明他们能够可靠地生产该材料。批次之间的差异不会很大。它必须始终有效。事实上,可靠性对于几乎所有工程工作都至关重要。如果你想一想你最喜欢的工程物体,无论是你的汽车、手机还是冰箱,它的可靠运行可能是它受到喜爱的部分原因。人们讨厌汽车无法启动、电话信号不好以及冰箱变热。我们使这些对象达到相当高的性能标准。事实上,桥梁、ATM 机和投票机等一些工程设备必须始终完美运行。因此,可以公平地说,为了有用,所有工程系统都应该可靠。

FIGURE

在合成生物学领域,可靠性工程师识别生命系统中的不稳定来源,以使系统运行更加可靠。他们有自己的工作要做! BioBuilder 的 Golden Bread 活动强调如何将科学方法与良好的旧工程知识相结合,以评估并改进不可靠的合成细胞。

工程可靠性

如果你家乡的土木工程师已经完成了他们的工作,你就不会觉得开车过桥是一种可怕的经历。您不必在整个过程中屏住呼吸,担心结构会在您的重量下弯曲或坠落到地面。但现在想一想,这种自信从何而来?我们如何知道桥梁是否安全?

答案是桥梁和其他建筑项目的设计都是为了可靠性。设计人员知道桥梁故障可能是致命的、昂贵的,并且会破坏城市的基础设施,因此他们尽一切努力设计和建造一个可靠的系统。在本章中,我们将介绍一些可靠系统设计的具体方法,例如执行例行定期维护以及使用强度高于最低限度所需的材料进行建造。我们还讨论了如何将这些原理扩展到生物系统工程。

定期维修

想象一下,如果您的汽车永远不需要调整该多好。你永远不需要把它带到商店,它的性能总是和下线那天一样完美。您可以节省大量的时间和金钱,而且您永远不会因故障而感到不便。大多数驾驶员可能会很高兴拥有一辆运行 100% 可靠的汽车。

FIGURE

但司机和汽车制造商,即使他们梦想着如此完美的未来,也知道不存在完全可靠的汽车。汽车会因发动机运动部件的摩擦、机油变脏以及轮胎根据季节需要或多或少的空气而遭受物理磨损。工程师们已尽其所能,最大限度地提高工作汽车中每个部件的可靠性,但期望所有部件无限期地完美运行是不合理的。相反,制造商平衡支持汽车正常使用的强大系统和简单的维护计划,以保持汽车尽可能长时间地正常运行。

那么,当工程师知道随着时间的推移,系统必然会腐蚀然后出现故障时,工程师该怎么办呢?在大多数制造领域,工程师将确定系统及其组件的平均无故障时间 (MTF)。这一确定有助于设计人员预测系统何时会崩溃。它还指导设计人员何时以及如何通过系统的定期维护进行干预。工程师在设计过程中纳入 MTF 计算,以便他们可以建议何时维修零件以及如何使用它们以延长使用寿命。

在工程学教授 Henry Petroski 的一本精彩著作《To Engineer is Human》中,他探索了 MTF,寻找一个熟悉的物体,即回形针。您可能从经验中知道,如果您将回形针弯曲足够多次,它最终会断裂,如图 10-1 所示。从物理角度来看,这种断裂的发生是因为弯曲对金属施加了应力,从而增加了材料的物理缺陷,并且随着缺陷的积累,金属断裂。您可以通过计算回形针断裂前可以弯曲的次数来测量回形针的 MTF。 为了获得对您的数字的信心,您需要在几种不同的条件下重复实验几次,以确定平均 MTF。当然,我们大多数人并不担心修理回形针,因为它们很容易更换,但想象一下您有一个非常有价值的回形针。在这种情况下,您将记录它所经历的弯曲次数,以便您知道何时接近 MTF。很难想象回形针可以做什么“维护”,但如果回形针足够有价值,可能会有一些值得尝试的事情。

当将这些想法应用于生物学时,很明显细胞内置了大部分维护程序。生物系统比汽车或回形针等机械结构更具动态性。大多数细胞在生长过程中都处于近乎恒定的更新状态,然后将其遗传指令传递给新细胞。细胞生长和分裂可靠地产生新鲜细胞的供应。细胞也会自我修复,至少在细胞受到的损伤不太严重时是这样。合成生物学基础章节中讨论的生物学的这些方面是合成生物学如此有吸引力的部分原因。合成生物学家拥有可以用来构建的动态材料(细胞!),因此必须充分利用生物学的特征和能力。

FIGURE

图 10-1 回形针的 MTF。如图所示,来回弯曲回形针最终会导致其断裂。断裂前的弯曲次数可用于计算 MTF。

细胞固有的日常维护能力也有一个缺点。每当细胞复制自己的新副本以取代破旧的版本时,细胞分裂过程就会在 DNA 中引入突变,并传递给子细胞。因此,存在代际差异。这种变异会影响细胞的行为,并导致我们在自然界中发现聪明而美丽的系统。这种变异也给合成生物学家带来了重大障碍。影响系统行为的突变可以接管群体,用不再执行设计功能的新细胞完全取代原始细胞(图10-2)。

因此,为了设计一个可靠的生命系统,合成生物学家必须解决随着时间的推移出现的意外遗传变化。正如我们在 BioBuilder 的其他章节中所看到的,更成熟的工程学科和合成生物学之间的相似之处(尽管它们并不完美)可能会有所帮助,接下来我们考虑一些其他的工程可靠性方法。

FIGURE

图 10-2 代际变异。工程细胞(顶部,蓝色)的分裂可以产生精确的副本(第二行,蓝色)或可能无法执行所需功能的突变变体(第二行,绿色)。如果变体更强大,它可以在几轮分裂后接管种群,如底行所示。

冗余

在工程系统中构建冗余是许多领域使用的另一种技术,以确保更可靠的性能。例如,致力于乘客安全的工程师选择在车祸中同时部署安全带和安全气囊。安全带和安全气囊系统独立工作以实现同一目标。它们的独立控制使得两者在碰撞中发生故障的可能性较小。它们的效果也各不相同。根据碰撞的角度,安全带或安全气囊可能在保护车内人员方面发挥更大的作用。拥有两个安全系统可以增加乘客在碰撞中不受伤害的可能性,因此增加的成本是值得的。然而,并非所有资源密集型裁员都是合理的(图 10-3)。相反,考虑一个威胁较小的工程问题:设计手机。消费者通常期望他们的手机只能使用几年。屏幕可能会破裂,软件需要更新,最新手机的物理功能也会得到改进。由于大多数消费者会更换手机,而不是忍受随着时间的推移而出现的许多缺陷,因此手机设计人员没有动力在手机的电气组件中设计太多冗余。电气系统故障(可能是由于手机变湿或掉落在坚硬的表面上)造成的,虽然会带来不便,但不会危及生命。

这可以通过更换手机来解决,消费者宁愿经常更换手机或购买保险,也不愿提高手机本身的零售价格。

FIGURE

图 10-3 冗余。同时穿着背带和腰带是冗余设计的典型例子。

因此,冗余在其他工程学科中的应用并不均匀,并且是一种资源密集型的可靠性方法,但事实证明它是自然生物系统中相对常见的特征。例如,大多数动物细胞携带两个完整的基因组拷贝,而植物则更进一步,有时携带六到八个基因组拷贝。 活细胞中的冗余对于它们的生存很重要,因为 DNA 可能会被细胞环境中的诱变剂损坏。暴露在阳光或诱变剂下会引起 DNA 序列的变化,使一些遗传指令基本上无法读取。遗传冗余为细胞提供了一些保险。即使其中一个 DNA 拷贝被损坏,另一个 DNA 拷贝也可能保持完整,并且还可以作为修复受损拷贝的模板。细胞必须在能源和原材料方面为这种保险付出高昂的代价,但基因组“额外”副本的成本可以通过其遗传指令的安全性得到补偿。鉴于遗传冗余是大多数多细胞生物的标准特征,进化优势必定超过成本。

合成生物学家可以通过使用特定 DNA 序列的多个副本来设计他们的系统,从而引入遗传冗余。这可以通过用额外的质粒转化细胞或将某些基因的额外拷贝插入细胞的基因组来完成。这些遗传技巧可以通过为细胞提供基因的备份副本来增强基因电路的稳定性,以便在其他副本失败时使用。但令人惊讶的是,它也会破坏系统的稳定性。一些生物体,例如酵母,已经学会识别并去除 DNA 的直接重复序列。基因产物表达过多也存在危险。细胞是极其高效的系统,因此维持和表达额外的遗传物质可能会耗费大量能量,从而增加细胞的代谢负担或破坏工程系统的平衡。有一些方法可以解决这些缺陷,例如像我们在金面包实验中所做的那样,对冗余基因进行密码子改组,或者对冗余基因的表达添加一些调节。然而,成本/效益分析并不容易,而且目前还不清楚在将可靠性设计到生命系统中时应遵循哪些一般规则。

构建强大的系统

FIGURE

我们将在这里讨论的工程可靠性的最终方法是构建一个比严格必要的更强大的系统。例如,在建造一座桥梁时,工程师可以使用能够支撑 60 吨卡车的材料进行设计,因为他们知道大多数州卡车的最大法定重量为 40 吨。同样,他们可以设计一座能够承受里氏 10 级地震的桥梁,因为他们知道有史以来最大的地震是 9.5 级。为了充分设计如此强大的系统,工程师可以使用建模方法来预测其设计和材料对卡车和地震的反应。图片 本章提供有关建模的更多信息,并考虑模型如何为不同压力下的系统提供良好的数据。

设计过于稳健的系统的缺点是相关的成本。例如,建造如此超强桥梁的材料可能比能够承受桥梁实际预期应力的材料贵得多。大多数产品设计师都会理性地选择材料,通常会使用称为阿什比图的工具将可能材料的强度与其成本进行比较。通常,他们还会考虑与设计过于强大的系统相关的额外时间以及该时间的成本。与在足够的系统中构建的标准材料相比,超级材料的构建、采购或维护可能更复杂。亨利·彼得罗斯基(Henry Petroski)的另一本精彩著作《有用事物的演变》在其“小钱变大钱”一章的大部分内容中描述了一个看似平凡的工程项目,即床架上板条的工程。 Pertoski 追溯了为什么板条与框架成直角而不是对角穿过框架的问题(图 10-4)。事实证明,这个看似简单的问题早在亚里士多德就已经提出过,并且在荷马的《奥德赛》中也得到了考虑,当时奥德修斯建造了一张必须固定在橄榄树上并用皮带穿过的新娘床。令人惊讶的是,在大多数有记录的历史中,带有对角板条的床的经济性和维护被认为是不合理的!

FIGURE

图 10-4 平衡稳健性和成本。仅具有水平板条的床(左)不如具有对角板条网格的床(右)坚固,但前者比后者便宜。多年来,工程师在这种情况下一再选择成本较低的设计。

当材料选择扩展到生物系统的设计时会是什么样子?也许“强度”是指系统中不同蛋白质的表达水平,底盘本身的可预测生长,或者用于零件和设备的蛋白质的物理特性。 需要加强的生物系统的相关方面将取决于具体设计及其预期用途。

考虑一个系统,例如生物设计基础章节中的砷传感器,或任何其他与此相关的环境传感器。与使用超强钢建造桥梁的生物学类似,可以设计具有许多蛋白质传感器设备副本的系统,或者使用比严格必要的更灵敏的传感器。通过这些修改,您可以放心,即使是微量的触发化合物也会被传感器检测到并启动您想要的细胞反应。此外,即使基因中的有害突变随着时间的推移而积累,传感器也可以继续发挥作用,因为它的设计功能已经超出了规格。在这种情况下,需要权衡的是触发误报的可能性。高亲和力砷传感器现在可以识别类似的、毒性较小的化合物,甚至在根本不存在任何配体的情况下打开。编码如此高产量的传感器蛋白的系统在代谢上也可能是“昂贵的”,需要大量的细胞能量来维持高产量水平。细胞的许多资源将仅用于设计的系统,而不是细胞保持健康所需的其他基线代谢和修复系统。 使用蜂窝资源来设计可靠性最终可能会对细胞的健康产生负面影响,从而干扰工程系统的功能。事实上,代谢压力可能会减缓细胞的生长并降低工程系统的性能——这与工程师在引入更多传感器副本时试图做的事情恰恰相反。

此外,如果工程细胞处于进化劣势,它们将被生长更快的新突变体所取代,如前所述。根据工程细胞及其突变版本的生长速度,进化之战可能会在短短几代内失败。因此,毫不奇怪,合成生物学家正在采用基因设计原理,使它们的部件“更强”,因为它们不太可能发生突变。例如,由于相同的 DNA 序列经常通过重组被删除,因此通常会避免遗传元件的直接重复。合成生物学家可以利用遗传密码中的简并性来改变冗余 DNA 部分的序列,例如用 TTG 或 CTA 编码亮氨酸。这个技巧使得同一个蛋白质可以由两个不同的 DNA 序列编码,而这两个序列不太容易重组。通过用两个基因编码该功能,可能会使系统表现得更加可靠。您将通过 Golden Bread 工程活动直接测试这个概念。

合成生物学家还拥有一些工具来增强他们使用的底盘,使它们不易受到意外变化的影响(图 10-5)。有些菌株具有改进的 DNA 修复机制。其他基因已被修改,以减少突变诱导过程或丰富有助于蛋白质适当折叠的机制,这可能允许轻微突变的蛋白质正常发挥作用。最后,一些底盘设计有“终止开关”,或一种自毁手段,因此任何变异偏离所需行为的细胞都可以从群体中移除。然而,这些都不是万无一失的。因此,合成生物学的活跃研究领域之一是设计更安全、更可靠的底盘

FIGURE

图 10-5 自校正系统。工程细胞(顶部,蓝色)的分裂可以创建精确的副本(第二行,蓝色),或者可能导致产生可能无法执行所需功能的遗传变体(第二行,绿色)。为了防止这些不需要的变异在群体中持续存在,工程师可以设计组件来杀死这些细胞,如红线所示,以确保系统可靠运行。

“VitaYeast” iGEM 项目的背景

动机

获得足够维生素 A 的唯一方法是通过健康饮食或维生素补充剂。全球有超过 2 亿学龄前儿童无法通过任何一种方式获取维生素 A,他们的维生素 A 缺乏会对他们的视力和整体健康造成重大影响。维生素 A 在体内由 β-胡萝卜素加工而成,是视黄醛的前体,视黄醛是视力所需的化学物质。它也是视黄酸的前体,视黄酸对于健康的免疫系统和发育至关重要。甘薯、胡萝卜、西兰花和绿叶蔬菜中含有丰富的维生素 A,但在这些食物不生长或不生长的地方,维生素 A 缺乏 (VAD) 是一个主要的健康问题经常食用。

世界卫生组织估计,维生素 A 补充剂可以将 5 岁以下儿童的死亡率降低 24% 至 34%。然而,向农村地区分发补充剂可能很困难且成本高昂,因此不是应对这一健康挑战的可持续解决方案。因此,一些研究人员旨在开发一种本身富含维生素A的主食。2000年,一个欧洲研究小组宣布开发出这样一种食品:一种经过基因改造表达β-胡萝卜素的“黄金大米”品种。 。水稻经过改造后能够表达三种酶,这些酶可以从大米中一种名为香叶基香叶基二磷酸的天然化合物中产生β-胡萝卜素。由于β-胡萝卜素的存在,又被称为“维生素A原”,因为它在体内可转化为维生素A(图10-6),使米粒呈现金黄色,因而得名。 “黄金大米”(图10-7)。

FIGURE

图 10-6 维生素 A 合成。人类通过食用富含 β-胡萝卜素的饮食来获取维生素 A,也称为视黄醇,β-胡萝卜素在消化过程中会分解成两个维生素 A 分子。

研究人员希望将浓缩大米分发到大米是当地饮食主要组成部分且 VAD 构成健康挑战的地方。然而,他们遇到了强烈的反对。环保团体和个人担心生物工程食品对该地区个人健康、生态系统和经济的潜在负面影响。黄金大米的反对者限制了它的分发,因此它是否能减少 VAD 死亡的问题没有得到解答。许多这些问题背后的信念和概念可以引发充满活力的课堂讨论,生物伦理学基础章节提供了引导此类讨论的方法。

FIGURE

图 10-7 黄金大米。黄金大米是富含β-胡萝卜素的白米,摄入后会转化为维生素A。

2011 年,约翰·霍普金斯大学的国际基因工程机器 (iGEM) 团队寻求不同的解决方案来打破 VAD/黄金大米的僵局。该团队没有在主要食物来源中添加 β-胡萝卜素并将其颜色改变为不自然的颜色,而是决定使用面包酵母的工程版本,扩展了研究人员 2007 年发表的一些研究成果,这些研究人员对常见菌株酿酒酵母进行了基因改造,除了正常的遗传信息补充外,还表达三个 β-胡萝卜素生物合成基因(图 10-8)。 iGEM 团队的想法是用这种酵母替代标准面包酵母,使用户能够烘焙营养丰富的面包。不需要特殊的烘焙说明。用户只需在他们的标准面包配方中添加一点工程“VitaYeast”即可(图 10-9)。 iGEM 团队希望这一解决方案能够缓解围绕黄金大米引起的一些担忧。工程酵母将是维生素强化面包的次要成分。此外,酵母在面包烘烤过程中会被杀死,所得的面包应呈现自然颜色,而不是合成颜色和令人倒胃口的颜色。

FIGURE

图 10-8 β-胡萝卜素生物合成途径。用于改造 VitaYeast 的代谢途径由三种酶(灰色圆圈)组成,它们将磷酸法尼酯(顶部菱形)转化为 β-胡萝卜素(底部菱形)。该途径中的前三种化合物是无色的,后三种化合物分别为黄色、红色和橙色。此处显示的酶功能为 crtE,天然存在于面包酵母中,但由名为 BTS1 的基因编码;另外两种酶 crtYB 和 crtI 是从红色真菌 X. dendrorhous 中作为基因导入的。

FIGURE

图 10-9 富集酵母。有一天,一种市售的“VitaYeast”可以代替面包酵母来解决全球维生素 A 缺乏的问题。

零件级和设备级设计

尽管iGEM团队的“VitaYeast”项目是受黄金大米项目推动并有许多相似之处,但大米和酵母系统的生物学特性却存在重要差异。由于这个原因(也可能是其他原因),VitaYeast 中的基因回路源自真菌,而黄金大米的基因回路则源自植物。 首先开发 VitaYeast 菌株的研究人员引入了一种来自红色酵母 Xanthophyllomyces dendrorhous 的生物合成途径,该酵母天然产生类胡萝卜素化合物,并且具有可用于生产 β-胡萝卜素的酶。相比之下,黄金大米的开发者引入了三种植物基因,将大米中天然存在的香叶基香叶基二磷酸转化为β-胡萝卜素。

与大米一样,面包酵母酿酒酵母可以自然产生二磷酸法呢酯,这是合成 β-胡萝卜素的起始化合物。然而,这些酵母还表达一种由 BTS1 基因编码的酶,可将法呢基二磷酸转化为香叶基香叶基二磷酸。将香叶基香叶基二磷酸转化为 β-胡萝卜素需要两种酶 crtYB 和 crtI 的作用,这两种酶是从红色酵母导入面包酵母的。这些酶中的每一种都有双重作用。 crtYB 酶在合成的早期发挥作用,将香叶基香叶基二磷酸转化为八氢番茄红素,然后在合成的最后一步重新发挥作用,将番茄红素转化为 β-胡萝卜素。 crtYB 催化步骤之间有两个反应,需要 crtI 酶的活性,该酶也从红色真菌导入面包酵母菌株中。该酶首先将八氢番茄红素转化为神经孢子烯,然后转化为番茄红素。

大自然提供了一种简单的方法来检测该途径产生的色素。酵母使β-胡萝卜素变成亮橙色(图10-10)。或者,酵母只使番茄红素像番茄一样变红,番茄红素天然浓度很高。最后,神经孢子烯是该途径中的黄色中间体。然而,颜色编码到此为止,因为该途径中较早的化合物具有少于七个共轭双键,因此是无色的。然而,该途径中的三种有色产物使得更容易确定哪些酶起作用以及哪些菌株产生所需的化合物。

FIGURE

图 10-10 VitaYeast 设计。通过添加合成 β-胡萝卜素(中)的酶途径对面包酵母(左)进行改造,产生了一种可用于烘焙的新型橙色 β-胡萝卜素合成酵母。

当构建 VitaYeast 菌株的研究人员看到它的橙色时,他们可能会欣喜若狂。然而,仔细观察他们所做的事情,他们一定很快意识到,并非所有殖民地的行为都符合他们的预期和希望。尽管事实上它们都来自同一个遗传父母,并且本身的基因应该是相同的,但有些是橙色的,有些是红色的,有些是黄色的,有些是白色的。一种可能的假设是,这些不同颜色的酵母“卡在”生物合成途径的中间步骤。了解这一假设是否确实是五彩酵母的原因并解决问题是 BioBuilder Golden Bread 活动的核心。

设计和构建初始“VitaYeast”菌株的研究人员采用了两种方法来提高其 β-胡萝卜素生产的可靠性。 首先,他们试图建立一个更强大的系统。 特别是,他们停止使用表达红色酵母基因的易于使用的质粒。他们没有使用质粒,而是将 crtYB 和 crtI 基因转移到他们正在构建的面包酵母的染色体中。这些基因的整合副本不太可能丢失,因此菌株应该更可靠地呈现橙色。这种方法的缺点是,当基因位于染色体中时,它们也更难处理,因为遗传物质在实验室中不容易操作,但在这种情况下,研究人员认为系统可靠性的提高将值得在使用它时增加更多的麻烦。

其次,他们尝试通过添加冗余基因来提高β-胡萝卜素的产量,为催化途径第一步的酶添加第二个基因拷贝。最初,他们依靠面包酵母的天然酶 BTS1 将法呢基二磷酸转化为香叶基香叶基二磷酸,但在优化系统的工作中,他们发现,如果他们提供 β-胡萝卜素的产量,就可以增加 β-胡萝卜素的产量。通过在该路径的第一步中引入一些冗余来启动。他们从红色酵母中引入了另一种酶 crtE,以帮助将法尼基二磷酸转化为香叶基香叶基二磷酸。那么,他们的最终系统在一定程度上依赖于冗余来保证可靠性。它包含两个基因:crtE 和 BTS1,尽管它们的 DNA 和蛋白质序列完全不同,但它们都能产生进行 β-胡萝卜素生物合成第一个生化反应的酶。

最后,研究人员通过一项额外的修改改进了系统。他们确定可以通过包含 crtI 基因的第二个拷贝来增加 β-胡萝卜素的产量。在这种情况下,研究人员怀疑额外的 crtI 基因的可靠性增加是由于酶的表达水平增加,而不是我们在前面部分中讨论的冗余的其他优点,例如在第一个情况下有一个额外的副本可用复制失败。

感谢研究人员对这种 VitaYeast 菌株进行的所有巧妙的基因工程,我们现在拥有了一种呈亮橙色的酵母菌株,2011 年霍普金斯大学的 iGEM 团队可以使用它。 然而,令团队非常失望的是,为可靠性而设计的应变仍然不是 100% 的橙色。将这种酵母菌株的单个菌落重新划线到培养皿上会产生橙色菌落,但也会产生一些红色、黄色和白色菌落。 BioBuilder 的 Golden Bread 活动研究了这种不稳定性,并尝试了提高菌株性能的方法。

额外阅读和资源

  • 阿什比,M.F. (1999) 机械设计中的材料选择 [ISBN: 0750643579]。
  • Petroski, H. (1985) 《工程师就是人:失败在成功设计中的作用》[ISBN: 0679734163]。
  • Petroski, H. (1994) 实用物品的演变:日常用品——从叉子和别针到回形针和拉链——是如何形成的。 [ISBN:0679740392]。
  • Verwaal,R. 等人。通过用来自树状叶黄酵母 Appl Environ Microbiol 的胡萝卜素基因连续转化,在酿酒酵母中高水平生产 β-胡萝卜素。 2007;73(13):4342-50。
  • 网站:黄金大米
  • 网站:世界卫生组织,微量营养素缺乏症

FIGURE

金面包实验室

该实验室向学生介绍真核实验生物酿酒酵母,其生长速度和基因操作方法与大肠杆菌不同。出于工程可靠性的目标,该实验试图表征菌株的不稳定性,使用菌落 PCR 评估其可能的遗传来源。通过用含有工程途径中基因之一的合成版本的质粒转化酵母,强调了冗余的工程概念。您可以使用 Golden Bread 实验室程序来教授生物技术技能,例如固态微生物培养和 DNA 电泳。

设计选择

使用单一基因程序构建的单一酵母菌株可以产生多种颜色的酵母,这一事实表明,VitaYeast 菌株无法像生物工程师希望的那样可靠地生产 β-胡萝卜素。为了调查不可靠性的根源,我们首先假设不同的菌落颜色是由遗传不稳定性造成的,即细胞分裂时β-胡萝卜素代谢途径中一个或多个基因的变化。 您将进行实验来量化不可靠性的程度并评估遗传变化发生的位置

在这些活动中,您将特别关注 crtYB 基因,因为它是系统中唯一没有任何已设计到 β-胡萝卜素生产途径中的遗传冗余的部分。然而,重要的是要认识到,这种不可靠性可能还有其他解释,包括主要不参与β-胡萝卜素途径的基因的作用,或完全非遗传的原因,例如生长培养基的差异。尽管我们不会在这里研究这些其他潜在的不可靠性来源,但它们代表了出色的后续实验。

实验问题

我们将研究并尝试使用经过验证的冗余工程策略来修复 VitaYeast 菌株的遗传不稳定性。通过将注意力集中在一个特定基因 crtYB 上,我们有效地将实验问题缩小到一个简单且可测试的问题:向 VitaYeast 菌株中添加合成的 crtYB 基因 crtYB’ 是否会减少或完全消除酵母菌的生长非橙色(即红色、黄色、白色)菌落?

为了解决这个问题,我们需要比较两个值:

  • 添加 crtYB’ 之前,红色、黄色和白色菌落相对于橙色菌落的数量,或非橙色菌落的百分比。
  • 添加 crtYB’ 后非橙色菌落的百分比。

如果百分比下降,我们可以得出结论,冗余实际上减少了系统中的遗传不稳定性。如果百分比保持不变,也许我们应该尝试添加一个或多个不同的基因,或者完全采取另一种方法。如果百分比增加,我们可能会质疑我们用于引入合成基因的程序是否会产生意想不到的副作用。

通过思考实验可能的结果,我们可以更好地设计必要的控制。对于在质粒上引入 crtYB 新副本的转化过程,我们可以想象使用阴性和阳性对照。 转化的阴性对照是我们不希望在我们的选择平板上生长的样品,在这种情况下,平板缺乏必需氨基酸,因为它不包含带有选择标记的质粒,该基因产生相同的必需氨基酸。为了准备该样品,我们需要执行与实验样品相同的所有步骤,但不添加质粒 DNA。如果阴性对照确实生长,与我们的预期相反,我们知道有关程序或平板的某些因素无法有效地将转化细胞与没有质粒 DNA 的细胞分开。

阳性对照可以帮助我们解决有关转化过程中意外副作用的问题。 我们期望阳性对照在选择板上生长,但不希望它包含 crtYB 的额外副本(这将使其与我们的实验样本相同)。因此,对于我们的阳性对照,我们将用包含选择性标记但不含 crtYB 副本的“空”质粒转化酵母。现在,让我们回到我们的“思想”实验:如果遗传不稳定性在转化后增加怎么办?通过与阳性对照进行比较,我们可以确定是否是 crtYB’ 或单独的转化导致了这种意外结果。事实上,转化是一个严酷的过程,可能会导致酵母 DNA 发生意外变化,因此排除这种可能的遗传不稳定来源非常重要。

我们的实验样品将包含 VitaYeast 和包含选择性标记和 crtYB 基因的质粒。我们将比较转化后非橙色菌落与阳性对照平板上的菌落的百分比。这将提供最直接的同类比较,并使我们能够将任何颜色变化归因于 crtYB’ 基因本身,而不是任何其他混杂因素。

入门

您将收到一种已经含有工程化 β-胡萝卜素途径的酵母菌株。您将首先进行自己的简单实验,通过重新划线橙色酵母并计算橙色、红色、黄色和白色菌落的数量来测量 β-胡萝卜素生产的可靠性。

然后,您将开始处理一个或多个非橙色菌落。您将进行 PCR 实验以确定 crtYB 基因是否仍然存在。回想一下,crtYB 是系统中唯一没有冗余副本的基因。我们将提供用于扩增 crtYB 的引物,但您也可以自己为该基因或途径中的其他基因设计引物。

我们还将为您提供一个含有 crtYB 基因冗余但合成副本的质粒,我们将其称为 crtYB’。该基因产生与原始 crtYB 基因相同的蛋白质产物,但用密码子改组的 DNA 序列对其进行编码。由于遗传密码的简并性,基因的重新编码得以发生。与 PCR 实验一样,您也可以自行设计这个冗余副本。您将把这个多余的 crtYB 副本转化为红色、橙色、黄色或白色酵母。转化方案与转化大肠杆菌的方案略有不同,但基本原理是相同的。将转化反应铺板并使菌株生长 2 天后,您将计算不同颜色的菌落数量,以评估引入这种冗余是否使系统运行更可靠。

本实验的酵母菌株含有整合到其染色体 DNA 中的产生 β-胡萝卜素的遗传电路。酵母将以“刺”或“斜”的形式到达,即在倾斜介质上装有少量酵母的试管。

  1. 使用无菌牙签或接种环将酵母划线到培养皿上:从牙签或接种环上的刺处收集少量细胞,并将细胞转移到含有酵母提取物蛋白胨葡萄糖培养基 (YPD) 的培养皿中琼脂。
  2. 将这些培养皿培养基面朝上放入 30°C 培养箱中 36-48 小时。平板也可以在室温下孵育,但细胞生长会更慢。

实验室协议

这是实验室协议的缩写版本,仅包括转化活动。 BioBuilder 网站上提供了菌落 PCR 和设计冗余合成基因的说明。

这些说明使用酵母转化试剂盒来制备感受态细胞。该试剂盒的内容是专有的,但如果您在谷歌上搜索化学感受态酵母细胞,很可能会找到这些内容。

改造 VitaYeast

  1. 对于您想要执行的每个转化(阳性对照、阴性对照、实验),给微量离心管贴上标签。然后加入 500 微升水,并用牙签在每个试管中摇动装满产生维生素 A 的酵母。
  2. 在微量离心机中旋转试管 30 秒,收获酵母。
  3. 将每个颗粒的上清液吸出或移入装有 10% 漂白剂的废烧杯中,以除去上清液。您不必除去每一滴上清液。
  4. 将每个细胞沉淀重悬于试剂盒中的 500 μl“洗涤溶液”或“溶液 1”(很可能只是无菌水!)中进行洗涤。
  5. 在微量离心机中全速旋转 30 秒收获细胞。
  6. 如前所述吸出或除去上清液。
  7. 将每个沉淀重悬于 50 μl 的“感受态溶液”或“溶液 2”(最有可能是醋酸锂和 DTT,它通过未知机制使酵母透化)。与化学感受态细菌不同,感受态酵母在这种状态下并不“脆弱”,并且可以保持在室温下。
  8. 在阴性对照管中加入 5 μl 水。轻弹管子以混合内容物。该试管不含 DNA。
  9. 将 5 µl pRS414 DNA (50 ng) 添加到阳性对照管中。轻弹管子以混合内容物。该质粒带有酵母复制起点和 TRP1 基因,可作为转化的阳性对照。
  10. 将 5 µl pRS414+crtYB’ DNA (50 ng) 添加到实验样品管中。轻弹管子以混合内容物。
  11. 向每个试管中添加 500 µl“转化溶液”或“溶液 3”到细胞中。这种材料很可能是聚乙二醇(“PEG”又名防冻剂),粘稠且粘稠,包含在转化方案中以帮助将 DNA 传递到酵母中。使用 P1000 将溶液与酵母一起上下移液,然后轻轻涡旋试管以形成均匀的悬浮液。
  12. 将管子与等量的 -TRP 板一起在 30°C 下孵育约 1 小时,盖子半开,以蒸发其表面上的水分。在这一小时内,您可以定期“轻弹”试管以混合内容物;这将有助于防止细胞沉降到底部。
  13. 至少一小时后,轻弹试管以混合内容物,然后将 250 μl 每种混合物涂在适当标记的 -TRP 板上。
  14. 将培养皿介质面朝上,在室温下或在 30°C 培养箱中培养两天。
  15. 返回收集数据后,确定每个培养皿上菌落的数量和颜色。

FIGURE

FIGURE

Read More

2024-05-15
多么丰富多彩的世界

第9章 多么丰富多彩的世界

FIGURE

多么丰富多彩的世界强调设计-构建-测试周期的“构建”阶段。您将在此 BioBuilder 实验室活动中构建的合成生命系统是用紫色颜料或绿色颜料着色的细胞,具体取决于您选择运行的遗传程序。然而,颜色的强度很难提前预测。细胞会是苍白的还是军绿色的?深紫色还是浅紫色?让事情变得更加复杂的是,我们认识到每个基因回路可能会产生不同数量的颜色,具体取决于运行它的细菌菌株。组合组件产生的这种意想不到的、古怪的结果的正式术语是紧急行为。

如果你倾向于像科学家一样思考,这种突发行为可能会让你问:“如何解释我观察到的结果?”如果您倾向于像工程师一样思考,这些行为可能会让您觉得“呃”,然后开始定义优化系统性能的最佳方法,希望避免此类意外行为。这两种方法都有优点,并且科学和工程方法共同应该在未来带来更可靠的设计,并最大限度地减少我们在构建新的生命系统时看到的令人惊讶的行为数量。

在这个实验室中,生成紫色或绿色色素的 DNA 程序已经为您编写和组装,但您将通过将编码程序的 DNA 插入到一些不同的细菌底盘中来完成最终的构建步骤。 DNA 程序来自 2009 年国际基因工程机器 (iGEM) 项目,名为“E. chromi”,剑桥大学的学生设计并改造了大肠杆菌来生产一系列颜料。 您将构建多个颜色生成系统,以探索底盘如何影响设计的遗传程序的输出。由于颜料是肉眼可见的,因此您可以轻松确定机箱之间的颜色输出是否不同。

不过,在详细介绍实验之前,我们将对底盘设计和决策进行一般性讨论,并且我们将逐步介绍 E. chromi 项目,为您的调查提供一些背景信息。

FIGURE

机箱简介

正如汽车制造商在设计发动机时必须考虑整个汽车一样,合成生物学家也必须考虑他们正在构建的整个系统,包括他们设计的基因程序将在其中执行的细胞环境。就像路上有各种各样的汽车一样,细胞的大小、形状、细胞器和基本代谢功能也有很大差异。因此,为任何工程遗传程序选择最好的宿主细胞或底盘是设计过程中的重要一步。许多参数都会影响底盘的选择,包括特定于某些应用的一些考虑因素。然而,普遍关注的是实用性和安全性,我们将在以下几节中对此进行探讨。

FIGURE

实用程序以及如何设计它

在为合成生物学应用选择底盘时,研究人员会考虑通用实用性和利基实用性。一般效用是指具有普遍帮助性的品质;例如,在实验室环境中的快速增长。此外,普遍有用的底盘应该相对容易使用,这解释了为什么科学家依赖的许多常见模型生物(大肠杆菌、酿酒酵母等)对合成生物学家来说都是有吸引力的底盘。这些细胞拥有强大的工具,可以以合理且相当可靠的方式设计和操纵它们。

另一方面,利基效用是指使单元适合特定应用的品质。利基效用的一个例子是 BioBuilder 的 Eau That Smell 基因程序的细菌宿主。如果您熟悉这个实验装置,您会记得该项目的合成生物学家希望让细菌散发出香蕉或冬青的宜人香气。为了实现这一目标,他们通过从细胞色氨酸生物合成途径中删除一个基因,消除了所使用的大肠杆菌宿主产生的自然臭味,从而产生了一个“无臭”底盘来运行其产生气味的基因程序。

有两种互补的方法可以为每个可以想象的目的找到合适的底盘。在第一种方法中,我们可以称之为“最近的野生型生物”方法(见图 9-1),底盘是根据其执行类似于合成生物学家想要完成的任务的能力从自然界中识别出来的。一个新的系统。野生型生物体具有其自然界中物种最典型的特征,在这种方法中,野生型细胞的自然功能得到改进,使现有细胞越来越接近新系统中所需的行为。为了说明这种最接近野生型生物的方法,请考虑劳伦斯伯克利国家实验室辛格研究小组的工作。该小组的目标是改造富养罗尔斯通氏菌(Ralstonia eutropica),以生产丁醇和烯烃等生物燃料,有朝一日可能会取代石油基化学燃料。富养罗氏菌自然地将二氧化碳转化为储能聚合物,因此这些工程师认为这是一个有吸引力的底盘,并正在实验性地修改其自然途径,以便细胞产生生物燃料,而不是它们通常制造的聚合物。

FIGURE

图 9-1 底盘选择的“最近野生型生物体”方法。野生型生物体1可以被改造为相对相似的工程化生物体1,其具有与亲本生物体相同的整体形状和多个鞭毛。类似地,野生型生物体 N 的形状与野生型生物体 1 略有不同,并且没有鞭毛,可以修改为工程生物体 N。对于新的野生型生物体中的每个实质性差异,都需要重复此过程。工程生物体所需的特性。

底盘设计的第二种方法从我们所说的“标准底盘”开始。在这种方法中,如图 9-2 所示,合成生物学家可能会选择更通用的底盘,该底盘要么具有最少数量的天然成分,要么易于理解且高度可工程化。简单的底盘本质上为合成生物学家提供了一块空白画布,并且至少在理论上可以成为具有完全不同的所需输出的各种工程系统的理想底盘。 Ginkgo Bioworks 的研究人员采用标准底盘方法,使用工程大肠杆菌来制造生物燃料。与我们之前考虑的例子不同,在该例子中,生物燃料生产是从天然聚合物工厂 R. eutropica 开始的,而大肠杆菌没有现有的人才可以推荐它们进行生物燃料生产。然而,大肠杆菌是该领域最接近标准细菌底盘的生物体。因此,Ginkgo Bioworks 的研究人员认为大肠杆菌是一个具有多种用途的有吸引力的平台,包括将二氧化碳和电能转化为异辛烷,异辛烷是一种非常适合美国现有运输燃料基础设施的液体燃料。

FIGURE

图 9-2 “标准机箱”方法。标准起始底盘简单且易于设计,因此合成生物学家可以将其用作工程有机体 1、工程有机体 N 以及介于两者之间的所有产品的先驱。

最近的野生型生物和标准底盘方法都有优点和缺点。例如,如果仅需要对现有生物体进行微小的改变即可获得所需的结果,则使用最接近的野生型生物体方法可能相对容易。然而,这种策略可能难以扩展,因为对于每个新的设计规范,设计人员都需要找到新的底盘。此外,使用现有生物体作为底盘可能会出乎意料地复杂,因为所有生物体都有自己的代谢途径和需求,其中任何一个都可能以令人惊讶的方式干扰所需的输出。

标准底盘方法避免了使用复杂生物体构建合成生命系统时出现的一些并发症。这种方法也比最接近的野生型生物方法更具可扩展性,因为它为设计者提供了一个通用的起点。借助通用的标准化机箱,设计人员可以将一种设计的工具重复用于另一种设计,至少在某种程度上是这样。天上掉馅饼的希望是“空白画布”细胞可以通过编程来生产药物、食品、组织或生物燃料,但目前这种希望相当牵强。目前,细胞还不能被抽象成一个不可知的画布来运行 DNA 程序。

然而,合成生物学家对计算机编程的成功感到鼓舞,因为这种跨平台工具确实存在。例如,Java等软件平台定义了“虚拟机”,使程序可以在任何操作系统上运行。 Java 虚拟机采用 Java 字节码,以便无论操作系统如何,它都以相同的方式工作。在这个类比中,Java 字节码类似于 DNA 序列,我们可以将 Java 虚拟机(加上操作系统)视为将该代码转换为操作的细胞机器。换句话说,我们可以将合成生物学的标准底盘视为生物学的Java虚拟机。

然而,想象每个合成生物学应用都有一个标准底盘还不现实,因此在最近的野生型和标准底盘方法之间达成了妥协。在这种妥协中,一个小的底盘菜单将作为合成生物学家的起点,他们可以为任何给定的应用领域从几种不同的细胞类型中进行选择。在这种情况下,可能存在一两个用于细菌应用的可靠标准底盘,以及另外一两个用于在哺乳动物细胞中运行的遗传程序的标准底盘。尽管该技术仍在开发中,但这种细胞底盘工程的混合方法也许更有可能为合成生物学家在短期内取得成功提供可用的工具。

FIGURE

安全性以及如何设计它

在选择用于运行工程 DNA 程序的机箱时,您必须始终考虑安全性。具体来说,研究人员必须考虑他们在使用合成生命系统时的个人安全、实验室环境的安全,以及如果他们的工程生物体进入更广阔的世界可能发生的任何伤害。

现有的指南和法规在很大程度上保护了研究人员及其工作所在实验室社区的人身安全。随着重组 DNA 技术的出现,这些法规于 20 世纪 70 年代开始实施。它们通常被认为是成功的,但当时引起了激烈的争论,这些争论为今天的合成生物学提供了许多相关的教训。有关指南及其发展的更详细说明,请参阅生物伦理学基础章节。

除了从基因工程领域继承的监管工作之外,合成生物学家还必须仔细考虑将合成生命系统安全地引入我们复杂的环境中。理想情况下,应该有一种通用方法来最大限度地减少和遏制可能逃逸或故意部署到实验室外环境中的生物体造成的任何潜在损害。由于它们携带额外的遗传负担,大多数合成生物体相对于其天然竞争者来说适应性下降,这已经降低了工程生物体在野外持续存在或造成重大损害的可能性。然而,依赖这种不平等似乎是不明智的,并且在合成生物学家规划他们的系统时正在设计额外的安全措施。

相反,合成生物学家正在尝试进行安全设计。 “设计安全”的一个根本例子是合成生物学研究,以设计与天然存在的 DNA 不同的解码方式的正交 DNA。由于DNA可以在生物体之间转移,而且这种转移相对常见,因此人们担心如果工程生物体从自然存在的生物体中获取DNA,反之亦然,可能会产生潜在的后果。然而,如果工程生物体表达的正交 DNA 无法在原始宿主之外正确解码,那么这些可能的危险就会最小化。任何使用改变的遗传密码的底盘都无法实现从外部环境获得的新的且具有潜在危险的遗传功能,并且如果将来自工程生物体的基因转移到自然存在的环境中,则无法实现它们有机体。

合成生物学家仍处于此类研究的早期阶段,但 2011 年《科学》杂志上发表的一篇论文显示了一些有希望的结果。由哈佛大学 George Church 博士实验室领导的研究小组通过用同义 TAA 终止密码子替换他们在 460 万个碱基对基因组中发现的所有 TAG 终止密码子,对大肠杆菌进行了“重新编码”,如图 9 所示-3。将这组看似“无声”的变化结合起来是一项技术杰作,促使团队开发出新的、非常有用的基因组操作工具,称为“MAGE”和“CAGE”。然而,与本次讨论更相关的是,与天然菌株相比,所得底盘具有两个安全优势。首先,新菌株中的所有编码序列仍然可以转录和翻译,但因为它们都没有使用 TAG 密码子,所以可以重新调整该密码子,将替代氨基酸添加到新的 DNA 程序中。 然后可以通过使其依赖于研究人员提供的一些非天然氨基酸(而不是自然提供的)来设计新生物体以确保安全。其次,TAG密码子不再在重新编码的大肠杆菌中充当终止密码子。因为Church研究小组还删除了在任何TAG处终止翻译的释放因素。因此,如果重新设计的细菌拾取任何使用 TAG 终止密码子的外部 DNA,所得的多肽链将失去功能,因为核糖体将继续读取超过终止密码子的内容。 必须做进一步的工作才能使工程 DNA 真正成为现实。与自然发生的遗传物质正交,但“安全设计”的早期成功是一个值得考虑的很好的模型,随着努力的推进。

FIGURE

图 9-3 一种生成正交 DNA 的方法。左侧天然存在的 DNA 序列编码四个氨基酸,由序列上方的蓝色和绿色球表示,以 TAG 终止密码子结尾。通过将 DNA 天然存在的 TAG 终止密码子(左)转换为 TAA 终止密码子(右),蛋白质产物不会发生变化,但表达该遗传密码的细胞可以通过将 TAG 密码子重新分配给非天然氨基酸来重新设计成正交基因组。

E. chromi iGEM 项目的背景

FIGURE

剑桥大学团队在 2009 年的 iGEM 项目中设计、指定并构建了一套生物传感器,团队将其称为 E. chromi。鉴于生活世界中存在各种各样的自然颜色(橙色胡萝卜、紫色花朵等),该团队决定使用颜色作为其系统的输出。它还决定为特定金属化合物制造传感器,包括砷、汞和其他重金属,这些金属在一些国家一直是污染问题。 这些环境污染物输入将触发肉眼可见的基于颜料的输出,以便轻松、立即部署。该设计是对之前使用 pH、电导和荧光等输出的 iGEM 生物传感器项目的改进,因此需要额外的步骤来检测输出信号。这些颜料还提供了视觉多样性,激励团队构建一种活的“量油尺”,可以用一个样本拭子以彩色方式报告多种污染物,如图 9-4 所示。

FIGURE

图 9-4 检测单个水样中多种污染物的量油尺。量油尺上会发现表达不同基因程序的细菌,这些基因程序能够感知污染物并产生颜色响应。当暴露在没有任何诱导剂的水中时(左),不会产生颜色。当暴露于含有两种污染物的混合物(中心)的水中时,会产生两种相应的颜色。如果水中含有四种污染物(右),就会产生四种颜色。

除了检测特定污染物的存在之外,研究小组认为估算每种污染物的浓度也很有用。 通过开发一系列控制系统灵敏度的“调谐器”设备,该团队可以生成每个颜色生成系统的变体,以便系统仅当污染物存在于特定浓度范围内时才会改变颜色。砷浓度低的水样只会触发低灵敏度调谐器,并将信号传递到该变体中的颜色生成装置。含有高浓度砷的水样将触发低、中、高灵敏度调谐器,并触发所有三种变体的颜色。通过最终的系统(图 9-5),该团队可以将其收集的变体暴露于水样中,并根据哪些变体产生颜色、哪些不产生颜色,确定存在哪些污染物以及浓度。

FIGURE

图 9-5 活体生物传感器的系统级设计。用于检测环境污染物并报告其浓度的电池的黑盒设计理念。

关于他们的设备

FIGURE

为了找到编码鲜艳颜色的 DNA 序列,iGEM 团队挖掘了文献,最终确定了三种能够产生独特色素的自然存在的细菌系统。这些系统如表 9-1 所示。

表 9-1 产生生动色彩的天然来源

FIGURE

由于该团队想要多种颜色,因此他们将所有这些来源作为潜在的设备,并发现其中一些更适合某些应用。例如,黑色素由单个基因编码,这使得通过已建立的基因调控方法相对容易控制输出,但该系统还需要在培养基中添加铜和酪氨酸,从而使菌株的生长条件变得复杂表达这种颜色。另外两个色素家族是通过多个基因产物的作用产生的,这使得它们的调节更加复杂,但产生这些色素的细胞更容易生长,因为颜色是在生长培养基中没有任何不寻常的化合物的情况下产生的。

为了部署系统的设备,iGEM 团队还必须考虑用于生产紫罗兰素和类胡萝卜素色素的不同机制。类胡萝卜素装置首先使用一种途径产生红色素,然后使用下游酶将红色素的一部分转化为橙色素。相比之下,紫罗兰素装置依靠分支代谢途径来产生绿色和紫色,如图 9-6 所示。

FIGURE

图 9-6 色素生成代谢途径。左侧显示类胡萝卜素途径,右侧显示紫罗兰素途径。菱形代表不同的细胞中间体,圆圈代表负责化学反应的酶。有色化合物以其近似颜色表示。

零件和设备

BioBuilder 多彩世界活动使用紫罗兰素系统的成分,根据相对较小的基因变化,可以产生绿色或紫色色素。通常,该色素生成系统的输入是氨基酸色氨酸,通过五种酶(VioA、VioB、VioC、VioD 和 VioE,但不是按此顺序!)的作用,产生一种称为紫罗兰素的紫色色素。然而,当 vioC 基因被去除时,该途径分支被阻断,最终无法转化为紫草素,因此系统的终点反而变成了原紫草酸,一种深绿色的色素。 您可以通过检查代谢途径来推断去除 vioC 基因的效果(图 9-6)。这种行为也可以使用逻辑门和真值表的工程形式来说明,如图 9-7 所示。

FIGURE

图 9-7 紫罗兰素相关系统的不同表示。逻辑门表示(左上)显示输入 X(VioA、B、D 和 E)和输入 Y (VioC) 必须如何存在才能生成紫色输出 Z。修改后的真值表(左下)显示输入 X单独可以创建绿色输出,而单独输入 Y 不会生成输出,输入 X 和输入 Y 生成紫色输出。右侧的遗传示意图显示,绿色生成装置(由 VioA、B、D 和 E 组成)上游的启动子产生绿色色素,紫色生成装置(由 VioA、B、D 和 E 组成)上游的启动子产生绿色色素。 B、C、D 和 E,产生紫色颜料。

额外阅读和资源

  • Changhao, B. 等人开发用于富养罗尔斯通氏菌的广泛宿主合成生物学工具箱及其在工程碳氢化合物生物燃料生产中的应用。微生物细胞工厂 2013;12:107。
  • Ginkgo Bioworks Foundry (http://ginkgobioworks.com/foundry/ )。
  • 拉乔伊,MJ。等人。基因组重新编码的生物体扩展了生物功能。科学2013;342(6156):357-60。
  • E. chromi 网站 (http://www.echromi.com/ )。

FIGURE

多么丰富多彩的世界实验室

在本实验室中,将使用细菌转化技术将一些质粒 DNA 引入两种细胞类型。通过比较两种不同大肠杆菌菌株中相同基因程序的功能,探索了底盘的工程概念。无菌技术和固态微生物培养是本实验室强调的生物技术技能。

设计选择

在我们对 E. chromi 项目的讨论中,我们看到 iGEM 团队对系统的性能做出了一些假设。特别是,团队成员推测,当暴露于给定浓度的金属污染物时,颜色生成设备将可预测地生成可见的调色板。然而,研究小组意识到,每种色素生成装置都有其特殊性。例如,黑色素需要补充介质。为了解决这些特性,它对多种细菌菌株进行了实验,旨在找到运行每台设备的“最佳”菌株。

在本实验中,您将了解 iGEM 团队项目的这方面内容。 您将比较两个不同机箱中的两个颜色生成设备,以研究是否可以获得可靠的颜色输出。

实验问题

您将在两种常见的实验室大肠杆菌菌株(K12 菌株和 B 菌株)中测试紫色和绿色颜色生成装置。这两种菌株通常用于研究细菌细胞的行为和执行分子生物学技术。它们在实验室环境中存在了很长时间,以至于它们的许多基因发生了突变,这些突变不再是它们在狭窄的条件下生存所必需的。结果,它们几乎失去了在实验室环境之外茁壮成长的能力。鉴于对这些细胞的描述,它们似乎为细菌合成生物学的标准底盘提供了开端,至少在安全方面是这样。在本实验室中,您将通过测试它们是否产生可靠、可重复的行为来调查它们是否也接近实现标准机箱的“实用”要求。

要进行此实验,您需要将携带紫色和绿色颜色生成装置的基因程序转换到每种细菌菌株中(图 9-8)。这个过程涉及的步骤包括修补菌株以培养您需要的细胞,然后用盐溶液处理细胞,以便它们能够吸收 DNA。您将感受态大肠杆菌菌株与编码颜色生成装置的 DNA 混合,然后将细胞暴露在高温下一小段时间。这种热休克有助于细胞从环境中吸收 DNA。在最后的实验步骤中,您将在转化混合物中添加一些新鲜培养基以帮助细胞恢复,然后将转化的细胞铺板到装有琼脂固化培养基的培养皿上,其中还含有抗生素氨苄青霉素。编码颜色生成装置的 DNA 也编码氨苄青霉素抗性基因,因此唯一可以在平板上生长的细胞是那些具有颜色生成装置的细胞。

FIGURE

图 9-8 不同机箱中的颜色生成设备。您将把相同的设备插入不同的机箱(左与右)并研究它们的行为。

作为阴性对照,您将在转化过程中加入不含质粒的样品。该阴性对照预计不会在含有氨苄青霉素的平板上生长,因为它不包含氨苄青霉素抗性基因。如果观察到生长,您就知道您的程序或材料存在某些问题,无法仅选择已成功用质粒转化的细胞。一个潜在的原因可能是平板中的氨苄青霉素随着时间的推移而降解。包含对照对于良好的实验设计至关重要,因为它使您可以隔离变量,并可以为以后尝试解决实验中遇到的问题提供信息。

您收集的数据将基于对板的目视检查——您的眼睛是您需要的唯一精美的检测设备。经过一晚的生长,每个在转化和抗生素暴露中幸存下来的细胞都有时间生长成肉眼可见的细胞集落。您将对菌落进行计数以确定转化效率,并且您将记录不同板上菌落的颜色、形状和大小,以确定选择作为底盘的菌株是否会影响系统的输出。

入门

表 9-2 详细介绍了“多彩世界”实验中比较的两种质粒。

表 9-2 多么丰富多彩的世界质粒和菌株描述

质粒   注册质粒#   质粒描述
pPRL   BBa_K274002   pUC18 质粒骨架,AmpR
pGRN   BBa_K274004   pSB1A2 质粒骨架,AmpR

4-1: NEB 大肠杆菌 K12 ER2738:F’proA+B+ lacIq Δ(lacZ)M15 zzf::Tn10(TetR)/ fhuA2 glnV Δ(lac-proAB) thi-1 Δ(hsdS-mcrB )5

4-2: NEB 大肠杆菌 BL21 C2523:fhuA2 [lon] ompT gal sulA11 R(mcr-73::miniTn10– TetS)2 [dcm] R(zgb-210::Tn10–TetS) endA1 Δ(mcrC-mrr)114::IS10

该实验室需要两种大肠杆菌菌株:4-1(K-12 型)和 4-2(B 型)。为了获得足够数量的细菌来进行转化,您需要将这些菌落重新接种为补片。每个贴片将为一个实验室小组提供足够的细菌,一个平板上最多可容纳六个贴片。

  1. 使用无菌接种环或牙签,将细菌菌落从其中一个培养皿转移到新的 Luria Broth (LB) 琼脂(非 LB+amp)培养皿中,为每种菌株绘制 1 cm x 1 cm 的正方形。以这种方式绘制的每个正方形都会产生足够的细胞来用两个质粒进行转化。
  2. 对转化实验室所需的每种菌株重复上述步骤。
  3. 将培养皿置于 37°C 培养箱中过夜。

实验室协议

  1. 将两个小微量离心管标记为“4-1”和“4-2”。
  2. 将 200 μl CaCl_2 转化溶液移入每个管中,然后将管置于冰上。
  3. 使用无菌木钉或接种环刮起一整块标有“4-1”的细胞(不包括它们生长的琼脂!),然后将细胞旋入装有冷 CaCl_2 的管中少量琼脂可能会被转移,而不会影响您的实验。如果您有涡旋,您可以通过涡旋一分钟来使细胞重新悬浮。如果没有涡流,轻轻弹动并翻转管子。
  4. 重复,使用不同的无菌木钉刮掉标记为“4-2”的细胞块。如果可能的话,短暂涡旋。一些细胞团保留在该溶液中是可以的。
  5. 在准备用于转化的 DNA 时,将这些感受态细胞置于冰上。
  6. 在每个质粒的微量离心管中取出两等份,总共四个样品(2x 紫色生成装置质粒,pPRL,2x 绿色生成装置质粒,pGRN)。每个等份含有 5 ul DNA。 DNA 的浓度为 0.04 μg/μl。当您在实验结束时计算转化效率时,您将需要这些值。
  7. 将其中一支 pPRL 管标记为“4-1”。将另一个 pPRL 管标记为“4-2”。确保标签可读。将管子放入冰桶中。
  8. 将其中一支 pGRN 管标记为“4-1”。将另一个 pGRN 管标记为“4-2”。确保标签可读。将管子放入冰桶中。
  9. 用感受态 4-1 菌株轻弹试管,然后将 100 μl 细菌移入标有“pPRL, 4-1”的试管中,再将 100 µl 细菌移入标有“pGRN, 4-1”的试管中。轻弹以混合管子并将其放回冰中。将剩余的少量 4-1 菌株保存在冰上。
  10. 用感受态 4-2 菌株轻弹试管,然后将 100 μl 移液至标有“pPRL, 4-2”的试管中,再将 100 μl 移入标有“pGRN, 4-2”的试管中。轻弹混合并将它们以及剩余体积的感受态细胞储存在冰上。
  11. 将 DNA 和细胞置于冰上 5 分钟。
  12. 当您的 DNA 和细胞孵化时,您可以标记您需要的六个培养皿的底部(介质侧)。标签应标明您使用的菌株(“4-1”或“4-2”)以及转化它们所用的 DNA(“pPRL”、“pGRN”或“无 DNA 对照”)。
  13. 将试管置于 42° 温度下精确热激 90 秒(使用计时器)。
  14. 90 秒结束时,将管子移至室温下的架子上。
  15. 将 0.5 ml 室温 LB 添加至试管中。盖上盖子,翻转试管以混合内容物。
  16. 使用无菌涂布器或无菌珠子,将 200–250 μl 转化混合物涂布到 LB+氨苄青霉素琼脂培养皿的表面。
  17. 盖上盘子并放置一分钟。然后,将盘子翻过来。培养皿将倒置存放,以防止冷凝水滴到细菌上。
  18. 将培养皿琼脂面朝上,在 37°C 下孵育过夜。

FIGURE

FIGURE

Read More

2024-05-15
想象一下这个

第8章 想象一下这个

FIGURE

BioBuilder 的图片 该活动强调设计-构建-测试周期的“设计”阶段。图片 这使用了 2004 年国际基因工程机器 (iGEM) 团队开发的系统,该系统改变了大肠杆菌对光的敏感性,使该菌株可用于“细菌摄影”。研究小组将这些细胞改造为既能感光又能产生颜色,并将这些遗传功能相互连接起来(图 8-1)。由这些细胞组成的草坪能够通过充当照相像素来复制打印在掩模上的图像,从而在黑暗中“打开”细胞的颜色生成遗传电路,在光线中“关闭”细胞。

iGEM 团队经过大量的试验和错误以及良好的运气,才成功设计和构建了产生这种摄影行为的复杂遗传电路。未来,当合成生物学家设计出更加复杂的生命系统时,他们将需要依赖其他工程学科可以使用的关键工具:数学和物理建模。当可靠的建模工具可用时,合成生物学家将能够在开始使用实际细胞和 DNA 之前进行计算模拟和实验来测试他们的系统。他们不会通过构建生命系统来启动项目,而是从模型中收集信息来预测细胞的一些行为,这将帮助这些合成生物学家做出设计选择。这些模型可能无法完全代表真实系统的行为方式(毕竟它们只是模型),但它们应该提供一个强大的起点和一个出色的工具来提出以其他方式探索很难或耗时的问题。计算机程序员和数学建模者开发这些模拟工具在合成生物学领域占有重要地位。

FIGURE

图 8-1 细菌摄影系统级设计。细菌摄影系统以光作为输入并产生彩色像素作为输出。

在BioBuilder的图片这个活动中,你可以为细菌摄影系统建立两种模型:计算模型和电子模型。 在实践中,工程师会在构建实际系统之前构建模型,但在这里,我们以相反的顺序工作。通过这种方式,我们可以首先揭示构建模型的一般效用。 正如您将看到的,这两种模型都有优点和缺点,但每种模型都可以提供对遗传系统行为的宝贵见解。在本章中,我们首先考虑不同类型的模型,包括它们的优点和缺点。然后我们更详细地了解 iGEM 团队的细菌摄影系统。

建模简介

建筑师可能需要数月甚至数年的精心规划才能设计一座摩天大楼,使其具有正确的形式和结构健全。在此期间,建筑师的设计过程将包括各种建模方法,其中一些方法有助于可视化建筑物完工后的外观,另一些方法则用于预测建筑物的行为方式。这些模型是一项投资,如果在摩天大楼本身之前建造,可以节省时间和金钱。

您应该使用哪种模型? 根据项目的性质,建筑师可能会绘制二维蓝图,使用轻木构建三维微型模型,或者运行计算机模拟(图 8-3 )来测试结构如何应对地震。这些模型中的每一个都有不同的优点。例如,轻木模型可以帮助设计师评估建筑物的美观性,计算机模型可以确认建筑物不会在自然灾害中倒塌。通过使用各种建模技术,可以快速考虑不同的设计选项,直到找到满足建筑师规范和需求的设计选项。这样,建模可以帮助在构建阶段开始之前推动设计过程(图 8-2)。

FIGURE

图 8-2 说明了建模在设计-构建-测试周期中的作用。建模(此处象征性地描绘为左上角的小齿轮)可以帮助推动设计过程。

FIGURE

图 8-3 某些类型的模型。模型可以采用多种不同的形式。使用我们的架构示例,一些有用的模型包括蓝图(左)、三维物理模型(中)和计算模型(右)。

当然,没有任何模型,甚至模型集合,可以完全捕捉最终设计的所有方面。每个使用建模技术的人,无论是建筑师还是合成生物学家,都必须在每个模型的限制范围内工作。在大多数情况下,人们使用不同建模技术的组合来形成关于系统可能如何运行的相对完整的想法。但是,使用更多模型并不会自动生成更好的数据,因为并非所有模型都是好模型。使用不适当的计算模型或构建歪曲系统的物理模型可能会将工作引向错误的方向。了解模型是如何构建的以正确解释其提供的结果至关重要。

计算建模

计算建模(图 8-4)是指使用计算机来模拟特定设计的行为。 为了构建合成生物学的计算模型,工程师输入有关其生物系统各个组件的信息,包括方程当所有组件都放在一个单元中时,计算机可以使用这些算法来计算系统的预期行为。这些方程可能非常接近生物系统的实际行为,但不太可能完美地再现它。例如,许多描述反应速度和程度的方程最初是由在试管中单独研究单个酶的科学家推导出来的,这比细胞的复杂环境要简单得多。在细胞中,多种酶可以竞争相同的反应物,或者一种酶的产物可能抑制另一种酶的活性。事实上,我们还没有完全理解为什么我们的方程不能完全捕捉细胞行为,但我们可以对分子行为做出某些假设来近似不同的条件。例如,该模型可能会简化反应速率,使它们都是恒定的;因此,该模型适用于某些情况,但并非所有情况。

FIGURE

图 8-4 细胞过程的计算建模。可以收集每个相关反应的数据(左)并通过计算机(中)进行整合,以构建细胞行为的工作模型并预测不同化合物的浓度将如何随时间变化(右)。如果模型的输出与设计规范不匹配,则可以适当调整模型或收集更多数据,并且可以根据需要多次重新运行仿真。这样,计算建模是“测试”设计的快速方法。

尽管有其局限性,计算模型还是有用的,因为它们可以快速、精确地求解集成多个过程的方程。该模型的输出可能无法完美地反映自然,但即使模型的缺陷也可以教会我们一些关于我们正在使用的系统的新知识。通过构建计算模型,我们实际上是在测试我们理解的极限,并且可能会发现系统的重要新方面,需要将这些方面纳入模型中以反映可观察到的内容。

计算模型的另一个好处是它们可以模拟复杂系统在暴露于各种条件下时的行为。使用一组起始条件,计算模型可以计算系统状态将如何随时间变化。回到建筑示例,可以使用模拟来确定建筑物如何应对强风。模型的输入可能包括钢材强度、其对温度变化的响应以及该地区的预期风速等因素。建筑师可以对不同的摩天大楼高度、风速(如图 8-5 所示)或建筑材料进行模拟。一个好的计算模型将充分预测不同设计选项的行为,并帮助建筑师确定设计的物理限制。

FIGURE

图 8-5 模拟风对建筑物周围压力的影响。计算模型可以预测在盛行风况(左)和相反风况(右)下压力将如何变化,红色表示高风压,蓝色表示低压。

模型从两个基本来源获取信息:其内置知识库和用户输入的新信息。例如,建筑师的建模软件可能包含有关各种材料如何响应不同温度或风速的信息。这种公共信息已经内置到模型中。使用模型的建筑师可以指定要使用的钢材类型,然后运行模拟(有时称为建模实验),看看它是否足够坚固。如果结果表明钢材不足,则可以轻松运行另一个模拟,输入不同类型钢材的信息。这种方法被称为计算机辅助设计 (CAD),显然比建造一整座摩天大楼、发现其强度不足以抵御风并被迫重建更高效、更安全。

合成生物学项目也受益于计算建模。研究人员对各种细胞系统进行了建模,根据模型的复杂程度、优缺点,取得了不同程度的成功。正如建筑师的模型包含特定材料如何响应风的内置信息一样,生物系统的计算模型包含有关蛋白质和其他生物分子动态行为的信息。每个组件的信息越具体和准确。系统越好,得到的模型就越好。这就是合成生物学家测量各个部件的行为并开发通过标准化数据表相互共享信息的方法的原因之一,如 iTune 设备一章中所述。由于各个部分可以通过实验得到更好的表征,因此可以将所得信息包含在模型中,以提高其准确性和生物相关性。

建立模型并运行一次(或两次或三次)模拟后,就可以从计算机回到实验室工作台了。 我们可以将“湿实验室”实验的结果与计算模拟的结果进行比较,然后,理想情况下,结果用于进一步完善计算模型。通过计算和实验室工作的组合和迭代方法,尽管各自存在固有的限制和假设,但它们都得到了改进。

物理建模

物理建模是计算建模的补充。例如,建筑师可能会创建一个微型物理结构,以帮助可视化超出计算机模拟所能揭示的建筑项目。对于微观的细胞来说,尚不清楚物理模型可能揭示什么。因此,合成生物学家通常不会建立结构模型来说明他们的生命系统实际上是什么样子。然而,通过生命系统的信息流的物理模型可能是一个好处。

我们可以使用电子元件来实现这一目标,因为它们提供了有形且易于理解的物理模型,可以说明和探索遗传电路的设计和功能。合成生物学家已经将机械和电气工程成熟领域的术语和逻辑原理应用到生命系统的设计过程中,这在生物设计基础章节中进行了探讨。电气元件还为遗传系统的物理建模提供了有用的工具。

生物系统的电气模型有很多好处,其中最引人注目的是电气工程师创建系统原型的速度。工程师可以快速构建和测试电气系统,只需正确连接电线、电阻器和其他电子元件即可。相比之下,建立一个生物系统非常耗时,而且其结果也不太确定。此外,当它不起作用时,故障排除过程可能会非常缓慢。在生物学中,细胞不会给出任何错误消息(除了生长失败!),也没有方便的电压表或其他测量设备来评估系统内各个模块的正常功能。最后,生物模块本身在很大程度上并不是由随处可用且每次都能工作的标准化现成部件制成。因此,不受任何这些并发症影响的电子设备可以提供遗传电路和生物系统的良好有形表示,用于测试和故障排除。这种类型的物理模型可以帮助设计人员更深入地了解他们正在构建的系统,并可能识别其他表示中不明显的问题。

当然,电子模型在某些方面无法充分代表系统的电路。图 8-6 说明了一个限制是电子器件的数字行为——组件要么“开”,要么“关”。 另一方面,生物成分往往以模拟方式表现,具有完全“开启”和完全“关闭”之间的一系列行为。

FIGURE

图 8-6 数字信号与模拟信号。数字信号显示出明显的开/关行为(红色虚线)。低输入不产生任何输出。当输入超过某个阈值时,输出跳至其最大值。另一方面,模拟信号在关闭和打开之间显示出更加渐进的过渡(蓝色实线)。因此,低于数字阈值的输入仍然可以生成一些输出,而高于数字阈值的输入可以生成小于最大值的输出,即使数字和模拟组件的完全“关闭”和完全“打开”值也是相同的。

数字和模拟行为都需要。例如,数字电子行为就像打开或关闭灯泡的电灯开关,而模拟行为就像允许中间亮度的调光开关。鉴于数字电路不易受到输入信号(“噪声”)轻微波动的影响,合成生物学家花费了大量的时间和精力来表征和设计生物系统,使其尽可能“数字化”。 不过,大多数自然系统都是模拟系统,随着输入信号的微小变化,输出会逐渐增加。合成生物学家使用一些巧妙的技术在细胞中实现更多的数字行为,例如构建多层模拟调节并对信号进行分层,以使输出看起来要么打开要么关闭。使用电子元件进行生物电路建模的第二个限制是电子面包板允许电线、电阻器和其他元件的物理分离。然而,在细胞内部,各种成分不断混合,因此单个事件很难隔离和建模。尽管存在缺陷,良好的电子模型可以提供对系统设计和工程细胞行为的深入了解,正如 BioBuilder 的图片此活动所示。

来自“Coliroid”iGEM 项目的灵感

FIGURE

该团队的设计目标乍一看似乎很学术,但实际上识别明暗边界的能力揭示了图像的轮廓。该团队设想的成功的一些积极成果包括改善基因表达的光控制、化学产品的精细空间控制、信号转导途径的合理设计以及有用的细胞间通讯电路。图像处理器(包括面部识别软件等系统)可以通过仅检测边缘来快速处理复杂图像,边缘由可捕获的数据的可管理子集来描述。这一挑战对于一个夏天来说是一项雄心勃勃的挑战,事实上,完整的边缘检测系统又花了几年的研究和开发才能完成。在 2004 年的 iGEM 项目中,由德克萨斯大学奥斯汀分校和加州大学旧金山分校的成员组成的团队构建了一种光检测和颜色生成的大肠杆菌菌株,可用于“然而,该团队在细菌摄影系统方面取得了巨大的进步,即使作为实现更大目标的中间站,其工程生命系统也是我们可以继续探索并从中学习的系统。处理整个图像中的数据会降低软件的速度,因为数据集非常大。细菌摄影。”通过将这种系统构建到细菌草坪中,iGEM 团队并不打算取代人脸识别软件或人工智能程序中的电子边缘检测器。该团队的最初目标是构建边缘检测器的实时版本,这是一种检测对比度的数学图像处理方法。相反,它认为设计这个生命系统是一项艰巨的挑战,如果解决了,可能会推动合成生物学领域的多项基础性工作。

设备级设计

FIGURE

为了构建其系统,该团队决定使用两个设备:一个光检测设备和一个颜色生成设备,如图 8-7 所示。光检测设备旨在检测光的存在或不存在,然后将适当的信号发送到第二个设备。信号的确切性质尚未定义,至少在最初是这样。将系统抽象为两个设备,使团队能够根据出现的系统详细信息以及可用的部件来完善项目。例如,该团队希望在大肠杆菌中构建系统,因为大肠杆菌没有天然存在的光检测装置,因此需要从另一种生物体中识别候选光敏蛋白以用于设计。光检测设备和颜色生成设备之间的通信将取决于该光传感器的身份及其可以生成的信号。同样,颜色生成装置旨在提供可见输出,但最初并未定义具体的颜色或化合物。通过在设备级别进行抽象工作,团队不必遵守其系统的任何特定规范,并且可以考虑多种变体来开始工作。通过在这个抽象级别上工作,可以依次考虑关键决策,而不是立即规划从最具体的 DNA 序列细节到最一般的系统功能的所有方面。

FIGURE

图 8-7 细菌摄影设备级设计。细菌摄影系统将光作为其光探测器的输入。然后,第一设备的输出确定颜色生成器是否处于活动状态并产生其颜色输出。连接两个设备的线路并不意味着 DNA 的物理连接;相反,它显示从一个设备到另一设备的信息流。

零件级设计

FIGURE

当需要根据遗传部分来指定系统的颜色生成装置时,团队决定使用一种经过充分表征的酶,β-半乳糖苷酶 (β-gal)。该酶是 lacZ 基因的产物,通常是 lac 操纵子的几个基因之一。该酶将二糖(乳糖)转化为细胞更容易代谢的两种单糖。该酶还对天然底物以外的多种底物起作用。许多非天然底物的化学结构与乳糖相似,但当酶裂解它们时,它们会产生有色产物。例如,当 β-gal 裂解 X-gal 时,一种产物呈蓝色。当 β-gal 裂解 ONPG(如 BioBuilder iTune 设备活动中所用)时,一种产物呈黄色。在进行细菌摄影系统的部件级设计时,团队选择使用 β-gal 作为颜色生成装置,因为该酶在裂解其底物 S-gal 时可以产生黑色。 β-gal 裂解 S-gal 形成稳定的不溶性沉淀物,沉积到介质中,类似于显影过程中沉积到相纸上的银粒。

合成生物学视觉记者

为了设计细菌摄影系统,iGEM 团队需要肉眼可见的输出,因此选择了 β-gal。原则上,该团队可以从许多替代的颜色生成装置中进行选择,例如荧光蛋白。 β-gal 是一个方便的选择,因为它是一种特性良好且用途广泛的酶,您可能已经从它在 BioBuilder 活动中的重复使用中猜到了。有趣的是,BioBuilder 的 iTune 设备活动也使用 β-gal,但在这种情况下,该酶用于报告基因设计的功效,因此并不严格要求可见的输出。视觉产品,或者更通用的名称,提供了易于检测的输出。它们也很容易相互交换。在大多数情况下,一个报告器可以替换任何其他报告器,根据应用情况进行交换。例如,如果您正在为色盲或视力受损的人设计一个系统,那么基于气味的报告器(例如使用 BioBuilder 的 Eau That Smell 活动的报告器)可能更合适。

对于其细菌摄影系统,团队需要找到一种方法将信号(在本例中为光)的存在或不存在与 β-gal 活性联系起来。对于这种联系,该团队做出了明智的设计选择,并利用了细菌通常用来感知环境信号的共同途径。细菌的信号传感通路统称为两部分信号通路。通常,这些途径的一个组件是环境因素的传感器,另一个组件是响应器。在许多情况下,应答者调节基因或基因家族的转录。在构建细菌摄影系统时,iGEM 团队修改了由名为 EnvZ 的传感器和名为 OmpR 的响应器组成的信号系统(图 8-8)。

FIGURE

图 8-8 打开黑盒设备的包装。为了检测大肠杆菌中的光,iGEM 团队将来自蓝藻的光敏蛋白 Cph1 的一部分与大肠杆菌蛋白的一部分进行基因融合,创造出一种新的蛋白 Cph8(粉色圆圈),它可以磷酸化 OmpR(橙色圆圈)。 Cph8/OmpR 组合可以感应光作为输入,然后生成 PomplacZ 颜色生成设备可以理解的输出信号。

EnvZ 通常通过添加磷酸盐将有关细胞外盐浓度的信息传递给 OmpR。然后,磷酸化的 OmpR 可以结合特定启动子序列上游的 DNA,并增加该启动子下游基因的转录。在自然界中,受磷酸化 OmpR 调节的基因编码膜孔,允许或多或少的盐从环境中进入细胞。 在设计细菌照相系统时,iGEM 团队对 DNA 进行了改造,使磷酸化的 OmpR 能够调节 β-gal 的表达。研究小组只是将 OmpR 调节的启动子置于 lacZ 基因的上游,这样 OmpR 就会像调节膜孔的基因一样调节 lacZ(图 8-9)。

现在您可能会想,“等一下……这种排列不是会响应细胞环境中盐分的变化而产生颜色吗?”目标是感知光。 大肠杆菌中没有天然的光敏蛋白,所以在这里,iGEM团队再次巧妙地利用了一些天然遗传元素。蓝藻是一种对光有反应的微生物,iGEM团队决定修改来自蓝细菌的光传感蛋白,用于报告其大肠杆菌系统中的光输入。该团队进行了基因融合,从光敏蛋白 Cph1 的基因开始,到大肠杆菌 EnvZ 与 OmpR 通讯的部分结束。知道蛋白质将它们所做的工作划分为离散的模块域后,iGEM 团队相信这种融合蛋白能够发挥作用,并且能够像希望的那样感知光并与 OmpR 进行通信。

FIGURE

图 8-9 制作颜色生成装置。 lac 操纵子(顶部)被截短(左下)并用 OmpR 敏感启动子(橙色箭头)进行修饰,以生成对 OmpR 蛋白敏感的颜色生成装置。

为了构建其系统,该团队依靠遗传学和分子生物学(以及大量的努力工作和一定程度的好运),并找到了一种可以完成设计所需的所有功能的变体。该团队将这种融合蛋白命名为 Cph8(图 8-10)。与 Cph1 蛋白一样,Cph8 对特定波长的红光敏感。 然而,为了使其发挥作用,团队需要一些来自蓝细菌的“辅助”发色团,因此系统再次进行了修改。在这个新版本中,研究小组表达了蓝藻基因 ho1 和 pcyA,它们合成了 Cph8 所需的辅助因子。

FIGURE

图 8-10 光敏 Cph8 融合蛋白。来自蓝藻的光敏蛋白 Cph1 与磷酸化 OmpR 的大肠杆菌蛋白 EnvZ 部分融合,产生一种新蛋白 Cph8,它以光作为输入并输出 Pomp 可以理解的信号。 -lacZ颜色发生装置。

当这些最终修饰到位时,当细胞在黑暗中生长时,所得系统可以表达β-gal。红光源抑制 OmpR 的磷酸化,导致 LacZ 的转录减少,从而导致 β-gal 酶的转录减少。通过在打印在透明胶片上并用胶带粘在培养皿上的图像后面生长细胞,可以遮蔽细菌菌苔的区域。在掩模的黑暗部分后面生长的细胞可以使它们周围的介质变黑(图8-11)。暴露在红光下的细胞使介质保持自然颜色,使得掩模上的图像在 24 小时的生长期后能够在介质本身中再现。

FIGURE

图 8-11 通过细菌摄影系统的信息流。光探测器由 Cph8 融合蛋白(粉色圆圈)和细胞的 OmpR 天然副本(橙色圆圈)组成,Cph8 会激活 OmpR。在上图中,激活的 OmpR 然后可以与颜色生成器设备中的 Pomp 运算符(橙色弯曲箭头)结合,从而产生 lacZ 表达(蓝色飞镖)。在下图中,当光线照射到系统上时,OmpR 与 Pomp 的这种相互作用被阻止(平头箭头)。

额外阅读和资源

  • Deepak, C.、Bergmann, F.T.、Suaro, H.M. TinkerCell:用于合成生物学的模块化 CAD 工具。生物工程杂志。 2009;3:19。网站:http://www.tinkercell.com/.
  • Levskaya,A. 等人。合成生物学:改造大肠杆菌以见光。自然 2005;438(7067):441-2。
  • Stock, A.M.、Robinson, V.L.、Goudreau, P.N.二元信号转导。生物化学年度评论 2000;69:183-215。
  • 网站:Mouser Electronics 网站上的 BioBuilder“项目”页面,您可以在其中购买每个电子部件。 (http://bit.ly/biobuilder_mouser )。

描绘这个实验室

BioBuilder 的图片 该实验室通过分析改进的双组分传感系统,介绍了复杂的生物学概念,例如信号转导和细胞动力学。它强调通过对工程细胞进行计算机模拟并通过构建类似于细胞遗传电路的电子电路来进行抽象和建模的工程概念。

设计选择

在这里,我们使用两种方法来理解细菌摄影系统:使用名为 TinkerCell 的程序进行计算建模,以及使用标准电气组件进行物理建模。与其他 BioBuilder 活动相比,该实验室专注于开发实验问题,而不是直接提出问题。这两种互补的建模方法提供了对生命系统行为不同方面的洞察,并说明了我们当前生物学建模工作的优势和缺点。

尽管该活动目前没有“湿实验室”部分,但支持机构可以使用您选择的图像来制作由工程菌株制成的细菌照片。请务必检查 BioBuilder 网站以获取此活动的更新并查找提交指南。下节简要描述了细菌照片显影的方案。

FIGURE

细菌照片

为了准备细菌照片,工程菌株在适当的抗生素存在下生长,这些抗生素选择用于光检测装置、颜色生成装置以及使光传感器 (Cph8) 在大肠杆菌中发挥作用的辅助组件。大肠杆菌。然后,您可以将过夜培养物与熔化的琼脂、抗生素和指示剂化合物 S-gal 混合,并将其倒入培养皿中,将细菌包埋在培养介质中。您可以将带有黑白图像的透明胶片粘贴到培养皿背面,然后在红光下孵育过夜,为细菌在黑暗中生长提供时间以产生 β-gal 酶。由于这种介质的 S-gal 成分非常昂贵(约 600 美元/克),并且曝光这些照片的光波长不是标准的,因此 BioBuilder 教室冲洗照片的最常见方式是发送透明胶片或 .jpg 文件的图像的要开发。

当细胞在明显的光亮或黑暗中生长时,就会产生最引人注目的细菌照片。如果图像的黑白部分高度混合(例如,图像具有非常细的线条),则光线会在边缘周围反射并使生成的照片模糊。一般来说,最好是深色背景和浅色图像,而不是相反。为了使图像的深色部分变暗,通常在两张透明胶片上打印相同的图像,然后将两份副本重叠,使用它们来遮盖培养皿。培养皿的直径小于 3 英寸,因此选择的图像必须小于此直径或进行调整以适合。

TinkerCell 建模

您可以从 TinkerCell 主页下载 TinkerCell。您可以在 TinkerCell 平台中找到构建细菌摄影系统的详细说明以及 BioBuilder 网站上建议的模拟。

TinkerCell 活动分为两个阶段:细菌摄影电路的重绘和其行为的模拟。作为重绘阶段的第一步,您可以从可用部件菜单中选择设备的 DNA 电路组件并将其拖放到建模画布上。在TinkerCell中,这些部分按照其功能进行分类;例如,“激活剂结合位点”、“RBS”、“启动子”、“编码”、“转录因子”或“受体”。以下是细菌摄影系统建模所需的组件列表:

  • 颜色发生器装置的组件:
    • 激活剂结合位点
    • ompC 启动子
    • 核糖体结合位点 (RBS)
    • 编码区域
    • β-半乳糖苷酶
  • 光检测装置的组件:
    • Cph8 光受体
    • OmpR转录因子
  • 三个“小分子”:
    • S-gal
    • 颜色
  • 1个蜂窝底盘

该模型强调了我们最感兴趣的系统方面,即 β-gal 酶的转录控制。这就是为什么系统的某些元件(例如 OmpR)被作为预先存在的蛋白质而不是转录基因表达盒放入模型中。当然,我们作为蛋白质放入的元素存在转录控制和翻译控制,但这里的模型假设这些步骤可以简化,并且暂时可以忽略对它们的控制。这种简化是抽象的另一个例子,抽象是一种在生物设计基础章节中广泛讨论的工程工具。我们在这里使用抽象来保持计算负载的可控性。

选择进入模型的组件后,下一步是显式定义它们的关系。以下是细菌摄影系统建模组件之间的关系列表:

  • Cph8 可以激活或抑制 OmpR 的磷酸化(请注意,根据您的选择,您需要调整光是激活还是抑制 Cph8)。
  • 磷酸化的 OmpR 可以与报告基因的激活剂结合位点结合。
  • 报告基因可以产生β-gal酶。
  • β-gal可以将“S-gal”小分子作为输入,并可以产生“彩色”小分子作为输出。

最后,将底盘添加到画布上。你必须排列现有的组件,使“轻”的小分子位于细胞外,Cph8 蛋白位于细胞膜中,而其他所有成分都位于细胞内(图 8-12)。

TinkerCell 活动的下一阶段是运行系统行为的模拟。由于系统被设计为对光敏感,因此模型的输出将保持不变,除非光输入量发生变化。如果灯光在整个模拟过程中保持打开或关闭状态不变,则模型的输出不会改变。您可以使用 TinkerCell 菜单选项中的阶跃函数指定光输入何时以及如何变化,然后您可以运行模拟以查看系统如何响应不同的光照水平。

FIGURE

图 8-12 TinkerCell 建模界面的屏幕截图。细菌摄影系统的计算模型包含模拟系统在各种条件下的行为所需的所有遗传和生物组件。

TinkerCell 提供称为起始条件的默认值,用于确定模型组件的起始浓度和反应效率。酶效率给出了一个值,RBS 的强度、启动子、激活、抑制以及天然存在的 OmpR 和 S-gal 的量也给出了一个值。运行模拟时,您可以使用默认值,也可以更改它们以查看模型如何预测细胞的响应。例如,如果磷酸化的 OmpR 蛋白多 10 倍怎么办?如果结合 DNA 的磷酸化 OmpR 的量受到限制,则增加会导致更多的 lacZ 转录,从而产生更多的 β-gal 酶。如果酶对 S-gal 产生颜色的催化作用有限,这种变化反过来会增加在有限时间内形成的颜色量。

因此,即使 TinkerCell 对模型的组件做出了许多假设,您也可以调整这些参数来探索系统如何响应。您会发现这些模拟实验比湿实验室版本花费的时间要少得多;因此,如果模型设置得当,它可以节省您在工作台上的很多时间,并且您在那里工作时可以采取明智的实验方法。

电子电路建模

在 Picture This 的物理建模组件中,您将构建细菌摄影菌株的电子版本。回想一下本章前面的建筑示例,计算机辅助设计工具可以帮助建筑师在各种环境条件下评估和测试设计。架构师还可以进行补充形式的建模,即物理模型,以帮助设想设计并识别所需但缺失的组件。对于合成生物学家来说,细胞的物理模型可能不会提供太多附加信息,但说明通过遗传电路的信息流的物理模型可以提供丰富的信息,然后您可以使用它来对电路进行测试预测。随着遗传电路变得越来越复杂,对通过它们的信息流进行建模可能变得异常困难。然而,细菌摄影系统具有相当简单的逻辑,因此我们可以用它来说明物理模型的价值,该模型使用电子元件来“替代”生物模型,如图 8-13 所示。

本章前面第 155 页的“其他阅读材料和资源”部分包含指向 Mouser Electronics 网站上 BioBuilder“项目”页面的链接,您可以在其中找到此活动的电子部件。表 8-1 列出了本 BioBuilder 活动中专门使用的组件。

在电子系统中,开关控制进入电路的电流,因此类似于膜结合光传感器蛋白 (Cph8) 所扮演的角色,它检测光并启动或抑制激酶反应。发光二极管 (LED) 的行为模仿细菌摄影系统的输出,根据电路的“光检测”开关组件的状态打开或关闭。面包板、电线和电阻器传播来自开关的信号并指定系统的逻辑,按下开关时关闭输出,关闭开关时打开输出。该电阻器还对系统的灵敏度进行建模,调节流经系统的信息量。

FIGURE

图 8-13 细菌摄影系统电气模型的示意图。光传感器(左)是光电二极管或开关,相当于光检测装置。可见光输出(右)是 LED(发光二极管),对应于颜色生成设备。多种组件可以连接光检测器和 LED,以模拟细胞内发生的信号传播。

表 8-1 电路元件

电子零件:   生命系统中的相应组件   贸泽电子零件编号
瞬时开关 Cph8光检测系统 611-8551MZQE3
显色LED β-gal + S-gal显色反应 607-5102H5-12V
电池和卡扣式夹子 为电池提供电力的新陈代谢 9V和534-235
电线和电阻器 信息流的通路和调节 510-WK-3 和 71-CCF0720K0JKE36
面包板 E.大肠杆菌底盘 510-GS-400

在面包板上构建电路 面包板是用于快速制作电子电路原型的平台。您可以将电线插入面包板塑料盖上的孔中,以轻松进行电子连接并测试多种电路配置。但这些孔如何将组件连接在一起呢?面包板有两条轨道,每侧一条,它们是标有红色或蓝色线以及加号或减号的长柱。它还具有按五个一排排列的内部孔。沿侧面的导轨是电路连接电源和电源接地的地方。接地本质上是一种将电流返回到起点的方法,也称为闭合或完成电路(对于北美以外的交流供电系统,您可能会看到术语“接地”代替“接地”)。如果电路不接地,电流就无法流动,电路将无法工作。面包板上的两个导轨在功能上是相同的,因此电路的方向是通过将一个导轨连接到电源、将另一个导轨连接到接地来确定的。

如果您剥开面包板后面的盖子,您会看到位于塑料面包板孔后面的金属条(图 8-14)。金属连接每个导轨的整个长度,因此您可以沿着导轨的任何位置连接电源和接地,然后整个导轨提供电源或接地。更多的金属条也位于每排中的五个孔的后面,因此它们彼此连接,但它们不连接到下一排中的孔或向下延伸的凹槽或沟槽另一侧的孔面包板的中间。任何插入同一排孔中的电子元件都是电气连接的,并且电流可以在它们之间流动(请参见http://bit.ly/building_circuits。)

FIGURE

图 8-14 电子面包板。面包板的塑料顶部(左)和其背板被移除(右)以显示导电金属的配置。左侧的绿色轮廓对应于金属片的方向,如右侧所示,因此反映了电子元件的连接性。

在电子领域,传统上用红色表示正极,用黑色表示负极。电路需要电池等能源,可以通过接线柱连接到面包板。对于此 BioBuilder 活动,面包板通过将 9V 电池引线的红线连接到其中一个红色 (+) 导轨,并将电池引线的黑线连接到面包板另一侧的蓝色 (–) 导轨来供电。木板。

电子建模活动

如果您手头有构建细菌摄影电路的电子元件,您可以尝试以下操作。

首先,通过将 9V 电池的接地连接到面包板的蓝色 (–) 导轨,并将电池的正极连接到面包板另一侧的红色 (+) 导轨,为面包板供电。接下来,使用两根小电线将电源连接到面包板的中心部分(其中有五个孔的行)。最后,将 LED 的红线连接到面包板上与红色导轨相连的孔,并将 LED 的另一根线连接到面包板的接地侧,为 LED 供电。

对于这个简单的电路,拔掉引线是改变系统输出的唯一方法。要构建更容易更改的系统,您可以将 LED 上的地线移至新行,然后将开关连接到接地行和带有 LED 地线的行之间,从而在电路中添加一个开关。这是一个很好的时刻,可以注意到电路元件重新接线是多么容易,以及它们如何可靠地连接以相互通信。这也是注意到我们使用的开关是数字的(它要么完全打开,要么完全关闭)的好时机,因此输出无法“调整”。

为了修改系统的输出,电子电路还包括一个电阻器。尽管该电路仍然表现出类似开关的行为,但您可以通过进一步分离 LED 和开关之间的连接并在它们之间插入一个电阻来改变输出的强度。使用您观察到的行为来思考遗传电路和可能影响每个信息流的点。

在过去教授此活动时,我们注意到一些事情可能会对您第一次尝试此活动有所帮助。当电子设备未按预期运行时,检查是否已按照说明进行所有连接非常有用。大多数情况下,面包板上的电线会被错放。当接线完全正确但电路仍然无法工作时,将零件逐一更换为工作设置会有所帮助。我们曾因电池没电、LED 烧坏和面包板故障而感到沮丧,但您可以通过在故障设置和工作设置之间系统地更换零件来识别和解决每个问题。

FIGURE

FIGURE

Read More

2024-05-15
iTunes 设备

第7章 iTunes 设备

FIGURE

BioBuilder 的 iTune 设备活动强调设计-构建-测试周期的“测试”阶段。您将使用酶生成基因回路的几种变体。这些电路的 DNA 序列有微小差异,预计会改变细胞产生的酶的量。您将使用酶测定来定量测量电路的输出。然后,您将结果与根据略有不同的 DNA 序列的已知行为所预测的结果进行比较。

对于大多数工程系统来说,观察到的行为和预测的行为之间存在显着差异是不可接受的。如图 7-1 所示,如果将新的机翼形状添加到飞机机身上,使飞机以意想不到的方式飞行,航空工程师会怎么想?面对这种不确定性进行设计和建造将产生巨大的费用,并可能危及生命。工程师会发现,如果简单部件(无论是螺母和螺栓,还是电阻器和放大器)的组合产生意想不到的行为,他们的设计几乎不可能继续进行。

FIGURE

图 7-1 意外行为。在将飞机的标准尾翼(左)修改为新颖的形状(右)时,工程师必须关注意外行为,例如影响飞机安全着陆的差异。

更成熟的工程学科依赖于可以通过多种方式进行功能组装的模块化组件,从而可以轻松根据个人需求定制组合。这些部件不仅需要物理连接,而且在连接时,它们的行为也必须符合规范。简而言之,零件组装后必须按预期运行

FIGURE

目前,在合成生物学领域,生物工程师仍在致力于遗传部件的这种功能性组装。尽管研究人员已经在分子水平上描述了许多细胞行为——并且在许多情况下可以对执行生物功能所必需且充分的遗传元件进行分类——以新的方式组合这些遗传成分通常会产生意想不到的结果。合成生物学家可能很快就能物理组装遗传物质,以相对容易地组装任何所需的序列,但将该序列置于新的细胞环境中可能会以不确定和变化的方式影响其功能,即使该序列已被彻底研究和充分表征孤立地或在其他情况下。

除了标准化之外,部件的模块化、绝缘性和测量也是实现此类功能组装的关键组成部分(有关进一步讨论,请参阅 DNA 工程基础章节)。在本章中,我们将探讨如何将这些附加原则应用于一般标准工程,特别是合成生物学。然后,我们详细介绍了 iTune 设备实验,以测试细胞中的各种遗传电路,以便比较它们的预期行为和测量行为。

模块化

模块化是指工程师可以通过组合功能单元或“模块”来设计和生成系统的想法。尽管这个概念对于工程来说很直观,但模块化的想法最近才被应用于遗传部分。模块化对于生物学的应用是明智的,因为我们可以将离散的功能归因于特定的 DNA 片段——然而,即使我们现在认为这一原则是理所当然的,仍然需要大量的研究来证实它(见下面的边栏)。

基因作为模块

合成生物学假设一组遗传“部分”可以组合和操纵以产生精确的行为。这个前提背后的想法——特征是由 DNA 的离散功能片段产生的——实际上是相对较新的。直到 1900 年代初期,格雷戈尔·孟德尔 (Gregor Mendel) 的豌豆实验结果被重新发现,科学家们才开始认识到性状可以保持独特,为我们目前对遗传学的理解铺平了道路。

长期以来,人们认为后代融合了父母的遗传特征。孟德尔对豌豆植物的精心育种工作表明,混合并不总是发生,有时一种性状可以从亲本植物忠实地传递给后代植物。孟德尔通过仔细计数和测量豌豆植物的一些关键性状(例如花色和豆荚形状)来进行这些遗传研究。他的数据表明,特征可以保持独特,并以可预测的比例独立传承。他的研究结果表明,遗传应该从离散实体的角度来考虑,他将其称为因素,但后来被命名为基因。他的工作展示了这些因素如何以可预测的方式在代际间传递。这个想法在今天被认为是理所当然的,但在当时却是开创性的,导致了经典遗传学领域的建立。

花了 50 多年的时间才对孟德尔观察到的遗传模式提供了分子解释。我们现代的理解很大程度上依赖于沃森和克里克所描述的 DNA 双螺旋结构,以及雅各布和莫诺对紫胶操纵子中基因表达的经典研究。得益于这些科学进步和其他科学进步,我们现在了解了生物学的基本思想,例如遗传信息从 DNA 通过 RNA 到蛋白质的流动,以及将性状重塑为编码功能的 DNA 序列。合成生物学中 DNA 部分的想法就是这些经典成就的产物。

FIGURE

录制音乐行业的变化提供了一个不错的(但并不完美)的例子,说明从增加的模块化中获得的优势。在二十世纪的大部分时间里,最常见、最有利可图的音乐发行方式是唱片,后来是盒式磁带和 CD。在所有这些格式中,音乐主要以完整专辑的形式出售。有单曲可供选择,但价格要高得多,因此即使人们只喜欢专辑中的几首歌曲,他们通常也会购买该专辑。这张专辑是音乐产业及其艺术家的标准“单位”。这个单位在二十一世纪初彻底改变,当时音乐被数字化。有了这一进步,下载音乐而不是购买实体专辑变得很容易。专辑中的歌曲可以轻松拆分,使歌曲成为独立的模块,听众可以根据需要进行混合和匹配。从这些模块化歌曲中制作定制播放列表的广泛机会改变了人们对音乐收藏的看法,并改变了行业的标准“单位”。

我们在商业音乐中看到的增强的模块化和定制化概括了我们对基因表达单元不断变化的概念,这为合成生物学中基因“部分”一词的使用铺平了道路。孟德尔的早期工作表明,性状是离散的实体。那么,在与录制的音乐的类比中,表现出特征的有机体可以被认为类似于整张专辑——该特征只存在于有机体的背景中,就像歌曲只存在于整张专辑的背景中一样。弗朗索瓦·雅各布博士和雅克·莫诺博士的工作将在本章后面详细介绍,他们通过对乳糖代谢的描述戏剧性地重塑了这一图景,根据动态遗传元素而不是具有性状的整个生物体来重新构建性状。特定的 DNA 片段被发现可以协同控制细胞的行为,但这些片段中的遗传元件是不可分割的,并且不容易定制以满足新的目的。这个里程碑可以被认为是音乐产业的“专辑”和“单曲”阶段之间的某个阶段。现在,在基因工程和可互换遗传部分的时代,许多编码特定功能的基因序列是已知的并且可以精确操纵。我们可以通过以专门的方式重新组合这些遗传元素来定制这些遗传元素的“播放列表”,以满足我们的需求。 DNA 工程基础章节更全面地描述了这种操作的技术。在这里,我们将探索由于我们可以混合搭配遗传部分而出现的工程机会。

绝缘

随着模块化材料的混合和匹配,出现了新的复杂情况,包括模块之间以不良方式相互作用的可能性增加。最小化模块之间意外交互的一种工具是隔离各部分的行为。购买汽车时考虑可用的模块化选项。您可以通过多种方式升级基本型号:增强型扬声器系统、更强大的发动机、加热后排座椅等等。这些附加组件的出现在一定程度上要归功于汽车工程师采用的模块化设计方法。如果没有这种方法,升级到精美扬声器系统的成本将非常高昂,因为前控制台需要完全重新设计以适应每个品牌的扬声器。相反,早期设计阶段就包含了管理单元升级的灵活性,因此购买时的更改不需要大量的重新设计工作。汽车的每个模块都可以进行定制,设计人员从一开始就付出了艰苦的努力,使各个部件相互独立。

除了创建可以通过多种方式组合的物理离散零件之外,功能装配还要求零件表现出与其周围其他元素可分离的行为。例如,如图 7-2 所示,音响的操作不得影响驾驶员方向盘的操作。如果转动收音机上的旋钮也能转动方向盘,那将是一个真正的驾驶挑战。这种部件操作之间的行为分离称为绝缘

FIGURE

图 7-2 汽车设计中的绝缘。现代汽车由多个部件组成,包括座椅、车轮、方向盘和音响。组件独立工作,因此一个组件的使用不会干扰车内其他组件的运行。

当用遗传部件建造时,类似的预期设计和遗传部件的绝缘是很难实现的。细胞是一个流体环境,分子、蛋白质和细胞结构不断混合。当他们不断遇到新的伙伴和邻居时,如何才能隔离他们的行为呢?此外,对单元的“升级”可能在某些蜂窝设置中按预期运行,但在其他设置中可能不按预期运行。 “多么丰富多彩的世界”一章中的活动就是这一挑战的例证。即使升级一开始似乎有效,但细胞的局部环境是动态的,要求细胞设计在许多环境和生长条件下运行。最后,与任何其他工程基质不同,生命材料可以并且将会随着时间的推移而发生变异,正如我们在金面包章节中探讨的那样。工程产品的演变使得设计挑战变得更加严峻。

FIGURE

为了管理生物设计的所有复杂性,我们可以使用强大的抽象工程工具,如生物设计基础章节中所述,因此关于一个设计元素的决策可以独立于其他元素的决策而做出。可以更换汽车的音响而不影响转向。此外,模块化、隔离和抽象应该允许在不影响系统设计的情况下做出有关设备的决策。回到汽车的类比,你不需要仅仅因为想要前轮驱动就购买卡车而不是汽车。

但这种方法在合成生物学实践中效果如何?合成生物学家希望能够以可预测且合理的方式将具有已知特性和相对强度的部件组合成新的合成电路。通过测量由特征明确的部件组成的合成系统的实际性能,并将测量结果与预测进行比较,生物构建者可以评估他们的设计,并更接近正确预测未来设计的成功或失败。

测量原理

有些事情是很难衡量的。例如,幸福没有我们都同意的尺度或单位,也没有可靠的工具来检测它。其他事情一直在测量:我们可以将数值与牌组中的卡片、平均成绩或体育联盟中的球队排名相关联。无论您是做饭还是购买现成的衣服,您都依赖测量来进行数字、尺寸、时间或计数。 测量报告项目的状态及其行为、关系或特征

FIGURE

当某些东西可以测量时,单位为我们提供了一种比较项目的通用方法。正如我们在《DNA 工程基础》一章中所述,标准化每个测量的单位并非易事,但对于许多项目,我们都同意一些单位。用“手”测量马的高度就是一个很好的例子。感谢亨利八世将手标准化为 4 英寸,即使这个过时的单位仍然具有有意义的测量信息。熟悉手测量的人都知道,一匹站立 16 手高的马肩胛骨(靠近肩膀)的高度为 64 (16 x 4) 英寸,而另一匹身高 16.3 手高的马则为 67 (16 x 4 + 3) 英寸,不是 65.2 (16.3 x 4) 英寸。

有意义的测量,无论单位如何,都是现代科学方法的标志。正如孟德尔向我们展示的那样,我们在计算事物时可以看到模式。定性数据也可以提供丰富的信息,正如“淡香水”一章中所探讨的那样。不过,在这里,我们重点关注数学测量如何强大地帮助我们操纵信息并将其转换为其他表示形式。数字还使我们能够进行比较和预测。

举个例子,当你只有定性测量时,尝试将你和你朋友的步行去学校的路进行比较。在这种情况下,你只能说这样的话:“学校离我家很远,比你家远得多,但我走得比你快。”但通过测量里程、时间和速度,突然间就可以算出你们每个人需要多早离开家,早上 8 点到学校见面。如果您知道距离和步行速度,您就可以预测行程需要多长时间。将这一教训应用到工程中:测量使我们能够预测,这非常有用,但前提是我们能够进行相关测量。接下来描述是什么使测量具有相关性。

通常测量什么

工程师不仅使用测量来描述,还用于控制、组装和改进被测量的对象。模块化零件的组装说明了测量的重要性。为了可靠地将一个零件与另一个零件组合在一起,必须了解每个零件的相关特征,并且必须符合某些商定的标准。否则,齿轮将无法转动,螺母将无法安装在螺纹上,乐高积木也无法组装成死星和埃菲尔铁塔的模型。通过符合特定的测量标准,模块化零件成为现代工厂和高效装配线制造的基础。表 7-1 详细介绍了工程师所依赖的一些比较和测量结果。

表 7-1 工程学科的典型测量

测量   描述   实用程序
静态性能 将一系列受控输入映射到部件的可测量最终输出 有助于确保一个部件的输出足以触发电路中的下一个部件
动态性能 随着时间的推移,部件响应输入信号变化的输出 显示系统在初始刺激下的行为方式,这可能与稳定的长期行为不同
输入兼容性 部件如何响应各种输入 说明部件与各种上游部件/输入组合的灵活性
可靠性 以平均无故障时间 (MTF) 来衡量 用于确定系统预期按最初指定的方式运行多长时间
材料或资源的消耗 决定电源或资源池的选择 影响机箱决策等

进行和报告合成生物学的测量

您的测量结果会告诉您关于合成 DNA 电路如何在细胞中工作的不同信息。如果我们能够缩小到微观尺寸,就像 Frizzle 女士在《神奇校车》系列书籍中所做的那样,然后神奇地坐在 DNA 上来计算移动的 RNA 聚合酶的数量,就可以对电路的活动进行最直接的测量每秒沿着DNA。用电子术语来说,这就像对电流中流动的电子进行计数。然而,在实验上更合理的是测量转录和翻译的产物。每秒产生多少个 mRNA,或者蛋白质如何随着时间的推移而积累?这些 RNA 和蛋白质测量是可能的,但需要大量的设备、时间和专业知识。为了使 BioBuilder 的 iTunes 实验室活动变得更容易,测量了 β-半乳糖苷酶 (β-gal) 活性,这间接但很好地反映了每个电路的性能。

经验表明,当 DNA 回路从一种生物环境转移到另一种生物环境时,可能很难预测遗传部分将如何发挥作用。某个部分的活性在许多层面上受到不同程度的影响,包括新细胞环境中的转录、翻译和蛋白质活性的速率。增加可靠组装的挑战的是,当构建由多个遗传部分组成的生命系统时,很难预测这些部分将如何相互通信。例如,一个部件生成的强“开启”信号可能不足以触发与其一起工作的下游部件。

FIGURE

然而,合成生物学并不是第一个遇到这些组装挑战的工程努力。更成熟的工程学科采用的一种方法是开发数据表,描述任何给定零件如何根据特定参数工作。为了制作此类数据表,工程师必须收集足够的数据来充分描述其零件,并使用特定的输入并在许多不同的条件和环境下对其进行测试。合成生物学家可以为他们的零件创建类似的数据表。例如,标准生物部件注册表中发布的一份转录因子数据表报告了该部件的静态性能、动态性能、输入兼容性和可靠性。这些参数与前面表 7-1 中描述的参数相同。理想情况下,这些测量值和部件行为的描述在使用时都有效。然而,即使如果其行为因环境而异,零件数据表上的说明和信息也可能允许生物构建者考虑这种可变性。这种“数据表”方法仅适用于以可靠且可预测的方式变化的部件,情况并非总是如此,但它是迈向功能标准化的重要第一步。

影响零件感知鲁棒性(或缺乏鲁棒性)的另一个因素是实验室之间测量技术的正常差异。由于技术、培养基、细胞生长状态以及其他因素的细微差异,即使是同一实验室中测量同一事物的两个人也不太可能得出相同的值。合成生物学家热衷于找出这些变异的根本原因,但认识到这是一个长期目标。同时,您可以使用校准参考来比较在一个地方进行的测量与在另一地方进行的测量。出于这个原因,BioBuider 的 iTune 设备实验室使用了参考标准。

iTune 设备实验室的基本概念

在此 BioBuilder 活动中,您可以探索遗传部分的生物活性,这些遗传部分将结合起来产生不同数量的酶。这些部分中的每一个都被独立地描述为“弱”、“中”或“强”。此活动询问当这些单独特征的部件以不同方式组合时,您能如何预测它们的行为。如下所述,对基因表达以及启动子和核糖体结合位点部分的作用的一些了解对于开始是至关重要的。

促销员和 RBS

“DNA 制造 RNA 制造蛋白质”这句口头禅通常被称为基因表达的“中心法则”,是蛋白质通过 RNA 序列翻译组装而成,而 RNA 序列由 DNA 序列转录而成的原理的简写。蛋白质在细胞中执行许多关键工作,因此转录和翻译控制着细胞的许多行为和特征。因此,转录和翻译已被广泛研究,并且对于受控基因表达来说必要且充分的许多核心组件是已知的(图 7-3),这并不奇怪。

FIGURE

图 7-3 基因表达单元的符号表示。左侧箭头所示的启动子序列结合 RNA 聚合酶以启动转录。核糖体结合位点缩写为“RBS”并用半圆表示,是编码核糖体结合以启动翻译的 mRNA 片段的 DNA 序列。开放阅读框,缩写为“ORF”,由右侧箭头表示,代表编码蛋白质的DNA序列。启动子和ORF的箭头方向表示它们的读取方向。

对于转录,启动子是结合 RNA 聚合酶(一种复杂的多蛋白酶)的 DNA 序列,以启动从 DNA 模板形成 RNA 链。对于翻译,起始位点称为核糖体结合位点 (RBS),因为核糖体识别该序列以开始从 RNA 模板合成蛋白质。这些序列主要负责自然发生的转录和翻译调控,合成生物学家也可以使用它们来引入自己的调控方案。基于许多已知的启动子和 RBS 序列,研究人员已经确定了这些部分的共有序列,如图 7-4 所示。例如,共有启动子序列是通过比较许多启动子序列中每个位置的核苷酸来确定的。共识是根据每个位置最常见的核苷酸模式建立的。

FIGURE

图 7-4 定义共有序列。句子(左)和基因(右)的多个“序列”对齐以生成一致序列,如底部灰色线所示。绿色字母代表每个位置最常见的字母,它定义了共有序列。红色字母不是该位置最常见的字母,因此不包含在共识序列中。

共有序列与合成生物学相关,因为一般来说,当某个部分与共有序列紧密匹配时,其功能最佳。相反,与共有序列不同的核苷酸越多,该部分完成其工作的能力就越差。因此,共有启动子序列可能是“强启动子”,这意味着它可能会很好地结合 RNA 聚合酶并经常启动转录,而偏离共有启动子或 RBS 序列将是“弱”的,其工作效率低于具有更好匹配的序列。然而,强大并不一定意味着更好。根据应用的不同,工程师可能只需要少量的活性,例如,如果在细胞表面形成孔或调节细胞死亡反应。

紫胶操纵子

细胞根据需要打开和关闭基因产物的能力对其生存至关重要。 20 世纪 60 年代,Francois Jacob 博士和 Jacques Monod 博士通过对细菌中乳糖转运和代谢的研究,确定了基因表达的基本原理。乳糖代谢的基因聚集在乳糖操纵子中(图 7-5),但细菌仅在葡萄糖不存在时才打开这些基因来节省能量。细菌更喜欢葡萄糖作为食物来源,并且只有在没有其喜欢的食物的情况下才会努力利用乳糖。 Jacob和Monod对其调控的分子细节解释是诱导基因的经典模型。在这里,我们仅讨论与 iTune 设备实验室相关的详细信息。

FIGURE

图 7-5 lac 操纵子的符号表示。 lac 操纵子由控制三个下游 RBS-ORF 对(分别为绿色半圆和蓝色箭头)的单个启动子(pLac,绿色箭头)组成。仅当葡萄糖不存在时,操纵子才会产生代谢糖所需的酶。

乳糖代谢的关键蛋白质是一种称为 β-半乳糖苷酶的酶,通常缩写为 β-gal,它由称为 lacZ 的 ORF 在 DNA 上编码。 β-半乳糖酶将乳糖裂解成葡萄糖和半乳糖,细胞可以利用它们来驱动其其他功能。研究人员还发现,β-gal 会与多种类似于乳糖的分子发生反应,包括合成类似物,例如 ONPG,您将在 iTune 设备实验室中使用它。

LacZ 的表达以及整个 lac 操纵子的表达在转录水平上受到正向和负向调节(图 7-6)。当 DNA 结合蛋白通过其 DNA 结合位点下游的 DNA 元件增加转录量时,就会发生正向调节。相反,负调控这一术语用于描述 DNA 结合蛋白在结合 DNA 时降低转录量的情况。对于紫胶操纵子,正向和负向调节因子对细菌环境中的糖种类敏感。当葡萄糖存在时,调节因子会关闭下游 ORF 的转录。如果存在乳糖而缺乏葡萄糖,这些相同的转录调节因子会改变它们的行为,并且操纵子的转录导致乳糖的转运和代谢。

控制 lacZ 的相同正向和负向调节启动子也控制其他 lac 操纵子基因,包括编码乳糖转运蛋白的基因。单个 mRNA 从 lac 操纵子的启动子转录,产生乳糖代谢和运输所需的多种蛋白质产物。由于与每个 ORF 相关的 RBS,每个产物的翻译都可以从单个 mRNA 进行。它是一种紧凑而优雅的遗传结构,大自然已经对其进行了调整,以在适当的时候产生所需量的每种蛋白质。

FIGURE

图 7-6 Lac 操纵子调节。 lacI ORF 编码转录抑制子,该抑制子阻断 Plac 启动子,从而阻断整个操纵子的表达。乳糖或其类似物 IPTG 抑制 LacI 阻遏蛋白,使 Plac 启动子发挥作用并缓解下游操纵子的抑制。

额外阅读和资源

  • Canton, B.、Labno, A.、Endy, D. 合成生物部件和设备的细化和标准化。自然生物技术2008; 26:787-93。
  • Jacob F.,Monod J。蛋白质合成中的遗传调控机制。 JMB。 1961;3:318-56。
  • Kelly, J.R. 等人使用体内参考标准测量 BioBrick 启动子的活性。生物工程学报(2009); 3:4。
  • McFarland, J. 浊度计:一种估算悬浮液中细菌数量的仪器,用于计算调理指数和疫苗。贾马。 1907;14:1176-8。
  • 米勒,J.H.分子遗传学实验冷泉港 1972 年;冷泉港实验室出版社。
  • 萨利斯,H.M.核糖体结合位点计算器。方法酶。 2011;498:19-42。
  • 网站:生物部件注册

FIGURE

iTune 设备实验室

该实验室重点研究表达基因所需的蛋白质和 DNA 序列(启动子、ORF、RNA 聚合酶等),同时也介绍了基础酶学。通过分析九个基因调控设计,探索了模块化、绝缘和测量的工程概念。每种设计都有独特的启动子和 RBS 组合,控制 β-半乳糖苷酶的表达。分光光度分析和酶动力学测定是本实验室强调的主要生物技术技能。

设计选择

与天然存在的 lac 操纵子相比,iTune Device 基因电路的遗传结构更为简单,由 1 个启动子和 1 个 RBS 控制 1 个 ORF(见图 7-7)。为了减轻这些正调节因素和负调节因素对 iTune 设备测量的影响,细胞在丰富的培养基中生长,但不含细胞的正调节蛋白,并且存在 IPTG(一种抑制负调节蛋白的分子)。由于每个 DNA 部分的模块化行为,我们可以定制 iTunes 电路的行为。正如 Jacob 和 Monod 对大肠杆菌的天然紫胶操纵子所描述的那样,iTune 设备的部件具有离散的功能和性能特征,合成生物学家将其用于生物设计。

FIGURE

图 7-7 lac 操纵子的修饰。遗传构建体(例如在 iTune 设备活动中研究的遗传构建体)已删除第二个和第三个 RBS-ORF 对。所得基因表达单元带有单个启动子-RBS-ORF。

实验问题

在 BioBuilder iTune 设备实验室中,您将测量 lacZ 基因产物 β-gal 的活性,以评估不同启动子和 RBS 组合的性能。根据启动子和 RBS 部分与共有序列的比对,它们被分为“弱”、“中”或“强”。然而,它们如何结合使用,可能取决于培养基、菌株背景和评估它们的技术。如果您有时间或有兴趣,您可以在不同的细菌菌株、不同生长阶段的菌株或生命系统中的其他 DNA 回路中进行这些测量。这些因素中的任何一个都可能改变这些简单的启动子:RBS:lacZ 电路在细胞中的工作方式。

FIGURE

在运行实验室进行测量之前,您对这些电路的活动有何预测?表 7-2 可以帮助组织您的“猜测”,并揭示您思维中的任何偏见和理解上的差距。如果我们任意猜测弱启动子和弱 RBS 的组合将产生 10 个单位,强/强组合将产生 1,000 个单位,我们如何估计两者之间的一切?图表中的起始值是理论值,可能无法反映您运行此实验时从这些电路获得的数字。关键是要问如何才能做出好的预测。

表 7-2 假设表

启动子(弱)   启动子(中)   启动子(强)
RBS(弱) 10 ? ?
RBS(中) ? ? ?
苏格兰皇家银行(强) ? ? 1,000

在 BioBuilder 的 iTunes 实验室活动中,测量了 β-gal 活性,因为它间接但很好地反映了每个电路的性能。 β-gal 活性是使用一种称为 ONPG 的底物测量的,ONPG 是一种化学性质与乳糖相似的无色化合物。 β-gal 裂解 ONPG 就像通常裂解乳糖一样。与 ONPG 反应的产物是黄色化合物邻硝基苯酚和无色产物半乳糖。黄色化合物提供可见信号,您可以使用其强度来计算不同电路表达的 β-gal 量。

为了比较不同实验室小组收集的数据,您将使用“参考”启动子:RBS:lacZ 序列。已知该参考会产生一些中间量的酶,因此您可以使用它来校准您进行的所有其他测量。例如,如果您测量的参考标准具有 1,000 个活动单位,而另一个团队测量的相同参考具有 500 个单位,则技术或单位计算中的一些变化可能会导致差异。不过,您的所有测量值及其测量值都应该有同样的两倍差异,因此可以在考虑该差异后对数据进行比较。

您可以将参考视为特定类型的阳性对照。我们预计参考样品会产生 β-gal,从而产生与底物裂解相关的黄色。因为做这个实验的每个人都会使用相同的菌株作为阳性对照,以确保检测中检测到某些酶,我们也可以用它作为所制备酶的准确量的参考。对于本实验室,我们没有包含用作阴性对照的特定菌株。阴性对照预计不会产生酶。根据您想要控制的内容,您可以想象使用没有 lacZ 基因的菌株作为阴性对照,或在不存在诱导分子 IPTG 的情况下使用参考菌株。然而,我们的实验问题侧重于将设计与参考进行比较,我们不太关心电路是否仅在存在 IPTG 的情况下才打开。我们决定参考菌株提供足够水平的实验控制来解决我们的问题:启动子 + RBS 的哪种组合会产生最大的 β-gal 产量?

入门

BioBuilder 的 iTune 设备活动中总共有 10 个菌株可供测试(表 7-3)。对于 10 种菌株中的每一种,您都将在液体培养基中培养过夜,其中包括 LB(生长培养基)、氨苄青霉素(用于选择携带启动子的质粒:RBS:lacZ 构建体)和 IPTG(用于缓解 lacZ 基因的抑制)。

表 7-3 iTune 设备应变描述

菌株#   登记号#
(启动子部分)  
登记号#
(RBS 部分)  
相对强度启动子/RBS
2-R BBa_J23115 BBa_B0035 参考/参考
2-1 BBa_J23113 BBa_B0031 弱/弱
2-2 BBa_J23113 BBa_B0032 弱/中
2-3 BBa_J23113 BBa_B0034 弱/强
2-4 BBa_J23106 BBa_B0031 中/弱
2-5 BBa_J23106 BBa_B0032 中/中
2-6 BBa_J23106 BBa_B0034 中/强
2-7 BBa_J23119 BBa_B0031 强/弱
2-8 BBa_J23119 BBa_B0032 强/中
2-9 BBa_J23119 BBa_B0034 强/强

所有菌株均在“TOP10”大肠杆菌菌株中构建,基因型为:F– mcrA Δ(mrr-hsdRMS-mcrBC) Φ 80 lacZΔM15 ΔlacX74 recA1 araD139 Δ(ara leu) 7697 galU galK rpsL (StrR) endA1 nupG

您将通过使用分光光度计测量 OD600 或使用 MacFarland 浊度标度测量每个过夜液体培养物的细胞密度来开始实验。如果您使用分光光度计,机器会测量细菌样本散射的光量。其在600 nm光下的光密度(缩写为“OD600”)是一个无单位的数字,反映了细菌培养物的密度。使用 MacFarland 浊度样品(您可以根据表 7-4 将其转换为 OD600 测量值),您可以用眼睛而不是机器更近似地进行此测量。

表 7-4 MacFarland 标准到 OD600 的转换

麦克法兰   1   2   3   4   5   6   7
OD600 0.1   0.2   0.4   0.5   0.65   0.8   1.0

然后,您将已知的少量每种培养物(称为等分试样)与洗涤剂混合,洗涤剂将酶从细胞内部释放到缓冲溶液中。缓冲液使 β-gal 酶保持足够稳定,以便与 ONPG 发生反应。您可以使用下面的公式,通过测量添加到反应中的细胞培养物的体积(以 ml 为单位)和 OD600 来计算每个反应中的细胞数量,OD600 反映每个培养物中的细胞密度(以细胞为单位) /毫升):

细胞数 = 细胞数/ml × ml

最终,通过此计算,您可以比较样品之间的“每个细胞”酶活性。

准备好反应管后,您将通过添加 ONPG 开始反应,以精确定时的 10 秒或 15 秒间隔交错添加。反应物将开始变黄。在给定时间内形成的黄色强度反映了细胞在裂解之前产生的 β-gal 酶的量。经过已知的时间并且反应物足够黄色后,您将添加 Na_2 CO_3 (一种淬灭溶液),通过改变 pH 值来停止反应。该淬灭溶液以精确定时的 10 秒或 15 秒间隔添加,以便每个反应可以运行精确已知的时间量,这使您可以计算每分钟经过的酶活性。当反应淬灭后,反应稳定,因此您可以在闲暇时使用分光光度计在 420 nm (Abs420) 处测量黄色的强度,或者与 BioBuilder 网站上显示的颜色标准进行比较。

最后,您可以使用该酶的标准“米勒单位”计算每个菌株的 β-gal 活性。根据以下公式进行计算:

米勒单位的 β-gal 活性 = 1000 × Abs420 / [(反应时间 (min)) × (每个反应中的细胞体积 (ml)) × OD600]

如果您想知道分光光度计上进行的“吸光度”测量和分光光度计上进行的“光密度”测量之间的区别,这里有一个简单的方法来区分它们。当从比色皿中发出的光量比比色皿中吸收光的颜料或其他分子进入的光量减少时,在分光光度计上获得的读数称为吸光度测量。当比色皿中的材料散射而不是吸收光时,您在分光光度计上获得的读数称为光密度,就像您可以在 600 nm 光下测量的颗粒或细胞的情况一样。吸光度和光密度都是无单位的数字,因此可以在没有任何转换因子的情况下用于米勒单位的计算。

提前准备

准备浊度标准品。 如果您在无法使用分光光度计的情况下运行实验方案,表 7-5 中所示的 MacFarland 浊度标准品提供了另一种测量细胞密度的方法。该方法使用1% BaCl 2 在1% H 2 SO 4 中的悬浮液,其在视觉上与在液体培养物中生长的大肠杆菌密度的悬浮液类似。您可以在实验室之前准备好这些浊度标准品。您可以制作任意体积的浊度标准品,但是您应该将它们悬浮并等分到带盖的小玻璃管中。试管的尺寸和放入其中的标准品的体积并不重要。

表 7-5 麦克法兰浊度标准

浊度标度   OD600   1% BaCl_2 / 1% H_2 SO_4 (mL)
0 0 0.0/10
1 0.1 1.05/9.95
2 0.2 0.1/9.9
3 0.4 0.2/9.8
4 0.5 0.3/9.7
5 0.65 0.4/9.6
6 0.85 0.5/9.5
7 1.0 0.6/9.4

要测量细菌样品的浊度,您可以将少量细菌样品转移到与浊度标准所用尺寸相同的玻璃管中。通过识别哪个浊度标准相对模糊放置在标准管后面的深色标记来确定浊度。

经验法则:使用 1 OD600 ~ 1 x 10^9 cells/ml 将浊度测量值转换为细胞密度。

实验前程序

第 1 天:将菌株从刺中划出到平板上。 本实验的细菌菌株已经携带待测试的质粒 DNA 编码遗传电路。这些质粒还赋予抗生素氨苄青霉素抗性。细菌将以“刺”或“斜”的形式到达,这是一个在倾斜介质上装有少量细菌的试管:

  1. 使用无菌牙签或接种环将细菌划线到培养皿上:从牙签或接种环上的刺处收集少量细菌,然后将细胞转移到含有 Luria Broth (LB) 琼脂的培养皿中100 μg/ml 氨苄西林。
  2. 对剩余的刺穿样品重复上述步骤,将每个样品划线到不同的培养皿上。
  3. 将这些培养皿培养基面朝上放入 37°C 培养箱中过夜。如果没有培养箱,室温培养两晚通常会得到相同的结果。

第 2 天:细菌菌株的液体培养过夜。 为了为本实验室的实验部分制作起始培养物,每个菌株的 3 ml 液体培养物在 LB+氨苄青霉素中于 37°C 培养过夜。管中氨苄青霉素的终浓度应为100 μg/ml,管中IPTG的终浓度应为1mM。 3 ml 发酵剂培养物足以完成后续方案。使用无菌接种环或牙签或移液管尖端,将细菌菌落从其中一个培养皿转移到含有 3 ml LB、3 μl 氨苄青霉素和 30 μL IPTG 的大无菌培养管中。对于每个学生或学生团队必须培养的每种菌株来说,这个体积绰绰有余:

  1. 对您要接种的每种菌株重复上述步骤。
  2. 将培养管放入滚轮中,37°C 培养箱过夜。确保彼此平衡管子,以最大程度地减少滚轮上的压力。

如果没有滚轮或培养箱,您可以将每个起始培养物的体积增加至 10 ml LB+amp+IPTG,然后您可以在带有搅拌棒的小锥形瓶中在室温下培养样品。您应该以这种方式种植它们至少 24 小时以达到饱和。

实验室协议

通过此测定,您将确定每种设计产生的 β-gal 活性量。您应该尝试对每种菌株进行重复测定,然后汇集您的班级数据,以获得对您测量的值的信心。

数据收集:使用分光光度计测量浊度和颜色

  1. 为每个过夜培养物制备 3.0 ml 1:10 稀释液(300 μL 细胞于 2.7 ml 碳酸氢盐缓冲液中)。
  2. 如果您的分光光度计使用玻璃分光光度计管,则可以继续执行下一步。或者,您可以将稀释的细胞混合物转移到合适的比色皿中,填充约四分之三满。
  3. 测量该稀释液在 600 nm 处的吸光度 (OD600)。在数据表中记录值 X 10。这是未稀释细胞的密度。如果您没有分光光度计并使用浊度标准品,请将培养物与 MacFarland 浊度标准品进行比较,并使用表 7-4 转换为 OD600。
  4. 对所有细菌样本重复此数据收集。
  5. 现在您可以将这些稀释液和试管放入 10% 漂白剂溶液中。
  6. 将 1.0 ml 碳酸氢盐缓冲液添加到 11 个标有 B(空白)、R(参考)和 1 至 9(样品)的试管中。这些是反应管。
  7. 将 100 μl 过夜培养物(未稀释)添加到每个管中。将 100 μl LB 添加到 B 管中,作为空白。
  8. 向每管中添加 100 μl 稀释洗洁精,裂解细胞。
  9. 每个管涡旋 10 秒。您应该精确地计时此步骤,因为您希望尽可能相同地对待重复。
  10. 将 100 μl ONPG 溶液添加到第一管中开始反应。同时启动计时器或秒表,以配合您开始第一反应的时间。等待 15 秒,然后将 100 μl ONPG 溶液添加到下一个管中。对所有管重复此操作,以 15 秒的间隔添加 ONPG,包括空白管。
  11. 10 分钟后,向第一个管中加入 1 ml 苏打灰溶液,终止反应。等到计时器读数为 10 分 15 秒,然后终止下一个反应。对所有管重复此操作,每隔 15 秒添加苏打灰溶液,包括空白管。现在反应已经稳定,可以留到第二天继续阅读。
  12. 如果您的分光光度计使用玻璃分光光度计管,则可以跳至下一步。如果没有,您需要将一些反应混合物从反应管转移到比色皿中,将其填充到大约四分之三满。
  13. 读取每个样品管在 420 nm (OD 420) 处的吸光度。这些值反映了每个管中黄色的量。如果您没有分光光度计并且要将颜色与油漆碎片进行比较,请按照 BioBuilder 网站上的说明进行操作。
  14. 根据前面给出的公式计算每个样品中的 β-半乳糖苷酶活性。

FIGURE

FIGURE

Read More

2024-05-15
气味香水

第6章 气味香水

FIGURE

Eau That Smell 实验室强调工程设计-建造-测试周期的“测试”阶段。您将测试两个不同的合成生命系统,这些系统已经由其他工程师设计和建造。有两种设计选项供您比较。这两种设计都改变了通常有臭味的细菌的气味,而且看起来它们都可能是“正确的”。在比较设计时,我们将有机会探索合成生物学家如何做出设计选择,以及学习和教授一些有关基因调控和细胞生长的重要科学思想。这项活动的灵感来自 2006 年的国际基因工程机器 (iGEM) 项目,其中麻省理工学院的本科生团队设计了一种新的细菌菌株,他们称之为“大肠杆菌”。研究小组培育出一种闻起来像香蕉或冬青的大肠杆菌菌株,具体取决于细胞的生长阶段。 BioBuilder 实验室活动着眼于控制细胞生长周期和气味产生之间关系的两个遗传程序。从理论上讲,这两种设计选项看起来几乎相同,但现实世界的行为通常会偏离预期,因此实验室活动允许直接测试此处描述的菌株。在详细介绍实验之前,我们将介绍该实验所基于的 iGEM 项目,以提供上下文,并提供设计过程的说明,包括抽象、设计层次结构和迭代的使用。

来自 Eau d’coli iGEM 项目的灵感

通过探索 2006 年 MIT iGEM 团队如何实现最终设计并构建其合成系统,我们将说明设计过程并提供一些有关细胞生长和基因表达通常如何调节的背景。大肠杆菌的例子也为讨论使用细胞作为工厂来制造材料(在本例中是闻起来很香的材料)以及前体与产品之间的关系提供了很好的机会。

确定挑战

FIGURE

Eau d’coli 项目背后的团队从一个非常简单的观察开始:大肠杆菌的气味非常难闻。气味是一个问题,因为许多合成生物学家使用微生物来生产药物和其他所需化合物等分子。使用大肠杆菌作为小型化工厂需要大量的臭细菌,最终也会使实验室闻起来很臭。因此,iGEM 团队想:为什么不设计一种闻起来很香的大肠杆菌菌株呢?

头脑风暴解决方案

iGEM 团队确定了想要解决的问题后,考虑了各种解决方案。确定的两种选择涉及消除自然产生的难闻气味或引入新的、更令人愉悦的气味。该团队最初决定引入一种新的气味,而不是仅仅消除自然产生的气味,他们的想法是,难闻的气味是由多种代谢途径和化合物产生的,因此很难完全消除。

系统级设计

FIGURE

此时,团队已准备好指定系统级设计。用简单的语言来说:细菌会吸收一些前体化合物作为输入,这些前体化合物可以被细胞转化为气味好的输出

FIGURE

在设计系统时,iGEM 团队必须考虑使用哪种类型的细胞或生物体。因为该团队希望大肠杆菌产生令人愉悦的气味,从而盖过其自然臭味,所以显而易见的选择是在大肠杆菌中进行研究。然而,有很多应变可供选择,正如我们将看到的,在构建最终系统之前,团队必须对底盘进行一些后期调整。

设备级设计

FIGURE

随着系统级设计规范的完成,团队开始考虑其设备。首先,显然团队需要某种类型的气味生成装置,将无气味的前体化合物转化为气味。团队成员搜索了科学文献并确定了满足这一要求的五种自然发生的代谢途径。所有这些酶促途径都可以将特定的前体化合物转化为具有宜人气味的产品。研究小组考虑使用的途径包括来自模型植物拟南芥的茉莉花香、来自罗勒品种的肉桂香、来自金鱼草花的“清新花香”香、来自苦芥菜的冬青香和来自酵母(酿酒酵母)的香蕉香。

FIGURE

理论上,团队可以继续使用这些设备中的任何一个,但在继续设计过程之前,重要的是通过一些初步实验缩小选项以确认可以隔离有问题的设备并且这些设备会产生所需的气味。您可能认为在早期阶段进行测试违反了设计-构建-测试周期,因为团队仍处于“设计”阶段,但事实上,在需要时在这些阶段之间切换非常有用。在这种情况下,团队本质上是对每个潜在设备进行最小的设计-构建测试周期,以测试其是否朝着正确的方向前进,而不是围绕可能永远无法实际运行的设备完成整个设计。

FIGURE

通过这些最初的实验,团队无法分离出产生茉莉花和肉桂香味的 DNA,换句话说,它在循环的“构建”阶段被阻止,使得这些设备无法继续使用,并且在“测试”阶段,文献报道的“新鲜和花香”气味更接近樱桃止咳糖浆,这对于实验室来说不是理想的气味。因此,该团队最初的实验留下了两个剩余的设备选项,即产生冬青和香蕉香气的设备。图 6-1 显示了团队的设备级设计。

FIGURE

图 6-1 器件级设计。冬青生成装置(WGD)将前体化合物输入转换为冬青气味输出。香蕉生成装置(BGD)将前体输入转换为香蕉气味输出。

从这里开始,团队可以继续进行零件级设计工作来指定这些设备,但相反,团队看到了改进系统级设计的机会,即重新设计系统,以便它可以在两种气味之间切换发气设备。系统级设计的修改并不表明初始设计有任何失败或缺陷。不同抽象级别之间的这种类型的移动是设计过程中不可或缺的一部分。

系统级设计,修订

FIGURE

有了两个气味生成装置,团队意识到,除了制造气味更好的细菌的最初目标之外,气味还可以用作细胞功能的报告者。许多合成生物学报告基因都是视觉报告基因——绿色荧光蛋白 (GFP) 是最受欢迎的——但在某些应用中,气味报告基因可能更合适。

研究小组决定使用气味作为细胞生长的报告者,因此细胞在活跃生长和分裂时会发出一种气味,而在达到最大密度时会发出另一种气味。细菌细胞的生长遵循一种特征模式,如图 6-2 所示。

FIGURE

图 6-2 细胞生长曲线。通过分光光度计或其他方法测量的细胞密度作为时间的函数绘制,对应于三个细菌生长阶段(滞后、对数和静止)的区域之间的边界用虚线显示。

当细胞最初被引入新鲜培养基时,它们会处于滞后期,在此期间它们会适应新环境,并且不会积极生长或分裂。在此阶段溶液中的细胞数量不会急剧增加,因此在此期间生长曲线平坦。细胞在这个滞后期准备好生长后,就会进入对数期,也称为指数期,在此期间它们生长和分裂非常快。在 37°C 的实验室中培养的大肠杆菌大约每 30 分钟就会翻倍。当它们分裂时,它们会利用培养基中的营养物质并分泌抑制生长的废物,最终导致它们进入第三个生长阶段,即静止期,此时它们不再生长或分裂。此阶段的细胞仍然存活,当样品稀释到新鲜培养基中时,从滞后期到对数期再到稳定期的整个生长曲线可以再次开始。

在实验室培养大肠杆菌的研究人员在进行实验时通常需要监测这些阶段。例如,当使用大肠杆菌生产精细化学品或药物时,固定相的生产率通常最高。相比之下,蛋白质产品通常与生长相关,因此细胞应尽可能保持在对数生长期,以产生最大量的所需化合物。传统上,研究人员使用分光光度计来确定实验细胞的生长阶段,分光光度计是一种测量穿过样品的光量的仪器。进入样品的光量与离开样品的光量之差称为样品的光密度。当分光光度计设置为 600 nm 波长时,细菌细胞会散射入射光,因此可以将样品的群体测量为“OD600”,即样品在 600 nm 光下的光密度。根据 OD600 随时间的变化,可以创建如图 6-2 所示的生长曲线,其中时间沿 x 轴显示,细胞密度显示在 y 轴上。然而,并非每个实验室都有分光光度计,因此拥有另一种不依赖昂贵仪器(例如气味)的生长期指示器可能非常有用。

考虑到这一点,iGEM团队修改了项目的系统级设计,如图6-3和图6-4所示。

FIGURE

图 6-3 修改后的器件级设计。新的输入,细胞生长,需要修改系统的原始设备级描述。

FIGURE

图 6-4 气味产生装置对细胞生长阶段的反应。显示了该系统的两个气味产生装置。它们对细胞生长的特定阶段敏感并在特定阶段发挥作用。

请注意,现在的输入是细胞生长阶段,而不是前体化合物。该团队仍然需要进一步定义项目的系统级设计,以确定细胞在生长曲线的哪个点应该闻起来像什么。它有两种气味和三个生长阶段。由于对数相和稳定相通常与研究人员最相关,因此研究小组决定这两个相应该具有气味。在最初的实验中,研究小组发现冬青的气味比香蕉的气味弱,因此他们决定最好的解决方案是让细胞在对数期闻起来像冬青,然后在稳定期切换到香蕉气味。这样,更强烈的香蕉气味将在任何剩余的冬青气味之上被检测到。

设备级设计,修订

随着这个新计划的到位,iGEM 团队还需要修改项目的设备级设计。在最初的设计中,这些设备将无气味的前体化合物转化为有气味的化合物。 对于新设计,需要一个额外的步骤。现在,细胞必须产生前体化合物,将其输入气味产生装置中,以产生冬青和香蕉的香气。在这里,对科学文献的回顾再次至关重要。已知冬绿装置的前体是一种称为水杨酸的分子,而香蕉装置的前体已知是异戊醇。在细胞中产生这些前体化合物需要设备,因此更新的设备列表(图6-5)包括水杨酸生成设备和异戊醇生成设备。

FIGURE

图 6-5 重新修订的器件级设计。新的设备级设计包括两个附加设备,水杨酸生成设备(saGD)和异戊醇生成设备(iaGD)。

在这里,您可以看到砷传感器设计与砷检测系统之间的类比,这在生物设计基础章节中进行了广泛讨论。该砷检测系统还包括两个装置:砷检测装置和颜色发生装置。该系统的设计者可以将这两种功能组合到一个设备中,但这样的设计会使重复使用任何部件变得更加困难。这种气味生成系统的设计也遵循类似的原理。 理论上可以制造一个可以将细胞生长阶段转化为两种气味之一的设备,但通过将系统分解为多个设备可以增强设计的灵活性和模块化

您可能会注意到,我们尚未指定哪些设备对细胞生长阶段敏感。可以设计该系统,使得前体仅在特定的生长阶段产生,或者设计该系统,使得总是产生前体,并且只有气味产生装置对细胞的生长阶段敏感。这些设计选择各有优点。如果总是制造前体并且对气味产生装置进行监管,那么气味可能会更快地产生。另一方面,它可能会增加细胞的代谢压力,以始终产生前体,从而可能影响细胞的健康或影响其他功能。显然,目前没有唯一正确或错误的答案。相反,作为生物建造者,需要做出选择。在这种情况下,iGEM 团队选择根据生长阶段调节气味产生装置并组成性地生产前体化合物。

零件级设计

FIGURE

有了这个设备级规范,就可以开始部件级设计阶段。

首先要考虑的事情之一是如何检测细胞的生长期,这是系统的关键输入。幸运的是,生物学提供了一种自然发生的解决方案。存在的细菌启动子仅在细胞生长周期的某些阶段有活性。当细菌 RNA 聚合酶分子结合启动子开始转录时,它作为全酶进行转录,其中聚合酶的核心单元与称为 RNA 聚合酶 sigma 亚基的特殊亚基结合。 σ 亚基有多种“口味”,例如,σ70 亚基与对数期启动子典型的 DNA 序列结合,σ38 亚基与与稳定期启动子相关的 DNA 序列结合。 麻省理工学院 iGEM 团队在文献中搜索了仅在细胞生长稳定期才有活性的启动子序列,并发现了“osmY”启动子。该团队将该启动子插入香蕉气味产生装置中,以便该装置仅在稳定阶段才会激活,正如该团队在项目的系统级设计规范中所定义的那样。

为了构建冬青气味产生装置的对数期表达装置,最直接的方法可能是找到仅在对数期生长期间活跃的启动子。然而,麻省理工学院的 iGEM 团队当年选择了不同的解决方案:它使用了与香蕉气味生成装置相同的 osmY 启动子,并在 osmY 启动子和编码酶的开放阅读框之间添加了另一个装置,以产生香蕉气味。冬青的气味。该团队选择使用的设备称为反相器或非逻辑门。逆变器设备的真值表和基本遗传学将在第 103 页即将推出的侧边栏“黑匣子内部”中进行探讨。但即使没有对其工作原理的机械理解,它也可以成为一个有用的构建工具。 逆变器将反转其输入。如果 osmY 启动子应该“打开”(因为它将处于稳定相),则 osmY 启动子与逆变器相结合,在稳定相中将下游部分“关闭”。如果细胞处于滞后期或对数期,当 osmY 启动子正常关闭时,osmY 启动子加上逆变器装置使下游部分在这些细胞生长阶段“开启”,如图 6-6 所示。

FIGURE

图 6-6 部件级设计。 BGD 上游的 osmY 启动子导致稳定期产生香蕉气味。 osmY 启动子后跟 WGD 上游的反相器(尖端有圆圈的白色三角形),导致对数期冬青气味的产生。

因此,从理论上讲,iGEM 团队可能使用 osmY 启动子在稳定期表达香蕉气味,并使用 osmY 启动子加上反相器在对数期表达冬青气味,这是有道理的。但您可能会想:在滞后阶段不会也会出现冬青气味吗?那有用吗?那是问题吗?在这个滞后阶段是否存在足够的细胞来产生明显的气味?也许 iGEM 团队为冬青气味选择对数期启动子会更好。所有这些问题实际上都归结为:气味调节需要有多精确才能满足系统规格?

在与本章相关的 BioBuilder 实验室活动中,该设计决策是通过在工作台上收集气味和细胞生长数据来直接探索的。

黑匣子内部如果您搜索标准生物部件注册表,您会发现任意数量的逆变器设备。他们中的大多数使用转录抑制来实现非门逻辑。一般来说,这些反相器装置由几个简单的部分组成,首先是阻遏蛋白,例如 lambda 阻遏蛋白、lac 阻遏蛋白或 tet 阻遏蛋白,然后是可被编码的阻遏蛋白识别的阻抑启动子,例如 lambda 噬菌体启动子当使用 lambda 阻遏物时。如果将反相器装置放置在另一个启动子与其开放阅读框 (ORF) 之间,则上游启动子的激活现在会触发阻遏蛋白的表达,阻遏蛋白会识别指导 ORF 转录的下游启动子,从而阻断其表达。因此,系统的表达模式与没有逆变器时的行为完全相反。在我们在这里考虑的系统中,一个反相器被放置在 osmY 启动子和编码冬青气味产生蛋白的 ORF 之间。因此,当细胞处于静止期时,osmY 启动子是活跃的,因此它表达反相器。产生由反相器编码的阻遏蛋白,并且该阻遏蛋白与也包含在反相器中的下游启动子结合。

被抑制的启动子限制了反相器下游 ORF 的转录,ORF 是大肠杆菌系统中产生冬青气味的蛋白质。考虑相反的情况:当细胞处于对数生长期时,osmY启动子不活跃,不产生反相器编码的阻遏蛋白,而直接位于产生冬青气味的ORF上游的启动子是活跃的,因此冬青气味被生产。


FIGURE

图 6-7 逆变器拆箱。两个零件级设计的详细信息。固定相启动子 osmY 是每个装置的第一个组件。在香蕉生成系统中,它位于 BGD 的直接上游,因此在固定相会产生香蕉气味。在冬青气味产生装置中,osmY 启动子后面是一个反相器,它本身由一个阻遏物和一个指导 WGD 的启动子组成。当细胞不处于静止期时,这应该会产生冬青气味。


设计者可以使用许多这样的天然存在的抑制子-抑制性启动子对(如 lambda、lac 或 tet),每个启动子对的行为都略有不同。设计新系统时,选择使用哪种逆变器可能取决于许多因素。有时,可以(或不能)通过外部化学输入进一步调节的逆变器是理想的。例如,一种称为异丙基 β-D-1-硫代半乳糖苷 (IPTG) 的乳糖类似物可用于去抑制 lac 阻遏蛋白,因此,如果用该蛋白构建反相器,则可以通过添加来切换逻辑IPTG 到生长培养基中。有时,逆变器的选择将取决于系统中已内置的其他功能。例如,如果您已经在使用 lac 阻遏蛋白在您正在构建的细胞中执行其他一些遗传任务,那么对于反相器功能来说,它也可能不是一个糟糕的选择。最后,尽管所有逆变器都颠倒了输入/输出关系的逻辑,但它们可能会以不同的动力学(更快/更慢)和效率(稳定状态下 80% 与 95% 相比)来实现这一点,这可能是您设计的相关考虑因素。标准生物部件登记处试图描述不同逆变器在不同条件下的行为特征,但考虑到可以用它们构建多少种可能的系统,在合成生物学家能够使用之前,仍然需要大量的“尝试看看”方法。了解他们选择的逆变器是否适合相关系统。

最终设备和系统级编辑

FIGURE

对于水杨酸生成装置,iGEM 团队从模型植物拟南芥中发现了一条将分支酸(大肠杆菌中天然存在的化合物)转化为水杨酸的途径。同样,对于异戊醇生成装置,研究小组确定了酿酒酵母的一条途径,可将氨基酸亮氨酸转化为异戊醇。气味产生装置作用于水杨酸和异戊醇,将它们转化为气味好的化合物。水杨酸转化为水杨酸甲酯,有薄荷味,异戊醇转化为乙酸异戊酯,有香蕉味。

FIGURE

尽管目前该项目的规范似乎已经完成,但事实上,还有一个最终的设计选择需要指出。当按照本章开头所述集思广益时,iGEM 团队正在考虑要么添加一种好闻的气味,要么去除大肠杆菌中令人讨厌的气味。事实证明,产生香蕉和冬青气味的菌株仍然存在底盘自然臭味的问题。因此,团队决定再进行一项系统级设计更改。具体来说,它决定使用一种缺乏吲哚生产的大肠杆菌菌株。吲哚是造成大肠杆菌难闻气味的主要化合物之一。这种缺乏吲哚的底盘并不是完全没有臭味,也不是适合所有应用的完美底盘,但在这种情况下,使用气味较小的菌株使新的气味更容易检测到。

额外阅读和资源

  • Dixon, J.、Kuldell, N.、Voigt, C. 编辑。生物建筑:使用香蕉香味的细菌教授合成生物学。马萨诸塞州伯灵顿:学术出版社 2011 年;酶学方法;卷。 497:255-71。 [ISBN:978-0-12-385075-1]。
  • Madigan M.T.、Martinko J.M.、Parker J. 编辑。布洛克微生物学,Prentice-Hall,2000:135-62。 [ISBN:978-0321649638]。
  • 网站:细菌生长曲线
  • 网站:生物部件注册处
  • 网站:耶鲁大肠杆菌遗传库存中心:吲哚缺陷菌株

FIGURE

淡香水实验室

该实验室有效介绍了微生物生长和种群动态,以及表达基因所需的蛋白质和 DNA 序列(启动子、ORF、RNA 聚合酶等)。通过对两个竞争设计的分析,还强调了抽象的工程概念。最后,生物技术技能,如无菌技术、标准曲线和分光光度分析也融入到工作中。

设计选择

在我们对 Eau d’coli 项目的讨论中,我们看到 iGEM 团队做出了许多设计选择,包括以下内容:

  • 使用生长阶段作为输入,气味作为输出
  • 利用其他生物体自然产生的生物途径来产生香蕉和冬青的气味
  • 使气味产生装置(而不是前体产生装置)对生长阶段敏感
  • 使用稳定期启动子和遗传反相器,而不是稳定期启动子和对数期启动子

如果我们有时间,我们可以探索每一个设计选择。例如,我们可以用细胞生长阶段以外的环境线索作为输入进行实验。我们可以用颜色而不是气味作为系统的输出进行实验,或者我们可以测试如果前体生成设备对生长阶段而不是气味生成设备做出响应,系统将如何响应。不过,作为起点,我们将研究使用基因逆变器来控制系统。如果您有时间或有兴趣,前面列出的其他想法可能是很好的后续实验。

通过这个实验,我们将研究当香蕉气味发生装置由对数期启动子与稳定期启动子和逆变器控制时产生的生长和气味模式。预计这两种设计都会在原木阶段产生香蕉气味,但其中一种设计可能比另一种具有优势。例如,即使细胞开始进入稳定期,对数期启动子也可能保持轻微活性,而基于反相器的设计也可能在生长曲线的滞后期活跃。哪个会在对数阶段产生最强烈的香蕉气味是任何人的猜测,在合成生物学的计算机辅助设计工具成熟之前,评估这些系统设计的最佳方法是进行实验。希望通过表征每个系统的性能,我们能够将这些发现应用到未来的设计中。

实验问题

这项研究保留了 iGEM Eau d’coli 系统的一些元素,但在重要方面有所不同,有助于将实验问题集中在启动子和反相器的使用上。这里的实验使用了 iGEM 团队所做的相同底盘(缺乏吲哚)和相同的香蕉气味生成装置,包括该团队的 osmY 启动子。不过,与 iGEM 系统的一些重要区别包括:

  • 无冬青气味:我们正在研究不同启动子选择的相对有效性,因此不同气味之间的竞争不相关,并且香蕉气味更强烈,因此将其用于我们的测试是最有意义的。
  • 无前体生成装置:我们将前体化合物直接添加到我们的生长培养物中,这将使我们能够通过最小化前体生成装置引入的可能的变异性来专注于关于启动子选择的问题。

我们为本实验提供了四种不同的大肠杆菌菌株,如表 6-1 所示。


表 6-1 Eau That Smell 菌株描述

菌株#   质粒名称或注册表#   质粒描述
1-1 BBa_J45250 σ38 控制的启动子指导 ATF1、AmpR 的转录
1-2 BBa_J45990 σ38 控制的启动子加上 4 部分 tetR 反相器指导 ATF1、AmpR 的转录
1-3 BBa_J45200 σ70 控制的启动子指导 ATF1、AmpR 的转录
1-4 pUC18 AmpR

所有菌株均构建于氯霉素抗性、吲哚缺陷菌株 NB370(又名耶鲁配送中心的 YYC912)中,基因型为:F- Δ(argF-lac)169 λ- poxB15::lacZ::CmR IN( rrnD-rrnE)1 rph-1 tnaA5


菌株 1-1 作为香蕉气味的阳性对照,与 2006 年 iGEM 团队开发的在稳定期产生香蕉气味的菌株相同。 阳性对照应该是我们期望闻到香蕉味的菌株,与我们的具体实验问题无关。在本例中,我们使用的是一种在稳定期闻起来像香蕉的大肠杆菌菌株,并使用稳定期启动子。如果这种菌株有气味,我们可以确信我们的试剂和方案都正常运行,从而使我们能够消除不属于我们实验问题的可能变量。

菌株 1-4 作为阴性对照,因为它不携带产生香蕉气味所需的基因,因此预计不会闻起来像香蕉。在本实验中,我们的阴性对照菌株与用于制备其他菌株的底盘相同,但不包含香蕉气味产生装置。例如,我们可以使用该菌株来确保,简单地将前体化合物添加到生长的细胞中不会导致实验菌株产生香蕉气味。

阴性对照菌株是香蕉气味的阴性对照,因为预计它闻起来不像香蕉,但也可以将其视为细胞生长的阳性对照,因为预计它会生长。因为它缺乏香蕉气味产生装置,所以该菌株可能会被用来问:“含有香蕉气味产生装置的菌株会改变细胞生长速度吗?”这不是我们的主要实验问题,但对于考虑下一阶段的设计优化可能很重要。

最后两个菌株是实验菌株,它们代表我们要比较的两种设计:

  • 定相启动器+逆变器+香蕉味发生装置(菌株1-2)
  • 对数期启动子+香蕉气味发生装置(菌株1-3)

通过比较这两种看似等效的设计,我们可以提出实验问题:对数相启动子设计或固定相启动子加反相器设计是否能提供更好的对数相特定香蕉气味?

入门

您将在液体培养基中培养这四种菌株。在生长过程中的不同点,您将使用分光光度计测量 OD600 或使用 McFarland 浊度标度来测量细胞密度。通过绘制细胞密度随时间变化的图表,您将能够确定样品的生长阶段。对于每个细胞密度测量,您还将闻样品,记录香蕉气味相对于一组标准的强度,这些标准范围从无香蕉气味(我们称之为“气味标准 0”)到强烈的香蕉气味(我们称之为“气味标准 0”) “气味标准7级。”标准品是使用不同浓度的香蕉提取物制备的,其化学名称为乙酸异戊酯。香蕉标准品的范围旨在涵盖您将从细菌培养物中检测到的预期气味。通过将培养物的气味与特定标准相匹配,您可以了解所产生的乙酸异戊酯的浓度。这些气味测量将使您能够确定哪种启动子构建体可以更好地控制作为生长阶段函数的香蕉气味。

前期准备

准备香蕉气味标准品。 香蕉提取物的化学名称为乙酸异戊酯。您可以按照表 6-2 中所示制备气味标准品,使用每个标准品的 50 毫升锥形管将提取物添加到水中。您可以使用蒸馏水或瓶装水来制作标准品,并且可以使用试管侧面的标记来估算最终的 25 毫升体积。样品会随着时间的推移而变质,但在室温下可保存大约一个月。


表 6-2 如何准备气味标准品

标准   浓度 (%)   H_2 O 中的提取物(最终体积 25 ml)
0 0 0
1 0.1 25微升
2 0.25 62.5 微升
3 0.5 125 微升
4 1 250 微升
5 2.5 625 微升
6 5 1.25 毫升

香蕉提取物是一种油,不溶于水。 然而,浓度较低,只要在闻味前摇匀标准品,悬浮液就足够了。

准备浊度标准品。 表 6-3 中列出的 MacFarland 浊度标准品为您在无法使用分光光度计的情况下运行实验方案的情况提供了另一种测量细胞密度的方法。该方法使用1% BaCl_2 在1% H_2 SO_4 中的悬浮液,其在视觉上与在液体培养物中生长的大肠杆菌密度的悬浮液类似。这些浊度标准品可以在实验室之前准备好。浊度标准品可以制成任意体积,但应悬浮并等分到带盖的小玻璃管中。试管的尺寸和放入其中的标准品的体积并不重要。


表 6-3 麦克法兰浊度标准

浊度标度   OD600   1% BaCl_2 /1% H_2 SO_4 (mL)
0 0 0.0/10
1 0.1 1.05/9.95
2 0.2 0.1/9.9
3 0.4 0.2/9.8
4 0.5 0.3/9.7
5 0.65 0.4/9.6
6 0.85 0.5/9.5
7 1.0 0.6/9.4

要测量细菌样品的浊度,您可以将少量细菌样品转移到与浊度标准所用尺寸相同的玻璃管中。通过识别哪个浊度标准相对模糊放置在标准管后面的深色标记来确定浊度。

经验法则:使用 1 OD600 ~ 1 x 10^9 cells/ml 将浊度测量值转换为细胞密度。

实验前程序

第 1 天:将菌株从刺中划到平板上。 本实验的细菌菌株已经携带待测试的质粒 DNA 编码遗传电路。这些质粒还赋予抗生素氨苄青霉素抗性。细菌将以“刺”或“斜”的形式到达,即在倾斜介质上装有少量细菌的试管。

  1. 使用无菌牙签或接种环将细菌划线到培养皿上。从牙签或环上的刺中收集少量细菌,然后将细胞转移到含有 Luria Broth (LB) 琼脂和 100 μg/ml 氨苄青霉素的培养皿中。
  2. 对剩余的刺穿样品重复上述步骤,将每个样品划线到不同的培养皿上。
  3. 将这些培养皿培养基面朝上放入 37°C 培养箱中过夜。如果没有培养箱,室温培养两晚通常会产生相同的结果。

第 2 天:细菌菌株的液体培养过夜。 为了为本实验室的实验部分制作起始培养物,每个菌株的 3 ml 液体培养物在 LB+氨苄青霉素中于 37°C 培养过夜。试管中氨苄西林的最终浓度应为 100 μg/ml。 3 ml 发酵剂培养物足以完成后续方案。使用无菌接种环或牙签或移液管尖端,将细菌菌落从其中一个培养皿转移到含有 3 ml LB 和 3 μl 氨苄青霉素的大无菌培养管中。对于每个学生或学生团队必须培养的每种菌株来说,这个体积绰绰有余:

  1. 对您要接种的每种菌株重复上述步骤。
  2. 将培养管放入滚轮中,37°C 培养箱过夜。确保彼此平衡管子,以最大程度地减少滚轮上的压力。
  3. 培养物在冰箱中保存至少一周保持稳定和活性。如果你以这种方式储存它们,预计它们在你进行亚培养的那天需要更长的时间才能开始生长;预计大约需要 3 小时,而不是 1.5 小时。

如果没有可用的滚轮或培养箱,您可以将每种起始培养物的体积增加至 10 ml LB+amp,并在室温下使用搅拌棒在小锥形瓶中培养样品。它们应该以这种方式生长至少 24 小时才能达到饱和。

实验室协议

这是该协议的较短版本,强调数据分析而不是数据收集。 BioBuilder 网站还提供了更长版本的协议,强调生长曲线数据收集。在这里,在任何数据收集前一天建立大量细菌培养物。第二天即可准备好样品,以便在单个实验室周期内收集数据。

该协议假设每个人都会在三个时间点测量所有四种细菌培养物,并且将共享大量细菌培养物。假设每组只需要一个时间点,75 毫升培养物应足以容纳最多 12 个实验室组。

在收集数据的前一天,执行以下操作:

  1. 使用以下材料准备生长培养基:
  • 300 毫升 LB
  • 300 μl 氨苄西林(终浓度 100 ug/ml)
  • 250 μl 异戊醇
  1. 通过旋转瓶子来混合该储备生长溶液。
  2. 如果您将使用分光光度计收集数据,请留出 2 ml 该混合物作为分光光度计的空白。将这等份培养基存放在冰箱中。
  3. 将 75 ml 生长培养基移至 125 ml 无菌锥形瓶中,然后添加来自过夜起始培养物之一的 2 ml 细菌,例如菌株 1-1。
  4. 对于每个过夜培养物,重复将 2 ml 细菌添加到 Erlen meyer 烧瓶中的 75 ml 生长培养基中。
  5. 给四个 50 ml 锥形管贴上标签:每个管贴上 T(LAG) 标签并注明菌株(例如 1-1)。
  6. 从培养物 1-1 中取出 25 ml,放入适当的锥形管中并储存在冰箱中。这将作为您将在数据收集日阅读的滞后期样本。
  7. 对每种培养物重复上一步。
  8. 用箔纸盖住锥形瓶,并在搅拌板上轻轻搅拌 6-8 小时。这是在室温下完成的。记录每种文化开始旋转的时间。请注意,您还可以在 37°C 下培养样品,在这种情况下,到达下一个生长期所需的时间会更短,约为 4-5 小时。
  9. 给四个 50 ml 锥形管贴上标签:每个管贴上 T(LOG) 标签并标明细菌菌株(例如 1-1)。记录自培养物开始搅拌以来的分钟数。
  10. 从培养物 1-1 中取出 25 ml,放入锥形管中并储存在冰箱中。这将作为您将在数据收集日阅读的日志阶段示例。
  11. 对每种培养物重复上一步。
  12. 让剩余的细菌培养物在室温或 37°C 下在搅拌板上孵育过夜(如果您一直以这种方式培养它们)。这些将作为您将在数据收集日读取的固定相样本。

此时,您可以将样品在冰箱中保存一到两周。

数据收集:使用分光光度计测量浊度

  1. 如果细菌已沉淀在 50 ml 锥形管的底部,则涡旋或翻转每个管。
  2. 从每个滞后样品中取出 2 ml,读取每个样品的密度。如果您正在收集所有四个滞后期样品的数据,您现在应该有五个小试管,其中四个装有细菌样品,一个用于空白分光光度计。
  3. 准备分光光度计,将其设置为 OD600。
  4. 读取空白并将%吸光度调整为零。
  5. 读取细菌样品的浊度并记录吸光度。
  6. 计算细菌数量:1 OD600 单位 = 1 x 10^9 细菌。
  7. 对对数期和稳定期细菌样本重复此数据收集。

数据收集:使用浊度标准的浊度

  1. 如果细菌聚集在 50 ml 锥形管的底部,则涡旋或翻转每个管。
  2. 从每个滞后样品中取出 2 ml,读取每个样品的密度。如果您正在收集所有四个滞后期样本的数据,那么您现在应该将样本放在四个小试管中。这些管应该与装有浊度标准的管相匹配。
  3. 将样品和浊度标准品放在试管架上,以便您可以从侧面查看液体样品。在空白索引卡或纸张上使用记号笔画两条粗黑线。这些线应该在标准的高度范围内。
  4. 将带有平行黑线的白卡放在管后面。
  5. 通过寻找与背景卡上的黑线最相似的标准品,将细菌培养物与标准品进行比较。
  6. 使用表 6-3 将浊度标准品转换为 OD600 值,然后使用 1 OD600 单位 = ~ 1 x 10^9 cells/ml 的简单转换系数计算细胞密度。
  7. 使用对数和固定相细菌样本重复此数据收集。

资料收集:香蕉味

  1. 如果细菌聚集在 50 ml 锥形管的底部,则涡旋或翻转每个管。将管子加热至室温或 37° 将使气味更容易被察觉。
  2. 闻 50 ml 锥形管是否有香蕉气味,并将该气味与香蕉提取物标准品进行比较。嗅探前一定要摇匀标准品。记录您的数据。
  3. 对对数相样本和固定相样本重复上述步骤。

当管子打开时,香蕉气味会消散。尽可能保持管子关闭,如果需要,摇动它们以恢复气味。

FIGURE

FIGURE

Read More

2024-04-09
BioBuilder 实验室简介

第5章 BioBuilder 实验室简介

生物工程与合成生物学工具包

FIGURE

工程师的“设计-构建-测试”过程类似于“假设-测试-分析”的科学方法。尽管这些过程通常被表现为线性工作,从工程师的“设计”和科学家的“假设”开始,但实际上它们是可以在周期中的任何点开始的迭代工作。因此,BioBuilder 实践活动有几个进入设计-构建-测试范式的切入点,旨在产生更科学的假设、测试和分析。通过任何 BioBuilder 活动,您可以在评估合理设计的生命系统时探索科学和工程方法之间的联系。也许您想要追求从我们提供的起始材料开始的科学探索选项,或者您可能想要设计比我们提供的系统更可靠或满足新需求的新系统。无论哪种方式,BioBuilder 实验室中科学和工程方法的简短预览旨在将这些努力纳入每个领域的实践中。

FIGURE

传统的解释通过描述设计阶段来接近工程,通过描述假设来接近科学,所以让我们花点时间考虑一下这些出发点是如何运作的。当有足够的基础知识从头开始解决问题时,设计优先的工程就成为可能。大多数人在设想工程过程时都会想到这种正向工程方法。在许多方面,这是最合乎逻辑和最令人满意的开始方式,因为这意味着已经对系统有很多了解,因此可以对新设计的系统的行为进行建模和模拟。计算机辅助设计在这方面已经改变了游戏规则。例如,波音 777 是第一架完全在计算机上成功设计的飞机。这架飞机由 238 个工程师团队组成,每个团队都有自己的专业领域和职责。通过分工并将复杂的挑战抽象为可管理的任务,飞机设计成功。当原型最终构建并测试时,它不仅满足了所有初始系统要求,而且性能甚至比预期更好。如果没有对物理、建筑材料和大气条件的深刻科学理解,这种设计优先的成功就不可能实现。

FIGURE

不幸的是,我们距离理解生物学如何在如此详细的层面上发挥作用还有很长的路要走。目前还不可能告诉计算机“让我一个细胞能够检测砷并在水平不安全时变红”,并让它吐出在生命系统中执行此行为所需的 ACTG 字符串。尽管如此,仅仅因为我们不知道一切是如何运作的,并不意味着合成生物学家不应该尝试进行正向工程。例如,我们确实对 DNA 如何组织成功能单元了解很多。实际上,这只是意味着合成生物学家在对生物系统进行正向工程时经常会构建特定设计的许多版本。

逆向工程是在测试阶段进入设计-构建-测试周期的一个例子。为了复制或修改设计的目的,可以将预先存在的对象分解成组件。我们要感谢逆向工程带来的一切,从山寨设计师手提包到第一次世界大战期间首次用于运输燃料的标志性塑料罐。塑料罐是在德国发明的,被认为比以前的设计有了巨大的改进。英国人在战场上发现废弃的罐头并对他们进行逆向工程后,“重新发明”了这些容器以供自己使用。目前,合成生物学在很大程度上依赖于逆向工程。许多设计的灵感(即使不是完全采用)也来自自然界中发现的复杂系统。为了使用和修改从生物体中取出的部件或设备,合成生物学家必须首先确定在另一种细胞类型中重建它所需的最小成分,然后需要进行广泛的测试以确认其行为符合预期。

FIGURE

设计-构建-测试周期中最不直观的切入点是构建。想象一下,掷骰子来决定在你正在建造的房子中放置下一块砖的位置,然后希望你最终得到的结构不仅可以工作,而且可以在下一轮周期中重建和重新设计。这似乎不是一种非常聪明的设计方式。但有趣的是,这正是进化构建生命的方式。新物种从 DNA 序列的随机改组中出现,成功的版本进入下一轮繁殖。大自然找到了一种将“构建-测试”步骤结合在一起的方法。

FIGURE

在合成生物学中,构建过程本身可以相对简单,类似于组装宜家家具,也可以更加不可预测,例如尝试不熟悉的食谱或在没有食谱的情况下烹饪!构建设计和复制设计的效率在很大程度上取决于说明的详细程度以及起始材料的质量。当起始材料存在变化或对特定系统了解较少时,构建阶段往往更加不可靠或不可预测。

就像良好的科学实验一样,工程的成功往往会带来更多的问题和挑战。工程师可能想知道他们的新系统有多强大。原型在重复使用后还能继续发挥作用吗?它能在多种条件下发挥作用吗?当原型不起作用时,分析可能会更加复杂。原始设计的哪些组件有效?故障是否发生在零件、设备或系统层面?深思熟虑的数据分析是良好科学和良好工程的基础。初步结果为下一轮设计-构建-测试或假设-测试-分析提供信息。循环以更好的信息重新开始,并重复直到工作完成。 BioBuilder 的研究旨在介绍工程生物学的复杂性和可能性。

Read More

2023-11-27
Deploy Magento


Debian 12

In [ ]:
sudo apt install docker.io
In [ ]:
sudo usermod -aG docker saintway
In [ ]:
sudo service docker start
In [ ]:
sudo service docker status
In [ ]:
docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
Digest: sha256:1ee299bf9eb8d2218fcb4fad666a090c92caef48ce524e6edce35f2e2d55170d
Status: Image is up to date for mysql:latest
docker.io/library/mysql:latest
In [ ]:
docker run --name mobaichi -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=mobaichi -d mysql:8.0-debian
CREATE DATABASE mobaichi;
CREATE USER 'ekp'@'172.17.0.1' IDENTIFIED BY 'ekp';
GRANT ALL PRIVILEGES ON mobaichi.* TO 'ekp'@'172.17.0.1';
FLUSH PRIVILEGES;
EXIT;

Debian 11

In [ ]:
sudo apt install wget
In [ ]:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
In [ ]:
sudo apt install lsb-release
In [ ]:
sudo dpkg -i ~/mysql-apt-config_0.8.26-1_all.deb
In [ ]:
sudo apt update
In [ ]:
sudo apt install mysql-server
In [ ]:
import random
import string
''.join(
    random.choices(string.ascii_letters + string.digits, k=8)
)

# MySQL
# KQaJ6rYR
CREATE DATABASE mobaichi;
CREATE USER 'ekp'@'localhost' IDENTIFIED BY 'ekp';
GRANT ALL PRIVILEGES ON mobaichi.* TO 'ekp'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Ubuntu 22

In [ ]:
sudo apt install mysql-server
In [ ]:
mysql --version
In [ ]:
sudo netstat -tunpl | grep mysql
In [ ]:
sudo service mysql status
CREATE DATABASE mobaichi;
CREATE USER 'ekp'@'localhost' IDENTIFIED BY 'ekp';
GRANT ALL PRIVILEGES ON mobaichi.* TO 'ekp'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Debian 11

In [ ]:
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
In [ ]:
sudo apt update
In [ ]:
sudo apt install php8.2
In [ ]:
php -v
PHP 8.2.12 (cli) (built: Oct 27 2023 13:01:32) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.12, Copyright (c), by Zend Technologies
In [ ]:
php --ini
Configuration File (php.ini) Path: /etc/php/8.2/cli
Loaded Configuration File:         /etc/php/8.2/cli/php.ini
Scan for additional .ini files in: /etc/php/8.2/cli/conf.d
Additional .ini files parsed:      /etc/php/8.2/cli/conf.d/10-mysqlnd.ini,
/etc/php/8.2/cli/conf.d/10-opcache.ini,
/etc/php/8.2/cli/conf.d/10-pdo.ini,
/etc/php/8.2/cli/conf.d/15-xml.ini,
/etc/php/8.2/cli/conf.d/20-bcmath.ini,
/etc/php/8.2/cli/conf.d/20-calendar.ini,
/etc/php/8.2/cli/conf.d/20-ctype.ini,
/etc/php/8.2/cli/conf.d/20-curl.ini,
/etc/php/8.2/cli/conf.d/20-dom.ini,
/etc/php/8.2/cli/conf.d/20-exif.ini,
/etc/php/8.2/cli/conf.d/20-ffi.ini,
/etc/php/8.2/cli/conf.d/20-fileinfo.ini,
/etc/php/8.2/cli/conf.d/20-ftp.ini,
/etc/php/8.2/cli/conf.d/20-gd.ini,
/etc/php/8.2/cli/conf.d/20-gettext.ini,
/etc/php/8.2/cli/conf.d/20-iconv.ini,
/etc/php/8.2/cli/conf.d/20-intl.ini,
/etc/php/8.2/cli/conf.d/20-mbstring.ini,
/etc/php/8.2/cli/conf.d/20-mysqli.ini,
/etc/php/8.2/cli/conf.d/20-pdo_mysql.ini,
/etc/php/8.2/cli/conf.d/20-phar.ini,
/etc/php/8.2/cli/conf.d/20-posix.ini,
/etc/php/8.2/cli/conf.d/20-readline.ini,
/etc/php/8.2/cli/conf.d/20-shmop.ini,
/etc/php/8.2/cli/conf.d/20-simplexml.ini,
/etc/php/8.2/cli/conf.d/20-soap.ini,
/etc/php/8.2/cli/conf.d/20-sockets.ini,
/etc/php/8.2/cli/conf.d/20-sysvmsg.ini,
/etc/php/8.2/cli/conf.d/20-sysvsem.ini,
/etc/php/8.2/cli/conf.d/20-sysvshm.ini,
/etc/php/8.2/cli/conf.d/20-tokenizer.ini,
/etc/php/8.2/cli/conf.d/20-xmlreader.ini,
/etc/php/8.2/cli/conf.d/20-xmlwriter.ini,
/etc/php/8.2/cli/conf.d/20-xsl.ini,
/etc/php/8.2/cli/conf.d/20-zip.ini

In [ ]:
php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
random
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

In [ ]:
sudo apt install php8.2-bcmath
sudo apt install php8.2-curl
sudo apt install php8.2-dom
sudo apt install php8.2-gd
sudo apt install php8.2-intl
sudo apt install php8.2-mysql
sudo apt install php8.2-simplexml
sudo apt install php8.2-soap
sudo apt install php8.2-xsl
sudo apt install php8.2-zip
In [ ]:
sudo apt install php-mbstring
In [ ]:
composer global require psy/psysh
In [ ]:
~/.config/composer/vendor/bin/psysh

zmq

In [ ]:
git clone https://github.com/zeromq/php-zmq.git
In [ ]:
cd ~/php-zmq && phpize && ./configure
cd ~/php-zmq && make
cd ~/php-zmq && sudo make install

jupyter-php-kernel

In [ ]:
git clone https://github.com/amemoba/jupyter-php-kernel.git ~/jupyter-php-kernel
In [ ]:
cd ~/jupyter-php-kernel && composer install
In [ ]:
git clone https://github.com/amemoba/jupyter-php-install.git ~/jupyter-php-install
In [ ]:
cd ~/jupyter-php-install && composer install
In [ ]:
cd ~/jupyter-php-install && php src/EntryPoint/main.php -v install
In [ ]:
sudo apt install docker.io
In [ ]:
sudo usermod -aG docker saintway
In [ ]:
docker network create elastic
0c4dc0164ede8ec461c44d0e10dc522d1fea16de38298432c3ab1892c026869b
In [ ]:
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.10.2
In [ ]:
docker run --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:8.10.2
In [ ]:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.13
7.17.13: Pulling from elasticsearch/elasticsearch

5e7b73a4: Pulling fs layer 
133c4766: Pulling fs layer 
ff004a8c: Pulling fs layer 
2bc75041: Pulling fs layer 
4cd7d8ab: Pulling fs layer 
59d44b65: Pulling fs layer 
e327c328: Pulling fs layer 
54e541f7: Pulling fs layer 
c4728702: Pulling fs layer 
Digest: sha256:67b2d720621da7092ef18fe5ccca2eeb7b863b55d4bcee30108224520aebd92c
Status: Downloaded newer image for docker.elastic.co/elasticsearch/elasticsearch:7.17.13
docker.elastic.co/elasticsearch/elasticsearch:7.17.13
In [ ]:
docker run --name elasticsearch --net elastic -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.13
In [ ]:
curl -X GET http://localhost:9200/
In [ ]:
docker start elasticsearch
docker logs elasticsearch
In [ ]:
sudo apt install apache2
In [ ]:
sudo apt install composer
In [ ]:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition ~/magento2
In [ ]:
git clone https://github.com/magento/magento2 ~/magento2
In [ ]:
cd ~/magento2 && git branch
In [ ]:
cd ~/magento2 && git fetch --tags
remote: Enumerating objects: 1173, done.        
remote: Counting objects: 100% (1173/1173), done.        
remote: Compressing objects: 100% (450/450), done.        
remote: Total 1173 (delta 661), reused 1065 (delta 638), pack-reused 0        
Receiving objects: 100% (1173/1173), 388.05 KiB | 3.66 MiB/s, done.
Resolving deltas: 100% (661/661), completed with 46 local objects.
From https://github.com/magento/magento2
 * [new tag]                 2.4.4-p6    -> 2.4.4-p6
 * [new tag]                 2.4.5-p5    -> 2.4.5-p5
 * [new tag]                 2.4.6-p3    -> 2.4.6-p3
 * [new tag]                 2.4.7-beta2 -> 2.4.7-beta2
In [ ]:
cd ~/magento2 && git checkout 2.4.6-p3
Previous HEAD position was 37861a4025e Magento Release 2.4.6-p2
HEAD is now at 6cc0d28cf66 Magento Release 2.4.6-p3
In [ ]:
cd ~/magento2 && composer install
In [ ]:
import random
import string
''.join(
    random.choices(string.ascii_lowercase + string.digits, k=7)
)

# --admin-firstname=i \
# --admin-lastname=sei \
# --admin-email=sei@ekp.co.jp \
# --admin-user=ekp \
# --admin-password=5b0gs9x \
In [ ]:
cd ~/magento2/ && yes | bin/magento setup:uninstall
In [ ]:
cd ~/magento2/ && bin/magento setup:install \
--base-url=http://jhub.name:8890 \
--db-host=127.0.0.1 \
--db-name=mobaichi \
--db-user=ekp \
--db-password=ekp \
--admin-firstname=i \
--admin-lastname=sei \
--admin-email=sei@ekp.co.jp \
--admin-user=ekp \
--admin-password=5b0gs9x \
--language=ja_JP \
--currency=JPY \
--timezone=Asia/Tokyo \
--use-rewrites=1 \
--search-engine=elasticsearch7 \
--elasticsearch-host=localhost \
--elasticsearch-port=9200 \
--elasticsearch-index-prefix=mobaichi \
--elasticsearch-timeout=15
Starting Magento installation:
File permissions check...
[Progress: 1 / 851]
Required extensions check...
[Progress: 2 / 851]
Enabling Maintenance Mode...
[Progress: 3 / 851]
Installing deployment configuration...
[Progress: 4 / 851]
Installing database schema:
Schema creation/updates:
Module 'Magento_AdminAnalytics':
[Progress: 5 / 851]
Module 'Magento_Store':
[Progress: 6 / 851]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 7 / 851]
Module 'Magento_Directory':
[Progress: 8 / 851]
Module 'Magento_Amqp':
[Progress: 9 / 851]
Module 'Magento_Config':
[Progress: 10 / 851]
Module 'Magento_Theme':
[Progress: 11 / 851]
Module 'Magento_Backend':
[Progress: 12 / 851]
Module 'Magento_Variable':
[Progress: 13 / 851]
Module 'Magento_Search':
[Progress: 14 / 851]
Module 'Magento_Backup':
[Progress: 15 / 851]
Module 'Magento_Eav':
[Progress: 16 / 851]
Module 'Magento_Customer':
[Progress: 17 / 851]
Module 'Magento_BundleImportExport':
[Progress: 18 / 851]
Module 'Magento_CacheInvalidate':
[Progress: 19 / 851]
Module 'Magento_AdminNotification':
[Progress: 20 / 851]
Module 'Magento_Indexer':
[Progress: 21 / 851]
Module 'Magento_Cms':
[Progress: 22 / 851]
Module 'Magento_Security':
[Progress: 23 / 851]
Module 'Magento_Authorization':
[Progress: 24 / 851]
Module 'Magento_GraphQl':
[Progress: 25 / 851]
Module 'Magento_StoreGraphQl':
[Progress: 26 / 851]
Module 'Magento_CatalogImportExport':
[Progress: 27 / 851]
Module 'Magento_Catalog':
[Progress: 28 / 851]
Module 'Magento_CatalogInventory':
[Progress: 29 / 851]
Module 'Magento_Rule':
[Progress: 30 / 851]
Module 'Magento_Payment':
[Progress: 31 / 851]
Module 'Magento_CatalogRuleGraphQl':
[Progress: 32 / 851]
Module 'Magento_CatalogRule':
[Progress: 33 / 851]
Module 'Magento_CatalogUrlRewrite':
[Progress: 34 / 851]
Module 'Magento_EavGraphQl':
[Progress: 35 / 851]
Module 'Magento_Widget':
[Progress: 36 / 851]
Module 'Magento_Quote':
[Progress: 37 / 851]
Module 'Magento_SalesSequence':
[Progress: 38 / 851]
Module 'Magento_CheckoutAgreementsGraphQl':
[Progress: 39 / 851]
Module 'Magento_Bundle':
[Progress: 40 / 851]
Module 'Magento_CmsGraphQl':
[Progress: 41 / 851]
Module 'Magento_CmsUrlRewrite':
[Progress: 42 / 851]
Module 'Magento_CmsUrlRewriteGraphQl':
[Progress: 43 / 851]
Module 'Magento_CatalogGraphQl':
[Progress: 44 / 851]
Module 'Magento_User':
[Progress: 45 / 851]
Module 'Magento_Msrp':
[Progress: 46 / 851]
Module 'Magento_Sales':
[Progress: 47 / 851]
Module 'Magento_QuoteGraphQl':
[Progress: 48 / 851]
Module 'Magento_Checkout':
[Progress: 49 / 851]
Module 'Magento_Contact':
[Progress: 50 / 851]
Module 'Magento_Cookie':
[Progress: 51 / 851]
Module 'Magento_Cron':
[Progress: 52 / 851]
Module 'Magento_Csp':
[Progress: 53 / 851]
Module 'Magento_CurrencySymbol':
[Progress: 54 / 851]
Module 'Magento_CatalogCustomerGraphQl':
[Progress: 55 / 851]
Module 'Magento_Integration':
[Progress: 56 / 851]
Module 'Magento_Downloadable':
[Progress: 57 / 851]
Module 'Magento_CustomerGraphQl':
[Progress: 58 / 851]
Module 'Magento_CustomerImportExport':
[Progress: 59 / 851]
Module 'Magento_Deploy':
[Progress: 60 / 851]
Module 'Magento_Developer':
[Progress: 61 / 851]
Module 'Magento_Dhl':
[Progress: 62 / 851]
Module 'Magento_AsynchronousOperations':
[Progress: 63 / 851]
Module 'Magento_DirectoryGraphQl':
[Progress: 64 / 851]
Module 'Magento_DownloadableGraphQl':
[Progress: 65 / 851]
Module 'Magento_CustomerDownloadableGraphQl':
[Progress: 66 / 851]
Module 'Magento_ImportExport':
[Progress: 67 / 851]
Module 'Magento_Captcha':
[Progress: 68 / 851]
Module 'Magento_BundleGraphQl':
[Progress: 69 / 851]
Module 'Magento_CatalogSearch':
[Progress: 70 / 851]
Module 'Magento_AdvancedSearch':
[Progress: 71 / 851]
Module 'Magento_Email':
[Progress: 72 / 851]
Module 'Magento_EncryptionKey':
[Progress: 73 / 851]
Module 'Magento_Fedex':
[Progress: 74 / 851]
Module 'Magento_GiftMessage':
[Progress: 75 / 851]
Module 'Magento_GiftMessageGraphQl':
[Progress: 76 / 851]
Module 'Magento_GoogleAdwords':
[Progress: 77 / 851]
Module 'Magento_GoogleAnalytics':
[Progress: 78 / 851]
Module 'Magento_GoogleGtag':
[Progress: 79 / 851]
Module 'Magento_Ui':
[Progress: 80 / 851]
Module 'Magento_CatalogCmsGraphQl':
[Progress: 81 / 851]
Module 'Magento_PageCache':
[Progress: 82 / 851]
Module 'Magento_GroupedProduct':
[Progress: 83 / 851]
Module 'Magento_GroupedImportExport':
[Progress: 84 / 851]
Module 'Magento_GroupedCatalogInventory':
[Progress: 85 / 851]
Module 'Magento_GroupedProductGraphQl':
[Progress: 86 / 851]
Module 'Magento_DownloadableImportExport':
[Progress: 87 / 851]
Module 'Magento_ConfigurableProduct':
[Progress: 88 / 851]
Module 'Magento_InstantPurchase':
[Progress: 89 / 851]
Module 'Magento_Analytics':
[Progress: 90 / 851]
Module 'Magento_JwtFrameworkAdapter':
[Progress: 91 / 851]
Module 'Magento_JwtUserToken':
[Progress: 92 / 851]
Module 'Magento_LayeredNavigation':
[Progress: 93 / 851]
Module 'Magento_LoginAsCustomer':
[Progress: 94 / 851]
Module 'Magento_LoginAsCustomerAdminUi':
[Progress: 95 / 851]
Module 'Magento_LoginAsCustomerApi':
[Progress: 96 / 851]
Module 'Magento_LoginAsCustomerAssistance':
[Progress: 97 / 851]
Module 'Magento_LoginAsCustomerFrontendUi':
[Progress: 98 / 851]
Module 'Magento_LoginAsCustomerGraphQl':
[Progress: 99 / 851]
Module 'Magento_LoginAsCustomerLog':
[Progress: 100 / 851]
Module 'Magento_LoginAsCustomerPageCache':
[Progress: 101 / 851]
Module 'Magento_LoginAsCustomerQuote':
[Progress: 102 / 851]
Module 'Magento_LoginAsCustomerSales':
[Progress: 103 / 851]
Module 'Magento_Marketplace':
[Progress: 104 / 851]
Module 'Magento_MediaContent':
[Progress: 105 / 851]
Module 'Magento_MediaContentApi':
[Progress: 106 / 851]
Module 'Magento_MediaContentCatalog':
[Progress: 107 / 851]
Module 'Magento_MediaContentCms':
[Progress: 108 / 851]
Module 'Magento_MediaContentSynchronization':
[Progress: 109 / 851]
Module 'Magento_MediaContentSynchronizationApi':
[Progress: 110 / 851]
Module 'Magento_MediaContentSynchronizationCatalog':
[Progress: 111 / 851]
Module 'Magento_MediaContentSynchronizationCms':
[Progress: 112 / 851]
Module 'Magento_MediaGallery':
[Progress: 113 / 851]
Module 'Magento_MediaGalleryApi':
[Progress: 114 / 851]
Module 'Magento_MediaGalleryCatalog':
[Progress: 115 / 851]
Module 'Magento_MediaGalleryCatalogIntegration':
[Progress: 116 / 851]
Module 'Magento_MediaGalleryCatalogUi':
[Progress: 117 / 851]
Module 'Magento_MediaGalleryCmsUi':
[Progress: 118 / 851]
Module 'Magento_MediaGalleryIntegration':
[Progress: 119 / 851]
Module 'Magento_MediaGalleryMetadata':
[Progress: 120 / 851]
Module 'Magento_MediaGalleryMetadataApi':
[Progress: 121 / 851]
Module 'Magento_MediaGalleryRenditions':
[Progress: 122 / 851]
Module 'Magento_MediaGalleryRenditionsApi':
[Progress: 123 / 851]
Module 'Magento_MediaGallerySynchronization':
[Progress: 124 / 851]
Module 'Magento_MediaGallerySynchronizationApi':
[Progress: 125 / 851]
Module 'Magento_MediaGallerySynchronizationMetadata':
[Progress: 126 / 851]
Module 'Magento_MediaGalleryUi':
[Progress: 127 / 851]
Module 'Magento_MediaGalleryUiApi':
[Progress: 128 / 851]
Module 'Magento_Robots':
[Progress: 129 / 851]
Module 'Magento_MessageQueue':
[Progress: 130 / 851]
Module 'Magento_CatalogRuleConfigurable':
[Progress: 131 / 851]
Module 'Magento_MsrpConfigurableProduct':
[Progress: 132 / 851]
Module 'Magento_MsrpGroupedProduct':
[Progress: 133 / 851]
Module 'Magento_Multishipping':
[Progress: 134 / 851]
Module 'Magento_MysqlMq':
[Progress: 135 / 851]
Module 'Magento_NewRelicReporting':
[Progress: 136 / 851]
Module 'Magento_Newsletter':
[Progress: 137 / 851]
Module 'Magento_NewsletterGraphQl':
[Progress: 138 / 851]
Module 'Magento_OfflinePayments':
[Progress: 139 / 851]
Module 'Magento_SalesRule':
[Progress: 140 / 851]
Module 'Magento_Elasticsearch':
[Progress: 141 / 851]
Module 'Magento_GraphQlCache':
[Progress: 142 / 851]
Module 'Magento_CardinalCommerce':
[Progress: 143 / 851]
Module 'Magento_PaymentGraphQl':
[Progress: 144 / 851]
Module 'Magento_Vault':
[Progress: 145 / 851]
Module 'Magento_Paypal':
[Progress: 146 / 851]
Module 'Magento_PaypalGraphQl':
[Progress: 147 / 851]
Module 'Magento_Persistent':
[Progress: 148 / 851]
Module 'Magento_ProductAlert':
[Progress: 149 / 851]
Module 'Magento_ProductVideo':
[Progress: 150 / 851]
Module 'Magento_CheckoutAgreements':
[Progress: 151 / 851]
Module 'Magento_QuoteAnalytics':
[Progress: 152 / 851]
Module 'Magento_QuoteBundleOptions':
[Progress: 153 / 851]
Module 'Magento_QuoteConfigurableOptions':
[Progress: 154 / 851]
Module 'Magento_QuoteDownloadableLinks':
[Progress: 155 / 851]
Module 'Magento_ConfigurableProductGraphQl':
[Progress: 156 / 851]
Module 'Magento_RelatedProductGraphQl':
[Progress: 157 / 851]
Module 'Magento_ReleaseNotification':
[Progress: 158 / 851]
Module 'Magento_Sitemap':
[Progress: 159 / 851]
Module 'Magento_Reports':
[Progress: 160 / 851]
Module 'Magento_RequireJs':
[Progress: 161 / 851]
Module 'Magento_Review':
[Progress: 162 / 851]
Module 'Magento_ReviewAnalytics':
[Progress: 163 / 851]
Module 'Magento_ReviewGraphQl':
[Progress: 164 / 851]
Module 'Magento_MediaStorage':
[Progress: 165 / 851]
Module 'Magento_Rss':
[Progress: 166 / 851]
Module 'Magento_Elasticsearch7':
[Progress: 167 / 851]
Module 'Magento_ConfigurableProductSales':
[Progress: 168 / 851]
Module 'Magento_SalesAnalytics':
[Progress: 169 / 851]
Module 'Magento_SalesGraphQl':
[Progress: 170 / 851]
Module 'Magento_SalesInventory':
[Progress: 171 / 851]
Module 'Magento_OfflineShipping':
[Progress: 172 / 851]
Module 'Magento_ConfigurableImportExport':
[Progress: 173 / 851]
Module 'Magento_UrlRewrite':
[Progress: 174 / 851]
Module 'Magento_OpenSearch':
[Progress: 175 / 851]
Module 'Magento_CustomerAnalytics':
[Progress: 176 / 851]
Module 'Magento_SendFriend':
[Progress: 177 / 851]
Module 'Magento_SendFriendGraphQl':
[Progress: 178 / 851]
Module 'Magento_Shipping':
[Progress: 179 / 851]
Module 'Magento_RemoteStorage':
[Progress: 180 / 851]
Module 'Magento_AwsS3':
[Progress: 181 / 851]
Module 'Magento_UrlRewriteGraphQl':
[Progress: 182 / 851]
Module 'Magento_Webapi':
[Progress: 183 / 851]
Module 'Magento_SwaggerWebapi':
[Progress: 184 / 851]
Module 'Magento_SwaggerWebapiAsync':
[Progress: 185 / 851]
Module 'Magento_Swatches':
[Progress: 186 / 851]
Module 'Magento_SwatchesGraphQl':
[Progress: 187 / 851]
Module 'Magento_SwatchesLayeredNavigation':
[Progress: 188 / 851]
Module 'Magento_Tax':
[Progress: 189 / 851]
Module 'Magento_TaxGraphQl':
[Progress: 190 / 851]
Module 'Magento_TaxImportExport':
[Progress: 191 / 851]
Module 'Magento_CompareListGraphQl':
[Progress: 192 / 851]
Module 'Magento_ThemeGraphQl':
[Progress: 193 / 851]
Module 'Magento_Translation':
[Progress: 194 / 851]
Module 'Magento_GoogleOptimizer':
[Progress: 195 / 851]
Module 'Magento_Ups':
[Progress: 196 / 851]
Module 'Magento_SampleData':
[Progress: 197 / 851]
Module 'Magento_CatalogUrlRewriteGraphQl':
[Progress: 198 / 851]
Module 'Magento_CatalogAnalytics':
[Progress: 199 / 851]
Module 'Magento_Usps':
[Progress: 200 / 851]
Module 'Magento_CatalogInventoryGraphQl':
[Progress: 201 / 851]
Module 'Magento_PaypalCaptcha':
[Progress: 202 / 851]
Module 'Magento_VaultGraphQl':
[Progress: 203 / 851]
Module 'Magento_Version':
[Progress: 204 / 851]
Module 'Magento_Swagger':
[Progress: 205 / 851]
Module 'Magento_WebapiAsync':
[Progress: 206 / 851]
Module 'Magento_WebapiSecurity':
[Progress: 207 / 851]
Module 'Magento_Weee':
[Progress: 208 / 851]
Module 'Magento_WeeeGraphQl':
[Progress: 209 / 851]
Module 'Magento_CatalogWidget':
[Progress: 210 / 851]
Module 'Magento_Wishlist':
[Progress: 211 / 851]
Module 'Magento_WishlistAnalytics':
[Progress: 212 / 851]
Module 'Magento_WishlistGraphQl':
[Progress: 213 / 851]
Schema post-updates:
Module 'Magento_AdminAnalytics':
[Progress: 214 / 851]
Module 'Magento_Store':
[Progress: 215 / 851]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 216 / 851]
Module 'Magento_Directory':
[Progress: 217 / 851]
Module 'Magento_Amqp':
Running schema recurring...
[Progress: 218 / 851]
Module 'Magento_Config':
[Progress: 219 / 851]
Module 'Magento_Theme':
[Progress: 220 / 851]
Module 'Magento_Backend':
[Progress: 221 / 851]
Module 'Magento_Variable':
[Progress: 222 / 851]
Module 'Magento_Search':
[Progress: 223 / 851]
Module 'Magento_Backup':
[Progress: 224 / 851]
Module 'Magento_Eav':
[Progress: 225 / 851]
Module 'Magento_Customer':
[Progress: 226 / 851]
Module 'Magento_BundleImportExport':
[Progress: 227 / 851]
Module 'Magento_CacheInvalidate':
[Progress: 228 / 851]
Module 'Magento_AdminNotification':
[Progress: 229 / 851]
Module 'Magento_Indexer':
Running schema recurring...
[Progress: 230 / 851]
Module 'Magento_Cms':
[Progress: 231 / 851]
Module 'Magento_Security':
[Progress: 232 / 851]
Module 'Magento_Authorization':
[Progress: 233 / 851]
Module 'Magento_GraphQl':
[Progress: 234 / 851]
Module 'Magento_StoreGraphQl':
[Progress: 235 / 851]
Module 'Magento_CatalogImportExport':
[Progress: 236 / 851]
Module 'Magento_Catalog':
Running schema recurring...
[Progress: 237 / 851]
Module 'Magento_CatalogInventory':
Running schema recurring...
[Progress: 238 / 851]
Module 'Magento_Rule':
[Progress: 239 / 851]
Module 'Magento_Payment':
[Progress: 240 / 851]
Module 'Magento_CatalogRuleGraphQl':
[Progress: 241 / 851]
Module 'Magento_CatalogRule':
[Progress: 242 / 851]
Module 'Magento_CatalogUrlRewrite':
Running schema recurring...
[Progress: 243 / 851]
Module 'Magento_EavGraphQl':
[Progress: 244 / 851]
Module 'Magento_Widget':
[Progress: 245 / 851]
Module 'Magento_Quote':
[Progress: 246 / 851]
Module 'Magento_SalesSequence':
Running schema recurring...
[Progress: 247 / 851]
Module 'Magento_CheckoutAgreementsGraphQl':
[Progress: 248 / 851]
Module 'Magento_Bundle':
Running schema recurring...
[Progress: 249 / 851]
Module 'Magento_CmsGraphQl':
[Progress: 250 / 851]
Module 'Magento_CmsUrlRewrite':
[Progress: 251 / 851]
Module 'Magento_CmsUrlRewriteGraphQl':
[Progress: 252 / 851]
Module 'Magento_CatalogGraphQl':
[Progress: 253 / 851]
Module 'Magento_User':
[Progress: 254 / 851]
Module 'Magento_Msrp':
[Progress: 255 / 851]
Module 'Magento_Sales':
[Progress: 256 / 851]
Module 'Magento_QuoteGraphQl':
[Progress: 257 / 851]
Module 'Magento_Checkout':
[Progress: 258 / 851]
Module 'Magento_Contact':
[Progress: 259 / 851]
Module 'Magento_Cookie':
[Progress: 260 / 851]
Module 'Magento_Cron':
Running schema recurring...
[Progress: 261 / 851]
Module 'Magento_Csp':
[Progress: 262 / 851]
Module 'Magento_CurrencySymbol':
[Progress: 263 / 851]
Module 'Magento_CatalogCustomerGraphQl':
[Progress: 264 / 851]
Module 'Magento_Integration':
Running schema recurring...
[Progress: 265 / 851]
Module 'Magento_Downloadable':
[Progress: 266 / 851]
Module 'Magento_CustomerGraphQl':
[Progress: 267 / 851]
Module 'Magento_CustomerImportExport':
[Progress: 268 / 851]
Module 'Magento_Deploy':
[Progress: 269 / 851]
Module 'Magento_Developer':
[Progress: 270 / 851]
Module 'Magento_Dhl':
[Progress: 271 / 851]
Module 'Magento_AsynchronousOperations':
[Progress: 272 / 851]
Module 'Magento_DirectoryGraphQl':
[Progress: 273 / 851]
Module 'Magento_DownloadableGraphQl':
[Progress: 274 / 851]
Module 'Magento_CustomerDownloadableGraphQl':
[Progress: 275 / 851]
Module 'Magento_ImportExport':
[Progress: 276 / 851]
Module 'Magento_Captcha':
[Progress: 277 / 851]
Module 'Magento_BundleGraphQl':
[Progress: 278 / 851]
Module 'Magento_CatalogSearch':
[Progress: 279 / 851]
Module 'Magento_AdvancedSearch':
[Progress: 280 / 851]
Module 'Magento_Email':
[Progress: 281 / 851]
Module 'Magento_EncryptionKey':
[Progress: 282 / 851]
Module 'Magento_Fedex':
[Progress: 283 / 851]
Module 'Magento_GiftMessage':
[Progress: 284 / 851]
Module 'Magento_GiftMessageGraphQl':
[Progress: 285 / 851]
Module 'Magento_GoogleAdwords':
[Progress: 286 / 851]
Module 'Magento_GoogleAnalytics':
[Progress: 287 / 851]
Module 'Magento_GoogleGtag':
[Progress: 288 / 851]
Module 'Magento_Ui':
[Progress: 289 / 851]
Module 'Magento_CatalogCmsGraphQl':
[Progress: 290 / 851]
Module 'Magento_PageCache':
[Progress: 291 / 851]
Module 'Magento_GroupedProduct':
[Progress: 292 / 851]
Module 'Magento_GroupedImportExport':
[Progress: 293 / 851]
Module 'Magento_GroupedCatalogInventory':
[Progress: 294 / 851]
Module 'Magento_GroupedProductGraphQl':
[Progress: 295 / 851]
Module 'Magento_DownloadableImportExport':
[Progress: 296 / 851]
Module 'Magento_ConfigurableProduct':
Running schema recurring...
[Progress: 297 / 851]
Module 'Magento_InstantPurchase':
[Progress: 298 / 851]
Module 'Magento_Analytics':
[Progress: 299 / 851]
Module 'Magento_JwtFrameworkAdapter':
[Progress: 300 / 851]
Module 'Magento_JwtUserToken':
[Progress: 301 / 851]
Module 'Magento_LayeredNavigation':
[Progress: 302 / 851]
Module 'Magento_LoginAsCustomer':
[Progress: 303 / 851]
Module 'Magento_LoginAsCustomerAdminUi':
[Progress: 304 / 851]
Module 'Magento_LoginAsCustomerApi':
[Progress: 305 / 851]
Module 'Magento_LoginAsCustomerAssistance':
[Progress: 306 / 851]
Module 'Magento_LoginAsCustomerFrontendUi':
[Progress: 307 / 851]
Module 'Magento_LoginAsCustomerGraphQl':
[Progress: 308 / 851]
Module 'Magento_LoginAsCustomerLog':
[Progress: 309 / 851]
Module 'Magento_LoginAsCustomerPageCache':
[Progress: 310 / 851]
Module 'Magento_LoginAsCustomerQuote':
[Progress: 311 / 851]
Module 'Magento_LoginAsCustomerSales':
[Progress: 312 / 851]
Module 'Magento_Marketplace':
[Progress: 313 / 851]
Module 'Magento_MediaContent':
[Progress: 314 / 851]
Module 'Magento_MediaContentApi':
[Progress: 315 / 851]
Module 'Magento_MediaContentCatalog':
[Progress: 316 / 851]
Module 'Magento_MediaContentCms':
[Progress: 317 / 851]
Module 'Magento_MediaContentSynchronization':
[Progress: 318 / 851]
Module 'Magento_MediaContentSynchronizationApi':
[Progress: 319 / 851]
Module 'Magento_MediaContentSynchronizationCatalog':
[Progress: 320 / 851]
Module 'Magento_MediaContentSynchronizationCms':
[Progress: 321 / 851]
Module 'Magento_MediaGallery':
[Progress: 322 / 851]
Module 'Magento_MediaGalleryApi':
[Progress: 323 / 851]
Module 'Magento_MediaGalleryCatalog':
[Progress: 324 / 851]
Module 'Magento_MediaGalleryCatalogIntegration':
[Progress: 325 / 851]
Module 'Magento_MediaGalleryCatalogUi':
[Progress: 326 / 851]
Module 'Magento_MediaGalleryCmsUi':
[Progress: 327 / 851]
Module 'Magento_MediaGalleryIntegration':
[Progress: 328 / 851]
Module 'Magento_MediaGalleryMetadata':
[Progress: 329 / 851]
Module 'Magento_MediaGalleryMetadataApi':
[Progress: 330 / 851]
Module 'Magento_MediaGalleryRenditions':
[Progress: 331 / 851]
Module 'Magento_MediaGalleryRenditionsApi':
[Progress: 332 / 851]
Module 'Magento_MediaGallerySynchronization':
[Progress: 333 / 851]
Module 'Magento_MediaGallerySynchronizationApi':
[Progress: 334 / 851]
Module 'Magento_MediaGallerySynchronizationMetadata':
[Progress: 335 / 851]
Module 'Magento_MediaGalleryUi':
[Progress: 336 / 851]
Module 'Magento_MediaGalleryUiApi':
[Progress: 337 / 851]
Module 'Magento_Robots':
[Progress: 338 / 851]
Module 'Magento_MessageQueue':
Running schema recurring...
[Progress: 339 / 851]
Module 'Magento_CatalogRuleConfigurable':
[Progress: 340 / 851]
Module 'Magento_MsrpConfigurableProduct':
[Progress: 341 / 851]
Module 'Magento_MsrpGroupedProduct':
[Progress: 342 / 851]
Module 'Magento_Multishipping':
[Progress: 343 / 851]
Module 'Magento_MysqlMq':
Running schema recurring...
[Progress: 344 / 851]
Module 'Magento_NewRelicReporting':
[Progress: 345 / 851]
Module 'Magento_Newsletter':
[Progress: 346 / 851]
Module 'Magento_NewsletterGraphQl':
[Progress: 347 / 851]
Module 'Magento_OfflinePayments':
[Progress: 348 / 851]
Module 'Magento_SalesRule':
[Progress: 349 / 851]
Module 'Magento_Elasticsearch':
[Progress: 350 / 851]
Module 'Magento_GraphQlCache':
[Progress: 351 / 851]
Module 'Magento_CardinalCommerce':
[Progress: 352 / 851]
Module 'Magento_PaymentGraphQl':
[Progress: 353 / 851]
Module 'Magento_Vault':
[Progress: 354 / 851]
Module 'Magento_Paypal':
[Progress: 355 / 851]
Module 'Magento_PaypalGraphQl':
[Progress: 356 / 851]
Module 'Magento_Persistent':
[Progress: 357 / 851]
Module 'Magento_ProductAlert':
Running schema recurring...
[Progress: 358 / 851]
Module 'Magento_ProductVideo':
[Progress: 359 / 851]
Module 'Magento_CheckoutAgreements':
[Progress: 360 / 851]
Module 'Magento_QuoteAnalytics':
[Progress: 361 / 851]
Module 'Magento_QuoteBundleOptions':
[Progress: 362 / 851]
Module 'Magento_QuoteConfigurableOptions':
[Progress: 363 / 851]
Module 'Magento_QuoteDownloadableLinks':
[Progress: 364 / 851]
Module 'Magento_ConfigurableProductGraphQl':
[Progress: 365 / 851]
Module 'Magento_RelatedProductGraphQl':
[Progress: 366 / 851]
Module 'Magento_ReleaseNotification':
[Progress: 367 / 851]
Module 'Magento_Sitemap':
[Progress: 368 / 851]
Module 'Magento_Reports':
Running schema recurring...
[Progress: 369 / 851]
Module 'Magento_RequireJs':
[Progress: 370 / 851]
Module 'Magento_Review':
[Progress: 371 / 851]
Module 'Magento_ReviewAnalytics':
[Progress: 372 / 851]
Module 'Magento_ReviewGraphQl':
[Progress: 373 / 851]
Module 'Magento_MediaStorage':
[Progress: 374 / 851]
Module 'Magento_Rss':
[Progress: 375 / 851]
Module 'Magento_Elasticsearch7':
[Progress: 376 / 851]
Module 'Magento_ConfigurableProductSales':
[Progress: 377 / 851]
Module 'Magento_SalesAnalytics':
[Progress: 378 / 851]
Module 'Magento_SalesGraphQl':
[Progress: 379 / 851]
Module 'Magento_SalesInventory':
[Progress: 380 / 851]
Module 'Magento_OfflineShipping':
[Progress: 381 / 851]
Module 'Magento_ConfigurableImportExport':
[Progress: 382 / 851]
Module 'Magento_UrlRewrite':
[Progress: 383 / 851]
Module 'Magento_OpenSearch':
[Progress: 384 / 851]
Module 'Magento_CustomerAnalytics':
[Progress: 385 / 851]
Module 'Magento_SendFriend':
[Progress: 386 / 851]
Module 'Magento_SendFriendGraphQl':
[Progress: 387 / 851]
Module 'Magento_Shipping':
[Progress: 388 / 851]
Module 'Magento_RemoteStorage':
[Progress: 389 / 851]
Module 'Magento_AwsS3':
[Progress: 390 / 851]
Module 'Magento_UrlRewriteGraphQl':
[Progress: 391 / 851]
Module 'Magento_Webapi':
[Progress: 392 / 851]
Module 'Magento_SwaggerWebapi':
[Progress: 393 / 851]
Module 'Magento_SwaggerWebapiAsync':
[Progress: 394 / 851]
Module 'Magento_Swatches':
[Progress: 395 / 851]
Module 'Magento_SwatchesGraphQl':
[Progress: 396 / 851]
Module 'Magento_SwatchesLayeredNavigation':
[Progress: 397 / 851]
Module 'Magento_Tax':
[Progress: 398 / 851]
Module 'Magento_TaxGraphQl':
[Progress: 399 / 851]
Module 'Magento_TaxImportExport':
[Progress: 400 / 851]
Module 'Magento_CompareListGraphQl':
[Progress: 401 / 851]
Module 'Magento_ThemeGraphQl':
[Progress: 402 / 851]
Module 'Magento_Translation':
[Progress: 403 / 851]
Module 'Magento_GoogleOptimizer':
[Progress: 404 / 851]
Module 'Magento_Ups':
[Progress: 405 / 851]
Module 'Magento_SampleData':
[Progress: 406 / 851]
Module 'Magento_CatalogUrlRewriteGraphQl':
[Progress: 407 / 851]
Module 'Magento_CatalogAnalytics':
[Progress: 408 / 851]
Module 'Magento_Usps':
[Progress: 409 / 851]
Module 'Magento_CatalogInventoryGraphQl':
[Progress: 410 / 851]
Module 'Magento_PaypalCaptcha':
[Progress: 411 / 851]
Module 'Magento_VaultGraphQl':
[Progress: 412 / 851]
Module 'Magento_Version':
[Progress: 413 / 851]
Module 'Magento_Swagger':
[Progress: 414 / 851]
Module 'Magento_WebapiAsync':
[Progress: 415 / 851]
Module 'Magento_WebapiSecurity':
[Progress: 416 / 851]
Module 'Magento_Weee':
Running schema recurring...
[Progress: 417 / 851]
Module 'Magento_WeeeGraphQl':
[Progress: 418 / 851]
Module 'Magento_CatalogWidget':
[Progress: 419 / 851]
Module 'Magento_Wishlist':
Running schema recurring...
[Progress: 420 / 851]
Module 'Magento_WishlistAnalytics':
[Progress: 421 / 851]
Module 'Magento_WishlistGraphQl':
[Progress: 422 / 851]
[Progress: 423 / 851]
Installing search configuration...
[Progress: 424 / 851]
Validating remote storage configuration...
[Progress: 425 / 851]
Installing user configuration...
[Progress: 426 / 851]
Enabling caches:
Current status:
config: 1
layout: 1
block_html: 1
collections: 1
reflection: 1
db_ddl: 1
compiled_config: 1
eav: 1
customer_notification: 1
config_integration: 1
config_integration_api: 1
full_page: 1
config_webservice: 1
translate: 1
[Progress: 427 / 851]
Installing data...
Data install/update:
Disabling caches:
Current status:
layout: 0
block_html: 0
full_page: 0
Module 'Magento_AdminAnalytics':
[Progress: 428 / 851]
Module 'Magento_Store':
[Progress: 429 / 851]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 430 / 851]
Module 'Magento_Directory':
[Progress: 431 / 851]
Module 'Magento_Amqp':
[Progress: 432 / 851]
Module 'Magento_Config':
[Progress: 433 / 851]
Module 'Magento_Theme':
[Progress: 434 / 851]
Module 'Magento_Backend':
[Progress: 435 / 851]
Module 'Magento_Variable':
[Progress: 436 / 851]
Module 'Magento_Search':
[Progress: 437 / 851]
Module 'Magento_Backup':
[Progress: 438 / 851]
Module 'Magento_Eav':
[Progress: 439 / 851]
Module 'Magento_Customer':
[Progress: 440 / 851]
Module 'Magento_BundleImportExport':
[Progress: 441 / 851]
Module 'Magento_CacheInvalidate':
[Progress: 442 / 851]
Module 'Magento_AdminNotification':
[Progress: 443 / 851]
Module 'Magento_Indexer':
[Progress: 444 / 851]
Module 'Magento_Cms':
[Progress: 445 / 851]
Module 'Magento_Security':
[Progress: 446 / 851]
Module 'Magento_Authorization':
[Progress: 447 / 851]
Module 'Magento_GraphQl':
[Progress: 448 / 851]
Module 'Magento_StoreGraphQl':
[Progress: 449 / 851]
Module 'Magento_CatalogImportExport':
[Progress: 450 / 851]
Module 'Magento_Catalog':
[Progress: 451 / 851]
Module 'Magento_CatalogInventory':
[Progress: 452 / 851]
Module 'Magento_Rule':
[Progress: 453 / 851]
Module 'Magento_Payment':
[Progress: 454 / 851]
Module 'Magento_CatalogRuleGraphQl':
[Progress: 455 / 851]
Module 'Magento_CatalogRule':
[Progress: 456 / 851]
Module 'Magento_CatalogUrlRewrite':
[Progress: 457 / 851]
Module 'Magento_EavGraphQl':
[Progress: 458 / 851]
Module 'Magento_Widget':
[Progress: 459 / 851]
Module 'Magento_Quote':
[Progress: 460 / 851]
Module 'Magento_SalesSequence':
[Progress: 461 / 851]
Module 'Magento_CheckoutAgreementsGraphQl':
[Progress: 462 / 851]
Module 'Magento_Bundle':
[Progress: 463 / 851]
Module 'Magento_CmsGraphQl':
[Progress: 464 / 851]
Module 'Magento_CmsUrlRewrite':
[Progress: 465 / 851]
Module 'Magento_CmsUrlRewriteGraphQl':
[Progress: 466 / 851]
Module 'Magento_CatalogGraphQl':
[Progress: 467 / 851]
Module 'Magento_User':
[Progress: 468 / 851]
Module 'Magento_Msrp':
[Progress: 469 / 851]
Module 'Magento_Sales':
[Progress: 470 / 851]
Module 'Magento_QuoteGraphQl':
[Progress: 471 / 851]
Module 'Magento_Checkout':
[Progress: 472 / 851]
Module 'Magento_Contact':
[Progress: 473 / 851]
Module 'Magento_Cookie':
[Progress: 474 / 851]
Module 'Magento_Cron':
[Progress: 475 / 851]
Module 'Magento_Csp':
[Progress: 476 / 851]
Module 'Magento_CurrencySymbol':
[Progress: 477 / 851]
Module 'Magento_CatalogCustomerGraphQl':
[Progress: 478 / 851]
Module 'Magento_Integration':
[Progress: 479 / 851]
Module 'Magento_Downloadable':
[Progress: 480 / 851]
Module 'Magento_CustomerGraphQl':
[Progress: 481 / 851]
Module 'Magento_CustomerImportExport':
[Progress: 482 / 851]
Module 'Magento_Deploy':
[Progress: 483 / 851]
Module 'Magento_Developer':
[Progress: 484 / 851]
Module 'Magento_Dhl':
[Progress: 485 / 851]
Module 'Magento_AsynchronousOperations':
[Progress: 486 / 851]
Module 'Magento_DirectoryGraphQl':
[Progress: 487 / 851]
Module 'Magento_DownloadableGraphQl':
[Progress: 488 / 851]
Module 'Magento_CustomerDownloadableGraphQl':
[Progress: 489 / 851]
Module 'Magento_ImportExport':
[Progress: 490 / 851]
Module 'Magento_Captcha':
[Progress: 491 / 851]
Module 'Magento_BundleGraphQl':
[Progress: 492 / 851]
Module 'Magento_CatalogSearch':
[Progress: 493 / 851]
Module 'Magento_AdvancedSearch':
[Progress: 494 / 851]
Module 'Magento_Email':
[Progress: 495 / 851]
Module 'Magento_EncryptionKey':
[Progress: 496 / 851]
Module 'Magento_Fedex':
[Progress: 497 / 851]
Module 'Magento_GiftMessage':
[Progress: 498 / 851]
Module 'Magento_GiftMessageGraphQl':
[Progress: 499 / 851]
Module 'Magento_GoogleAdwords':
[Progress: 500 / 851]
Module 'Magento_GoogleAnalytics':
[Progress: 501 / 851]
Module 'Magento_GoogleGtag':
[Progress: 502 / 851]
Module 'Magento_Ui':
[Progress: 503 / 851]
Module 'Magento_CatalogCmsGraphQl':
[Progress: 504 / 851]
Module 'Magento_PageCache':
[Progress: 505 / 851]
Module 'Magento_GroupedProduct':
[Progress: 506 / 851]
Module 'Magento_GroupedImportExport':
[Progress: 507 / 851]
Module 'Magento_GroupedCatalogInventory':
[Progress: 508 / 851]
Module 'Magento_GroupedProductGraphQl':
[Progress: 509 / 851]
Module 'Magento_DownloadableImportExport':
[Progress: 510 / 851]
Module 'Magento_ConfigurableProduct':
[Progress: 511 / 851]
Module 'Magento_InstantPurchase':
[Progress: 512 / 851]
Module 'Magento_Analytics':
[Progress: 513 / 851]
Module 'Magento_JwtFrameworkAdapter':
[Progress: 514 / 851]
Module 'Magento_JwtUserToken':
[Progress: 515 / 851]
Module 'Magento_LayeredNavigation':
[Progress: 516 / 851]
Module 'Magento_LoginAsCustomer':
[Progress: 517 / 851]
Module 'Magento_LoginAsCustomerAdminUi':
[Progress: 518 / 851]
Module 'Magento_LoginAsCustomerApi':
[Progress: 519 / 851]
Module 'Magento_LoginAsCustomerAssistance':
[Progress: 520 / 851]
Module 'Magento_LoginAsCustomerFrontendUi':
[Progress: 521 / 851]
Module 'Magento_LoginAsCustomerGraphQl':
[Progress: 522 / 851]
Module 'Magento_LoginAsCustomerLog':
[Progress: 523 / 851]
Module 'Magento_LoginAsCustomerPageCache':
[Progress: 524 / 851]
Module 'Magento_LoginAsCustomerQuote':
[Progress: 525 / 851]
Module 'Magento_LoginAsCustomerSales':
[Progress: 526 / 851]
Module 'Magento_Marketplace':
[Progress: 527 / 851]
Module 'Magento_MediaContent':
[Progress: 528 / 851]
Module 'Magento_MediaContentApi':
[Progress: 529 / 851]
Module 'Magento_MediaContentCatalog':
[Progress: 530 / 851]
Module 'Magento_MediaContentCms':
[Progress: 531 / 851]
Module 'Magento_MediaContentSynchronization':
[Progress: 532 / 851]
Module 'Magento_MediaContentSynchronizationApi':
[Progress: 533 / 851]
Module 'Magento_MediaContentSynchronizationCatalog':
[Progress: 534 / 851]
Module 'Magento_MediaContentSynchronizationCms':
[Progress: 535 / 851]
Module 'Magento_MediaGallery':
[Progress: 536 / 851]
Module 'Magento_MediaGalleryApi':
[Progress: 537 / 851]
Module 'Magento_MediaGalleryCatalog':
[Progress: 538 / 851]
Module 'Magento_MediaGalleryCatalogIntegration':
[Progress: 539 / 851]
Module 'Magento_MediaGalleryCatalogUi':
[Progress: 540 / 851]
Module 'Magento_MediaGalleryCmsUi':
[Progress: 541 / 851]
Module 'Magento_MediaGalleryIntegration':
[Progress: 542 / 851]
Module 'Magento_MediaGalleryMetadata':
[Progress: 543 / 851]
Module 'Magento_MediaGalleryMetadataApi':
[Progress: 544 / 851]
Module 'Magento_MediaGalleryRenditions':
[Progress: 545 / 851]
Module 'Magento_MediaGalleryRenditionsApi':
[Progress: 546 / 851]
Module 'Magento_MediaGallerySynchronization':
[Progress: 547 / 851]
Module 'Magento_MediaGallerySynchronizationApi':
[Progress: 548 / 851]
Module 'Magento_MediaGallerySynchronizationMetadata':
[Progress: 549 / 851]
Module 'Magento_MediaGalleryUi':
[Progress: 550 / 851]
Module 'Magento_MediaGalleryUiApi':
[Progress: 551 / 851]
Module 'Magento_Robots':
[Progress: 552 / 851]
Module 'Magento_MessageQueue':
[Progress: 553 / 851]
Module 'Magento_CatalogRuleConfigurable':
[Progress: 554 / 851]
Module 'Magento_MsrpConfigurableProduct':
[Progress: 555 / 851]
Module 'Magento_MsrpGroupedProduct':
[Progress: 556 / 851]
Module 'Magento_Multishipping':
[Progress: 557 / 851]
Module 'Magento_MysqlMq':
[Progress: 558 / 851]
Module 'Magento_NewRelicReporting':
[Progress: 559 / 851]
Module 'Magento_Newsletter':
[Progress: 560 / 851]
Module 'Magento_NewsletterGraphQl':
[Progress: 561 / 851]
Module 'Magento_OfflinePayments':
[Progress: 562 / 851]
Module 'Magento_SalesRule':
[Progress: 563 / 851]
Module 'Magento_Elasticsearch':
[Progress: 564 / 851]
Module 'Magento_GraphQlCache':
[Progress: 565 / 851]
Module 'Magento_CardinalCommerce':
[Progress: 566 / 851]
Module 'Magento_PaymentGraphQl':
[Progress: 567 / 851]
Module 'Magento_Vault':
[Progress: 568 / 851]
Module 'Magento_Paypal':
[Progress: 569 / 851]
Module 'Magento_PaypalGraphQl':
[Progress: 570 / 851]
Module 'Magento_Persistent':
[Progress: 571 / 851]
Module 'Magento_ProductAlert':
[Progress: 572 / 851]
Module 'Magento_ProductVideo':
[Progress: 573 / 851]
Module 'Magento_CheckoutAgreements':
[Progress: 574 / 851]
Module 'Magento_QuoteAnalytics':
[Progress: 575 / 851]
Module 'Magento_QuoteBundleOptions':
[Progress: 576 / 851]
Module 'Magento_QuoteConfigurableOptions':
[Progress: 577 / 851]
Module 'Magento_QuoteDownloadableLinks':
[Progress: 578 / 851]
Module 'Magento_ConfigurableProductGraphQl':
[Progress: 579 / 851]
Module 'Magento_RelatedProductGraphQl':
[Progress: 580 / 851]
Module 'Magento_ReleaseNotification':
[Progress: 581 / 851]
Module 'Magento_Sitemap':
[Progress: 582 / 851]
Module 'Magento_Reports':
[Progress: 583 / 851]
Module 'Magento_RequireJs':
[Progress: 584 / 851]
Module 'Magento_Review':
[Progress: 585 / 851]
Module 'Magento_ReviewAnalytics':
[Progress: 586 / 851]
Module 'Magento_ReviewGraphQl':
[Progress: 587 / 851]
Module 'Magento_MediaStorage':
[Progress: 588 / 851]
Module 'Magento_Rss':
[Progress: 589 / 851]
Module 'Magento_Elasticsearch7':
[Progress: 590 / 851]
Module 'Magento_ConfigurableProductSales':
[Progress: 591 / 851]
Module 'Magento_SalesAnalytics':
[Progress: 592 / 851]
Module 'Magento_SalesGraphQl':
[Progress: 593 / 851]
Module 'Magento_SalesInventory':
[Progress: 594 / 851]
Module 'Magento_OfflineShipping':
[Progress: 595 / 851]
Module 'Magento_ConfigurableImportExport':
[Progress: 596 / 851]
Module 'Magento_UrlRewrite':
[Progress: 597 / 851]
Module 'Magento_OpenSearch':
[Progress: 598 / 851]
Module 'Magento_CustomerAnalytics':
[Progress: 599 / 851]
Module 'Magento_SendFriend':
[Progress: 600 / 851]
Module 'Magento_SendFriendGraphQl':
[Progress: 601 / 851]
Module 'Magento_Shipping':
[Progress: 602 / 851]
Module 'Magento_RemoteStorage':
[Progress: 603 / 851]
Module 'Magento_AwsS3':
[Progress: 604 / 851]
Module 'Magento_UrlRewriteGraphQl':
[Progress: 605 / 851]
Module 'Magento_Webapi':
[Progress: 606 / 851]
Module 'Magento_SwaggerWebapi':
[Progress: 607 / 851]
Module 'Magento_SwaggerWebapiAsync':
[Progress: 608 / 851]
Module 'Magento_Swatches':
[Progress: 609 / 851]
Module 'Magento_SwatchesGraphQl':
[Progress: 610 / 851]
Module 'Magento_SwatchesLayeredNavigation':
[Progress: 611 / 851]
Module 'Magento_Tax':
[Progress: 612 / 851]
Module 'Magento_TaxGraphQl':
[Progress: 613 / 851]
Module 'Magento_TaxImportExport':
[Progress: 614 / 851]
Module 'Magento_CompareListGraphQl':
[Progress: 615 / 851]
Module 'Magento_ThemeGraphQl':
[Progress: 616 / 851]
Module 'Magento_Translation':
[Progress: 617 / 851]
Module 'Magento_GoogleOptimizer':
[Progress: 618 / 851]
Module 'Magento_Ups':
[Progress: 619 / 851]
Module 'Magento_SampleData':
[Progress: 620 / 851]
Module 'Magento_CatalogUrlRewriteGraphQl':
[Progress: 621 / 851]
Module 'Magento_CatalogAnalytics':
[Progress: 622 / 851]
Module 'Magento_Usps':
[Progress: 623 / 851]
Module 'Magento_CatalogInventoryGraphQl':
[Progress: 624 / 851]
Module 'Magento_PaypalCaptcha':
[Progress: 625 / 851]
Module 'Magento_VaultGraphQl':
[Progress: 626 / 851]
Module 'Magento_Version':
[Progress: 627 / 851]
Module 'Magento_Swagger':
[Progress: 628 / 851]
Module 'Magento_WebapiAsync':
[Progress: 629 / 851]
Module 'Magento_WebapiSecurity':
[Progress: 630 / 851]
Module 'Magento_Weee':
[Progress: 631 / 851]
Module 'Magento_WeeeGraphQl':
[Progress: 632 / 851]
Module 'Magento_CatalogWidget':
[Progress: 633 / 851]
Module 'Magento_Wishlist':
[Progress: 634 / 851]
Module 'Magento_WishlistAnalytics':
[Progress: 635 / 851]
Module 'Magento_WishlistGraphQl':
[Progress: 636 / 851]
Data post-updates:
Module 'Magento_AdminAnalytics':
[Progress: 637 / 851]
Module 'Magento_Store':
[Progress: 638 / 851]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 639 / 851]
Module 'Magento_Directory':
[Progress: 640 / 851]
Module 'Magento_Amqp':
[Progress: 641 / 851]
Module 'Magento_Config':
[Progress: 642 / 851]
Module 'Magento_Theme':
Running data recurring...
[Progress: 643 / 851]
Module 'Magento_Backend':
[Progress: 644 / 851]
Module 'Magento_Variable':
[Progress: 645 / 851]
Module 'Magento_Search':
[Progress: 646 / 851]
Module 'Magento_Backup':
[Progress: 647 / 851]
Module 'Magento_Eav':
[Progress: 648 / 851]
Module 'Magento_Customer':
Running data recurring...
[Progress: 649 / 851]
Module 'Magento_BundleImportExport':
[Progress: 650 / 851]
Module 'Magento_CacheInvalidate':
[Progress: 651 / 851]
Module 'Magento_AdminNotification':
[Progress: 652 / 851]
Module 'Magento_Indexer':
[Progress: 653 / 851]
Module 'Magento_Cms':
[Progress: 654 / 851]
Module 'Magento_Security':
[Progress: 655 / 851]
Module 'Magento_Authorization':
[Progress: 656 / 851]
Module 'Magento_GraphQl':
[Progress: 657 / 851]
Module 'Magento_StoreGraphQl':
[Progress: 658 / 851]
Module 'Magento_CatalogImportExport':
[Progress: 659 / 851]
Module 'Magento_Catalog':
[Progress: 660 / 851]
Module 'Magento_CatalogInventory':
[Progress: 661 / 851]
Module 'Magento_Rule':
[Progress: 662 / 851]
Module 'Magento_Payment':
[Progress: 663 / 851]
Module 'Magento_CatalogRuleGraphQl':
[Progress: 664 / 851]
Module 'Magento_CatalogRule':
[Progress: 665 / 851]
Module 'Magento_CatalogUrlRewrite':
[Progress: 666 / 851]
Module 'Magento_EavGraphQl':
[Progress: 667 / 851]
Module 'Magento_Widget':
[Progress: 668 / 851]
Module 'Magento_Quote':
[Progress: 669 / 851]
Module 'Magento_SalesSequence':
Running data recurring...
[Progress: 670 / 851]
Module 'Magento_CheckoutAgreementsGraphQl':
[Progress: 671 / 851]
Module 'Magento_Bundle':
[Progress: 672 / 851]
Module 'Magento_CmsGraphQl':
[Progress: 673 / 851]
Module 'Magento_CmsUrlRewrite':
[Progress: 674 / 851]
Module 'Magento_CmsUrlRewriteGraphQl':
[Progress: 675 / 851]
Module 'Magento_CatalogGraphQl':
[Progress: 676 / 851]
Module 'Magento_User':
[Progress: 677 / 851]
Module 'Magento_Msrp':
[Progress: 678 / 851]
Module 'Magento_Sales':
[Progress: 679 / 851]
Module 'Magento_QuoteGraphQl':
[Progress: 680 / 851]
Module 'Magento_Checkout':
[Progress: 681 / 851]
Module 'Magento_Contact':
[Progress: 682 / 851]
Module 'Magento_Cookie':
[Progress: 683 / 851]
Module 'Magento_Cron':
[Progress: 684 / 851]
Module 'Magento_Csp':
[Progress: 685 / 851]
Module 'Magento_CurrencySymbol':
[Progress: 686 / 851]
Module 'Magento_CatalogCustomerGraphQl':
[Progress: 687 / 851]
Module 'Magento_Integration':
[Progress: 688 / 851]
Module 'Magento_Downloadable':
[Progress: 689 / 851]
Module 'Magento_CustomerGraphQl':
[Progress: 690 / 851]
Module 'Magento_CustomerImportExport':
[Progress: 691 / 851]
Module 'Magento_Deploy':
[Progress: 692 / 851]
Module 'Magento_Developer':
[Progress: 693 / 851]
Module 'Magento_Dhl':
[Progress: 694 / 851]
Module 'Magento_AsynchronousOperations':
[Progress: 695 / 851]
Module 'Magento_DirectoryGraphQl':
[Progress: 696 / 851]
Module 'Magento_DownloadableGraphQl':
[Progress: 697 / 851]
Module 'Magento_CustomerDownloadableGraphQl':
[Progress: 698 / 851]
Module 'Magento_ImportExport':
[Progress: 699 / 851]
Module 'Magento_Captcha':
[Progress: 700 / 851]
Module 'Magento_BundleGraphQl':
[Progress: 701 / 851]
Module 'Magento_CatalogSearch':
[Progress: 702 / 851]
Module 'Magento_AdvancedSearch':
[Progress: 703 / 851]
Module 'Magento_Email':
[Progress: 704 / 851]
Module 'Magento_EncryptionKey':
[Progress: 705 / 851]
Module 'Magento_Fedex':
[Progress: 706 / 851]
Module 'Magento_GiftMessage':
[Progress: 707 / 851]
Module 'Magento_GiftMessageGraphQl':
[Progress: 708 / 851]
Module 'Magento_GoogleAdwords':
[Progress: 709 / 851]
Module 'Magento_GoogleAnalytics':
[Progress: 710 / 851]
Module 'Magento_GoogleGtag':
[Progress: 711 / 851]
Module 'Magento_Ui':
[Progress: 712 / 851]
Module 'Magento_CatalogCmsGraphQl':
[Progress: 713 / 851]
Module 'Magento_PageCache':
[Progress: 714 / 851]
Module 'Magento_GroupedProduct':
[Progress: 715 / 851]
Module 'Magento_GroupedImportExport':
[Progress: 716 / 851]
Module 'Magento_GroupedCatalogInventory':
[Progress: 717 / 851]
Module 'Magento_GroupedProductGraphQl':
[Progress: 718 / 851]
Module 'Magento_DownloadableImportExport':
[Progress: 719 / 851]
Module 'Magento_ConfigurableProduct':
[Progress: 720 / 851]
Module 'Magento_InstantPurchase':
[Progress: 721 / 851]
Module 'Magento_Analytics':
[Progress: 722 / 851]
Module 'Magento_JwtFrameworkAdapter':
[Progress: 723 / 851]
Module 'Magento_JwtUserToken':
[Progress: 724 / 851]
Module 'Magento_LayeredNavigation':
[Progress: 725 / 851]
Module 'Magento_LoginAsCustomer':
[Progress: 726 / 851]
Module 'Magento_LoginAsCustomerAdminUi':
[Progress: 727 / 851]
Module 'Magento_LoginAsCustomerApi':
[Progress: 728 / 851]
Module 'Magento_LoginAsCustomerAssistance':
[Progress: 729 / 851]
Module 'Magento_LoginAsCustomerFrontendUi':
[Progress: 730 / 851]
Module 'Magento_LoginAsCustomerGraphQl':
[Progress: 731 / 851]
Module 'Magento_LoginAsCustomerLog':
[Progress: 732 / 851]
Module 'Magento_LoginAsCustomerPageCache':
[Progress: 733 / 851]
Module 'Magento_LoginAsCustomerQuote':
[Progress: 734 / 851]
Module 'Magento_LoginAsCustomerSales':
[Progress: 735 / 851]
Module 'Magento_Marketplace':
[Progress: 736 / 851]
Module 'Magento_MediaContent':
[Progress: 737 / 851]
Module 'Magento_MediaContentApi':
[Progress: 738 / 851]
Module 'Magento_MediaContentCatalog':
[Progress: 739 / 851]
Module 'Magento_MediaContentCms':
[Progress: 740 / 851]
Module 'Magento_MediaContentSynchronization':
[Progress: 741 / 851]
Module 'Magento_MediaContentSynchronizationApi':
[Progress: 742 / 851]
Module 'Magento_MediaContentSynchronizationCatalog':
[Progress: 743 / 851]
Module 'Magento_MediaContentSynchronizationCms':
[Progress: 744 / 851]
Module 'Magento_MediaGallery':
[Progress: 745 / 851]
Module 'Magento_MediaGalleryApi':
[Progress: 746 / 851]
Module 'Magento_MediaGalleryCatalog':
[Progress: 747 / 851]
Module 'Magento_MediaGalleryCatalogIntegration':
[Progress: 748 / 851]
Module 'Magento_MediaGalleryCatalogUi':
[Progress: 749 / 851]
Module 'Magento_MediaGalleryCmsUi':
[Progress: 750 / 851]
Module 'Magento_MediaGalleryIntegration':
[Progress: 751 / 851]
Module 'Magento_MediaGalleryMetadata':
[Progress: 752 / 851]
Module 'Magento_MediaGalleryMetadataApi':
[Progress: 753 / 851]
Module 'Magento_MediaGalleryRenditions':
[Progress: 754 / 851]
Module 'Magento_MediaGalleryRenditionsApi':
[Progress: 755 / 851]
Module 'Magento_MediaGallerySynchronization':
[Progress: 756 / 851]
Module 'Magento_MediaGallerySynchronizationApi':
[Progress: 757 / 851]
Module 'Magento_MediaGallerySynchronizationMetadata':
[Progress: 758 / 851]
Module 'Magento_MediaGalleryUi':
[Progress: 759 / 851]
Module 'Magento_MediaGalleryUiApi':
[Progress: 760 / 851]
Module 'Magento_Robots':
[Progress: 761 / 851]
Module 'Magento_MessageQueue':
[Progress: 762 / 851]
Module 'Magento_CatalogRuleConfigurable':
[Progress: 763 / 851]
Module 'Magento_MsrpConfigurableProduct':
[Progress: 764 / 851]
Module 'Magento_MsrpGroupedProduct':
[Progress: 765 / 851]
Module 'Magento_Multishipping':
[Progress: 766 / 851]
Module 'Magento_MysqlMq':
[Progress: 767 / 851]
Module 'Magento_NewRelicReporting':
[Progress: 768 / 851]
Module 'Magento_Newsletter':
[Progress: 769 / 851]
Module 'Magento_NewsletterGraphQl':
[Progress: 770 / 851]
Module 'Magento_OfflinePayments':
[Progress: 771 / 851]
Module 'Magento_SalesRule':
[Progress: 772 / 851]
Module 'Magento_Elasticsearch':
[Progress: 773 / 851]
Module 'Magento_GraphQlCache':
[Progress: 774 / 851]
Module 'Magento_CardinalCommerce':
[Progress: 775 / 851]
Module 'Magento_PaymentGraphQl':
[Progress: 776 / 851]
Module 'Magento_Vault':
[Progress: 777 / 851]
Module 'Magento_Paypal':
[Progress: 778 / 851]
Module 'Magento_PaypalGraphQl':
[Progress: 779 / 851]
Module 'Magento_Persistent':
[Progress: 780 / 851]
Module 'Magento_ProductAlert':
[Progress: 781 / 851]
Module 'Magento_ProductVideo':
[Progress: 782 / 851]
Module 'Magento_CheckoutAgreements':
[Progress: 783 / 851]
Module 'Magento_QuoteAnalytics':
[Progress: 784 / 851]
Module 'Magento_QuoteBundleOptions':
[Progress: 785 / 851]
Module 'Magento_QuoteConfigurableOptions':
[Progress: 786 / 851]
Module 'Magento_QuoteDownloadableLinks':
[Progress: 787 / 851]
Module 'Magento_ConfigurableProductGraphQl':
[Progress: 788 / 851]
Module 'Magento_RelatedProductGraphQl':
[Progress: 789 / 851]
Module 'Magento_ReleaseNotification':
[Progress: 790 / 851]
Module 'Magento_Sitemap':
[Progress: 791 / 851]
Module 'Magento_Reports':
[Progress: 792 / 851]
Module 'Magento_RequireJs':
[Progress: 793 / 851]
Module 'Magento_Review':
[Progress: 794 / 851]
Module 'Magento_ReviewAnalytics':
[Progress: 795 / 851]
Module 'Magento_ReviewGraphQl':
[Progress: 796 / 851]
Module 'Magento_MediaStorage':
[Progress: 797 / 851]
Module 'Magento_Rss':
[Progress: 798 / 851]
Module 'Magento_Elasticsearch7':
[Progress: 799 / 851]
Module 'Magento_ConfigurableProductSales':
[Progress: 800 / 851]
Module 'Magento_SalesAnalytics':
[Progress: 801 / 851]
Module 'Magento_SalesGraphQl':
[Progress: 802 / 851]
Module 'Magento_SalesInventory':
[Progress: 803 / 851]
Module 'Magento_OfflineShipping':
[Progress: 804 / 851]
Module 'Magento_ConfigurableImportExport':
[Progress: 805 / 851]
Module 'Magento_UrlRewrite':
[Progress: 806 / 851]
Module 'Magento_OpenSearch':
[Progress: 807 / 851]
Module 'Magento_CustomerAnalytics':
[Progress: 808 / 851]
Module 'Magento_SendFriend':
[Progress: 809 / 851]
Module 'Magento_SendFriendGraphQl':
[Progress: 810 / 851]
Module 'Magento_Shipping':
[Progress: 811 / 851]
Module 'Magento_RemoteStorage':
[Progress: 812 / 851]
Module 'Magento_AwsS3':
[Progress: 813 / 851]
Module 'Magento_UrlRewriteGraphQl':
[Progress: 814 / 851]
Module 'Magento_Webapi':
[Progress: 815 / 851]
Module 'Magento_SwaggerWebapi':
[Progress: 816 / 851]
Module 'Magento_SwaggerWebapiAsync':
[Progress: 817 / 851]
Module 'Magento_Swatches':
[Progress: 818 / 851]
Module 'Magento_SwatchesGraphQl':
[Progress: 819 / 851]
Module 'Magento_SwatchesLayeredNavigation':
[Progress: 820 / 851]
Module 'Magento_Tax':
[Progress: 821 / 851]
Module 'Magento_TaxGraphQl':
[Progress: 822 / 851]
Module 'Magento_TaxImportExport':
[Progress: 823 / 851]
Module 'Magento_CompareListGraphQl':
[Progress: 824 / 851]
Module 'Magento_ThemeGraphQl':
[Progress: 825 / 851]
Module 'Magento_Translation':
[Progress: 826 / 851]
Module 'Magento_GoogleOptimizer':
[Progress: 827 / 851]
Module 'Magento_Ups':
[Progress: 828 / 851]
Module 'Magento_SampleData':
[Progress: 829 / 851]
Module 'Magento_CatalogUrlRewriteGraphQl':
[Progress: 830 / 851]
Module 'Magento_CatalogAnalytics':
[Progress: 831 / 851]
Module 'Magento_Usps':
[Progress: 832 / 851]
Module 'Magento_CatalogInventoryGraphQl':
[Progress: 833 / 851]
Module 'Magento_PaypalCaptcha':
[Progress: 834 / 851]
Module 'Magento_VaultGraphQl':
[Progress: 835 / 851]
Module 'Magento_Version':
[Progress: 836 / 851]
Module 'Magento_Swagger':
[Progress: 837 / 851]
Module 'Magento_WebapiAsync':
[Progress: 838 / 851]
Module 'Magento_WebapiSecurity':
[Progress: 839 / 851]
Module 'Magento_Weee':
[Progress: 840 / 851]
Module 'Magento_WeeeGraphQl':
[Progress: 841 / 851]
Module 'Magento_CatalogWidget':
[Progress: 842 / 851]
Module 'Magento_Wishlist':
[Progress: 843 / 851]
Module 'Magento_WishlistAnalytics':
[Progress: 844 / 851]
Module 'Magento_WishlistGraphQl':
[Progress: 845 / 851]
Enabling caches:
Current status:
layout: 1
block_html: 1
full_page: 1
[Progress: 846 / 851]
Installing admin user...
[Progress: 847 / 851]
Caches clearing:
Cache cleared successfully
[Progress: 848 / 851]
Disabling Maintenance Mode:
[Progress: 849 / 851]
Post installation file permissions check...
For security, remove write permissions from these directories: '/home/jupyter-saintway/magento2/app/etc'
[Progress: 850 / 851]
Write installation date...
[Progress: 851 / 851]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_1t4wii
Nothing to import.
In [ ]:
php -S localhost:8890 -t ~/magento2/pub/ ~/magento2/phpserver/router.php
[Thu Nov  2 14:54:31 2023] PHP 8.2.12 Development Server (http://localhost:8890) started
In [ ]:
php -S 127.0.0.1:8890 -t ~/magento2/pub/ ~/magento2/phpserver/router.php
In [ ]:
cd ~/magento2/ && bin/magento cron:install --force
Crontab has been generated and saved
In [ ]:
crontab -l
#~ MAGENTO START cd95fadb56f392d0664922423b5cc7cdcbb5f1741b53b8cf4af80c8de1136992
* * * * * /usr/bin/php8.2 /home/saintway/amemoba-kobe/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /home/saintway/amemoba-kobe/var/log/magento.cron.log
#~ MAGENTO END cd95fadb56f392d0664922423b5cc7cdcbb5f1741b53b8cf4af80c8de1136992

In [ ]:
cd ~/magento2/ && bin/magento cron:run --group index
Ran jobs by schedule.
In [ ]:
cd ~/magento2/ && bin/magento cron:run --group default
Ran jobs by schedule.
In [ ]:
cd ~/magento2/ && bin/magento cron:remove
Magento cron tasks have been removed
In [ ]:
cd ~/magento2/ && bin/magento help setup:config:set
In [ ]:
cd ~/magento2/ && bin/magento help setup:store-config:set
In [ ]:
cd ~/magento2/ && bin/magento help config:set
In [ ]:
cd ~/magento2/ && bin/magento list
In [ ]:
cd ~/magento2/ && bin/magento app:config:status
In [ ]:
cd ~/magento2/ && bin/magento cache:clean
In [ ]:
cd ~/magento2/ && bin/magento cache:status
In [ ]:
cd ~/magento2/ && bin/magento deploy:mode:set developer
In [ ]:
cd ~/magento2/ && bin/magento deploy:mode:show
In [ ]:
cd ~/magento2/ && bin/magento config:set web/url/redirect_to_base 0
Value was saved.
In [ ]:
cd ~/magento2/ && bin/magento config:set web/seo/use_rewrites 0
Value was saved.
In [ ]:
cd ~/magento2/ && bin/magento config:set web/unsecure/base_url http://jhub.name:8890/
Value was saved.
In [ ]:
cd ~/magento2/ && bin/magento config:set web/secure/base_url http://jhub.name:8890/
Value was saved.
In [ ]:
cd ~/magento2/ && bin/magento config:set web/unsecure/base_url https://jhub.name/magento/
Value was saved.
In [ ]:
cd ~/magento2/ && bin/magento config:set web/secure/base_url https://jhub.name/magento/
Value was saved.
In [ ]:
cd ~/magento2/ && bin/magento config:show
catalog/search/engine - elasticsearch7
catalog/search/elasticsearch7_server_hostname - localhost
catalog/search/elasticsearch7_server_port - 9200
catalog/search/elasticsearch7_index_prefix - mobaichi
catalog/search/elasticsearch7_server_timeout - 15
catalog/category/root_id - 2
web/seo/use_rewrites - 0
web/unsecure/base_url - https://jhub.name/magento/
web/unsecure/base_static_url - 
web/unsecure/base_media_url - 
web/secure/base_url - https://jhub.name/magento/
web/secure/base_static_url - 
web/secure/base_media_url - 
web/secure/enable_hsts - 0
web/secure/enable_upgrade_insecure - 0
web/default_layouts/default_product_layout - 
web/default_layouts/default_category_layout - 
web/default_layouts/default_cms_layout - 1column
web/cookie/cookie_path - 
web/cookie/cookie_domain - 
web/cookie/cookie_httponly - 1
web/url/redirect_to_base - 0
general/locale/code - ja_JP
general/locale/timezone - Asia/Tokyo
general/region/display_all - 1
general/region/state_required - AL,AR,AU,BG,BO,BR,BY,CA,CH,CL,CN,CO,CZ,DK,EC,EE,ES,GR,GY,HR,IN,IS,IT,LT,LV,MX,PE,PL,PT,PY,RO,SE,SR,US,UY,VE
currency/options/base - JPY
currency/options/default - JPY
currency/options/allow - JPY
analytics/subscription/enabled - 1
analytics/general/token - V8pH4aChkpnbnyrVHz7cpdqvcUAsB2Cx4XGM2OtPnozajEVcbB5j4e-IxRoy7pTyopfGHAcfSKcFFb8cCB8_fg
crontab/default/jobs/analytics_collect_data/schedule/cron_expr - 00 02 * * *
crontab/default/jobs/analytics_update/schedule/cron_expr - 0 * * * *
admin/usage/enabled - 0
paypal/general/merchant_country - JP
paypal/general/business_account - 
paypal/wpp/api_authentication - 0
paypal/wpp/api_username - 
paypal/wpp/api_password - 
paypal/wpp/api_signature - 
paypal/wpp/sandbox_flag - 0
paypal/wpp/use_proxy - 0
paypal/wpp/button_flavor - dynamic
paypal/fetch_reports/ftp_login - 
paypal/fetch_reports/ftp_password - 
paypal/fetch_reports/ftp_sandbox - 0
paypal/fetch_reports/ftp_ip - 
paypal/fetch_reports/ftp_path - 
paypal/fetch_reports/active - 0
paypal/fetch_reports/schedule - 1
paypal/fetch_reports/time - 00,00,00
paypal/style/logo - 
paypal/style/page_style - 
paypal/style/paypal_hdrimg - 
paypal/style/paypal_hdrbackcolor - 
paypal/style/paypal_hdrbordercolor - 
paypal/style/paypal_payflowcolor - 
paypal/style/checkout_page_button_customize - 0
paypal/style/product_page_button_customize - 0
paypal/style/cart_page_button_customize - 0
paypal/style/mini_cart_page_button_customize - 0
paypal/style/disable_funding_options - 
payment/komoju_payments/active - 1
payment/komoju_payments/merchant_id - d7b3l2bsi5k6jpnb6ekzc1zjl
payment/komoju_payments/secret_key - ******
payment/komoju_payments/webhook_secret_token - ******
payment/komoju_payments/title - コンビニ・クレジットカード決済
payment/komoju_payments/show_title - 1
payment/paypal_express/active - 0
payment/paypal_express/in_context - 0
payment/paypal_express/title - PayPal Express Checkout
payment/paypal_express/sort_order - 
payment/paypal_express/payment_action - Authorization
payment/paypal_express/visible_on_product - 1
payment/paypal_express/visible_on_cart - 1
payment/paypal_express/allowspecific - 0
payment/paypal_express/debug - 0
payment/paypal_express/verify_peer - 1
payment/paypal_express/line_items_enabled - 1
payment/paypal_express/transfer_shipping_options - 0
payment/paypal_express/solution_type - Mark
payment/paypal_express/require_billing_address - 0
payment/paypal_express/allow_ba_signup - never
payment/paypal_express/skip_order_review_step - 1
payment/paypal_paylater/experience_active - 0
payment/paypal_express_bml/publisher_id - 
payment/paypal_express_bml/homepage_display - 0
payment/paypal_express_bml/homepage_position - 0
payment/paypal_express_bml/homepage_size - 190x100
payment/paypal_express_bml/categorypage_display - 0
payment/paypal_express_bml/categorypage_position - 0
payment/paypal_express_bml/categorypage_size - 190x100
payment/paypal_express_bml/productpage_display - 0
payment/paypal_express_bml/productpage_position - 0
payment/paypal_express_bml/productpage_size - 190x100
payment/paypal_express_bml/checkout_display - 0
payment/paypal_express_bml/checkout_position - 0
payment/paypal_express_bml/checkout_size - 234x60
payment/paypal_billing_agreement/active - 1
payment/paypal_billing_agreement/title - PayPal Billing Agreement
payment/paypal_billing_agreement/sort_order - 
payment/paypal_billing_agreement/payment_action - Authorization
payment/paypal_billing_agreement/allowspecific - 0
payment/paypal_billing_agreement/debug - 0
payment/paypal_billing_agreement/verify_peer - 1
payment/paypal_billing_agreement/line_items_enabled - 0
payment/paypal_billing_agreement/allow_billing_agreement_wizard - 1
payment/payflow_express/active - 0
payment/payflow_express/title - PayPal Express Checkout Payflow Edition
payment/payflow_express/sort_order - 
payment/payflow_express/payment_action - Authorization
payment/payflow_express/visible_on_product - 1
payment/payflow_express/visible_on_cart - 1
payment/payflow_express/allowspecific - 0
payment/payflow_express/debug - 0
payment/payflow_express/verify_peer - 1
payment/payflow_express/line_items_enabled - 1
payment/payflow_advanced/active - 0
payment/payflow_advanced/partner - PayPal
payment/payflow_advanced/vendor - PayPal
payment/payflow_advanced/user - 
payment/payflow_advanced/pwd - 
payment/payflow_advanced/sandbox_flag - 0
payment/payflow_advanced/use_proxy - 0
payment/payflow_advanced/title - Credit Card (Payflow Advanced)
payment/payflow_advanced/sort_order - 
payment/payflow_advanced/payment_action - Authorization
payment/payflow_advanced/allowspecific - 0
payment/payflow_advanced/debug - 0
payment/payflow_advanced/verify_peer - 1
payment/payflow_advanced/csc_editable - 1
payment/payflow_advanced/csc_required - 1
payment/payflow_advanced/email_confirmation - 0
payment/payflow_advanced/url_method - GET
payment/payflow_express_bml/active - 0
payment/paypal_payment_pro/active - 0
payment/payflowpro_cc_vault/active - 0
payment/payflowpro_cc_vault/title - Stored Cards (Payflow Pro)
payment/payflowpro/partner - 
payment/payflowpro/user - 
payment/payflowpro/vendor - 
payment/payflowpro/pwd - 
payment/payflowpro/sandbox_flag - 0
payment/payflowpro/use_proxy - 0
payment/payflowpro/title - Credit Card (Payflow Pro)
payment/payflowpro/sort_order - 
payment/payflowpro/payment_action - Authorization
payment/payflowpro/cctypes - AE,VI
payment/payflowpro/allowspecific - 0
payment/payflowpro/debug - 0
payment/payflowpro/verify_peer - 1
payment/payflowpro/useccv - 1
payment/payflowpro/fmf - 0
payment/payflowpro/avs_street - 0
payment/payflowpro/avs_zip - 0
payment/payflowpro/avs_international - 0
payment/payflowpro/avs_security_code - 1
payment/payflowpro/active - 0
payment/wps_express/active - 0
payment/wps_express_bml/active - 0
payment/payflow_link/active - 0
payment/payflow_link/partner - PayPal
payment/payflow_link/vendor - 
payment/payflow_link/user - 
payment/payflow_link/pwd - 
payment/payflow_link/sandbox_flag - 0
payment/payflow_link/use_proxy - 0
payment/payflow_link/title - Credit Card (Payflow Link)
payment/payflow_link/sort_order - 
payment/payflow_link/payment_action - Authorization
payment/payflow_link/allowspecific - 0
payment/payflow_link/debug - 0
payment/payflow_link/verify_peer - 1
payment/payflow_link/csc_editable - 1
payment/payflow_link/csc_required - 1
payment/payflow_link/email_confirmation - 0
payment/payflow_link/url_method - GET
payment/free/specificcountry - 
payment/checkmo/active - 0
payment/checkmo/specificcountry - 
payment/checkmo/payable_to - 
payment/checkmo/mailing_address - 
payment/checkmo/min_order_total - 
payment/checkmo/max_order_total - 
payment/checkmo/sort_order - 
payment/banktransfer/specificcountry - 
payment/banktransfer/instructions - 
payment/banktransfer/min_order_total - 
payment/banktransfer/max_order_total - 
payment/banktransfer/sort_order - 
payment/cashondelivery/specificcountry - 
payment/cashondelivery/instructions - 
payment/cashondelivery/min_order_total - 
payment/cashondelivery/max_order_total - 
payment/cashondelivery/sort_order - 
payment/purchaseorder/specificcountry - 
payment/purchaseorder/min_order_total - 
payment/purchaseorder/max_order_total - 
payment/purchaseorder/sort_order - 
payment/hosted_pro/active - 0
payment/hosted_pro/title - Payment by cards or by PayPal account
payment/hosted_pro/sort_order - 
payment/hosted_pro/payment_action - Authorization
payment/hosted_pro/display_ec - 0
payment/hosted_pro/allowspecific - 0
payment/hosted_pro/debug - 0
payment/hosted_pro/verify_peer - 1
In [ ]:
git clone https://github.com/amemoba/magento-i18n ~/amemoba-kobe/app/i18n/Magento
In [ ]:
cd ~/amemoba-kobe && bin/magento cache:clean
In [ ]:
rm ~/amemoba-kobe/pub/static/adminhtml/Magento/backend/zh_Hans_CN/js-translation.json
rm ~/amemoba-kobe/pub/static/frontend/Magento/luma/zh_Hans_CN/js-translation.json
In [ ]:
cd ~/amemoba-kobe && bin/magento setup:static-content:deploy -f zh_Hans_CN
cd ~/amemoba-kobe && bin/magento cache:flush
In [ ]:
cd /mnt/d && git clone https://github.com/magentoj/language-ja_JP magento-ja
Cloning into 'magento-ja'...
remote: Enumerating objects: 114, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 114 (delta 4), reused 9 (delta 3), pack-reused 98
Receiving objects: 100% (114/114), 1.56 MiB | 5.37 MiB/s, done.
Resolving deltas: 100% (53/53), done.
In [ ]:
mkdir -p ~/amemoba-kobe/app/i18n/Magento/ja_JP/
cp /mnt/d/magento-ja/composer.json ~/amemoba-kobe/app/i18n/Magento/ja_JP/
cp /mnt/d/magento-ja/language.xml ~/amemoba-kobe/app/i18n/Magento/ja_JP/
cp /mnt/d/magento-ja/LICENSE.txt ~/amemoba-kobe/app/i18n/Magento/ja_JP/
cp /mnt/d/magento-ja/LICENSE_AFL.txt ~/amemoba-kobe/app/i18n/Magento/ja_JP/
cp /mnt/d/magento-ja/registration.php ~/amemoba-kobe/app/i18n/Magento/ja_JP/
In [ ]:
cp /mnt/d/magento-ja/ja_JP.csv ~/amemoba-kobe/app/i18n/Magento/ja_JP/
In [ ]:
cd ~/amemoba-kobe && bin/magento cache:clean
In [ ]:
rm ~/amemoba-kobe/pub/static/adminhtml/Magento/backend/ja_JP/js-translation.json
rm ~/amemoba-kobe/pub/static/frontend/Magento/luma/ja_JP/js-translation.json
In [ ]:
cd ~/amemoba-kobe && bin/magento setup:static-content:deploy -f ja_JP
cd ~/amemoba-kobe && bin/magento cache:flush
In [ ]:
git clone https://github.com/degica/komoju-magento.git ~/komoju
Cloning into '/home/jupyter-saintway/komoju'...
remote: Enumerating objects: 1991, done.        
remote: Counting objects: 100% (1/1), done.        
remote: Total 1991 (delta 0), reused 0 (delta 0), pack-reused 1990        
Receiving objects: 100% (1991/1991), 2.53 MiB | 13.93 MiB/s, done.
Resolving deltas: 100% (844/844), done.
In [ ]:
cp -r ~/komoju/src/app/code/Komoju ~/magento2/app/code
In [ ]:
cd ~/magento2 && bin/magento setup:upgrade
cd ~/magento2 && bin/magento setup:di:compile
cd ~/magento2 && bin/magento cache:flush
In [ ]:
cd ~/magento2 && bin/magento -f setup:static-content:deploy
In [ ]:
sudo apt update
sudo apt install nodejs
sudo apt install npm
In [ ]:
npm -v
In [ ]:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15916  100 15916    0     0  44046      0 --:--:-- --:--:-- --:--:-- 44088
=> Downloading nvm from git to '/home/saintway/.nvm'
=> Cloning into '/home/saintway/.nvm'...
remote: Enumerating objects: 360, done.
remote: Counting objects: 100% (360/360), done.
remote: Compressing objects: 100% (306/306), done.
remote: Total 360 (delta 41), reused 166 (delta 28), pack-reused 0
Receiving objects: 100% (360/360), 220.81 KiB | 5.52 MiB/s, done.
Resolving deltas: 100% (41/41), done.
* (HEAD detached at FETCH_HEAD)
  master
=> Compressing and cleaning up git repository

=> Appending nvm source string to /home/saintway/.bashrc
=> Appending bash_completion source string to /home/saintway/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
In [ ]:
nvm install 14
Downloading and installing node v14.21.3...
Downloading https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xz...
######################################################################### 100.0%                                                                           0.1%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.21.3 (npm v6.14.18)
Creating default alias: default -> 14 (-> v14.21.3)
In [ ]:
node -v
v14.21.3
In [ ]:
npm install hexo-cli -g
In [ ]:
hexo init ~/amemoba-kansai
In [ ]:
cd ~/amemoba-kansai && npm install
In [ ]:
git clone https://github.com/EvanNotFound/hexo-theme-redefine.git ~/amemoba-kansai/themes/redefine
Cloning into '/home/saintway/amemoba-kansai/themes/redefine'...
remote: Enumerating objects: 5374, done.
remote: Counting objects: 100% (1475/1475), done.
remote: Compressing objects: 100% (443/443), done.
remote: Total 5374 (delta 1118), reused 1219 (delta 1020), pack-reused 3899
Receiving objects: 100% (5374/5374), 42.71 MiB | 12.94 MiB/s, done.
Resolving deltas: 100% (3608/3608), done.
In [ ]:
wget https://amemoba.com/wpn/wp-content/themes/amemoba/images/favicon.ico -O ~/amemoba-kansai/themes/redefine/source/images/amemoba-favicon.ico
--2023-10-22 14:15:55--  https://amemoba.com/wpn/wp-content/themes/amemoba/images/favicon.ico
Resolving amemoba.com (amemoba.com)... 183.90.231.153
Connecting to amemoba.com (amemoba.com)|183.90.231.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4286 (4.2K) [image/vnd.microsoft.icon]
Saving to: ‘/home/saintway/amemoba-kansai/themes/redefine/source/images/amemoba-favicon.ico’

/home/saintway/amem 100%[===================>]   4.19K  --.-KB/s    in 0s      

2023-10-22 14:15:55 (1.25 GB/s) - ‘/home/saintway/amemoba-kansai/themes/redefine/source/images/amemoba-favicon.ico’ saved [4286/4286]

In [ ]:
wget https://amemoba.com/wpn/wp-content/themes/amemoba/images/common/header-logo.png -O ~/amemoba-kansai/themes/redefine/source/images/amemoba-avatar.png
--2023-10-22 14:39:07--  https://amemoba.com/wpn/wp-content/themes/amemoba/images/common/header-logo.png
Resolving amemoba.com (amemoba.com)... 183.90.231.153
Connecting to amemoba.com (amemoba.com)|183.90.231.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34002 (33K) [image/png]
Saving to: ‘/home/saintway/amemoba-kansai/themes/redefine/source/images/amemoba-avatar.png’

/home/saintway/amem 100%[===================>]  33.21K  --.-KB/s    in 0.001s  

2023-10-22 14:39:07 (21.7 MB/s) - ‘/home/saintway/amemoba-kansai/themes/redefine/source/images/amemoba-avatar.png’ saved [34002/34002]

In [ ]:
cd ~/amemoba-kansai && hexo server
INFO  Validating config
INFO  Start processing
INFO  Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.
INFO  
===================================================================
      ______ __  __  ______  __    __  ______                       
     /\__  _/\ \_\ \/\  ___\/\ "-./  \/\  ___\                      
     \/_/\ \\ \  __ \ \  __\\ \ \-./\ \ \  __\                      
        \ \_\\ \_\ \_\ \_____\ \_\ \ \_\ \_____\                    
         \/_/ \/_/\/_/\/_____/\/_/  \/_/\/_____/                    
                                                               
 ______  ______  _____   ______  ______ __  __   __  ______    
/\  == \/\  ___\/\  __-./\  ___\/\  ___/\ \/\ "-.\ \/\  ___\   
\ \  __<\ \  __\\ \ \/\ \ \  __\\ \  __\ \ \ \ \-.  \ \  __\   
 \ \_\ \_\ \_____\ \____-\ \_____\ \_\  \ \_\ \_\\"\_\ \_____\ 
  \/_/ /_/\/_____/\/____/ \/_____/\/_/   \/_/\/_/ \/_/\/_____/
                                                               
  Github: https://github.com/EvanNotFound/hexo-theme-redefine
      current version is v2.5.0,latest version is v2.5.0
===================================================================
In [ ]:
cd ~/amemoba-kansai && npm install hexo-deployer-git --save

Bash

In [ ]:
wget https://amemoba.com/wpn/wp-content/themes/amemoba/images/favicon.ico -O ~/amemoba-kansai/themes/keep/source/images/amemoba-favicon.ico
--2023-11-08 19:16:54--  https://amemoba.com/wpn/wp-content/themes/amemoba/images/favicon.ico
Resolving amemoba.com (amemoba.com)... 183.90.231.153
Connecting to amemoba.com (amemoba.com)|183.90.231.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4286 (4.2K) [image/vnd.microsoft.icon]
Saving to: ‘/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-favicon.ico’

/home/saintway/amem 100%[===================>]   4.19K  --.-KB/s    in 0s      

2023-11-08 19:16:54 (889 MB/s) - ‘/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-favicon.ico’ saved [4286/4286]

In [ ]:
pip install pillow
Defaulting to user installation because normal site-packages is not writeable
Collecting pillow
  Downloading Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.6/3.6 MB 7.1 MB/s eta 0:00:00[36m0:00:01[36m0:00:01
Installing collected packages: pillow
Successfully installed pillow-10.1.0

Python

In [ ]:
from PIL import Image

# 打开图片
image = Image.open('/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-favicon.png')

# 将图像转换为 RGBA 模式(如果尚未为 RGBA)
image = image.convert('RGBA')

# 获取图片的尺寸
width, height = image.size

# 处理每个像素
for x in range(width):
    for y in range(height):
        r, g, b, a = image.getpixel((x, y))

        # 判断像素是否为红色(根据具体情况来判断颜色)
        if r > 150 and g < 100 and b < 100:
            # 将红色部分替换为蓝色
            image.putpixel((x, y), (b, g, r, a))  # 设置像素为蓝色并保持原透明度
        else:
            # 在新图像上复制原图的非红色部分
            image.putpixel((x, y), (r, g, b, a))

# 保存修改后的图片
image.save('/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-favicon.png')

Bash

In [ ]:
wget https://amemoba.com/wpn/wp-content/themes/amemoba/images/common/header-logo.png -O ~/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png
--2023-11-08 17:25:09--  https://amemoba.com/wpn/wp-content/themes/amemoba/images/common/header-logo.png
Resolving amemoba.com (amemoba.com)... 183.90.231.153
Connecting to amemoba.com (amemoba.com)|183.90.231.153|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34002 (33K) [image/png]
Saving to: ‘/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png’

/home/saintway/amem 100%[===================>]  33.21K  --.-KB/s    in 0s      

2023-11-08 17:25:09 (84.7 MB/s) - ‘/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png’ saved [34002/34002]


Python

In [ ]:
from PIL import Image

# 打开图片
image = Image.open('/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png')

# 将图像转换为 RGBA 模式(如果尚未为 RGBA)
image = image.convert('RGBA')

# 获取图片的尺寸
width, height = image.size

# 处理每个像素
for x in range(width):
    for y in range(height):
        r, g, b, a = image.getpixel((x, y))

        # 判断像素是否为红色(根据具体情况来判断颜色)
        if r > 150 and g < 100 and b < 100:
            # 将红色部分替换为蓝色
            image.putpixel((x, y), (b, g, r, a))  # 设置像素为蓝色并保持原透明度
        else:
            # 在新图像上复制原图的非红色部分
            image.putpixel((x, y), (r, g, b, a))

# 保存修改后的图片
image.save('/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png')
In [ ]:
from PIL import Image

# 打开图片
image = Image.open('/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png')

# 将图像转换为 RGBA 模式(如果尚未为 RGBA)
image = image.convert('RGBA')

# 获取图片的尺寸
width, height = image.size

# 处理每个像素
for x in range(width):
    for y in range(height):
        r, g, b, a = image.getpixel((x, y))

        # 判断像素是否为蓝色(根据具体情况来判断颜色)
        if r < 100 and g < 100 and b > 150:
            # 将蓝色部分替换为红色
            image.putpixel((x, y), (b, g, r, a))  # 设置像素为红色并保持原透明度
        else:
            # 在新图像上复制原图的非蓝色部分
            image.putpixel((x, y), (r, g, b, a))

# 保存修改后的图片
image.save('/home/saintway/amemoba-kansai/themes/keep/source/images/amemoba-avatar.png')
In [ ]:
 
Read More