Compare commits
14 Commits
ecopcr_v0.
...
master
Author | SHA1 | Date | |
---|---|---|---|
40f2972bda | |||
7db34d77a4 | |||
3503f66520 | |||
9deb30a8c4 | |||
c4321036be | |||
a92a7fa070 | |||
bd1db764d4 | |||
f0cca648ea | |||
573bd5bad7 | |||
17387dae8d | |||
18583c4d2e | |||
2dd4a217f1 | |||
9a0d77535f | |||
b09bd1455b |
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,8 +1,12 @@
|
|||||||
|
/.gitignore
|
||||||
|
/.cproject
|
||||||
|
/.project
|
||||||
|
|
||||||
# /src/
|
# /src/
|
||||||
/src/ecoPCR
|
/src/ecoPCR
|
||||||
/src/ecofind
|
/src/ecofind
|
||||||
/src/*.P
|
/src/*.P
|
||||||
|
/src/*.o
|
||||||
/src/ecogrep
|
/src/ecogrep
|
||||||
|
|
||||||
# /src/libapat/
|
# /src/libapat/
|
||||||
@ -14,3 +18,4 @@
|
|||||||
|
|
||||||
# /src/libthermo/
|
# /src/libthermo/
|
||||||
/src/libthermo/*.P
|
/src/libthermo/*.P
|
||||||
|
|
||||||
|
549
LICENSE
Normal file
549
LICENSE
Normal file
@ -0,0 +1,549 @@
|
|||||||
|
|
||||||
|
CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
|
||||||
|
|
||||||
|
Version 2.1 du 2013-06-21
|
||||||
|
|
||||||
|
|
||||||
|
Avertissement
|
||||||
|
|
||||||
|
Ce contrat est une licence de logiciel libre issue d'une concertation
|
||||||
|
entre ses auteurs afin que le respect de deux grands principes préside à
|
||||||
|
sa rédaction:
|
||||||
|
|
||||||
|
* d'une part, le respect des principes de diffusion des logiciels
|
||||||
|
libres: accès au code source, droits étendus conférés aux utilisateurs,
|
||||||
|
* d'autre part, la désignation d'un droit applicable, le droit
|
||||||
|
français, auquel elle est conforme, tant au regard du droit de la
|
||||||
|
responsabilité civile que du droit de la propriété intellectuelle et
|
||||||
|
de la protection qu'il offre aux auteurs et titulaires des droits
|
||||||
|
patrimoniaux sur un logiciel.
|
||||||
|
|
||||||
|
Les auteurs de la licence CeCILL (Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
|
||||||
|
sont:
|
||||||
|
|
||||||
|
Commissariat à l'énergie atomique et aux énergies alternatives - CEA,
|
||||||
|
établissement public de recherche à caractère scientifique, technique et
|
||||||
|
industriel, dont le siège est situé 25 rue Leblanc, immeuble Le Ponant
|
||||||
|
D, 75015 Paris.
|
||||||
|
|
||||||
|
Centre National de la Recherche Scientifique - CNRS, établissement
|
||||||
|
public à caractère scientifique et technologique, dont le siège est
|
||||||
|
situé 3 rue Michel-Ange, 75794 Paris cedex 16.
|
||||||
|
|
||||||
|
Institut National de Recherche en Informatique et en Automatique -
|
||||||
|
Inria, établissement public à caractère scientifique et technologique,
|
||||||
|
dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
|
||||||
|
Le Chesnay cedex.
|
||||||
|
|
||||||
|
|
||||||
|
Préambule
|
||||||
|
|
||||||
|
Ce contrat est une licence de logiciel libre dont l'objectif est de
|
||||||
|
conférer aux utilisateurs la liberté de modification et de
|
||||||
|
redistribution du logiciel régi par cette licence dans le cadre d'un
|
||||||
|
modèle de diffusion en logiciel libre.
|
||||||
|
|
||||||
|
L'exercice de ces libertés est assorti de certains devoirs à la charge
|
||||||
|
des utilisateurs afin de préserver ce statut au cours des
|
||||||
|
redistributions ultérieures.
|
||||||
|
|
||||||
|
L'accessibilité au code source et les droits de copie, de modification
|
||||||
|
et de redistribution qui en découlent ont pour contrepartie de n'offrir
|
||||||
|
aux utilisateurs qu'une garantie limitée et de ne faire peser sur
|
||||||
|
l'auteur du logiciel, le titulaire des droits patrimoniaux et les
|
||||||
|
concédants successifs qu'une responsabilité restreinte.
|
||||||
|
|
||||||
|
A cet égard l'attention de l'utilisateur est attirée sur les risques
|
||||||
|
associés au chargement, à l'utilisation, à la modification et/ou au
|
||||||
|
développement et à la reproduction du logiciel par l'utilisateur étant
|
||||||
|
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
|
||||||
|
manipuler et qui le réserve donc à des développeurs ou des
|
||||||
|
professionnels avertis possédant des connaissances informatiques
|
||||||
|
approfondies. Les utilisateurs sont donc invités à charger et tester
|
||||||
|
l'adéquation du logiciel à leurs besoins dans des conditions permettant
|
||||||
|
d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
|
||||||
|
généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
|
||||||
|
sécurité. Ce contrat peut être reproduit et diffusé librement, sous
|
||||||
|
réserve de le conserver en l'état, sans ajout ni suppression de clauses.
|
||||||
|
|
||||||
|
Ce contrat est susceptible de s'appliquer à tout logiciel dont le
|
||||||
|
titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
|
||||||
|
dispositions qu'il contient.
|
||||||
|
|
||||||
|
Une liste de questions fréquemment posées se trouve sur le site web
|
||||||
|
officiel de la famille des licences CeCILL
|
||||||
|
(http://www.cecill.info/index.fr.html) pour toute clarification qui
|
||||||
|
serait nécessaire.
|
||||||
|
|
||||||
|
|
||||||
|
Article 1 - DEFINITIONS
|
||||||
|
|
||||||
|
Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
|
||||||
|
lettre capitale, auront la signification suivante:
|
||||||
|
|
||||||
|
Contrat: désigne le présent contrat de licence, ses éventuelles versions
|
||||||
|
postérieures et annexes.
|
||||||
|
|
||||||
|
Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
|
||||||
|
Source et le cas échéant sa documentation, dans leur état au moment de
|
||||||
|
l'acceptation du Contrat par le Licencié.
|
||||||
|
|
||||||
|
Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
|
||||||
|
éventuellement de Code Objet et le cas échéant sa documentation, dans
|
||||||
|
leur état au moment de leur première diffusion sous les termes du Contrat.
|
||||||
|
|
||||||
|
Logiciel Modifié: désigne le Logiciel modifié par au moins une
|
||||||
|
Contribution.
|
||||||
|
|
||||||
|
Code Source: désigne l'ensemble des instructions et des lignes de
|
||||||
|
programme du Logiciel et auquel l'accès est nécessaire en vue de
|
||||||
|
modifier le Logiciel.
|
||||||
|
|
||||||
|
Code Objet: désigne les fichiers binaires issus de la compilation du
|
||||||
|
Code Source.
|
||||||
|
|
||||||
|
Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
|
||||||
|
sur le Logiciel Initial.
|
||||||
|
|
||||||
|
Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
|
||||||
|
Contrat.
|
||||||
|
|
||||||
|
Contributeur: désigne le Licencié auteur d'au moins une Contribution.
|
||||||
|
|
||||||
|
Concédant: désigne le Titulaire ou toute personne physique ou morale
|
||||||
|
distribuant le Logiciel sous le Contrat.
|
||||||
|
|
||||||
|
Contribution: désigne l'ensemble des modifications, corrections,
|
||||||
|
traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
|
||||||
|
le Logiciel par tout Contributeur, ainsi que tout Module Interne.
|
||||||
|
|
||||||
|
Module: désigne un ensemble de fichiers sources y compris leur
|
||||||
|
documentation qui permet de réaliser des fonctionnalités ou services
|
||||||
|
supplémentaires à ceux fournis par le Logiciel.
|
||||||
|
|
||||||
|
Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
|
||||||
|
Module et le Logiciel s'exécutent dans des espaces d'adressage
|
||||||
|
différents, l'un appelant l'autre au moment de leur exécution.
|
||||||
|
|
||||||
|
Module Interne: désigne tout Module lié au Logiciel de telle sorte
|
||||||
|
qu'ils s'exécutent dans le même espace d'adressage.
|
||||||
|
|
||||||
|
GNU GPL: désigne la GNU General Public License dans sa version 2 ou
|
||||||
|
toute version ultérieure, telle que publiée par Free Software Foundation
|
||||||
|
Inc.
|
||||||
|
|
||||||
|
GNU Affero GPL: désigne la GNU Affero General Public License dans sa
|
||||||
|
version 3 ou toute version ultérieure, telle que publiée par Free
|
||||||
|
Software Foundation Inc.
|
||||||
|
|
||||||
|
EUPL: désigne la Licence Publique de l'Union européenne dans sa version
|
||||||
|
1.1 ou toute version ultérieure, telle que publiée par la Commission
|
||||||
|
Européenne.
|
||||||
|
|
||||||
|
Parties: désigne collectivement le Licencié et le Concédant.
|
||||||
|
|
||||||
|
Ces termes s'entendent au singulier comme au pluriel.
|
||||||
|
|
||||||
|
|
||||||
|
Article 2 - OBJET
|
||||||
|
|
||||||
|
Le Contrat a pour objet la concession par le Concédant au Licencié d'une
|
||||||
|
licence non exclusive, cessible et mondiale du Logiciel telle que
|
||||||
|
définie ci-après à l'article 5 <#etendue> pour toute la durée de
|
||||||
|
protection des droits portant sur ce Logiciel.
|
||||||
|
|
||||||
|
|
||||||
|
Article 3 - ACCEPTATION
|
||||||
|
|
||||||
|
3.1 L'acceptation par le Licencié des termes du Contrat est réputée
|
||||||
|
acquise du fait du premier des faits suivants:
|
||||||
|
|
||||||
|
* (i) le chargement du Logiciel par tout moyen notamment par
|
||||||
|
téléchargement à partir d'un serveur distant ou par chargement à
|
||||||
|
partir d'un support physique;
|
||||||
|
* (ii) le premier exercice par le Licencié de l'un quelconque des
|
||||||
|
droits concédés par le Contrat.
|
||||||
|
|
||||||
|
3.2 Un exemplaire du Contrat, contenant notamment un avertissement
|
||||||
|
relatif aux spécificités du Logiciel, à la restriction de garantie et à
|
||||||
|
la limitation à un usage par des utilisateurs expérimentés a été mis à
|
||||||
|
disposition du Licencié préalablement à son acceptation telle que
|
||||||
|
définie à l'article 3.1 <#acceptation-acquise> ci dessus et le Licencié
|
||||||
|
reconnaît en avoir pris connaissance.
|
||||||
|
|
||||||
|
|
||||||
|
Article 4 - ENTREE EN VIGUEUR ET DUREE
|
||||||
|
|
||||||
|
|
||||||
|
4.1 ENTREE EN VIGUEUR
|
||||||
|
|
||||||
|
Le Contrat entre en vigueur à la date de son acceptation par le Licencié
|
||||||
|
telle que définie en 3.1 <#acceptation-acquise>.
|
||||||
|
|
||||||
|
|
||||||
|
4.2 DUREE
|
||||||
|
|
||||||
|
Le Contrat produira ses effets pendant toute la durée légale de
|
||||||
|
protection des droits patrimoniaux portant sur le Logiciel.
|
||||||
|
|
||||||
|
|
||||||
|
Article 5 - ETENDUE DES DROITS CONCEDES
|
||||||
|
|
||||||
|
Le Concédant concède au Licencié, qui accepte, les droits suivants sur
|
||||||
|
le Logiciel pour toutes destinations et pour la durée du Contrat dans
|
||||||
|
les conditions ci-après détaillées.
|
||||||
|
|
||||||
|
Par ailleurs, si le Concédant détient ou venait à détenir un ou
|
||||||
|
plusieurs brevets d'invention protégeant tout ou partie des
|
||||||
|
fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
|
||||||
|
opposer les éventuels droits conférés par ces brevets aux Licenciés
|
||||||
|
successifs qui utiliseraient, exploiteraient ou modifieraient le
|
||||||
|
Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
|
||||||
|
faire reprendre les obligations du présent alinéa aux cessionnaires.
|
||||||
|
|
||||||
|
|
||||||
|
5.1 DROIT D'UTILISATION
|
||||||
|
|
||||||
|
Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
|
||||||
|
aux domaines d'application, étant ci-après précisé que cela comporte:
|
||||||
|
|
||||||
|
1.
|
||||||
|
|
||||||
|
la reproduction permanente ou provisoire du Logiciel en tout ou
|
||||||
|
partie par tout moyen et sous toute forme.
|
||||||
|
|
||||||
|
2.
|
||||||
|
|
||||||
|
le chargement, l'affichage, l'exécution, ou le stockage du Logiciel
|
||||||
|
sur tout support.
|
||||||
|
|
||||||
|
3.
|
||||||
|
|
||||||
|
la possibilité d'en observer, d'en étudier, ou d'en tester le
|
||||||
|
fonctionnement afin de déterminer les idées et principes qui sont à
|
||||||
|
la base de n'importe quel élément de ce Logiciel; et ceci, lorsque
|
||||||
|
le Licencié effectue toute opération de chargement, d'affichage,
|
||||||
|
d'exécution, de transmission ou de stockage du Logiciel qu'il est en
|
||||||
|
droit d'effectuer en vertu du Contrat.
|
||||||
|
|
||||||
|
|
||||||
|
5.2 DROIT D'APPORTER DES CONTRIBUTIONS
|
||||||
|
|
||||||
|
Le droit d'apporter des Contributions comporte le droit de traduire,
|
||||||
|
d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
|
||||||
|
et le droit de reproduire le logiciel en résultant.
|
||||||
|
|
||||||
|
Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
|
||||||
|
réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
|
||||||
|
cette Contribution et la date de création de celle-ci.
|
||||||
|
|
||||||
|
|
||||||
|
5.3 DROIT DE DISTRIBUTION
|
||||||
|
|
||||||
|
Le droit de distribution comporte notamment le droit de diffuser, de
|
||||||
|
transmettre et de communiquer le Logiciel au public sur tout support et
|
||||||
|
par tout moyen ainsi que le droit de mettre sur le marché à titre
|
||||||
|
onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
|
||||||
|
|
||||||
|
Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
|
||||||
|
non, à des tiers dans les conditions ci-après détaillées.
|
||||||
|
|
||||||
|
|
||||||
|
5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
|
||||||
|
|
||||||
|
Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
|
||||||
|
sous forme de Code Source ou de Code Objet, à condition que cette
|
||||||
|
distribution respecte les dispositions du Contrat dans leur totalité et
|
||||||
|
soit accompagnée:
|
||||||
|
|
||||||
|
1.
|
||||||
|
|
||||||
|
d'un exemplaire du Contrat,
|
||||||
|
|
||||||
|
2.
|
||||||
|
|
||||||
|
d'un avertissement relatif à la restriction de garantie et de
|
||||||
|
responsabilité du Concédant telle que prévue aux articles 8
|
||||||
|
<#responsabilite> et 9 <#garantie>,
|
||||||
|
|
||||||
|
et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
|
||||||
|
le Licencié permette un accès effectif au Code Source complet du
|
||||||
|
Logiciel pour une durée d'au moins 3 ans à compter de la distribution du
|
||||||
|
logiciel, étant entendu que le coût additionnel d'acquisition du Code
|
||||||
|
Source ne devra pas excéder le simple coût de transfert des données.
|
||||||
|
|
||||||
|
|
||||||
|
5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
|
||||||
|
|
||||||
|
Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
|
||||||
|
de distribution du Logiciel Modifié en résultant sont alors soumises à
|
||||||
|
l'intégralité des dispositions du Contrat.
|
||||||
|
|
||||||
|
Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
|
||||||
|
code source ou de code objet, à condition que cette distribution
|
||||||
|
respecte les dispositions du Contrat dans leur totalité et soit
|
||||||
|
accompagnée:
|
||||||
|
|
||||||
|
1.
|
||||||
|
|
||||||
|
d'un exemplaire du Contrat,
|
||||||
|
|
||||||
|
2.
|
||||||
|
|
||||||
|
d'un avertissement relatif à la restriction de garantie et de
|
||||||
|
responsabilité du Concédant telle que prévue aux articles 8
|
||||||
|
<#responsabilite> et 9 <#garantie>,
|
||||||
|
|
||||||
|
et, dans le cas où seul le code objet du Logiciel Modifié est redistribué,
|
||||||
|
|
||||||
|
3.
|
||||||
|
|
||||||
|
d'une note précisant les conditions d'accès effectif au code source
|
||||||
|
complet du Logiciel Modifié, pendant une période d'au moins 3 ans à
|
||||||
|
compter de la distribution du Logiciel Modifié, étant entendu que le
|
||||||
|
coût additionnel d'acquisition du code source ne devra pas excéder
|
||||||
|
le simple coût de transfert des données.
|
||||||
|
|
||||||
|
|
||||||
|
5.3.3 DISTRIBUTION DES MODULES EXTERNES
|
||||||
|
|
||||||
|
Lorsque le Licencié a développé un Module Externe les conditions du
|
||||||
|
Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
|
||||||
|
sous un contrat de licence différent.
|
||||||
|
|
||||||
|
|
||||||
|
5.3.4 COMPATIBILITE AVEC D'AUTRES LICENCES
|
||||||
|
|
||||||
|
Le Licencié peut inclure un code soumis aux dispositions d'une des
|
||||||
|
versions de la licence GNU GPL, GNU Affero GPL et/ou EUPL dans le
|
||||||
|
Logiciel modifié ou non et distribuer l'ensemble sous les conditions de
|
||||||
|
la même version de la licence GNU GPL, GNU Affero GPL et/ou EUPL.
|
||||||
|
|
||||||
|
Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
|
||||||
|
aux dispositions d'une des versions de la licence GNU GPL, GNU Affero
|
||||||
|
GPL et/ou EUPL et distribuer l'ensemble sous les conditions de la même
|
||||||
|
version de la licence GNU GPL, GNU Affero GPL et/ou EUPL.
|
||||||
|
|
||||||
|
|
||||||
|
Article 6 - PROPRIETE INTELLECTUELLE
|
||||||
|
|
||||||
|
|
||||||
|
6.1 SUR LE LOGICIEL INITIAL
|
||||||
|
|
||||||
|
Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
|
||||||
|
Initial. Toute utilisation du Logiciel Initial est soumise au respect
|
||||||
|
des conditions dans lesquelles le Titulaire a choisi de diffuser son
|
||||||
|
oeuvre et nul autre n'a la faculté de modifier les conditions de
|
||||||
|
diffusion de ce Logiciel Initial.
|
||||||
|
|
||||||
|
Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
|
||||||
|
par le Contrat et ce, pour la durée visée à l'article 4.2 <#duree>.
|
||||||
|
|
||||||
|
|
||||||
|
6.2 SUR LES CONTRIBUTIONS
|
||||||
|
|
||||||
|
Le Licencié qui a développé une Contribution est titulaire sur celle-ci
|
||||||
|
des droits de propriété intellectuelle dans les conditions définies par
|
||||||
|
la législation applicable.
|
||||||
|
|
||||||
|
|
||||||
|
6.3 SUR LES MODULES EXTERNES
|
||||||
|
|
||||||
|
Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
|
||||||
|
des droits de propriété intellectuelle dans les conditions définies par
|
||||||
|
la législation applicable et reste libre du choix du contrat régissant
|
||||||
|
sa diffusion.
|
||||||
|
|
||||||
|
|
||||||
|
6.4 DISPOSITIONS COMMUNES
|
||||||
|
|
||||||
|
Le Licencié s'engage expressément:
|
||||||
|
|
||||||
|
1.
|
||||||
|
|
||||||
|
à ne pas supprimer ou modifier de quelque manière que ce soit les
|
||||||
|
mentions de propriété intellectuelle apposées sur le Logiciel;
|
||||||
|
|
||||||
|
2.
|
||||||
|
|
||||||
|
à reproduire à l'identique lesdites mentions de propriété
|
||||||
|
intellectuelle sur les copies du Logiciel modifié ou non.
|
||||||
|
|
||||||
|
Le Licencié s'engage à ne pas porter atteinte, directement ou
|
||||||
|
indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
|
||||||
|
des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
|
||||||
|
l'égard de son personnel toutes les mesures nécessaires pour assurer le
|
||||||
|
respect des dits droits de propriété intellectuelle du Titulaire et/ou
|
||||||
|
des Contributeurs.
|
||||||
|
|
||||||
|
|
||||||
|
Article 7 - SERVICES ASSOCIES
|
||||||
|
|
||||||
|
7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
|
||||||
|
prestations d'assistance technique ou de maintenance du Logiciel.
|
||||||
|
|
||||||
|
Cependant le Concédant reste libre de proposer ce type de services. Les
|
||||||
|
termes et conditions d'une telle assistance technique et/ou d'une telle
|
||||||
|
maintenance seront alors déterminés dans un acte séparé. Ces actes de
|
||||||
|
maintenance et/ou assistance technique n'engageront que la seule
|
||||||
|
responsabilité du Concédant qui les propose.
|
||||||
|
|
||||||
|
7.2 De même, tout Concédant est libre de proposer, sous sa seule
|
||||||
|
responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
|
||||||
|
lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
|
||||||
|
dans les conditions qu'il souhaite. Cette garantie et les modalités
|
||||||
|
financières de son application feront l'objet d'un acte séparé entre le
|
||||||
|
Concédant et le Licencié.
|
||||||
|
|
||||||
|
|
||||||
|
Article 8 - RESPONSABILITE
|
||||||
|
|
||||||
|
8.1 Sous réserve des dispositions de l'article 8.2
|
||||||
|
<#limite-responsabilite>, le Licencié a la faculté, sous réserve de
|
||||||
|
prouver la faute du Concédant concerné, de solliciter la réparation du
|
||||||
|
préjudice direct qu'il subirait du fait du Logiciel et dont il apportera
|
||||||
|
la preuve.
|
||||||
|
|
||||||
|
8.2 La responsabilité du Concédant est limitée aux engagements pris en
|
||||||
|
application du Contrat et ne saurait être engagée en raison notamment:
|
||||||
|
(i) des dommages dus à l'inexécution, totale ou partielle, de ses
|
||||||
|
obligations par le Licencié, (ii) des dommages directs ou indirects
|
||||||
|
découlant de l'utilisation ou des performances du Logiciel subis par le
|
||||||
|
Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
|
||||||
|
particulier, les Parties conviennent expressément que tout préjudice
|
||||||
|
financier ou commercial (par exemple perte de données, perte de
|
||||||
|
bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
|
||||||
|
manque à gagner, trouble commercial quelconque) ou toute action dirigée
|
||||||
|
contre le Licencié par un tiers, constitue un dommage indirect et
|
||||||
|
n'ouvre pas droit à réparation par le Concédant.
|
||||||
|
|
||||||
|
|
||||||
|
Article 9 - GARANTIE
|
||||||
|
|
||||||
|
9.1 Le Licencié reconnaît que l'état actuel des connaissances
|
||||||
|
scientifiques et techniques au moment de la mise en circulation du
|
||||||
|
Logiciel ne permet pas d'en tester et d'en vérifier toutes les
|
||||||
|
utilisations ni de détecter l'existence d'éventuels défauts. L'attention
|
||||||
|
du Licencié a été attirée sur ce point sur les risques associés au
|
||||||
|
chargement, à l'utilisation, la modification et/ou au développement et à
|
||||||
|
la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
|
||||||
|
|
||||||
|
Il relève de la responsabilité du Licencié de contrôler, par tous
|
||||||
|
moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
|
||||||
|
de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
|
||||||
|
|
||||||
|
9.2 Le Concédant déclare de bonne foi être en droit de concéder
|
||||||
|
l'ensemble des droits attachés au Logiciel (comprenant notamment les
|
||||||
|
droits visés à l'article 5 <#etendue>).
|
||||||
|
|
||||||
|
9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
|
||||||
|
Concédant sans autre garantie, expresse ou tacite, que celle prévue à
|
||||||
|
l'article 9.2 <#bonne-foi> et notamment sans aucune garantie sur sa
|
||||||
|
valeur commerciale, son caractère sécurisé, innovant ou pertinent.
|
||||||
|
|
||||||
|
En particulier, le Concédant ne garantit pas que le Logiciel est exempt
|
||||||
|
d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
|
||||||
|
avec l'équipement du Licencié et sa configuration logicielle ni qu'il
|
||||||
|
remplira les besoins du Licencié.
|
||||||
|
|
||||||
|
9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
|
||||||
|
Logiciel ne porte pas atteinte à un quelconque droit de propriété
|
||||||
|
intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
|
||||||
|
autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
|
||||||
|
profit du Licencié contre les actions en contrefaçon qui pourraient être
|
||||||
|
diligentées au titre de l'utilisation, de la modification, et de la
|
||||||
|
redistribution du Logiciel. Néanmoins, si de telles actions sont
|
||||||
|
exercées contre le Licencié, le Concédant lui apportera son expertise
|
||||||
|
technique et juridique pour sa défense. Cette expertise technique et
|
||||||
|
juridique est déterminée au cas par cas entre le Concédant concerné et
|
||||||
|
le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
|
||||||
|
toute responsabilité quant à l'utilisation de la dénomination du
|
||||||
|
Logiciel par le Licencié. Aucune garantie n'est apportée quant à
|
||||||
|
l'existence de droits antérieurs sur le nom du Logiciel et sur
|
||||||
|
l'existence d'une marque.
|
||||||
|
|
||||||
|
|
||||||
|
Article 10 - RESILIATION
|
||||||
|
|
||||||
|
10.1 En cas de manquement par le Licencié aux obligations mises à sa
|
||||||
|
charge par le Contrat, le Concédant pourra résilier de plein droit le
|
||||||
|
Contrat trente (30) jours après notification adressée au Licencié et
|
||||||
|
restée sans effet.
|
||||||
|
|
||||||
|
10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
|
||||||
|
utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
|
||||||
|
licences qu'il aura concédées antérieurement à la résiliation du Contrat
|
||||||
|
resteront valides sous réserve qu'elles aient été effectuées en
|
||||||
|
conformité avec le Contrat.
|
||||||
|
|
||||||
|
|
||||||
|
Article 11 - DISPOSITIONS DIVERSES
|
||||||
|
|
||||||
|
|
||||||
|
11.1 CAUSE EXTERIEURE
|
||||||
|
|
||||||
|
Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
|
||||||
|
d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
|
||||||
|
fortuit ou une cause extérieure, telle que, notamment, le mauvais
|
||||||
|
fonctionnement ou les interruptions du réseau électrique ou de
|
||||||
|
télécommunication, la paralysie du réseau liée à une attaque
|
||||||
|
informatique, l'intervention des autorités gouvernementales, les
|
||||||
|
catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
|
||||||
|
le feu, les explosions, les grèves et les conflits sociaux, l'état de
|
||||||
|
guerre...
|
||||||
|
|
||||||
|
11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
|
||||||
|
plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
|
||||||
|
Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
|
||||||
|
intéressée à s'en prévaloir ultérieurement.
|
||||||
|
|
||||||
|
11.3 Le Contrat annule et remplace toute convention antérieure, écrite
|
||||||
|
ou orale, entre les Parties sur le même objet et constitue l'accord
|
||||||
|
entier entre les Parties sur cet objet. Aucune addition ou modification
|
||||||
|
aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
|
||||||
|
d'être faite par écrit et signée par leurs représentants dûment habilités.
|
||||||
|
|
||||||
|
11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
|
||||||
|
s'avèrerait contraire à une loi ou à un texte applicable, existants ou
|
||||||
|
futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
|
||||||
|
amendements nécessaires pour se conformer à cette loi ou à ce texte.
|
||||||
|
Toutes les autres dispositions resteront en vigueur. De même, la
|
||||||
|
nullité, pour quelque raison que ce soit, d'une des dispositions du
|
||||||
|
Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
|
||||||
|
|
||||||
|
|
||||||
|
11.5 LANGUE
|
||||||
|
|
||||||
|
Le Contrat est rédigé en langue française et en langue anglaise, ces
|
||||||
|
deux versions faisant également foi.
|
||||||
|
|
||||||
|
|
||||||
|
Article 12 - NOUVELLES VERSIONS DU CONTRAT
|
||||||
|
|
||||||
|
12.1 Toute personne est autorisée à copier et distribuer des copies de
|
||||||
|
ce Contrat.
|
||||||
|
|
||||||
|
12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
|
||||||
|
et ne peut être modifié que par les auteurs de la licence, lesquels se
|
||||||
|
réservent le droit de publier périodiquement des mises à jour ou de
|
||||||
|
nouvelles versions du Contrat, qui posséderont chacune un numéro
|
||||||
|
distinct. Ces versions ultérieures seront susceptibles de prendre en
|
||||||
|
compte de nouvelles problématiques rencontrées par les logiciels libres.
|
||||||
|
|
||||||
|
12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
|
||||||
|
faire l'objet d'une diffusion ultérieure que sous la même version du
|
||||||
|
Contrat ou une version postérieure, sous réserve des dispositions de
|
||||||
|
l'article 5.3.4 <#compatibilite>.
|
||||||
|
|
||||||
|
|
||||||
|
Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
|
||||||
|
|
||||||
|
13.1 Le Contrat est régi par la loi française. Les Parties conviennent
|
||||||
|
de tenter de régler à l'amiable les différends ou litiges qui
|
||||||
|
viendraient à se produire par suite ou à l'occasion du Contrat.
|
||||||
|
|
||||||
|
13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
|
||||||
|
de leur survenance et sauf situation relevant d'une procédure d'urgence,
|
||||||
|
les différends ou litiges seront portés par la Partie la plus diligente
|
||||||
|
devant les Tribunaux compétents de Paris.
|
||||||
|
|
Binary file not shown.
51
src/ecopcr.c
51
src/ecopcr.c
@ -6,7 +6,7 @@
|
|||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
|
|
||||||
#define VERSION "0.2"
|
#define VERSION "1.0.1"
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------------- */
|
/* ----------------------------------------------- */
|
||||||
@ -26,7 +26,7 @@ static void PrintHelp()
|
|||||||
PP "-a : Salt concentration in M for Tm computation (default 0.05 M)\n\n");
|
PP "-a : Salt concentration in M for Tm computation (default 0.05 M)\n\n");
|
||||||
PP "-c : Consider that the database sequences are [c]ircular\n\n");
|
PP "-c : Consider that the database sequences are [c]ircular\n\n");
|
||||||
PP "-d : [D]atabase : to match the expected format, the database\n");
|
PP "-d : [D]atabase : to match the expected format, the database\n");
|
||||||
PP " has to be formated first by the ecoPCRFormat.py program located.\n");
|
PP " has to be formatted first by the ecoPCRFormat.py program located.\n");
|
||||||
PP " in the tools directory.\n");
|
PP " in the tools directory.\n");
|
||||||
PP " ecoPCRFormat.py creates three file types :\n");
|
PP " ecoPCRFormat.py creates three file types :\n");
|
||||||
PP " .sdx : contains the sequences\n");
|
PP " .sdx : contains the sequences\n");
|
||||||
@ -80,7 +80,7 @@ static void PrintHelp()
|
|||||||
PP "column 21 : sequence\n");
|
PP "column 21 : sequence\n");
|
||||||
PP "column 22 : definition\n");
|
PP "column 22 : definition\n");
|
||||||
PP "------------------------------------------\n");
|
PP "------------------------------------------\n");
|
||||||
PP " http://www.grenoble.prabi.fr/trac/ecoPCR/\n");
|
PP " https://git.metabarcoding.org/obitools/ecopcr/wikis/home\n");
|
||||||
PP "------------------------------------------\n\n");
|
PP "------------------------------------------\n\n");
|
||||||
PP "\n");
|
PP "\n");
|
||||||
|
|
||||||
@ -566,11 +566,11 @@ int main(int argc, char **argv)
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
scname = taxonomy->taxons->taxon[seq->taxid].name;
|
//scname = taxonomy->taxons->taxon[seq->taxid].name;
|
||||||
strncpy(head,seq->SQ,10);
|
//strncpy(head,seq->SQ,10);
|
||||||
head[10]=0;
|
//head[10]=0;
|
||||||
strncpy(tail,seq->SQ+seq->SQ_length-10,10);
|
//strncpy(tail,seq->SQ+seq->SQ_length-10,10);
|
||||||
tail[10]=0;
|
//tail[10]=0;
|
||||||
|
|
||||||
apatseq=ecoseq2apatseq(seq,apatseq,circular);
|
apatseq=ecoseq2apatseq(seq,apatseq,circular);
|
||||||
|
|
||||||
@ -610,18 +610,21 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
posj+=o2c->patlen;
|
posj+=o2c->patlen;
|
||||||
// printf("coucou %d %d %d\n",posi,posj,apatseq->seqlen);
|
// printf("coucou %d %d %d\n",posi,posj,apatseq->seqlen);
|
||||||
errj =apatseq->hiterr[1]->val[j];
|
errj = apatseq->hiterr[1]->val[j];
|
||||||
length = 0;
|
length = 0;
|
||||||
if (posj > posi)
|
if (posj > posi)
|
||||||
length=posj - posi - o1->patlen - o2->patlen;
|
length = posj - posi - o1->patlen - o2->patlen;
|
||||||
if (posj < posi)
|
else {
|
||||||
length= posj + apatseq->seqlen - posi - o1->patlen - o2->patlen;
|
if (circular > 0)
|
||||||
if (length &&
|
length = posj + apatseq->seqlen - posi - o1->patlen - o2->patlen;
|
||||||
|
}
|
||||||
|
if ((length>0) && // For when primers touch or overlap
|
||||||
(!lmin || (length >= lmin)) &&
|
(!lmin || (length >= lmin)) &&
|
||||||
(!lmax || (length <= lmax)))
|
(!lmax || (length <= lmax)))
|
||||||
|
{
|
||||||
printRepeat(seq,oligo1,oligo2,&tparm,o1,o2c,'D',kingdom_mode,posi,posj,erri,errj,taxonomy,delta);
|
printRepeat(seq,oligo1,oligo2,&tparm,o1,o2c,'D',kingdom_mode,posi,posj,erri,errj,taxonomy,delta);
|
||||||
//printf("%s\tD\t%s...%s (%d)\t%d\t%d\t%d\t%d\t%s\n",seq->AC,head,tail,seq->SQ_length,o1Hits,o2cHits,posi,posj,scname);
|
//printf("%s\tD\t%s...%s (%d)\t%d\t%d\t%d\t%d\t%s\n",seq->AC,head,tail,seq->SQ_length,o1Hits,o2cHits,posi,posj,scname);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -647,7 +650,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
o1cHits = ManberAll(apatseq,o1c,3,begin,length);
|
o1cHits = ManberAll(apatseq,o1c,3,begin,length);
|
||||||
|
// printf("circular= %d\n",circular);
|
||||||
if (o1cHits)
|
if (o1cHits)
|
||||||
for (i=0; i < o2Hits;i++)
|
for (i=0; i < o2Hits;i++)
|
||||||
{
|
{
|
||||||
@ -666,15 +669,19 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
length = 0;
|
length = 0;
|
||||||
if (posj > posi)
|
if (posj > posi)
|
||||||
length=posj - posi + 1 - o2->patlen - o1->patlen; /* - o1->patlen : suppress by <EC> */
|
length = posj - posi + 1 - o2->patlen - o1->patlen; /* - o1->patlen : deleted by <EC> (prior to the OBITools3) */
|
||||||
if (posj < posi)
|
else {
|
||||||
length= posj + apatseq->seqlen - posi - o1->patlen - o2->patlen;
|
if (circular > 0)
|
||||||
|
length = posj + apatseq->seqlen - posi - o1->patlen - o2->patlen;
|
||||||
|
}
|
||||||
|
|
||||||
if (length &&
|
if ((length>0) && // For when primers touch or overlap
|
||||||
(!lmin || (length >= lmin)) &&
|
(!lmin || (length >= lmin)) &&
|
||||||
(!lmax || (length <= lmax)))
|
(!lmax || (length <= lmax)))
|
||||||
|
{
|
||||||
printRepeat(seq,oligo1,oligo2,&tparm,o2,o1c,'R',kingdom_mode,posi,posj,erri,errj,taxonomy,delta);
|
printRepeat(seq,oligo1,oligo2,&tparm,o2,o1c,'R',kingdom_mode,posi,posj,erri,errj,taxonomy,delta);
|
||||||
//printf("%s\tR\t%s...%s (%d)\t%d\t%d\t%d\t%d\t%s\n",seq->AC,head,tail,seq->SQ_length,o2Hits,o1cHits,posi,posj,scname);
|
//printf("%s\tR\t%s...%s (%d)\t%d\t%d\t%d\t%d\t%s\n",seq->AC,head,tail,seq->SQ_length,o2Hits,o1cHits,posi,posj,scname);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
MACHINE=MAC_OS_X
|
|
||||||
LIBPATH= -Llibapat -LlibecoPCR -Llibthermo
|
LIBPATH= -Llibapat -LlibecoPCR -Llibthermo
|
||||||
MAKEDEPEND = gcc -D$(MACHINE) -M $(CPPFLAGS) -o $*.d $<
|
MAKEDEPEND = gcc -M $(CPPFLAGS) -o $*.d $<
|
||||||
|
|
||||||
CC=gcc
|
CC=gcc
|
||||||
CFLAGS= -W -Wall -O2 -g
|
CFLAGS= -O3 -w
|
||||||
|
|
||||||
default: all
|
default: all
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(CC) -D$(MACHINE) $(CFLAGS) -c -o $@ $<
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
%.P : %.c
|
%.P : %.c
|
||||||
$(MAKEDEPEND)
|
$(MAKEDEPEND)
|
||||||
|
@ -27,13 +27,9 @@
|
|||||||
#define PROTO 1 /* prototypes flag */
|
#define PROTO 1 /* prototypes flag */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MAC_OS_C
|
|
||||||
#define Vrai true /* TC boolean values */
|
|
||||||
#define Faux false /* */
|
|
||||||
#else
|
|
||||||
#define Vrai 0x1 /* bool values = TRUE */
|
#define Vrai 0x1 /* bool values = TRUE */
|
||||||
#define Faux 0x0 /* = FALSE */
|
#define Faux 0x0 /* = FALSE */
|
||||||
#endif
|
|
||||||
|
|
||||||
#define Nil NULL /* nil pointer */
|
#define Nil NULL /* nil pointer */
|
||||||
|
|
||||||
@ -42,28 +38,7 @@
|
|||||||
#define kBigUInt16 0xffff /* plus grand 16 bits ~signe */
|
#define kBigUInt16 0xffff /* plus grand 16 bits ~signe */
|
||||||
#define kBigUInt32 0xffffffff /* plus grand 32 bits ~signe */
|
#define kBigUInt32 0xffffffff /* plus grand 32 bits ~signe */
|
||||||
|
|
||||||
#ifdef MAC_OS_C
|
|
||||||
/* ==================================================== */
|
|
||||||
/* Types (for Macintosh ThinK C || MWerks) */
|
|
||||||
/* ==================================================== */
|
|
||||||
|
|
||||||
/* --- specific sizes --------- */
|
|
||||||
typedef long Int32; /* Int32 = 32 bits signe */
|
|
||||||
typedef unsigned long UInt32; /* UInt32 = 32 bits ~signe */
|
|
||||||
typedef short Int16; /* Int16 = 16 bits signe */
|
|
||||||
typedef unsigned short UInt16; /* UInt32 = 16 bits ~signe */
|
|
||||||
typedef char Int8; /* Int8 = 8 bits signe */
|
|
||||||
typedef unsigned char UInt8; /* UInt8 = 8 bits ~signe */
|
|
||||||
|
|
||||||
/* --- default types ---------- */
|
|
||||||
|
|
||||||
typedef Boolean Bool; /* booleen */
|
|
||||||
|
|
||||||
typedef long Int; /* 'natural' int (>= 32 bits) */
|
|
||||||
|
|
||||||
typedef void *Ptr; /* pointeur */
|
|
||||||
|
|
||||||
#elif ((defined SUN) || (defined SGI) || (defined UNIX))
|
|
||||||
/* ==================================================== */
|
/* ==================================================== */
|
||||||
/* Types (for Sun & Iris - 32 bits machines) */
|
/* Types (for Sun & Iris - 32 bits machines) */
|
||||||
/* ==================================================== */
|
/* ==================================================== */
|
||||||
@ -84,14 +59,7 @@ typedef int Int; /* 'natural' int (>= 32 bits) */
|
|||||||
|
|
||||||
typedef void *Ptr; /* pointeur */
|
typedef void *Ptr; /* pointeur */
|
||||||
|
|
||||||
#else
|
|
||||||
/* ==================================================== */
|
|
||||||
/* Types (for undefined machines) */
|
|
||||||
/* ==================================================== */
|
|
||||||
|
|
||||||
#error undefined MACHINE <please edit Gmach.h>
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ==================================================== */
|
/* ==================================================== */
|
||||||
/* special macro for prototypes */
|
/* special macro for prototypes */
|
||||||
|
@ -12,14 +12,14 @@ ecorankidx_t *read_rankidx(const char *filename)
|
|||||||
int32_t i;
|
int32_t i;
|
||||||
int32_t rs;
|
int32_t rs;
|
||||||
char *buffer;
|
char *buffer;
|
||||||
|
|
||||||
f = open_ecorecorddb(filename,&count,1);
|
f = open_ecorecorddb(filename,&count,1);
|
||||||
|
|
||||||
index = (ecorankidx_t*) ECOMALLOC(sizeof(ecorankidx_t) + sizeof(char*) * (count-1),
|
index = (ecorankidx_t*) ECOMALLOC(sizeof(ecorankidx_t) + sizeof(char*) * (count-1),
|
||||||
"Allocate rank index");
|
"Allocate rank index");
|
||||||
|
|
||||||
index->count=count;
|
index->count=count;
|
||||||
|
|
||||||
for (i=0; i < count; i++)
|
for (i=0; i < count; i++)
|
||||||
{
|
{
|
||||||
buffer = read_ecorecord(f,&rs);
|
buffer = read_ecorecord(f,&rs);
|
||||||
@ -27,21 +27,18 @@ ecorankidx_t *read_rankidx(const char *filename)
|
|||||||
"Allocate rank label");
|
"Allocate rank label");
|
||||||
strncpy(index->label[i],buffer,rs);
|
strncpy(index->label[i],buffer,rs);
|
||||||
}
|
}
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t rank_index(const char* label,ecorankidx_t* ranks)
|
int32_t rank_index(const char* label,ecorankidx_t* ranks)
|
||||||
{
|
{
|
||||||
char **rep;
|
char **rep;
|
||||||
|
fprintf(stderr,"Looking for rank -%s-... ",label);
|
||||||
rep = bsearch(label,ranks->label,ranks->count,sizeof(char*),compareRankLabel);
|
rep = bsearch(label,ranks->label,ranks->count,sizeof(char*),compareRankLabel);
|
||||||
|
|
||||||
if (rep)
|
if (rep)
|
||||||
return rep-ranks->label;
|
return rep-ranks->label;
|
||||||
else
|
|
||||||
ECOERROR(ECO_NOTFOUND_ERROR,"Rank label not found");
|
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
static ecotx_t *readnext_ecotaxon(FILE *f,ecotx_t *taxon);
|
static ecotx_t *readnext_ecotaxon(FILE *f,ecotx_t *taxon);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the taxonomy database
|
* Open the taxonomy database
|
||||||
* @param pointer to the database (.tdx file)
|
* @param pointer to the database (.tdx file)
|
||||||
* @return a ecotxidx_t structure
|
* @return a ecotxidx_t structure
|
||||||
*/
|
*/
|
||||||
ecotxidx_t *read_taxonomyidx(const char *filename,const char *filename2)
|
ecotxidx_t *read_taxonomyidx(const char *filename,const char *filename2)
|
||||||
{
|
{
|
||||||
@ -18,22 +18,22 @@ ecotxidx_t *read_taxonomyidx(const char *filename,const char *filename2)
|
|||||||
FILE *f2;
|
FILE *f2;
|
||||||
ecotxidx_t *index;
|
ecotxidx_t *index;
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
f = open_ecorecorddb(filename,&count,1);
|
f = open_ecorecorddb(filename,&count,1);
|
||||||
f2 = open_ecorecorddb(filename2,&count2,0);
|
f2 = open_ecorecorddb(filename2,&count2,0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
index = (ecotxidx_t*) ECOMALLOC(sizeof(ecotxidx_t) + sizeof(ecotx_t) * (count+count2-1),
|
index = (ecotxidx_t*) ECOMALLOC(sizeof(ecotxidx_t) + sizeof(ecotx_t) * (count+count2-1),
|
||||||
"Allocate taxonomy");
|
"Allocate taxonomy");
|
||||||
|
|
||||||
index->count=count+count2;
|
index->count=count+count2;
|
||||||
|
|
||||||
fprintf(stderr,"Reading %d taxa...\n",count);
|
fprintf(stderr,"Reading %d taxa...\n",count);
|
||||||
for (i=0; i < count; i++){
|
for (i=0; i < count; i++){
|
||||||
readnext_ecotaxon(f,&(index->taxon[i]));
|
readnext_ecotaxon(f,&(index->taxon[i]));
|
||||||
index->taxon[i].parent=index->taxon + (int32_t)index->taxon[i].parent;
|
index->taxon[i].parent=index->taxon + (int32_t)index->taxon[i].parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count2>0)
|
if (count2>0)
|
||||||
fprintf(stderr,"Reading %d local taxa...\n",count2);
|
fprintf(stderr,"Reading %d local taxa...\n",count2);
|
||||||
@ -52,18 +52,18 @@ ecotxidx_t *read_taxonomyidx(const char *filename,const char *filename2)
|
|||||||
int32_t delete_taxonomy(ecotxidx_t *index)
|
int32_t delete_taxonomy(ecotxidx_t *index)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
if (index)
|
if (index)
|
||||||
{
|
{
|
||||||
for (i=0; i< index->count; i++)
|
for (i=0; i< index->count; i++)
|
||||||
if (index->taxon[i].name)
|
if (index->taxon[i].name)
|
||||||
ECOFREE(index->taxon[i].name,"Free scientific name");
|
ECOFREE(index->taxon[i].name,"Free scientific name");
|
||||||
|
|
||||||
ECOFREE(index,"Free Taxonomy");
|
ECOFREE(index,"Free Taxonomy");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,32 +75,32 @@ int32_t delete_taxon(ecotx_t *taxon)
|
|||||||
{
|
{
|
||||||
if (taxon->name)
|
if (taxon->name)
|
||||||
ECOFREE(taxon->name,"Free scientific name");
|
ECOFREE(taxon->name,"Free scientific name");
|
||||||
|
|
||||||
ECOFREE(taxon,"Free Taxon");
|
ECOFREE(taxon,"Free Taxon");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the database for a given taxon a save the data
|
* Read the database for a given taxon a save the data
|
||||||
* into the taxon structure(if any found)
|
* into the taxon structure(if any found)
|
||||||
* @param *f pointer to FILE type returned by fopen
|
* @param *f pointer to FILE type returned by fopen
|
||||||
* @param *taxon pointer to the structure
|
* @param *taxon pointer to the structure
|
||||||
*
|
*
|
||||||
* @return a ecotx_t structure if any taxon found else NULL
|
* @return a ecotx_t structure if any taxon found else NULL
|
||||||
*/
|
*/
|
||||||
ecotx_t *readnext_ecotaxon(FILE *f,ecotx_t *taxon)
|
ecotx_t *readnext_ecotaxon(FILE *f,ecotx_t *taxon)
|
||||||
{
|
{
|
||||||
|
|
||||||
ecotxformat_t *raw;
|
ecotxformat_t *raw;
|
||||||
int32_t rs;
|
int32_t rs;
|
||||||
|
|
||||||
raw = read_ecorecord(f,&rs);
|
raw = read_ecorecord(f,&rs);
|
||||||
|
|
||||||
if (!raw)
|
if (!raw)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -109,18 +109,18 @@ ecotx_t *readnext_ecotaxon(FILE *f,ecotx_t *taxon)
|
|||||||
raw->namelength = swap_int32_t(raw->namelength);
|
raw->namelength = swap_int32_t(raw->namelength);
|
||||||
raw->parent = swap_int32_t(raw->parent);
|
raw->parent = swap_int32_t(raw->parent);
|
||||||
raw->rank = swap_int32_t(raw->rank);
|
raw->rank = swap_int32_t(raw->rank);
|
||||||
raw->taxid = swap_int32_t(raw->taxid);
|
raw->taxid = swap_int32_t(raw->taxid);
|
||||||
}
|
}
|
||||||
|
|
||||||
taxon->parent = (ecotx_t*)raw->parent;
|
taxon->parent = (ecotx_t*)raw->parent;
|
||||||
taxon->taxid = raw->taxid;
|
taxon->taxid = raw->taxid;
|
||||||
taxon->rank = raw->rank;
|
taxon->rank = raw->rank;
|
||||||
|
|
||||||
taxon->name = ECOMALLOC((raw->namelength+1) * sizeof(char),
|
taxon->name = ECOMALLOC((raw->namelength+1) * sizeof(char),
|
||||||
"Allocate taxon scientific name");
|
"Allocate taxon scientific name");
|
||||||
|
|
||||||
strncpy(taxon->name,raw->name,raw->namelength);
|
strncpy(taxon->name,raw->name,raw->namelength);
|
||||||
|
|
||||||
return taxon;
|
return taxon;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,26 +131,26 @@ ecotaxonomy_t *read_taxonomy(const char *prefix,int32_t readAlternativeName)
|
|||||||
char *filename;
|
char *filename;
|
||||||
char *filename2;
|
char *filename2;
|
||||||
int buffsize;
|
int buffsize;
|
||||||
|
|
||||||
tax = ECOMALLOC(sizeof(ecotaxonomy_t),
|
tax = ECOMALLOC(sizeof(ecotaxonomy_t),
|
||||||
"Allocate taxonomy structure");
|
"Allocate taxonomy structure");
|
||||||
|
|
||||||
buffsize = strlen(prefix)+10;
|
buffsize = strlen(prefix)+10;
|
||||||
|
|
||||||
filename = ECOMALLOC(buffsize,
|
filename = ECOMALLOC(buffsize,
|
||||||
"Allocate filename");
|
"Allocate filename");
|
||||||
filename2= ECOMALLOC(buffsize,
|
filename2= ECOMALLOC(buffsize,
|
||||||
"Allocate filename");
|
"Allocate filename");
|
||||||
|
|
||||||
snprintf(filename,buffsize,"%s.rdx",prefix);
|
snprintf(filename,buffsize,"%s.rdx",prefix);
|
||||||
|
|
||||||
tax->ranks = read_rankidx(filename);
|
tax->ranks = read_rankidx(filename);
|
||||||
|
|
||||||
snprintf(filename,buffsize,"%s.tdx",prefix);
|
snprintf(filename,buffsize,"%s.tdx",prefix);
|
||||||
snprintf(filename2,buffsize,"%s.ldx",prefix);
|
snprintf(filename2,buffsize,"%s.ldx",prefix);
|
||||||
|
|
||||||
tax->taxons = read_taxonomyidx(filename,filename2);
|
tax->taxons = read_taxonomyidx(filename,filename2);
|
||||||
|
|
||||||
if (readAlternativeName)
|
if (readAlternativeName)
|
||||||
{
|
{
|
||||||
snprintf(filename,buffsize,"%s.ndx",prefix);
|
snprintf(filename,buffsize,"%s.ndx",prefix);
|
||||||
@ -159,7 +159,7 @@ ecotaxonomy_t *read_taxonomy(const char *prefix,int32_t readAlternativeName)
|
|||||||
else
|
else
|
||||||
tax->names=NULL;
|
tax->names=NULL;
|
||||||
return tax;
|
return tax;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -170,15 +170,15 @@ int32_t delete_ecotaxonomy(ecotaxonomy_t *taxonomy)
|
|||||||
{
|
{
|
||||||
if (taxonomy->ranks)
|
if (taxonomy->ranks)
|
||||||
ECOFREE(taxonomy->ranks,"Free rank index");
|
ECOFREE(taxonomy->ranks,"Free rank index");
|
||||||
|
|
||||||
if (taxonomy->taxons)
|
if (taxonomy->taxons)
|
||||||
ECOFREE(taxonomy->taxons,"Free taxon index");
|
ECOFREE(taxonomy->taxons,"Free taxon index");
|
||||||
|
|
||||||
ECOFREE(taxonomy,"Free taxonomy structure");
|
ECOFREE(taxonomy,"Free taxonomy structure");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,17 +187,17 @@ ecotx_t *eco_findtaxonatrank(ecotx_t *taxon,
|
|||||||
{
|
{
|
||||||
ecotx_t *current_taxon;
|
ecotx_t *current_taxon;
|
||||||
ecotx_t *next_taxon;
|
ecotx_t *next_taxon;
|
||||||
|
|
||||||
current_taxon = taxon;
|
current_taxon = taxon;
|
||||||
next_taxon = current_taxon->parent;
|
next_taxon = current_taxon->parent;
|
||||||
|
|
||||||
while ((current_taxon!=next_taxon) && // I' am the root node
|
while ((current_taxon!=next_taxon) && // I' am the root node
|
||||||
(current_taxon->rank!=rankidx))
|
(current_taxon->rank!=rankidx))
|
||||||
{
|
{
|
||||||
current_taxon = next_taxon;
|
current_taxon = next_taxon;
|
||||||
next_taxon = current_taxon->parent;
|
next_taxon = current_taxon->parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current_taxon->rank==rankidx)
|
if (current_taxon->rank==rankidx)
|
||||||
return current_taxon;
|
return current_taxon;
|
||||||
else
|
else
|
||||||
@ -207,19 +207,19 @@ ecotx_t *eco_findtaxonatrank(ecotx_t *taxon,
|
|||||||
/**
|
/**
|
||||||
* Get back information concerning a taxon from a taxonomic id
|
* Get back information concerning a taxon from a taxonomic id
|
||||||
* @param *taxonomy the taxonomy database
|
* @param *taxonomy the taxonomy database
|
||||||
* @param taxid the taxonomic id
|
* @param taxid the taxonomic id
|
||||||
*
|
*
|
||||||
* @result a ecotx_t structure containing the taxonimic information
|
* @result a ecotx_t structure containing the taxonimic information
|
||||||
**/
|
**/
|
||||||
ecotx_t *eco_findtaxonbytaxid(ecotaxonomy_t *taxonomy,
|
ecotx_t *eco_findtaxonbytaxid(ecotaxonomy_t *taxonomy,
|
||||||
int32_t taxid)
|
int32_t taxid)
|
||||||
{
|
{
|
||||||
ecotx_t *current_taxon;
|
ecotx_t *current_taxon;
|
||||||
int32_t taxoncount;
|
int32_t taxoncount;
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
taxoncount=taxonomy->taxons->count;
|
taxoncount=taxonomy->taxons->count;
|
||||||
|
|
||||||
for (current_taxon=taxonomy->taxons->taxon,
|
for (current_taxon=taxonomy->taxons->taxon,
|
||||||
i=0;
|
i=0;
|
||||||
i < taxoncount;
|
i < taxoncount;
|
||||||
@ -229,30 +229,30 @@ ecotx_t *eco_findtaxonbytaxid(ecotaxonomy_t *taxonomy,
|
|||||||
return current_taxon;
|
return current_taxon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ecotx_t*)NULL;
|
return (ecotx_t*)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find out if taxon is son of other taxon (identified by its taxid)
|
* Find out if taxon is son of other taxon (identified by its taxid)
|
||||||
* @param *taxon son taxon
|
* @param *taxon son taxon
|
||||||
* @param parent_taxid taxonomic id of the other taxon
|
* @param parent_taxid taxonomic id of the other taxon
|
||||||
*
|
*
|
||||||
* @return 1 is the other taxid math a parent taxid, else 0
|
* @return 1 is the other taxid math a parent taxid, else 0
|
||||||
**/
|
**/
|
||||||
int eco_isundertaxon(ecotx_t *taxon,
|
int eco_isundertaxon(ecotx_t *taxon,
|
||||||
int other_taxid)
|
int other_taxid)
|
||||||
{
|
{
|
||||||
ecotx_t *next_parent;
|
ecotx_t *next_parent;
|
||||||
|
|
||||||
next_parent = taxon->parent;
|
next_parent = taxon->parent;
|
||||||
|
|
||||||
while ( (other_taxid != next_parent->taxid) &&
|
while ( (other_taxid != next_parent->taxid) &&
|
||||||
(strcmp(next_parent->name, "root")) )
|
(strcmp(next_parent->name, "root")) )
|
||||||
{
|
{
|
||||||
next_parent = next_parent->parent;
|
next_parent = next_parent->parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other_taxid == next_parent->taxid)
|
if (other_taxid == next_parent->taxid)
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
@ -264,16 +264,16 @@ ecotx_t *eco_getspecies(ecotx_t *taxon,
|
|||||||
{
|
{
|
||||||
static ecotaxonomy_t *tax=NULL;
|
static ecotaxonomy_t *tax=NULL;
|
||||||
static int32_t rankindex=-1;
|
static int32_t rankindex=-1;
|
||||||
|
|
||||||
if (taxonomy && tax!=taxonomy)
|
if (taxonomy && tax!=taxonomy)
|
||||||
{
|
{
|
||||||
rankindex = rank_index("species",taxonomy->ranks);
|
rankindex = rank_index("species",taxonomy->ranks);
|
||||||
tax=taxonomy;
|
tax=taxonomy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tax || rankindex < 0)
|
if (!tax || rankindex < 0)
|
||||||
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
||||||
|
|
||||||
return eco_findtaxonatrank(taxon,rankindex);
|
return eco_findtaxonatrank(taxon,rankindex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,16 +282,16 @@ ecotx_t *eco_getgenus(ecotx_t *taxon,
|
|||||||
{
|
{
|
||||||
static ecotaxonomy_t *tax=NULL;
|
static ecotaxonomy_t *tax=NULL;
|
||||||
static int32_t rankindex=-1;
|
static int32_t rankindex=-1;
|
||||||
|
|
||||||
if (taxonomy && tax!=taxonomy)
|
if (taxonomy && tax!=taxonomy)
|
||||||
{
|
{
|
||||||
rankindex = rank_index("genus",taxonomy->ranks);
|
rankindex = rank_index("genus",taxonomy->ranks);
|
||||||
tax=taxonomy;
|
tax=taxonomy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tax || rankindex < 0)
|
if (!tax || rankindex < 0)
|
||||||
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
||||||
|
|
||||||
return eco_findtaxonatrank(taxon,rankindex);
|
return eco_findtaxonatrank(taxon,rankindex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,16 +301,16 @@ ecotx_t *eco_getfamily(ecotx_t *taxon,
|
|||||||
{
|
{
|
||||||
static ecotaxonomy_t *tax=NULL;
|
static ecotaxonomy_t *tax=NULL;
|
||||||
static int32_t rankindex=-1;
|
static int32_t rankindex=-1;
|
||||||
|
|
||||||
if (taxonomy && tax!=taxonomy)
|
if (taxonomy && tax!=taxonomy)
|
||||||
{
|
{
|
||||||
rankindex = rank_index("family",taxonomy->ranks);
|
rankindex = rank_index("family",taxonomy->ranks);
|
||||||
tax=taxonomy;
|
tax=taxonomy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tax || rankindex < 0)
|
if (!tax || rankindex < 0)
|
||||||
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
||||||
|
|
||||||
return eco_findtaxonatrank(taxon,rankindex);
|
return eco_findtaxonatrank(taxon,rankindex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,16 +319,16 @@ ecotx_t *eco_getkingdom(ecotx_t *taxon,
|
|||||||
{
|
{
|
||||||
static ecotaxonomy_t *tax=NULL;
|
static ecotaxonomy_t *tax=NULL;
|
||||||
static int32_t rankindex=-1;
|
static int32_t rankindex=-1;
|
||||||
|
|
||||||
if (taxonomy && tax!=taxonomy)
|
if (taxonomy && tax!=taxonomy)
|
||||||
{
|
{
|
||||||
rankindex = rank_index("kingdom",taxonomy->ranks);
|
rankindex = rank_index("kingdom",taxonomy->ranks);
|
||||||
tax=taxonomy;
|
tax=taxonomy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tax || rankindex < 0)
|
if (!tax || rankindex < 0)
|
||||||
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
||||||
|
|
||||||
return eco_findtaxonatrank(taxon,rankindex);
|
return eco_findtaxonatrank(taxon,rankindex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,15 +337,18 @@ ecotx_t *eco_getsuperkingdom(ecotx_t *taxon,
|
|||||||
{
|
{
|
||||||
static ecotaxonomy_t *tax=NULL;
|
static ecotaxonomy_t *tax=NULL;
|
||||||
static int32_t rankindex=-1;
|
static int32_t rankindex=-1;
|
||||||
|
|
||||||
if (taxonomy && tax!=taxonomy)
|
if (taxonomy && tax!=taxonomy)
|
||||||
{
|
{
|
||||||
rankindex = rank_index("superkingdom",taxonomy->ranks);
|
rankindex = rank_index("superkingdom",taxonomy->ranks);
|
||||||
|
if (rankindex < 0) {
|
||||||
|
rankindex = rank_index("domain",taxonomy->ranks);
|
||||||
|
}
|
||||||
tax=taxonomy;
|
tax=taxonomy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tax || rankindex < 0)
|
if (!tax || rankindex < 0)
|
||||||
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
ECOERROR(ECO_ASSERT_ERROR,"No taxonomy defined");
|
||||||
|
|
||||||
return eco_findtaxonatrank(taxon,rankindex);
|
return eco_findtaxonatrank(taxon,rankindex);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python2.7
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import gzip
|
import gzip
|
||||||
@ -7,11 +7,8 @@ import sys
|
|||||||
import time
|
import time
|
||||||
import getopt
|
import getopt
|
||||||
|
|
||||||
try:
|
_dbenable=False
|
||||||
import psycopg2
|
|
||||||
_dbenable=True
|
|
||||||
except ImportError:
|
|
||||||
_dbenable=False
|
|
||||||
|
|
||||||
#####
|
#####
|
||||||
#
|
#
|
||||||
@ -221,56 +218,7 @@ def readTaxonomyDump(taxdir):
|
|||||||
|
|
||||||
return taxonomy,ranks,alternativeName,index
|
return taxonomy,ranks,alternativeName,index
|
||||||
|
|
||||||
def readTaxonomyDB(dbname):
|
|
||||||
connection = psycopg2.connect(database=dbname)
|
|
||||||
|
|
||||||
cursor = connection.cursor()
|
|
||||||
cursor.execute("select numid,rank,parent from ncbi_taxonomy.taxon")
|
|
||||||
taxonomy=[list(x) for x in cursor]
|
|
||||||
|
|
||||||
cursor.execute("select rank_class from ncbi_taxonomy.taxon_rank_class order by rank_class")
|
|
||||||
ranks=cursor.fetchall()
|
|
||||||
ranks = dict(map(None,(x[0] for x in ranks),xrange(len(ranks))))
|
|
||||||
|
|
||||||
print >>sys.stderr,"Sorting taxons..."
|
|
||||||
taxonomy.sort(taxonCmp)
|
|
||||||
|
|
||||||
print >>sys.stderr,"Indexing taxonomy..."
|
|
||||||
index = {}
|
|
||||||
for t in taxonomy:
|
|
||||||
index[t[0]]=bsearchTaxon(taxonomy, t[0])
|
|
||||||
|
|
||||||
print >>sys.stderr,"Indexing parent and rank..."
|
|
||||||
for t in taxonomy:
|
|
||||||
t[1]=ranks[t[1]]
|
|
||||||
try:
|
|
||||||
t[2]=index[t[2]]
|
|
||||||
except KeyError,e:
|
|
||||||
if t[2] is None and t[0]==1:
|
|
||||||
t[2]=index[t[0]]
|
|
||||||
else:
|
|
||||||
raise e
|
|
||||||
|
|
||||||
cursor.execute("select taxid,name,category from ncbi_taxonomy.name")
|
|
||||||
|
|
||||||
alternativeName=[]
|
|
||||||
for taxid,name,classname in cursor:
|
|
||||||
alternativeName.append((name,classname,index[taxid]))
|
|
||||||
if classname == 'scientific name':
|
|
||||||
taxonomy[index[taxid]].append(name)
|
|
||||||
|
|
||||||
cursor.execute("select old_numid,current_numid from ncbi_taxonomy.taxon_id_alias")
|
|
||||||
|
|
||||||
print >>sys.stderr,"Adding taxid alias..."
|
|
||||||
for taxid,current in cursor:
|
|
||||||
if current is not None:
|
|
||||||
index[taxid]=index[current]
|
|
||||||
else:
|
|
||||||
index[taxid]=None
|
|
||||||
|
|
||||||
|
|
||||||
return taxonomy,ranks,alternativeName,index
|
|
||||||
|
|
||||||
#####
|
#####
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -585,10 +533,9 @@ def ecoParseOptions(arguments):
|
|||||||
}
|
}
|
||||||
|
|
||||||
o,filenames = getopt.getopt(arguments,
|
o,filenames = getopt.getopt(arguments,
|
||||||
'ht:T:n:gfe',
|
'ht:n:gfe',
|
||||||
['help',
|
['help',
|
||||||
'taxonomy=',
|
'taxonomy=',
|
||||||
'taxonomy_db=',
|
|
||||||
'name=',
|
'name=',
|
||||||
'genbank',
|
'genbank',
|
||||||
'fasta',
|
'fasta',
|
||||||
@ -601,9 +548,6 @@ def ecoParseOptions(arguments):
|
|||||||
elif name in ('-t','--taxonomy'):
|
elif name in ('-t','--taxonomy'):
|
||||||
opt['taxmod']='dump'
|
opt['taxmod']='dump'
|
||||||
opt['taxdir']=value
|
opt['taxdir']=value
|
||||||
elif name in ('-T','--taxonomy_db'):
|
|
||||||
opt['taxmod']='db'
|
|
||||||
opt['taxdb']=value
|
|
||||||
elif name in ('-n','--name'):
|
elif name in ('-n','--name'):
|
||||||
opt['prefix']=value
|
opt['prefix']=value
|
||||||
elif name in ('-g','--genbank'):
|
elif name in ('-g','--genbank'):
|
||||||
@ -622,6 +566,7 @@ def ecoParseOptions(arguments):
|
|||||||
|
|
||||||
return opt,filenames
|
return opt,filenames
|
||||||
|
|
||||||
|
|
||||||
def printHelp():
|
def printHelp():
|
||||||
print "-----------------------------------"
|
print "-----------------------------------"
|
||||||
print " ecoPCRFormat.py"
|
print " ecoPCRFormat.py"
|
||||||
@ -641,11 +586,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
opt,filenames = ecoParseOptions(sys.argv[1:])
|
opt,filenames = ecoParseOptions(sys.argv[1:])
|
||||||
|
|
||||||
if opt['taxmod']=='dump':
|
taxonomy = readTaxonomyDump(opt['taxdir'])
|
||||||
taxonomy = readTaxonomyDump(opt['taxdir'])
|
|
||||||
elif opt['taxmod']=='db':
|
|
||||||
taxonomy = readTaxonomyDB(opt['taxdb'])
|
|
||||||
|
|
||||||
|
|
||||||
ecoDBWriter(opt['prefix'], taxonomy, filenames, opt['parser'])
|
ecoDBWriter(opt['prefix'], taxonomy, filenames, opt['parser'])
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user