add test for csv_table and compares

This commit is contained in:
manudiv16 2020-05-20 23:38:42 +02:00
commit 0a2584bd3a
5 changed files with 114 additions and 5 deletions

View 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
1 Accession Release_Date Species Length Geo_Location Host Isolation_Source Collection_Date
2 MT292569 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29780 Spain Homo sapiens 2020-03-09
3 MT292570 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29781 Spain Homo sapiens 2020-03-10
4 MT292571 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29782 Spain Homo sapiens 2020-03-09
5 MT292572 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29783 Spain Homo sapiens 2020-03-10
6 MT292574 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29784 Spain Homo sapiens oronasopharynx 2020-03-02
7 MT292575 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29785 Spain Homo sapiens 2020-03-10
8 MT292576 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29786 Spain Homo sapiens 2020-03-10
9 MT292573 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29787 Spain Homo sapiens 2020-03-09
10 MT292577 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29788 Spain Homo sapiens 2020-03-08
11 MT292578 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29789 Spain Homo sapiens 2020-03-09
12 MT292579 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29790 Spain Homo sapiens 2020-03-09
13 MT292580 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29791 Spain Homo sapiens 2020-02-27
14 MT292581 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29792 Spain Homo sapiens 2020-02-27
15 MT292582 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29792 Spain Homo sapiens 2020-03-06
16 MT256917 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29792 Spain: Valencia Homo sapiens 2020-03-02
17 MT256918 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29792 Spain: Valencia Homo sapiens 2020-03-06
18 MT281577 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29903 China: Anhui, Fuyang Homo sapiens feces 2020-03-10
19 MT291826 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29807 China: Wuhan Homo sapiens lung 2019-12-30
20 MT291827 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29858 China: Wuhan Homo sapiens lung 2019-12-30
21 MT291828 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29858 China: Wuhan Homo sapiens lung 2019-12-30
22 MT291829 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29774 China: Wuhan Homo sapiens lung 2019-12-30
23 MT291830 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29807 China: Wuhan Homo sapiens lung 2019-12-30
24 MT291831 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29872 China: Beijing Homo sapiens oronasopharynx 2020-01-24
25 MT291832 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29828 China: Beijing Homo sapiens oronasopharynx 2020-01-25
26 MT291833 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29821 China: Beijing Homo sapiens oronasopharynx 2020-01-28
27 MT291834 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29865 China: Beijing Homo sapiens oronasopharynx 2020-01-28
28 MT291835 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29834 China: Beijing Homo sapiens oronasopharynx 2020-01-27
29 MT291836 2020-04-06T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29860 China: Beijing Homo sapiens oronasopharynx 2020-01-29
30 MT259226 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29868 China: Hubei, Wuhan Homo sapiens oronasopharynx 2020-01-10
31 MT259227 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29863 China: Hubei, Wuhan Homo sapiens oronasopharynx 2020-01-26
32 MT259228 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29861 China: Hubei, Wuhan Homo sapiens oronasopharynx 2020-01-26
33 MT259229 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29864 China: Hubei, Wuhan Homo sapiens oronasopharynx 2020-01-26
34 MT259230 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29866 China: Hubei, Wuhan Homo sapiens oronasopharynx 2020-01-25
35 MT259231 2020-03-30T00:00:00Z Severe acute respiratory syndrome-related coronavirus 29865 China: Hubei, Wuhan Homo sapiens oronasopharynx 2020-01-25

View file

@ -3,7 +3,9 @@
""" """
from csv import DictReader from csv import DictReader
from typing import List, Union, Dict from typing import List, Union, Dict
from prettytable import PrettyTable from prettytable import PrettyTable
import utils.select import utils.select
@ -34,21 +36,22 @@ class CsvTable:
for row in self.__table: for row in self.__table:
yield row yield row
@property
def table(self):
return self.__table
def __str__(self): def __str__(self):
pretty_table = PrettyTable(list(self.__table[0].keys())) pretty_table = PrettyTable(list(self.__table[0].keys()))
for row in self: for row in self:
pretty_table.add_row(row.values()) pretty_table.add_row(row.values())
return str(pretty_table) return str(pretty_table)
def values(self, column: int) -> List: def values(self, column: str) -> List[str]:
""" """
:param column: :param column:
:return List of values for this column: :return List of values for this column:
""" """
list_values = list() return [row[column] for row in self]
for row in self:
list_values.append(row[column])
return list_values
def group_countries_by_median_length(self): def group_countries_by_median_length(self):
""" """

0
test/__init__.py Normal file
View file

42
test/test_csv_table.py Normal file
View 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
View 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))