首页 > 其他分享 >dymean 维度

dymean 维度

时间:2024-12-26 20:53:38浏览次数:2  
标签:dymean residue chain self pos relative 维度 position

Let me help analyze the residue position embedding from the code.

Looking at the AminoAcidEmbedding class in the first file, there are two options for position embeddings:

  1. Relative Position Embedding:
if relative_position:
    self.res_pos_embedding = SinusoidalPositionEmbedding(res_embed_size)  # relative positional encoding
  1. Absolute Position Embedding:
else:
    self.res_pos_embedding = nn.Embedding(max_position, res_embed_size)  # absolute position encoding  
    # max_position=192 by default

The maximum length of residue position embedding depends on which option is used:

  • For relative position embedding (using SinusoidalPositionEmbedding), there is no fixed maximum length limitation since it uses sinusoidal functions to encode positions. This allows it to theoretically handle any sequence length.

  • For absolute position embedding, there is a fixed maximum length of 192 positions, as specified in the default parameter max_position=192 in the AminoAcidEmbedding constructor.

Looking at the usage in the code, the relative position embedding appears to be the default choice, as seen in the model instantiation:

self.aa_embedding = AminoAcidEmbedding(
    self.num_aa_type, self.num_atom_type, self.num_atom_pos,
    embed_size, embed_size, self.atom_pad_idx, relative_position=True)

So in summary:

  • By default, it uses relative positional encoding which has no fixed maximum length
  • If switched to absolute positional encoding (relative_position=False), then it has a fixed maximum length of 192 positions
  • This max_position parameter of 192 appears to be chosen based on IMGT numbering scheme for antibodies, as commented in the code

i am wondering whether antigen, heavy chain, light chain using different position?

Yes, antigen, heavy chain, and light chain use different position indices. Let me explain by looking at the code:

In AminoAcidFeature class, there's a method _construct_residue_pos that handles this:

def _construct_residue_pos(self, S):
    # construct residue position. global node is 1, the first residue is 2, ... (0 for padding)
    glbl_node_mask = self._is_global(S)  # Identifies global nodes (BOA, BOH, BOL)
    glbl_node_idx = torch.nonzero(glbl_node_mask).flatten()  # [batch_size * 3] (boa, boh, bol)
    
    # Calculate shifts between global nodes
    shift = F.pad(glbl_node_idx[:-1] - glbl_node_idx[1:] + 1, (1, 0), value=1)
    
    # Initialize all positions with ones
    residue_pos = torch.ones_like(S)
    residue_pos[glbl_node_mask] = shift
    
    # Cumulative sum to generate positions
    residue_pos = torch.cumsum(residue_pos, dim=0)

Let's break down how the positions are assigned:

  1. The sequence starts with three special tokens:

    • BOA (Begin of Antigen)
    • BOH (Begin of Heavy chain)
    • BOL (Begin of Light chain)
  2. After each special token, position numbering starts fresh:

    • Antigen residues: Start after BOA token
    • Heavy chain residues: Start after BOH token
    • Light chain residues: Start after BOL token
  3. The positioning is done through cumulative sum, ensuring:

    • Each section (antigen/heavy/light) has its own independent position numbering
    • The positions are reset at each global token (BOA/BOH/BOL)

For example, a sequence might be numbered like this:

BOA   Ag1  Ag2  Ag3   BOH   H1   H2   H3   BOL   L1   L2   L3
1     2    3    4     1     2    3    4    1     2    3    4

This separate position numbering for each chain type helps the model distinguish between residues from different chains while maintaining relative positional information within each chain.

标签:dymean,residue,chain,self,pos,relative,维度,position
From: https://www.cnblogs.com/GraphL/p/18634168

相关文章

  • 【原创】解决ncnn yolov11 乱框,输出维度出错,无框问题
    Abstract解决:ncnnyolov11乱框,输出维度出错,无框问题Solution:ncnnyolov11hasrandomboxes,incorrectoutputdimensions,andnoboxes0x00:modelexport首先是模型转换问题最开始,我是用python的ultralytics导出为onnx格式文件(.onnx),这个文件在python的pytorch和C++......
  • 文本嵌入模型必知 - 如何根据输入文本的长度设置最合适的嵌入维度?
    在自然语言处理(NLP)领域,文本嵌入模型(TextEmbeddingModels)通过将文本转换为高维向量表示,以捕捉其语义和语法特征。这些向量表示在下游任务(如分类、聚类、检索等)中起关键作用。嵌入维度(EmbeddingDimension)是文本嵌入模型的重要参数之一,决定向量表示的大小和表达能力。合理......
  • 珠海盈致:智能制造赋能企业,解锁全新价值维度
    智能制造是信息技术与制造技术的深度融合,经历了从数字化制造到“互联网+制造”,再到新一代智能制造的三个阶段。它是一个大系统,贯穿于产品、制造、服务的全生命周期,由智能产品、智能生产、智能服务三大功能系统,以及工业智联网和智能制造云两大支撑系统组成。 智能制造的实施内......
  • BOE(京东方)“向新2025”年终媒体智享会首站落地上海 六大维度创新开启产业发展新篇章
    12月17日,BOE(京东方)以“向新2025”为主题的年终媒体智享会在上海启动。正值BOE(京东方)新三十年的开局之年,活动全面回顾了2024年BOE(京东方)在各领域所取得的领先成果,深度解读了六大维度的“向新”发展格局,同时详细剖析了BOE(京东方)在智能制造领域的领先实践。BOE(京东方)执行委员会委员、......
  • 你是从哪些维度来评估代码的质量?
    在前端开发中,评估代码质量是一个多维度且全面的过程,通常涉及以下几个关键维度:可读性(Readability):代码是否清晰易懂?变量和函数名是否直观、有意义?注释是否详尽且准确?是否遵循了一致的编码风格(如使用ESLint等工具)?可维护性(Maintainability):代码是否容易修改和扩展?模块化......
  • Spring Boot 工程分层实战(五个分层维度)
    1、分层思想计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解决。这句体现了分层思想重要性,分层思想同样适用于Java工程架构。分层优点是每层只专注本层工作,可以类比设计模式单一职责原则,或者经济学比较优势原理,每层只做本层最擅长的事情。分层缺点是层之间......
  • SSM 校园一卡通密钥管理系统 PF:多维度密钥功能深度解析
    第1章绪论1.1选题动因当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级,市面上的电脑和笔记本的性能都得到提升,可以支持的软件也逐......
  • Guava Table:多维度的数据 Table4
    多维度的数据Table通常情况下,我们可以将一个二维的Table看作是行列交集的数据表。而如果我们需要在Table中进一步进行分组和索引,想要为每一个维度增加一个标识(比如多重索引),那么我们就需要更复杂的多维度数据。GuavaTable并不直接支持多维度结构(如三维或更高维度的......
  • Guava Table:多维度的数据 Table5
    多维度的数据Table通常情况下,我们可以将一个二维的Table看作是行列交集的数据表。而如果我们需要在Table中进一步进行分组和索引,想要为每一个维度增加一个标识(比如多重索引),那么我们就需要更复杂的多维度数据。GuavaTable并不直接支持多维度结构(如三维或更高维度的......
  • Guava Table:多维度的数据 Table15
    多维度的数据Table通常情况下,我们可以将一个二维的Table看作是行列交集的数据表。而如果我们需要在Table中进一步进行分组和索引,想要为每一个维度增加一个标识(比如多重索引),那么我们就需要更复杂的多维度数据。GuavaTable并不直接支持多维度结构(如三维或更高维度的......