pav3 3.0.0.dev15__tar.gz → 3.0.0.dev16__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.
Files changed (97) hide show
  1. {pav3-3.0.0.dev15/src/pav3.egg-info → pav3-3.0.0.dev16}/PKG-INFO +1 -1
  2. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/__init__.py +1 -1
  3. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/call/intra.py +10 -15
  4. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/schema.py +28 -1
  5. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16/src/pav3.egg-info}/PKG-INFO +1 -1
  6. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/LICENSE +0 -0
  7. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/README.md +0 -0
  8. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/pyproject.toml +0 -0
  9. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/setup.cfg +0 -0
  10. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/__main__.py +0 -0
  11. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/__init__.py +0 -0
  12. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/features.py +0 -0
  13. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/lcmodel/__init__.py +0 -0
  14. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/lcmodel/_lcmodel.py +0 -0
  15. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/lcmodel/_lcmodel_logistic.py +0 -0
  16. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/lcmodel/_lcmodel_null.py +0 -0
  17. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/lcmodel/_util.py +0 -0
  18. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/lift.py +0 -0
  19. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/op.py +0 -0
  20. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/records.py +0 -0
  21. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/score.py +0 -0
  22. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/tables.py +0 -0
  23. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/align/trim.py +0 -0
  24. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/anno.py +0 -0
  25. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/call/__init__.py +0 -0
  26. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/call/expr.py +0 -0
  27. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/call/integrate.py +0 -0
  28. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/call/util.py +0 -0
  29. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/cli/__init__.py +0 -0
  30. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/cli/_cli.py +0 -0
  31. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/cli/_common_opt.py +0 -0
  32. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/cli/_subcommand_batch.py +0 -0
  33. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/cli/_subcommand_call.py +0 -0
  34. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/cli/_subcommand_license.py +0 -0
  35. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/const.py +0 -0
  36. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/default/model.json +0 -0
  37. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/human_95_80/model.json +0 -0
  38. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/human_95_80/model_info.tar.gz +0 -0
  39. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/human_95_80/weights.npz +0 -0
  40. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/human_98_80/model.json +0 -0
  41. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/human_98_80/model_info.tar.gz +0 -0
  42. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/human_98_80/weights.npz +0 -0
  43. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/prim_90_50/model.json +0 -0
  44. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/prim_90_50/model_info.tar.gz +0 -0
  45. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/prim_90_50/weights.npz +0 -0
  46. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/primdiv_85_50/model.json +0 -0
  47. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/primdiv_85_50/model_info.tar.gz +0 -0
  48. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/lcmodel/primdiv_85_50/weights.npz +0 -0
  49. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/tracks/alignment_track_fields.tsv +0 -0
  50. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/tracks/variant_track_fields.tsv +0 -0
  51. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/Snakefile +0 -0
  52. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/profiles/pav_default/config.yaml +0 -0
  53. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/rules/align.smk +0 -0
  54. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/rules/call.smk +0 -0
  55. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/rules/data.smk +0 -0
  56. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/rules/pipeline.smk +0 -0
  57. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/data/workflow/rules/tracks.smk +0 -0
  58. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/dev/__init__.py +0 -0
  59. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/dev/imports.py +0 -0
  60. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/dev/inter.py +0 -0
  61. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/dev/path.py +0 -0
  62. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/dev/sm.py +0 -0
  63. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/dev/tables.py +0 -0
  64. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/fig/__init__.py +0 -0
  65. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/fig/const.py +0 -0
  66. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/fig/density.py +0 -0
  67. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/fig/tracks.py +0 -0
  68. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/fig/util.py +0 -0
  69. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/inv.py +0 -0
  70. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/io.py +0 -0
  71. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/kde.py +0 -0
  72. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/__init__.py +0 -0
  73. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/call.py +0 -0
  74. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/chain.py +0 -0
  75. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/interval.py +0 -0
  76. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/io.py +0 -0
  77. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/region_kde.py +0 -0
  78. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/resources.py +0 -0
  79. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/struct.py +0 -0
  80. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/lgsv/variant.py +0 -0
  81. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/params.py +0 -0
  82. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/pipeline.py +0 -0
  83. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/region.py +0 -0
  84. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/seq.py +0 -0
  85. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/util.py +0 -0
  86. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/vcf.py +0 -0
  87. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/workflow/__init__.py +0 -0
  88. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/workflow/__pycache__/__init__.cpython-312.pyc +0 -0
  89. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/workflow/__pycache__/call.cpython-312.pyc +0 -0
  90. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/workflow/__pycache__/resource.cpython-312.pyc +0 -0
  91. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/workflow/call.py +0 -0
  92. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3/workflow/resource.py +0 -0
  93. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3.egg-info/SOURCES.txt +0 -0
  94. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3.egg-info/dependency_links.txt +0 -0
  95. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3.egg-info/entry_points.txt +0 -0
  96. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3.egg-info/requires.txt +0 -0
  97. {pav3-3.0.0.dev15 → pav3-3.0.0.dev16}/src/pav3.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pav3
3
- Version: 3.0.0.dev15
3
+ Version: 3.0.0.dev16
4
4
  Summary: Assembly-based variant discovery
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.12
@@ -1,6 +1,6 @@
1
1
  """PAV Python library routines."""
2
2
 
3
- __version__ = '3.0.0.dev15'
3
+ __version__ = '3.0.0.dev16'
4
4
 
5
5
  __all__ = [
6
6
  'align',
@@ -21,6 +21,7 @@ __all__ = [
21
21
 
22
22
  import agglovar
23
23
  import os
24
+ from pathlib import Path
24
25
  from typing import Optional
25
26
 
26
27
  import Bio.Seq
@@ -363,8 +364,8 @@ def variant_tables_snv_insdel(
363
364
  def variant_tables_inv(
364
365
  df_align: pl.DataFrame | pl.LazyFrame,
365
366
  df_flag: pl.DataFrame | pl.LazyFrame,
366
- ref_fa_filename: str,
367
- qry_fa_filename: str,
367
+ ref_fa_filename: str | Path,
368
+ qry_fa_filename: str | Path,
368
369
  df_ref_fai: pl.DataFrame,
369
370
  df_qry_fai: pl.DataFrame,
370
371
  pav_params: Optional[PavParams] = None,
@@ -410,6 +411,8 @@ def variant_tables_inv(
410
411
  # Create variant tables
411
412
  variant_table_list = []
412
413
 
414
+ log_file = None
415
+
413
416
  for row in df_flag.iter_rows(named=True):
414
417
  region_flag = Region(
415
418
  chrom=row['chrom'], pos=row['pos'], end=row['end'],
@@ -427,23 +430,16 @@ def variant_tables_inv(
427
430
  k_util=k_util,
428
431
  kde_model=kde_model,
429
432
  stop_on_lift_fail=True,
430
- log_file=None,
433
+ log_file=log_file,
431
434
  )
432
435
 
433
436
  if inv_row is not None:
434
- inv_row['align_index'] = [row['align_index']]
435
-
436
- variant_table_list.append(pl.DataFrame(inv_row))
437
-
438
- col_set = set(get_inv_row().keys())
439
-
440
- col_set.add('filter')
441
- col_set.add('align_source')
442
-
443
- table_schema = {col: type_ for col, type_ in schema.VARIANT.items() if col in col_set}
437
+ variant_table_list.append(inv_row)
444
438
 
445
439
  df_inv = (
446
- pl.from_dicts(variant_table_list, schema=table_schema)
440
+ pl.from_dicts(
441
+ variant_table_list,
442
+ )
447
443
  .with_columns(
448
444
  expr.id_nonsnv().alias('id'),
449
445
  pl.lit(CALL_SOURCE).alias('call_source')
@@ -454,7 +450,6 @@ def variant_tables_inv(
454
450
  right_on='align_index',
455
451
  how='left'
456
452
  )
457
- .select(list(table_schema.keys()))
458
453
  )
459
454
 
460
455
  return schema.cast(df_inv, schema.VARIANT)
@@ -168,6 +168,7 @@ Fields:
168
168
  def cast(
169
169
  df: pl.DataFrame,
170
170
  schema: dict[str, pl.DataType],
171
+ do_sort: bool = True,
171
172
  ) -> pl.DataFrame:
172
173
  ...
173
174
 
@@ -175,22 +176,48 @@ def cast(
175
176
  def cast(
176
177
  df: pl.LazyFrame,
177
178
  schema: dict[str, pl.DataType],
179
+ do_sort: bool = True,
178
180
  ) -> pl.LazyFrame:
179
181
  ...
180
182
 
181
183
  def cast(
182
184
  df: pl.DataFrame | pl.LazyFrame,
183
185
  schema: dict[str, pl.DataType],
186
+ do_sort: bool = True,
184
187
  ) -> pl.DataFrame | pl.LazyFrame:
188
+ """
189
+ Cast a DataFrame or LazyFrame to a schema.
190
+
191
+ :param df: DataFrame or LazyFrame to cast.
192
+ :param schema: Schema to cast to.
193
+ :param do_sort: Whether to sort the DataFrame or LazyFrame by the order defined in the schema.
194
+ If the table contains columns not defined by the schema, they are retained in order after
195
+ columns defined by the schema.
196
+ """
185
197
 
186
198
  if isinstance(df, pl.DataFrame):
187
199
  existing_schema = df.schema
188
200
  else:
189
201
  existing_schema = df.collect_schema()
190
202
 
191
- return df.cast(
203
+ df = df.cast(
192
204
  {
193
205
  col: schema.get(col, type_)
194
206
  for col, type_ in existing_schema.items()
195
207
  }
196
208
  )
209
+
210
+ if do_sort:
211
+ df = (
212
+ df
213
+ .select(
214
+ *[ # Known columns first
215
+ col for col in schema.keys() if col in existing_schema.keys()
216
+ ],
217
+ *[ # Unknown columns last
218
+ col for col in existing_schema.keys() if col not in schema.keys()
219
+ ]
220
+ )
221
+ )
222
+
223
+ return df
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pav3
3
- Version: 3.0.0.dev15
3
+ Version: 3.0.0.dev16
4
4
  Summary: Assembly-based variant discovery
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.12
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
File without changes
File without changes
File without changes