genmod 3.8.3__tar.gz → 3.10__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 (215) hide show
  1. genmod-3.10/.github/workflows/build_and_publish.yml +63 -0
  2. genmod-3.10/.github/workflows/check_format.yml +26 -0
  3. genmod-3.10/.github/workflows/keep_a_changelog.yml +15 -0
  4. genmod-3.10/.github/workflows/lint.yml +19 -0
  5. genmod-3.10/.github/workflows/test.yml +24 -0
  6. genmod-3.10/.gitignore +20 -0
  7. genmod-3.10/.python-version +1 -0
  8. genmod-3.10/.travis.yml +16 -0
  9. genmod-3.10/CHANGELOG.md +49 -0
  10. genmod-3.10/CITATION.cff +16 -0
  11. genmod-3.10/DEVELOPING.md +19 -0
  12. genmod-3.10/Dockerfile +17 -0
  13. genmod-3.10/Dockerfile.pytest +9 -0
  14. {genmod-3.8.3 → genmod-3.10}/MANIFEST.in +5 -1
  15. genmod-3.10/Makefile +24 -0
  16. genmod-3.8.3/README.md → genmod-3.10/PKG-INFO +59 -73
  17. genmod-3.10/README.md +302 -0
  18. genmod-3.10/artwork/tree_man.JPG +0 -0
  19. genmod-3.10/docs/commands/annotate-models.md +110 -0
  20. genmod-3.10/docs/commands/annotate-variants.md +44 -0
  21. genmod-3.10/docs/commands/build-annotation.md +28 -0
  22. genmod-3.10/docs/commands/filter-variants.md +43 -0
  23. genmod-3.10/docs/commands/score-compounds.md +23 -0
  24. genmod-3.10/docs/commands/score-variants.md +19 -0
  25. genmod-3.10/docs/genetic-models.md +75 -0
  26. genmod-3.10/docs/index.md +137 -0
  27. genmod-3.10/examples/readme.md +57 -0
  28. genmod-3.10/examples/score_test.ini +155 -0
  29. genmod-3.10/examples/small_1000G_CADD.tsv +23 -0
  30. genmod-3.10/examples/small_CADD.tsv +2185 -0
  31. genmod-3.10/examples/small_dbNSFP.txt +317 -0
  32. genmod-3.10/examples/small_geneset.gtf +106 -0
  33. genmod-3.10/examples/test_vcf.vcf +20 -0
  34. genmod-3.10/genmod/__init__.py +10 -0
  35. genmod-3.10/genmod/annotate_models/__init__.py +1 -0
  36. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/fix_variant.py +35 -49
  37. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/genetic_models.py +202 -227
  38. genmod-3.10/genmod/annotate_models/make_haploblocks.py +119 -0
  39. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/model_score.py +22 -20
  40. genmod-3.10/genmod/annotate_models/models/__init__.py +15 -0
  41. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/models/compound_model.py +54 -55
  42. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/models/dominant_model.py +20 -20
  43. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/models/recessive_model.py +14 -18
  44. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/models/x_models.py +33 -30
  45. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_models/variant_annotator.py +66 -62
  46. genmod-3.10/genmod/annotate_regions/__init__.py +0 -0
  47. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_regions/get_features.py +3 -2
  48. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_regions/parse_annotations.py +42 -44
  49. genmod-3.10/genmod/annotate_variants/__init__.py +10 -0
  50. genmod-3.10/genmod/annotate_variants/add_annotations.py +131 -0
  51. genmod-3.10/genmod/annotate_variants/annotate.py +87 -0
  52. {genmod-3.8.3 → genmod-3.10}/genmod/annotate_variants/read_tabix_files.py +47 -47
  53. genmod-3.10/genmod/annotations/__init__.py +7 -0
  54. {genmod-3.8.3 → genmod-3.10}/genmod/commands/__init__.py +13 -4
  55. genmod-3.10/genmod/commands/analyze.py +611 -0
  56. {genmod-3.8.3 → genmod-3.10}/genmod/commands/annotate_models.py +188 -187
  57. genmod-3.10/genmod/commands/annotate_variant.py +230 -0
  58. {genmod-3.8.3 → genmod-3.10}/genmod/commands/base.py +34 -30
  59. {genmod-3.8.3 → genmod-3.10}/genmod/commands/filter_variants.py +56 -61
  60. {genmod-3.8.3 → genmod-3.10}/genmod/commands/genmod_sort.py +42 -72
  61. {genmod-3.8.3 → genmod-3.10}/genmod/commands/score_compounds.py +72 -75
  62. {genmod-3.8.3 → genmod-3.10}/genmod/commands/score_variants.py +114 -100
  63. {genmod-3.8.3 → genmod-3.10}/genmod/commands/summarize_variants.py +81 -77
  64. genmod-3.10/genmod/commands/utils.py +53 -0
  65. genmod-3.10/genmod/errors/__init__.py +4 -0
  66. {genmod-3.8.3 → genmod-3.10}/genmod/errors/warning.py +6 -5
  67. {genmod-3.8.3 → genmod-3.10}/genmod/log.py +8 -8
  68. genmod-3.10/genmod/score_variants/__init__.py +19 -0
  69. {genmod-3.8.3 → genmod-3.10}/genmod/score_variants/cap_rank_score_to_min_bound.py +6 -6
  70. {genmod-3.8.3 → genmod-3.10}/genmod/score_variants/check_plugins.py +21 -18
  71. {genmod-3.8.3 → genmod-3.10}/genmod/score_variants/compound_scorer.py +151 -108
  72. {genmod-3.8.3 → genmod-3.10}/genmod/score_variants/config_parser.py +166 -190
  73. genmod-3.10/genmod/score_variants/rank_score_variant_definitions.py +8 -0
  74. {genmod-3.8.3 → genmod-3.10}/genmod/score_variants/score_function.py +77 -73
  75. {genmod-3.8.3 → genmod-3.10}/genmod/score_variants/score_variant.py +70 -60
  76. genmod-3.10/genmod/utils/__init__.py +44 -0
  77. {genmod-3.8.3 → genmod-3.10}/genmod/utils/check_individuals.py +8 -7
  78. {genmod-3.8.3 → genmod-3.10}/genmod/utils/get_batches.py +54 -52
  79. {genmod-3.8.3 → genmod-3.10}/genmod/utils/get_features.py +57 -27
  80. {genmod-3.8.3 → genmod-3.10}/genmod/utils/get_priority.py +36 -34
  81. {genmod-3.8.3 → genmod-3.10}/genmod/utils/is_number.py +3 -3
  82. {genmod-3.8.3 → genmod-3.10}/genmod/utils/pair_generator.py +17 -15
  83. {genmod-3.8.3 → genmod-3.10}/genmod/utils/variant_printer.py +37 -36
  84. genmod-3.10/genmod/vcf_tools/__init__.py +45 -0
  85. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/add_metadata.py +59 -56
  86. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/add_variant_information.py +46 -44
  87. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/check_info_header.py +6 -5
  88. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/genotype.py +33 -36
  89. genmod-3.10/genmod/vcf_tools/get_genotypes.py +29 -0
  90. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/header_parser.py +145 -154
  91. genmod-3.10/genmod/vcf_tools/parse_variant.py +97 -0
  92. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/print_headers.py +5 -6
  93. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/print_variants.py +45 -42
  94. {genmod-3.8.3 → genmod-3.10}/genmod/vcf_tools/sort_variants.py +21 -26
  95. genmod-3.10/mkdocs.yml +20 -0
  96. genmod-3.10/pyproject.toml +73 -0
  97. genmod-3.10/pytest.ini +5 -0
  98. genmod-3.10/setup.cfg +13 -0
  99. genmod-3.10/tests/__init__.py +0 -0
  100. genmod-3.10/tests/annotate_regions/test_bed_parser.py +35 -0
  101. genmod-3.10/tests/annotate_regions/test_build_region_trees.py +53 -0
  102. genmod-3.10/tests/annotate_regions/test_get_interval.py +17 -0
  103. genmod-3.10/tests/annotate_variants/test_add_annotations.py +101 -0
  104. genmod-3.10/tests/conftest.py +78 -0
  105. genmod-3.10/tests/fixtures/annotate_models/one_ind.ped +2 -0
  106. genmod-3.10/tests/fixtures/annotate_variant/small_1000G.vcf.gz +0 -0
  107. genmod-3.10/tests/fixtures/annotate_variant/small_1000G.vcf.gz.tbi +0 -0
  108. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_CADD.tsv.gz +0 -0
  109. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_CADD.tsv.gz.tbi +0 -0
  110. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_chr.vcf.gz +0 -0
  111. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_chr.vcf.gz.tbi +0 -0
  112. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_maxAF.vcf +316 -0
  113. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_maxAF.vcf.gz +0 -0
  114. genmod-3.10/tests/fixtures/annotate_variant/small_1000G_maxAF.vcf.gz.tbi +0 -0
  115. genmod-3.10/tests/fixtures/annotate_variant/small_CADD.tsv.gz +0 -0
  116. genmod-3.10/tests/fixtures/annotate_variant/small_CADD.tsv.gz.tbi +0 -0
  117. genmod-3.10/tests/fixtures/comp_check.vcf +17 -0
  118. genmod-3.10/tests/fixtures/duo.ped +3 -0
  119. genmod-3.10/tests/fixtures/empty.vcf +5 -0
  120. genmod-3.10/tests/fixtures/one_ind.ped +2 -0
  121. genmod-3.10/tests/fixtures/recessive_trio.ped +4 -0
  122. genmod-3.10/tests/fixtures/reduced_penetrance.tsv +2 -0
  123. genmod-3.10/tests/fixtures/resources/small_spidex.tsv +1540 -0
  124. genmod-3.10/tests/fixtures/resources/small_spidex.tsv.gz +0 -0
  125. genmod-3.10/tests/fixtures/resources/small_spidex.tsv.gz.tbi +0 -0
  126. genmod-3.10/tests/fixtures/score_variants/genmod_example.ini +180 -0
  127. {genmod-3.8.3/examples → genmod-3.10/tests/fixtures}/test_vcf.vcf +2 -2
  128. genmod-3.10/tests/fixtures/test_vcf_annotated.vcf +27 -0
  129. genmod-3.10/tests/fixtures/test_vcf_annotated_empty.vcf +12 -0
  130. genmod-3.10/tests/fixtures/test_vcf_annotated_scored.vcf +27 -0
  131. genmod-3.10/tests/fixtures/test_vcf_regions.vcf +21 -0
  132. genmod-3.10/tests/fixtures/test_vcf_regions_with_chr.vcf +21 -0
  133. genmod-3.10/tests/functionality/test_annotate_models.py +97 -0
  134. genmod-3.10/tests/functionality/test_annotate_variant.py +62 -0
  135. genmod-3.10/tests/functionality/test_filter_variants.py +16 -0
  136. genmod-3.10/tests/functionality/test_score_variants.py +62 -0
  137. genmod-3.10/tests/functionality/test_score_variants_ranks_score_is_float.py +98 -0
  138. genmod-3.10/tests/functionality/test_sort_variants.py +98 -0
  139. genmod-3.10/tests/functionality/test_utils.py +40 -0
  140. genmod-3.10/tests/genetic_models/test_dominant_model.py +138 -0
  141. genmod-3.10/tests/genetic_models/test_x_dominant.py +251 -0
  142. genmod-3.10/tests/genetic_models/test_x_recessive.py +187 -0
  143. genmod-3.10/tests/score_variants/test_category_score.py +294 -0
  144. genmod-3.10/tests/score_variants/test_config_parser.py +91 -0
  145. genmod-3.10/tests/score_variants/test_rankscore_capping.py +41 -0
  146. genmod-3.10/tests/score_variants/test_score_function.py +136 -0
  147. genmod-3.10/tests/utils/test_check_individuals.py +23 -0
  148. genmod-3.10/tests/utils/test_check_vep_annotation.py +27 -0
  149. genmod-3.10/tests/utils/test_generate_pairs.py +43 -0
  150. genmod-3.10/tests/utils/test_get_annotation.py +59 -0
  151. genmod-3.10/tests/utils/test_get_batches.py +215 -0
  152. genmod-3.10/tests/utils/test_get_priority.py +41 -0
  153. genmod-3.10/tests/utils/test_get_rank_score.py +75 -0
  154. genmod-3.10/tests/utils/test_is_number.py +31 -0
  155. genmod-3.10/tests/utils/test_variant_printer.py +78 -0
  156. genmod-3.10/tests/variant_annotation/test_get_frequencies.py +29 -0
  157. genmod-3.10/tests/variant_annotation/test_get_haploblocks.py +104 -0
  158. genmod-3.10/tests/variant_annotation/test_get_tabix_records.py +31 -0
  159. genmod-3.10/tests/vcf_tools/test_genotype.py +190 -0
  160. genmod-3.10/tests/vcf_tools/test_header_parser.py +94 -0
  161. genmod-3.10/tests/vcf_tools/test_parse_variant.py +19 -0
  162. genmod-3.10/tests/vcf_tools/test_sorting.py +55 -0
  163. genmod-3.10/uv.lock +1045 -0
  164. genmod-3.8.3/PKG-INFO +0 -31
  165. genmod-3.8.3/genmod/__init__.py +0 -14
  166. genmod-3.8.3/genmod/annotate_models/__init__.py +0 -7
  167. genmod-3.8.3/genmod/annotate_models/make_haploblocks.py +0 -126
  168. genmod-3.8.3/genmod/annotate_models/models/__init__.py +0 -7
  169. genmod-3.8.3/genmod/annotate_variants/__init__.py +0 -4
  170. genmod-3.8.3/genmod/annotate_variants/add_annotations.py +0 -122
  171. genmod-3.8.3/genmod/annotate_variants/annotate.py +0 -82
  172. genmod-3.8.3/genmod/annotations/__init__.py +0 -7
  173. genmod-3.8.3/genmod/commands/analyze.py +0 -628
  174. genmod-3.8.3/genmod/commands/annotate_variant.py +0 -212
  175. genmod-3.8.3/genmod/commands/utils.py +0 -53
  176. genmod-3.8.3/genmod/errors/__init__.py +0 -2
  177. genmod-3.8.3/genmod/score_variants/__init__.py +0 -8
  178. genmod-3.8.3/genmod/score_variants/rank_score_variant_definitions.py +0 -8
  179. genmod-3.8.3/genmod/utils/__init__.py +0 -67
  180. genmod-3.8.3/genmod/vcf_tools/__init__.py +0 -16
  181. genmod-3.8.3/genmod/vcf_tools/get_genotypes.py +0 -29
  182. genmod-3.8.3/genmod/vcf_tools/parse_variant.py +0 -93
  183. genmod-3.8.3/genmod.egg-info/PKG-INFO +0 -31
  184. genmod-3.8.3/genmod.egg-info/SOURCES.txt +0 -96
  185. genmod-3.8.3/genmod.egg-info/dependency_links.txt +0 -1
  186. genmod-3.8.3/genmod.egg-info/entry_points.txt +0 -2
  187. genmod-3.8.3/genmod.egg-info/requires.txt +0 -10
  188. genmod-3.8.3/genmod.egg-info/top_level.txt +0 -1
  189. genmod-3.8.3/setup.cfg +0 -14
  190. genmod-3.8.3/setup.py +0 -65
  191. {genmod-3.8.3 → genmod-3.10}/LICENSE.txt +0 -0
  192. /genmod-3.8.3/genmod/annotate_regions/__init__.py → /genmod-3.10/docs/commands/sort-variants.md +0 -0
  193. {genmod-3.8.3 → genmod-3.10}/examples/dominant_trio.ped +0 -0
  194. {genmod-3.8.3 → genmod-3.10}/examples/multi_allele_example.vcf +0 -0
  195. {genmod-3.8.3 → genmod-3.10}/examples/multi_family.ped +0 -0
  196. {genmod-3.8.3 → genmod-3.10}/examples/recessive_trio.ped +0 -0
  197. {genmod-3.8.3 → genmod-3.10}/examples/small_1000G.vcf +0 -0
  198. {genmod-3.8.3 → genmod-3.10}/examples/small_1000G.vcf.gz +0 -0
  199. {genmod-3.8.3 → genmod-3.10}/examples/small_1000G.vcf.gz.tbi +0 -0
  200. {genmod-3.8.3 → genmod-3.10}/examples/small_1000G_CADD.tsv.gz +0 -0
  201. {genmod-3.8.3 → genmod-3.10}/examples/small_1000G_CADD.tsv.gz.tbi +0 -0
  202. {genmod-3.8.3 → genmod-3.10}/examples/small_CADD.tsv.gz +0 -0
  203. {genmod-3.8.3 → genmod-3.10}/examples/small_CADD.tsv.gz.tbi +0 -0
  204. {genmod-3.8.3 → genmod-3.10}/examples/small_dbNSFP.txt.gz +0 -0
  205. {genmod-3.8.3 → genmod-3.10}/examples/small_dbNSFP.txt.gz.tbi +0 -0
  206. {genmod-3.8.3 → genmod-3.10}/examples/small_vep.vcf +0 -0
  207. {genmod-3.8.3 → genmod-3.10}/examples/test_phased_compounds.vcf +0 -0
  208. {genmod-3.8.3 → genmod-3.10}/examples/test_vcf_regions.vcf +0 -0
  209. {genmod-3.8.3 → genmod-3.10}/examples/test_vcf_regions_models.vcf +0 -0
  210. {genmod-3.8.3 → genmod-3.10}/examples/test_vcf_regions_models_scored.vcf +0 -0
  211. {genmod-3.8.3 → genmod-3.10}/genmod/annotations/ensembl_genes_37.txt.gz +0 -0
  212. {genmod-3.8.3 → genmod-3.10}/genmod/annotations/ensembl_genes_38.txt.gz +0 -0
  213. {genmod-3.8.3 → genmod-3.10}/genmod/configs/genmod_test.v1.5.ini +0 -0
  214. {genmod-3.8.3 → genmod-3.10}/genmod/configs/rank_model_cmms_v1.7.ini +0 -0
  215. {genmod-3.8.3 → genmod-3.10}/genmod/configs/rank_model_cmms_v1.9.ini +0 -0
