geneflowdecoder 0.1.1__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geneflowdecoder
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Gene Transformer + Conditional Rectified Flow decoder from cell-state z to log1p expression X.
5
5
  Author: GeneFlowDecoder Contributors
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "geneflowdecoder"
3
- version = "0.1.1"
3
+ version = "0.1.3"
4
4
  description = "Gene Transformer + Conditional Rectified Flow decoder from cell-state z to log1p expression X."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -388,15 +388,17 @@ class GeneFlowDecoder(nn.Module):
388
388
  z = z.detach()
389
389
  return z.clone() if snapshot else z
390
390
 
391
- def _velocity(
392
- self, x_t: torch.Tensor, t: torch.Tensor, z: torch.Tensor
393
- ) -> torch.Tensor:
394
- z = self._maybe_detach(z)
395
- B = x_t.shape[0]
396
- t_emb = self.time_mlp(self._sincos(t)).unsqueeze(1)
397
- gids = self._gene_ids.unsqueeze(0).expand(B, -1)
391
+ def _velocity(self, x_t: torch.Tensor, t: torch.Tensor,
392
+ z: torch.Tensor) -> torch.Tensor:
393
+ if self.freeze_z:
394
+ z = z.detach()
395
+ B, G = x_t.shape
396
+ t_emb = self.time_mlp(self._sincos(t)).unsqueeze(1) # [B,1,d]
397
+ gids = self._gene_ids[:G].unsqueeze(0).expand(B, -1) # 明确 [B,G]
398
398
  h = self.backbone(gids, z) + t_emb
399
- return self.vel_proj(h)
399
+ v = self.vel_proj(h) # [B,G,1] 或 [B,G]
400
+ v = v.reshape(B, G) # ← 强制对齐,根治错位
401
+ return v
400
402
 
401
403
  # ----------------------------------------------------------------
402
404
  # objective
@@ -497,9 +499,9 @@ class GeneFlowDecoder(nn.Module):
497
499
  # 把 .X 或 obsm 留在 cuda 的情况),强制关闭,避免
498
500
  # RuntimeError: cannot pin 'torch.cuda.FloatTensor'
499
501
  # 注:_as_tensor 对 cuda 输入原样返回,因此这里 X/z 仍在 GPU。
500
- assert X.device.type == "cpu" or z.device.type == "cpu" or not pin_memory
501
502
  pin_memory = _want_pin_memory(X, z)
502
-
503
+ assert X.device.type == "cpu" or z.device.type == "cpu" or not pin_memory
504
+
503
505
  ds = torch.utils.data.TensorDataset(X, z)
504
506
  dl = torch.utils.data.DataLoader(
505
507
  ds,
@@ -1,2 +1,2 @@
1
1
  # -*- coding: utf-8 -*-
2
- __version__ = "0.1.1"
2
+ __version__ = "0.1.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geneflowdecoder
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Gene Transformer + Conditional Rectified Flow decoder from cell-state z to log1p expression X.
5
5
  Author: GeneFlowDecoder Contributors
6
6
  License: MIT
File without changes