Hi I am looking to sort a list of kmers into descending order. I used KMC to obtain a list of kmers from a fastq file separated by tab (e.g.; kmer count). From there I have written this python script to attempt to sort the kmers and their counts in descending order:
import csv
with open("6mers.tsv") as kmer_file:
tsv_reader = csv.DictReader(kmer_file, delimiter="\t")
for kmer in tsv_reader:
name = kmer["kmer"]
count = kmer["count"]
# section below attempts to sort the dictionary into descending order
# taken from (https://www.freecodecamp.org/news/sort-dictionary-by-value-in-python/)
sorted_kmers = sorted(kmer.items(), key=lambda x:x[1], reverse=True)
converted_dict = dict(sorted_kmers)
print(converted_dict)
The code above outputs this:
{'kmer': 'TGCCAA', 'count': '2'}
{'kmer': 'TGGACA', 'count': '2'}
{'kmer': 'TGGGAA', 'count': '2'}
{'kmer': 'TGGTAA', 'count': '5'}
{'kmer': 'TGTCAA', 'count': '5'}
{'kmer': 'TGTGAA', 'count': '2'}
{'kmer': 'TTCCAA', 'count': '13'}
{'kmer': 'TTGAAA', 'count': '6'}
{'kmer': 'TTGCAA', 'count': '4'}
{'kmer': 'TTTAAA', 'count': '6'}
Clearly I am creating a separate dictionary for each kmer and it's count - I'm not sure how but I would like a result that looks more like this:
{'TTCCAA', '13'}
{'TTGAAA', '6'}
{'TTTAAA', '6'}
{'TGGTAA', '5'}
{'TGTCAA', '5'}
{'TTGCAA', '4'}
{'TGCCAA', '2'}
{'TGGACA', '2'}
{'TGGGAA', '2'}
{'TGTGAA', '2'}
Can someone help me fix my code so it works?
EDIT:
The .tsv file looks just like this:
TGCCAA 2
TGGACA 2
TGGGAA 2
TGGTAA 5
TGTCAA 5
TGTGAA 2
TTCCAA 13
TTGAAA 6
TTGCAA 4
TTTAAA 6