当肿瘤遇上免疫密码:揭秘 Z@CMDH 【AbMole】

免疫细胞的 "战场感知" 能力早已被证实:在柔软的正常组织中,T 细胞如灵活的特种兵快速游走、识别靶标;但在坚硬的肿瘤基质里,它们的运动速度下降 60%,表面 PD-1 分子表达量激增,仿佛被施了 "定身咒"。更棘手的是,肿瘤细胞会通过分泌胶原蛋白和透明质酸,主动 "加固" 阵地,形成恶性循环。如何打破这种 "硬度 - 免疫抑制" 的闭环,成为摆在科研团队面前的难题。​

二、材料学家的破局之道:Z@CMDH 的仿生设计​

(一)从贝壳珍珠层获得的灵感​

自然界的珍珠层给出了巧妙启示:文石晶体与有机质的层状结构,在保持高强度的同时具备良好韧性。研究团队据此设计出新型仿生材料 Z@CMDH—— 将 zif-8 金属有机框架(MOF)均匀负载于壳聚糖 - 明胶水凝胶(CMDH)中,形成 "刚性纳米核 - 柔性有机壳" 的复合结构。通过调整 MOF 含量,可精准调控材料硬度在 10-100kPa 之间,覆盖骨肉瘤间质的硬度范围。​

(二)AbMole 工具的精准助力​

在材料生物相容性测试中,AbMole 的 CCK-8 试剂发挥了关键作用:将不同浓度的 Z@CMDH 提取物加入成骨细胞和 MG-63 骨肉瘤细胞培养体系,72 小时后检测吸光度。数据显示,当 MOF 负载量≤20% 时,细胞存活率均>90%,证实材料无显著毒性。而 Annexin V-FITC/PI 凋亡试剂盒则揭示了有趣现象:在硬度匹配肿瘤间质(80kPa)的 Z@CMDH 上,骨肉瘤细胞的早期凋亡率比传统刚性培养板高 35%,提示材料本身可能具备促凋亡潜力。​

(三)三维培养模型的构建​

为模拟真实肿瘤微环境,研究人员构建了三层结构的体外模型:底层为 10kPa 的柔软基质模拟正常骨膜,中层为梯度硬度的 Z@CMDH 模拟肿瘤间质,顶层接种原代 T 细胞。这种 "三明治" 结构首次实现了力学信号与免疫细胞迁移的动态观察,配合活细胞工作站,可实时记录 T 细胞穿越不同硬度基质时的形态变化和细胞因子分泌情况。​

三、细胞层面的攻防逆转:从基质硬度到信号传导​

(一)硬度调控的基因开关​

RNA-seq 分析显示,在 80kPa 的 Z@CMDH 上培养 48 小时后,骨肉瘤细胞的 ECM 重构相关基因(如 COL1A1、TGF-β1)表达下调 40%-60%,而 MHC-I 类分子表达上调 2.3 倍。这意味着材料通过物理信号抑制了肿瘤细胞的 "筑墙" 行为,同时增强了其抗原呈递能力。更令人振奋的是,硬度敏感的 YAP/TAZ 信号通路被显著抑制 —— 这个在肿瘤机械信号转导中起核心作用的通路,其核定位率从传统基质的 75% 降至 42%,仿佛拔掉了肿瘤细胞感知硬度的 "触角"。​

(二)免疫细胞的激活密码​

当 T 细胞从 10kPa 的柔软基质向 80kPa 的 Z@CMDH 迁移时,显微镜下呈现出令人惊叹的变化:细胞伸出更长的伪足,CD69 激活标志物的表达量在 3 小时内激增 5 倍,IFN-γ 的分泌量达到传统刚性环境的 2.8 倍。Transwell 实验进一步证实,Z@CMDH 通过降低基质弹性模量,使 T 细胞穿越效率提升 60%,且这种效应可被 YAP 抑制剂完全阻断,明确了硬度 - 信号通路 - 免疫激活的传导链条。​

四、活体实验的关键验证:从异位瘤到原位瘤的突破​

(一)小鼠模型的分层验证​

研究人员首先构建了两种小鼠模型:​

  1. 皮下异位瘤模型:将 MG-63 细胞与不同硬度的 Z@CMDH 混合接种于裸鼠背部。4 周后,80kPa 组的肿瘤体积比对照组(传统 Matrigel)小 42%,CD8+ T 细胞浸润密度增加 3 倍,且肿瘤间质中的胶原纤维排列更松散,呈现典型的 "软化" 特征。​
  1. 胫骨原位瘤模型:通过显微注射将细胞定植于 C57BL/6 小鼠胫骨,模拟临床原发灶微环境。借助生物发光成像,发现 Z@CMDH 处理组的肺转移结节数量减少 58%,且转移灶中的 T 细胞聚集现象明显增强。​

