当前位置: 首页 > news >正文

一个关于fsaverage bem文件的说明

MNE文档:基于模板 MRI 的 EEG 前向算子
Head model and forward computation

在了解了脑图谱发展的过程之后,对脑的模版有了更深的认识,所以,对于之前使用的正向的溯源文件,进行一下解析,查看包含的信息,mne的存储格式和nilearn中的格式是否有区别。

本示例中,mne除了fsaverage还有sample,这两个常用。

文章目录

  • samaple和fsaverage的对比
      • 1. **`fsaverage`:标准模板大脑**
        • (1) **来源与定义**
        • (2) **数据结构**
        • (3) **获取方式**
      • 2. **`sample`:示例数据集**
        • (1) **来源与定义**
        • (2) **数据结构**
        • (3) **获取方式**
      • 3. **关键区别**
      • 4. **何时使用哪一个?**
        • (1) **使用 `fsaverage` 的场景**
        • (2) **使用 `sample` 的场景**
      • 5. **代码示例**
        • (1) 加载 `fsaverage` 的 BEM 模型
        • (2) 加载 `sample` 的 MEG 数据
      • 6. **常见问题**
        • (1) **能否将个体数据映射到 `fsaverage` 模板?**
        • (2) **`sample` 数据集是否包含 `fsaverage` 数据?**
        • (3) **如何切换被试目录?**
      • 7. **文档参考**
      • 总结
    • 几个模版被试的说明
      • 1. `fsaverage`
      • 2. `fsaverage_sym`
      • 3. `morph-maps`
      • 4. `sample`
      • 总结
  • 导入数据
    • bem文件的说明
      • 计算并可视化 BEM 表面
    • bem的surf查看
    • 单层的
    • 三层的
  • BEM模型键值详细分析
        • (1) **层 ID 4**(电导率 0.3 S/m)
        • (2) **层 ID 3**(电导率 0.006 S/m)
        • (3) **层 ID 1**(电导率 0.3 S/m)
      • 2. **电导率值的意义**
      • 3. **层 ID 的编号问题**
    • 使用nilearn进行fsaverage的导入
    • 对于src的查看
    • 使用 mne.viz.plot_bem
  • 生成一个bem文件

samaple和fsaverage的对比

在 MNE-Python 中,samplefsaverage 是两个不同的模板/数据集,但它们的用途和定位有本质区别。以下是详细解释:


1. fsaverage:标准模板大脑

(1) 来源与定义
  • 来源:由 FreeSurfer 提供,是一个 标准化的平均大脑模板,基于多被试 MRI 数据配准到 MNI 空间后生成。
  • 用途
    • 用于跨被试分析(如组水平统计)。
    • 当个体 MRI 数据不可用时,作为替代模板(如源空间、BEM、皮层表面等)。
    • 支持脑区标签(如 Brodmann 分区)的标准化映射。
(2) 数据结构
  • 包含内容
    • 高分辨率皮层表面(如 whitepialinflated)。
    • 预计算的 BEM 模型(如 fsaverage-5120-5120-5120-bem-sol.fif)。
    • 标准源空间(如 fsaverage-ico-5-src.fif)。
    • 解剖标签(如 aparc.a2009s 分区)。
  • 坐标系:MNI 坐标系(标准空间)。
(3) 获取方式
import mne
mne.datasets.fetch_fsaverage(subjects_dir="/path/to/your/subjects_dir")
  • 下载后文件存储在 subjects_dir/fsaverage/ 中。

2. sample:示例数据集

(1) 来源与定义
  • 来源:MNE-Python 官方提供的 单被试示例数据集,包含一名真实被试的匿名化数据(EEG/MEG/MRI)。
  • 用途
    • 学习 MNE 的入门工具(教程、文档示例)。
    • 测试算法或脚本的功能。
    • 演示数据预处理、源定位、可视化等完整流程。
(2) 数据结构
  • 包含内容
    • 原始 MEG 数据(.fif 文件)。
    • MRI 数据(已通过 FreeSurfer 重建的个体大脑)。
    • 事件标记、电极位置、噪声协方差矩阵等。
    • 预计算的 BEM 模型、源空间、正向模型。
  • 坐标系:个体 MRI 坐标系(未经 MNI 标准化)。
(3) 获取方式
import mne
sample_data_path = mne.datasets.sample.data_path()
subjects_dir = sample_data_path / "subjects"

3. 关键区别

