smftools 0.1.7__py3-none-any.whl → 0.2.3__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 (174) hide show
  1. smftools/__init__.py +7 -6
  2. smftools/_version.py +1 -1
  3. smftools/cli/cli_flows.py +94 -0
  4. smftools/cli/hmm_adata.py +338 -0
  5. smftools/cli/load_adata.py +577 -0
  6. smftools/cli/preprocess_adata.py +363 -0
  7. smftools/cli/spatial_adata.py +564 -0
  8. smftools/cli_entry.py +435 -0
  9. smftools/config/__init__.py +1 -0
  10. smftools/config/conversion.yaml +38 -0
  11. smftools/config/deaminase.yaml +61 -0
  12. smftools/config/default.yaml +264 -0
  13. smftools/config/direct.yaml +41 -0
  14. smftools/config/discover_input_files.py +115 -0
  15. smftools/config/experiment_config.py +1288 -0
  16. smftools/hmm/HMM.py +1576 -0
  17. smftools/hmm/__init__.py +20 -0
  18. smftools/{tools → hmm}/apply_hmm_batched.py +8 -7
  19. smftools/hmm/call_hmm_peaks.py +106 -0
  20. smftools/{tools → hmm}/display_hmm.py +3 -3
  21. smftools/{tools → hmm}/nucleosome_hmm_refinement.py +2 -2
  22. smftools/{tools → hmm}/train_hmm.py +1 -1
  23. smftools/informatics/__init__.py +13 -9
  24. smftools/informatics/archived/deaminase_smf.py +132 -0
  25. smftools/informatics/archived/fast5_to_pod5.py +43 -0
  26. smftools/informatics/archived/helpers/archived/__init__.py +71 -0
  27. smftools/informatics/archived/helpers/archived/align_and_sort_BAM.py +126 -0
  28. smftools/informatics/archived/helpers/archived/aligned_BAM_to_bed.py +87 -0
  29. smftools/informatics/archived/helpers/archived/bam_qc.py +213 -0
  30. smftools/informatics/archived/helpers/archived/bed_to_bigwig.py +90 -0
  31. smftools/informatics/archived/helpers/archived/concatenate_fastqs_to_bam.py +259 -0
  32. smftools/informatics/{helpers → archived/helpers/archived}/count_aligned_reads.py +2 -2
  33. smftools/informatics/{helpers → archived/helpers/archived}/demux_and_index_BAM.py +8 -10
  34. smftools/informatics/{helpers → archived/helpers/archived}/extract_base_identities.py +30 -4
  35. smftools/informatics/{helpers → archived/helpers/archived}/extract_mods.py +15 -13
  36. smftools/informatics/{helpers → archived/helpers/archived}/extract_read_features_from_bam.py +4 -2
  37. smftools/informatics/{helpers → archived/helpers/archived}/find_conversion_sites.py +5 -4
  38. smftools/informatics/{helpers → archived/helpers/archived}/generate_converted_FASTA.py +2 -0
  39. smftools/informatics/{helpers → archived/helpers/archived}/get_chromosome_lengths.py +9 -8
  40. smftools/informatics/archived/helpers/archived/index_fasta.py +24 -0
  41. smftools/informatics/{helpers → archived/helpers/archived}/make_modbed.py +1 -2
  42. smftools/informatics/{helpers → archived/helpers/archived}/modQC.py +2 -2
  43. smftools/informatics/archived/helpers/archived/plot_bed_histograms.py +250 -0
  44. smftools/informatics/{helpers → archived/helpers/archived}/separate_bam_by_bc.py +8 -7
  45. smftools/informatics/{helpers → archived/helpers/archived}/split_and_index_BAM.py +8 -12
  46. smftools/informatics/archived/subsample_fasta_from_bed.py +49 -0
  47. smftools/informatics/bam_functions.py +812 -0
  48. smftools/informatics/basecalling.py +67 -0
  49. smftools/informatics/bed_functions.py +366 -0
  50. smftools/informatics/binarize_converted_base_identities.py +172 -0
  51. smftools/informatics/{helpers/converted_BAM_to_adata_II.py → converted_BAM_to_adata.py} +198 -50
  52. smftools/informatics/fasta_functions.py +255 -0
  53. smftools/informatics/h5ad_functions.py +197 -0
  54. smftools/informatics/{helpers/modkit_extract_to_adata.py → modkit_extract_to_adata.py} +147 -61
  55. smftools/informatics/modkit_functions.py +129 -0
  56. smftools/informatics/ohe.py +160 -0
  57. smftools/informatics/pod5_functions.py +224 -0
  58. smftools/informatics/{helpers/run_multiqc.py → run_multiqc.py} +5 -2
  59. smftools/machine_learning/__init__.py +12 -0
  60. smftools/machine_learning/data/__init__.py +2 -0
  61. smftools/machine_learning/data/anndata_data_module.py +234 -0
  62. smftools/machine_learning/evaluation/__init__.py +2 -0
  63. smftools/machine_learning/evaluation/eval_utils.py +31 -0
  64. smftools/machine_learning/evaluation/evaluators.py +223 -0
  65. smftools/machine_learning/inference/__init__.py +3 -0
  66. smftools/machine_learning/inference/inference_utils.py +27 -0
  67. smftools/machine_learning/inference/lightning_inference.py +68 -0
  68. smftools/machine_learning/inference/sklearn_inference.py +55 -0
  69. smftools/machine_learning/inference/sliding_window_inference.py +114 -0
  70. smftools/machine_learning/models/base.py +295 -0
  71. smftools/machine_learning/models/cnn.py +138 -0
  72. smftools/machine_learning/models/lightning_base.py +345 -0
  73. smftools/machine_learning/models/mlp.py +26 -0
  74. smftools/{tools → machine_learning}/models/positional.py +3 -2
  75. smftools/{tools → machine_learning}/models/rnn.py +2 -1
  76. smftools/machine_learning/models/sklearn_models.py +273 -0
  77. smftools/machine_learning/models/transformer.py +303 -0
  78. smftools/machine_learning/training/__init__.py +2 -0
  79. smftools/machine_learning/training/train_lightning_model.py +135 -0
  80. smftools/machine_learning/training/train_sklearn_model.py +114 -0
  81. smftools/plotting/__init__.py +4 -1
  82. smftools/plotting/autocorrelation_plotting.py +609 -0
  83. smftools/plotting/general_plotting.py +1292 -140
  84. smftools/plotting/hmm_plotting.py +260 -0
  85. smftools/plotting/qc_plotting.py +270 -0
  86. smftools/preprocessing/__init__.py +15 -8
  87. smftools/preprocessing/add_read_length_and_mapping_qc.py +129 -0
  88. smftools/preprocessing/append_base_context.py +122 -0
  89. smftools/preprocessing/append_binary_layer_by_base_context.py +143 -0
  90. smftools/preprocessing/binarize.py +17 -0
  91. smftools/preprocessing/binarize_on_Youden.py +2 -2
  92. smftools/preprocessing/calculate_complexity_II.py +248 -0
  93. smftools/preprocessing/calculate_coverage.py +10 -1
  94. smftools/preprocessing/calculate_position_Youden.py +1 -1
  95. smftools/preprocessing/calculate_read_modification_stats.py +101 -0
  96. smftools/preprocessing/clean_NaN.py +17 -1
  97. smftools/preprocessing/filter_reads_on_length_quality_mapping.py +158 -0
  98. smftools/preprocessing/filter_reads_on_modification_thresholds.py +352 -0
  99. smftools/preprocessing/flag_duplicate_reads.py +1326 -124
  100. smftools/preprocessing/invert_adata.py +12 -5
  101. smftools/preprocessing/load_sample_sheet.py +19 -4
  102. smftools/readwrite.py +1021 -89
  103. smftools/tools/__init__.py +3 -32
  104. smftools/tools/calculate_umap.py +5 -5
  105. smftools/tools/general_tools.py +3 -3
  106. smftools/tools/position_stats.py +468 -106
  107. smftools/tools/read_stats.py +115 -1
  108. smftools/tools/spatial_autocorrelation.py +562 -0
  109. {smftools-0.1.7.dist-info → smftools-0.2.3.dist-info}/METADATA +14 -9
  110. smftools-0.2.3.dist-info/RECORD +173 -0
  111. smftools-0.2.3.dist-info/entry_points.txt +2 -0
  112. smftools/informatics/fast5_to_pod5.py +0 -21
  113. smftools/informatics/helpers/LoadExperimentConfig.py +0 -75
  114. smftools/informatics/helpers/__init__.py +0 -74
  115. smftools/informatics/helpers/align_and_sort_BAM.py +0 -59
  116. smftools/informatics/helpers/aligned_BAM_to_bed.py +0 -74
  117. smftools/informatics/helpers/bam_qc.py +0 -66
  118. smftools/informatics/helpers/bed_to_bigwig.py +0 -39
  119. smftools/informatics/helpers/binarize_converted_base_identities.py +0 -79
  120. smftools/informatics/helpers/concatenate_fastqs_to_bam.py +0 -55
  121. smftools/informatics/helpers/index_fasta.py +0 -12
  122. smftools/informatics/helpers/make_dirs.py +0 -21
  123. smftools/informatics/helpers/plot_read_length_and_coverage_histograms.py +0 -53
  124. smftools/informatics/load_adata.py +0 -182
  125. smftools/informatics/readwrite.py +0 -106
  126. smftools/informatics/subsample_fasta_from_bed.py +0 -47
  127. smftools/preprocessing/append_C_context.py +0 -82
  128. smftools/preprocessing/calculate_converted_read_methylation_stats.py +0 -94
  129. smftools/preprocessing/filter_converted_reads_on_methylation.py +0 -44
  130. smftools/preprocessing/filter_reads_on_length.py +0 -51
  131. smftools/tools/call_hmm_peaks.py +0 -105
  132. smftools/tools/data/__init__.py +0 -2
  133. smftools/tools/data/anndata_data_module.py +0 -90
  134. smftools/tools/inference/__init__.py +0 -1
  135. smftools/tools/inference/lightning_inference.py +0 -41
  136. smftools/tools/models/base.py +0 -14
  137. smftools/tools/models/cnn.py +0 -34
  138. smftools/tools/models/lightning_base.py +0 -41
  139. smftools/tools/models/mlp.py +0 -17
  140. smftools/tools/models/sklearn_models.py +0 -40
  141. smftools/tools/models/transformer.py +0 -133
  142. smftools/tools/training/__init__.py +0 -1
  143. smftools/tools/training/train_lightning_model.py +0 -47
  144. smftools-0.1.7.dist-info/RECORD +0 -136
  145. /smftools/{tools/evaluation → cli}/__init__.py +0 -0
  146. /smftools/{tools → hmm}/calculate_distances.py +0 -0
  147. /smftools/{tools → hmm}/hmm_readwrite.py +0 -0
  148. /smftools/informatics/{basecall_pod5s.py → archived/basecall_pod5s.py} +0 -0
  149. /smftools/informatics/{conversion_smf.py → archived/conversion_smf.py} +0 -0
  150. /smftools/informatics/{direct_smf.py → archived/direct_smf.py} +0 -0
  151. /smftools/informatics/{helpers → archived/helpers/archived}/canoncall.py +0 -0
  152. /smftools/informatics/{helpers → archived/helpers/archived}/converted_BAM_to_adata.py +0 -0
  153. /smftools/informatics/{helpers → archived/helpers/archived}/extract_read_lengths_from_bed.py +0 -0
  154. /smftools/informatics/{helpers → archived/helpers/archived}/extract_readnames_from_BAM.py +0 -0
  155. /smftools/informatics/{helpers → archived/helpers/archived}/get_native_references.py +0 -0
  156. /smftools/informatics/{helpers → archived/helpers}/archived/informatics.py +0 -0
  157. /smftools/informatics/{helpers → archived/helpers}/archived/load_adata.py +0 -0
  158. /smftools/informatics/{helpers → archived/helpers/archived}/modcall.py +0 -0
  159. /smftools/informatics/{helpers → archived/helpers/archived}/ohe_batching.py +0 -0
  160. /smftools/informatics/{helpers → archived/helpers/archived}/ohe_layers_decode.py +0 -0
  161. /smftools/informatics/{helpers → archived/helpers/archived}/one_hot_decode.py +0 -0
  162. /smftools/informatics/{helpers → archived/helpers/archived}/one_hot_encode.py +0 -0
  163. /smftools/informatics/{subsample_pod5.py → archived/subsample_pod5.py} +0 -0
  164. /smftools/informatics/{helpers/complement_base_list.py → complement_base_list.py} +0 -0
  165. /smftools/{tools → machine_learning}/data/preprocessing.py +0 -0
  166. /smftools/{tools → machine_learning}/models/__init__.py +0 -0
  167. /smftools/{tools → machine_learning}/models/wrappers.py +0 -0
  168. /smftools/{tools → machine_learning}/utils/__init__.py +0 -0
  169. /smftools/{tools → machine_learning}/utils/device.py +0 -0
  170. /smftools/{tools → machine_learning}/utils/grl.py +0 -0
  171. /smftools/tools/{apply_hmm.py → archived/apply_hmm.py} +0 -0
  172. /smftools/tools/{classifiers.py → archived/classifiers.py} +0 -0
  173. {smftools-0.1.7.dist-info → smftools-0.2.3.dist-info}/WHEEL +0 -0
  174. {smftools-0.1.7.dist-info → smftools-0.2.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,40 +0,0 @@
1
- from sklearn.ensemble import RandomForestClassifier
2
- from sklearn.naive_bayes import GaussianNB
3
- from sklearn.metrics import (
4
- roc_curve, precision_recall_curve, auc, f1_score, confusion_matrix
5
- )
6
- from sklearn.utils.class_weight import compute_class_weight
7
-
8
- import numpy as np
9
-
10
- class SklearnModelWrapper:
11
- def __init__(self, model):
12
- self.model = model
13
-
14
- def fit(self, X_train, y_train):
15
- self.model.fit(X_train, y_train)
16
-
17
- def predict(self, X):
18
- return self.model.predict(X)
19
-
20
- def predict_proba(self, X):
21
- return self.model.predict_proba(X)
22
-
23
- def evaluate(self, X_test, y_test):
24
- probs = self.predict_proba(X_test)[:, 1]
25
- preds = self.predict(X_test)
26
-
27
- fpr, tpr, _ = roc_curve(y_test, probs)
28
- precision, recall, _ = precision_recall_curve(y_test, probs)
29
- f1 = f1_score(y_test, preds)
30
- auc_score = auc(fpr, tpr)
31
- pr_auc = auc(recall, precision)
32
- cm = confusion_matrix(y_test, preds)
33
- pos_freq = np.mean(y_test == 1)
34
- pr_auc_norm = pr_auc / pos_freq
35
-
36
- return {
37
- "fpr": fpr, "tpr": tpr, "precision": precision, "recall": recall,
38
- "f1": f1, "auc": auc_score, "pr_auc": pr_auc,
39
- "pr_auc_norm": pr_auc_norm, "confusion_matrix": cm
40
- }
@@ -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
File without changes