(二)机制解析的层层递进​

免疫组化染色揭示了关键分子变化:Z@CMDH 处理的肿瘤组织中,PD-L1 表达量下降 40%,而 LFA-1(T 细胞黏附分子)表达量上升 65%,形成 "降低免疫抑制 - 增强细胞黏附" 的双重优势。Western blot 实验则显示,肿瘤细胞内的 FAK 磷酸化水平(机械信号转导关键分子)下降 55%,同时 T 细胞中的 p-ERK1/2 水平升高 3 倍,证实材料通过双向调节重塑了肿瘤 - 免疫细胞的交互界面。​

五、数据背后的工程学智慧:材料性能的精准调控​

(一)硬度 - 降解速率的平衡艺术​

通过调整壳聚糖与明胶的比例,Z@CMDH 的降解周期可在 7-28 天灵活控制。在 80kPa 硬度下,材料在 14 天内降解 40%,恰好匹配 T 细胞介导的免疫应答周期 —— 过早降解无法持续重塑微环境,过慢则可能引发异物反应。这种 "时效 - 硬度" 的精准匹配,是传统支架材料难以实现的突破。​

(二)临床转化的可行性评估​

血管生成实验显示,Z@CMDH 降解产物可促进 HUVEC 细胞形成管腔结构,且在植入兔股骨缺损模型后,4 周时新生骨组织面积比对照组增加 30%。这意味着该材料不仅具备免疫调控功能,还兼具骨组织修复潜力,为未来的临床应用提供了双重价值。​

六、改写战局的新希望:从基础研究到应用蓝图​

这项研究的突破性在于,首次建立了 "肿瘤硬度 - 免疫微环境 - 材料干预" 的完整调控链条。当 Z@CMDH 像一把 "分子级手术刀",在不损伤正常组织的前提下软化肿瘤基质,它实际上完成了对肿瘤微环境的 "降维打击"—— 既削弱了肿瘤细胞的物理防御,又激活了免疫系统的攻击潜能。​

Annexin V-FITC/PI细胞凋亡检测试剂盒 (Annexin V-FITC/PI Apoptosis Detection Kit) | AbMole | 细胞检测

AbMole 的实验试剂在这个过程中扮演了重要角色:CCK-8 试剂的精准细胞活力检测,确保了材料毒性评估的可靠性;Annexin V 试剂盒对早期凋亡的灵敏捕捉,帮助研究人员及时锁定材料的作用靶点。这些高质量的实验工具,如同精密仪器的校准器,为整个研究的严谨性提供了保障。