特性fsaveragesample
类型标准模板(群体平均)单被试真实数据(匿名化)
用途跨被试分析、模板化处理学习、测试、演示流程
坐标系MNI 空间个体 MRI 空间
BEM/源空间预生成的模板模型基于个体 MRI 生成的模型
数据内容仅解剖结构和模板数据完整的 MEG/EEG 数据 + 解剖数据

4. 何时使用哪一个?

(1) 使用 fsaverage 的场景
  • 你的研究没有个体 MRI 数据,需要标准化分析。
  • 进行组水平统计或跨被试比较。
  • 需要与文献中的 MNI 坐标结果对齐。
(2) 使用 sample 的场景
  • 学习 MNE 的基本操作(如教程中的代码示例)。
  • 测试新脚本或算法的兼容性。
  • 演示从原始数据到源定位的完整流程。

5. 代码示例

(1) 加载 fsaverage 的 BEM 模型
subjects_dir = "/path/to/subjects_dir"
bem_file = subjects_dir / "fsaverage/bem/fsaverage-5120-5120-5120-bem-sol.fif"
bem_sol = mne.read_bem_solution(bem_file)
(2) 加载 sample 的 MEG 数据
from mne.datasets import sample
data_path = sample.data_path()
raw_file = data_path / "MEG/sample/sample_audvis_raw.fif"
raw = mne.io.read_raw_fif(raw_file, preload=True)

6. 常见问题

(1) 能否将个体数据映射到 fsaverage 模板?

是的!通过 配准(registration) 将个体 MRI 对齐到 fsaverage 的 MNI 空间,使结果可跨被试比较。
工具:

  • FreeSurfer 的 recon-all --target fsaverage
  • MNE 的 mne.coregister
(2) sample 数据集是否包含 fsaverage 数据?

不直接包含,但可单独下载 fsaverage。两者通常分开使用。

(3) 如何切换被试目录?

设置 subjects_dir 环境变量或在代码中指定:

import mne
mne.set_config("SUBJECTS_DIR", "/path/to/your/subjects_dir")

7. 文档参考

  • fsaverage 文档
    MNE: FreeSurfer’s fsaverage
  • sample 数据集文档
    Sample Dataset Tutorial

总结

  • fsaverage 是标准模板大脑,用于跨被试分析和标准化处理。
  • sample 是单被试示例数据集,用于学习和测试。
  • 根据研究需求选择:需要模板化分析 → fsaverage;需要真实数据示例 → sample

在这里插入图片描述

几个模版被试的说明

你提到的四个文件夹 (fsaverage, fsaverage_sym, morph-maps, 和 sample) 在神经影像学和脑电图(EEG)/脑磁图(MEG)数据处理中扮演着不同的角色,它们分别对应不同的模板或功能。下面我将详细解释每个文件夹及其内容的区别:

1. fsaverage

  • 描述fsaverage 是一个标准的大脑模板,由 FreeSurfer 提供,并广泛用于神经影像研究中。它是一个平均化的、对称的大脑模型,基于多个大脑扫描结果构建而成。
  • 用途
    • 作为解剖参考框架,用于标准化不同被试的大脑数据。
    • 在 MNE-Python 中,常用于源定位分析,提供了一个通用的源空间和 BEM 模型。
  • 特点:高分辨率,包含详细的皮层结构信息。

2. fsaverage_sym

  • 描述fsaverage_symfsaverage 的一个变体,特别强调左右半球的对称性。这个模板在创建时进行了额外的处理,以确保两个半球尽可能对称。
  • 用途
    • 当需要进行严格对称性分析时使用,例如在研究左右半球功能差异时。
    • 对于某些特定的统计分析或可视化任务,可能更倾向于使用对称模板。
  • 特点:左右半球高度对称,适用于需要严格对称性的研究。

3. morph-maps

  • 描述morph-maps 文件夹通常包含形态映射(morphing maps),这些映射用于将一个被试的数据转换到另一个被试或模板上。
  • 用途
    • 在多被试研究中,用于将个体数据标准化到共同的空间框架下,便于跨被试比较和群体分析。
    • 可以将单个被试的源估计结果映射到 fsaverage 或其他模板上,以便进行群体水平的统计分析。
  • 特点:包含从个体到模板或其他个体的映射关系,是实现数据标准化和群体分析的关键工具。

