Mercurial > repos > dereeper > uniqprimer
comparison uniqprimer-0.5.0/primertools/fastaparser.py @ 3:3249d78ecfc2 draft
Uploaded
author | dereeper |
---|---|
date | Mon, 03 Jan 2022 09:56:55 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:7e0438dad4e9 | 3:3249d78ecfc2 |
---|---|
1 ''' | |
2 Created on Jan 1, 2011 | |
3 | |
4 @author: John L. Herndon | |
5 @contact: herndon@cs.colostate.edu | |
6 @organization: Colorado State University | |
7 @group: Computer Science Department, Asa Ben-Hur's laboratory | |
8 ''' | |
9 | |
10 | |
11 import utils | |
12 import primersequence | |
13 | |
14 from Bio import SeqIO | |
15 from Bio import Seq | |
16 from Bio import Alphabet | |
17 | |
18 def parseFastaFileAsPrimerSequence( fileName ): | |
19 | |
20 utils.logMessage("fastaparser::parseFastaFileAsPrimerSequence( )", "parsing fasta file {0}".format( fileName ) ) | |
21 returnValue = { } | |
22 | |
23 sequences = SeqIO.parse( open( fileName ), "fasta" ) | |
24 | |
25 for sequence in sequences: | |
26 seqdata = primersequence.PrimerSequence( sequence.id, len( sequence ), sequence.seq ) | |
27 returnValue[ sequence.id ] = seqdata | |
28 | |
29 utils.logMessage("fastaparser::parseFastaFileAsPrimerSequence( )", "read {0} sequences".format( len( returnValue.keys( ) ) ) ) | |
30 | |
31 return returnValue | |
32 | |
33 def parseFastaFile( fileName ): | |
34 ''' | |
35 parse a fasta file and return a list of Bio.Seq | |
36 ''' | |
37 utils.logMessage("fastaparser::parseFastaFile( )", "parsing fasta file {0}".format( fileName ) ) | |
38 | |
39 sequences = SeqIO.parse( open( fileName ), "fasta" ) | |
40 | |
41 return sequences | |
42 | |
43 def writeFastaFile( sequences, fileName ): | |
44 ''' | |
45 write a set of sequences to a fasta file. | |
46 returns the name of the new file | |
47 ''' | |
48 | |
49 primerSequenceIdent = "primer_sequences" | |
50 utils.logMessage( "PrimerManager::writeFastaFile( )", "Writing {0} sequences to fasta file".format( len( sequences ) ) ) | |
51 seqRecords = [ ] | |
52 i = 0 | |
53 for sequence in sequences: | |
54 seqStr = str( reduce( lambda x, y: str( x )+str( y ), sequence) ) | |
55 seqRecord = SeqIO.SeqRecord( Seq.Seq( seqStr, Alphabet.IUPAC.extended_dna ), id="seq_{0}".format( i ) ) | |
56 seqRecords.append( seqRecord ) | |
57 i += 1 | |
58 | |
59 SeqIO.write( seqRecords, open( fileName, "w" ), "fasta" ) | |
60 | |
61 utils.logMessage( "PrimerManager::writeFastaFile( )", "writing fasta file complete" ) | |
62 return fileName | |
63 |