/*************************************************************************** * @file fw_hmi.c * @brief * **************************************************************************** * @attention * * Created on: 2025/05/22 * Author: Software Group * **************************************************************************** * @description * * * ****************************************************************************/ /************************ Includes *************************/ #include "main.h" /************************ Private types *************************/ /************************ Private constants *************************/ /************************ Private macros *************************/ /************************ Private variables *************************/ //static u8 sbuf[8] = {1,2,3,4,5,6,7,8}; /* 数据查询指令队列 */ static QueueHandle_t queue_hmi_data = NULL; /* 控制、设置指令队列 */ static QueueHandle_t queue_hmi_other = NULL; /************************ Functions *************************/ static void HmiDataPro(const u8* frame); static void HmiSetPro(const u8* frame); static void HmiCtrlPro(const u8* frame); static void HmiTestPro(const u8* frame); static void Send2Hmi(const u8 dev, const u16 cmd, const u16* data, const u16 len); /***************************** * @funName : FW_InitHmi * @Input : NULL * * @Output : **************** * @Description : 人机交互模块软件资源初始化 * ***************** * @Athor : Software Group * @Version : V0.0.0 * @Date : 2025/06/25 * *****************************/ void FW_InitHmi(void){ if(NULL == queue_hmi_data){ /* 仅预留一个数据查询指令,避免查询指令堆积 */ queue_hmi_data = xQueueCreate(1, sizeof(UART_Msg_Type)); if(NULL == queue_hmi_data){ /* 队列创建失败 */ } } if(NULL == queue_hmi_other){ queue_hmi_other = xQueueCreate(MSG_QUEUE_SIZE, sizeof(UART_Msg_Type)); if(NULL == queue_hmi_other){ /* 队列创建失败 */ } } } /****************************************** * @funName : FW_HmiRecvPro * @Input : NULL * * @Output : ***************** * @Description : 人机交互接收数据帧处理 * * ***************** * @Athor : Software Group * @Version : V0.0.0 * @Date : 2025/03/22 * *******************************************/ void FW_HmiRecvPro(void){ UART_Msg_Type RxMsg; /* 获取有效指令 */ bool bValid = true; const u8* const frame = RxMsg.buffer; u16 crc16 = 0, cmd = 0; while(BSP_Recv4RS485_1(&RxMsg)){ /* 帧头错误 */ if(HMI_FRAME_STX != frame[FRAME_IDX_STX]){ continue; } /* 帧长度错误,数据不完整 */ if(RxMsg.len < frame[FRAME_IDX_LEN]){ continue; } /* 目的地址不是监控系统 */ if(ADDR_MONITOR != frame[FRAME_IDX_DST] || ADDR_PC != frame[FRAME_IDX_SRC]){ continue; } crc16 = MB_CRC16(frame, frame[FRAME_IDX_LEN]-2); /* CRC16 校验错误 */ if(crc16 != ((u16)(frame[frame[FRAME_IDX_LEN]-2] << 8) | frame[frame[FRAME_IDX_LEN]-1]) ){ continue; } cmd = (frame[FRAME_IDX_CMDH]<<8) | frame[FRAME_IDX_CMDL]; switch(cmd){ case 0x0500: case 0x0501: case 0x0502: case 0x0503: case 0x0504: { xQueueSend(queue_hmi_data, &RxMsg, 0); }break; case 0x0301: case 0x0302: case 0x0401: case 0x0402: case 0x0403: case 0x0404: case 0x0411: case 0x0412: case 0x0413: case 0x0414: case 0x0A01: { xQueueSend(queue_hmi_other, &RxMsg, 0); }break; } } /* 优先获取控制、设定指令 */ if(false == xQueueReceive(queue_hmi_other, &RxMsg, 0)){ /* 未获取到控制指令时,尝试获取数据查询指令 */ if(xQueueReceive(queue_hmi_data, &RxMsg, 0)){ bValid = true; } else{ bValid = false; } } else{ bValid = true; } /* 指令队列中没有获取有效的指令 */ if(!bValid){ return; } cmd = (frame[FRAME_IDX_CMDH]<<8) | frame[FRAME_IDX_CMDL]; switch(cmd){ case 0x0301: case 0x0302: { HmiSetPro(frame); }break; /* 整流模块测试 */ case 0x0401: case 0x0402: case 0x0403: case 0x0404: /* 逆变部件测试 */ case 0x0411: case 0x0412: case 0x0413: case 0x0414: { HmiTestPro(frame); }break; case 0x0500: case 0x0501: case 0x0502: case 0x0503: case 0x0504: { HmiDataPro(frame); }break; case 0x0A01: { HmiCtrlPro(frame); }break; } } /****************************************** * @funName : HmiDataPro * @Input : * * @Output : NULL ***************** * @Description : 数据流处理 * * ***************** * @Athor : Software Group * @Version : V0.0.0 * @Date : 2025/07/17 * *******************************************/ static void HmiDataPro(const u8 *RxFrame){ u8 module = 0; u16 Buff_Rectifer[RECTIFIER_DATA_SIZE] = {0}; u16 Buff_Inverter[INVERTER_DATA_SIZE] = {0}; const u16 event = (u16)(RxFrame[FRAME_IDX_CMDH]<<8) | RxFrame[FRAME_IDX_CMDL]; switch(event){ /* 上传系统数据 */ case 0x0500: { /* 整流部件数据流 */ for(module = 0; module < MODULE_RECTIFIER_SIZE; module++){ memset((u8*)Buff_Rectifer, 0, RECTIFIER_DATA_SIZE<<1); if(FW_CacheReadRectifier(module, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0501+module, Buff_Rectifer, RECTIFIER_DATA_SIZE); vTaskDelay(TASK_5MS_PERIOD); } } /* 逆变部件数据流 */ for(module = 0; module < MODULE_INVERTER_SIZE; module++){ memset((u8*)Buff_Inverter, 0, INVERTER_DATA_SIZE<<1); if(FW_CacheWriteInverter(module, 0, Buff_Inverter, INVERTER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0511+module, Buff_Inverter, INVERTER_DATA_SIZE); vTaskDelay(TASK_5MS_PERIOD); } } }break; /* 整流部件数据流 */ case 0x0501: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(0, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0501, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0502: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(1, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0502, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0503: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(2, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0503, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0504: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(3, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0504, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0505: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(4, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0505, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0506: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(5, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0506, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0507: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(6, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0507, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0508: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(7, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0508, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; case 0x0509: { /* 整流部件数据流 */ if(FW_CacheReadRectifier(8, 0, Buff_Rectifer, RECTIFIER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0509, Buff_Rectifer, RECTIFIER_DATA_SIZE); } }break; /* 逆变部件数据流 */ case 0x0511: { /* 逆变部件数据流 */ memset((u8*)Buff_Inverter, 0, INVERTER_DATA_SIZE<<1); if(FW_CacheWriteInverter(0, 0, Buff_Inverter, INVERTER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0511, Buff_Inverter, INVERTER_DATA_SIZE); } }break; case 0x0512: { /* 逆变部件数据流 */ memset((u8*)Buff_Inverter, 0, INVERTER_DATA_SIZE<<1); if(FW_CacheWriteInverter(1, 0, Buff_Inverter, INVERTER_DATA_SIZE)){ Send2Hmi(ADDR_MONITOR, 0x0512, Buff_Inverter, INVERTER_DATA_SIZE); } }break; /* 系统状态 */ case 0x050E: { }break; } } /****************************************** * @funName : HmiSetPro * @Input : * * @Output : NULL ***************** * @Description : 指令流处理 * * ***************** * @Athor : Software Group * @Version : V0.0.0 * @Date : 2025/07/17 * *******************************************/ static void HmiSetPro(const u8 *frame){ const u16 event = (u16)(frame[FRAME_IDX_CMDH]<<8) | frame[FRAME_IDX_CMDL]; switch(event){ /* 输出电压设置 */ case 0x0301: { }break; /* 输出电流设置 */ case 0x0302: { }break; /* 输出频率设置 */ case 0x0303: { }break; } } /****************************************** * @funName : HmiCtrlPro * @Input : * * @Output : NULL ***************** * @Description : 控制流处理 * * ***************** * @Athor : Software Group * @Version : V0.0.0 * @Date : 2025/07/17 * *******************************************/ static void HmiCtrlPro(const u8 *frame){ const u16 event = (u16)(frame[FRAME_IDX_CMDH]<<8) | frame[FRAME_IDX_CMDL]; switch(event){ /* 开关机 */ case 0x0A01: { }break; /* 工作模式 */ case 0x0A02: { }break; } } /****************************************** * @funName : HmiTestPro * @Input : * * @Output : NULL ***************** * @Description : 测试使用 * * ***************** * @Athor : Software Group * @Version : V0.0.0 * @Date : 2025/09/08 * *******************************************/ static void HmiTestPro(const u8 *frame){ const u16 event = (u16)(frame[FRAME_IDX_CMDH]<<8) | frame[FRAME_IDX_CMDL]; switch(event){ /*************** 整流模块测试 ***************/ case 0x0401: { /* 拨码方式分配地址 */ FW_SetRectifierAddrAssignType(1); }break; case 0x0402: { /* 设置组号 */ FW_SetRectifierGroup(0); }break; case 0x0403: { const u16 V = (frame[FRAME_IDX_DAT]<<8)|frame[FRAME_IDX_DAT+1]; const u16 I = (frame[FRAME_IDX_DAT+2]<<8)|frame[FRAME_IDX_DAT+3]; /* 设置参数 */ FW_SetRectifierPara(V, I); }break; case 0x0404: { /* 开机启动 0-开机 1-关机*/ FW_PowerRectifier(frame[FRAME_IDX_DAT]); }break; /*************** 逆变部件测试 ***************/ case 0x0411: { }break; case 0x0412: { }break; case 0x0413: { }break; case 0x0414: { }break; } } static void Send2Hmi(const u8 dev, const u16 cmd, const u16* data, const u16 len){ static u8 i = 0, byte[DMA_TX_BUFF_SIZE] = {0}; u16 crc16 = 0; memset(byte, 0, DMA_TX_BUFF_SIZE); byte[FRAME_IDX_STX] = HMI_FRAME_STX; byte[FRAME_IDX_LEN] = len*2 + 8; byte[FRAME_IDX_DST] = ADDR_PC; byte[FRAME_IDX_SRC] = dev; /* 指令 */ byte[FRAME_IDX_CMDH] = cmd>>8; byte[FRAME_IDX_CMDL] = cmd&0xff; for(i = 0; i < len; i++){ byte[FRAME_IDX_DAT + 2*i] = (data[i] >> 8) & 0xff; byte[FRAME_IDX_DAT + 2*i + 1] = data[i] & 0xff; } crc16 = MB_CRC16(byte, byte[FRAME_IDX_LEN]-2); byte[byte[FRAME_IDX_LEN]-2] = (crc16 >> 8) & 0xff; byte[byte[FRAME_IDX_LEN]-1] = crc16 & 0xff; BSP_Send2RS485_1(byte, byte[FRAME_IDX_LEN]); } /************************ End of file *************************/ 逐字逐句解析这段代码
09-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值