4. sample

  • 描述sample 通常指的是一个示例被试的数据集,包括 EEG/MEG 数据、MRI 扫描结果等。MNE-Python 提供了一个名为 sample 的示例数据集,用于演示和教学目的。
  • 用途
    • 作为学习和测试 MNE-Python 功能的示例数据。
    • 研究人员可以使用 sample 数据集来熟悉各种数据处理和分析流程。
  • 特点:包含完整的实验数据和相关文件,适合初学者和开发者用来学习和调试代码。

总结

  • fsaveragefsaverage_sym:都是标准大脑模板,但后者更强调左右半球的对称性。
  • morph-maps:包含用于数据标准化和群体分析的形态映射。
  • sample:是一个示例数据集,用于学习和测试 MNE-Python 的功能。

在实际应用中,根据你的具体需求选择合适的模板和工具非常重要。如果你正在进行多被试研究,可能需要使用 morph-maps 来标准化数据;如果专注于单个被试的详细分析,则可以直接使用 fsaveragefsaverage_sym 作为参考框架。

导入数据

import numpy as npimport mne
from mne.datasets import eegbci, fetch_fsaverage# Download fsaverage files
fs_dir = fetch_fsaverage(verbose=True)
subjects_dir = fs_dir.parent# The files live in:
subject = "fsaverage"
trans = "fsaverage"  # MNE has a built-in fsaverage transformation
src = fs_dir / "bem" / "fsaverage-ico-5-src.fif"
bem = fs_dir / "bem" / "fsaverage-5120-5120-5120-bem-sol.fif"

我们获取fsaverage 的存储文件夹。
之前文件中有过一定的描述,下面进行更加详细的记录。

第一个文件fsaverage-ico-4-src.fif中的“src”可能代表“source
space”,即源空间。源空间定义了大脑中可能产生信号的源的位置,通常是皮层表面。ico-4可能指的是四阶的Icosahedron(二十面体)细分,用于生成源空间的网格。Ico-4的细分级别决定了源的数量,细分级别越高,源点越多,计算量也越大。用户可能需要这个文件来进行源定位分析,比如计算逆解。

第二个文件fsaverage-5120-5120-5120-bem-sol.fif中的“bem”代表边界元模型(Boundary
Element
Model),用于正向计算中的电磁场模拟。BEM模型需要不同组织的边界,如头皮、颅骨、脑脊液和大脑等。文件名中的5120可能指的是每个边界面(如头皮、颅骨、大脑)的三角形数量,例如5120个三角形。而“sol”可能表示解文件,即已经计算好的BEM模型的解,用于快速计算导联场或正向解。用户在进行EEG/MEG的正向计算时会用到这个文件。

先继续插入可视化的代码,对于raw,需要的可能是布局文件,

(raw_fname,) = eegbci.load_data(subjects=1, runs=[6])
raw = mne.io.read_raw_edf(raw_fname, preload=True)# Clean channel names to be able to use a standard 1005 montage
eegbci.standardize(raw)# Read and set the EEG electrode locations, which are already in fsaverage's
# space (MNI space) for standard_1020:
montage = mne.channels.make_standard_montage("standard_1005")
raw.set_montage(montage)
raw.set_eeg_reference(projection=True)  # needed for inverse modeling# Check that the locations of EEG electrodes is correct with respect to MRI
mne.viz.plot_alignment(raw.info,src=src,eeg=["original", "projected"],trans=trans,show_axes=True,mri_fiducials=True,dig="fiducials",
)

在这里插入图片描述

bem文件的说明

BEM 表面是不同组织之间界面三角剖分,用于前向计算。这些表面例如包括内颅骨表面、外颅骨表面和皮肤外表面,即头皮表面。

计算并可视化 BEM 表面

计算 BEM 表面需要使用 FreeSurfer,并使用命令行工具 mne watershed_bem 或 mne flash_bem,或者相关的函数 mne.bem.make_watershed_bem() 或 mne.bem.make_flash_bem()。

这里我们假设它已经计算过了。每个受试者需要几分钟。

对于脑电图(EEG),我们使用 3 层(内颅骨、外颅骨和皮肤),而对于脑磁图(MEG),只需要 1 层(内颅骨)就足够了。

bem.keys()

dict_keys([‘solution’, ‘bem_method’, ‘surfs’, ‘solver’, ‘is_sphere’,
‘nsol’, ‘sigma’, ‘source_mult’, ‘field_mult’, ‘gamma’])

bem的surf查看

如果要生成一个新的bem,应该需要,这几个层的surf文件
此处需要使用的就是,inner_skull.surf,outer_skull.surf,outer_skin.surf

Using surface:
C:\Users\maten\mne_data\MNE-fsaverage-data\fsaverage\bem\inner_skull.surf
Using surface:
C:\Users\maten\mne_data\MNE-fsaverage-data\fsaverage\bem\outer_skull.surf
Using surface:
C:\Users\maten\mne_data\MNE-fsaverage-data\fsaverage\bem\outer_skin.surf

显示一下,这个的样子

单层的

# 说明,使用pyvista,需要使用不同的绘图格式,表面的点需要转为数量,加上坐标的形式,并构成一维数组。
from mne import read_surface
import numpy as np
import pyvista as pv
import numpy as np
outer_skin_coords, outer_skin_faces = read_surface('C:/Users/maten/mne_data/MNE-fsaverage-data/fsaverage/bem/outer_skin.surf')
faces_pyvista = np.hstack((3 * np.ones((outer_skin_faces.shape[0], 1), dtype=outer_skin_faces.dtype), outer_skin_faces))
surf = pv.PolyData(outer_skin_coords, faces_pyvista.ravel())
surf.plot()

对于
outer skin CM is -0.21 -19.38 -0.23 mm
outer skull CM is -0.19 -19.34 -0.49 mm
inner skull CM is -0.53 -21.10 6.21 mm

这个对应的是质心的坐标。

在这里插入图片描述

三层的

from mne import read_surface
import pyvista as pv
import numpy as npdef create_polydata_from_mne_coords_faces(coords, faces):"""Convert coordinates and faces from MNE format to PyVista format."""# 在每个面的前面添加数字 3(因为是三角形)faces_pyvista = np.hstack((3 * np.ones((faces.shape[0], 1), dtype=faces.dtype), faces))return pv.PolyData(coords, faces_pyvista.ravel())# 定义表面文件路径
subjects_dir = 'C:/Users/maten/mne_data/MNE-fsaverage-data/fsaverage/bem/'
surfaces = [('inner_skull', subjects_dir + 'inner_skull.surf', 'blue'),('outer_skull', subjects_dir + 'outer_skull.surf', 'green'),('outer_skin', subjects_dir + 'outer_skin.surf', 'red')
]# 创建PyVista Plotter对象
plotter = pv.Plotter()# 循环遍历每个表面文件并添加到绘图器中
for name, path, color in surfaces:coords, faces = read_surface(path)polydata = create_polydata_from_mne_coords_faces(coords, faces)plotter.add_mesh(polydata, color=color, opacity=0.5, smooth_shading=True)# 显示图形
plotter.show()

在这里插入图片描述

BEM模型键值详细分析

BEM (边界元素法) 模型中的键值具有以下含义:

  1. solution:BEM求解矩阵,包含了边界面之间的电位关系,用于计算头部不同组织界面上的电位分布。

  2. bem_method:使用的BEM方法类型,常见的有"linear collocation"(线性搭配法)或"linear Galerkin"(线性伽辽金法)。

  3. surfs:包含头模型中使用的表面信息,通常包括内颅骨颅骨头皮三个表面的几何描述(点、面等)。

  4. solver:用于求解BEM方程的算法类型。

  5. is_sphere:布尔值,表示该BEM模型是否基于球形模型(True)或真实头部形状(False)。

  6. nsol:解决方案的维度或自由度数量。

  7. sigma:组织电导率值列表,单位通常为S/m(西门子/米),分别对应脑组织、颅骨和头皮的电导率。

  8. source_mult:源乘数,与源强度计算相关的系数。

  9. field_mult:场乘数,与电场计算相关的系数。

  10. gamma:BEM公式中的γ系数矩阵,用于描述不同表面之间的电位关系。

这些参数共同构成了完整的BEM解决方案,用于在MEG/EEG分析中进行正向计算,即从已知的源活动推算出在传感器位置处产生的场分布。

for layer in bem["surfs"]:print(f"层 ID: {layer['id']}")print(f"顶点数: {len(layer['rr'])}, 三角面片数: {len(layer['tris'])}")print(f"电导率 (σ): {layer['sigma']} S/m")

ID: 4 顶点数: 2562, 三角面片数: 5120 电导率 (σ): 0.30000001192092896 S/m
ID:3 顶点数: 2562, 三角面片数: 5120 电导率 (σ): 0.006000000052154064 S/m
ID: 1 顶点数: 2562, 三角面片数: 5120 电导率 (σ): 0.30000001192092896 S/m

