Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add script to check update. #30

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions check/check.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#!/usr/local/bin/python3
# coding: utf-8

############################
# Import
############################
import os
import sys
import argparse
import subprocess
from subprocess import Popen, PIPE
import shutil

############################
# Global Variables
############################

############################
# Functions
############################


def check_file(file):
"""
Check if a file exist and is readable
"""
if not os.path.isfile(file) or not os.access(file, os.R_OK):
print("the file " + file + " is missing or not readable.\n")
PARSER.print_help()
sys.exit(1)

def List_to_dic(filename):
"""
Send a file (three columns : sample, phylogroup and mashgroup with header) to a list
"""

dico={}
with open(filename, "r") as f:
f.readline()
for line in f:
try:
sample, phylo, mash=line.strip().split("\t")
dico[sample]={}
dico[sample]['phylo']=phylo
dico[sample]['mash']=mash
except ValueError:
pass

return dico

def Html_to_dic(filename):
"""
Send a file (three columns : sample, phylogroup and mashgroup with header) to a list
"""

dico={}
with open(filename, "r", encoding="utf-8") as f:
for line in f:
if '<tr class="odd">' in line or '<tr class="even">' in line:
sample=f.readline().strip()
sample_tmp=sample.replace('<td align="left">', '')
sample=sample_tmp.replace('</td>', '')
f.readline()
f.readline()
phylo=f.readline().strip()
phylo_tmp=phylo.replace('<td align="left">', '')
phylo=phylo_tmp.replace('</td>', '')
mash=f.readline().strip()
mash_tmp=mash.replace('<td align="left">', '')
mash=mash_tmp.replace('</td>', '')
dico[sample]={}
dico[sample]['phylo']=phylo
dico[sample]['mash']=mash

return dico

def comparaison(dico_old, dico_new):

with open('check.log', "w") as w:

for sample in dico_old.keys():
if dico_old[sample]['phylo'] != dico_new[sample]['phylo'] or dico_old[sample]['mash'] != dico_new[sample]['mash']:
sentence='Error with '+ sample
sentence+="\tWaited :" + dico_old[sample]['phylo'] + '/' + dico_old[sample]['mash']
sentence+="\tNew : " + dico_new[sample]['phylo'] + '/' + dico_new[sample]['mash']

print(sentence)
w.write(sentence+"\n")




############################
# Main
############################
if __name__ == "__main__":

fastafile='fastafile'

# Clermontyping
if os.path.isdir('res_check'):
abso_dir = os.path.abspath('res_check')
shutil.rmtree(abso_dir)
cmd = ["../clermonTyping.sh", "--fastafile", fastafile, "--name", "res_check"]
subprocess.call(cmd)

##
inputList='ref_resultat'
check_file(inputList)
res_waited=List_to_dic(inputList)

inputHtml='res_check/res_check.html'
check_file(inputHtml)
res_new=Html_to_dic(inputHtml)

print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')
comparaison(res_waited, res_new)
if os.stat('check.log').st_size == 0:
print("Congratulation! Database is updated succesfull.")
else:
print("ERROR!!! Look at the check.log file.")






49 changes: 49 additions & 0 deletions check/fastafile
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
db/042.fasta
db/101-1.fasta
db/327-20.fasta
db/536.fasta
db/53638.fasta
db/55989.fasta
db/APECO78.fasta
db/ATCC35469T.fasta
db/B1147.fasta
db/B156.fasta
db/B253.fasta
db/B49.fasta
db/B646.fasta
db/B691.fasta
db/B7A.fasta
db/CFT073.fasta
db/E1118.fasta
db/E1426.fasta
db/E1492.fasta
db/E2348-69.fasta
db/E24377A.fasta
db/ECOR01.fasta
db/ECOR31.fasta
db/ECOR37.fasta
db/ECOR42.fasta
db/ECOR44.fasta
db/ECOR46.fasta
db/ECOR47.fasta
db/ESC_BA9053AA_AS.fasta
db/ESC_CA3818AA_AS.fasta
db/ESC_FA7277AA_AS.fasta
db/ESC_GA0630AA_AS.fasta
db/ESC_GA5165AA_AS.fasta
db/ESC_NA3019AA_AS.fasta
db/ESC_NA8746AA_AS.fasta
db/ESC_OA1838AA_AS.fasta
db/H442.fasta
db/H605.fasta
db/H95.fasta
db/IAI17.fasta
db/IAI18.fasta
db/IAI24.fasta
db/IAI32.fasta
db/IAI39.fasta
db/IAI41.fasta
db/IAI42.fasta
db/ROAR8.fasta
db/SMS35.fasta
db/TA004.fasta
51 changes: 51 additions & 0 deletions check/ref_resultat
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
sample Clermontyping Mash
E1492.fasta cladeI cladeI
H442.fasta cladeI cladeI
IAI32.fasta cladeI cladeI
B1147.fasta cladeII cladeII
ESC_NA3019AA_AS.fasta cladeII cladeII
ESC_OA1838AA_AS.fasta cladeII cladeII
ESC_GA5165AA_AS.fasta cladeIII cladeIII
TA004.fasta cladeIII cladeIII
ESC_BA9053AA_AS.fasta cladeIII cladeIII
B49.fasta cladeIV cladeIV
ESC_FA7277AA_AS.fasta cladeIV cladeIV
H605.fasta cladeIV cladeIV
B646.fasta cladeV cladeV
E1118.fasta cladeV cladeV
ESC_CA3818AA_AS.fasta cladeV cladeV
53638.fasta A A
101-1.fasta A A
ECOR01.fasta A A
B156.fasta albertii albertii
ESC_GA0630AA_AS.fasta albertii albertii
ESC_NA8746AA_AS.fasta albertii albertii
55989.fasta B1 B1
B7A.fasta B1 B1
E24377A.fasta B1 B1
536.fasta B2 B2
CFT073.fasta B2 B2
E2348-69.fasta B2 B2
APECO78.fasta C C
IAI18.fasta C C
IAI41.fasta C C
042.fasta D D
ECOR46.fasta D D
ECOR47.fasta D D
IAI17.fasta D A
ECOR31.fasta E E
ECOR37.fasta E E
ECOR42.fasta E E
ECOR44.fasta E D
IAI24.fasta E D
IAI39.fasta F F
SMS35.fasta F F
ROAR8.fasta F F
ATCC35469T.fasta fergusonii fergusonii
B253.fasta fergusonii fergusonii
B691.fasta fergusonii fergusonii
327-20.fasta G G
E1426.fasta G G
H95.fasta G G
IAI42.fasta Unknown C

4 changes: 2 additions & 2 deletions clermonTyping.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
# 4] Launch in silicco PCR for getting phylogroup
# 5] Reportings tools
#
# Current version : 20.03 (Mar. 2020)
version="Clermont Typing Current version : 20.03 (Mar. 2020)"
# Current version : 20.08 (Aug. 2020)
version="Clermont Typing Current version : 20.08 (Aug. 2020)"

# Contact: antoine.bridier-nahmias@inserm.fr

Expand Down