tabtk 1.0.2__tar.gz → 1.0.4__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tabtk
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: tabtk: A toolkit for sequence similarity analysis based on tabular data
5
5
  Author-email: Chrispin Chaguza <chrispin.chaguza@gmail.com>
6
6
  Maintainer-email: Chrispin Chaguza <chrispin.chaguza@gmail.com>
@@ -1,4 +1,4 @@
1
1
  """tabkit: A toolkit for sequence similarity analysis based on tabular data"""
2
2
 
3
- __version__ = "1.0.2"
3
+ __version__ = "1.0.4"
4
4
 
@@ -181,17 +181,19 @@ def blastSimilarity(cmdValues):
181
181
  blastData = pd.read_csv(tmpOut2,delimiter="\t",dtype={'pident': float,'qcovs': float})
182
182
  blastData["tmp"] = blastData.apply(lambda x: (x["qcovs"] * x["pident"])/100,axis=1)
183
183
 
184
+ blastDataR = blastData[["qseqid","sseqid","tmp"]].groupby(['qseqid','sseqid']).agg({'tmp':'mean'})
185
+ blastDataR = blastDataR.reset_index()
186
+
184
187
  blastData["qseqidR"] = blastData.apply(lambda x: x["qseqid"] if x["qseqid"] > x["sseqid"] else x["sseqid"],axis=1)
185
- blastData["sseqidR"] = blastData.apply(lambda x: x["qseqid"] if x["qseqid"] < x["sseqid"] else x["sseqid"],axis=1)
188
+ blastData["sseqidR"] = blastData.apply(lambda x: x["sseqid"] if x["qseqid"] > x["sseqid"] else x["qseqid"],axis=1)
186
189
 
187
190
  blastData["qseqid"] = blastData["qseqidR"]
188
191
  blastData["sseqid"] = blastData["sseqidR"]
189
192
 
190
- blastData["cov"] = blastData[["qseqid","sseqid","tmp"]].groupby(["qseqid","sseqid"])["tmp"].transform(lambda x: statistics.mean(x))
191
- blastDataR = blastData.groupby(["qseqid","sseqid"]).first().reset_index()
193
+ blastDataR = blastData[["qseqid","sseqid","tmp"]].groupby(['qseqid','sseqid']).agg({'tmp':'min'})
194
+ blastDataR = blastDataR.reset_index()
192
195
 
193
- blastData = blastDataR.drop(columns=["tmp","length","pident","qseqidR","sseqidR"])
194
- blastDataFinal = blastData[["sseqid","qseqid","cov"]].rename(columns={"sseqid":"seq1","qseqid":"seq2","cov":"pid"}).values.tolist()
196
+ blastDataFinal = blastDataR[["sseqid","qseqid","tmp"]].rename(columns={"sseqid":"seq1","qseqid":"seq2","tmp":"pid"}).values.tolist()
195
197
 
196
198
  bar = ChargingBar("Cleaning temporary files", max=len(fileNames))
197
199
  for fileName in tmpFileNames:
@@ -237,18 +239,28 @@ def fastaniSimilarity(cmdValues):
237
239
 
238
240
  tmpOut = f"mash.{str(datetime.datetime.now()).replace(" ","").replace("-",".").replace(":",".")}"
239
241
 
240
- fastaniCmd = f"fastANI --rl {cmdValues["data"]} --ql {cmdValues["data"]} -k {cmdValues["length"]} --matrix --fragLen {cmdValues["fragment"]} --minFraction {cmdValues["fraction"]} --output {tmpOut} -t {cmdValues["threads"]}"
242
+ fastaniCmd = f"fastANI --rl {cmdValues["data"]} --ql {cmdValues["data"]} --kmer {cmdValues["length"]} --matrix --fragLen {cmdValues["fragment"]} --minFraction {cmdValues["fraction"]} --output {tmpOut} --threads {cmdValues["threads"]}"
241
243
 