(1) 层 ID 4(电导率 0.3 S/m)
  • 解剖结构头皮(Scalp)
    • 最外层,包裹颅骨和脑组织。
    • 电导率较高(约 0.3 S/m),反映头皮组织(皮肤、肌肉、脂肪)的导电性。
  • 作用
    • 在 EEG 中,头皮是电流的最终传导层,直接影响电极测量的电势分布。
    • 在 MEG 中,对磁场影响较小(因磁场穿透性强)。
(2) 层 ID 3(电导率 0.006 S/m)
  • 解剖结构颅骨(Skull)
    • 中间层,分隔头皮和脑内结构。
    • 电导率极低(约 0.006 S/m),反映颅骨的低导电性(骨组织导电性差)。
  • 作用
    • 在 EEG 中,颅骨会显著衰减脑内电流的传播,导致头皮电势分布模糊化。
    • 是影响 EEG 空间分辨率的主要因素。
(3) 层 ID 1(电导率 0.3 S/m)
  • 解剖结构脑壳(Brain)
    • 最内层,包裹脑实质(灰质、白质)和脑脊液(CSF)。
    • 电导率较高(约 0.3 S/m),反映脑组织和脑脊液的导电性。
  • 作用
    • 直接承载神经元活动产生的电流,是 EEG/MEG 信号的主要源头。
    • 在 BEM 模型中,通常与脑脊液合并为一层(尤其在简化模型中)。

2. 电导率值的意义

  • 头皮和脑壳(0.3 S/m)
    高导电性允许电流自由流动,对 EEG 信号的空间分布起主导作用。
  • 颅骨(0.006 S/m)
    低导电性导致电流在穿过颅骨时被强烈衰减,是 EEG 信号空间模糊化的主要原因。
    注意:颅骨电导率的值存在争议,一些研究建议使用 0.01–0.015 S/m [1],但 MNE 默认使用 0.006 S/m。
    默认值:头皮 0.3 S/m,颅骨 0.006 S/m,脑壳 0.3 S/m。

3. 层 ID 的编号问题

你提供的层 ID(4、3、1)与常规 FreeSurfer/MNE 标准 不一致

  • 标准标识(FreeSurfer 惯例):
    • 3:脑壳(Brain)
    • 4:颅骨(Skull)
    • 5:头皮(Scalp)
  • 可能原因
    • 数据生成时使用了非标准标签(如自定义 BEM 模型)。
    • 文件可能来自旧版本 MNE 或特定数据集(如 fsaverage 模板的某些变体)。
    • 需进一步检查数据来源或通过可视化验证(见下文)。
import mne# 绘制 BEM 模型,叠加白质表面
mne.viz.plot_bem(subject="sample",subjects_dir="/path/to/subjects_dir",brain_surfaces="white",  # 指定表面类型orientation="coronal",slices=[100, 120, 140],  # 切片位置show=True
)

brain_surfaces的类型说明:

[“white”, “pial”]可以叠加显示多个

‘white’ 表面适合检查源空间与解剖的对齐。在这里插入图片描述
“pail”
在这里插入图片描述

‘inflated’ 表面适合观察功能激活的拓扑模式。
在这里插入图片描述
“sphere”
在这里插入图片描述

‘head’ 或 ‘skull’ 和’brain’用于验证 BEM 模型的几何闭合性。
并不存在,没有对应的文件。
在这里插入图片描述

使用nilearn进行fsaverage的导入

from nilearn import datasets, plotting
from nilearn.surface import load_surf_data, load_surf_meshfsaverage = datasets.fetch_surf_fsaverage()
fsaverage#字典 

在这里插入图片描述
我们可以看到这个文件是上面不同层的

其中pial_left的文件也是由两部分组成的coordinates和face。
作为一个表面模型,有三维坐标点和,构成一个三角面的三维索引坐标。