@@ -0,0 +1,63 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types:
6
+ - created
7
+
8
+ jobs:
9
+ pypi:
10
+ name: Build and publish to PyPI
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ id-token: write
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: astral-sh/setup-uv@v3
17
+ - run: uv build
18
+ - run: uv publish --trusted-publishing always
19
+
20
+ docker-image-CI:
21
+ name: Docker Image CI
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+
25
+ - name: Check out git repository
26
+ uses: actions/checkout@v4
27
+
28
+ - name: Login to Docker Hub
29
+ uses: docker/login-action@v3
30
+ with:
31
+ username: ${{ secrets.DOCKER_USERNAME }}
32
+ password: ${{ secrets.DOCKER_PASSWORD }}
33
+
34
+ - name: Set up Docker Buildx
35
+ id: buildx
36
+ uses: docker/setup-buildx-action@v3
37
+
38
+ - name: Publish server image (Dockerfile-server) to Registry
39
+ uses: docker/build-push-action@v6
40
+ with:
41
+ context: ./
42
+ file: ./Dockerfile
43
+ push: true
44
+ provenance: mode=max
45
+ sbom: true
46
+ tags: "clinicalgenomics/genmod:latest, clinicalgenomics/genmod:${{ github.event.release.tag_name }}"
47
+
48
+
49
+ deploy-docs:
50
+ name: Deploy Docs to GitHubIO
51
+ runs-on: ubuntu-latest
52
+ steps:
53
+ - name: Checkout repo
54
+ uses: actions/checkout@v4
55
+ - name: Setup environment for docs deployment
56
+ uses: actions/setup-python@v5
57
+ with:
58
+ python-version: 3.x
59
+ - name: Install mkdocs
60
+ run: pip install mkdocs mkdocs-material markdown-include
61
+ - name: Deploy documentation
62
+ run: mkdocs gh-deploy --force
63
+
@@ -0,0 +1,26 @@
1
+ # Basic CI setup: Lint format with ruff
2
+ name: Format-check
3
+
4
+ on:
5
+ pull_request:
6
+ types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]
7
+
8
+ jobs:
9
+ lint-format:
10
+ name: Ruff includes and format
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - name: Ruff check import sorting
16
+ uses: astral-sh/ruff-action@v3
17
+ with:
18
+ version: "latest"
19
+ args: "check --select I ."
20
+
21
+ - name: Ruff format diff
22
+ uses: astral-sh/ruff-action@v3
23
+ with:
24
+ version: "latest"
25
+ args: "format --diff ."
26
+
@@ -0,0 +1,15 @@
1
+ name: "Changelog Reminder"
2
+ on:
3
+ pull_request:
4
+ types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled]
5
+
6
+ jobs:
7
+ # Enforces the update of a changelog file on every pull request
8
+ changelog:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - uses: dangoslen/changelog-enforcer@v3
13
+ with:
14
+ changeLogPath: 'CHANGELOG.md'
15
+ skipLabels: 'Skip-Changelog'
@@ -0,0 +1,19 @@
1
+ # Basic CI setup: Lint with ruff
2
+ name: Lint
3
+
4
+ on:
5
+ pull_request:
6
+ types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]
7
+
8
+ jobs:
9
+ lint:
10
+ name: Lint
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - name: Ruff lint
16
+ uses: astral-sh/ruff-action@v3
17
+ with:
18
+ version: "latest"
19
+ args: "check ."
@@ -0,0 +1,24 @@
1
+ name: Tests
2
+
3
+ on:
4
+ pull_request:
5
+ #push:
6
+
7
+ jobs:
8
+ run-tests:
9
+ timeout-minutes: 30
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout Repository
13
+ uses: actions/checkout@v4
14
+ with:
15
+ ref: "${{github.event.inputs.branch_name}}"
16
+ fetch-depth: 0
17
+
18
+ - name: Run Tests
19
+ run: |
20
+ make test
21
+
22
+ - name: Run Packaging Test
23
+ run: |
24
+ make test_dist
genmod-3.10/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ /data
2
+ /res
3
+ /doc
4
+ /dist
5
+ /build
6
+ /pickles
7
+ /local
8
+ /publication
9
+ /things
10
+ /venv
11
+ /.idea
12
+ *.pyc
13
+ .DS_Store
14
+ *.egg-info
15
+ *.tmproj
16
+ *.ipynb
17
+ *.tmp
18
+ *.temp
19
+ *.bak
20
+ notes.mdsite/
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,16 @@
1
+ # config file for automatic testing at travis-ci.org
2
+ language: python
3
+
4
+ python:
5
+ - "2.7"
6
+
7
+ install:
8
+ # install test dependencies and package
9
+ - pip install pytest
10
+ - pip install .
11
+
12
+ script:
13
+ - py.test
14
+
15
+ notifications:
16
+ email: no
@@ -0,0 +1,49 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This project adheres to [Semantic Versioning](http://semver.org/).
4
+
5
+ About changelog [here](https://keepachangelog.com/en/1.0.0/)
6
+
7
+ Please add a new candidate release at the top after changing the latest one. Feel free to copy paste from the "squash and commit" box that gets generated when creating PRs
8
+
9
+ Try to use the following format:
10
+
11
+ ## [3.10]
12
+ ### Changed
13
+ - Use `uv` with `hatchling` to build and publish ([#104](https://github.com/Clinical-Genomics/genmod/issues/143))
14
+ - Automation for Docker publish and mkdocs githubio ([#161](https://github.com/Clinical-Genomics/genmod/issues/161))
15
+ ### Fixed
16
+ - The optional fields Source and Version are allowed in the VCF header([#106](https://github.com/Clinical-Genomics/genmod/pull/106))
17
+ - Released the constraint on Python 3.8 (collections, pkg_resources to importlib, tests) ([#142](https://github.com/Clinical-Genomics/genmod/pull/142))
18
+ - Update annotation examples ([#144](https://github.com/Clinical-Genomics/genmod/pull/144))
19
+ - Updated documentation with warning about compounds only being scored within the first family in the VCF ([#151](https://github.com/Clinical-Genomics/genmod/pull/151))
20
+ - Fixed sorting of variants ([#152](https://github.com/Clinical-Genomics/genmod/pull/152))
21
+ - genmod annotate for mitochondrial variants when using the `chrM` notation ([#157](https://github.com/Clinical-Genomics/genmod/pull/157))
22
+ - Fix linting issues ([#154](https://github.com/Clinical-Genomics/genmod/issues/154))
23
+ - genmod models adds headers to VCF even if it contains no variants ([#160](https://github.com/Clinical-Genomics/genmod/pull/160))
24
+
25
+ ## [3.9]
26
+ - Fixed wrong models when chromosome X was named `chrX` and not `X` ([#135](https://github.com/Clinical-Genomics/genmod/pull/135))
27
+ - Added GitHub Actions workflows for automatic publishing to PyPI on release, and keep a changelog reminder ([#136](https://github.com/Clinical-Genomics/genmod/pull/136))
28
+ - Optional user defined threshold and penalty for compound scoring ([#138](https://github.com/Clinical-Genomics/genmod/pull/138))
29
+ - Update README with current github.io docs page ([#140](https://github.com/Clinical-Genomics/genmod/pull/140))
30
+
31
+ ## [3.8.3]
32
+ - Fixed unstable compounds order in models output ([#134](https://github.com/Clinical-Genomics/genmod/pull/134))
33
+ - Added `six` to requirements.txt and setup.py ([#134](https://github.com/Clinical-Genomics/genmod/pull/134))
34
+
35
+ ## [3.8.0]
36
+ - Rank score normalisation
37
+
38
+ ## [3.7.4]
39
+
40
+ ### Fixed
41
+ - OSError crashes due to socket address conflicts when using containers
42
+
43
+ ## [x.x.x]
44
+
45
+ ### Changed
46
+ - Adds support for escaped characters in FORMAT description header strings
47
+
48
+ ### Fixed
49
+ - Documentation about cli options `strict` and `phased`
@@ -0,0 +1,16 @@
1
+ cff-version: 1.2.0
2
+ message: If you use this software, please cite it using these metadata.
3
+ title: genmod
4
+ abstract: Tool for annotating patterns of genetic inheritance in Variant Call Format (VCF) files.
5
+ authors:
6
+ - family-names: Magnusson
7
+ given-names: Måns
8
+ orcid: "https:// https://orcid.org/0000-0002-0001-1047"
9
+ version: 3.7.3
10
+ date-released: "2018-11-15"
11
+ identifiers:
12
+ - description: Updates click dependency
13
+ type: doi
14
+ value: "10.5281/zenodo.3841142"
15
+ license: MIT Licence
16
+ repository-code: "https://github.com/Clinical-Genomics/genmod"
@@ -0,0 +1,19 @@
1
+ # Developing
2
+
3
+ ## Host Requirements
4
+ * Docker
5
+ * package "build-essentials" for running Makefile
6
+
7
+ ## Run pytest
8
+ There's support for pytest via Docker.
9
+
10
+ Run the following to run pytest:
11
+
12
+ ```
13
+ make test
14
+ ```
15
+
16
+ ## Running Genmod CLI
17
+ ```
18
+ python3 -m genmod.commands.base
19
+ ```
genmod-3.10/Dockerfile ADDED
@@ -0,0 +1,17 @@
1
+ ###############################################
2
+ # Dockerfile to build GeMod container image
3
+ ###############################################
4
+ FROM ghcr.io/astral-sh/uv:python3.13-alpine
5
+
6
+ RUN apk update & apk add build-base zlib-dev
7
+ # Copy the project into the image
8
+ ADD . /app
9
+
10
+ # Sync the project into a new virtual environment, using the frozen lockfile
11
+ WORKDIR /app
12
+ RUN uv sync --frozen
13
+
14
+ # Add the project venv to PATH to be able to run genmod without changing to the environment
15
+ ENV PATH="/app/.venv/bin:$PATH"
16
+
17
+ ENTRYPOINT ["genmod"]
@@ -0,0 +1,9 @@
1
+ # Dockerfile to run genmod pytest suite
2
+ FROM ghcr.io/astral-sh/uv:python3.13-bookworm
3
+
4
+ ADD . /app
5
+
6
+ WORKDIR /app
7
+ RUN uv sync --all-extras --dev
8
+
9
+ ENTRYPOINT ["uv", "run", "pytest"]
@@ -1,5 +1,9 @@
1
+ include CHANGELOG.md
2
+ include LICENSE.txt
3
+ include README.md
4
+
1
5
  recursive-include examples *.ped *.vcf *.gz *.tbi
2
6
  recursive-include genmod/annotations *.gz
3
7
  recursive-include genmod/configs *.ini
4
8
  recursive-exclude * __pycache__
5
- recursive-exclude * *.py[co]
9
+ recursive-exclude * *.py[co]
genmod-3.10/Makefile ADDED
@@ -0,0 +1,24 @@
1
+ .PHONY: *
2
+
3
+ DOCKER=DOCKER_BUILDKIT=1 docker
4
+
5
+ all:
6
+ # Nothing to be built
7
+
8
+ docker-build:
9
+ $(DOCKER) build -t genmod/test --force-rm=true --rm=true -f Dockerfile.pytest .
10
+
11
+ test: docker-build
12
+ $(DOCKER) run -i -l genmod-test genmod/test -v
13
+
14
+ test_%: docker-build
15
+ $(DOCKER) run -i -l genmod-test genmod/test -v -k $@
16
+
17
+ test_dist: docker-build
18
+ $(DOCKER) run -i -l genmod-test --entrypoint=bash genmod/test -c \
19
+ "uv build && \
20
+ pip3 install dist/genmod*.tar.gz && \
21
+ uv run genmod -v annotate --annotate-regions --genome-build 37 examples/test_vcf.vcf"
22
+
23
+ docker-clean-images:
24
+ docker system prune
@@ -1,9 +1,43 @@
1
+ Metadata-Version: 2.4
2
+ Name: genmod
3
+ Version: 3.10
4
+ Summary: Annotate genetic inheritance models in Variant Call Format (VCF) files
5
+ Project-URL: Repository, http://github.com/Clinical-Genomics/genmod
6
+ Project-URL: Changelog, https://github.com/Clinical-Genomics/genmod/blob/main/CHANGELOG.md
7
+ Project-URL: Bug Tracker, https://github.com/Clinical-Genomics/genmod/issues
8
+ Author-email: Mans Magnuson <mans.magnusson@scilifelab.se>, Tor Björgen <tor.bjorgen@scilifelab.se>, Felix Lenner <felix.lenner@scilifelab.se>, Anders Jemt <anders.jemt@scilifelab.se>, Daniel Nilsson <daniel.nilsson@ki.se>
9
+ License: MIT License
10
+ License-File: LICENSE.txt
11
+ Keywords: inheritance,variants,vcf
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: MacOS :: MacOS X
16
+ Classifier: Operating System :: Unix
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: Implementation :: CPython
20
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
21
+ Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
22
+ Requires-Python: >=3.7
23
+ Requires-Dist: click
24
+ Requires-Dist: configobj
25
+ Requires-Dist: extract-vcf
26
+ Requires-Dist: importlib-resources
27
+ Requires-Dist: interval-tree>=0.3.4
28
+ Requires-Dist: intervaltree>=3.1.0
29
+ Requires-Dist: ped-parser
30
+ Requires-Dist: pytabix
31
+ Requires-Dist: six
32
+ Requires-Dist: vcftoolbox
33
+ Description-Content-Type: text/markdown
34
+
1
35
  # GENMOD #
2
36
 
3
37
 
4
38
 
5
39
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3841142.svg)](https://doi.org/10.5281/zenodo.3841142)
6
- [![Build Status](https://travis-ci.org/moonso/vcf_parser.svg)](https://travis-ci.org/moonso/genmod)
40
+ ![Build Status - GitHub][actions-build-status]
7
41
 
8
42
 
9
43
  **GENMOD** is a simple to use command line tool for annotating and analyzing genomic variations in the [VCF](http://samtools.github.io/hts-specs/VCFv4.1.pdf) file format.
@@ -17,7 +51,7 @@ The tools in the genmod suite are:
17
51
  - **genmod score**, Score the variants of a vcf based on their annotation
18
52
  - **genmod filter**, Filter the variants of a vcf based on their annotation
19
53
 
20
- ##Installation:##
54
+ ## Installation
21
55
 
22
56
  **GENMOD**
23
57
 
@@ -25,18 +59,17 @@ The tools in the genmod suite are:
25
59
 
26
60
  or
27
61
 
28
- git clone https://github.com/moonso/genmod.git
62
+ git clone https://github.com/Clinical-Genomics/genmod.git
29
63
  cd genmod
30
- python setup.py install
31
-
64
+ uv install genmod
65
+ uv run genmod
32
66
 
33
- ## USAGE: ##
34
67
 
35
- <!-- TODO change documentation link -->
36
- *This is an overview, for more in depth documentation see [documentation](http://moonso.github.io/genmod/)*
68
+ ## Usage
37
69
 
70
+ *This is an overview, for more in depth documentation see [documentation](https://Clinical-Genomics.github.io/genmod)*
38
71
 
39
- ### Example: ###
72
+ ### Example
40
73
 
41
74
 
42
75
  The following command should work when installed successfully. The files are distributed with the package.
@@ -139,17 +172,18 @@ $genmod models <vcf_file> -f/--family_file <family.ped>
139
172
 
140
173
  ```
141
174
 
142
- <!-- ###genmod annotate###
143
-
175
+ #### genmod annotate
144
176
 
177
+ ```
145
178
  genmod annotate variant_file.vcf
179
+ ```
146
180
 
147
181
  This will print a new vcf to standard out with all variants annotated according to the statements below.
148
182
  All individuals described in the [ped](http://pngu.mgh.harvard.edu/~purcell/plink/data.shtml#ped) file must be present in the vcf file
149
183
 
150
184
  See examples in the folder ```genmod/examples```.
151
185
 
152
- **From version 1.9 genmod can split multiallelic calls in vcf:s, use flag -split/--split_variants.**
186
+ **From version 1.9 genmod can split multiallelic calls in VCFs: use flag `-split/--split_variants`.**
153
187
 
154
188
  To get an example of how splitting variants work, run genmod on the file ```examples/multi_allele_example.vcf``` with the dominant trio.
155
189
  That is:
@@ -157,12 +191,6 @@ That is:
157
191
 
158
192
  Compare the result when not using the ```-split``` flag.
159
193
 
160
- Genmod is distributed with a annotation database that is built from the refGene data.
161
- If the user wants to build a new annotation set use the command below:
162
-
163
- genmod build_annotation [--type] annotation_file
164
-
165
-
166
194
  Each variant in the VCF-file will be annotated with which genetic models that are followed in the family if a family file
167
195
  (ped file) is provided.
168
196
 
@@ -184,7 +212,7 @@ It is possible to run without a family file, in this case all variants will be a
184
212
 
185
213
  [Variant Effect Predictor](http://www.ensembl.org/info/docs/tools/vep/index.html)(vep) annotations are supported, use the ```--vep```-flag if variants are already annotated with vep.
186
214
 
187
- **GENMOD** will add entrys to the INFO column for the given VCF file depending on what information is given.
215
+ **GENMOD** will add entries to the INFO column for the given VCF file depending on what information is given.
188
216
 
189
217
  If ```--vep``` is NOT provided:
190
218
 
@@ -202,7 +230,6 @@ Also a line for logging is added in the vcf header with the id **genmod**, here
202
230
 
203
231
  - Compound heterozygote inheritance pattern will be checked if two variants are exonic (or in canonical splice sites) and if they reside in the same gene.
204
232
 
205
- - If compounds should be checked in the whole gene (including introns) use ```--whole_gene```
206
233
  - GENMOD supports phased data, use the ```-phased``` flag. Data should follow the [GATK way](http://gatkforums.broadinstitute.org/discussion/45/read-backed-phasing) of phasing.
207
234
 
208
235
  All annotations will be present only if they have a value.
@@ -218,40 +245,10 @@ All annotations will be present only if they have a value.
218
245
  - By default the relative cadd scores is annotated with 'CADD=score', there is also an alternative to annotate with the raw cadd scores using the `--cadd_raw` flag. In this case a info field 'CADD_raw=score'.
219
246
  - If your VCF is already annotated with VEP, use `-vep/--vep`
220
247
  - If data is phased use `-phased/--phased`
221
- - If you want to allow compound pairs in intronic regions to use `-gene/--whole_gene`
222
248
  - If you want canonical splice site region to be bigger than 2 base pairs on each side of the exons, use `-splice/--splice_padding <integer>`
223
249
  - The `-strict/--strict` flag tells **genmod** to only annotate genetic models if they are proved by the data. If a variant is not called in a family member it will not be annotated.
224
250
 
225
-
226
- ###genmod build_annotation###
227
-
228
- genmod build_annotation [--type] [-o/--outdir] annotation_file
229
-
230
- The following file formats are supported for building new annotations:
231
-
232
- - bed
233
- - ccds
234
- - gtf
235
- - gene_pred
236
-
237
- The user can also specify the amount of positions around exon boundaries that should be considered as splice sites. Use
238
-
239
- ```--splice_padding INTEGER```
240
-
241
- ###genmod analyze###
242
-
243
- From version 1.6 there is also a tool for analyzing the variants annotated by **genmod**. This tool will look at all variants in a vcf and do an analysis based on which inheritance patterns they follow. The variants are then ranked based on the cadd scores, the highest ranked variants for each category is printed to screen and the full list for each category is printed to new vcf files.
244
- Run with:
245
-
246
- genmod analyze path/to/file.vcf
247
-
248
- For more information do
249
-
250
- genmod analyze --help
251
-
252
-
253
- ### genmod sort ###
254
-
251
+ #### genmod sort
255
252
 
256
253
  Sort a VCF file based on Rank Score.
257
254
 
@@ -269,18 +266,9 @@ Options:
269
266
  --help Show this message and exit.
270
267
  ```
271
268
 
272
- ###genmod summarize###
273
-
274
- Tool to get basic statistics of the annotated in a vcf file.
275
- Run
276
-
277
- genmod summarize --help
269
+ ## Conditions for Genetic Models
278
270
 
279
- for more information.
280
-
281
- ## Conditions for Genetic Models ##
282
-
283
- ### Short explanation of genotype calls in VCF format:###
271
+ ### Short explanation of genotype calls in VCF format
284
272
 
285
273
  Since we only look at humans, that are diploid, the genotypes represent what we see on both alleles in a single position.
286
274
  0 represents the reference sequence, 1 is the first of the alternative alleles, 2 second alternative and so on.
@@ -290,8 +278,7 @@ Some chromosomes are only present in one copy in humans, here it is allowed to o
290
278
 
291
279
  If phasing has been done the pairs are not unordered anymore and the delimiter is then changed to '|', so one can be heterozygote in two ways; 0|1 or 1|0.
292
280
 
293
-
294
- ### Autosomal Recessive ###
281
+ ### Autosomal Recessive
295
282
 
296
283
  For this model individuals can be carriers so healthy individuals can be heterozygous. Both alleles need to have the variant for an individual to be sick so a healthy individual can not be homozygous alternative and a sick individual *has* to be homozygous alternative.
297
284
 
@@ -300,19 +287,15 @@ For this model individuals can be carriers so healthy individuals can be heteroz
300
287
  * Variant is considered _de novo_ if both parents are genotyped and do not carry the variant
301
288
 
302
289
 
303
- ### Autosomal Dominant ###
290
+ ### Autosomal Dominant
304
291
 
305
292
  * Affected individuals have to be heterozygous (het.)
306
293
  * Healthy individuals cannot have the alternative variant
307
294
  * Variant is considered _de novo_ if both parents are genotyped and do not carry the variant
308
295
 
309
-
310
- ### Autosomal Compound Heterozygote ###
296
+ ### Autosomal Compound Heterozygote
311
297
 
312
298
  This model includes pairs of exonic variants that are present within the same gene.
313
- **The default behaviour of GENMOD is to look for compounds only in exonic/canonical splice sites**.
314
- The reason for this is that since some genes have huge intronic regions the data will be drowned in compound pairs.
315
- If the user wants all variants in genes checked use the flag -gene/--whole_gene.
316
299
 
317
300
  1. Non-phased data:
318
301
  * Affected individuals have to be het. for both variants
@@ -326,7 +309,7 @@ If the user wants all variants in genes checked use the flag -gene/--whole_gene.
326
309
  * If only one or no variant is found in parents it is considered _de novo_
327
310
 
328
311
 
329
- ### X-Linked Dominant###
312
+ ### X-Linked Dominant
330
313
 
331
314
  These traits are inherited on the x-chromosome, of which men have one allele and women have two.
332
315
 
@@ -338,7 +321,7 @@ These traits are inherited on the x-chromosome, of which men have one allele and
338
321
  * If sex is female variant is considered _de novo_ if none of the parents carry the variant
339
322
 
340
323
 
341
- ### X Linked Recessive ###
324
+ ### X Linked Recessive
342
325
 
343
326
  * Variant has to be on chromosome X
344
327
  * Affected males have to be het. or hom. alt. (het is theoretically not possible in males, but can occur due to Pseudo Autosomal Regions).
@@ -347,4 +330,7 @@ These traits are inherited on the x-chromosome, of which men have one allele and
347
330
  * Healthy males cannot carry the variant
348
331
  * If sex is male the variant is considered _de novo_ if mother is genotyped and does not carry the variant
349
332
  * If sex is female variant is considered _de novo_ if not both parents carry the variant
350
- -->
333
+
334
+
335
+
336
+ [actions-build-status]: https://github.com/Clinical-Genomics/genmod/actions/workflows/build_and_publish.yml/badge.svg