mirror of
https://codeberg.org/JasterV/sarscov-hierarchy.git
synced 2026-04-26 18:10:08 +00:00
add test for csv_table and compares
This commit is contained in:
parent
313b1daf49
commit
0a2584bd3a
5 changed files with 114 additions and 5 deletions
35
data/data_test/sequences.csv
Normal file
35
data/data_test/sequences.csv
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
Accession,Release_Date,Species,Length,Geo_Location,Host,Isolation_Source,Collection_Date
|
||||
MT292569,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29780,Spain,Homo sapiens,,2020-03-09
|
||||
MT292570,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29781,Spain,Homo sapiens,,2020-03-10
|
||||
MT292571,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29782,Spain,Homo sapiens,,2020-03-09
|
||||
MT292572,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29783,Spain,Homo sapiens,,2020-03-10
|
||||
MT292574,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29784,Spain,Homo sapiens,oronasopharynx,2020-03-02
|
||||
MT292575,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29785,Spain,Homo sapiens,,2020-03-10
|
||||
MT292576,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29786,Spain,Homo sapiens,,2020-03-10
|
||||
MT292573,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29787,Spain,Homo sapiens,,2020-03-09
|
||||
MT292577,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29788,Spain,Homo sapiens,,2020-03-08
|
||||
MT292578,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29789,Spain,Homo sapiens,,2020-03-09
|
||||
MT292579,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29790,Spain,Homo sapiens,,2020-03-09
|
||||
MT292580,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29791,Spain,Homo sapiens,,2020-02-27
|
||||
MT292581,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29792,Spain,Homo sapiens,,2020-02-27
|
||||
MT292582,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29792,Spain,Homo sapiens,,2020-03-06
|
||||
MT256917,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29792,Spain: Valencia,Homo sapiens,,2020-03-02
|
||||
MT256918,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29792,Spain: Valencia,Homo sapiens,,2020-03-06
|
||||
MT281577,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29903,"China: Anhui, Fuyang",Homo sapiens,feces,2020-03-10
|
||||
MT291826,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29807,China: Wuhan,Homo sapiens,lung,2019-12-30
|
||||
MT291827,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29858,China: Wuhan,Homo sapiens,lung,2019-12-30
|
||||
MT291828,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29858,China: Wuhan,Homo sapiens,lung,2019-12-30
|
||||
MT291829,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29774,China: Wuhan,Homo sapiens,lung,2019-12-30
|
||||
MT291830,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29807,China: Wuhan,Homo sapiens,lung,2019-12-30
|
||||
MT291831,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29872,China: Beijing,Homo sapiens,oronasopharynx,2020-01-24
|
||||
MT291832,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29828,China: Beijing,Homo sapiens,oronasopharynx,2020-01-25
|
||||
MT291833,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29821,China: Beijing,Homo sapiens,oronasopharynx,2020-01-28
|
||||
MT291834,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29865,China: Beijing,Homo sapiens,oronasopharynx,2020-01-28
|
||||
MT291835,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29834,China: Beijing,Homo sapiens,oronasopharynx,2020-01-27
|
||||
MT291836,2020-04-06T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29860,China: Beijing,Homo sapiens,oronasopharynx,2020-01-29
|
||||
MT259226,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29868,"China: Hubei, Wuhan",Homo sapiens,oronasopharynx,2020-01-10
|
||||
MT259227,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29863,"China: Hubei, Wuhan",Homo sapiens,oronasopharynx,2020-01-26
|
||||
MT259228,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29861,"China: Hubei, Wuhan",Homo sapiens,oronasopharynx,2020-01-26
|
||||
MT259229,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29864,"China: Hubei, Wuhan",Homo sapiens,oronasopharynx,2020-01-26
|
||||
MT259230,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29866,"China: Hubei, Wuhan",Homo sapiens,oronasopharynx,2020-01-25
|
||||
MT259231,2020-03-30T00:00:00Z,Severe acute respiratory syndrome-related coronavirus,29865,"China: Hubei, Wuhan",Homo sapiens,oronasopharynx,2020-01-25
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
"""
|
||||
from csv import DictReader
|
||||
from typing import List, Union, Dict
|
||||
|
||||
from prettytable import PrettyTable
|
||||
|
||||
import utils.select
|
||||
|
||||
|
||||
|
|
@ -34,21 +36,22 @@ class CsvTable:
|
|||
for row in self.__table:
|
||||
yield row
|
||||
|
||||
@property
|
||||
def table(self):
|
||||
return self.__table
|
||||
|
||||
def __str__(self):
|
||||
pretty_table = PrettyTable(list(self.__table[0].keys()))
|
||||
for row in self:
|
||||
pretty_table.add_row(row.values())
|
||||
return str(pretty_table)
|
||||
|
||||
def values(self, column: int) -> List:
|
||||
def values(self, column: str) -> List[str]:
|
||||
"""
|
||||
:param column:
|
||||
:return List of values for this column:
|
||||
"""
|
||||
list_values = list()
|
||||
for row in self:
|
||||
list_values.append(row[column])
|
||||
return list_values
|
||||
return [row[column] for row in self]
|
||||
|
||||
def group_countries_by_median_length(self):
|
||||
"""
|
||||
|
|
|
|||
0
test/__init__.py
Normal file
0
test/__init__.py
Normal file
42
test/test_csv_table.py
Normal file
42
test/test_csv_table.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
from unittest import TestCase
|
||||
|
||||
from src.python.utils.csv_table import CsvTable
|
||||
|
||||
|
||||
class TestCsvTable(TestCase):
|
||||
def test_values(self):
|
||||
path = "../data/data_test/sequences.csv"
|
||||
accession = ["MT292569", "MT292570", "MT292571", "MT292572", "MT292574",
|
||||
"MT292575", "MT292576", "MT292573", "MT292577", "MT292578",
|
||||
"MT292579", "MT292580", "MT292581", "MT292582", "MT256917",
|
||||
"MT256918", "MT281577", "MT291826", "MT291827", "MT291828",
|
||||
"MT291829", "MT291830", "MT291831", "MT291832", "MT291833",
|
||||
"MT291834", "MT291835", "MT291836", "MT259226", "MT259227",
|
||||
"MT259228", "MT259229", "MT259230", "MT259231"]
|
||||
csv_table = CsvTable(path)
|
||||
self.assertTrue(all([x in accession for x in csv_table.values("Accession")]))
|
||||
|
||||
def test_group_countries_by_median_length(self):
|
||||
path = "../data/data_test/sequences.csv"
|
||||
row_china = {"Accession": "MT259228",
|
||||
"Release_Date": "2020-03-30T00:00:00Z",
|
||||
"Species": "Severe acute respiratory syndrome-related coronavirus",
|
||||
"Length": "29861",
|
||||
"Geo_Location": "China",
|
||||
"Host": "Homo sapiens",
|
||||
"Isolation_Source": "oronasopharynx",
|
||||
"Collection_Date": "2020-01-26"}
|
||||
row_spain = {"Accession": "MT292577",
|
||||
"Release_Date": "2020-04-06T00:00:00Z",
|
||||
"Species": "Severe acute respiratory syndrome-related coronavirus",
|
||||
"Length": "29788",
|
||||
"Geo_Location": "Spain",
|
||||
"Host": "Homo sapiens",
|
||||
"Isolation_Source": "",
|
||||
"Collection_Date": "2020-03-08"}
|
||||
|
||||
list_cases = [row_spain, row_china]
|
||||
list_cases_test = CsvTable(list_cases)
|
||||
csv_table = CsvTable(path)
|
||||
list_csv = csv_table.group_countries_by_median_length()
|
||||
self.assertTrue(all(x in list_csv.table for x in list_cases_test.table))
|
||||
29
test/test_fasta_map.py
Normal file
29
test/test_fasta_map.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
from unittest import TestCase
|
||||
|
||||
import src.python.libs.seqalign as sq
|
||||
|
||||
|
||||
class TestFastaMap(TestCase):
|
||||
|
||||
def test_sequence_align(self):
|
||||
"""
|
||||
Use https://n9.cl/2qcq to
|
||||
check the distance.
|
||||
"""
|
||||
seq1 = "AATCG"
|
||||
seq2 = "AACG"
|
||||
expected = 2
|
||||
self.assertEqual(expected, sq.compare_samples(seq1, seq2))
|
||||
seq1 = "JDSLFA"
|
||||
seq2 = "JALFDSA"
|
||||
expected = 6
|
||||
self.assertEqual(expected, sq.compare_samples(seq1, seq2))
|
||||
seq1 = "DSAJKJFHJAKHDIOUZVJCXMVCZIOIUOWUQRIEUWQIPIDSFSDKZXV"
|
||||
seq2 = "FKSJAFKJIOTIGHLKJVMCXXZCMVLJASIRUWQOIUTPQWURIIPOQ"
|
||||
expected = 46
|
||||
self.assertEqual(expected, sq.compare_samples(seq1, seq2))
|
||||
seq1 = "KFDSKAJFJPOTIPWQUIMXZMVMZXBVM"
|
||||
seq2 = "FKDSPOIQTUITYSKZMV"
|
||||
expected = 31
|
||||
self.assertEqual(expected, sq.compare_samples(seq1, seq2))
|
||||
|
||||
Loading…
Reference in a new issue