smftools 0.1.7__py3-none-any.whl → 0.2.1__py3-none-any.whl

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.
Files changed (120) hide show
  1. smftools/__init__.py +9 -4
  2. smftools/_version.py +1 -1
  3. smftools/cli.py +184 -0
  4. smftools/config/__init__.py +1 -0
  5. smftools/config/conversion.yaml +33 -0
  6. smftools/config/deaminase.yaml +56 -0
  7. smftools/config/default.yaml +253 -0
  8. smftools/config/direct.yaml +17 -0
  9. smftools/config/experiment_config.py +1191 -0
  10. smftools/hmm/HMM.py +1576 -0
  11. smftools/hmm/__init__.py +20 -0
  12. smftools/{tools → hmm}/apply_hmm_batched.py +8 -7
  13. smftools/hmm/call_hmm_peaks.py +106 -0
  14. smftools/{tools → hmm}/display_hmm.py +3 -3
  15. smftools/{tools → hmm}/nucleosome_hmm_refinement.py +2 -2
  16. smftools/{tools → hmm}/train_hmm.py +1 -1
  17. smftools/informatics/__init__.py +0 -2
  18. smftools/informatics/archived/deaminase_smf.py +132 -0
  19. smftools/informatics/fast5_to_pod5.py +4 -1
  20. smftools/informatics/helpers/__init__.py +3 -4
  21. smftools/informatics/helpers/align_and_sort_BAM.py +34 -7
  22. smftools/informatics/helpers/aligned_BAM_to_bed.py +35 -24
  23. smftools/informatics/helpers/binarize_converted_base_identities.py +116 -23
  24. smftools/informatics/helpers/concatenate_fastqs_to_bam.py +365 -42
  25. smftools/informatics/helpers/converted_BAM_to_adata_II.py +165 -29
  26. smftools/informatics/helpers/discover_input_files.py +100 -0
  27. smftools/informatics/helpers/extract_base_identities.py +29 -3
  28. smftools/informatics/helpers/extract_read_features_from_bam.py +4 -2
  29. smftools/informatics/helpers/find_conversion_sites.py +5 -4
  30. smftools/informatics/helpers/modkit_extract_to_adata.py +6 -3
  31. smftools/informatics/helpers/plot_bed_histograms.py +269 -0
  32. smftools/informatics/helpers/separate_bam_by_bc.py +2 -2
  33. smftools/informatics/helpers/split_and_index_BAM.py +1 -5
  34. smftools/load_adata.py +1346 -0
  35. smftools/machine_learning/__init__.py +12 -0
  36. smftools/machine_learning/data/__init__.py +2 -0
  37. smftools/machine_learning/data/anndata_data_module.py +234 -0
  38. smftools/machine_learning/evaluation/__init__.py +2 -0
  39. smftools/machine_learning/evaluation/eval_utils.py +31 -0
  40. smftools/machine_learning/evaluation/evaluators.py +223 -0
  41. smftools/machine_learning/inference/__init__.py +3 -0
  42. smftools/machine_learning/inference/inference_utils.py +27 -0
  43. smftools/machine_learning/inference/lightning_inference.py +68 -0
  44. smftools/machine_learning/inference/sklearn_inference.py +55 -0
  45. smftools/machine_learning/inference/sliding_window_inference.py +114 -0
  46. smftools/machine_learning/models/base.py +295 -0
  47. smftools/machine_learning/models/cnn.py +138 -0
  48. smftools/machine_learning/models/lightning_base.py +345 -0
  49. smftools/machine_learning/models/mlp.py +26 -0
  50. smftools/{tools → machine_learning}/models/positional.py +3 -2
  51. smftools/{tools → machine_learning}/models/rnn.py +2 -1
  52. smftools/machine_learning/models/sklearn_models.py +273 -0
  53. smftools/machine_learning/models/transformer.py +303 -0
  54. smftools/machine_learning/training/__init__.py +2 -0
  55. smftools/machine_learning/training/train_lightning_model.py +135 -0
  56. smftools/machine_learning/training/train_sklearn_model.py +114 -0
  57. smftools/plotting/__init__.py +4 -1
  58. smftools/plotting/autocorrelation_plotting.py +611 -0
  59. smftools/plotting/general_plotting.py +566 -89
  60. smftools/plotting/hmm_plotting.py +260 -0
  61. smftools/plotting/qc_plotting.py +270 -0
  62. smftools/preprocessing/__init__.py +13 -8
  63. smftools/preprocessing/add_read_length_and_mapping_qc.py +129 -0
  64. smftools/preprocessing/append_base_context.py +122 -0
  65. smftools/preprocessing/append_binary_layer_by_base_context.py +143 -0
  66. smftools/preprocessing/calculate_complexity_II.py +248 -0
  67. smftools/preprocessing/calculate_coverage.py +10 -1
  68. smftools/preprocessing/calculate_read_modification_stats.py +101 -0
  69. smftools/preprocessing/clean_NaN.py +17 -1
  70. smftools/preprocessing/filter_reads_on_length_quality_mapping.py +158 -0
  71. smftools/preprocessing/filter_reads_on_modification_thresholds.py +352 -0
  72. smftools/preprocessing/flag_duplicate_reads.py +1326 -124
  73. smftools/preprocessing/invert_adata.py +12 -5
  74. smftools/preprocessing/load_sample_sheet.py +19 -4
  75. smftools/readwrite.py +849 -43
  76. smftools/tools/__init__.py +3 -32
  77. smftools/tools/calculate_umap.py +5 -5
  78. smftools/tools/general_tools.py +3 -3
  79. smftools/tools/position_stats.py +468 -106
  80. smftools/tools/read_stats.py +115 -1
  81. smftools/tools/spatial_autocorrelation.py +562 -0
  82. {smftools-0.1.7.dist-info → smftools-0.2.1.dist-info}/METADATA +5 -1
  83. smftools-0.2.1.dist-info/RECORD +161 -0
  84. smftools-0.2.1.dist-info/entry_points.txt +2 -0
  85. smftools/informatics/helpers/LoadExperimentConfig.py +0 -75
  86. smftools/informatics/helpers/plot_read_length_and_coverage_histograms.py +0 -53
  87. smftools/informatics/load_adata.py +0 -182
  88. smftools/preprocessing/append_C_context.py +0 -82
  89. smftools/preprocessing/calculate_converted_read_methylation_stats.py +0 -94
  90. smftools/preprocessing/filter_converted_reads_on_methylation.py +0 -44
  91. smftools/preprocessing/filter_reads_on_length.py +0 -51
  92. smftools/tools/call_hmm_peaks.py +0 -105
  93. smftools/tools/data/__init__.py +0 -2
  94. smftools/tools/data/anndata_data_module.py +0 -90
  95. smftools/tools/evaluation/__init__.py +0 -0
  96. smftools/tools/inference/__init__.py +0 -1
  97. smftools/tools/inference/lightning_inference.py +0 -41
  98. smftools/tools/models/base.py +0 -14
  99. smftools/tools/models/cnn.py +0 -34
  100. smftools/tools/models/lightning_base.py +0 -41
  101. smftools/tools/models/mlp.py +0 -17
  102. smftools/tools/models/sklearn_models.py +0 -40
  103. smftools/tools/models/transformer.py +0 -133
  104. smftools/tools/training/__init__.py +0 -1
  105. smftools/tools/training/train_lightning_model.py +0 -47
  106. smftools-0.1.7.dist-info/RECORD +0 -136
  107. /smftools/{tools → hmm}/calculate_distances.py +0 -0
  108. /smftools/{tools → hmm}/hmm_readwrite.py +0 -0
  109. /smftools/informatics/{conversion_smf.py → archived/conversion_smf.py} +0 -0
  110. /smftools/informatics/{direct_smf.py → archived/direct_smf.py} +0 -0
  111. /smftools/{tools → machine_learning}/data/preprocessing.py +0 -0
  112. /smftools/{tools → machine_learning}/models/__init__.py +0 -0
  113. /smftools/{tools → machine_learning}/models/wrappers.py +0 -0
  114. /smftools/{tools → machine_learning}/utils/__init__.py +0 -0
  115. /smftools/{tools → machine_learning}/utils/device.py +0 -0
  116. /smftools/{tools → machine_learning}/utils/grl.py +0 -0
  117. /smftools/tools/{apply_hmm.py → archived/apply_hmm.py} +0 -0
  118. /smftools/tools/{classifiers.py → archived/classifiers.py} +0 -0
  119. {smftools-0.1.7.dist-info → smftools-0.2.1.dist-info}/WHEEL +0 -0
  120. {smftools-0.1.7.dist-info → smftools-0.2.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,133 +0,0 @@
1
- import torch
2
- import torch.nn as nn
3
- from .base import BaseTorchModel
4
- from .positional import PositionalEncoding
5
- from ..utils.grl import grad_reverse
6
-
7
-
8
- class BaseTransformer(BaseTorchModel):
9
- def __init__(self, input_dim, model_dim, num_heads=4, num_layers=2, seq_len=None, use_learnable_pos=False, **kwargs):
10
- super().__init__(**kwargs)
11
- # Input FC layer to map D_input to D_model
12
- self.input_fc = nn.Linear(input_dim, model_dim)
13
-
14
- if use_learnable_pos:
15
- assert seq_len is not None, "Must provide seq_len if use_learnable_pos=True"
16
- self.pos_embed = nn.Parameter(torch.randn(seq_len, model_dim)) # (S, D)
17
- self.pos_encoder = None
18
- else:
19
- self.pos_encoder = PositionalEncoding(model_dim)
20
- self.pos_embed = None
21
-
22
- # Specify the transformer encoder structure
23
- encoder_layer = nn.TransformerEncoderLayer(d_model=model_dim, nhead=num_heads, batch_first=False)
24
- # Stack the transformer encoder layers
25
- self.transformer = nn.TransformerEncoder(encoder_layer, num_layers=num_layers)
26
-
27
- def encode(self, x, mask=None):
28
- """
29
- x: (B, S, D_input)
30
- mask: (B, S) optional
31
- """
32
- x = self.input_fc(x) # (B, S, D_model)
33
- if self.pos_embed is not None:
34
- x = x + self.pos_embed.unsqueeze(0).to(x.device) # (B, S, D_model)
35
- elif self.pos_encoder is not None:
36
- x = self.pos_encoder(x) # (B, S, D_model)
37
- if mask is not None:
38
- x = x * mask.unsqueeze(-1) # (B, S, D_model)
39
- x = x.permute(1, 0, 2) # (S, B, D_model)
40
- encoded = self.transformer(x) # (S, B, D_model)
41
- return encoded.permute(1, 0, 2) # (B, S, D_model)
42
-
43
- class TransformerClassifier(BaseTransformer):
44
- def __init__(self, input_dim, model_dim, num_classes, num_heads=4, num_layers=2, **kwargs):
45
- super().__init__(input_dim, model_dim, num_heads, num_layers, **kwargs)
46
- # Classification head
47
- self.cls_head = nn.Linear(model_dim, num_classes)
48
-
49
- def forward(self, x):
50
- """
51
- x: (batch, seq_len, input_dim)
52
- """
53
- encoded = self.encode(x) # -> (B, S, D_model)
54
- pooled = encoded.mean(dim=1) # -> (B, D_model)
55
- return self.cls_head(pooled) # -> (B, C)
56
-
57
- class DANNTransformerClassifier(TransformerClassifier):
58
- def __init__(self, input_dim, model_dim, num_classes, n_domains, **kwargs):
59
- super().__init__(input_dim, model_dim, num_classes, **kwargs)
60
- self.domain_classifier = nn.Sequential(
61
- nn.Linear(model_dim, 128),
62
- nn.ReLU(),
63
- nn.Linear(128, n_domains)
64
- )
65
-
66
- def forward(self, x, alpha=1.0):
67
- encoded = self.encode(x) # (B, S, D_model)
68
- pooled = encoded.mean(dim=1) # (B, D_model)
69
-
70
- class_logits = self.cls_head(pooled)
71
- domain_logits = self.domain_classifier(grad_reverse(pooled, alpha))
72
-
73
- return class_logits, domain_logits
74
-
75
- class MaskedTransformerPretrainer(BaseTransformer):
76
- def __init__(self, input_dim, model_dim, num_heads=4, num_layers=2, **kwargs):
77
- super().__init__(input_dim, model_dim, num_heads, num_layers, **kwargs)
78
- self.decoder = nn.Linear(model_dim, input_dim)
79
-
80
- def forward(self, x, mask):
81
- """
82
- x: (batch, seq_len, input_dim)
83
- mask: (batch, seq_len) optional
84
- """
85
- if x.dim() == 2:
86
- x = x.unsqueeze(-1)
87
- encoded = self.encode(x, mask=mask) # -> (B, S, D_model)
88
- return self.decoder(encoded) # -> (B, D_input)
89
-
90
- class DANNTransformer(BaseTransformer):
91
- """
92
- """
93
- def __init__(self, seq_len, model_dim, n_heads, n_layers, n_domains):
94
- super().__init__(
95
- input_dim=1, # 1D scalar input per token
96
- model_dim=model_dim,
97
- num_heads=n_heads,
98
- num_layers=n_layers,
99
- seq_len=seq_len,
100
- use_learnable_pos=True # enables learnable pos_embed in base
101
- )
102
-
103
- # Reconstruction head
104
- self.recon_head = nn.Linear(model_dim, 1)
105
-
106
- # Domain classification head
107
- self.domain_classifier = nn.Sequential(
108
- nn.Linear(model_dim, 128),
109
- nn.ReLU(),
110
- nn.Linear(128, n_domains)
111
- )
112
-
113
- def forward(self, x, alpha=1.0):
114
- """
115
- x: Tensor of shape (B, S) or (B, S, 1)
116
- alpha: GRL coefficient (float)
117
- """
118
- if x.dim() == 2:
119
- x = x.unsqueeze(-1) # (B, S, 1)
120
-
121
- # Encode sequence
122
- h = self.encode(x) # (B, S, D_model)
123
-
124
- # Head 1: Reconstruction
125
- recon = self.recon_head(h).squeeze(-1) # (B, S)
126
-
127
- # Head 2: Domain classification via GRL
128
- pooled = h.mean(dim=1) # (B, D_model)
129
- rev = grad_reverse(pooled, alpha)
130
- domain_logits = self.domain_classifier(rev) # (B, n_batches)
131
-
132
- return recon, domain_logits
133
-
@@ -1 +0,0 @@
1
- from .train_lightning_model import train_lightning_model
@@ -1,47 +0,0 @@
1
- import torch
2
- from pytorch_lightning import Trainer
3
- from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint
4
-
5
- def train_lightning_model(
6
- model,
7
- datamodule,
8
- max_epochs=20,
9
- patience=5,
10
- monitor_metric="val_loss",
11
- checkpoint_path=None,
12
- ):
13
- # Device logic
14
- if torch.cuda.is_available():
15
- accelerator = "gpu"
16
- devices = 1
17
- elif torch.backends.mps.is_available():
18
- accelerator = "mps"
19
- devices = 1
20
- else:
21
- accelerator = "cpu"
22
- devices = 1
23
-
24
- # Callbacks
25
- callbacks = [
26
- EarlyStopping(monitor=monitor_metric, patience=patience, mode="min"),
27
- ]
28
- if checkpoint_path:
29
- callbacks.append(ModelCheckpoint(
30
- dirpath=checkpoint_path,
31
- filename="{epoch}-{val_loss:.4f}",
32
- monitor=monitor_metric,
33
- save_top_k=1,
34
- mode="min",
35
- ))
36
-
37
- # Trainer setup
38
- trainer = Trainer(
39
- max_epochs=max_epochs,
40
- callbacks=callbacks,
41
- accelerator=accelerator,
42
- devices=devices,
43
- log_every_n_steps=10,
44
- )
45
- trainer.fit(model, datamodule=datamodule)
46
-
47
- return trainer
@@ -1,136 +0,0 @@
1
- smftools/__init__.py,sha256=0Llj2kZuzB0PvwcQV5RjvMC0KgFW6F__eceV2eYR4TU,551
2
- smftools/_settings.py,sha256=Ed8lzKUA5ncq5ZRfSp0t6_rphEEjMxts6guttwTZP5Y,409
3
- smftools/_version.py,sha256=GmypIHlw9-BaSEaoucCIwm0ut1DUut0hUvsyTCr17qk,21
4
- smftools/readwrite.py,sha256=Y-6ehzoEMUIBWp3WQtyX2Vhe9aHwY1tsoNsVApRJRy4,7303
5
- smftools/datasets/F1_hybrid_NKG2A_enhander_promoter_GpC_conversion_SMF.h5ad.gz,sha256=q6wJtgFRDln0o20XNCx1qad3lwcdCoylqPN7wskTfI8,2926497
6
- smftools/datasets/F1_sample_sheet.csv,sha256=9PodIIOXK2eamYPbC6DGnXdzgi9bRDovf296j1aM0ak,259
7
- smftools/datasets/__init__.py,sha256=xkSTlPuakVYVCuRurif9BceNBDt6bsngJvvjI8757QI,142
8
- smftools/datasets/dCas9_m6A_invitro_kinetics.h5ad.gz,sha256=niOcVHaYY7h3XyvwSkN-V_NMBaRt2vTP5TrJO0CwMCs,8385050
9
- smftools/datasets/datasets.py,sha256=0y597Ntp707bOgDwN6O-JEt9yxgplj66p0aj6Zs_IB4,779
10
- smftools/informatics/__init__.py,sha256=Iz5Jyzln5wKRJ2yu4AWbUx0sMavpMy8XZtGOaLECVmE,391
11
- smftools/informatics/basecall_pod5s.py,sha256=Ynmxscsxj6qp-zVY0RWodq513oDuHDaHnpqoepB3RUU,3930
12
- smftools/informatics/conversion_smf.py,sha256=QhlISVi3Z-XqFKyDG_CenLojovAt5-ZhuVe9hus36lg,7177
13
- smftools/informatics/direct_smf.py,sha256=ylPGFBvRLdxLHeDJjAwq98j8Q8_lfGK3k5JJnQxrwJw,7485
14
- smftools/informatics/fast5_to_pod5.py,sha256=xfdZU3QluaAcR-q2uBRz8hcBwYt73nCnrFeahvi0OKQ,704
15
- smftools/informatics/load_adata.py,sha256=90eseT30qkKc9TCwBQ6UvoLbR7_oQ9foLniSxv-x8Q0,10563
16
- smftools/informatics/readwrite.py,sha256=DgVisHYdkjzaO7suPbUvluImeTc3jqGDlioNveHUxPc,4158
17
- smftools/informatics/subsample_fasta_from_bed.py,sha256=YqYV09rvEQdeiS5hTTrKa8xYmJfeM3Vk-UUqwpw0qBk,1983
18
- smftools/informatics/subsample_pod5.py,sha256=zDw9tRcrFRmPI62xkcy9dh8IfsJcuYm7R-FVeBC_g3s,4701
19
- smftools/informatics/archived/bam_conversion.py,sha256=I8EzXjQixMmqx2oWnoNSH5NURBhfT-krbWHkoi_M964,3330
20
- smftools/informatics/archived/bam_direct.py,sha256=jbEFtUIiUR8Wlp3po_sWkr19AUNS9WZjglojb9j28vo,3606
21
- smftools/informatics/archived/basecalls_to_adata.py,sha256=-Nag6lr_NAtU4t8jo0GSMdgIAIfmDge-5VEUPQbEatE,3692
22
- smftools/informatics/archived/print_bam_query_seq.py,sha256=8Z2ZJEOOlfWYUXiZGjteLWU4yTgvV8KQzEIBHUmamGM,838
23
- smftools/informatics/helpers/LoadExperimentConfig.py,sha256=6K8AmwWVapx5XbZdhIRLB7tNSr6szpPtzM78hbEts7k,2891
24
- smftools/informatics/helpers/__init__.py,sha256=-PuxmsaS_IrFndAVNwyd13UqSZ4OawvxK87s2gbZIcU,2803
25
- smftools/informatics/helpers/align_and_sort_BAM.py,sha256=Ce-_m9wQrLS7MPy-sA4yEHNjBPNmmzoLjLbjjJYkvwM,2470
26
- smftools/informatics/helpers/aligned_BAM_to_bed.py,sha256=5-5fpE7ovDTwF7FZSwpfTNGcgxFKKE-ANxAxGuVH1ks,2887
27
- smftools/informatics/helpers/bam_qc.py,sha256=IlrXXpCdTYIv_89SE8D5tJ1wtTzxWGjk9vc-rbC1UjU,2430
28
- smftools/informatics/helpers/bed_to_bigwig.py,sha256=AazYEZzKgKgukSFwCpeiApzxh1kbt11X4RFqRIiBIaY,1466
29
- smftools/informatics/helpers/binarize_converted_base_identities.py,sha256=VqXXm61KL2z2xK1AcohvezY69bYHI3uL8RTnDDjOOgI,3756
30
- smftools/informatics/helpers/canoncall.py,sha256=5WS6lwukc_xYTdPQy0OSj-WLbx0Rg70Cun1lCucY7w8,1741
31
- smftools/informatics/helpers/complement_base_list.py,sha256=k6EkLtxFoajaIufxw1p0pShJ2nPHyGLTbzZmIFFjB4o,532
32
- smftools/informatics/helpers/concatenate_fastqs_to_bam.py,sha256=uSWazdNRCa_Cc1SOMreJZBchPIcII4DNluB9PJF_rA8,2713
33
- smftools/informatics/helpers/converted_BAM_to_adata.py,sha256=sRmOtn0kNosLYfogqslDHg1Azk51l6nfNOLgQOnQjlA,14591
34
- smftools/informatics/helpers/converted_BAM_to_adata_II.py,sha256=yYjCc5tJ0_-HgcPziccjNXCe8A7kmD5mFfNWcEDcA3o,16482
35
- smftools/informatics/helpers/count_aligned_reads.py,sha256=uYyUYglF1asiaoxr-LKxPMUEbfyD7FS-dumTg2hJHzQ,2170
36
- smftools/informatics/helpers/demux_and_index_BAM.py,sha256=2B_UiU05ln3gYvcN9aC_w6qs8j_WAF4pHWZekAYsXm4,2114
37
- smftools/informatics/helpers/extract_base_identities.py,sha256=cWcAcWK0vhHl-jRpMX2YMLtYezhSdhMfyj4E7rm2VEU,1833
38
- smftools/informatics/helpers/extract_mods.py,sha256=MbSIiyj3zx7WlSSWMRPriLMkBtxYc1EWZiAAirMVgqA,3865
39
- smftools/informatics/helpers/extract_read_features_from_bam.py,sha256=nJxGjVe7LtPi8Eu5HuFFQuDi5ZnvDxLMsPfFc5bLfx4,1275
40
- smftools/informatics/helpers/extract_read_lengths_from_bed.py,sha256=Cw39wgp1eBTV45Wk1l0c9l-upBW5N2OcgyWXTAXln90,678
41
- smftools/informatics/helpers/extract_readnames_from_BAM.py,sha256=3FxSNqbZ1VsOK2RfHrvevQTzhWATf5E8bZ5yVOqayvk,759
42
- smftools/informatics/helpers/find_conversion_sites.py,sha256=e7gRmvZSakwhnFJkhfgg9i_85rYEXtbGv4_oS8RoNlE,2329
43
- smftools/informatics/helpers/generate_converted_FASTA.py,sha256=UniQfERNt4FC5L8T1tzr4cLQOJc3wMBPhuWmC-lC8Fs,3747
44
- smftools/informatics/helpers/get_chromosome_lengths.py,sha256=sLumLrGsU_Xg_oJcdOpQyjUGpJoT2HbcmxWwbwzXUlE,1036
45
- smftools/informatics/helpers/get_native_references.py,sha256=fRuyEm9UJkfd5DwHmFb1bxEtNvtSI1_BxGRmrCymGkw,981
46
- smftools/informatics/helpers/index_fasta.py,sha256=N3IErfSiavYldeaat8xcQgA1MpykoQHcE0gHUeWuClE,267
47
- smftools/informatics/helpers/make_dirs.py,sha256=lWHXpwC76MFM5sSme9i_WeYUaxutzybendokhny03ds,537
48
- smftools/informatics/helpers/make_modbed.py,sha256=cOQ97gPfRiCcw_fqboxousXIiOYjp78IFYLbu749U1Y,939
49
- smftools/informatics/helpers/modQC.py,sha256=LeOBObG8gAVVdgESIMceYhd5AW1gfN7ABo91OQtOzTM,1041
50
- smftools/informatics/helpers/modcall.py,sha256=LVPrdMNVp2gyQTJ4BNp8NJNm89AueDjsKaY7Gqkluho,1777
51
- smftools/informatics/helpers/modkit_extract_to_adata.py,sha256=uU5p9A1C9ZSEqU5P9Dc_ssDTGrZlh5uXVYlS0RRKdj0,51833
52
- smftools/informatics/helpers/ohe_batching.py,sha256=QVOiyl9fYHNIFWM23afYnQo0uaOjf1NR3ASKGVSrmuw,2975
53
- smftools/informatics/helpers/ohe_layers_decode.py,sha256=gIgUC9L8TFLi-fTnjR4PRzXdUaH5D6WL2Hump6XOoy0,1042
54
- smftools/informatics/helpers/one_hot_decode.py,sha256=3n4rzY8_aC9YKmgrftsguMsH7fUyQ-DbWmrOYF6la9s,906
55
- smftools/informatics/helpers/one_hot_encode.py,sha256=5hHigA6-SZLK84WH_RHo06F_6aTg7S3TJgvSr8gxGX8,1968
56
- smftools/informatics/helpers/plot_read_length_and_coverage_histograms.py,sha256=3PmxZJGjIyPLkJvL7VIILrkE9JzB6Kdxh0IJfoJ0e5k,1942
57
- smftools/informatics/helpers/run_multiqc.py,sha256=qkw48DeBdTEqzhKFGjMUlvNmTehp8wRPkcxdkwERkHc,980
58
- smftools/informatics/helpers/separate_bam_by_bc.py,sha256=Fsi8OEmv5Ny13cWoHVV9JmEjVFEXT_ZxbBOlRdmyPbE,1742
59
- smftools/informatics/helpers/split_and_index_BAM.py,sha256=tLAhLoPfiVJhLYGr3LVcjo0xQ_8-yb60hR46EQUpL-s,1570
60
- smftools/informatics/helpers/archived/informatics.py,sha256=gKb2ZJ_LcAeEXuQqn9e-QDF_sS4tMpMTr2vZlqa7n54,14572
61
- smftools/informatics/helpers/archived/load_adata.py,sha256=DhvYYqO9VLsZqhL1WjN9sd-e3fgvdXGlgTP18z1h0L0,33654
62
- smftools/plotting/__init__.py,sha256=MKT8y7Wq1X1CCDhLxyzYQfqXpEXQZFpZzhi25qGOul4,707
63
- smftools/plotting/classifiers.py,sha256=8_zabh4NNB1_yVxLD22lfrfl5yfzbEoG3XWqlIqdtrQ,13786
64
- smftools/plotting/general_plotting.py,sha256=LjN85KyXtuLbDpryMweSps2vFX9GEfc5flmLybLVdn8,9483
65
- smftools/plotting/position_stats.py,sha256=4XukYIWeWZ_aGSZg1K0t37KA2aknjNNKT5kcKFfuz8Q,17428
66
- smftools/preprocessing/__init__.py,sha256=2s_46L2qDmM_YoaG3j9YvZ6nTu1T_IF0czhlzC2emQQ,1349
67
- smftools/preprocessing/append_C_context.py,sha256=mmXju79pKYwrz7WP6v8rztDis4KHHhllBqJCmKky7lk,4414
68
- smftools/preprocessing/binarize_on_Youden.py,sha256=O5E3vFc2zXMfKW0p0JGDlmRKEx2_VP6dAqfvrumzz00,1797
69
- smftools/preprocessing/binary_layers_to_ohe.py,sha256=Lxd8knelNTaUozfGMFNMlnrOb6uP28Laj3Ymw6cRHL0,1826
70
- smftools/preprocessing/calculate_complexity.py,sha256=cXMpFrhkwkPipQo2GZGT5yFknMYUMt1t8gz0Cse1DrA,3288
71
- smftools/preprocessing/calculate_consensus.py,sha256=6zRpRmb2xdfDu5hctZrReALRb7Pjn8sy8xJZTm3o0nU,2442
72
- smftools/preprocessing/calculate_converted_read_methylation_stats.py,sha256=CWS3yoDTceZ8kDMWdy9eEo9Nd-yEbr2OehNovyoLR8w,5822
73
- smftools/preprocessing/calculate_coverage.py,sha256=XhtOo73ZL1kOvpzEaZAkOCtSD870zBPm0H9D7Kpv190,1867
74
- smftools/preprocessing/calculate_pairwise_differences.py,sha256=5zJbNNaFld5qgKRoPyplCmMHflbvAQ9eKWCXPXPpJ60,1774
75
- smftools/preprocessing/calculate_pairwise_hamming_distances.py,sha256=e5Mzyex7pT29H2PY014uU4Fi_eewbut1JkzC1ffBbCg,961
76
- smftools/preprocessing/calculate_position_Youden.py,sha256=9GY_WWwaxpB2Xppck3WT1zHtFOhTXrpuDIgbxLC9A7E,7450
77
- smftools/preprocessing/calculate_read_length_stats.py,sha256=gNNePwMqYZJidzGgT1ZkfSlvc5Y3I3bi5KNYpP6wQQc,4584
78
- smftools/preprocessing/clean_NaN.py,sha256=6eWSFFLxipiejcR_BeYJ4sVaayMuiEIoscd0eLvJuL0,1557
79
- smftools/preprocessing/filter_adata_by_nan_proportion.py,sha256=GZcvr2JCsthX8EMw34S9-W3fc6JElw6ka99Jy6f2JvA,1292
80
- smftools/preprocessing/filter_converted_reads_on_methylation.py,sha256=LOyBho1ltD2HXWrpO2xEeHk4aiHJxxWuG7_lr2NHSJk,2042
81
- smftools/preprocessing/filter_reads_on_length.py,sha256=Y4WQO5Mna4Xm9hFYKk66hEQb67GnzCTXPOokebRnV-g,2625
82
- smftools/preprocessing/flag_duplicate_reads.py,sha256=8izI9ekC8oOY1gf500hg8lM0UQFs0_2j2PFUQwgXES8,6276
83
- smftools/preprocessing/invert_adata.py,sha256=FS-Yo8o70pIT39CoxRtt73dFr1SGZiZqU1HcIj8zDQg,782
84
- smftools/preprocessing/load_sample_sheet.py,sha256=cRrf-6FDWu6t0eqZufHaF5qn1DLww3DcN5IEncj5K6k,1497
85
- smftools/preprocessing/make_dirs.py,sha256=lWHXpwC76MFM5sSme9i_WeYUaxutzybendokhny03ds,537
86
- smftools/preprocessing/min_non_diagonal.py,sha256=hx1asW8CEmLaIroZISW8EcAf_RnBEC_nofGD8QG0b1E,711
87
- smftools/preprocessing/recipes.py,sha256=cfKEpKW8TtQLe1CMdSHyPuIgKiWOPn7uP6uMIoRlnaQ,7063
88
- smftools/preprocessing/subsample_adata.py,sha256=ivJvJIOvEtyvAjqZ7cwEeVedm4QgJxCJEI7sFaTuI3w,2360
89
- smftools/preprocessing/archives/mark_duplicates.py,sha256=kwfstcWb7KkqeNB321dB-NLe8yd9_hZsSmpL8pCVBQg,8747
90
- smftools/preprocessing/archives/preprocessing.py,sha256=4mLT09A7vwRZ78FHmuwtv38mH9TQ9qrZc_WjHRhhkIw,34379
91
- smftools/preprocessing/archives/remove_duplicates.py,sha256=Erooi5_1VOUNfWpzddzmMNYMCl1U1jJryt7ZtMhabAs,699
92
- smftools/tools/__init__.py,sha256=jnO_-xJyt9Q86QKCZa6GvFCtacx9G4rW_HJtSyeiook,1717
93
- smftools/tools/apply_hmm.py,sha256=pJXCULay0zbmubrwql368y7yiHAZr2bJhuGx2QUuKnE,9321
94
- smftools/tools/apply_hmm_batched.py,sha256=1_36BK3ie7lPU4pD93TOBYltmsbdE3VJPqZydiw8I5s,10410
95
- smftools/tools/calculate_distances.py,sha256=KDWimQ6u-coyxCKrbTm42Fh_Alf_gURBZ0vfFaem848,644
96
- smftools/tools/calculate_umap.py,sha256=SoZvvnCBjCdshgkW0ODH1lUY97AHkrPXTxWDdYZO8VY,2513
97
- smftools/tools/call_hmm_peaks.py,sha256=ixnO-KwFYtLiXt8dSa1dEjNR0RO6b-Eswziz1AA647A,4933
98
- smftools/tools/classifiers.py,sha256=mwSTpWUXBPjmUuV5i_SMG1lIPpHSMCzsKhl8wTbm-Og,36903
99
- smftools/tools/cluster_adata_on_methylation.py,sha256=UDC5lpW8fZ6O-16ETu-mbflLkNBKuIg7RIzQ9r7knvA,5760
100
- smftools/tools/display_hmm.py,sha256=4yM-4wpQnWQiim16cUV4ITI-USEEEtaLHqK3LPu5YCg,840
101
- smftools/tools/general_tools.py,sha256=P9Ecq2SxzmhwLBvWaMpqGGzSPjOiMmG-AspCb0QaaPk,2573
102
- smftools/tools/hmm_readwrite.py,sha256=DjJ3hunpBQ7N0GVvxL7-0QUas_SkA88LVgL72mVK2cI,359
103
- smftools/tools/nucleosome_hmm_refinement.py,sha256=yzkx1i3ez678SS_mOMbg6sbI-yHXaUq5eJdaEF43S1w,4649
104
- smftools/tools/position_stats.py,sha256=FNR5JaD4e3ykrieN922IIyM4GHvwybz--_bgNPhAkNs,9500
105
- smftools/tools/read_stats.py,sha256=ze-1kuEnFR7UhNzuPB-UgJ_YIHCfDhOgs6oWAo90VaI,2546
106
- smftools/tools/subset_adata.py,sha256=nBbtAxCNteZCUBmPnZ9swQNyU74XgWM8aJHHWg2AuL0,1025
107
- smftools/tools/train_hmm.py,sha256=TCzvHlKLoQnKhflZOsXyXlgPhtk54k9EAoP89kUbQ1U,2465
108
- smftools/tools/archived/classify_methylated_features.py,sha256=Z0N2UKw3luD3CTQ8wcUvdnMY7w-8574OJbEcwzNsy88,2897
109
- smftools/tools/archived/classify_non_methylated_features.py,sha256=IJERTozEs7IPL7K-VIjq2q2K36wRCW9iiNSYLAXasrA,3256
110
- smftools/tools/archived/subset_adata_v1.py,sha256=qyU9iCal03edb5aUS3AZ2U4TlL3uQ42jGI9hX3QF7Fc,1047
111
- smftools/tools/archived/subset_adata_v2.py,sha256=OKZoUpvdURPtckIQxGTWmOI5jLa-_EU62Xs3LyyehnA,1880
112
- smftools/tools/data/__init__.py,sha256=DEEeRUbOOaeqvy1swkUWPK_TPcjmkU6CcoZAqSa5cfs,91
113
- smftools/tools/data/anndata_data_module.py,sha256=ReAdYxwPR446eeNRKYCrt9OEhlQ9woY_4qxncJbUh4c,4425
114
- smftools/tools/data/preprocessing.py,sha256=dSs6Qs3wmlccFPZSpOc-uy1nlFSf68wWQKwF1iTqMok,137
115
- smftools/tools/evaluation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
- smftools/tools/inference/__init__.py,sha256=VJCamuKjcucG7RPFsjd8vECd_kwPlIz92u64gdPePDY,56
117
- smftools/tools/inference/lightning_inference.py,sha256=8SXbJWLDgbWiZW0bpC3IMkU01S1d_2zyzB__KxIAuBk,1469
118
- smftools/tools/models/__init__.py,sha256=bMfPbQ5bDmn_kWv82virLuUhjb12Yow7t_j96afNbyA,421
119
- smftools/tools/models/base.py,sha256=TRJMyKHGLLUkhEbzRMKIaNf-6yFyCEf5s0Xs0QUeG-0,505
120
- smftools/tools/models/cnn.py,sha256=M7SYPL-7f2Cyf0zQGmnV2vI6-KCz6rfikHV81XLy-lA,1169
121
- smftools/tools/models/lightning_base.py,sha256=8Zoj-ij5fSsFAn30hJfdUv-pZGuJLGtwj8HoHK3Msws,1354
122
- smftools/tools/models/mlp.py,sha256=YXVf1Pix-S2aqOMvmsVzbF_igsf9_MjKbuZw6FBo_nk,561
123
- smftools/tools/models/positional.py,sha256=7g93nyxnvWTYrfrdvIMWa74DG0obn5FbC2-ngWmCBVo,631
124
- smftools/tools/models/rnn.py,sha256=DVhG1mJ47ObqaHiLHEwHTpme1vR_uNeTnaaKzC6whgQ,656
125
- smftools/tools/models/sklearn_models.py,sha256=rFDrq7nJXHd4yCrc5oAvB76m04vdHQRNqWh3RCCOBQ0,1289
126
- smftools/tools/models/transformer.py,sha256=d0v7vtXNXOHDgOsXMyRkMLObpPpWjLvbFntGnh924g8,4896
127
- smftools/tools/models/wrappers.py,sha256=HEY2A6-Bk6MtVZ9jOaPT8S1Qi0L98SyEg1nbKqYZoag,697
128
- smftools/tools/training/__init__.py,sha256=PxAsc6UhXYyZkmwewhYK3OPVZG_se_YfSq75fqc0EBM,56
129
- smftools/tools/training/train_lightning_model.py,sha256=dtx1lJzgP8eMR1VyXsQo8KnzB6bhF2VY3kHhkEqVV58,1157
130
- smftools/tools/utils/__init__.py,sha256=yOpzBc9AXbarSRfN8Ixh2Z1uWLGpgpjRR46h6E46_2w,62
131
- smftools/tools/utils/device.py,sha256=GITrULOty2Fr96Bqt1wi1PaYl_oVgB5Z99Gfn5vQy4o,274
132
- smftools/tools/utils/grl.py,sha256=BWBDp_kQBigrUzQpRbZzgpfr_WOcd2K2V3MQL-aAIc4,334
133
- smftools-0.1.7.dist-info/METADATA,sha256=xb2e-EdaGquNERQ-0Pcs3SR4yTi5V_ua10ITchFjTkI,8870
134
- smftools-0.1.7.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
135
- smftools-0.1.7.dist-info/licenses/LICENSE,sha256=F8LwmL6vMPddaCt1z1S83Kh_OZv50alTlY7BvVx1RXw,1066
136
- smftools-0.1.7.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes