diff --git a/src/obiconvert.py b/src/obiconvert.py index bbfb786..5965866 100644 --- a/src/obiconvert.py +++ b/src/obiconvert.py @@ -47,7 +47,7 @@ if __name__ == '__main__': try: writer(entry) except: - print >>stderr,"Skip writing of sequence : %s" % entry.id + print >>stderr,"Skipping an entry" else: writer(entry) diff --git a/src/obitaxonomy.py b/src/obitaxonomy.py index 3f96362..cf25f58 100644 --- a/src/obitaxonomy.py +++ b/src/obitaxonomy.py @@ -331,7 +331,7 @@ if __name__ == '__main__': for t in options.newspecies: genus,species = t.split(" ",1) - parent = options.taxonomy.findTaxonByName(genus) + parent = options.taxonomy.findTaxonByName(genus)[0] taxid = options.taxonomy.addLocalTaxon(t,'species',parent[0],options.taxashift) taxon = options.taxonomy.findTaxonByTaxid(taxid) parent= options.taxonomy._taxonomy[taxon[2]] @@ -347,4 +347,4 @@ if __name__ == '__main__': ecoTaxonomyWriter(options.ecodb,options.taxonomy,onlyLocal=True) - \ No newline at end of file + diff --git a/src/obitools/format/sequence/__init__.py b/src/obitools/format/sequence/__init__.py index 9c3d8eb..d83e2c0 100644 --- a/src/obitools/format/sequence/__init__.py +++ b/src/obitools/format/sequence/__init__.py @@ -14,7 +14,6 @@ def skipOnErrorIterator(seqIterator): seq = si.next() yield seq except Exception,e: - print >>sys.stderr,"coucou" if isinstance(e,StopIteration): raise e else: diff --git a/src/obitools/seqdb/embl/parser.py b/src/obitools/seqdb/embl/parser.py index b90278f..f12ef3b 100644 --- a/src/obitools/seqdb/embl/parser.py +++ b/src/obitools/seqdb/embl/parser.py @@ -29,20 +29,24 @@ def __emblparser(text): acs = acs.split() ac = acs[0] acs = acs[1:] - de = _deMatcher.search(header).group() de = _cleanDe.sub(' ',de).strip().strip('.') - except AttributeError,e: - print >>sys.stderr,'=======================================================' - print >>sys.stderr,text - print >>sys.stderr,'=======================================================' - raise e + except Exception as e: + print>>sys.stderr, "\nCould not import sequence id:", text.split()[1], "(error raised:", e, ")" + # Do not raise any Exception if you need the possibility to resume the generator + # (Python generators can't resume after any exception is raised) + return None return (ac,seq,de,header,ft,acs) + def emblParser(text): - return embl.EmblSequence(*__emblparser(text)) + parsed_text = __emblparser(text) + if parsed_text is not None: + return embl.EmblSequence(*parsed_text) + else: + return None def emblIterator(file): diff --git a/src/obitools/seqdb/genbank/parser.py b/src/obitools/seqdb/genbank/parser.py index b52fe59..f424562 100644 --- a/src/obitools/seqdb/genbank/parser.py +++ b/src/obitools/seqdb/genbank/parser.py @@ -25,16 +25,21 @@ def __gbparser(text): acs = acs[1:] de = _deMatcher.search(header).group() de = _cleanDe.sub(' ',de).strip().strip('.') - except AttributeError,e: - print >>sys.stderr,'=======================================================' - print >>sys.stderr,text - print >>sys.stderr,'=======================================================' - raise e + except Exception as e: + print>>sys.stderr, "\nCould not import sequence id:", text.split()[1], "(error raised:", e, ")" + # Do not raise any Exception if you need the possibility to resume the generator + # (Python generators can't resume after any exception is raised) + return None return (ac,seq,de,header,ft,acs) + def genbankParser(text): - return gb.GbSequence(*__gbparser(text)) + parsed_text = __gbparser(text) + if parsed_text is not None: + return gb.GbSequence(*parsed_text) + else: + return None def genbankIterator(file): @@ -43,7 +48,11 @@ def genbankIterator(file): def genpepParser(text): - return gb.GpepSequence(*__gbparser(text)) + parsed_text = __gbparser(text) + if parsed_text is not None: + return gb.GpepSequence(*parsed_text) + else: + return None def genpepIterator(file):