Documentation Pandas [https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html]
Lecture des fichiers binaires SupTable1.xlsx SupTable2.xlsx avec pandas.read_csv.
Contient plusieurs tables, dont l'entête qui ne nous interesse pas.
Pour se débarasser de l'entête : .find_all(bordercolordark='white')
Pour avoir seulement les données sans le nom des colonnes : .findAll(valign='top')
Quand on sort toute les objets tables des fichiers HTML, on peut juste sortir jusqu'à la ligne "organism".
C'est causé par une erreur dans le script HTML, à la fin de la ligne il y a deux balises pour fermer "a"
# script python qui génère un script bash pour retirer la balise de trop
python3 iceberg_fixed.py
sh iceberg_fixed.shplusieurs section, pas égal, pas la même information ni les mêmes îlots.
choix des sections les plus pertinantes pour couvrir les colonnes d'intérêt.
- accession_ids
- accessions
- id
- acc_id
- start_stop
- accession
- tmrna_id
- bioprojects
- false_positives
- high_phylogeny
- island
- Island
- Bacteria_nickname
- tRNA
- Portion
- Int_Subfam
- GC_Content
- IR_Version
- Island_Genome_L
- Island_Genome_R
- Orientation
- tRNA_L
- tRNA_R
- Dupli_L
- Dupli_R
- Frag_L
- Frag_R
- Damage_L
- Damage_R
- Extend
- Mismatch
- Index_Point
- Comment
- Markup
- nc_number
- ftp_folder
- island_annotation
- island_markup
- island_search
- island_sequence
- island
- sequence
- islander
- island
- bact_nickname
- tRNA
- portion
- int_family
- gc_content
- ir_version
- island_genome_l
- island_genome_r
- orientation
- tRNA_L
- tRNA_R
- Dupli_L
- Dupli_R
- Frag_L
- Frag_R
- Mismatch
- IndexPoint
- nc
- lineage
- strain
- island_index
- islander_supplemental
- literature_islands
- litterature_name
- citation
- accession
- left
- right
- island
- phast_overlap
- phylogeny
- potential_fragments
- potential_integrases
- project_acc
- smpb
- smpb_nicknames
- tandem
- tmrna
- tmrna_lineage
- tmrna_nicknames
- trna
- trna_aa
- unique_tmrna
- usage_monitor
- Google Scholar [https://github.com/ckreibich/scholar.py ]
"accession_nb" --csv
(en moyenne 10 par # d'accession)
"accession_nb island" --csv
"reference" --csvNe fonctionne pas, aucun résultat ou trop vague.
- eDirect Documentations
#Installation de EDirect
cd ~
/bin/bash
perl -MNet::FTP -e \
'$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1);
$ftp->login; $ftp->binary;
$ftp->get("/entrez/entrezdirect/edirect.tar.gz");'
gunzip -c edirect.tar.gz | tar xf -
rm edirect.tar.gz
builtin exit
export PATH=${PATH}:$HOME/edirect >& /dev/null || setenv PATH "${PATH}:$HOME/edirect"
./edirect/setup.sh
echo "export PATH=\${PATH}:/home/local/USHERBROOKE/whif3801/edirect" >> $HOME/.bashrcCreation d'un script bash pour executer des recherches avec EDirect avec des querys sélectionnés.
# Exemple de recherche avec eDirect
esearch -db pubmed -query "Reen et al., 2006 Nat Rev Microbiol" -sort Relevance |efetch -format medline| grep -wf pattern
# script (pas à jour)
python3 references.py -p islandpick.pickle -q 'organism' 'start' 'end' -o 'output/references.organims_position_island' -key 'island'
Beaucoup de résultats, peut⁻être pas assez précis pour identifier le bon article
Creation d'un script bash pour executer des recherches avec EDirect avec des querys sélectionnés.
# Exemple de recherche avec eDirect
esearch -db Nucleotide -query "NC_000919.1" |efetch -format fasta > genome/sequence.NC_000919.1.fasta
# script
python3 sequences.py -i list_of_accession_number
sh get_genomes.sh
# Validation des génomes téléchargés
grep ">" genomes/* >validation
sed 's/.fasta:>/\t/g' validation | sed 's%genomes/sequence.%%g'| sed 's/ /\t/g'|cut -f1,2| awk '$1!=$2' |wc -l
Plusieurs séquences avec mauvais # d'accession dans les fichiers fasta de certain génome
Imprimer les lignes contenants ">" et leur # de ligne
Identifier le bon génome manuellement
Sélectionner les lignes désirées
grep -n genomes/sequence.NC_006840.2.fasta
sed -n '311259,352653p' genomes/sequence.NC_006840.2.fasta > genomes_fix/sequence.NC_006840.2.fasta
mv genomes_fix/* genomes/.Dans les fichiers fasta, le génome est coupé à chaque changement de ligne
2 options trouvés
## Option 1 : sed & cut
# en ligne de commande
grep -v ">" genome.fasta |sed ':a;N;$!ba;s/\n//g' |cut -c 271673-289384 >genome_island.fasta
# ou dans un script python
head = os.system(grep ">" genome_file).read()
sequence = os.system(grep -v ">" genome_file |sed ':a;N;$!ba;s/\n//g' |cut -c 271673-289384).read()
## Option 2 : SeqIO
from Bio import SeqIO
genome = SeqIO.read(genome_file, "fasta")
sequence = genome.seq[ (271673-basepairs):(289384+basepairs) ]SeqIO beaucoup plus rapide ! (6 min vs 17 min pour sed & cut )
# Obtenir les noms des organismes liés aux numéros d'accession dans les fasta.
grep ">" genomes/* > header
sed 's/.fasta:>/\t/g' header |cut -f2|awk '{print $1"\t"$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16}' > index.acc_num.txt
- déplacer les lignes manquant de l'information dans autre fichier
- modifier les numéros d'accession avec ou sans .1, .2 ... (solution temporaire dans le script parsing.py ligne 27-30)
- ajouter les génomes manquants (python3 sequences.py -i genomes_to_add.txt && sh get_sequences.sh )
- effectuer des blast pour comparer les séquences des bases de données avec celle ajouté des fasta (sequences_validation.txt)
- ajouter les références