kssdtree 1.1.9__tar.gz → 2.0.1__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.
- {kssdtree-1.1.9/kssdtree.egg-info → kssdtree-2.0.1}/PKG-INFO +1 -1
- {kssdtree-1.1.9 → kssdtree-2.0.1/kssdtree.egg-info}/PKG-INFO +1 -1
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdtree.py +45 -32
- {kssdtree-1.1.9 → kssdtree-2.0.1}/setup.py +46 -33
- {kssdtree-1.1.9 → kssdtree-2.0.1}/MANIFEST.in +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/README.md +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/align.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/buildtree.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/bytescale.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/cluster.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/co2mco.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/command_composite.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/command_dist.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/command_dist_wrapper.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/command_set.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/command_shuffle.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/distancemat.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnj.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/bytescale.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/dnj.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/filebuff.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/hclust.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/matrix.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/mman.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/nj.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/nwck.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/pherror.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/phy.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/qseqs.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/str.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/threader.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/tmp.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/dnjheaders/vector.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/filebuff.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/global_basic.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/hclust.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/iseq2comem.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/co2mco.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/command_composite.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/command_dist.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/command_dist_wrapper.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/command_set.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/command_shuffle.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/global_basic.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/iseq2comem.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/mman.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdheaders/mytime.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdtree.egg-info/SOURCES.txt +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdtree.egg-info/dependency_links.txt +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdtree.egg-info/not-zip-safe +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdtree.egg-info/requires.txt +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/kssdtree.egg-info/top_level.txt +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/matrix.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/mman.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/mytime.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/nj.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/align.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/buildtree.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/cluster.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/distancemat.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/sequence.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/tree.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/njheaders/util.h +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/nwck.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/pherror.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/phy.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/pydnj.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/pykssd.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/pynj.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/qseqs.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/sequence.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/setup.cfg +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/str.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/tmp.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/toolutils.py +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/tree.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/util.c +0 -0
- {kssdtree-1.1.9 → kssdtree-2.0.1}/vector.c +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kssdtree
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Kssdtree is a versatile Python package for phylogenetic analysis. It also provides one-stop tree construction and visualization. It can handle DNA sequences of both fasta or fastq format, whether gzipped or not.
|
|
5
5
|
Home-page: https://github.com/yhlink/kssdtree
|
|
6
6
|
Download-URL: https://pypi.org/project/kssdtree
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kssdtree
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Kssdtree is a versatile Python package for phylogenetic analysis. It also provides one-stop tree construction and visualization. It can handle DNA sequences of both fasta or fastq format, whether gzipped or not.
|
|
5
5
|
Home-page: https://github.com/yhlink/kssdtree
|
|
6
6
|
Download-URL: https://pypi.org/project/kssdtree
|
|
@@ -26,12 +26,15 @@ def sketch(shuf_file=None, genome_files=None, output=None, set_opt=None):
|
|
|
26
26
|
print('Genome format error for file:', filename)
|
|
27
27
|
return False
|
|
28
28
|
if not os.path.exists(shuf_file):
|
|
29
|
-
if shuf_file in ['L3K9.shuf', './L3K9.shuf']:
|
|
29
|
+
if shuf_file in ['L3K9.shuf', './L3K9.shuf', 'L3K10.shuf', './L3K10.shuf']:
|
|
30
30
|
print('Downloading...', shuf_file)
|
|
31
31
|
import http.client
|
|
32
32
|
http.client.HTTPConnection._http_vsn = 10
|
|
33
33
|
http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
|
|
34
|
-
|
|
34
|
+
if shuf_file == 'L3K9.shuf' or shuf_file == './L3K9.shuf':
|
|
35
|
+
url = 'https://zenodo.org/records/12699159/files/L3K9.shuf?download=1'
|
|
36
|
+
else:
|
|
37
|
+
url = 'https://zenodo.org/records/12699159/files/L3K10.shuf?download=1'
|
|
35
38
|
start_time = time.time()
|
|
36
39
|
response = requests.get(url, stream=True)
|
|
37
40
|
with open(shuf_file, 'wb') as file:
|
|
@@ -44,8 +47,7 @@ def sketch(shuf_file=None, genome_files=None, output=None, set_opt=None):
|
|
|
44
47
|
"Network timeout, please manually download from github (https://github.com/yhlink/kssdtree/tree/master/shuffle_file)")
|
|
45
48
|
return False
|
|
46
49
|
print('Download finished: ', shuf_file)
|
|
47
|
-
elif shuf_file in ['L2K8.shuf', '
|
|
48
|
-
'./L2K9.shuf', './L3K11.shuf']:
|
|
50
|
+
elif shuf_file in ['L2K8.shuf', 'L2K9.shuf', 'L3K11.shuf', './L2K8.shuf', './L2K9.shuf', './L3K11.shuf']:
|
|
49
51
|
print('Shuffling...', shuf_file)
|
|
50
52
|
file_name = shuf_file.split('.')[0]
|
|
51
53
|
k = int(file_name[3:])
|
|
@@ -74,14 +76,14 @@ def sketch(shuf_file=None, genome_files=None, output=None, set_opt=None):
|
|
|
74
76
|
return False
|
|
75
77
|
|
|
76
78
|
|
|
77
|
-
def dist(
|
|
78
|
-
if
|
|
79
|
-
if not os.path.exists(
|
|
80
|
-
print('No such file or directory: ',
|
|
81
|
-
return False
|
|
82
|
-
if not os.path.exists(qry_sketch):
|
|
83
|
-
print('No such file or directory: ', qry_sketch)
|
|
79
|
+
def dist(genome_sketch=None, output=None, flag=None):
|
|
80
|
+
if genome_sketch is not None and output is not None:
|
|
81
|
+
if not os.path.exists(genome_sketch):
|
|
82
|
+
print('No such file or directory: ', genome_sketch)
|
|
84
83
|
return False
|
|
84
|
+
# if not os.path.exists(qry_sketch):
|
|
85
|
+
# print('No such file or directory: ', qry_sketch)
|
|
86
|
+
# return False
|
|
85
87
|
if flag is None:
|
|
86
88
|
flag = 0
|
|
87
89
|
print('Disting...')
|
|
@@ -95,7 +97,7 @@ def dist(ref_sketch=None, qry_sketch=None, output=None, flag=None):
|
|
|
95
97
|
else:
|
|
96
98
|
output_name = output
|
|
97
99
|
if output_name.endswith(".phy") or output_name.endswith(".phylip"):
|
|
98
|
-
kssd.dist_dispatch(
|
|
100
|
+
kssd.dist_dispatch(genome_sketch, output, genome_sketch, 2, 0, flag)
|
|
99
101
|
end = time.time()
|
|
100
102
|
print('Dist spend time:%.2fs' % (end - start))
|
|
101
103
|
print('Dist finished!')
|
|
@@ -108,23 +110,26 @@ def dist(ref_sketch=None, qry_sketch=None, output=None, flag=None):
|
|
|
108
110
|
return False
|
|
109
111
|
|
|
110
112
|
|
|
111
|
-
def retrieve(
|
|
112
|
-
if
|
|
113
|
+
def retrieve(database=None, genome_sketch=None, output=None, N=None, method=None):
|
|
114
|
+
if database is not None and genome_sketch is not None and output is not None:
|
|
113
115
|
if method is None:
|
|
114
116
|
method = 'nj'
|
|
115
117
|
if method not in ['nj', 'dnj']:
|
|
116
118
|
print('Only support nj and dnj methods!!!')
|
|
117
119
|
return
|
|
118
|
-
if not os.path.exists(
|
|
119
|
-
print('No such file or directory: ',
|
|
120
|
+
if not os.path.exists(genome_sketch):
|
|
121
|
+
print('No such file or directory: ', genome_sketch)
|
|
120
122
|
return False
|
|
121
|
-
if
|
|
123
|
+
if database == 'gtdbr214':
|
|
122
124
|
print('Retrieving...')
|
|
123
125
|
start = time.time()
|
|
124
126
|
if not os.path.exists(output):
|
|
125
127
|
os.makedirs(output)
|
|
126
128
|
print("Created directory:", output)
|
|
127
|
-
|
|
129
|
+
else:
|
|
130
|
+
print('Output path exist!!!')
|
|
131
|
+
return False
|
|
132
|
+
newick, accession_taxonomy = toolutils.upload_request(qry_sketch=genome_sketch, method=method, N=N)
|
|
128
133
|
if newick is None:
|
|
129
134
|
print('Server error!!!')
|
|
130
135
|
return False
|
|
@@ -138,7 +143,7 @@ def retrieve(ref_sketch=None, qry_sketch=None, output=None, N=None, method=None)
|
|
|
138
143
|
print('Retrieve finished!')
|
|
139
144
|
return True
|
|
140
145
|
else:
|
|
141
|
-
print("
|
|
146
|
+
print("database only support 'gtdbr214'")
|
|
142
147
|
return False
|
|
143
148
|
else:
|
|
144
149
|
print('Args error!!!')
|
|
@@ -184,6 +189,12 @@ def build(phylip=None, output=None, method=None):
|
|
|
184
189
|
print('Build spend time:%.2fs' % (end - start))
|
|
185
190
|
print('Build finished!')
|
|
186
191
|
return True
|
|
192
|
+
else:
|
|
193
|
+
print('phylip format error, Check that the phylip format is consistent with NJ or DNJ requirements!!!')
|
|
194
|
+
return False
|
|
195
|
+
else:
|
|
196
|
+
print('Output type error, only supports .newick (.nwk) format:', output_name)
|
|
197
|
+
return False
|
|
187
198
|
else:
|
|
188
199
|
print('Args error!!!')
|
|
189
200
|
return False
|
|
@@ -266,8 +277,8 @@ def subtract(ref_sketch=None, genome_sketch=None, output=None, flag=None):
|
|
|
266
277
|
return False
|
|
267
278
|
|
|
268
279
|
|
|
269
|
-
def quick(shuf_file=None, genome_files=None, output=None, reference=None,
|
|
270
|
-
if reference is None and
|
|
280
|
+
def quick(shuf_file=None, genome_files=None, output=None, reference=None, database=None, method='nj', mode='r', N=0):
|
|
281
|
+
if reference is None and database is None:
|
|
271
282
|
if shuf_file is not None and genome_files is not None and output is not None:
|
|
272
283
|
timeStamp = int(time.mktime(time.localtime(time.time())))
|
|
273
284
|
temp_sketch = toolutils.rs() + '_sketch_' + str(timeStamp)
|
|
@@ -286,9 +297,9 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
286
297
|
return False
|
|
287
298
|
print('Step2...')
|
|
288
299
|
if method == 'nj':
|
|
289
|
-
s2 = dist(
|
|
300
|
+
s2 = dist(genome_sketch=temp_sketch, output=temp_phy, flag=0)
|
|
290
301
|
else:
|
|
291
|
-
s2 = dist(
|
|
302
|
+
s2 = dist(genome_sketch=temp_sketch, output=temp_phy, flag=1)
|
|
292
303
|
if not s2:
|
|
293
304
|
return False
|
|
294
305
|
print('Step3...')
|
|
@@ -297,7 +308,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
297
308
|
return False
|
|
298
309
|
print('Step4...')
|
|
299
310
|
print('Tree visualization finished!')
|
|
300
|
-
visualize(newick=output,
|
|
311
|
+
visualize(newick=output, mode=mode)
|
|
301
312
|
if platform.system() == 'Linux':
|
|
302
313
|
current_directory = os.getcwd()
|
|
303
314
|
temp_dir1 = os.path.join(current_directory, temp_sketch)
|
|
@@ -311,8 +322,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
311
322
|
else:
|
|
312
323
|
print('Args error, please see https://kssdtree.readthedocs.io/en/latest!!!')
|
|
313
324
|
return False
|
|
314
|
-
|
|
315
|
-
elif reference == 'gtdbr214_sketch' and taxonomy is None:
|
|
325
|
+
elif reference is None and database == 'gtdbr214':
|
|
316
326
|
if shuf_file is not None and genome_files is not None and output is not None:
|
|
317
327
|
if not toolutils.is_positive_integer(N):
|
|
318
328
|
print("N must >0 !!!")
|
|
@@ -325,7 +335,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
325
335
|
s1 = sketch(shuf_file=shuf_file, genome_files=genome_files, output=qry_sketch, set_opt=True)
|
|
326
336
|
if not s1:
|
|
327
337
|
return False
|
|
328
|
-
s2 = retrieve(
|
|
338
|
+
s2 = retrieve(database=database, genome_sketch=qry_sketch, output=output, N=N, method=method)
|
|
329
339
|
if not s2:
|
|
330
340
|
return False
|
|
331
341
|
print('Tree visualization finished!')
|
|
@@ -342,7 +352,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
342
352
|
else:
|
|
343
353
|
print('Args error, please see https://kssdtree.readthedocs.io/en/latest!!!')
|
|
344
354
|
return False
|
|
345
|
-
|
|
355
|
+
elif reference is not None and database is None:
|
|
346
356
|
if shuf_file is not None and genome_files is not None and output is not None and method in ['nj', 'dnj']:
|
|
347
357
|
if shuf_file is not None and genome_files is not None and output is not None and method in ['nj', 'dnj']:
|
|
348
358
|
if not toolutils.allowed_file(genome_files):
|
|
@@ -367,7 +377,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
367
377
|
else:
|
|
368
378
|
temp_union_sketch = temp_reference_sketch
|
|
369
379
|
temp_subtract_sketch = toolutils.rs() + '_subtract_sketch_' + str(timeStamp)
|
|
370
|
-
temp_phy = toolutils.rs() +'_temp.phy'
|
|
380
|
+
temp_phy = toolutils.rs() + '_temp.phy'
|
|
371
381
|
print('Step1...')
|
|
372
382
|
s1 = sketch(shuf_file=shuf_file, genome_files=reference, output=temp_reference_sketch, set_opt=True)
|
|
373
383
|
if not s1:
|
|
@@ -385,10 +395,10 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
385
395
|
return False
|
|
386
396
|
print('Step3...')
|
|
387
397
|
if method == 'nj':
|
|
388
|
-
s5 = dist(
|
|
398
|
+
s5 = dist(genome_sketch=temp_subtract_sketch, output=temp_phy,
|
|
389
399
|
flag=0)
|
|
390
400
|
else:
|
|
391
|
-
s5 = dist(
|
|
401
|
+
s5 = dist(genome_sketch=temp_subtract_sketch, output=temp_phy,
|
|
392
402
|
flag=1)
|
|
393
403
|
if not s5:
|
|
394
404
|
return False
|
|
@@ -398,7 +408,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
398
408
|
return False
|
|
399
409
|
print('Step5...')
|
|
400
410
|
print('Tree visualization finished!')
|
|
401
|
-
visualize(newick=output,
|
|
411
|
+
visualize(newick=output, mode=mode)
|
|
402
412
|
if platform.system() == 'Linux':
|
|
403
413
|
current_directory = os.getcwd()
|
|
404
414
|
temp_dir1 = os.path.join(current_directory, temp_reference_sketch)
|
|
@@ -421,3 +431,6 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, taxono
|
|
|
421
431
|
else:
|
|
422
432
|
print('Args error, please see https://kssdtree.readthedocs.io/en/latest!!!')
|
|
423
433
|
return False
|
|
434
|
+
else:
|
|
435
|
+
print('Pipeline error, please see https://kssdtree.readthedocs.io/en/latest!!!')
|
|
436
|
+
return False
|
|
@@ -1,37 +1,41 @@
|
|
|
1
1
|
import sys
|
|
2
|
-
|
|
3
2
|
from setuptools import setup, Extension, find_packages
|
|
4
3
|
from os import environ
|
|
5
|
-
import subprocess
|
|
6
4
|
import os
|
|
5
|
+
import platform
|
|
7
6
|
|
|
8
7
|
|
|
9
|
-
def get_gcc_version():
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
# def get_gcc_version():
|
|
9
|
+
# gcc_version = subprocess.check_output(['gcc', '--version']).decode('utf-8')
|
|
10
|
+
# version_line = gcc_version.split('\n', 1)[0]
|
|
11
|
+
# version_str = version_line.split()[-1]
|
|
12
|
+
# return version_str
|
|
13
|
+
extra_compile_args = []
|
|
14
|
+
extra_link_args = []
|
|
15
15
|
if 'darwin' in sys.platform:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
target_dirs = ["gcc-9", "gcc-10", "gcc-11", "gcc-12", "gcc-13", "gcc-14", "gcc-15"]
|
|
17
|
+
path = "/opt/homebrew/bin/"
|
|
18
|
+
directories = [dir for dir in os.listdir(path) if dir in target_dirs]
|
|
19
|
+
if len(directories) > 0:
|
|
20
|
+
gcc_version = directories[0]
|
|
21
|
+
if 'gcc-9' == gcc_version:
|
|
22
|
+
gcc_path = "/opt/homebrew/bin/gcc-9"
|
|
23
|
+
elif 'gcc-10' == gcc_version:
|
|
24
|
+
gcc_path = "/opt/homebrew/bin/gcc-10"
|
|
25
|
+
elif 'gcc-11' == gcc_version:
|
|
26
|
+
gcc_path = "/opt/homebrew/bin/gcc-11"
|
|
27
|
+
elif 'gcc-12' == gcc_version:
|
|
28
|
+
gcc_path = "/opt/homebrew/bin/gcc-12"
|
|
29
|
+
elif 'gcc-14' == gcc_version:
|
|
30
|
+
gcc_path = "/opt/homebrew/bin/gcc-14"
|
|
31
|
+
elif 'gcc-15' == gcc_version:
|
|
32
|
+
gcc_path = "/opt/homebrew/bin/gcc-15"
|
|
33
|
+
else:
|
|
34
|
+
gcc_path = "/opt/homebrew/bin/gcc-13"
|
|
35
|
+
extra_compile_args = ['-fopenmp']
|
|
36
|
+
extra_link_args = ['-fopenmp']
|
|
37
|
+
os.environ["CC"] = gcc_path
|
|
33
38
|
else:
|
|
34
|
-
gcc_command = 'gcc'
|
|
35
39
|
if environ.get('CC') and 'clang' in environ['CC']:
|
|
36
40
|
# clang
|
|
37
41
|
extra_compile_args = ['-fopenmp=libomp']
|
|
@@ -81,16 +85,25 @@ include_dirs1 = ['kssdheaders']
|
|
|
81
85
|
include_dirs2 = ['njheaders']
|
|
82
86
|
include_dirs3 = ['dnjheaders']
|
|
83
87
|
|
|
84
|
-
|
|
85
|
-
'
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if 'darwin' in sys.platform:
|
|
89
|
+
if platform.machine() == 'arm64':
|
|
90
|
+
require_pakages = []
|
|
91
|
+
else:
|
|
92
|
+
require_pakages = [
|
|
93
|
+
'pyqt5',
|
|
94
|
+
'ete3',
|
|
95
|
+
'requests'
|
|
96
|
+
]
|
|
97
|
+
else:
|
|
98
|
+
require_pakages = [
|
|
99
|
+
'pyqt5',
|
|
100
|
+
'ete3',
|
|
101
|
+
'requests'
|
|
102
|
+
]
|
|
90
103
|
|
|
91
104
|
setup(
|
|
92
105
|
name='kssdtree',
|
|
93
|
-
version='
|
|
106
|
+
version='2.0.1',
|
|
94
107
|
author='Hang Yang',
|
|
95
108
|
author_email='yhlink1207@gmail.com',
|
|
96
109
|
description="Kssdtree is a versatile Python package for phylogenetic analysis. It also provides one-stop tree construction and visualization. It can handle DNA sequences of both fasta or fastq format, whether gzipped or not. ",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|