242
244
  print("Calculating percent similarity... may take longer... be patient...")
243
245
 
244
246
  subprocess.call(fastaniCmd,shell=True,stdout=subprocess.DEVNULL,stderr=subprocess.STDOUT)
245
247
 
246
248
  fastaniResults = []
247
-
249
+
248
250
  with open(tmpOut,"r") as fastaniFile:
249
251
  for itemPos,fastaniOutput in enumerate(fastaniFile):
250
252
  item = fastaniOutput.strip().split("\t")
251
- fastaniResults.append(f"{Path(item[0]).stem}\t{Path(item[1]).stem}\t{float(item[2])}")
253
+ fastaniResults.append([Path(item[0]).stem,Path(item[1]).stem,float(item[2])])
254
+
255
+ fastaniData = pd.DataFrame(fastaniResults, columns=["seq1R","seq2R","pidR"])
256
+ fastaniData['pidR'] = fastaniData['pidR'].astype(float)
257
+
258
+ fastaniData["seq1RR"] = fastaniData.apply(lambda x: x["seq1R"] if x["seq1R"] > x["seq2R"] else x["seq2R"],axis=1)
259
+ fastaniData["seq2RR"] = fastaniData.apply(lambda x: x["seq2R"] if x["seq1R"] > x["seq2R"] else x["seq1R"],axis=1)
260
+
261
+ fastaniData = fastaniData[["seq1RR","seq2RR","pidR"]].groupby(['seq1RR','seq2RR']).agg({'pidR':min})
262
+ fastaniDataR = fastaniData.reset_index()
263
+ fastaniDataFinal = fastaniDataR[["seq1RR","seq2RR","pidR"]].rename(columns={"seq1RR":"seq1","seq2RR":"seq2","pid":"pidR"}).values.tolist()
252
264
 
253
265
  if os.path.exists(tmpOut):
254
266
  os.remove(tmpOut)
@@ -260,7 +272,7 @@ def fastaniSimilarity(cmdValues):
260
272
  else:
261
273
  pass
262
274
 
263
- return(fastaniResults)
275
+ return(fastaniDataFinal)
264
276
 
265
277
 
266
278
  def similarity(cmdValues):
@@ -314,7 +326,7 @@ def similarity(cmdValues):
314
326
 
315
327
  bar = ChargingBar('Writing similarity values', max=len(similarityResults))
316
328
  for itemPair in similarityResults:
317
- simData.write(f"{itemPair}\n")
329
+ simData.write(f"{"\t".join([str(r) for r in itemPair])}\n")
318
330
 
319
331
  bar.next()
320
332
  bar.finish()
@@ -1564,8 +1576,8 @@ def tabtkMain():
1564
1576
  'output': options.output[0:][0] if isinstance(options.output,list) else options.output,
1565
1577
  'length': int(options.length[0:][0]) if isinstance(options.length,list) else int(options.length),
1566
1578
  'fragment': int(options.fragment[0:][0]) if isinstance(options.fragment,list) else int(options.fragment),
1567
- 'fraction': int(options.fraction[0:][0]) if isinstance(options.fraction,list) else int(options.fraction),
1568
- 'size': int(options.size[0:][0]) if isinstance(options.size,list) else int(options.size),
1579
+ 'fraction': float(options.fraction[0:][0]) if isinstance(options.fraction,list) else float(options.fraction),
1580
+ 'size': float(options.size[0:][0]) if isinstance(options.size,list) else float(options.size),
1569
1581
  'mash': options.mash,
1570
1582
  'fastani': options.fastani,
1571
1583
  'blast': options.blast,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tabtk
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: tabtk: A toolkit for sequence similarity analysis based on tabular data
5
5
  Author-email: Chrispin Chaguza <chrispin.chaguza@gmail.com>
6
6
  Maintainer-email: Chrispin Chaguza <chrispin.chaguza@gmail.com>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes