partis-bcr 1.0.0__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bin/FastTree +0 -0
- bin/add-chimeras.py +59 -0
- bin/add-seqs-to-outputs.py +81 -0
- bin/bcr-phylo-run.py +799 -0
- bin/build.sh +24 -0
- bin/cf-alleles.py +97 -0
- bin/cf-germlines.py +57 -0
- bin/cf-linearham.py +199 -0
- bin/chimera-plot.py +76 -0
- bin/choose-partially-paired.py +143 -0
- bin/circle-plots.py +30 -0
- bin/compare-plotdirs.py +298 -0
- bin/diff-parameters.py +133 -0
- bin/docker-hub-push.sh +6 -0
- bin/extract-pairing-info.py +55 -0
- bin/gcdyn-simu-run.py +223 -0
- bin/gctree-run.py +244 -0
- bin/get-naive-probabilities.py +126 -0
- bin/iqtree-1.6.12 +0 -0
- bin/lonr.r +1020 -0
- bin/makeHtml +52 -0
- bin/mds-run.py +46 -0
- bin/parse-output.py +277 -0
- bin/partis +1869 -0
- bin/partis-pip +116 -0
- bin/partis.py +1869 -0
- bin/plot-gl-set-trees.py +519 -0
- bin/plot-hmms.py +151 -0
- bin/plot-lb-tree.py +427 -0
- bin/raxml-ng +0 -0
- bin/read-bcr-phylo-trees.py +38 -0
- bin/read-gctree-output.py +166 -0
- bin/run-chimeras.sh +64 -0
- bin/run-dtr-scan.sh +25 -0
- bin/run-paired-loci.sh +100 -0
- bin/run-tree-metrics.sh +88 -0
- bin/smetric-run.py +62 -0
- bin/split-loci.py +317 -0
- bin/swarm-2.1.13-linux-x86_64 +0 -0
- bin/test-germline-inference.py +425 -0
- bin/tree-perf-run.py +194 -0
- bin/vsearch-2.4.3-linux-x86_64 +0 -0
- bin/vsearch-2.4.3-macos-x86_64 +0 -0
- bin/xvfb-run +194 -0
- partis_bcr-1.0.1.data/scripts/cf-alleles.py +97 -0
- partis_bcr-1.0.1.data/scripts/cf-germlines.py +57 -0
- partis_bcr-1.0.1.data/scripts/extract-pairing-info.py +55 -0
- partis_bcr-1.0.1.data/scripts/gctree-run.py +244 -0
- partis_bcr-1.0.1.data/scripts/parse-output.py +277 -0
- partis_bcr-1.0.1.data/scripts/split-loci.py +317 -0
- partis_bcr-1.0.1.data/scripts/test.py +1005 -0
- {partis_bcr-1.0.0.dist-info → partis_bcr-1.0.1.dist-info}/METADATA +1 -1
- {partis_bcr-1.0.0.dist-info → partis_bcr-1.0.1.dist-info}/RECORD +101 -50
- partis_bcr-1.0.1.dist-info/top_level.txt +1 -0
- {partis → python}/glutils.py +1 -1
- python/main.py +30 -0
- {partis → python}/plotting.py +10 -1
- {partis → python}/treeutils.py +18 -16
- {partis → python}/utils.py +14 -7
- partis/main.py +0 -59
- partis_bcr-1.0.0.dist-info/top_level.txt +0 -1
- {partis_bcr-1.0.0.dist-info → partis_bcr-1.0.1.dist-info}/WHEEL +0 -0
- {partis_bcr-1.0.0.dist-info → partis_bcr-1.0.1.dist-info}/entry_points.txt +0 -0
- {partis_bcr-1.0.0.dist-info → partis_bcr-1.0.1.dist-info}/licenses/COPYING +0 -0
- {partis → python}/__init__.py +0 -0
- {partis → python}/alleleclusterer.py +0 -0
- {partis → python}/allelefinder.py +0 -0
- {partis → python}/alleleremover.py +0 -0
- {partis → python}/annotationclustering.py +0 -0
- {partis → python}/baseutils.py +0 -0
- {partis → python}/cache/__init__.py +0 -0
- {partis → python}/cache/cached_uncertainties.py +0 -0
- {partis → python}/clusterpath.py +0 -0
- {partis → python}/coar.py +0 -0
- {partis → python}/corrcounter.py +0 -0
- {partis → python}/datautils.py +0 -0
- {partis → python}/event.py +0 -0
- {partis → python}/fraction_uncertainty.py +0 -0
- {partis → python}/gex.py +0 -0
- {partis → python}/glomerator.py +0 -0
- {partis → python}/hist.py +0 -0
- {partis → python}/hmmwriter.py +0 -0
- {partis → python}/hutils.py +0 -0
- {partis → python}/indelutils.py +0 -0
- {partis → python}/lbplotting.py +0 -0
- {partis → python}/mds.py +0 -0
- {partis → python}/mutefreqer.py +0 -0
- {partis → python}/paircluster.py +0 -0
- {partis → python}/parametercounter.py +0 -0
- {partis → python}/paramutils.py +0 -0
- {partis → python}/partitiondriver.py +0 -0
- {partis → python}/partitionplotter.py +0 -0
- {partis → python}/performanceplotter.py +0 -0
- {partis → python}/plotconfig.py +0 -0
- {partis → python}/processargs.py +0 -0
- {partis → python}/prutils.py +0 -0
- {partis → python}/recombinator.py +0 -0
- {partis → python}/scanplot.py +0 -0
- {partis → python}/seqfileopener.py +0 -0
- {partis → python}/treegenerator.py +0 -0
- {partis → python}/viterbicluster.py +0 -0
- {partis → python}/vrc01.py +0 -0
- {partis → python}/waterer.py +0 -0
@@ -1,3 +1,47 @@
|
|
1
|
+
bin/FastTree,sha256=ztIqHXzUJRUFLo-BEcE97UyityueIJmFPWXFOoJ0l4k,368264
|
2
|
+
bin/add-chimeras.py,sha256=7Zug9D7qtVa2k81kcIGtMKH0BjCmeiq2_rRDjPoiZug,2351
|
3
|
+
bin/add-seqs-to-outputs.py,sha256=O7Mkz7GbkJPNtJ4v1fI1d3XfuYLOxG0ZofG37U_Rjsg,5156
|
4
|
+
bin/bcr-phylo-run.py,sha256=rzafOBrnLlOQWp3XnBHwYqnsVQVThrVLab1K_zgNi-k,54060
|
5
|
+
bin/build.sh,sha256=s5xo8fe7VuvEh8l4myWdS03r84VDLanzIIDfaQc0BuA,637
|
6
|
+
bin/cf-alleles.py,sha256=HEQzDvXGSIFoWysUQTF5MZwDWIYwfAeXTepOZj8UN6A,4737
|
7
|
+
bin/cf-germlines.py,sha256=AA82Hvy53Qh9czl3gQK6IzZAb8BnqcoUWFbIFuBGyQw,3149
|
8
|
+
bin/cf-linearham.py,sha256=mUp7aEUGLCifUv-jk3GL5IbeUiktJ9f8tFi5h7CRkYc,11603
|
9
|
+
bin/chimera-plot.py,sha256=EIpQagQUOV4aVDaDqwfZ2kOIEH2K3cQ_NJtDZ9AEmYs,3374
|
10
|
+
bin/choose-partially-paired.py,sha256=oPEwxt7adfOOk-V94YxJBOgrwuanp6jdBZpe8Kh-kL0,8100
|
11
|
+
bin/circle-plots.py,sha256=Igh5ogyLXPJaq7zgMKtlWkf4ZL3pwQK5ETFlLTQ8Cw8,1056
|
12
|
+
bin/compare-plotdirs.py,sha256=Tt8DDOBgMsdn4Ncg6K6fn0G1-vNS5VOmikisNzwLauE,16384
|
13
|
+
bin/diff-parameters.py,sha256=UTMqLnNG7s0XI7WXCqHbFGGIizLvS5bbqNhWwFlznZU,4746
|
14
|
+
bin/docker-hub-push.sh,sha256=SYryZaUz7t2cFFOv8femIVEZew9DnkJBwyrkDInJKqk,176
|
15
|
+
bin/extract-pairing-info.py,sha256=hUpXGZHLrqHfEYvSuyK3lKjOxmYeNyCf2bvqHETmUkA,2955
|
16
|
+
bin/gcdyn-simu-run.py,sha256=r5rQwByWfTJ-FDmLyk_9HtWYd2qTuXsBcjKEXsk9_Lo,11315
|
17
|
+
bin/gctree-run.py,sha256=uh0kuZjwyY_TutgCMAgFl2l8yJ0TOuVGf2EEPFHTg3E,13964
|
18
|
+
bin/get-naive-probabilities.py,sha256=WfEZf3YN2_VU32ntsNhMJHeukLBIz36_cUnPgOw8bzo,6930
|
19
|
+
bin/iqtree-1.6.12,sha256=k9MzGI8mVDMih0s986kAP3FcyVIdRMuB0QliUyHoRFg,7843672
|
20
|
+
bin/lonr.r,sha256=YzAsjyQ-NZ2shOPhzkFFppsgXJEhMTztFA-C6NVyEJ4,44212
|
21
|
+
bin/makeHtml,sha256=SMMulEmYoU4ve4jlCRNaDuw9f4FS4t8g_FGE7z5Ndb4,1190
|
22
|
+
bin/mds-run.py,sha256=rShy5b3oqvFZqhNdVxrtyZ4nw7whK-SKPAYl2thXooU,2003
|
23
|
+
bin/parse-output.py,sha256=_vlx4ptHEoKiztm2RrCMqQZYlFriFmv4Sv17E6M6J9o,19533
|
24
|
+
bin/partis,sha256=l_rAMqINhxVTAfopFjVWF6BeiYFtCpWEAFoZvtPGE2U,225082
|
25
|
+
bin/partis-pip,sha256=STJkb_lm94kKxthpmIsMgFIhBWsoOJAtRJZbiFewaAU,5562
|
26
|
+
bin/partis.py,sha256=l_rAMqINhxVTAfopFjVWF6BeiYFtCpWEAFoZvtPGE2U,225082
|
27
|
+
bin/plot-gl-set-trees.py,sha256=bgWPBmzzlD_YgWl9nQetGdzmgosXDKyVyfvaHs0VvVc,25695
|
28
|
+
bin/plot-hmms.py,sha256=rKhPyWxexMKBt8kmwuM5ebFfFONtREoDlRqs4J52rT8,6560
|
29
|
+
bin/plot-lb-tree.py,sha256=EKvA2DhRL8oAJoUy5FYdQaLyZYL4Ez6_4OpwD3kVbVM,23674
|
30
|
+
bin/raxml-ng,sha256=ypUDi65TiA9zBfLvIvQwmGRwL-OzQhO7DU_vLAWHlGs,4523960
|
31
|
+
bin/read-bcr-phylo-trees.py,sha256=MtbKi_clOELYTt3kgjo60SZ0M9IMVML4MaijKp0VC6o,1825
|
32
|
+
bin/read-gctree-output.py,sha256=UJsj_tqGcMNbzRntoB25gztqu2rpnVVrHM5MJjVqz1c,11085
|
33
|
+
bin/run-chimeras.sh,sha256=pLaxmqVMEvDaYoLjc9_eEYTjXxv9XYviD7HA3Xxz4zE,4863
|
34
|
+
bin/run-dtr-scan.sh,sha256=UEC3qQGov6_Uw6KjTaOxyAlaz2zkjysr8WHmkbwwJRc,992
|
35
|
+
bin/run-paired-loci.sh,sha256=CU84347edBTEsDFeivEVkQMUOdqDj2oQ8Hgw9D_6bkk,12368
|
36
|
+
bin/run-tree-metrics.sh,sha256=dblamefc1b-aH-vLR5BaNAagfXHrw9FZV3xY4ku1if4,17005
|
37
|
+
bin/smetric-run.py,sha256=5fOD_Y9aNzJa80doDGOH_emSYNmVrrj8nW4XWaMBri8,3820
|
38
|
+
bin/split-loci.py,sha256=-2BbF_GoWjU8txW3EEFmRwB0A_qaIdTTjr4_JGQzGwU,20718
|
39
|
+
bin/swarm-2.1.13-linux-x86_64,sha256=WYJuWV4Jk8Y1ZKFkksTXGzZ_Czw4zee_wCcNB2sqcNY,454873
|
40
|
+
bin/test-germline-inference.py,sha256=MGws6CCWlFkyfdNn0TDh8wypw3_Q_C2t7W-V6bkOJUc,24041
|
41
|
+
bin/tree-perf-run.py,sha256=omJwhvbKnK0iXx0T5BsIySuCkmy9o5X4UDQJ-7L457Y,12716
|
42
|
+
bin/vsearch-2.4.3-linux-x86_64,sha256=8y0JkQXCvWouUHrbXd_tD9v-WA8ZYBc29frI_F9f6zc,1766528
|
43
|
+
bin/vsearch-2.4.3-macos-x86_64,sha256=OpueITQ_9AP2BKIESX0hNJIpev8iaEAgzdajGhi-QrA,401244
|
44
|
+
bin/xvfb-run,sha256=vc1d8rkniPIm-56LZMDTOOtlv_IM68EgBOrEOdiys08,6103
|
1
45
|
data/gizmod.txt,sha256=NAQzCOBD7e9We-qYoy6sJSgxgXQbOow0iVu3hYQxCI4,944
|
2
46
|
data/notes.txt,sha256=eHRPhGZ2qOsGYybHk570wjrJ5ZHYfbnqHsFc8GDY-dM,1422
|
3
47
|
data/sample-seqs.yaml,sha256=uHRtSwKrhaQj_8r91OLFtFhOEw5hf54ROH51mvBC3R0,138
|
@@ -254,53 +298,60 @@ data/substitution-profiles/GSSPs_for_VL_genes_with_at_least_300_lineages.txt,sha
|
|
254
298
|
data/substitution-profiles/notes.txt,sha256=-DK9E31YovqOWaXR1Q-LL5KFhjVJcSLwXbriajUq1TA,389
|
255
299
|
packages/ham/bcrham,sha256=DwQaLOc_OwKYj9mk3TGVVEqzBGMIl_0lje3SbMrgEYY,874648
|
256
300
|
packages/ig-sw/src/ig_align/ig-sw,sha256=SNFYfMlvX9s9T64t9fYIB5ugD6cZ016SZVbRhrz5Pro,293464
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
301
|
+
partis_bcr-1.0.1.data/scripts/cf-alleles.py,sha256=AgFLoRfcwuX1InVpE3zG6-unqoCBGOeCTpEl_RZftvU,4723
|
302
|
+
partis_bcr-1.0.1.data/scripts/cf-germlines.py,sha256=8_bq0ue3ALFQ-a7-ntnhkbCaBdQ5mlWtQgNeQP_TvcQ,3135
|
303
|
+
partis_bcr-1.0.1.data/scripts/extract-pairing-info.py,sha256=IGPd4jYpsW3IPgsrxTJrk9jAwUKlb45eX3lOpb8Maos,2941
|
304
|
+
partis_bcr-1.0.1.data/scripts/gctree-run.py,sha256=BfSZCFgqdhUEqVsv2h20o6OkS6KbQgx5tfvBhySRx2U,13950
|
305
|
+
partis_bcr-1.0.1.data/scripts/parse-output.py,sha256=8nrg0ip3XDhme02NCiI45BrSqCNvbRIbKYErD8STk8U,19519
|
306
|
+
partis_bcr-1.0.1.data/scripts/split-loci.py,sha256=K0WXQYtloL5rs46mwvEXUecqT3iG8bbqwNOTNwfpvzY,20704
|
307
|
+
partis_bcr-1.0.1.data/scripts/test.py,sha256=aI-2mLH5WXYVWoS4zateeSgDynDUC_DK9QF-UAEpWms,63609
|
308
|
+
partis_bcr-1.0.1.dist-info/licenses/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
309
|
+
python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
310
|
+
python/alleleclusterer.py,sha256=x50E_lJMlKPc-CPkdkM1qe4AvVi-mkDJ1cBDxs5L-ms,30551
|
311
|
+
python/allelefinder.py,sha256=SgJjopk5ivLOcmTumsWq5PZ05aPZ6zQyjTd1fxeRjaM,80402
|
312
|
+
python/alleleremover.py,sha256=N3WYuk2j_My17Q0T7jM0b8_q6liv5b-N1nCkAuPyq2k,12030
|
313
|
+
python/annotationclustering.py,sha256=rBcjdz9eHFUjoz1G5D46cLSxKTExyqtOkiUa0TzBXOU,13027
|
314
|
+
python/baseutils.py,sha256=jIS-D2TTAwyFxrpeGjcetlHi_be2tdMJhK5uSxZUMqQ,573
|
315
|
+
python/clusterpath.py,sha256=oS79lMq_uedUEsiewutgLzkz9MkSRVPHBK0Ovz9cTp0,51694
|
316
|
+
python/coar.py,sha256=5frBiNkWGdlOg-nZPTeA73Vq4hL3oSg60VkSWe7maS4,14098
|
317
|
+
python/corrcounter.py,sha256=Rz7G2wBkcSFvAogWiwsnyEqSAROMIOod6i6QbEINX6k,6008
|
318
|
+
python/datautils.py,sha256=wTrr_a6K4WIRXpIjeoIEAMmVV6_9QMSDf5V15583Jh4,3213
|
319
|
+
python/event.py,sha256=LryRUz1uqQha7zhkQ5iVBxWh7GCHY0ojteNvoFWLBZo,11999
|
320
|
+
python/fraction_uncertainty.py,sha256=86fIYTRmm0yU22Azt-VrHI4eRqSOli-qkJOPa6ZtcrA,3078
|
321
|
+
python/gex.py,sha256=DWK4WHIsuBzHO6PhtwX3Q76oINr4Jm5hkMBJSUBfqZ8,25771
|
322
|
+
python/glomerator.py,sha256=Big90RVTOsyAqRE-2nlJmNQaglHmQRw6egdD_GImTos,17412
|
323
|
+
python/glutils.py,sha256=JJ4XZIC-eJXSYD-__ygii6wWsIScGvRqmqtUiTosBto,100266
|
324
|
+
python/hist.py,sha256=oNZNIbisTzZERHqUZlzfMBYsjEWJBLE_oszEexLGd4M,32583
|
325
|
+
python/hmmwriter.py,sha256=lWC4oW7dvAFj0mmCYCmzV67kuM-zZPSzPXqu0d6o_Ro,55480
|
326
|
+
python/hutils.py,sha256=o3z4LbFbemxiQdBoTJv8YPbnwul0SkdfBl9UXJXOHIE,15684
|
327
|
+
python/indelutils.py,sha256=SlPFQnzPN27VHxvcUXHIgHZtBm6MGfookz6jHDavtm4,45001
|
328
|
+
python/lbplotting.py,sha256=AKQsFJKi_gw7us7ARNwUhVNfHvWbxp1oo4JbJtWORaQ,126486
|
329
|
+
python/main.py,sha256=HiNELhSRbXoA3qcePoU-BLoAh_aQ8BGLYdtbzvDbzmg,891
|
330
|
+
python/mds.py,sha256=58JdN3X11t8yMLeuhpYEqpC6doZQc9m4yLFj4Bm1hHc,15859
|
331
|
+
python/mutefreqer.py,sha256=1xkbi0rnkKbPN-09VB0OXC4MLAMAzwVYsOlQ77NVB9Q,14097
|
332
|
+
python/paircluster.py,sha256=jnIXPtGe2-Z_PP-bYztMh0BuKnoh7P55ixsEkls0xUg,154337
|
333
|
+
python/parametercounter.py,sha256=BH9iyTT7LfF5aCmrdNgAHlz4BWeR5uNYXaZT4L8jUKI,13768
|
334
|
+
python/paramutils.py,sha256=DEFRNQp_eLGJ6ab2N6fzmTpB3VbZjI5eVr4DKddOjV4,10796
|
335
|
+
python/partitiondriver.py,sha256=YDZZqDCZDgUbiqyjANSJ0cnFPo8Bus0mT8mc0qMwCas,205788
|
336
|
+
python/partitionplotter.py,sha256=CEfPtCCpMGbW7l6j3uOoAqmngQ5GrLWDcFTc4gLnI6o,87906
|
337
|
+
python/performanceplotter.py,sha256=bWGwodNhbZpgSlZVyfmxhpwhCGRKcJHpdl3sPiEbcnQ,20393
|
338
|
+
python/plotconfig.py,sha256=D-QwV4xm57Gby9Cv49wDaGX2SPCxGC24c8VuNoARh7w,7945
|
339
|
+
python/plotting.py,sha256=I9mWkyCWEMOvxFqDiO3J1qqh_1awJ8VK9rCYtLDy8Jw,114243
|
340
|
+
python/processargs.py,sha256=Qc9okkbnLRv1GVBeMtZIzDkGcdHvryDsXiT0t9DwFss,49376
|
341
|
+
python/prutils.py,sha256=oqzL_F4zY-vxGLW-x7dEQA-YQU9QmS-UxB2kxPEUnac,22297
|
342
|
+
python/recombinator.py,sha256=NQnonjGjXWmkkbtbcc7NuImQhJX8TnXBN39jWRRwooY,71681
|
343
|
+
python/scanplot.py,sha256=-ZXle3lW5C2ZRECC6r0xJokscZT0-A_VV7om6We_HbY,64864
|
344
|
+
python/seqfileopener.py,sha256=6WZQaG-0R3KNk3ZYLP2bAJ9ViR7b9viSB-vTePaaMh0,26880
|
345
|
+
python/treegenerator.py,sha256=aExfulBvj2CeNDcnX6AG-jeDiEmOvEzfSsDtt9psMVk,18909
|
346
|
+
python/treeutils.py,sha256=aSKSxKZK2attLKrJv3xrDVWekgwtQVhqrnqZKs9c-uM,282309
|
347
|
+
python/utils.py,sha256=RZr79jh3jLkYPBZW4N6210CkC-rKlrlxx2uu-ER5jdA,492652
|
348
|
+
python/viterbicluster.py,sha256=ub8vHxJbTDUtx2QUS2rGFFRQVKyGMdaGbDtFtNcaTgc,2070
|
349
|
+
python/vrc01.py,sha256=f3PpRV9ZOU9kxJCKdoJlP9wvKB7FEgMM8WoNpevsEOE,10813
|
350
|
+
python/waterer.py,sha256=sPBsJchmK2EO3M5UCwZq_S5mRV3eYFuIZoite4Js62g,109955
|
351
|
+
python/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
352
|
+
python/cache/cached_uncertainties.py,sha256=GNs18AG8ROdDg0OOrcArsU73Ev1U8k5Gsnf79WndHG8,4257821
|
353
|
+
partis_bcr-1.0.1.dist-info/METADATA,sha256=ZeWObwx6zCF4IYn1nWLwcMLHh_5_l-wadsojZX2A6ZM,4976
|
354
|
+
partis_bcr-1.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
355
|
+
partis_bcr-1.0.1.dist-info/entry_points.txt,sha256=Q-AkAQ91YwiKNHruS32ACdY4_IQdpZhpij2EuVDmdnM,44
|
356
|
+
partis_bcr-1.0.1.dist-info/top_level.txt,sha256=J-z0poNcsv31IHB413--iOY8LoHBKiTHeybHX3abokI,7
|
357
|
+
partis_bcr-1.0.1.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
python
|
{partis → python}/glutils.py
RENAMED
@@ -46,7 +46,7 @@ def functionality_fname(species=None, gldir=None): # _not_ generally present (b
|
|
46
46
|
species = 'human'
|
47
47
|
print(' %s using default species %s for functionality file' % (utils.color('yellow', 'warning'), species))
|
48
48
|
if gldir is None:
|
49
|
-
gldir =
|
49
|
+
gldir = utils.get_partis_dir()
|
50
50
|
return '%s/data/germlines/%s/functionalities.csv' % (gldir, species)
|
51
51
|
|
52
52
|
csv_headers = ['gene', 'cyst_position', 'tryp_position', 'phen_position', 'aligned_seq']
|
python/main.py
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Main entry point for partis package
|
4
|
+
"""
|
5
|
+
|
6
|
+
import os
|
7
|
+
import sys
|
8
|
+
|
9
|
+
def main():
|
10
|
+
"""Main entry point for partis command line interface."""
|
11
|
+
# Set up the partis environment
|
12
|
+
current_dir = os.path.dirname(os.path.realpath(__file__))
|
13
|
+
site_packages_dir = os.path.dirname(current_dir) # site-packages/
|
14
|
+
|
15
|
+
# Let the original bin/partis script auto-detect its location
|
16
|
+
# Don't override PARTIS_DIR - let it be set naturally
|
17
|
+
|
18
|
+
# Execute the original bin/partis script
|
19
|
+
bin_partis = os.path.join(site_packages_dir, 'bin', 'partis')
|
20
|
+
|
21
|
+
if os.path.exists(bin_partis):
|
22
|
+
import subprocess
|
23
|
+
result = subprocess.run([sys.executable, bin_partis] + sys.argv[1:])
|
24
|
+
sys.exit(result.returncode)
|
25
|
+
else:
|
26
|
+
print(f'Error: partis script not found at {bin_partis}')
|
27
|
+
sys.exit(1)
|
28
|
+
|
29
|
+
if __name__ == '__main__':
|
30
|
+
main()
|
{partis → python}/plotting.py
RENAMED
@@ -749,7 +749,10 @@ legends = {'vollmers-0.9' : 'VJ CDR3 0.9',
|
|
749
749
|
'subset-partition' : 'subset partis',
|
750
750
|
'vsearch-subset-partition' : 'vsearch subset partis',
|
751
751
|
'star-partition' : 'star partis',
|
752
|
-
'phylo-naive-iqtree' : 'IQ-TREE (
|
752
|
+
'phylo-naive-iqtree' : 'IQ-TREE (CDR3 N)',
|
753
|
+
'phylo-naive-iqtree-fuzz-0' : 'IQ-TREE (fuzz 0)',
|
754
|
+
'phylo-naive-iqtree-fuzz-1' : 'IQ-TREE (fuzz 1)',
|
755
|
+
'phylo-naive-iqtree-fuzz-2' : 'IQ-TREE (fuzz 2)',
|
753
756
|
'single-chain-partis' : 'single chain partis',
|
754
757
|
'annotate' : '1-seq. partis',
|
755
758
|
'seed-partition' : 'full partis (seed)',
|
@@ -867,6 +870,9 @@ colors = {'true' : '#006600',
|
|
867
870
|
'vsearch-subset-partition' : '#ff7f0e', #c04000',
|
868
871
|
'star-partition' : '#ff7f0e',
|
869
872
|
'phylo-naive-iqtree' : 'grey',
|
873
|
+
'phylo-naive-iqtree-fuzz-0' : 'grey',
|
874
|
+
'phylo-naive-iqtree-fuzz-1' : 'grey',
|
875
|
+
'phylo-naive-iqtree-fuzz-2' : 'grey',
|
870
876
|
'single-chain-partis' : '#006600',
|
871
877
|
'single-chain-scoper' : '#006600',
|
872
878
|
'annotate' : '#1f77b4',
|
@@ -935,6 +941,9 @@ linestyles = {'naive-hamming-partition' : 'dashed',
|
|
935
941
|
'changeo' : 'dashed',
|
936
942
|
'scoper' : 'dashed',
|
937
943
|
'mobille' : 'dashed',
|
944
|
+
'phylo-naive-iqtree-fuzz-0' : 'dotted',
|
945
|
+
'phylo-naive-iqtree-fuzz-1' : 'dashdot',
|
946
|
+
'phylo-naive-iqtree-fuzz-2' : 'dashed',
|
938
947
|
'igblast' : 'dotted',
|
939
948
|
'mixcr' : 'dotted',
|
940
949
|
'misassign-distance-0.03' : 'dashed',
|
{partis → python}/treeutils.py
RENAMED
@@ -1043,7 +1043,7 @@ def collapse_zero_length_leaves(dtree, sequence_uids, dont_warn=False, debug=Fal
|
|
1043
1043
|
def run_tree_inference(method, input_seqfos=None, annotation=None, naive_seq=None, naive_seq_name='XnaiveX', no_naive=False, actions='prep:run:read',
|
1044
1044
|
taxon_namespace=None, suppress_internal_node_taxa=False, persistent_workdir=None, redo=False, outfix='out', cmdfo=None,
|
1045
1045
|
glfo=None, parameter_dir=None, use_docker=False, linearham_dir=None, iclust=None, seed_id=None, only_pass_leaves=False,
|
1046
|
-
collapse_duplicate_seqs=False, keys_not_to_collapse=None, dont_collapse_zero_len_leaves=False,
|
1046
|
+
collapse_duplicate_seqs=False, keys_not_to_collapse=None, dont_collapse_zero_len_leaves=False, phylo_naive_inference_fuzz=None, debug=False):
|
1047
1047
|
# ----------------------------------------------------------------------------------------
|
1048
1048
|
def lhindir(workdir):
|
1049
1049
|
return '%s/input' % workdir
|
@@ -1053,13 +1053,14 @@ def run_tree_inference(method, input_seqfos=None, annotation=None, naive_seq=Non
|
|
1053
1053
|
cmd = '%s/bin/FastTree -gtr -nt -out %s %s' % (utils.get_partis_dir(), ofn(workdir), ifn(workdir))
|
1054
1054
|
elif method in iqt_methods:
|
1055
1055
|
vsn = '1.6.12' if method=='iqtree' else method.split('-')[1]
|
1056
|
-
cmd = '%s/
|
1056
|
+
cmd = '%s/bin/iqtree-%s -asr -s %s -pre %s/%s -o %s' % (utils.get_partis_dir(), vsn, ifn(workdir), os.path.dirname(ifn(workdir)), outfix, naive_seq_name)
|
1057
|
+
# cmd = '%s/packages/iqtree-%s-Linux/bin/iqtree%s -asr -s %s -pre %s/%s -o %s' % (utils.get_partis_dir(), vsn, '2' if vsn[0]=='2' else '', ifn(workdir), os.path.dirname(ifn(workdir)), outfix, naive_seq_name)
|
1057
1058
|
if redo:
|
1058
1059
|
cmd += ' -redo'
|
1059
1060
|
elif method == 'raxml':
|
1060
1061
|
rcmds = ['#!/bin/bash']
|
1061
|
-
rcmds += ['%s/
|
1062
|
-
rcmds += ['%s/
|
1062
|
+
rcmds += ['%s/bin/raxml-ng --model GTR+G --msa %s --msa-format FASTA' % (utils.get_partis_dir(), ifn(workdir))]
|
1063
|
+
rcmds += ['%s/bin/raxml-ng --model GTR+G --msa %s --msa-format FASTA --ancestral --tree %s' % (utils.get_partis_dir(), ifn(workdir), ofn(workdir))]
|
1063
1064
|
utils.write_cmd_file('\n'.join(rcmds) + '\n', '%s/run.sh'%workdir)
|
1064
1065
|
cmd = '%s/run.sh'%workdir
|
1065
1066
|
elif 'gctree' in method:
|
@@ -1256,17 +1257,18 @@ def run_tree_inference(method, input_seqfos=None, annotation=None, naive_seq=Non
|
|
1256
1257
|
assert actions in ['prep:run:read', 'prep', 'read'] # other combinations could make sense, but don't need them atm
|
1257
1258
|
if method == 'linearham' and glfo is None:
|
1258
1259
|
raise Exception('need to pass in glfo in order to run linearham (e.g. linearham can\'t work on the fake h/l annotations')
|
1259
|
-
if
|
1260
|
+
if phylo_naive_inference_fuzz is not None:
|
1260
1261
|
assert method in iqt_methods # needs implementing for other methods
|
1261
1262
|
|
1262
1263
|
is_fake_paired = annotation is not None and annotation.get('is_fake_paired', False)
|
1263
1264
|
if input_seqfos is None:
|
1264
1265
|
assert naive_seq is None # can't specify it two ways
|
1265
1266
|
input_seqfos = utils.seqfos_from_line(annotation, prepend_naive=True, naive_name=naive_seq_name, extra_keys=keys_not_to_collapse, add_sfos_for_multiplicity='gctree' in method)
|
1266
|
-
if
|
1267
|
+
if phylo_naive_inference_fuzz is not None:
|
1267
1268
|
assert input_seqfos[0]['name'] == naive_seq_name
|
1268
|
-
|
1269
|
-
input_seqfos[0]['seq'] =
|
1269
|
+
masked_seq = utils.get_cdr3_masked_naive(annotation, n_fuzz=phylo_naive_inference_fuzz)
|
1270
|
+
input_seqfos[0]['seq'] = masked_seq # replace naive seq with masked seq
|
1271
|
+
input_seqfos.insert(0, {'name' : 'masked-%s-1'%naive_seq_name, 'seq' : masked_seq}) # add masked seq as new seqfo
|
1270
1272
|
elif naive_seq is not None:
|
1271
1273
|
input_seqfos = [{'name' : naive_seq_name, 'seq' : naive_seq}] + input_seqfos
|
1272
1274
|
elif not no_naive: # force calling fcn to affirmatively indicate it doesn't want the naive sequence in the tree (since at one point we forget to add it, with bad consequences)
|
@@ -1335,7 +1337,7 @@ def run_tree_inference(method, input_seqfos=None, annotation=None, naive_seq=Non
|
|
1335
1337
|
|
1336
1338
|
removed_nodes = None
|
1337
1339
|
# fasttree, iqtree, and gctree put all observed seqs as leaves, so we sometimes want to collapse [near-]zero-length leaves onto their internal node parent
|
1338
|
-
if not dont_collapse_zero_len_leaves and not only_pass_leaves and not suppress_internal_node_taxa and
|
1340
|
+
if not dont_collapse_zero_len_leaves and not only_pass_leaves and not suppress_internal_node_taxa and phylo_naive_inference_fuzz is None: # only_pass_leaves means we're probably caring about tree inference accuracy, so want all initial leaves to end up as final leaves to ease comparisons, while suppress_internal_node_taxa has to do with clusterpath tree method
|
1339
1341
|
if debug:
|
1340
1342
|
print(' collapsing zero length leaves')
|
1341
1343
|
removed_nodes = collapse_zero_length_leaves(dtree, uid_list + [naive_seq_name], dont_warn=collapse_duplicate_seqs, debug=debug)
|
@@ -1346,7 +1348,7 @@ def run_tree_inference(method, input_seqfos=None, annotation=None, naive_seq=Non
|
|
1346
1348
|
re_insert_ambig(input_seqfos, padded_seq_info_list)
|
1347
1349
|
if len(inf_seqfos) > 0:
|
1348
1350
|
check_lengths(input_seqfos, inf_seqfos)
|
1349
|
-
if
|
1351
|
+
if phylo_naive_inference_fuzz is not None:
|
1350
1352
|
assert inf_antn is None # just needs to be implemented for the methods that return inf_antn rather than inf_seqfos
|
1351
1353
|
root_dists = [(s, dtree.find_node_with_taxon_label(s['name']).distance_from_root()) for s in inf_seqfos] # (seqfo, distance) pairs
|
1352
1354
|
nearfo, neardist = sorted(root_dists, key=operator.itemgetter(1))[0]
|
@@ -2337,7 +2339,7 @@ def parse_lonr(outdir, input_seqfos, naive_seq_name, reco_info=None, debug=False
|
|
2337
2339
|
# ----------------------------------------------------------------------------------------
|
2338
2340
|
def run_lonr(input_seqfos, naive_seq_name, workdir, tree_method, lonr_code_file=None, phylip_treefile=None, phylip_seqfile=None, seed=1, debug=False):
|
2339
2341
|
if lonr_code_file is None:
|
2340
|
-
lonr_code_file =
|
2342
|
+
lonr_code_file = '%s/bin/lonr.r' % utils.get_partis_dir()
|
2341
2343
|
if not os.path.exists(lonr_code_file):
|
2342
2344
|
raise Exception('lonr code file %s d.n.e.' % lonr_code_file)
|
2343
2345
|
if tree_method not in ('dnapars', 'neighbor'):
|
@@ -2624,7 +2626,7 @@ def get_treefos(args, antn_list, glfo=None, debug=False): # note that <antn_lis
|
|
2624
2626
|
# NOTE <inf_lines_to_use> should be *all* your annotations (so the subclust workdirs are correct), *not* just one cluster at a time
|
2625
2627
|
def get_trees_for_annotations(inf_lines_to_use, treefname=None, cpath=None, workdir=None, cluster_indices=None, tree_inference_method=None, inf_outdir=None,
|
2626
2628
|
glfo=None, parameter_dir=None, linearham_dir=None, min_cluster_size=4, seed_id=None, only_pass_leaves=False, collapse_duplicate_seqs=False,
|
2627
|
-
keys_not_to_collapse=None,
|
2629
|
+
keys_not_to_collapse=None, phylo_naive_inference_fuzz=None, debug=False):
|
2628
2630
|
# ----------------------------------------------------------------------------------------
|
2629
2631
|
def addtree(iclust, dtree, origin):
|
2630
2632
|
treefos[iclust] = {'tree' : dtree, 'origin' : origin}
|
@@ -2697,7 +2699,7 @@ def get_trees_for_annotations(inf_lines_to_use, treefname=None, cpath=None, work
|
|
2697
2699
|
# NOTE if you add an arg here, you probably also need to add it to the 'read' call of the same fcn below
|
2698
2700
|
cmdfos[iclust] = run_tree_inference(tree_inference_method, annotation=line, actions='prep', persistent_workdir=perswdir(iclust), glfo=glfo, iclust=iclust, parameter_dir=parameter_dir,
|
2699
2701
|
linearham_dir=linearham_dir, seed_id=seed_id, only_pass_leaves=only_pass_leaves, collapse_duplicate_seqs=collapse_duplicate_seqs,
|
2700
|
-
keys_not_to_collapse=keys_not_to_collapse,
|
2702
|
+
keys_not_to_collapse=keys_not_to_collapse, phylo_naive_inference_fuzz=phylo_naive_inference_fuzz, debug=debug) # this'll still return the cmdfo if the output exists (since we need it for parsing below), but we won't actually rerun it
|
2701
2703
|
dtree = None
|
2702
2704
|
origin = tree_inference_method
|
2703
2705
|
else:
|
@@ -2730,7 +2732,7 @@ def get_trees_for_annotations(inf_lines_to_use, treefname=None, cpath=None, work
|
|
2730
2732
|
continue
|
2731
2733
|
dtree, inf_seqfos, inf_antn = run_tree_inference(tree_inference_method, annotation=line, actions='read', persistent_workdir=perswdir(iclust), cmdfo=cfo, glfo=glfo, seed_id=seed_id,
|
2732
2734
|
only_pass_leaves=only_pass_leaves, collapse_duplicate_seqs=collapse_duplicate_seqs, keys_not_to_collapse=keys_not_to_collapse,
|
2733
|
-
|
2735
|
+
phylo_naive_inference_fuzz=phylo_naive_inference_fuzz, debug=debug)
|
2734
2736
|
if tree_inference_method == 'linearham': # NOTE linearham infers the whole annotation, not just ancestral seqs (also note this annotation will have all of its sampled trees in l['tree-info']['linearham']['trees'], and logprob in ['logprob']
|
2735
2737
|
for mkey in [k for k in utils.input_metafile_keys.values() if k in line]: # have to copy over any input meta keys
|
2736
2738
|
inf_antn[mkey] = [utils.per_seq_val(line, mkey, u, use_default=True) for u in inf_antn['unique_ids']]
|
@@ -2805,7 +2807,7 @@ def add_smetrics(args, metrics_to_calc, annotations, lb_tau, inf_partition=None,
|
|
2805
2807
|
if 'tree' in args.selection_metric_plot_cfg or any(m in metrics_to_calc for m in ['lbi', 'lbr', 'lbf', 'aa-lbi', 'aa-lbr', 'aa-lbf']): # get the tree if we're making tree plots or if any of the requested metrics need a tree
|
2806
2808
|
treefos = get_trees_for_annotations(inf_lines_to_use, treefname=args.treefname, workdir=workdir, cluster_indices=args.cluster_indices, tree_inference_method=args.tree_inference_method,
|
2807
2809
|
inf_outdir=tree_inference_outdir, glfo=glfo, parameter_dir=args.paired_outdir if args.paired_loci else args.parameter_dir, linearham_dir=args.linearham_dir,
|
2808
|
-
seed_id=args.seed_unique_id, only_pass_leaves=args.infer_trees_with_only_leaves,
|
2810
|
+
seed_id=args.seed_unique_id, only_pass_leaves=args.infer_trees_with_only_leaves, phylo_naive_inference_fuzz=args.phylo_naive_inference_fuzz, debug=debug)
|
2809
2811
|
check_cluster_indices(args.cluster_indices, n_after, inf_lines_to_use)
|
2810
2812
|
n_already_there, n_skipped_uid = 0, 0
|
2811
2813
|
final_inf_lines = []
|
@@ -3212,7 +3214,7 @@ def run_laplacian_spectra(treestr, workdir=None, plotdir=None, plotname=None, ti
|
|
3212
3214
|
cmdlines = [
|
3213
3215
|
'library(ape, quiet=TRUE)',
|
3214
3216
|
# 'library(RPANDA, quiet=TRUE)', # old way, before I had to modify the source code because the CRAN version removes all eigenvalues <1 (for method="standard" -- with method="normal" it's <0, which is probably better, but it also seems to smoosh all the eigenvalues to be almost exactly 1)
|
3215
|
-
'library("RPANDA", lib.loc="%s/packages/RPANDA/lib", quiet=TRUE)' %
|
3217
|
+
'library("RPANDA", lib.loc="%s/packages/RPANDA/lib", quiet=TRUE)' % utils.get_partis_dir(),
|
3216
3218
|
'tree <- read.tree(text = "%s")' % treestr,
|
3217
3219
|
# 'print(tree)',
|
3218
3220
|
'specvals <- spectR(tree, method=c("standard"))', # compute eigenvalues (and some metrics describing the distribution, e.g. skewness, kurtosis, eigengap)
|
{partis → python}/utils.py
RENAMED
@@ -29,6 +29,7 @@ import operator
|
|
29
29
|
import yaml
|
30
30
|
import six
|
31
31
|
import hashlib
|
32
|
+
from pathlib import Path
|
32
33
|
from io import open
|
33
34
|
try:
|
34
35
|
from yaml import CLoader as Loader, CDumper as Dumper
|
@@ -50,7 +51,7 @@ def csv_wmode(mode='w'):
|
|
50
51
|
|
51
52
|
# ----------------------------------------------------------------------------------------
|
52
53
|
def get_partis_dir():
|
53
|
-
return
|
54
|
+
return str(Path(__file__).resolve().parent.parent)
|
54
55
|
|
55
56
|
# ----------------------------------------------------------------------------------------
|
56
57
|
def fsdir():
|
@@ -4570,7 +4571,7 @@ def add_naive_seq_aa(line):
|
|
4570
4571
|
# ----------------------------------------------------------------------------------------
|
4571
4572
|
# return naive sequence with uncertain bases (e.g. non-templated insertions) replace with Ns
|
4572
4573
|
# n_fuzz: number of bases by which to expand non-templated insertions (set to negative value to mask entire cdr3 [excluding conserved codons])
|
4573
|
-
def get_cdr3_masked_naive(antn, n_fuzz=
|
4574
|
+
def get_cdr3_masked_naive(antn, n_fuzz=1, debug=True):
|
4574
4575
|
if antn.get('is_fake_paired', False):
|
4575
4576
|
raise Exception('can\'t mask fake paired annotation')
|
4576
4577
|
masked_seq = antn['naive_seq']
|
@@ -7320,13 +7321,13 @@ def run_vsearch(action, seqdict, workdir, threshold, match_mismatch='2:-4', gap_
|
|
7320
7321
|
|
7321
7322
|
# figure out which vsearch binary to use
|
7322
7323
|
if vsearch_binary is None:
|
7323
|
-
vsearch_binary = os.path.dirname(os.path.realpath(__file__)).replace('/python', '') + '/bin'
|
7324
7324
|
if platform.system() == 'Linux':
|
7325
|
-
|
7325
|
+
binstr = 'linux'
|
7326
7326
|
elif platform.system() == 'Darwin':
|
7327
|
-
|
7327
|
+
binstr += 'macos'
|
7328
7328
|
else:
|
7329
7329
|
raise Exception('%s no vsearch binary in bin/ for platform \'%s\' (you can specify your own full vsearch path with --vsearch-binary)' % (color('red', 'error'), platform.system()))
|
7330
|
+
vsearch_binary = '%s/bin/vsearch-2.4.3-%s-x86_64' % (get_partis_dir(), binstr)
|
7330
7331
|
|
7331
7332
|
# build command
|
7332
7333
|
cmd = vsearch_binary
|
@@ -7416,7 +7417,7 @@ def run_swarm(seqs, workdir, differences=1, n_procs=1):
|
|
7416
7417
|
for name, seq in seqs.items():
|
7417
7418
|
fastafile.write('>%s_%d\n%s\n' % (name, dummy_abundance, remove_ambiguous_ends(seq).replace('N', 'A')))
|
7418
7419
|
|
7419
|
-
cmd =
|
7420
|
+
cmd = '%s/bin/swarm-2.1.13-linux-x86_64 %s' % (get_partis_dir(), infname)
|
7420
7421
|
cmd += ' --differences ' + str(differences)
|
7421
7422
|
if differences == 1:
|
7422
7423
|
cmd += ' --fastidious'
|
@@ -7531,7 +7532,13 @@ def get_chimera_max_abs_diff(line, iseq, chunk_len=75, max_ambig_frac=0.1, debug
|
|
7531
7532
|
|
7532
7533
|
# ----------------------------------------------------------------------------------------
|
7533
7534
|
def get_version_info(debug=False):
|
7534
|
-
git_dir =
|
7535
|
+
git_dir = '%s/.git' % get_partis_dir()
|
7536
|
+
if not os.path.exists(git_dir):
|
7537
|
+
try:
|
7538
|
+
from importlib.metadata import version
|
7539
|
+
return {'tag': version('partis-bcr'), 'commit': 'installed'}
|
7540
|
+
except ImportError:
|
7541
|
+
return {'tag': 'unknown', 'commit': 'installed'}
|
7535
7542
|
vinfo = {}
|
7536
7543
|
vinfo['commit'] = subprocess.check_output(['git', '--git-dir', git_dir, 'rev-parse', 'HEAD'], universal_newlines=True).strip()
|
7537
7544
|
if debug:
|
partis/main.py
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
"""
|
3
|
-
Main entry point for partis package
|
4
|
-
"""
|
5
|
-
|
6
|
-
import os
|
7
|
-
import sys
|
8
|
-
|
9
|
-
def main():
|
10
|
-
"""Main entry point for partis command line interface."""
|
11
|
-
# Find the partis installation directory
|
12
|
-
# If installed via pip, this will be in site-packages/partis/
|
13
|
-
# If in development, it should find the root directory
|
14
|
-
current_dir = os.path.dirname(os.path.realpath(__file__))
|
15
|
-
|
16
|
-
# Look for the partis root directory
|
17
|
-
partis_dir = None
|
18
|
-
search_paths = [
|
19
|
-
os.path.dirname(current_dir), # ../
|
20
|
-
os.path.dirname(os.path.dirname(current_dir)), # ../../ (for site-packages/partis/main.py)
|
21
|
-
]
|
22
|
-
|
23
|
-
for search_path in search_paths:
|
24
|
-
if os.path.exists(os.path.join(search_path, 'bin', 'partis')):
|
25
|
-
partis_dir = search_path
|
26
|
-
break
|
27
|
-
|
28
|
-
if partis_dir is None:
|
29
|
-
# Try to use the current directory structure assuming pip install
|
30
|
-
partis_dir = os.path.dirname(current_dir)
|
31
|
-
if not os.path.exists(os.path.join(partis_dir, 'data')):
|
32
|
-
print('Error: Could not locate partis installation directory')
|
33
|
-
sys.exit(1)
|
34
|
-
|
35
|
-
# Set up environment for partis
|
36
|
-
sys.path.insert(0, partis_dir)
|
37
|
-
os.environ['PARTIS_DIR'] = partis_dir
|
38
|
-
|
39
|
-
# Import and execute the partis main functionality
|
40
|
-
try:
|
41
|
-
# Try to import the original partis logic
|
42
|
-
original_partis = os.path.join(partis_dir, 'bin', 'partis')
|
43
|
-
if os.path.exists(original_partis):
|
44
|
-
# Read and execute the original script, but set up the environment first
|
45
|
-
globals_dict = {'__file__': original_partis}
|
46
|
-
with open(original_partis, 'r') as f:
|
47
|
-
partis_code = f.read()
|
48
|
-
exec(partis_code, globals_dict)
|
49
|
-
else:
|
50
|
-
print(f'Error: partis script not found at {original_partis}')
|
51
|
-
sys.exit(1)
|
52
|
-
except Exception as e:
|
53
|
-
print(f'Error running partis: {e}')
|
54
|
-
import traceback
|
55
|
-
traceback.print_exc()
|
56
|
-
sys.exit(1)
|
57
|
-
|
58
|
-
if __name__ == '__main__':
|
59
|
-
main()
|
@@ -1 +0,0 @@
|
|
1
|
-
partis
|
File without changes
|
File without changes
|
File without changes
|
{partis → python}/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{partis → python}/baseutils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{partis → python}/clusterpath.py
RENAMED
File without changes
|
{partis → python}/coar.py
RENAMED
File without changes
|
{partis → python}/corrcounter.py
RENAMED
File without changes
|
{partis → python}/datautils.py
RENAMED
File without changes
|
{partis → python}/event.py
RENAMED
File without changes
|
File without changes
|
{partis → python}/gex.py
RENAMED
File without changes
|
{partis → python}/glomerator.py
RENAMED
File without changes
|
{partis → python}/hist.py
RENAMED
File without changes
|
{partis → python}/hmmwriter.py
RENAMED
File without changes
|
{partis → python}/hutils.py
RENAMED
File without changes
|
{partis → python}/indelutils.py
RENAMED
File without changes
|
{partis → python}/lbplotting.py
RENAMED
File without changes
|
{partis → python}/mds.py
RENAMED
File without changes
|
{partis → python}/mutefreqer.py
RENAMED
File without changes
|
{partis → python}/paircluster.py
RENAMED
File without changes
|
File without changes
|
{partis → python}/paramutils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{partis → python}/plotconfig.py
RENAMED
File without changes
|
{partis → python}/processargs.py
RENAMED
File without changes
|
{partis → python}/prutils.py
RENAMED
File without changes
|
File without changes
|
{partis → python}/scanplot.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{partis → python}/vrc01.py
RENAMED
File without changes
|
{partis → python}/waterer.py
RENAMED
File without changes
|