loqusdb 2.7.2__py3-none-any.whl → 2.7.8__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 (59) hide show
  1. README.md +148 -0
  2. loqusdb/__init__.py +5 -3
  3. loqusdb/__main__.py +0 -0
  4. loqusdb/build_models/variant.py +12 -4
  5. loqusdb/commands/export.py +3 -4
  6. loqusdb/commands/identity.py +3 -4
  7. loqusdb/commands/view.py +5 -2
  8. loqusdb/plugins/mongo/case.py +3 -10
  9. loqusdb/resources/loqusdb.20181005.gz +0 -0
  10. loqusdb/resources/maf_50_sites_GRCh37.vcf.gz +0 -0
  11. loqusdb/resources/maf_50_sites_GRCh38.vcf.gz +0 -0
  12. {loqusdb-2.7.2.dist-info → loqusdb-2.7.8.dist-info}/METADATA +27 -42
  13. loqusdb-2.7.8.dist-info/RECORD +97 -0
  14. {loqusdb-2.7.2.dist-info → loqusdb-2.7.8.dist-info}/WHEEL +1 -2
  15. loqusdb-2.7.8.dist-info/entry_points.txt +3 -0
  16. tests/build_models/test_build_case.py +150 -0
  17. tests/build_models/test_build_variant.py +15 -0
  18. tests/build_models/test_is_greater.py +49 -0
  19. tests/commands/test_export.py +16 -0
  20. tests/commands/test_identity.py +22 -0
  21. tests/commands/test_view.py +17 -0
  22. tests/conftest.py +438 -0
  23. tests/fixtures/643594.clinical.SV.vcf +178 -0
  24. tests/fixtures/643594.clinical.vcf.gz +0 -0
  25. tests/fixtures/double_variant.vcf +21 -0
  26. tests/fixtures/funny_trio.ped +4 -0
  27. tests/fixtures/profile_snv.vcf +47 -0
  28. tests/fixtures/recessive_trio.ped +4 -0
  29. tests/fixtures/test.SV.vcf +178 -0
  30. tests/fixtures/test.vcf +26 -0
  31. tests/fixtures/test.vcf.gz +0 -0
  32. tests/fixtures/test.vcf.gz.tbi +0 -0
  33. tests/fixtures/unsorted.vcf +20 -0
  34. tests/functional/test_cli.py +213 -0
  35. tests/plugins/mongo/test_case_operations.py +143 -0
  36. tests/plugins/mongo/test_connect.py +8 -0
  37. tests/plugins/mongo/test_flask_extension.py +27 -0
  38. tests/plugins/mongo/test_get_sv.py +27 -0
  39. tests/plugins/mongo/test_load_svs.py +74 -0
  40. tests/plugins/mongo/test_variant_operations.py +278 -0
  41. tests/utils/test_case.py +34 -0
  42. tests/utils/test_delete.py +73 -0
  43. tests/utils/test_delete_family.py +30 -0
  44. tests/utils/test_delete_variant.py +74 -0
  45. tests/utils/test_get_family.py +13 -0
  46. tests/utils/test_load_database.py +52 -0
  47. tests/utils/test_load_family.py +69 -0
  48. tests/utils/test_load_variants.py +225 -0
  49. tests/utils/test_migrate.py +38 -0
  50. tests/utils/test_profiling.py +68 -0
  51. tests/vcf_tools/test_check_par.py +67 -0
  52. tests/vcf_tools/test_check_vcf.py +64 -0
  53. tests/vcf_tools/test_format_sv_variant.py +102 -0
  54. tests/vcf_tools/test_format_variant.py +113 -0
  55. tests/vcf_tools/test_vcf.py +63 -0
  56. loqusdb-2.7.2.dist-info/RECORD +0 -54
  57. loqusdb-2.7.2.dist-info/entry_points.txt +0 -3
  58. loqusdb-2.7.2.dist-info/top_level.txt +0 -1
  59. {loqusdb-2.7.2.dist-info → loqusdb-2.7.8.dist-info}/LICENSE +0 -0