# Step 2: 加载左半球网格并查看顶点数量
mesh = load_surf_mesh(fsaverage['pial_left'])  # 返回 (vertices, faces)
n_vertices = mesh[0].shape[0]  # vertices 是 (n_vertices, 3) 的坐标数组print(f"左半球顶点数量:{n_vertices}")# Step 3: 生成与顶点数量相同的随机数据
random_data = np.random.randn(n_vertic
plotting.plot_surf(surf_mesh=fsaverage['pial_left'],  # 表面网格surf_map=random_data,                # 表面数据hemi='left',                       # 半球view='lateral',                    # 视角:外侧colorbar=True,                     # 显示颜色条title='Left Hemisphere Activation'
)
plotting.show()

在这里插入图片描述

对于src的查看

import os.path as op
import numpy as np
import os
import mne
from mne.datasets import fetch_fsaverage# Download fsaverage files
fs_dir = fetch_fsaverage(verbose=True)
subjects_dir = op.dirname(fs_dir)# The files live in:
subject = "fsaverage"
trans = "fsaverage"  # MNE has a built-in fsaverage transformation
#说明ico-5-src.fif文件是源空间文件,bem-sol.fif文件是 bem 文件,用于解决 bem 问题。、
#ico-5的数据太大,无法计算,使用ico-4进行尝试
src = op.join(fs_dir, "bem", "fsaverage-ico-4-src.fif")
bem = op.join(fs_dir, "bem", "fsaverage-5120-5120-5120-bem-sol.fif")
src = mne.read_source_spaces(src)
src.plot()src = mne.read_source_spaces(src)
src.plot()

在这里插入图片描述

使用 mne.viz.plot_bem

对于bem的可视化,查看的是T1.mgz的图像。

fs_dir:这个是放置模版的文件夹
src:是roi文件或者对应的类似的
subject:是在fs_dir中,在加一个路径。
orientation有三种视图’coronal’, ‘axial’, and ‘sagittal’
冠状面(coronal plane)和矢状面(sagittal plane) ,横断面(axial)
slices:时间的切片

mne.viz.plot_bem(subject='fsaverage', subjects_dir=fs_dir, src=None, orientation='axial',slices=[0,10,50,100],show=True)

在这里插入图片描述
图示一下这三个面

在这里插入图片描述

把有效的溯源点,使用一些数据映射到头图像上,有些不均匀。

对于ico-4进行前向分解的左右脑,因为生理约束,有的点在头皮之外,无法作为有效的点。
在这里插入图片描述

生成一个bem文件

生成失败了, 目前还没找到原因

import mne
subjects_dir = r"D:\系统数据\git仓库\MNE-Cookbook\mne_data\MNE-sample-data\subjects"
conductivity = (0.3, 0.006, 0.3)  # 标准导电率值 (S/m) for [脑脊液, 颅骨, 头皮]
model = mne.make_bem_model(subject='fsaverage', ico=4, conductivity=conductivity,subjects_dir=subjects_dir)
bem_sol = mne.make_bem_solution(model)
mne.write_bem_solution('fsaverage-bem-sol.fif', bem_sol)

主要使用的应该是那三个suf文件
在这里插入图片描述
理论上,看之前可视化也没什么问题,但是生成的时候报错了。
在这里插入图片描述
目前还找不到什么原因。

相关文章:

  • 五一感想:知识产权加速劳动价值!
  • window 显示驱动开发-线程和同步级别一级(二)
  • SecureCrt设置显示区域横列数
  • PDF扫描件交叉合并工具
  • 从PotPlayer到专业播放器—基于 RTSP|RTMP播放器功能、架构、工程能力的全面对比分析
  • MySQL 8.4.5 源码编译安装指南
  • NLP 和大模型技术路线
  • Baichuan-Audio: 端到端语音交互统一框架
  • C#中读取文件夹(包含固定字样文件名)
  • 通过Kubernetes 外部 DNS控制器来自动管理Azure DNS 和 AKS
  • 算法中的数学:算术基本定理
  • QuecPython+腾讯云:快速连接腾讯云l0T平台
  • Hive优化秘籍:大数据处理加速之道
  • OpenGL超大分辨率图像显示
  • 恩智浦 GoPoint 全面解析:初学者的嵌入式 AI 学习指南
  • venv和pyenv在mac上
  • 【星海随笔】信息安全管理与法律法规
  • python3使用:macOS上通过Homebrew安装pip库
  • C++GO语言微服务项目之 go语言基础语法
  • Linux——特殊权限管理
  • 华为招聘:未与任何第三方开展过任何形式的实习合作
  • 再有20余篇论文出现“妇科男患者”“前列腺女患者”,如何破除“水论文”灰产链?
  • 世界人形机器人运动会将在北京“双奥场馆”举行
  • 中方对原产印度进口氯氰菊酯实施反倾销措施,商务部回应
  • 奥迪4S店内揭车衣时遭“连环车损”,双方因赔偿分歧陷僵局
  • IPO周报|节后首批3只新股本周申购,色谱设备龙头来了