@@ -0,0 +1,64 @@
1
+ import pytest
2
+ from loqusdb.exceptions import VcfError
3
+ from loqusdb.utils.vcf import check_vcf
4
+
5
+
6
+ def test_check_vcf_correct(vcf_path):
7
+ ## GIVEN a vcf file and a counter that checks the number of variants
8
+ true_nr = 0
9
+
10
+ with open(vcf_path, "r") as f:
11
+ for line in f:
12
+ if not line.startswith("#"):
13
+ true_nr += 1
14
+
15
+ ## WHEN collecting the VCF info
16
+ vcf_info = check_vcf(vcf_path)
17
+
18
+ ## THEN assert that the number of variants collected is correct
19
+ assert vcf_info["nr_variants"] == true_nr
20
+ ## THEN assert that the variant type is correct
21
+ assert vcf_info["variant_type"] == "snv"
22
+
23
+
24
+ def test_check_vcf_double_variant(double_vcf_path):
25
+ ## GIVEN a variant file where a variant is duplicated
26
+ ## WHEN checking the vcf
27
+ ## THEN assert that the function raises a VcfError
28
+ with pytest.raises(VcfError):
29
+ check_vcf(double_vcf_path)
30
+
31
+
32
+ def test_check_vcf_unsorted(unsorted_vcf_path):
33
+ ## GIVEN a vcf file with unsorted variants
34
+ ## WHEN checking the vcf
35
+ ## THEN assert that the function raises a VcfError
36
+ with pytest.raises(VcfError):
37
+ check_vcf(unsorted_vcf_path)
38
+
39
+
40
+ def test_check_sv_vcf(sv_vcf_path):
41
+ ## GIVEN a vcf file and a counter that checks the number of variants
42
+ true_nr = 0
43
+
44
+ with open(sv_vcf_path, "r") as f:
45
+ for line in f:
46
+ if not line.startswith("#"):
47
+ true_nr += 1
48
+
49
+ ## WHEN collecting the VCF info
50
+ vcf_info = check_vcf(sv_vcf_path, "sv")
51
+
52
+ ## THEN assert that the number of variants collected is correct
53
+ assert vcf_info["nr_variants"] == true_nr
54
+ ## THEN assert that the variant type is correct
55
+ assert vcf_info["variant_type"] == "sv"
56
+
57
+
58
+ def test_check_vcf_wrong_type(sv_vcf_path):
59
+ ## GIVEN a sv vcf file
60
+
61
+ ## WHEN collecting the VCF info with wrong variant type
62
+ ## THEN assert that a VcfError is raised
63
+ with pytest.raises(VcfError):
64
+ vcf_info = check_vcf(sv_vcf_path, "snv")
@@ -0,0 +1,102 @@
1
+ from loqusdb.build_models.variant import build_variant
2
+
3
+
4
+ def test_format_indel(del_variant, case_obj):
5
+ ## GIVEN a SV deletion
6
+ variant = del_variant
7
+ case_id = case_obj["case_id"]
8
+ ## WHEN parsing the variant
9
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
10
+ expected_id = "_".join([variant.CHROM, str(variant.POS), variant.REF, variant.ALT[0]])
11
+
12
+ ## THEN assert the sv is parsed correct
13
+ assert formated_variant
14
+ assert formated_variant["variant_id"] == expected_id
15
+ assert formated_variant["chrom"] == variant.CHROM
16
+ assert formated_variant["end_chrom"] == variant.CHROM
17
+ assert formated_variant["pos"] == variant.POS
18
+ assert formated_variant["end"] == variant.INFO["END"]
19
+ assert formated_variant["sv_len"] == abs(variant.INFO["SVLEN"])
20
+
21
+ assert formated_variant["ref"] == variant.REF
22
+ assert formated_variant["alt"] == variant.ALT[0]
23
+ assert formated_variant["sv_type"] == "DEL"
24
+ assert formated_variant["case_id"] == case_id
25
+ assert formated_variant["homozygote"] == 0
26
+ assert formated_variant["hemizygote"] == 0
27
+
28
+
29
+ def test_format_small_ins(small_insert_variant, case_obj):
30
+ ## GIVEN a small insertion (This means that the insertion is included in ALT field)
31
+ variant = small_insert_variant
32
+ case_id = case_obj["case_id"]
33
+ ## WHEN parsing the variant
34
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
35
+
36
+ ## THEN assert the sv is parsed correct
37
+ assert formated_variant["chrom"] == variant.CHROM
38
+ assert formated_variant["end_chrom"] == variant.CHROM
39
+ assert formated_variant["pos"] == variant.POS
40
+ assert formated_variant["end"] == variant.POS + abs(variant.INFO["SVLEN"])
41
+ assert formated_variant["sv_len"] == abs(variant.INFO["SVLEN"])
42
+
43
+ assert formated_variant["ref"] == variant.REF
44
+ assert formated_variant["alt"] == variant.ALT[0]
45
+ assert formated_variant["sv_type"] == "INS"
46
+
47
+
48
+ def test_format_insertion(insertion_variant, case_obj):
49
+ ## GIVEN a small insertion (This means that the insertion is included in ALT field)
50
+ variant = insertion_variant
51
+ case_id = case_obj["case_id"]
52
+ ## WHEN parsing the variant
53
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
54
+
55
+ ## THEN assert the sv is parsed correct
56
+ assert formated_variant["chrom"] == variant.CHROM
57
+ assert formated_variant["end_chrom"] == variant.CHROM
58
+ assert formated_variant["pos"] == variant.POS
59
+ assert formated_variant["end"] == variant.INFO["END"]
60
+ assert formated_variant["sv_len"] == 0
61
+
62
+ assert formated_variant["ref"] == variant.REF
63
+ assert formated_variant["alt"] == variant.ALT[0]
64
+ assert formated_variant["sv_type"] == "INS"
65
+
66
+
67
+ def test_format_dup_tandem(duptandem_variant, case_obj):
68
+ ## GIVEN a small insertion (This means that the insertion is included in ALT field)
69
+ variant = duptandem_variant
70
+ case_id = case_obj["case_id"]
71
+ ## WHEN parsing the variant
72
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
73
+
74
+ ## THEN assert the sv is parsed correct
75
+ assert formated_variant["chrom"] == variant.CHROM
76
+ assert formated_variant["end_chrom"] == variant.CHROM
77
+ assert formated_variant["pos"] == variant.POS
78
+ assert formated_variant["end"] == variant.INFO["END"]
79
+ assert formated_variant["sv_len"] == abs(variant.INFO["SVLEN"])
80
+
81
+ assert formated_variant["ref"] == variant.REF
82
+ assert formated_variant["alt"] == variant.ALT[0]
83
+ assert formated_variant["sv_type"] == "DUP"
84
+
85
+
86
+ def test_format_translocation(translocation_variant, case_obj):
87
+ ## GIVEN a small insertion (This means that the insertion is included in ALT field)
88
+ variant = translocation_variant
89
+ case_id = case_obj["case_id"]
90
+ ## WHEN parsing the variant
91
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
92
+
93
+ ## THEN assert the sv is parsed correct
94
+ assert formated_variant["chrom"] == variant.CHROM
95
+ assert formated_variant["end_chrom"] == "11"
96
+ assert formated_variant["pos"] == variant.POS
97
+ assert formated_variant["end"] == 119123896
98
+ assert formated_variant["sv_len"] == float("inf")
99
+
100
+ assert formated_variant["ref"] == variant.REF
101
+ assert formated_variant["alt"] == variant.ALT[0]
102
+ assert formated_variant["sv_type"] == "BND"
@@ -0,0 +1,113 @@
1
+ from loqusdb.build_models.variant import build_variant, GENOTYPE_MAP
2
+
3
+
4
+ def test_format_variant(het_variant, case_obj):
5
+ ## GIVEN a parsed variant
6
+ variant = het_variant
7
+ case_id = case_obj["case_id"]
8
+ ## WHEN parsing the variant
9
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
10
+
11
+ expected_id = "_".join([variant.CHROM, str(variant.POS), variant.REF, variant.ALT[0]])
12
+
13
+ ## THEN assert it was built in a correct way
14
+ assert formated_variant
15
+ assert formated_variant["variant_id"] == expected_id
16
+ assert formated_variant["chrom"] == variant.CHROM
17
+ assert formated_variant["pos"] == variant.POS
18
+ assert formated_variant["ref"] == variant.REF
19
+ assert formated_variant["alt"] == variant.ALT[0]
20
+ assert formated_variant["case_id"] == case_id
21
+ assert formated_variant["homozygote"] == 0
22
+
23
+
24
+ def test_format_variant_no_qual(variant_no_gq, case_obj):
25
+ ## GIVEN a variant without GQ
26
+ variant = variant_no_gq
27
+ ## And that has a missing QUAL value
28
+ variant.QUAL = None
29
+ case_id = case_obj["case_id"]
30
+ ## WHEN parsing the variant using a QUAL threshold
31
+ formated_variant = build_variant(
32
+ variant=variant, case_obj=case_obj, case_id=case_id, gq_qual=True, gq_threshold=20
33
+ )
34
+ ## THEN assert that None is returned since requirements are not fulfilled
35
+ assert formated_variant is None
36
+
37
+
38
+ def test_format_variant_no_gq(variant_no_gq, case_obj):
39
+ ## GIVEN a variant without GQ
40
+ variant = variant_no_gq
41
+ case_id = case_obj["case_id"]
42
+ ## WHEN parsing the variant using a GQ threshold
43
+ formated_variant = build_variant(
44
+ variant=variant, case_obj=case_obj, case_id=case_id, gq_threshold=20
45
+ )
46
+ ## THEN assert that None is returned since requirements are not fulfilled
47
+ assert formated_variant is None
48
+
49
+
50
+ def test_format_variant_chr_prefix(variant_chr, case_obj):
51
+ ## GIVEN a variant with 'chr' prefix in chromosome name
52
+ variant = variant_chr
53
+ assert variant.CHROM.startswith("chr")
54
+ case_id = case_obj["case_id"]
55
+ ## WHEN parsing the variant using a GQ threshold
56
+ formated_variant = build_variant(
57
+ variant=variant, case_obj=case_obj, case_id=case_id, gq_threshold=20
58
+ )
59
+ ## THEN assert that the 'chr' part has been stripped away
60
+ assert formated_variant["chrom"] == variant.CHROM[3:]
61
+
62
+
63
+ def test_format_variant_no_family_id(het_variant, case_obj):
64
+ ## GIVEN a parsed variant
65
+ variant = het_variant
66
+ case_id = case_obj["case_id"]
67
+ ## WHEN parsing the variant telling that 'case_id' is None
68
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=None)
69
+ ## THEN assert that case_id was not added
70
+ assert formated_variant.get("case_id") == None
71
+ assert formated_variant["homozygote"] == 0
72
+ assert formated_variant["hemizygote"] == 0
73
+
74
+
75
+ def test_format_homozygote_variant(hom_variant, case_obj):
76
+ ## GIVEN a parsed hom variant
77
+ variant = hom_variant
78
+ case_id = case_obj["case_id"]
79
+
80
+ ## WHEN parsing the variant
81
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
82
+
83
+ ## THEN assert that the variant has hom count
84
+ assert formated_variant["homozygote"] == 1
85
+ assert formated_variant["hemizygote"] == 0
86
+
87
+
88
+ def test_format_hemizygote_variant(hem_variant, case_obj):
89
+ ## GIVEN a parsed hemizygous variant
90
+ variant = hem_variant
91
+ case_id = case_obj["case_id"]
92
+
93
+ ## WHEN parsing the variant
94
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
95
+
96
+ ## THEN assert that hemizygote count is 1
97
+ assert formated_variant["homozygote"] == 0
98
+ assert formated_variant["hemizygote"] == 1
99
+
100
+
101
+ def test_format_variant_no_call(variant_no_call, case_obj):
102
+ ## GIVEN a parsed variant with no call in all individuals
103
+ variant = variant_no_call
104
+ case_id = case_obj["case_id"]
105
+
106
+ for call in variant.gt_types:
107
+ assert GENOTYPE_MAP[call] in ["no_call", "hom_ref"]
108
+
109
+ ## WHEN parsing the variant
110
+ formated_variant = build_variant(variant=variant, case_obj=case_obj, case_id=case_id)
111
+
112
+ ## THEN assert that the result is None
113
+ assert formated_variant is None
@@ -0,0 +1,63 @@
1
+ import pytest
2
+ from cyvcf2 import VCF
3
+ from loqusdb.utils.vcf import get_file_handle, check_vcf
4
+
5
+
6
+ def test_get_file_handle(vcf_path):
7
+ ## GIVEN the path to a vcf
8
+
9
+ ## WHEN geting the file handle
10
+ vcf = get_file_handle(vcf_path)
11
+
12
+ ## THEN assert that a VCF object is returned
13
+ assert type(vcf) is VCF
14
+
15
+
16
+ def test_get_zipped_file_handle(zipped_vcf_path):
17
+ ## GIVEN the path to a zipped vcf
18
+
19
+ ## WHEN geting the file handle
20
+ vcf = get_file_handle(zipped_vcf_path)
21
+
22
+ ## THEN assert that a VCF object is returned
23
+ assert type(vcf) is VCF
24
+
25
+
26
+ def test_get_vcf_non_vcf(ped_path):
27
+ ## GIVEN the path to a non vcf
28
+
29
+ ## WHEN geting the file handle
30
+
31
+ ## THEN assert that a IOError is raised
32
+ with pytest.raises(IOError):
33
+ vcf = get_file_handle(ped_path)
34
+
35
+
36
+ def test_get_vcf_non_existing():
37
+ ## GIVEN the path to a non existing file
38
+
39
+ ## WHEN geting the file handle
40
+
41
+ ## THEN assert that a IOError is raised
42
+ with pytest.raises(IOError):
43
+ vcf = get_file_handle("hello")
44
+
45
+
46
+ def test_check_vcf(vcf_path):
47
+ ## GIVEN the path to a vcf
48
+ nr_variants = 0
49
+ vcf = VCF(vcf_path)
50
+ inds = vcf.samples
51
+ for var in vcf:
52
+ nr_variants += 1
53
+ ## WHEN checking the vcf
54
+ vcf_info = check_vcf(vcf_path)
55
+
56
+ ## THEN assert that the number of variants is correct
57
+ assert vcf_info["nr_variants"] == nr_variants
58
+
59
+ ## THEN assert that the individuals are returned
60
+ assert vcf_info["individuals"] == inds
61
+
62
+ ## THEN assert that the variant type is correct
63
+ assert vcf_info["variant_type"] == "snv"
@@ -1,54 +0,0 @@
1
- loqusdb/__init__.py,sha256=mUCPADpIiji9CijrvermJNjJDgTFv8TlapV5qVyszHs,1658
2
- loqusdb/__main__.py,sha256=8FGKySAGaWSzAYMj6HRsxeyiME3V01Idt7HrmN7pSYY,397
3
- loqusdb/log.py,sha256=CDcrCjzs9ef-d5Wg8Q_41bCOZRM5j8PyP06kNcynTj0,1691
4
- loqusdb/build_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- loqusdb/build_models/case.py,sha256=P3sfQkI_fH8u5iqecYWhV866lcHz4upWkepaea5MMIw,4255
6
- loqusdb/build_models/profile_variant.py,sha256=TbSxfVjESstS_FgbkOW4NQwMQVeTyhn9oc9yPZmDhzI,1021
7
- loqusdb/build_models/variant.py,sha256=JE3o_htRQjpwwUPxmP5HJ_0Ax8BwKp610uBIo3HTaVA,6671
8
- loqusdb/commands/__init__.py,sha256=BXAN3UADgqPrkGczzjlLO9GyyQ96dnLnP7n92JlYHgo,603
9
- loqusdb/commands/annotate.py,sha256=748kImopE5WbaO1nuv3WUgIqezWFSsi7SBeWhOz26-s,1384
10
- loqusdb/commands/cli.py,sha256=wJD5S1BoCxtRTAobd1QtmQpzlngJg-mt1nsyD92fDD4,3176
11
- loqusdb/commands/delete.py,sha256=R6ysHKSMw1mmL4ZbktoUIKzdzDLQ3314YPYhIy1myic,1979
12
- loqusdb/commands/export.py,sha256=0V3S3QU9LKlR13w3KCGfqFliTYiDRCgNwusA27AEvmE,3254
13
- loqusdb/commands/identity.py,sha256=hzbnvniKgSNEwSeYHsxdNvVlqu_vXeOSLlNFnDXTQjA,779
14
- loqusdb/commands/load.py,sha256=cVDdY7meBfcv8nMEGsjAX6aE-SKDOceGqM2vAvXPhko,4407
15
- loqusdb/commands/load_profile.py,sha256=cflCbF9f77_HCH8xPnN8zSSocvIffRMnC2LPE0j7Xq8,3336
16
- loqusdb/commands/migrate.py,sha256=2C8YL-zVqnpnqg3JIyUr0rbVnb8-AGPVWNhicHnPKLo,667
17
- loqusdb/commands/restore.py,sha256=eqPX0yao0IAYS5SbjCdlsfSJRBbRByBLISUU2hTzqqs,1492
18
- loqusdb/commands/update.py,sha256=zz3wueaJVqJ1FKact-rpY2az__5oa1LnZKf7mgqNGPk,3211
19
- loqusdb/commands/view.py,sha256=zQag5kgvUFa8nW9OVte_qjit0n8wGLc3C3hwLOMGY6o,5111
20
- loqusdb/commands/wipe.py,sha256=WTOjyNooCUhtmZ6pdcPFa0PZrFc9E_pkLbnat_zP96M,553
21
- loqusdb/constants/__init__.py,sha256=r6y2TN8BqbKuh2Uyxq0trh-3A9xiWeStqWlvEPp-rSA,1645
22
- loqusdb/exceptions/__init__.py,sha256=Fq0UQg9TepWh19D7WT3dARyAHvorwJF6phhnZi2AkxE,88
23
- loqusdb/exceptions/case.py,sha256=n3mGF7RIc1imQFxnNJ1TWxeJeMWN4MHsKxoZb0m1-Os,92
24
- loqusdb/exceptions/profile.py,sha256=TVkRXh3ZbkNCmFHzZTCuhPP3iFWBwP1YQGD8IlSoCTo,98
25
- loqusdb/exceptions/vcf.py,sha256=QMpr9oRzYtMaHzP8wtSU5HiXGmi4k48YnjCilNZ0j2M,95
26
- loqusdb/models/__init__.py,sha256=yf0wONlDuGkztsOv15BFulYyQxdzqhuUKpL-R_clDVM,139
27
- loqusdb/models/case.py,sha256=EJOkrAMJfS6eID3E7QtWkoa_tMMf21KV3Z5B-U0c-Wk,1660
28
- loqusdb/models/identity.py,sha256=3DBlaZtrEtoiSU6nMXs7zY-mvy-9ew08-ZPjr_F3x3c,511
29
- loqusdb/models/profile_variant.py,sha256=7Y7HRnoOfhvThAuuaXWe2tOr0u2wktSFr5GmoLuDhg8,409
30
- loqusdb/models/variant.py,sha256=9QpM0ojJ24tKY9RrcgC411Wjnl3uRUawVYo6RWz1gXY,1068
31
- loqusdb/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- loqusdb/plugins/mongo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- loqusdb/plugins/mongo/adapter.py,sha256=rRUQ2y_bZwjINbdTtfzJ_1JwE0Ns0usyAJ3o0O1Y10I,2593
34
- loqusdb/plugins/mongo/case.py,sha256=_LslGBB0F50IpjeEoV234JszC5TihAqFK3LBPMVD71k,3119
35
- loqusdb/plugins/mongo/profile_variant.py,sha256=madOBa3HacIN_T1V8mp7NEC4QOpqQBqSY6pKTObkMLA,600
36
- loqusdb/plugins/mongo/structural_variant.py,sha256=RPc3GF37-O3GqRS9Z5PRxsBXACljfRT4KFsrEl0jCu0,12955
37
- loqusdb/plugins/mongo/variant.py,sha256=NS3N8bhRap1b2ZSGjOw2LO6l7q_CzD00GZs499l38Tg,8715
38
- loqusdb/resources/__init__.py,sha256=JOx3Ppgtghx55cOJN0bfBonSXM5DM_v0OFdlT-Qybg4,639
39
- loqusdb/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- loqusdb/utils/annotate.py,sha256=cPNWlhsv6yoe3lxNfa9DytO5eACuM_mOJJw_mglVMN0,2646
41
- loqusdb/utils/case.py,sha256=aeTvyACJTDjzl-aOjAZaUzFMLisgFKMfcoXSvNAZz4s,2168
42
- loqusdb/utils/delete.py,sha256=-ddBM_QXKzlUN6egEJggKzXX1P-WEdi92HgaD1DJRtg,4843
43
- loqusdb/utils/load.py,sha256=rujUk89lL5jO35QfO8NKGJkjEJmN6PQxohKkxtpnw6Y,8252
44
- loqusdb/utils/migrate.py,sha256=9Q6kdIi9TpFVzDYptlEE8RqPPS5wyzfM3F8egzmmBBk,1113
45
- loqusdb/utils/profiling.py,sha256=3OizF7CpYvSl9kyl2g4KGJxbIRUqWfmfLxn3843XYDk,9164
46
- loqusdb/utils/update.py,sha256=1edJG-u24FgOSxyXAQEiyTG4IyK-Uo3lSIl5qyzcXsI,4433
47
- loqusdb/utils/variant.py,sha256=Lq5x9egVB-3rExBiRceF67TaL4Hp2gGoWMSRBEcnm4Q,2088
48
- loqusdb/utils/vcf.py,sha256=ybmrTBEPYa0FbUXo8ttlwATk13RnKjX9eIDbRDwCiVE,5175
49
- loqusdb-2.7.2.dist-info/LICENSE,sha256=urpFcJXw3elN9kV2fFutc-lXegjuu2lqP_GSy8_CAbs,1054
50
- loqusdb-2.7.2.dist-info/METADATA,sha256=NvWYugvrSe_lUtPGvWwXxUnqc-OiY0eJSRJ31gtatYk,6032
51
- loqusdb-2.7.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
52
- loqusdb-2.7.2.dist-info/entry_points.txt,sha256=39QklW01vy9ilBLcRPgCP18kN6oKXXLoOK50gZE7Jbs,59
53
- loqusdb-2.7.2.dist-info/top_level.txt,sha256=lRdRO6hqPhJEjFhfNsbCgVWMztvkYsjiOGK9DAL0UAI,8
54
- loqusdb-2.7.2.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- [console_scripts]
2
- loqusdb = loqusdb.__main__:base_command
3
-
@@ -1 +0,0 @@
1
- loqusdb