| Previous changeset 2:7e0438dad4e9 (2022-01-03) Next changeset 4:1306b28be7c3 (2022-01-03) |
|
Commit message:
Uploaded |
|
added:
uniqprimer-0.5.0/PKG-INFO uniqprimer-0.5.0/README.txt uniqprimer-0.5.0/build/lib/primertools/__init__.py uniqprimer-0.5.0/build/lib/primertools/eprimerparser.py uniqprimer-0.5.0/build/lib/primertools/excludefilemanager.py uniqprimer-0.5.0/build/lib/primertools/fastaparser.py uniqprimer-0.5.0/build/lib/primertools/includefilemanager.py uniqprimer-0.5.0/build/lib/primertools/nucmerparser.py uniqprimer-0.5.0/build/lib/primertools/primermanager.py uniqprimer-0.5.0/build/lib/primertools/primersearchutils.py uniqprimer-0.5.0/build/lib/primertools/primersequence.py uniqprimer-0.5.0/build/lib/primertools/programs.py uniqprimer-0.5.0/build/lib/primertools/utils.py uniqprimer-0.5.0/build/scripts-2.6/uniqprimer.py uniqprimer-0.5.0/data/PX099A.fa uniqprimer-0.5.0/data/X11-5Agenome.fasta uniqprimer-0.5.0/data/XCCgenome.fasta uniqprimer-0.5.0/data/Xcampestris.fasta uniqprimer-0.5.0/data/Xoc_BLS256.fasta uniqprimer-0.5.0/data/Xoo_KACC_10331.fasta uniqprimer-0.5.0/log uniqprimer-0.5.0/logfile uniqprimer-0.5.0/logfile.txt uniqprimer-0.5.0/nucmer_alignments.coords uniqprimer-0.5.0/nucmer_alignments.delta uniqprimer-0.5.0/outalex uniqprimer-0.5.0/outfile.txt uniqprimer-0.5.0/output uniqprimer-0.5.0/primers.txt uniqprimer-0.5.0/primertools/__init__.py uniqprimer-0.5.0/primertools/__init__.pyc uniqprimer-0.5.0/primertools/eprimerparser.py uniqprimer-0.5.0/primertools/eprimerparser.pyc uniqprimer-0.5.0/primertools/excludefilemanager.py uniqprimer-0.5.0/primertools/excludefilemanager.pyc uniqprimer-0.5.0/primertools/fastaparser.py uniqprimer-0.5.0/primertools/fastaparser.pyc uniqprimer-0.5.0/primertools/includefilemanager.py uniqprimer-0.5.0/primertools/includefilemanager.pyc uniqprimer-0.5.0/primertools/nucmerparser.py uniqprimer-0.5.0/primertools/nucmerparser.pyc uniqprimer-0.5.0/primertools/primermanager.py uniqprimer-0.5.0/primertools/primermanager.pyc uniqprimer-0.5.0/primertools/primersearchutils.py uniqprimer-0.5.0/primertools/primersearchutils.pyc uniqprimer-0.5.0/primertools/primersequence.py uniqprimer-0.5.0/primertools/primersequence.pyc uniqprimer-0.5.0/primertools/programs.py uniqprimer-0.5.0/primertools/programs.pyc uniqprimer-0.5.0/primertools/utils.py uniqprimer-0.5.0/primertools/utils.pyc uniqprimer-0.5.0/seqForPrimer3.fa uniqprimer-0.5.0/setup.py uniqprimer-0.5.0/stdout uniqprimer-0.5.0/uniqprimer.py uniqprimer-0.5.0/uniqprimer_ok.py uniqprimer-0.5.0/utils.py |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/PKG-INFO --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/PKG-INFO Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: uniqprimer +Version: 0.5.0 +Summary: A Python tool for finding primers unique to a given genome +Home-page: UNKNOWN +Author: John Herndon +Author-email: johnlherndon@gmail.com +License: GNU GPL v3 +Description: UNKNOWN +Platform: UNKNOWN |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/README.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/README.txt Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,5 @@ +Installing the modded python scripts +1- copy <uniqprimer.py> to the uniqprimer installation directory +2- copy utils.py to primertools/ directory in the install dir +3- re-run uniqprimer setup (sudo python setup.py) + |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/__init__.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,10 @@ +__all__ = [ 'eprimerparser', + 'excludefilemanager', + 'fastaparser', + 'includefilemanager', + 'nucmerparser', + 'primermanager', + 'primersearchutils', + 'primersequence', + 'programs', + 'utils' ] |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/eprimerparser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/eprimerparser.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,75 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import os +import utils +import re + +def parsePrimerSequences( eprimerFile ): + ''' + parse an eprimer3 output file for all primers + ''' + + utils.logMessage( "eprimerparser::parsePrimerSequences( )", "parsing for primer sequences" ) + if os.path.exists( eprimerFile ) == False: + utils.logMessage( "eprimerparser::parsePrimerSequences( )", "ERROR - eprimer file was not found" ) + raise utils.NoFileFoundException( eprimerFile ) + + + primers = [ ] + primerFile = open( eprimerFile ) + + currentPrimer = None + + nextPrimerId = 0 + for line in primerFile.readlines( ): + + if line[ 0 ] == '# ': + continue + + if line.find( "PRODUCT SIZE" ) != -1: + if currentPrimer is not None: + primers.append( currentPrimer ) + currentPrimer = utils.PrimerSet( str( nextPrimerId ) ) + nextPrimerId += 1 + productSize = int( line.split( ':' )[ 1 ].strip( ) ) + currentPrimer.setProductSize( productSize ) + else: + tokens = re.split( ' *', line.strip( ) ) + if len( tokens ) == 7: + + sequence = tokens[ 6 ] + temp = tokens[ 4 ] + + if tokens[ 0 ] == "FORWARD": + currentPrimer.setForwardPrimerData( sequence, temp ) + elif tokens[ 0 ] == "REVERSE": + currentPrimer.setReversePrimerData( sequence, temp ) + + if currentPrimer is not None: + primers.append( currentPrimer ) + + utils.logMessage( "eprimerparser::parsePrimerSequences( )", "finished parsing. found {0} primers".format( len( primers ) ) ) + return primers + + + + + + + + + + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/excludefilemanager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/excludefilemanager.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,75 @@ +''' +Created on Jan 16, 2011 + +@author: jlh +''' +import utils +import fastaparser +from Bio import SeqIO +import os + +class ExcludeFileManager( object ): + ''' + A class to manage fasta files to be excluded + ''' + + def __init__( self ): + """ + Initialize the ExcludeFileManager + """ + self.excludeFiles = [ ] + self.outputFile = "" + + def getOutputFileName( self ): + """ + get the name of the file combined-sequence fasta file + """ + return self.outputFile + + def addExcludeFile( self, excludeFile ): + """ + add a file to be managed by the ExcludeFileManager + """ + + if os.path.exists( excludeFile ) == False: + utils.logMessage( "ExcludeFileManager::addExcludeFile( )", "exclude file not found: {0}".format( excludeFile ) ) + raise utils.NoFileFoundException( excludeFile ) + + utils.logMessage( "ExcludeFileManager::addExcludeFile( )", "adding exclude file {0}".format( excludeFile ) ) + self.excludeFiles.append( excludeFile ) + + def buildOutputFileName( self ): + """ + build a unique file name to store the combined output sequences to + """ + self.outputFile = utils.getTemporaryDirectory( ) + "/combined_exlude.ffn" + utils.logMessage( "ExcludeFileManager::buildOutputFileName( )", " exclude file: {0}".format( self.outputFile ) ) + + def exportSequences( self ): + """ + combine all exclude files into a single exclude file + """ + + utils.logMessage( "ExcludeFileManager::exportSequences( )", "parsing exclude sequences") + + #read all exclude file sequences into memory + sequences = [ ] + for excludeFile in self.excludeFiles: + sequences.extend( fastaparser.parseFastaFile( excludeFile ) ) + + utils.logMessage( "ExcludeFileManager::exportSequences( )", "finished parsing, writing to a common file" ) + + self.buildOutputFileName( ) + #combine the sequences and write them to a file + + SeqIO.write( sequences, open( self.outputFile, "w" ), "fasta" ) + + utils.logMessage( "ExcludeFileManager::exportSequences( )", "All sequences exported" ) + + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/fastaparser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/fastaparser.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,63 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import utils +import primersequence + +from Bio import SeqIO +from Bio import Seq +from Bio import Alphabet + +def parseFastaFileAsPrimerSequence( fileName ): + + utils.logMessage("fastaparser::parseFastaFileAsPrimerSequence( )", "parsing fasta file {0}".format( fileName ) ) + returnValue = { } + + sequences = SeqIO.parse( open( fileName ), "fasta" ) + + for sequence in sequences: + seqdata = primersequence.PrimerSequence( sequence.id, len( sequence ), sequence.seq ) + returnValue[ sequence.id ] = seqdata + + utils.logMessage("fastaparser::parseFastaFileAsPrimerSequence( )", "read {0} sequences".format( len( returnValue.keys( ) ) ) ) + + return returnValue + +def parseFastaFile( fileName ): + ''' + parse a fasta file and return a list of Bio.Seq + ''' + utils.logMessage("fastaparser::parseFastaFile( )", "parsing fasta file {0}".format( fileName ) ) + + sequences = SeqIO.parse( open( fileName ), "fasta" ) + + return sequences + +def writeFastaFile( sequences, fileName ): + ''' + write a set of sequences to a fasta file. + returns the name of the new file + ''' + + primerSequenceIdent = "primer_sequences" + utils.logMessage( "PrimerManager::writeFastaFile( )", "Writing {0} sequences to fasta file".format( len( sequences ) ) ) + seqRecords = [ ] + i = 0 + for sequence in sequences: + seqStr = str( reduce( lambda x, y: str( x )+str( y ), sequence) ) + seqRecord = SeqIO.SeqRecord( Seq.Seq( seqStr, Alphabet.IUPAC.extended_dna ), id="seq_{0}".format( i ) ) + seqRecords.append( seqRecord ) + i += 1 + + SeqIO.write( seqRecords, open( fileName, "w" ), "fasta" ) + + utils.logMessage( "PrimerManager::writeFastaFile( )", "writing fasta file complete" ) + return fileName + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/includefilemanager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/includefilemanager.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,132 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import fastaparser +import utils +import os +import programs +import nucmerparser +import copy + +class IncludeFileManager( object ): + """ + A class to manage include files + """ + #This class needs some work. Need to come up with a way to find unique sequences between all include files.... + + def __init__( self ): + """ + Constructor + """ + self.includeFiles = [ ] + self.nucmer = programs.Nucmer( ) + self.isExcludeFileInitialized = False + self.isReferenceFileInitialized = False + self.referenceFile = None + self.referenceSequence = None + self.uniqueSequences = None + + def setExcludeFile( self, excludeFileName ): + """ + A function to set the exclude file that will be used when nucmer is called + """ + + utils.logMessage( "IncludeFileManager::setExcludeFile( )", "fileName {0}".format( excludeFileName ) ) + self.excludeFileName = excludeFileName + self.isExcludeFileInitialized = True + + + def findUniqueSequencesInFile(self, doWantFile, doNotWantFile ): + utils.logMessage( "IncludeFileManager::findUniqueSequence( )", "running nucmer for reference file: {0}".format( doWantFile ) ) + coordFile = self.nucmer.execute( [ doWantFile, doNotWantFile ] ) + + matches = nucmerparser.parseCoordMatchFile( coordFile ) + sequences = fastaparser.parseFastaFileAsPrimerSequence( doWantFile ) + + for match in matches: + if sequences.has_key( match.seqID ): + primerData = sequences[ match.seqID ] + primerData.addMatch( match ) + else: + print "Warning: id from .coords file not found in sequence data..." + utils.logMessage( "IncludeFileManager::processMatches( )", "WARNING - an ID was read in a Match that does not correspond to a sequence read from the fasta file!" ) + + returnValue = [ ] + + for key in sequences.keys( ): + sequence = sequences[ key ] + subSequences = sequence.getNonMatchedSubSequences( ) + returnValue.extend( subSequences ) + + return returnValue + + + def findCommonSequencesInFile(self, want, alsoWant ): + utils.logMessage( "IncludeFileManager::findUniqueSequence( )", "running nucmer for reference file: {0}".format( want ) ) + + print want, alsoWant + coordFile = self.nucmer.execute( [ want, alsoWant ] ) + + matches = nucmerparser.parseCoordMatchFile( coordFile ) + sequences = fastaparser.parseFastaFileAsPrimerSequence( want ) + + for match in matches: + if sequences.has_key( match.seqID ): + primerData = sequences[ match.seqID ] + primerData.addMatch( match ) + + returnValue = [ ] + for key in sequences: + sequence = sequences[ key ] + subSequences = sequence.getMatchedSubSequences( ) + returnValue.extend( subSequences ) + + + return returnValue + + + def processIncludeFile( self, includeFileName ): + """ + A function that adds and processes and include file. + An exclude file must be set for this function to be called. + """ + + utils.logMessage( "IncludeFileManager::processIncludeFile( )", "processing {0}".format( includeFileName ) ) + + if self.isExcludeFileInitialized == False: + utils.logMessage( "IncludeFileManager::processIncludeFile( )", "no exclude file set".format( includeFileName ) ) + raise utils.ModuleNotInitializedException( "includefilemanager", "no exclude file set" ) + + if self.isReferenceFileInitialized == False: + + utils.logMessage( "IncludeFileManager::processIncludeFile( )", "running nucmer for reference file: {0}".format( includeFileName ) ) + self.uniqueSequences = self.findUniqueSequencesInFile( includeFileName, self.excludeFileName ) + + self.referenceFile = includeFileName + self.isReferenceFileInitialized = True + + else: + #write the unique sequences to a temp file + tempSequences = utils.getTemporaryDirectory( ) + "/tempSequences.fasta" + fastaparser.writeFastaFile( self.uniqueSequences, tempSequences ) + self.findCommonSequencesInFile( includeFileName, tempSequences ) + self.includeFiles.append( includeFileName ) + + + def getUniqueSequences( self ): + """ + getUniqueSequences - return a dictionary of all sequences that are found in include fasta files, but not the + combined exclude fasta files. The dictionary is indexed by the file ID + """ + + return self.uniqueSequences + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/nucmerparser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/nucmerparser.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,68 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils +import os +import re + +def parseCoordMatchLine( match ): + + match = match.replace( '\t', ' ' ) + sections = match.split( '|', 4 ) + + #parse the first section, containing the start and end + #locations of the match + firstsection = sections[ 0 ].strip( ) + firstsectiontokens = re.split( ' +', firstsection ) + start = int( firstsectiontokens[ 0 ].strip( ) ) + end = int( firstsectiontokens[ 1 ].strip( ) ) + + #parse the last section, containing the sequenceID + lastsection = sections[ -1 ].strip( ) + lastsectiontokens = re.split( " +", lastsection ) + + seqid = lastsectiontokens[ 0 ].strip( ) + + return utils.Match( start, end, seqid ) + +def parseCoordMatchFile( coordFileName ): + ''' + A method to parse the coord file. + returns a list of utils.match objects + ''' + returnValue = [ ] + + #throw if the file doesn't exist + if os.path.exists( coordFileName ) == False: + raise utils.NoFileFoundException( coordFileName ) + + + #read the nucmer file into memory + lines = open( coordFileName ).readlines( ) + + #skip forward to the start of the matches. + i = 0 + while lines[ i ] [ 0] != '=': + i += 1 + matchLines = lines[ i+1 : ] + + #parse each line for match start, end and sequenceID + for matchLine in matchLines: + returnValue.append( parseCoordMatchLine( matchLine ) ) + + utils.logMessage( "NucmerParser::parseCoordMatchFile( )", "Parse {0}, finding {1} matches".format( coordFileName, len( returnValue ) ) ) + + return returnValue + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/primermanager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/primermanager.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,108 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils +import tempfile +import programs +import eprimerparser +import primersearchutils +import fastaparser +import exceptions + + + + +class PrimerManager( object ): + ''' + A class used to find primers given a set of sequences. + ''' + + def __init__( self, eprimerOptions ): + self.eprimer = programs.Eprimer( eprimerOptions ) + self.primersearch = programs.PrimerSearch( ) + + + def findPrimers( self, sequences, outputFile, primerpairs = 20, returnPrimers = False ): + ''' + A method to find a set of primers based on the given sequences + ''' + + utils.logMessage( "PrimerManager::findPrimer(s )", "writing sequences to a fasta file" ) + + #eleminate all sequences that are lees than the desired amplification size... + + if len( sequences ) == 4 : + print sequences + sequences = filter( lambda x: len( x ) >= 200, sequences ) + + primerFastaFile = utils.getTemporaryDirectory( ) + "/sequenceForEprimer.fasta" + fastaparser.writeFastaFile( sequences, primerFastaFile ) + + utils.logMessage( "PrimerManager::findPrimers( )", "executing eprimer3 program" ) + self.eprimer.execute( [ primerFastaFile, outputFile ] ) + utils.logMessage( "PrimerManager::findPrimer( )", "eprimer3 file {0} created. Parsing for primers.".format( outputFile ) ) + + primers = eprimerparser.parsePrimerSequences( outputFile ) + + utils.logMessage( "PrimerManager::findPrimers( )", "parsing for sequences complete" ) + + if returnPrimers == True: + return primers + + + def getPrimers( self, sequences ): + + utils.logMessage( "PrimerManager::getCommonPrimers", "finding primers that are common to all include files" ) + + if len( sequences ) == 0: + raise utils.NoPrimersExistException( ) + + referenceEPrimerFile = utils.getTemporaryDirectory( ) + "/referenceprimers.ep3" + + #run eprimer to find primers in the reference file + primers = self.findPrimers( sequences, referenceEPrimerFile, 20, True ) + + + if len( primers ) == 0: + raise utils.NoPrimersExistException( ) + + return primers + + def crossValidatePrimers( self, primers, excludeFile ): + + excludeSequences = fastaparser.parseFastaFile( excludeFile ) + + #write a primer search input file with using the primers argument + primerInputFileName = utils.getTemporaryDirectory( ) + "/tmpinputprimers.ps" + primerOutputFileName = utils.getTemporaryDirectory( ) + "/tmpoutputprimers.ps" + primersearchutils.writePrimerSearchInputFile( primers, primerInputFileName ) + + utils.logMessage( "PrimerManager::crossValidatePrimers", "finding primers that are not in the supplied exclude file" ) + #run primer search to identify the primers + self.primersearch.execute( [ excludeFile, primerInputFileName, primerOutputFileName, "0" ] ) + + #read the found primers from the file + commonPrimers = primersearchutils.parsePrimerSearchFile( primerOutputFileName ) + + #compose a list of primers that are not found in the exclude file... + returnValue = [ ] + + for primer in primers: + if primer.id not in commonPrimers: + returnValue.append( primer ) + + utils.logMessage( "PrimerManager::crossValidatePrimers", "{0} unique primers identified out of {1}".format( len( returnValue ), len( primers ) ) ) + + if len( returnValue ) == 0: + raise utils.NoPrimersExistException( ) + + return returnValue + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/primersearchutils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/primersearchutils.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,55 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils + +def writePrimerSearchInputFile( primerSets, outputFile ): + ''' + A function to write primer pairs to a file formatted as primer search input. + primerPairs - a list of utils.PrimerSet objects + outputFile - a string containing the path to the output file + ''' + + file = open( outputFile, 'w' ) + i = 0 + for primerSet in primerSets: + i += 1 + if primerSet.reversePrimer == "": + print "Error - primer {0} has no reverse primer. {1} primers total".format( i, len( primerSets ) ) + continue + file.write( primerSet.id + "\t" + primerSet.forwardPrimer + "\t" + primerSet.reversePrimer + "\n" ) + + file.close( ) + +def parsePrimerSearchFile( primerSearchFileName ): + ''' + return a list of primer ids that are associated with at least one amplimer in the primer search output file. + ''' + found = [ ] + + amplimerFound = False + currentId = -1; + for line in open( primerSearchFileName ).readlines( ): + + if "Primer name" in line: + #the id of the primer is found after the string "Primer name" in the file + currentId = line.split( ' ' )[ 2: ][ 0 ].strip( ) + elif "Amplimer" in line and currentId not in found: + found.append( currentId ) + + if amplimerFound == True: + found.append( currentId ) + + return found + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/primersequence.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/primersequence.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,110 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils + +class PrimerSequence( object ): + """ + record sequence data, and store matched parts of the sequence + """ + + def __init__( self, seqID, seqLength, sequence ): + #an unmatched sub-sequence that starts at 0 goes until the end of the the sequence, to start out with. + + self.seqID = seqID + self.seqLength = seqLength + self.matchedSubSequences = [ ] + self.sequence = sequence + + def addMatch( self, match ): + """ + Input: a utils.Match object + Removes the matched sequence from the list of valid sequence data + """ + + self.matchedSubSequences.append( ( match.start, match.end ) ) + + def findNonMatchedIndices( self ): + + utils.logMessage("PrimerSequence::findValidIndices( )", "getting unmatched sequence indices" ) + + sequence = set( range( self.seqLength ) ) + + #find the indices that are NOT excluded + utils.logMessage( "PrimerSequence::findValidIndices( )", "there are {0} excluded sequences for {1}".format( len( self.matchedSubSequences ), self.seqID ) ) + for exclude in self.matchedSubSequences: + excludedSequence = set( range( exclude[ 0 ], exclude[ 1 ] ) ) + utils.logMessage("PrimerSequence::findValidIndices( )", "removing exclude sequence {0} - {1}".format( exclude[ 0 ], exclude[ 1 ] ) ) + sequence = sequence - excludedSequence + + utils.logMessage("PrimerSequence::findValidIndices( )", "{0} unique indices".format( len( sequence ) ) ) + + return list( sequence ) + + def findNonMatchedIndexSequences( self, indices ): + + utils.logMessage("PrimerSequence::findValidIndexSequences( )", "getting sequences from unique indices" ) + + sequences = [ ] + curSeq = [ ] + for index in indices: + if len( curSeq ) == 0: + curSeq.append( index ) + elif index == curSeq[ -1 ] + 1: + curSeq.append( index ) + else: + sequences.append( curSeq ) + curSeq = [ ] + sequences.append( curSeq ) + utils.logMessage("PrimerSequence::findValidIndexSequences( )", "{0} sequences found".format( len( sequences ) ) ) + + return sequences + + + def getNonMatchedSubSequences( self, minLength = 100 ): + """ + Get all valid sub sequences after removing matches + """ + + utils.logMessage("PrimerSequence::getNonMatchedSubSequences( )", "finding valid sub sequences for {0}".format( self.seqID ) ) + + indices = self.findNonMatchedIndices( ) + indexSequences = self.findNonMatchedIndexSequences( indices ) + + subSequences = [ ] + + for indexSequence in indexSequences: + subSequence = [ self.sequence[ i ] for i in indexSequence ] + + if len( subSequence ) >= minLength: + subSequences.append( subSequence ) + + return subSequences + + def getMatchedSubSequences( self, minLength = 100 ): + utils.logMessage("PrimerSequence::getMatchedSubSequences( )", "finding valid sub sequences for {0}".format( self.seqID ) ) + + returnValue = [ ] + for match in self.matchedSubSequences: + subSequence = self.sequence[ match[ 0 ]:match[ 1 ] ] + + if len( subSequence ) >= minLength : + returnValue.append( subSequence ) + + return returnValue + + + + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/programs.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/programs.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,141 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import utils +import os +import subprocess + + +class ProgramBase( object ): + + def __init__( self ): + + self.programName = None + self.proc = None + + def getProcessArgs( self, args ): + crash #abstract + + def execute( self, args, async = False ): + ''' + run the nucmer program with a given compare file and an exclude file + ''' + + utils.logMessage( "ProgramBase::Execute( )", "Running the {0} program.".format( self.programName ) ) + + args, outputFile = self.getProcessArgs( args ) + + print "*** Running {0} ***".format( self.programName ) + + utils.logList( "ProgramBase::Execute( )", args ) + + proc = subprocess.Popen( args ) + + if async == False: + #wait for the nucmer instance to finish + proc.wait( ) + print "*** Running {0} Complete ***".format( self.programName ) + + #return the name of the coords file + return outputFile + + def isFinished( self ): + ifIsFinished + +class Nucmer( ProgramBase ): + + def __init__( self ): + #if we can't find the nucemer binary, throw + nucmerPath = utils.search_file( 'nucmer' ) + ProgramBase.__init__( self ) + if nucmerPath is None: + raise utils.ProgramNotFoundException( 'nucmer', "Please ensure that the MUMmer package is installed and configured on your system." ) + + self.nucmer = nucmerPath + + self.programName = "nucmer" + self.outputExtension = ".coords" + + + def getProcessArgs( self, inputArgs ): + + + time = utils.getTimeStamp( ) + + identifier = "nucmer_alignments" + args = [ self.nucmer, '-p', identifier, '-o', '--minmatch', '300', '--maxgap', '1' ] + + args.extend( inputArgs ) + + outputFile = "{0}.coords".format( identifier ) + + return args, outputFile + +class Eprimer( ProgramBase ): + + def __init__( self, eprimerOptions ): + + self.programName = "EPrimer3" + self.options = eprimerOptions + + primer3corePath = utils.search_file( "primer3_core" ) + if primer3corePath is None: + raise utils.ProgramNotFoundException( "primer3_core", "Please ensure that the primer3 package is installed on your system. It can be obtained from http://primer3.sourceforge.net/" ) + + eprimerPath = utils.search_file( "eprimer3" ) + if eprimerPath is None: + raise utils.ProgramNotFoundException( 'eprimer3', "Please ensure that the EMBOSS package is installed and configured on your system." ) + + self.primer3core = primer3corePath + self.eprimer3 = eprimerPath + + def getProcessArgs( self, inputArgs ): + + #todo - allow user to determine output file location/name + + inputFasta = inputArgs[ 0 ] + outputFile = inputArgs[ 1 ] + args = [ self.eprimer3, inputFasta, outputFile, '-numreturn', '2', '-prange', self.options.getProductRange( ), '-osize', str( self.options.getPrimerSize( ) ), + '-minsize', str( self.options.getMinPrimerSize( ) ), '-maxsize', str( self.options.getMaxPrimerSize( ) )] + + return args, outputFile + +class PrimerSearch( ProgramBase ): + def __init__( self ): + + self.programName = "PrimerSearch" + primerSearchPath = utils.search_file( "primersearch" ) + if primerSearchPath is None: + raise utils.ProgramNotFoundException( "primersearch", "Please ensure that the EMBOSS package is installed on your system." ) + + self.primerSearch = primerSearchPath + + def getProcessArgs( self, inputArgs ): + ''' + usage for this program: inputArgs is an array length 4 + inputArgs[0] = sequence file + inputArgs[1] = primer pairs file + inputArgs[2] = output file name + inputArgs[3] = percent mismatch + ''' + + args = [ self.primerSearch ] + args.extend( [ '-seqall', inputArgs[ 0 ] ] ) + args.extend( [ '-infile', inputArgs[ 1 ] ] ) + args.extend( [ '-mismatchpercent', inputArgs[ 3 ] ] ) + args.extend( [ '-outfile', inputArgs[ 2 ] ] ) + + + return args, inputArgs[ 2 ] + + + + + |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/lib/primertools/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/lib/primertools/utils.py Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,207 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import exceptions +import time +import os.path +from os import pathsep +from string import split +import tempfile +import shutil + +def getTimeStamp( ): + return time.strftime('%d%m%Y-%H%M%S') + + +class Match( object ): + ''' + record where two genomes line up. stores only alignments for one part of the genome + ''' + def __init__( self, start, end, seqID ): + self.seqID = seqID + self.start = start + self.end = end + + def __repr__( self ): + return "Start: {0}, End:{1}, SeqID:{2}".format( self.start, self.end, self.seqID ) + +class PrimerSet( object ): + + def __init__( self, id ): + self.id = id + self.productSize = 0 + self.forwardPrimer = "" + self.forwardMeltTemp = "" + self.reversePrimer = "" + self.reverseMeltTemp = "" + + + def setProductSize( self, productSize): + self.productSize = productSize + + def setForwardPrimerData( self, sequence, temp ): + self.forwardPrimer = sequence + self.forwardMeltTemp = temp + + def setReversePrimerData( self, sequence, temp): + self.reversePrimer = sequence + self.reverseMeltTemp = temp + + +#search function from http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/ +def search_file( filename ): + """ find file + """ + search_path = os.getenv( 'PATH' ) + logMessage( "utils::search_file", "Path: {0}".format( search_path ) ) + file_found = 0 + paths = split( search_path, pathsep ) + for path in paths: + if os.path.exists( os.path.join( path, filename ) ): + file_found = 1 + break + if file_found: + return os.path.abspath( os.path.join( path, filename ) ) + else: + return None + +tempDir = "" +removeTemp = True + +verbose = False + + +def initialize( isVerbose, cleanup, lf): ##Mau: added lf + global removeTemp + global tempDir + global verbose + global logFile ##Mau: added logFile variable + + logFile = lf #:Mau add line + + verbose = isVerbose + tempDir = tempfile.mkdtemp( dir="" ) + initializeLogging() + removeTemp = cleanup + logMessage( "utils::Initialize( )", "Initialization complete. Temporary directory: {0}".format( tempDir ) ) + +logFile = None + + +def printProgressMessage( message ): + global verbose + if verbose == True: + print message + +def getTemporaryDirectory( ): + global tempDir + return tempDir + +def initializeLogging(): + global logFile + #logFileName = "uniqprimer_{0}.log".format( getTimeStamp( ) ) + #logFileName = "log_uniqprimer.txt" ##Mau: commented out + logFileName = logFile ##Mau: changed + logFile = open( logFileName, 'w' ) + +def shutdown( ): + global removeTemp + global tempDir + shutdownLogging( ) + if removeTemp == True: + print "*** Removing temporary directory ***" + shutil.rmtree( tempDir ) + +def shutdownLogging( ): + global logFile + if logFile != None: + logFile.close( ) + +def logList( method, list ): + + message = reduce( lambda x,y: str( x ) + " " + str( y ) , list ) + logMessage(method, message) + + +def logMessage( method, message ): + global logFile + if logFile == None: + return + log = "{0} - {1}".format( method, message ) + + logFile.write( log + "\n" ) + logFile.flush( ) + +class EPrimerOptions( object ): + + def __init__( self ): + + self.minPrimerSize = 18 + self.maxPrimerSize = 27 + self.primerSize = 20 + self.productRange = "200-250" + + def setPrimerSize( self, size ): + + size = int( size ) + if size > 35: + size = 35 + + self.primerSize = size + if self.primerSize < self.minPrimerSize: + self.maxPrimerSize = self.primerSize + elif self.primerSize > self.maxPrimerSize: + self.maxPrimerSize = self.primerSize + + def getPrimerSize( self ): + return self.primerSize + + def setMinPrimerSize( self, minSize): + self.minPrimerSize = minSize + + def getMinPrimerSize( self ): + return self.minPrimerSize + + def setMaxPrimerSize( self, size ): + self.maxPrimerSize = size + + def getMaxPrimerSize( self ): + return self.maxPrimerSize + + def setProductRange( self, range ): + self.productRange = range + + def getProductRange( self ): + return self.productRange + +class NoPrimersExistException( exceptions.BaseException ): + + def __init__( self ): + exceptions.BaseException( self ) + +class ProgramNotFoundException( exceptions.BaseException ): + + def __init__( self, programName, details ): + exceptions.BaseException.__init__(self) + self.programName = programName + self.details = details + +class NoFileFoundException( exceptions.BaseException ): + + def __init__( self, filename ): + exceptions.BaseException.__init__(self) + self.filename = filename + + +class ModuleNotInitializedException( exceptions.BaseException ): + + def __init__( self, moduleName, reason ): + self.moduleName = moduleName + self.reason = reason |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/build/scripts-2.6/uniqprimer.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/build/scripts-2.6/uniqprimer.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| b'@@ -0,0 +1,241 @@\n+#!/SATA/bioinfo/galaxy/galaxy_env/bin/python\n+\n+\'\'\'\n+Created on Jan 1, 2011\n+\n+@author: John L. Herndon\n+@contact: herndon@cs.colostate.edu\n+@organization: Colorado State University\n+@group: Computer Science Department, Asa Ben-Hur\'s laboratory \n+Mau added the -o primerOutfile -l logfile option\n+\'\'\'\n+\n+import exceptions\n+import sys\n+import time\n+\n+import getopt\n+from primertools import *\n+\n+version="0.5.0"\n+\n+\n+class UniqPrimerFinder( object ):\n+ \n+ def __init__( self, includeFiles, excludeFiles, crossValidate, eprimerOptions):\n+ \n+ utils.logMessage( "UniqPrimerFinder::__init__()", "Initializing UniqPrimerFinder" )\n+ self.includeFiles = includeFiles\n+ self.includeFileManager = includefilemanager.IncludeFileManager( )\n+ \n+ self.excludeFiles = excludeFiles\n+ self.excludeFileManager= excludefilemanager.ExcludeFileManager( )\n+ \n+ self.primerManager = primermanager.PrimerManager( eprimerOptions )\n+ \n+ self.crossValidate = crossValidate\n+\n+ \n+ utils.logMessage( "UniqPrimerFinder::__init__()", "Initializing UniqPrimerFinder - complete" )\n+ \n+ def writeOutputFile( self, primers, outputFileName, maxresults = 100 ):\n+ \'\'\'\n+ primers: a list of PrimerSet obs\n+ \'\'\'\n+ ##outputFileName = uPrimer ##Mau: defined this..\n+ outputFile = open( outputFileName, \'w\' )\n+ \n+ i = 0\n+ for primer in primers:\n+ i += 1\n+ \n+ outputFile.write( "{0}\\t{1}\\t{2}\\t{3}\\n".format( i, primer.forwardPrimer, primer.reversePrimer, primer.productSize ) )\n+ \n+ if i > maxresults:\n+ break\n+ \n+ utils.logMessage( "UniqPrimerFinder::writeOutputFile()", "output file written." )\n+ \n+ \n+ def findPrimers( self, outputFile = "uPrimer.txt" ):\n+\toutputFile = uPrimer ## Mau adds to overwrite the above value\n+\n+ utils.logMessage( "UniqPrimerFinder::findPrimers()", "Finding primers for include files" )\n+ startTime = time.time( )\n+ #generate the combined sequence fasta file for all exclude sequences\n+ utils.printProgressMessage( "*** Creating Combined Fasta File for Exclude Files ***" )\n+ for excludeFile in self.excludeFiles:\n+ self.excludeFileManager.addExcludeFile( excludeFile )\n+ \n+ self.excludeFileManager.exportSequences( )\n+ \n+ self.includeFileManager.setExcludeFile( self.excludeFileManager.getOutputFileName( ) )\n+\n+ utils.printProgressMessage( "*** Finding Sequences Unique to Target Genome ***" )\n+\n+ #run nucmer program on all include files\n+ for includeFile in self.includeFiles:\n+ self.includeFileManager.processIncludeFile( includeFile )\n+ \n+ #get the sequences found in include files, but no the exclude file. \n+ uniqueSequences = self.includeFileManager.getUniqueSequences( )\n+ \n+ utils.printProgressMessage( "*** Finding Primers ***" )\n+ \n+ primers = self.primerManager.getPrimers( uniqueSequences )\n+ \n+ if self.crossValidate == True:\n+ utils.printProgressMessage( "*** Cross Validating Primers ***" )\n+ primers = self.primerManager.crossValidatePrimers( primers, self.excludeFileManager.getOutputFileName( ) )\n+ \n+ \n+ utils.logMessage( "UniqPrimerFinder::findPrimers( )", "found {0} unique sequences".format( len( primers ) ) ) \n+ \n+ self.writeOutputFile( primers, outputFile )\n+ \n+ utils.logMessage( "UniqPrimerFinder::findPrimers()", "Finished finding primers" )\n+ endTime = time.time()\n+ elapsedMinutes = int( ( endTime - startTime ) / 60 )\n+ elapsedSeconds = int( ( endTime - startTime ) % 60 )\n+ print "*** Time Elapsed: {0} minutes, {1} seconds ***".format( elapsedMinutes, elapsedSeconds )\n+ print "*** Output Written to {0} ***'..b' cleanup = True\n+ optlist, args = getopt.getopt( args, opts, longopts )\n+ \n+ includeFiles = [ ]\n+ excludeFiles = [ ]\n+ eprimerOptions = utils.EPrimerOptions( )\n+ \n+ verbose = False\n+ for opt in optlist:\n+ if opt[ 0 ] == \'-i\':\n+ includeFiles.append( opt[ 1 ] )\n+ elif opt[ 0 ] == \'-x\':\n+ excludeFiles.append( opt[ 1] )\n+ elif opt[ 0 ] == \'-v\':\n+ verbose = True \n+ elif opt[ 0 ] == \'-o\': ## Mau added, if -o...\n+ uPrimer = str(opt[1]) ## Mau added, then get filename for outfile after -o\n+ elif opt[ 0 ] == \'-l\': ## Mau added, if -l...\n+ lf = str(opt[1]) ## Mau added, then get filename for logfile after -l\n+ elif opt[ 0 ] == \'--productsizerange\':\n+ eprimerOptions.setProductRange( opt[ 1 ] )\n+ productsizerange = opt[ 1 ]\n+ elif opt[ 0 ] == \'--primersize\':\n+ eprimerOptions.setPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--minprimersize\':\n+ eprimerOptions.setMinPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--maxprimersize\':\n+ eprimerOptions.setMaxPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--crossvalidate\':\n+ crossValidate = True\n+ elif opt[ 0 ] == \'--crossvalidate\':\n+ crossValidate = True\n+ elif opt[ 0 ] == \'--keeptempfiles\':\n+ cleanup = False\n+ elif opt[ 0 ] == \'-h\':\n+ printUsageAndQuit( )\n+ else:\n+ print "Unknown option: " + str( opt[ 0 ] )\n+ printUsageAndQuit( )\n+ #print "uPrimer: " + uPrimer + " log file name: " + lf + "\\n"\n+ if len( includeFiles ) == 0 or len( excludeFiles ) == 0:\n+ \n+ print "You must specify at least one include file and at least one exclude file"\n+ printUsageAndQuit( )\n+\n+ return includeFiles, excludeFiles, crossValidate, cleanup, verbose, eprimerOptions, lf , uPrimer #Mau: add lf, uPrime\n+\n+def main( args, debug = False):\n+ #parse the command line arguments for include and exclude files\n+ \n+ includeFiles, excludeFiles, crossValidate, cleanup, verbose, eprimerOptions, lf, uPrimer = parseArgs( args ) ##Mau add: lf\n+ \n+ utils.initialize( True, cleanup, lf) ##Mau: add lf\n+\n+ #find primers for the include sequences\n+ \n+ try:\n+ utils.logMessage( "uniqprimer::Main( )", "Logging include files: " )\n+ utils.logList( "uniqprimer::Main( )", includeFiles )\n+ utils.logMessage( "uniqprimer::Main( )", "Logging exclude files: " ) \n+ utils.logList( "uniqprimer::Main( )", excludeFiles)\n+ print "*** Finding Primers ***"\n+ uniqPrimer = UniqPrimerFinder( includeFiles, excludeFiles, crossValidate, eprimerOptions) \n+ uniqPrimer.findPrimers( )\n+ except utils.NoFileFoundException as nfe:\n+ print "File not found: " + str( nfe.filename )\n+ printUsageAndQuit( )\n+ except utils.ProgramNotFoundException as pnfe:\n+ print str( pnfe.programName ) + ": program is not installed or is not in your path."\n+ print str( pnfe.details )\n+ except utils.NoPrimersExistException as npe:\n+ print "Failure: No unique primers exist for this combination"\n+ except exceptions.BaseException as e:\n+ print "It appears that an unknown sequence of events has resulted in the internal explosion of this program. Please send the file called \\\'log_uniqprimer.txt\\\' to herndon@cs.colostate.edu and tell that bonehead John to fix it!"\n+ print "Details:"\n+ print e \n+ \n+ utils.shutdown( )\n+\n+ print "*** Finished ***"\n+ \n+if __name__ == \'__main__\':\n+ \n+ #temp_args = "-i data/testdata/smallinclude.ffn -x data/testdata/smallexclude.ffn".split( )\n+ \n+ #temp_args = "-i data/XOO_MAI1_scaffolds.fas -x data/KACC.ffn".split( )\n+ if len( sys.argv ) == 1:\n+ printUsageAndQuit( )\n+ main( sys.argv[ 1: ], debug = True )\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/data/PX099A.fa --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/data/PX099A.fa Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,87336 @@\n+>CP000967\n+CGCCTTTCTGCGCGCCGCAGCCAGCAACAGATGATCATACTTTGATGGATGCTTGGCCCC\n+GCTGTCTGGAACGTCTCGAAGCTGAATTCCCGCCCGAAGATGTCCACACCTGGTTGAAAC\n+CCCTGCAAGCCGAAGACCGCGGCGACAGCATCGTGCTGTACGCCCCGAATGCCTTCATTG\n+TCGACCAGGTCCGCGAACGCTACCTGCCGCGCATCCGCGAGTTGCTGGCGTATTTTGCCG\n+GCAATGGCGAAGTGGCGCTGGCCGTGGGGTCGCGTCCACGTGCGCCCGAGCCGGCTCCGG\n+CACCCGTCGCGGCGACCATTGCGCCGCAGGCTGCGCCGATCGCGCCGTTCGCCGGCAACC\n+TGGATTCGCATTACACCTTCGCCAACTTCGTGGAAGGCCGCAGCAACCAGCTGGGTCTGG\n+CCGCCGCGATCCAGGCCGCGCAGAAGCCCGGCGACCGGGCGCACAACCCGTTGCTGTTGT\n+ACGGCAGCACCGGCCTGGGCAAGACCCACCTGATGTTCGCGGCGGGCAATGCACTGCGGC\n+AAGCCAAACCGGCTGCCAAGGTGATGTACCTGCGTTCGGAACAGTTCTTCAGCGCGATGA\n+TCCGGGCGCTGCAGGACAAGGCGATGGATCAGTTCAAGCGCCAGTTCCAGCAGATTGATG\n+CGTTGCTGATCGACGACATCCAGTTCTTCGCGGGCAAGGACCGTACGCAGGAAGAGTTCT\n+TCCACACCTTCAACGCGCTGTTCGATGGCCGCCAGCAGATCATCCTGACCTGCGACCGCT\n+ACCCGCGCGAAGTGGAGGGCCTGGAGCCGCGGTTGAAGTCGCGCTTGGCCTGGGGCTTGT\n+CGGTCGCGATCGATCCGCCGGATTTCGAAACCCGTGCAGCCATCGTGCTGGCCAAGGCAC\n+GCGAGCGTGGCGCCGAGATTCCCGACGACGTGGCATTTCTGATCGCCAAGAAGATGCGCT\n+CCAACGTGCGCGACCTGGAAGGCGCGCTCAACACGCTGGTGGCGCGCGCCAACTTCACCG\n+GGCGCTCGATCACGGTGGAATTCGCCCAGGAGACGCTGCGCGACCTGTTGCGCGCGCAGC\n+AACAGGCCATCGGCATCCCCAACATCCAGAAAACAGTAGCCGACTACTACGGCCTGCAGA\n+TGAAGGATTTGCTCTCCAAGCGCCGCACGCGTTCGCTGGCACGTCCGCGCCAGGTGGCGA\n+TGGCGCTGGCCAAGGAGCTCACCGAACACAGCCTGCCGGAAATCGGCGATGCCTTCGCCG\n+GCCGCGACCACACCACCGTGCTGCATGCCTGCCGGCAGATCCGCACGCTGATGGAGGCAG\n+ACGGCAAGCTGCGCGAGGACTGGGAAAAGCTGATTCGCAAGCTCAGCGAGTAGGCCTCGG\n+ACCCCAATCGTGTCCGCGCTGGAGAAAAGCGTGGAAACGTTGGGGTCAAATGCGGGAGAA\n+TCTGTGGATAACGTTGCGTGGCGGTTCGATGGAAAAACTATCCACAGGTTTTGCCACCAG\n+ATCAGGCACACTAGTCCCAAGCGTTTCAGGCGCTGAAATGTGTTTGGAAACAAACAGTTA\n+TGGCGGTTATCCGCTGAAAACGGCCCTACCATCACCACCAAGCTTTTGATTTATTCCATA\n+ATCTTTTAAAGCATAGGGGCACGGAACCACATGCGTTTTACACTGCAGCGCGAAGCCTTC\n+CTCAAACCGTTGGCCCAAGTGGTCAATGTGGTCGAACGCCGTCAAACCCTGCCTGTTCTG\n+GCCAACTTGCTGGTGCAGGTCAAGGACGGACAGGTCTCGTTGACCGGCACGGATCTGGAA\n+GTCGAAATGATCGCGCGCACGATGGCGGAGGACGTGCAAGACGGCGAAACCACCATTCCC\n+GCCCGCAAGCTATTCGACATCCTGCGCGCCCTGCCGGACGGCAGCCGGGTCACCATTTCG\n+CAGACCGGTGACAAGGTGACAGTTCAGGCCGGGCGTAGCCGTTTCACGCTGGCGACGCTG\n+CCTGCGAACGACTTCCCGTCCGTGGACGAAGTCGAGGCGACCGAGCGCGTGGTGGTGCCC\n+GAGGCCGGGCTCAAAGAGCTGATCGAACGCACGGCGTTTGCGATGGCACAGCAGGATGTT\n+CGCTACTACCTCAACGGCCTGCTGTTCGACCTGCGCGACGGTTTGCTGCGCTGCGTGGCC\n+ACCGACGGCCACCGTTTGGCGCTATGCGAGATGGAGCTTGAGAATGCTGGCGGCGCCAAG\n+CGTCAGATCATCGTGCCGCGTAAGGGCGTGACCGAGCTGCTGCGTTTGCTGGAAGGCGCA\n+GACCGTGAGGTCGAATTGGAAGTCGGCCGTAGCCATATCCGCGTCAAGCGTGGCGATGTA\n+ACCTTCACTTCCAAGCTGATCGACGGCCGCTTCCCGGACTACGAGGCAGTGATTCCGATT\n+GGCGCCGATCGCGAGGTCAAGGTTGATCGTGAGGCGCTGCGTGCGTCGCTTCAGCGCGCG\n+GCCATCCTGTCGAACGAAAAGTACCGTGGCGTGCGCGTGGAAGTATCGCCAGGCCAATTG\n+AAGATCAGTGCGCACAACCCAGAGCAAGAAGAAGCGCAGGAAGAGATTGAGGCCGACACC\n+AAGGTCGACGACCTGGCGATTGGCTTCAACGTCAACTATCTGCTCGATGCGTTGTCGGCA\n+TTGCGCGATGAGCACGTGGTCATCCAGCTGCGAGACGCGAATTCGTCCGCGCTGGTGCGC\n+GAGGCCAGCAGTGAGAAGTCCCGTCATGTGGTGATGCCGCTGCGTCTCTGACGCTTTGTT\n+CCACGTGGAACACGAGAAGCCCGGCGAACGCCGGGCTTTTTATTGGTTGTTGAACCGCTT\n+GCTGTGTCTGTTTGGGTAACCCTGCTAGCTGCGATCGCACAACGCGAGGAAGTCGGCGCG\n+CTGGGGGCAGCGGTTCTAGCTGAAGCGGCAAGCCCGTTGCTCAGGCGTTGGAACGGCATC\n+TTCAGCGCGATATTTCAGGTTACTCAGCGGCTGACGCCGCTGGTGTCGCTTTTGACCCAC\n+TGCGCCAGGCGGGCTCTCACACATATACCGACGGGGGCTCCGGATTGGCAGCCCCTTATC\n+CGATGACGGCAAGCCGAGTTTTTGGGAATCGACCTGCTGGATAGACCCCGCGCGCGACCG\n+GTGTCGTGGACGCGTTCTGCGCGGAACTCGGGGGGATCCTGAATACGTATCGGTTTATCG\n+GCGGGCCTGTGCAGGTCCCGACAGAGAGGTGAATCCAGAGGCTGACACCTGGGCCGACTC\n+AAGTTCCAAGTGCAACACTTTTCTCGACTGCAGACCCGCGTTTTCTGTCAAAACACTGGC\n+TCACGTAACTTTTGCACAATCAATGGCCTGCCGGGCTGTCCGTCCATACGTTGCGCTAAC\n+AGCAGGTCTCTCGAGGTGTTGCACTTGACTCTTGAGACCGCCCTGGTTTTAACGCACAGG\n+CAACCTCACCGGCTCACGCGTGGTCGGCTGAGATGGCGAGTTCATGCGGACCCTCTCGAA\n+CGACAAAGCGCTACTTCTTTCCTGAGCGCCTCGCTTTGGCATTTATGAGACCAAGTCACT\n+TTTGTTGATTCCGGTTGAATCATCACTTGAGCCCTGAAACTGAACGGTTTTAGTTGAAAG\n+GCAGAGCAAGACCAATTGCCATTACGCCTAGCTGAAAGGTTTGCAGACATCTGATTGGCT\n+TTTCTGAGCCTGTTTCCGACTTATGCACATCACGCGTTGCTTTTAAAACTACAAATACCT\n+TAAGAGCTTGGAGGTGATGGTAGGGGCAGATTTCACCGCAAAGTAGATCAGGTTGTTGTT\n+TTTAAAGTCATTTATGGCCTCGAAAGCCCGTGTTTATCGACCTATTTGTCAGCCTACAAG\n'..b'GTCGAGCACGCGTTGCACGATGGATTCCGGCACCGGGTCGGCCCAGTCCAGCGAG\n+TCGATATTCCACATGATGGACTTCAGGCCGGCCTCGCCCAGCAGCTGCAAGCCTTCCGCA\n+GTGCGCGCGCCATACGGAAACGGGAACAACGGCGCGCGCTTGTCGTCCACCGCACGCAGC\n+AAGGTGTCGGTATCCAGTACCTGGCTGCGCTGCGCTGCGCCGGTGGTTTTGGACAACTGC\n+GCGTGGGTCAGGCTGTGGTTTCCAACTGCATACCCCTCTTCCATCAGCGTGCGGCTGATC\n+TTGGACAGCGGCGCGAGTTTGGGTTTGCCGGCGGCATCCGGGCTACCCAGATTGCGCCCT\n+ACTTCGAAGAACACCCCGGGCACGTCGTAGCGTTTGAGGATCGCCACGATCTCTTCGGTA\n+TAGGCCTTGTGCGGACCATCGTCGAAGGTCAGCACCACTGTTTTGGGTGGCAGGTCGCGG\n+CCGAACACTTCGCTGTCGCTGTCGCGTGCCGAGAACGGATACGGCTCCACCACGCCATGG\n+TCACGCAGGATCTTCTCGCGCGTGTACAGCGTGCGCAGATGCGCCACGTAGTCGTCCCAC\n+TTCTCGCGCTTGGGCACGATGGCGCGGCTGCGGTCGAAGCGACTGAAGATCTGCGTCAGC\n+TCCTTGGTGTAGCTGCGCTCGATTTCGTCCAGCGCCTCCAGATCCTCGCCGATGCGCTGA\n+TGCAGTTTCACCGCTGGCAACGCAGAGTCGCGACCGATGCGCGCATGCAGATCGCGCAAT\n+ACCTCGCCAACGGCGAGGCGGTCGGCATCGGAGAGATCCGGCGCCGATTCCACCTCGTCC\n+AGCACCGCAGCAATCGTCGCGAACCGGTTCGCGTCCTTGGATGTCAGGACTGTTTCGAAC\n+GATGCAGCGATGCGTTCGCGCTGCTCGAGATTTTCATGGAACAGCTGCTGCCCCACGCTG\n+CTGGACATGGCGCGATCGCGTGGGGTCTGCTTGTCCTCATCGGCCAGCAGCACGATGATG\n+CGGCGGTGCCGGTCCAGCTGTTCGCGCAGTTGCGCGATCAATGCCTGCGCAGCGTCGGCG\n+CTCTTGTCGGCCTGCGTTCCTGCGGTCGTTGCAGCAGAGGATTTCGCGGCGGAGGCCGCA\n+TCGCTCGCGCCCTGCTTCCCACAGCCGGCCAGCGCCAGCACTCCCACGCAACTTGCGCAC\n+AGCAGCAGGCGATGCAACGGCGATGTGGTCACGACGGCGTCCTTGGCGAAAGAGACAACA\n+GATGCGGGCTGACATGCAGAAAGCCCGCCTTGCGGCGGGCCTTCTTCAACTTACTTGGCG\n+TTGGCCCGGATGATCTTGCTCGGCTTCTCGCCGTGCTGGCGGATCATCCACCACTGGATA\n+AGCAGATTCAAACCGCCGTTGACCACCCAGTACAGCACCAGACCGGACGGCACGAAGGCC\n+ATCATGGCGCCGAACACCAGCGGCATGAACTGCATCATCTTGGCCTGCATCGGATCGATG\n+CCCGGGGTCGGGGTCAACTTCTGCGTCGCCCACATGATCGCGATGTTGAGCGCCGGGAGG\n+ATGAAGTGCGGGTCGCGCGCGGTCAGGTCCTGGATCCAGCCCAGCCACGGCGCCTGACGC\n+AGTTCCACCGACTCCACCAGCACCCAGTACAGCGCGAAGAAGATCGGCATCTGGATCAGC\n+AGCGGCAGGCAGCCGCCCATCGGGTTGATCTTTTCCTTCTTGAACAGCTCCATCGTGGCC\n+TGCTGGTACTTGACGCGATCGTCGCCGTAGCGCTCCTTGAGTTGCGCCAGGCGCGGCTGG\n+AACTTGCGCATCTTGGCACTGGACTTGTACTGCGCAGACGACAGCGGATACAGCACCAAC\n+CGCAGCAACACCACCAGGCCGACGATCGCCCAGCCCCAGTTGTGCAGGAAGCTGTGCAGA\n+TGGCTCAGCACCCAGAACAGGCCCTGGCCGATGATGGCCATGATCGAGAAGCGGCTGTAA\n+TCGATCACGCGGTCCAGCCCCTTCACGTCTTCCTTGGCGATCAGACTGACCAGCTTCGGA\n+CCCACCCACAGGCGCGCTTCGGTGGTCGCGGTCTGGCCCGGCGCCACGGTGAAAGCCGGG\n+CCGCGCAACTCGGCCACGTCGCGTGGGCCGTCCTTGTTCAACACATACAGCGAGGCTTGG\n+TCGTTCTGCGGAATCCACGCGGTGAAGAAGTGGTGCTGCAACAGCGCTATCCAGCCGCCG\n+GTGATCTGGCGATTGAGGCCGCCGTCGTCCATGTAGTCCTTGAACGCACGACGCTCGTAG\n+CCTGCCTGCGGGCTGTACCAGGTCGCCCCGTTGAAGCTGAAGGAATCCGGATTGGTCATG\n+CCGCGGCTGAGGATGGTCGGCACCCGACTCAGCTTGCGGAACACATAACCGTTCCACGGC\n+GCGGCGCTCTTGTTGATCACTTCATCCTTGATCGAGATCGCATAGCGACCACGTTCCAGG\n+GTAAAGGTGCGACGGATCGACACGCCGTTGGGGCCATTCCACACGAACGGCACCACCAGC\n+GTGTTCTGGCCCTTGGCGAGTTCAAACGTCGTGCCAGGCTGTTCTGCGCGAAAGCCGCCG\n+ACGCCCGGCACCGGCGAATGCTCACTGGCCCAGCCACTGGTGGCGTTGTACGGGTGCGCC\n+GCGTCTTCCGTCAGCAGGCTGACCGGCGCGGTGCCGTCCTTGGTCTGCGGGAACTGCAGC\n+AGCTCGGCGTCGAGCACGCTGCGGCCATCCAGCTTCAGGCGCAGCACGTCCGAGGTCAGG\n+GTGACCACCGGTGCAGTGCCGGCAGCAGCCGGTGTCGCGGTGGTGGTGCTGGTTGCCGGA\n+ACCTTACCCGGCGCACCAGCCTGCGGAATCGCCTGAGCTGCGGGCACATTCGCCGCGCTT\n+GGCGTTGCCGCATCCAGATCACGTGCCGCCGGCACCGATTGCGTCGCAGCCGCCCCGGGC\n+GCATTGGCAGCCGCTTTTTCTTTGCCCCACTCCATCCACAGCAGCGCCGCGACCATCAGC\n+CAGGCAAAAATCAGGAAAACACGGGTCTGGTTCATCGGGCAGCAACTCGCTCAGTCGGAA\n+CTACAGGTCCGGCTCTGTCGGGGAAAGGGAGGATGGGTGCATCGTCCTGGCGCGCGGCAT\n+TGTGCCGGGCGCAGCAGGTAGGGGCAATGCACCGGCACGGCGCAACAGACGCAGGAAGGC\n+GTCGCGGATCTGCGGATTGGTCGCTTTTGCAGCTGCCGAGCGCGCCACGATGACGTAATC\n+GCCACCGGCCAACTCAGGCAAGAGATGTCGCATGGCATCGCGCAACACACGTTTGATGCG\n+GTTACGTCCGACCGCACGCGTATCGACCTTGCGCGACACCGCCATGCCCAGGCGCGGCGG\n+GGTATCGCCAGTGCGCCAGTGCAGGCTCAATAGCGGATCCGAGGTGCGGCGTGCGTTGTC\n+GAAAACGACCGTATATTGCGCACGCGTACGAACCCGCGCAGAGCGAGGAAATCGCCTGCA\n+CGGGTTCGATGCGTTCACGGTAAGGACTGCCTCGGCCGCAGGGAGCGGCGCGGCAATCAA\n+GCGCTCAGGCGCTTGCGGCCCTTGGCGCGGCGGCGAGCCAGGATCTTGCGGCCGTCGGCG\n+GTTGCCATACGTGCGCGGAAGCCATGGTCGCGTGCTCGCTTGAGGTTGCTGGGTTGGAAC\n+GTACGCTTGGTGGCCATGGGGCCCTCTGCATGAATGGAGACGAATAGAACCGGTAATTCT\n+ATAGGTCCGCTACAGCCCTGGTCAACAACCCGCGCGCATCGCCGCAGCTGACGCTGACCG\n+CCGCCTGTGGATGGACCTGTGAATAACTCTGGGAAAACCGTGTCCCCGGTGCTAGTCTGG\n+CCCATCCTCTTTTCACTACCGGGCTGCGTGCACGG\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/data/X11-5Agenome.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/data/X11-5Agenome.fasta Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,72836 @@\n+>X11-5A\n+CTATCCGATCAATTGTTGACACGCCCTAGCTGCGATCGCACAACGCGAGGAAGGCGGCGC\n+GCTGGGGGCAGCTGTTCCAGCTGAAGCGGCACGCCTGTTGTTCAGGGGTTGGTAGGGCAT\n+CTTCAGCGCGATATTTCAGATCACTCAGCGGCTGACGCCGCTGGCGTCGTTTTTGACCAA\n+CTATGTGCCAGGCGGGCTCACACACACATAGCGACCGGGGCTCCGGATTGGCAGCCTCTT\n+ATCCGATGACGGCAAGCCGAGTTTTCGGGAATCGACGTGCTTGATAGACCCCGCGCGCGA\n+TCGGTGTCGTGGACGCGTTCTCAGCGGAACTCCGAGGGGATCTTGAATACGTATCGATGT\n+ATCGGCGGGCCTGTGCAGGTCCCGACAGGTAGGTGAATCCAGAGGCTGACACACTGGTTG\n+TAACGCACCGGCAACTTCACCGGCTCACGCGTGGTCGGCTGAGCTGGCGAGTTCATGCGG\n+ACGCCCTCGAACGACAAAGCACCGCTTTGTTCGTGAGCGCCTCGCTTTGACGTTCATGAG\n+ACCAGGTTACTTTTTCGATGAGTTTGAATCATCGCTTGAGTCCTGAAACTGAACGGTTTT\n+AGCTAAAAGTCAGAACAAGACAAATTGCCATCACGCCAAGCTGGAAGGTTGGCAGAGATC\n+TCATTGACTTTCCTGAGCCTGTTTTTGACTTATGCACATGACGGTTTGCTTTTAAAACTA\n+GAAATAAATTAAGAGTTTGGTGATGATGGTAGGCGCAGATTGCACCGAAAAGTTTATCAA\n+GTTATTGTTTTTCAAGCAATTTATGGCATTGAAAGCCTGTGTTTATCGGCCTATTTGCCA\n+GCCTACAGGCTGTGGATAAGGCGACATCGGGCGCAGAGCCTTGTTTTTATCCACACGTTA\n+TCCCCTGCCTGTCCTAGACCATCCGTTCGCACGTCTGCGCGGGTTTCATGCCGATCACGT\n+ATCCTTTGAGCCGACCGGCATGCCGGATTACACGCCAGAGCACACCGATCAATGCATGTA\n+GTGCGGTTGTCCATTCATCGGCTTCGTCGGTTCCAGACCGTCGCGCTACATCCGGCCAGT\n+GCATTGAATCTGCTCACCGGCGACAACGGTGCAGGCAAAACCAGCGTGCTCGAGGCGCTG\n+CACCTGATGGCATATGGCCGCAGCTTCCGTGGCCGCGTCCGTGACGGCCTGATCCAACAA\n+GGCGCGAACGACCTTGAAGTCTTCGTGGAATGGAAAGAGGGCGGCAGTGCTGCAGGCGAG\n+CGGACACGTCGCGCCGGCCTACGTCATAGCGGCCAGGAATGGACGGGGCGTCTGGATGGC\n+GAAGACGTTGCACAGTTGGGATCTTTGTGTTCCGCGTTGGCCGTGGTGACTTTCGAGCCC\n+GGCAGCCACGTGTTGATCAGCGGCGGTGGTGAACCCCGCCGTCGCTTCCTGGATTGGGGT\n+CTGTTCCACGTGGAACCCGGCTTCCTGTCCTTGTGGCGTCGCTACGTGCGCGCGCTCAAA\n+CAGCGCAATGCGCTGCTCAAACAAGGCGCGCAGCCGCGCATGCTGGATGCCTGGGATCAC\n+GAACTCGCCGAATCCGGGGAAACGCTGACATCCCGGCGCATGCGCTACCTGGAACGCCTG\n+CAGGACCGGCTGATTCCGGTGGCAGACGCGATCGCGCCGTCGCTTGGGCTGTCCGCGTTG\n+ACGTTCGCCCCAGGCTGGAAACGCCACGAGGTCTCGCTTGCCGATGCCCTTTTGTTAGCC\n+CGCGATCGCGACCGCCAGAACGGTTACACCTCGCAAGGCCCACACCGCGCGGATTGGATG\n+CCTCACTTCGACGTGCTTCCTGGCAAAGATGCACTCTCTCGCGGGCAAGCCAAGCTCACT\n+GCCCTCGCCTGCCTCCTTGCACAGGCGGAAGACTTTGCGTTCGAGCGAAGCGAATGGCCG\n+GTGATCGCGCTGGACGACCTGGGTTCGGAGCTGGACCGGCACCACCAGGCGCGCGTCCTG\n+CACCGGCTGGTCTCGGCGCCAGCGCAGGTGCTGATCACCGCGACCGAGATCCCGCCCGGG\n+CTCGCGGACGCCGGTGCGCTATTGCACCGGTTCCACGTGGAACACGGTCAGGTCGCACTG\n+CAAGCCCCCTCAGACTGAGTTCAACGGACCGGGTGGGCCGACTGGTATAATTTTCCCCGT\n+TATCCCCCTTTTCCCACGGTGCAAAGCGGCTGCGGCCGTCTTTGCCTGTGTTGTGGAGCC\n+AACGGCACGCGCATGACCGACGAACAAGACACCCCGCCAACACCCAACGGCACTTACGAC\n+TCCAGCAAGATCACCGTGCTGCGTGGCCTGGAAGCCGTCCGCAAGCGCCCCGGCATGTAC\n+ATCGGCGATGTCCATGACGGTACCGGCCTGCATCACATGGTGTTCGAGGTGGTCGACAAC\n+TCGGTCGACGAAGCCCTGGCCGGGCATGCCGACGACATCGTCGTGAAAATCCTGGTCGAT\n+GGCTCGGTGGCGGTGTCCGACAACGGACGCGGCGTGCCGGTCGACATTCACAAGGAAGAA\n+GGCGTGTCCGCGGCCGAGGTGATCCTCACCGTGCTGCATGCCGGCGGCAAGTTCGACGAC\n+AACAGCTACAAGGTCTCCGGCGGCCTGCATGGCGTGGGCGTGTCGGTGGTCAACGCGCTG\n+TCCGAGCACCTGTGGCTGGACATCTGGCGCGACGGTTTCCACTACCAGCAGGAATATGCG\n+CTGGGCGAGCCGCAGTACCCGCTCAAGCAGCTGGAAGCATCGACCAAGCGCGGCACCACG\n+CTGCGCTTCAAGCCGTCCGTGGCCATCTTCAGCGACGTCGAGTTCCACTACGACATCCTG\n+GCGCGGCGCCTGCGTGAGCTGTCGTTCCTCAATTCCGGCGTCAAGATCACCCTGATCGAC\n+GAGCGTGGCGAAGGCCGTCGCGACGATTTCCATTACGAAGGCGGCATCCGCAGCTTCGTG\n+GAGCATCTGGGGCAGCTGAAGTCGCCGCTGCACCCGAACGTGATCTCGGTGACCGGCGAG\n+CACAATGGCATTGTGGTGGACGTGGCCCTGCAATGGACCGACGCCTACCAGGAAACCATG\n+TACTGCTTCACCAACAACATCCCGCAGAAGGATGGCGGCACCCACCTGGCCGGCTTCCGC\n+GCCGCGCTGACGCGTGTGCTGAGCACCTACATCGAGCAGAACGGCATCGCCAAGCAGGCC\n+AAGGTTGCGCTGACCGGCGACGACATGCGCGAAGGCATGATCGCAGTGCTGTCGGTCAAA\n+GTGCCCGACCCCAGCTTCTCCTCGCAGACCAAGGAAAAGCTGGTCAGCTCGGACGTGCGC\n+CCGGCGGTGGAAAACGCCTTCGGTGCGCGCTTGCAGGAGTTCCTGCAAGAGAACCCGAAC\n+GAAGCCAAGGCCATCACCGGCAAGATCGTCGATGCCGCGCGTGCGCGCGAAGCCGCGCGC\n+AAGGCGCGCGACCTCACCCGCCGCAAGGGCGCGCTGGATATCGCCGGCCTGCCGGGCAAG\n+CTGGCCGACTGCCAGGAAAAAGACCCGGCGCTGTCCGAACTCTTCATTGTCGAGGGTGAC\n+TCGGCAGGTGGCTCGGCCAAGCAGGGACGCAACCGCAAGAATCAGGCGGTGCTGCCGTTG\n+CGCGGCAAGATCCTCAACGTGGAACGTGCGCGCTTCGACCGCATGCTGGCGTCGGACCAG\n+GTCGGCACGCTGATCACCGCACTGGGCACCGGCATCGGTCGCGACGAGTACAACCCGGAC\n+AAACTGCGTTACCACCGCATCATCCTGATGACCGACGCCGACGTCGACGGCTCGCACATC\n+CGTACCCTGCTGCTGACCTTCTTCTACCGGCAGATGCCGGAGCTGATCGAGCGCGGCTAC\n+A'..b'GCGGCCGGCACCGATTGCGTCGCAGCAGCCACGGGCGCATCGGCAGCCGCTTTTTCT\n+TTGCCCCACTCCATCCACAGCAGCGCCGCGACCATCAGCCAGGCAAAAATCAGGAAAACA\n+CGGGTCTGGTTCATCGGGCAGCAACTCGCTCAGTCGGAACTACAGTTCCGGCTCTGTCGG\n+GAAAGGGAGGATGGGTGCATGGTCCTGGCGGGCGGCATTGTGCCGGGCGCAGCAGGTAGG\n+GGCAATGCGCCGGCACGGCGCAGCAGACGCAGGAAGGCGTCGCGGATTTGCGGATTGGTC\n+GCTTTTGCAGCTGCCGAGCGCGCCACGATGACGTAATCGCCACCGGCCAACTCAGGCAAG\n+AGGTGTCGCATGGCATCGCGCAACACACGTTTGATGCGGTTACGTCCGACTGCACGCGTA\n+TCGACCTTGCGCGACACCGCCATGCCCAGGCGCGGCGGGGTATCGCCAGTGCGCCAGTGC\n+AGGCTCAATAGCGGATCCGAGGTGCGGCGTGCGTTGTCGAAAACAACCGTGTATTGCGCA\n+CGCGTACGAACCCGCGCAGAGCGAGGAAATCGCCTGCACGGGTTCGATGCGTTCACGGTA\n+AGGACTGCCTCGGCCGCAGGGAGCGGCGCGGCAATCAAGCGCTCAGGCGCTTGCGGCCCT\n+TGGCGCGGCGGCGAGCCAGGATCTTGCGGCCGTCGGCGGTTGCCATACGTGCGCGGAAGC\n+CATGGTCGCGTGCTCGCTTGAGGTTGCTGGGTTGGAACGTACGCTTGGTGGCCATGGGGC\n+CCTCTACATGAATGGAGACGAATATAACCGGTAATTCTATAGGCCTGCTACAGCCCGGGT\n+CAACAACCCGCGCGCATCGCCGCAGCTGACAATGACCGCCGCCTGTGGATGGACCTGTGA\n+ATAACTCTGGGAAAACCGTGTCCCCGGTGCTAGTCTGGCCCATCCTCTTTTCACTACCGG\n+GCTGCGTGCACGGCGCCTTTGTGCGCGCCGCAGCCAGCAACAGATGATCATACTTTGATG\n+GATGCTTGGCCCCGCTGTCTGGAACGTCTCGAAGCTGAATTCCCGCCCGAAGATGTCCAC\n+ACCTGGTTGAAACCCCTGCAAGCCGAAGACCGCGGCGACAGCATCGTGCTGTACGCCCCG\n+AATGCCTTCATCGTCGACCAGGTCCGCGAACGCTACCTGCCGCGCATCCGCGAGTTGCTG\n+GCGTATTTTGCCGGCAATGGCGAAGTGGCGCTGGCCGTGGGGTCGCGTCCACGCGCACCC\n+GAGCCGGCTCCGGCACCCGTCGCGGCGACCATTGCGCCGCAGGCTGCGCCGATCGCGCCG\n+TTCGCCGGCAACCTGGATTCGCATTACACCTTCGCCAACTTCGTGGAAGGCCGCAGCAAC\n+CAGCTGGGTCTGGCCGCCGCGATCCAGGCCGCGCAGAAGCCCGGCGACCGGGCGCACAAC\n+CCGTTGCTGTTGTACGGCAGCACCGGCCTGGGCAAGACCCACCTGATGTTCGCGGCGGGC\n+AATGCGCTGCGGCAAGCCAACCCGGCTGCCAAGGTGATGTACCTGCGTTCGGAACAGTTC\n+TTCAGCGCGATGATCCGGGCGCTGCAGGACAAGGCGATGGACCAGTTCAAACGCCAGTTC\n+CAGCAGATCGATGCGTTGCTGATCGACGATATCCAGTTCTTCGCCGGCAAGGACCGTACG\n+CAGGAAGAGTTCTTCCACACCTTCAACGCGCTGTTCGATGGCCGCCAGCAGATCATCCTG\n+ACCTGCGACCGCTACCCGCGCGAAGTGGAGGGCCTGGAGCCGCGGTTGAAGTCGCGCCTG\n+GCCTGGGGCTTGTCGGTCGCGATCGATCCGCCGGATTTCGAAACCCGTGCAGCCATCGTG\n+CTGGCCAAGGCACGCGAGCGTGGCGCCGAGATTCCCGACGACGTGGCATTCCTGATCGCC\n+AAGAAGATGCGCTCCAACGTGCGCGATCTGGAAGGCGCGCTCAACACGCTGGTGGCGCGC\n+GCCAACTTCACCGGGCGCTCGATCACGGTGGAATTCGCCCAGGAGACGCTGCGCGACCTG\n+TTGCGCGCGCAGCAACAGGCCATCGGCATCCCCAACATCCAGAAAACAGTGGCCGACTAC\n+TACGGCCTGCAGATGAAGGATTTGCTCTCCAAGCGCCGCACGCGTTCGCTGGCACGTCCG\n+CGCCAGGTGGCGATGGCGCTGGCCAAGGAGCTCACCGAACACAGCCTGCCGGAGATCGGC\n+GATGCCTTCGCCGGCCGCGACCACACCACCGTGCTGCATGCCTGCCGGCAGATCCGCACG\n+CTGATGGAGGCCGACGGCAAGCTGCGCGAGGACTGGGAAAAGCTGATTCGCAAGCTCAGC\n+GAGTAGGCCTCGGACCGCAATCGTGTCCGCGCTGGAGAAAAGCGTGGAAACGTTGGGGTC\n+AAATGCGGGAGAATCTGTGGATAACGTTGCGCTGCGGTTCGATGGAAAAACTATCCACAG\n+GTTTTCCCGCCAGATCAGGCGCACTAGTCCCAAGCGTTTCAGGCGCTGAAATGTATTTTG\n+AAACAAATAGTTATGGTGGTTATCCGCTGAAAACGGCCCTACCATCACCACCAAGCTTTT\n+GATTTATTCCATTATCTTTTAAAGCATAGGGGCACGGAACCACATGCGTTTTACACTGCA\n+GCGCGAAGCCTTCCTCAAACCGTTGGCCCAAGTTGTCAATGTGGTCGAACGCCGTCAAAC\n+CCTGCCTGTTCTGGCCAACTTGCTGGTGCAGGTCAAGGACGGACAGGTCTCTTTGACCGG\n+CACGGACCTGGAAGTCGAAATGATCTCGCGCACGATGGTGGAGGACGCGCAGGACGGCGA\n+AACCACCATTCCTGCCCGCAAGCTATTCGACATCCTGCGCGCACTGCCGGACGGCAGCCG\n+TGTCACCATTTCGCAGACCGGTGACAAGGTGACCGTTCAGGCCGGGCGTAGCCGTTTCAC\n+GCTGGCGACGCTGCCTGCGAACGACTTCCCGTCCGTGGACGAAGTCGAGGCGACCGAGCG\n+CGTGGTGGTGCCCGAGGCCGGGCTCAAAGAGCTGATCGAACGCACGGCGTTTGCGATGGC\n+GCAGCAGGATGTTCGCTACTACCTCAACGGCCTGCTGTTCGACCTGCGCGACGGTTTGCT\n+GCGTTGCGTGGCCACCGACGGCCACCGTTTGGCGCTATGCGAGATGGAGCTGCAGAATGC\n+TGGCGGCGCCAAGCGTCAGATCATCGTGCCGCGTAAGGGCGTGACCGAGCTGCAGCGTTT\n+GCTGGAAGGCGCAGACCGTGAGGTTGAATTGGAAGTCGGCCGTAGCCATATCCGCGTCAA\n+GCGTGGCGATGTGACCTTCACTTCCAAGCTGATCGACGGCCGCTTCCCGGACTACGAGGC\n+AGTGATTCCGATTGGCGCCGATCGCGAGGTCATGGTGGATCGTGAGGCGCTGCGTGCGTC\n+GCTGCAGCGTGCGGCCATCCTGTCGAACGAAAAGTACCGTGGCGTGCGCGTGGAAGTATC\n+GCCAGGCCAATTGAAGATCAGTGCGCACAACCCCGAGCAAGAAGAAGCCCAGGAAGAGAT\n+TGAGGCCGACACCAAGGTCGACGACCTGGCCATTGGCTTCAACGTCAACTATCTGCTAGA\n+CGCGTTGTCGGCATTGCGCGATGAGCACGTGGTCATCCAGCTGCGAGACGCGAATTCGTC\n+CGCGCTGGTGCGTGAGGCCAGCAGTGAGAAGTCCCGTCATGTGGTGATGCCACTGCGTCT\n+CTGACGCTTCGTTCCACGTGGAACACGAGAAGCCCGGCGAACGCCGGGCTTTTTATTGGT\n+TGTTGAACCCCTTGCTGTATCTGTTTGGGTAACCGCCCTAGGGCGTGTAATCAATTGAGC\n+AAGATCACACACTTAATTAATTAAGTGTGTG\n+\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/data/XCCgenome.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/data/XCCgenome.fasta Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,72519 @@\n+>gi|21166373|gb|AE008922.1| Xanthomonas campestris pv. campestris str. ATCC 33913, complete genome\n+TTTTCTGCGCGCCGCAGCCAGCAACAGATGATCACACTTTGATGGATGCTTGGCCCCGCTGTCTGGAACG\n+TCTCGAAGCTGAATTCCCGCCCGAGGATGTCCACACCTGGTTGAAACCCCTGCAGGCCGAAGATCGCGGC\n+GACAGCATCGTGCTGTACGCGCCGAACGCCTTCATTGTTGAGCAGGTCCGCGAGCGATACCTGCCGCGCA\n+TCCGCGAGTTGCTGGCATATTTCGCCGGCAATGGCGAGGTGGCGCTGGCGGTCGGCTCCCGTCCGCGTGC\n+GCCGGAGCCGCTGCCGGCACCGCAAGCCGTCGCCAGTGCGCCGGCGGCCGCGCCGATCGTGCCCTTCGCC\n+GGCAACCTGGATTCGCATTACACCTTTGCCAACTTCGTGGAAGGCCGCAGCAACCAGCTCGGTCTGGCCG\n+CGGCGATCCAGGCCGCGCAGAAGCCGGGCGACCGTGCACACAACCCGTTACTGCTGTACGGCAGCACCGG\n+GCTGGGCAAGACCCACCTGATGTTCGCGGCCGGCAACGCGCTGCGCCAGGCCAATCCGGCGGCCAAGGTG\n+ATGTACCTGCGCTCGGAACAGTTCTTCAGCGCGATGATCCGCGCGTTGCAGGACAAGGCAATGGACCAGT\n+TCAAGCGCCAGTTCCAGCAGATCGATGCGCTGCTGATCGACGACATCCAGTTTTTTGCCGGCAAGGACCG\n+CACGCAGGAGGAGTTTTTCCACACCTTCAACGCGCTGTTCGACGGCCGCCAGCAGATCATCCTGACCTGC\n+GACCGCTATCCGCGCGAAGTCGAGGGCCTGGAGCCGCGGCTGAAGTCGCGCCTGGCCTGGGGCCTGTCGG\n+TGGCGATCGACCCGCCGGATTTCGAGACGCGTGCGGCGATCGTGCTGGCCAAGGCGCGCGAGCGCGGCGC\n+CGAGATTCCCGACGACGTGGCGTTTCTGATCGCCAAGAAGATGCGCTCGAACGTGCGCGACCTGGAAGGG\n+GCGCTCAACACGTTGGTGGCCCGCGCCAACTTCACTGGCCGCTCGATCACTGTGGAGTTTGCGCAGGAGA\n+CGCTGCGTGACCTGTTGCGTGCGCAGCAGCAGGCGATCGGCATTCCCAACATCCAGAAGACCGTGGCCGA\n+CTACTACGGCCTGCAGATGAAGGACCTGCTTTCCAAGCGCCGCACCCGCTCATTGGCGCGCCCGCGCCAG\n+GTGGCGATGGCGCTCGCCAAGGAGTTGACCGAGCACAGCCTGCCGGAGATTGGCGATGCGTTTGCCGGCC\n+GCGACCACACCACCGTGCTGCACGCCTGCCGGCAGATCCGCACGCTGATGGAGGCCGACGGCAAGCTGCG\n+CGAGGACTGGGAAAAGCTGATTCGCAAGCTCAGCGAGTGAGCGTTTGGCGCCCTTCTCGCCCGTCTTGGA\n+AAAAAGCGTGGATGAGTTGGGGCCAAATGCGGGAGAATCTGTGGATAAATGCGGCTGCAGCGTTGAGGCG\n+AAAACTATCCACAGGTTTTCCCACCGCTCCAGGGGCACTAGTCCATAGACTTTCAAGCTCAAAATAGTTC\n+TTGGAAACAATACGTTAGTGTGGTTGTCCGCCAAAAACGGCCCTACCATCACCACCAAGCTTTTGATTTA\n+TTCCACATCTTTAAAGCATAGGGGCACGGAACCACATGCGTTTCACACTGCAGCGCGAAGCCTTCCTCAA\n+GCCGTTGGCCCAGGTGGTCAATGTCGTCGAACGGCGTCAGACATTGCCGGTACTGGCGAACTTGCTGGTG\n+CAGGTGAACAACGGCCAGCTGTCGCTGACGGGGACCGACCTGGAAGTCGAAATGATCTCGCGCACCATGG\n+TCGAGGACGCCCAGGACGGCGAAACCACGATCCCGGCGCGCAAGCTGTTCGACATCCTGCGGGCCCTGCC\n+TGACGGCAGCCGCGTCACCGTCTCGCAGACCGGAGACAAGGTTACGGTGCAGGCCGGGCGCAGCCGCTTT\n+ACGCTCGCCACGCTACCGGCCAACGACTTCCCGTCGGTGGACGAAGTCGAGGCCACCGAGCGTGTGGCGG\n+TGCCGGAAGCCGGGCTGAAGGAGCTGATGGAGCGCACGGCGTTCGCGATGGCCCAGCAGGACGTGCGTTA\n+TTACCTCAACGGCCTGCTGTTCGACCTGCGCGATGGCCTGCTGCGCTGCGTGGCGACCGATGGTCACCGC\n+CTGGCGCTGTGCGAGACCGAGCTGGAAAAGTCCGGTAGCGCGAAGCGCCAGATCATCGTGCCGCGTAAGG\n+GCGTCACCGAGCTGCTGCGCCTGCTGGAGGCGGCTGATCGCGATGTCGAGCTGGAGCTGGGCCGTAGCCA\n+TATCCGGGTCAAGCGCGGCGATGTCACCTTCACCTCGAAGCTGATCGACGGCCGTTTTCCGGATTACGAG\n+GCGGTGATACCGATCGGCGCGGACCGTGAGGTCAAGGTGGACCGCGAGGCGCTGCGTGCGTCACTGCAGC\n+GTGCGGCGATTCTGTCGAACGAAAAGTACCGCGGCGTTCGCGTCGAAGTATCGCCGGGCCAGCTGAAGAT\n+CAGCGCGCACAACCCGGAGCAGGAAGAAGCGCAGGAAGAGATCGAGGCCGATACCAAGGTCGATGATCTG\n+GCCATCGGCTTCAACGTGAACTATCTGCTGGATGCGCTCTCTGCACTGCGCGACGAGCATGTGGTGATCC\n+AGCTGCGCGATGCCAATTCGTCGGCGCTGGTGCGTGAGGCGAGCAGCGAGAAGTCCCGCCACGTCGTGAT\n+GCCGTTGCGCCTCTGACGCTGCGTTCCACGTGGAACACGAAGGGGCCCGGCTTACGCCGGGCTTTTTTGT\n+GGGCCAAGGAACATTGAGACAGATGGCTCGCTGCCATCGACGTGCCTGCCGGCGTACTCGGGGTTTCTCA\n+AGCCAATGTGCCTTGGTTTGCGGTCTGAGATGTCGTGAACGACCGTTGCTGCGAAGTCATGCGGATTGGC\n+TGGGGCAGCGAGCTTCCGCGCACGCAGGATCGACTGATGACTGGTGTCCCGTGTCACGTGGCAATGGTGG\n+GATATCGCGGGCTTGCTCTTGGCTGGCTCTGAAGACGTAAGAGCCATCACGAGCAATCAGGGAAGCGATT\n+ATCTGCTCTCTTCCAATCATGGCTCGAAAGCACTCGTGGTCTCGTGGCTAGAACACGGCGGCTATCGGCA\n+CACGCTCTCTGCTTCGGGTCGGCCTGCTCCGTAGAAACCTGAGATCGTCACTTGGTGAGGGAACATCATA\n+AACACAGGGAACCAGGGTGCGAACAAGAGACTAGGTCTTCTGCAAAAGAGTTTCGTGCGATTAGAGCACG\n+GCTTCGGAAGGTACTTTTGAGTTATGCACAACGTTCAAAGCTTTTAAATCTAGATAAATCTTAAAGGCTG\n+GGTGGTGATGGTAGGGCCAGATTTCTCCGAAAAGTAGGTTAAGCATATGTTCTTAAACACTTTTGTGGCC\n+TTGAAACCCTGTGTCTAGACCCGCTCAAACGCCCTGATTACCTGTGGATAAGCGAAACGGCCGCCATGGG\n+CATTGAAACTGTCCACAACTTGTCCCCAGTTTGTCGCCGCGTGACGGAAACGTTTGCCGCAGCATGTCCA\n+CTGCCGATCACGTATGCTCCGCCCCGTCCGATGCCGGACTTCAAGGCCAAGCAGACCGATCGATGCATGT\n+AGCGCGGTTGTCCATCCATCGACTTCGTCGCTTCGAAGCAGTCGAGTTTCATCCAGCCAGCACGTTGAAT\n+CTATTGACCGGCGACAACGGTGCCGGCAAGACCAGCGTGCTTGAAGCCCTGCATGTCATGGC'..b'TGGTCGAGCACGCGCTGCACGATCGATTCCGGCACCGG\n+GTCGGCCCAGTCCATTGAATCGATGTTCCACATGATCGATTTCAGGCCCGCTTCGCCGAGCAATTGCAGC\n+CCTTCGGCATTGCGTGCGCCATATGGAAACCGAAACAGCGGCGCGCGCTTGTCGTCCACCGCACGCAACA\n+GCGTGTCGGTATCCAGCACCTGGCTGCGCAAGGCCGCACCGGTGGTCTTGGATAGCTGTGCATGGGTGAG\n+GCTGTGATTGCCCACCGCATAGCCTTCTTCCATCAGGCTGTGGCTGATCTTGGCCAGCGGCGCCAGGGTC\n+GGCTTGCCTTGCGCATCCAGGTTGCCCAGATTGCGCCCCACTTCGAAGAACACGCCGGGCACGTCGTAGC\n+GTTTGAGGATGGCCACGATCTCTTCGGTATAGGCCTTGTGCGGGCCATCGTCGAAGGTCAGCACCACGGT\n+CTTGGGCGGCAGGTCGCGGCCGAAGATCTCGCTCTCGCTGTCGCGCGCGGAGAACGGATACGGCTCCACC\n+ACGCCGTGGTCGCGCAGGATCTTTTCGCGCGTGTACAGCGTGCGCAGATGCGCCACGTAGTCGTCCCATT\n+TCTCGCGCTTGGGCGTGATGGCGCGGCTGCGATCGAAGCGGCTGAAGATCTGGGTCAGCTCGGTGTTGTA\n+GGTGCGCTCGATTTCATCCAGCGCCTCCAGGTCTTCGCCGATGCGCTGGTGCAGTTTCACCGCCGGCAAT\n+GCCGAATCGCGGCCAATACGCGCGTGCAAATCGCGCAGCACTTCGCGAAAGGCCAGACGATCGGCATCGT\n+AGAGATCGGGCGCCGACTCGACGTCGTCCAGCACCGTGGCAAGGGTGGCAAAGCGGGTGGACGCCTTGGA\n+GGCCAGCACGGTCTCGAATCGTGCAGCAATACGCTCGCGCTGCTCCAGGTTCTCATGGAACAACTGCTGG\n+CCCACGCTGCTGGAGGTGGCACGGTCGCGCGGCGATTGCGCGGCCTCATCGGCCAGCAACACGATGATGC\n+GGCGATGCCGGTCCAGCTGTTCGCGCAACTGCGCGATCAGGACGCGCGCATCTTCGGCAGCGGGATCGTT\n+TTGCGCGGCCGGCGTGGCGGATGCGGCCGGCTTGGCAGCCTCCTGCCCATCGCGCCCGTCCTGCGGTTTG\n+CCGCAGCCAGCCAGCAGCAACAGCCCCAGACAACTGGCGCACAGCAACAGGCGGTGCAGCGGCAAAGACA\n+TCACGAACGCATCCTTGGCAATGGTCAGCACGTGCGGTGGTGCACTGCGGGGGCACATGTACAAAGCCCG\n+CCTTGCGGCGGGCCTTGTTCCACTTACTTGGCGTTGGCCTGGATGATCTTGCTCGGCTTCTCGCCGTGCT\n+GGCGGATCATCCACCACTGGATCAGCAGACCCAGGCCACCGTTGACCACCCAGTACAGCACCAGGCCGGC\n+CGGCATGAAGGCCATCATGACGCCGAACACCAGCGGCATGAACTGCATCATCTTGGCCTGCATCGGGTCC\n+ATGCCCGGGGTCGGGGTCAGCTTCTGCGTCGCCCACATGATGGCGATGTTGAGCACCGGCAGGATGAAGT\n+ACGGATCGCGCGCGGTCAGGTCCTGGATCCAGCCCAGCCACGGCGCCTGGCGCAGTTCCACCGATTCCAC\n+CAACACCCAGTACAGCGCGAAGAAGATCGGCATCTGGATCAGCAGCGGCAGGCAGCCACCCATCGGGTTG\n+ATCTTTTCCTTCTTGAACAGCTCCATCGTCGCCTGCTGGTACTTCTGGCGGTCGTCGCCGTAGCGCTCCT\n+TCAACTGCGCCAGGCGCGGCTGGAAGCGGCGCATCTTGGCACCGGACTTGTACTGCGCGGCCGACAGCGG\n+ATACAGCGCCAGGCGCAACAGCACCACCAGGCCAATGATCGCCCAGCCCCAGTTGTGCAGGAAGCTGTGC\n+AGATGGCTCAGCACCCAGAACAGGCCCTGGCCGATGATGGCCATGATCGAGAAGCGGCTGTAGTCGACCA\n+CGCGGTCCAGGCCCTTCACGTCTTCCTTGGCGAGCAGGCTGACCAGCTTCGGGCCCACCCACAGGCGCGC\n+CTCGGTGCTGGCACTCTGGCCCGGTGCCACGGTGAAGGCTGGGCCACGCAGCTCGGCCACGTCACGCGGG\n+CCATCCTGCGCCAACACGTACAGCGAGGCCTGGTCCTTCTGCGGGATCCACGCGGTGAAGAAGTGATGCT\n+GCAGCAGGGCCACCCAGCCGCCGGTGATCTGGCGATTCAGGCCACCGTCGTCCATGTAGTCCTTGAACGC\n+CCGGCGCTCATACCCTTCCTGCGGGCTGTACCAGGTCGCGCCGTTGAAGCTGAAGGAATCCGGGTTGGTC\n+ATGCCGCGGCTGAGGATGGTCGGCACCCGGCTCAGCTTGCGGAACACATAGCCATTCCACGCCGCATCGC\n+TCTTGTTGATCACCTCATCCTTGATCGAGATCGCGTAGCTGCCGCGCTGCAAGGTGAAAATGCGGCGGAT\n+CGACACGCCATTGGGGCCGTTCCACACGAACGGCACTACCAGGGTGTTCTGGCCCTTGGCCAGCTCAAAC\n+GTGGTGCCCGGCTGCTCGGCACGGAAACCGCCCACGCCCGGCACCGGCGAGCGCTCGCTGGCCCAGCCGC\n+TGGTGGCGTTATACGGATGCGCGGCGTCTTCGGTCAGCAACTTGACCGGCTCGGTGCCGTCCTTGGTCTG\n+CGGGAACTGCAACAGCTCGGCGTCGAGCACGCTGCGGCCGTCCAGCTTCAGGCGCAGCACGTCCGAGGTC\n+AGGGTGATTGCCGGCGCGGCACCGGTAGTAGCCGGCGTGGCCGTGGTGGTGCTGGTCGCCGGCACCGCGG\n+CAGGGCTGCCGGCTTGCGGAATTGCCTGTGCCGACGGCACGTTCGCCGCGGGGGCCGCGGCGTCCGGATC\n+GCGCGCCGCCGGGACCGCCTGCGAGGCGATCGGCGTCGGCGCATTGGCGGCCGCCTTGTCCTTGCCCCAC\n+TCCATCCACAGCAGTGCCGCGACCATCAGCCAGGCAAAAATCAGGAAAACACGGGTCTGGTTCATCGGGC\n+AGCAACTCGCTCAGTCGGAACGGGGGTCCGGCTCTGTCGGGGAAAGGGAGGATGGGCGCGGTGCCCTGGC\n+GGGCGGCATTGTGCCGGGCGCGGCAGGCAGGGGCAATGCGCCGGCACGGCGCAGCAGACGCACGAAGGCG\n+TCGCGGATCTGTGGATTGGTCGCTTTGGCGGCCGCCGAACGGGCCACGATGACGTAGTCACCGCCGGCAA\n+GCTCCGGCAGCAGGTGGCGCATGGCATCGCGCAGGACCCGCTTGATTCGGTTGCGTCCCACCGCACGCGT\n+ATCGACCTTGCGCGATACCGCCATGCCCAGGCGCGGCGGCGTCTCGCCACTGCGCCAGTGCAGGCTCAGC\n+AACGGGTCCGAGGTGCGGCGCGCGGTATCGAAGACGACCGTATATTGCGCACGCGTACGAACCCGCGCAG\n+AGCGAGGAAATCGCCTGCACGGGTTCGATGCGTTCACTGAAGGGATTGCCTCGGCCGCAGGGAGCGGCGC\n+GGCAATCAAGCGCTCAGGCGCTTGCGGCCCTTGGCGCGGCGGCGAGCCAGGATCTTGCGGCCGTCGGCGG\n+TTGCCATACGTGCGCGGAAGCCATGGTCGCGTGCTCGCTTCAGGTTGCTGGGTTGGAAAGTACGCTTGGT\n+GGCCATGGGGCCCTCTGCATGGATGGAGACGAATAGAACCGGAAATTCTATAGGAGCTGTTGGGGCCGGG\n+TCAACTCCCTGCTGGCTTTACCGCAAGTGACGGTGTGCATGGCCTGTGGATGGACCTGTGAATAACCCTG\n+GGAAAACCCTGCCCCGGGTGCTAGTCTGGTCCATCCTCTTTTCATGACCGGGCTGCGAGCACGGCGCN\n+\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/data/Xcampestris.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/data/Xcampestris.fasta Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,72519 @@\n+>gi|21229478|ref|NC_003902.1| Xanthomonas campestris pv. campestris str. ATCC 33913 chromosome, complete genome\n+TTTTCTGCGCGCCGCAGCCAGCAACAGATGATCACACTTTGATGGATGCTTGGCCCCGCTGTCTGGAACG\n+TCTCGAAGCTGAATTCCCGCCCGAGGATGTCCACACCTGGTTGAAACCCCTGCAGGCCGAAGATCGCGGC\n+GACAGCATCGTGCTGTACGCGCCGAACGCCTTCATTGTTGAGCAGGTCCGCGAGCGATACCTGCCGCGCA\n+TCCGCGAGTTGCTGGCATATTTCGCCGGCAATGGCGAGGTGGCGCTGGCGGTCGGCTCCCGTCCGCGTGC\n+GCCGGAGCCGCTGCCGGCACCGCAAGCCGTCGCCAGTGCGCCGGCGGCCGCGCCGATCGTGCCCTTCGCC\n+GGCAACCTGGATTCGCATTACACCTTTGCCAACTTCGTGGAAGGCCGCAGCAACCAGCTCGGTCTGGCCG\n+CGGCGATCCAGGCCGCGCAGAAGCCGGGCGACCGTGCACACAACCCGTTACTGCTGTACGGCAGCACCGG\n+GCTGGGCAAGACCCACCTGATGTTCGCGGCCGGCAACGCGCTGCGCCAGGCCAATCCGGCGGCCAAGGTG\n+ATGTACCTGCGCTCGGAACAGTTCTTCAGCGCGATGATCCGCGCGTTGCAGGACAAGGCAATGGACCAGT\n+TCAAGCGCCAGTTCCAGCAGATCGATGCGCTGCTGATCGACGACATCCAGTTTTTTGCCGGCAAGGACCG\n+CACGCAGGAGGAGTTTTTCCACACCTTCAACGCGCTGTTCGACGGCCGCCAGCAGATCATCCTGACCTGC\n+GACCGCTATCCGCGCGAAGTCGAGGGCCTGGAGCCGCGGCTGAAGTCGCGCCTGGCCTGGGGCCTGTCGG\n+TGGCGATCGACCCGCCGGATTTCGAGACGCGTGCGGCGATCGTGCTGGCCAAGGCGCGCGAGCGCGGCGC\n+CGAGATTCCCGACGACGTGGCGTTTCTGATCGCCAAGAAGATGCGCTCGAACGTGCGCGACCTGGAAGGG\n+GCGCTCAACACGTTGGTGGCCCGCGCCAACTTCACTGGCCGCTCGATCACTGTGGAGTTTGCGCAGGAGA\n+CGCTGCGTGACCTGTTGCGTGCGCAGCAGCAGGCGATCGGCATTCCCAACATCCAGAAGACCGTGGCCGA\n+CTACTACGGCCTGCAGATGAAGGACCTGCTTTCCAAGCGCCGCACCCGCTCATTGGCGCGCCCGCGCCAG\n+GTGGCGATGGCGCTCGCCAAGGAGTTGACCGAGCACAGCCTGCCGGAGATTGGCGATGCGTTTGCCGGCC\n+GCGACCACACCACCGTGCTGCACGCCTGCCGGCAGATCCGCACGCTGATGGAGGCCGACGGCAAGCTGCG\n+CGAGGACTGGGAAAAGCTGATTCGCAAGCTCAGCGAGTGAGCGTTTGGCGCCCTTCTCGCCCGTCTTGGA\n+AAAAAGCGTGGATGAGTTGGGGCCAAATGCGGGAGAATCTGTGGATAAATGCGGCTGCAGCGTTGAGGCG\n+AAAACTATCCACAGGTTTTCCCACCGCTCCAGGGGCACTAGTCCATAGACTTTCAAGCTCAAAATAGTTC\n+TTGGAAACAATACGTTAGTGTGGTTGTCCGCCAAAAACGGCCCTACCATCACCACCAAGCTTTTGATTTA\n+TTCCACATCTTTAAAGCATAGGGGCACGGAACCACATGCGTTTCACACTGCAGCGCGAAGCCTTCCTCAA\n+GCCGTTGGCCCAGGTGGTCAATGTCGTCGAACGGCGTCAGACATTGCCGGTACTGGCGAACTTGCTGGTG\n+CAGGTGAACAACGGCCAGCTGTCGCTGACGGGGACCGACCTGGAAGTCGAAATGATCTCGCGCACCATGG\n+TCGAGGACGCCCAGGACGGCGAAACCACGATCCCGGCGCGCAAGCTGTTCGACATCCTGCGGGCCCTGCC\n+TGACGGCAGCCGCGTCACCGTCTCGCAGACCGGAGACAAGGTTACGGTGCAGGCCGGGCGCAGCCGCTTT\n+ACGCTCGCCACGCTACCGGCCAACGACTTCCCGTCGGTGGACGAAGTCGAGGCCACCGAGCGTGTGGCGG\n+TGCCGGAAGCCGGGCTGAAGGAGCTGATGGAGCGCACGGCGTTCGCGATGGCCCAGCAGGACGTGCGTTA\n+TTACCTCAACGGCCTGCTGTTCGACCTGCGCGATGGCCTGCTGCGCTGCGTGGCGACCGATGGTCACCGC\n+CTGGCGCTGTGCGAGACCGAGCTGGAAAAGTCCGGTAGCGCGAAGCGCCAGATCATCGTGCCGCGTAAGG\n+GCGTCACCGAGCTGCTGCGCCTGCTGGAGGCGGCTGATCGCGATGTCGAGCTGGAGCTGGGCCGTAGCCA\n+TATCCGGGTCAAGCGCGGCGATGTCACCTTCACCTCGAAGCTGATCGACGGCCGTTTTCCGGATTACGAG\n+GCGGTGATACCGATCGGCGCGGACCGTGAGGTCAAGGTGGACCGCGAGGCGCTGCGTGCGTCACTGCAGC\n+GTGCGGCGATTCTGTCGAACGAAAAGTACCGCGGCGTTCGCGTCGAAGTATCGCCGGGCCAGCTGAAGAT\n+CAGCGCGCACAACCCGGAGCAGGAAGAAGCGCAGGAAGAGATCGAGGCCGATACCAAGGTCGATGATCTG\n+GCCATCGGCTTCAACGTGAACTATCTGCTGGATGCGCTCTCTGCACTGCGCGACGAGCATGTGGTGATCC\n+AGCTGCGCGATGCCAATTCGTCGGCGCTGGTGCGTGAGGCGAGCAGCGAGAAGTCCCGCCACGTCGTGAT\n+GCCGTTGCGCCTCTGACGCTGCGTTCCACGTGGAACACGAAGGGGCCCGGCTTACGCCGGGCTTTTTTGT\n+GGGCCAAGGAACATTGAGACAGATGGCTCGCTGCCATCGACGTGCCTGCCGGCGTACTCGGGGTTTCTCA\n+AGCCAATGTGCCTTGGTTTGCGGTCTGAGATGTCGTGAACGACCGTTGCTGCGAAGTCATGCGGATTGGC\n+TGGGGCAGCGAGCTTCCGCGCACGCAGGATCGACTGATGACTGGTGTCCCGTGTCACGTGGCAATGGTGG\n+GATATCGCGGGCTTGCTCTTGGCTGGCTCTGAAGACGTAAGAGCCATCACGAGCAATCAGGGAAGCGATT\n+ATCTGCTCTCTTCCAATCATGGCTCGAAAGCACTCGTGGTCTCGTGGCTAGAACACGGCGGCTATCGGCA\n+CACGCTCTCTGCTTCGGGTCGGCCTGCTCCGTAGAAACCTGAGATCGTCACTTGGTGAGGGAACATCATA\n+AACACAGGGAACCAGGGTGCGAACAAGAGACTAGGTCTTCTGCAAAAGAGTTTCGTGCGATTAGAGCACG\n+GCTTCGGAAGGTACTTTTGAGTTATGCACAACGTTCAAAGCTTTTAAATCTAGATAAATCTTAAAGGCTG\n+GGTGGTGATGGTAGGGCCAGATTTCTCCGAAAAGTAGGTTAAGCATATGTTCTTAAACACTTTTGTGGCC\n+TTGAAACCCTGTGTCTAGACCCGCTCAAACGCCCTGATTACCTGTGGATAAGCGAAACGGCCGCCATGGG\n+CATTGAAACTGTCCACAACTTGTCCCCAGTTTGTCGCCGCGTGACGGAAACGTTTGCCGCAGCATGTCCA\n+CTGCCGATCACGTATGCTCCGCCCCGTCCGATGCCGGACTTCAAGGCCAAGCAGACCGATCGATGCATGT\n+AGCGCGGTTGTCCATCCATCGACTTCGTCGCTTCGAAGCAGTCGAGTTTCATCCAGCCAGCACGTTGAAT\n+CTATTGACCGGCGACAACGGTGCCGGCAAGACCAGCGTGCTTGAAGCCC'..b'TGGTCGAGCACGCGCTGCACGATCGATTCCGGCACCGG\n+GTCGGCCCAGTCCATTGAATCGATGTTCCACATGATCGATTTCAGGCCCGCTTCGCCGAGCAATTGCAGC\n+CCTTCGGCATTGCGTGCGCCATATGGAAACCGAAACAGCGGCGCGCGCTTGTCGTCCACCGCACGCAACA\n+GCGTGTCGGTATCCAGCACCTGGCTGCGCAAGGCCGCACCGGTGGTCTTGGATAGCTGTGCATGGGTGAG\n+GCTGTGATTGCCCACCGCATAGCCTTCTTCCATCAGGCTGTGGCTGATCTTGGCCAGCGGCGCCAGGGTC\n+GGCTTGCCTTGCGCATCCAGGTTGCCCAGATTGCGCCCCACTTCGAAGAACACGCCGGGCACGTCGTAGC\n+GTTTGAGGATGGCCACGATCTCTTCGGTATAGGCCTTGTGCGGGCCATCGTCGAAGGTCAGCACCACGGT\n+CTTGGGCGGCAGGTCGCGGCCGAAGATCTCGCTCTCGCTGTCGCGCGCGGAGAACGGATACGGCTCCACC\n+ACGCCGTGGTCGCGCAGGATCTTTTCGCGCGTGTACAGCGTGCGCAGATGCGCCACGTAGTCGTCCCATT\n+TCTCGCGCTTGGGCGTGATGGCGCGGCTGCGATCGAAGCGGCTGAAGATCTGGGTCAGCTCGGTGTTGTA\n+GGTGCGCTCGATTTCATCCAGCGCCTCCAGGTCTTCGCCGATGCGCTGGTGCAGTTTCACCGCCGGCAAT\n+GCCGAATCGCGGCCAATACGCGCGTGCAAATCGCGCAGCACTTCGCGAAAGGCCAGACGATCGGCATCGT\n+AGAGATCGGGCGCCGACTCGACGTCGTCCAGCACCGTGGCAAGGGTGGCAAAGCGGGTGGACGCCTTGGA\n+GGCCAGCACGGTCTCGAATCGTGCAGCAATACGCTCGCGCTGCTCCAGGTTCTCATGGAACAACTGCTGG\n+CCCACGCTGCTGGAGGTGGCACGGTCGCGCGGCGATTGCGCGGCCTCATCGGCCAGCAACACGATGATGC\n+GGCGATGCCGGTCCAGCTGTTCGCGCAACTGCGCGATCAGGACGCGCGCATCTTCGGCAGCGGGATCGTT\n+TTGCGCGGCCGGCGTGGCGGATGCGGCCGGCTTGGCAGCCTCCTGCCCATCGCGCCCGTCCTGCGGTTTG\n+CCGCAGCCAGCCAGCAGCAACAGCCCCAGACAACTGGCGCACAGCAACAGGCGGTGCAGCGGCAAAGACA\n+TCACGAACGCATCCTTGGCAATGGTCAGCACGTGCGGTGGTGCACTGCGGGGGCACATGTACAAAGCCCG\n+CCTTGCGGCGGGCCTTGTTCCACTTACTTGGCGTTGGCCTGGATGATCTTGCTCGGCTTCTCGCCGTGCT\n+GGCGGATCATCCACCACTGGATCAGCAGACCCAGGCCACCGTTGACCACCCAGTACAGCACCAGGCCGGC\n+CGGCATGAAGGCCATCATGACGCCGAACACCAGCGGCATGAACTGCATCATCTTGGCCTGCATCGGGTCC\n+ATGCCCGGGGTCGGGGTCAGCTTCTGCGTCGCCCACATGATGGCGATGTTGAGCACCGGCAGGATGAAGT\n+ACGGATCGCGCGCGGTCAGGTCCTGGATCCAGCCCAGCCACGGCGCCTGGCGCAGTTCCACCGATTCCAC\n+CAACACCCAGTACAGCGCGAAGAAGATCGGCATCTGGATCAGCAGCGGCAGGCAGCCACCCATCGGGTTG\n+ATCTTTTCCTTCTTGAACAGCTCCATCGTCGCCTGCTGGTACTTCTGGCGGTCGTCGCCGTAGCGCTCCT\n+TCAACTGCGCCAGGCGCGGCTGGAAGCGGCGCATCTTGGCACCGGACTTGTACTGCGCGGCCGACAGCGG\n+ATACAGCGCCAGGCGCAACAGCACCACCAGGCCAATGATCGCCCAGCCCCAGTTGTGCAGGAAGCTGTGC\n+AGATGGCTCAGCACCCAGAACAGGCCCTGGCCGATGATGGCCATGATCGAGAAGCGGCTGTAGTCGACCA\n+CGCGGTCCAGGCCCTTCACGTCTTCCTTGGCGAGCAGGCTGACCAGCTTCGGGCCCACCCACAGGCGCGC\n+CTCGGTGCTGGCACTCTGGCCCGGTGCCACGGTGAAGGCTGGGCCACGCAGCTCGGCCACGTCACGCGGG\n+CCATCCTGCGCCAACACGTACAGCGAGGCCTGGTCCTTCTGCGGGATCCACGCGGTGAAGAAGTGATGCT\n+GCAGCAGGGCCACCCAGCCGCCGGTGATCTGGCGATTCAGGCCACCGTCGTCCATGTAGTCCTTGAACGC\n+CCGGCGCTCATACCCTTCCTGCGGGCTGTACCAGGTCGCGCCGTTGAAGCTGAAGGAATCCGGGTTGGTC\n+ATGCCGCGGCTGAGGATGGTCGGCACCCGGCTCAGCTTGCGGAACACATAGCCATTCCACGCCGCATCGC\n+TCTTGTTGATCACCTCATCCTTGATCGAGATCGCGTAGCTGCCGCGCTGCAAGGTGAAAATGCGGCGGAT\n+CGACACGCCATTGGGGCCGTTCCACACGAACGGCACTACCAGGGTGTTCTGGCCCTTGGCCAGCTCAAAC\n+GTGGTGCCCGGCTGCTCGGCACGGAAACCGCCCACGCCCGGCACCGGCGAGCGCTCGCTGGCCCAGCCGC\n+TGGTGGCGTTATACGGATGCGCGGCGTCTTCGGTCAGCAACTTGACCGGCTCGGTGCCGTCCTTGGTCTG\n+CGGGAACTGCAACAGCTCGGCGTCGAGCACGCTGCGGCCGTCCAGCTTCAGGCGCAGCACGTCCGAGGTC\n+AGGGTGATTGCCGGCGCGGCACCGGTAGTAGCCGGCGTGGCCGTGGTGGTGCTGGTCGCCGGCACCGCGG\n+CAGGGCTGCCGGCTTGCGGAATTGCCTGTGCCGACGGCACGTTCGCCGCGGGGGCCGCGGCGTCCGGATC\n+GCGCGCCGCCGGGACCGCCTGCGAGGCGATCGGCGTCGGCGCATTGGCGGCCGCCTTGTCCTTGCCCCAC\n+TCCATCCACAGCAGTGCCGCGACCATCAGCCAGGCAAAAATCAGGAAAACACGGGTCTGGTTCATCGGGC\n+AGCAACTCGCTCAGTCGGAACGGGGGTCCGGCTCTGTCGGGGAAAGGGAGGATGGGCGCGGTGCCCTGGC\n+GGGCGGCATTGTGCCGGGCGCGGCAGGCAGGGGCAATGCGCCGGCACGGCGCAGCAGACGCACGAAGGCG\n+TCGCGGATCTGTGGATTGGTCGCTTTGGCGGCCGCCGAACGGGCCACGATGACGTAGTCACCGCCGGCAA\n+GCTCCGGCAGCAGGTGGCGCATGGCATCGCGCAGGACCCGCTTGATTCGGTTGCGTCCCACCGCACGCGT\n+ATCGACCTTGCGCGATACCGCCATGCCCAGGCGCGGCGGCGTCTCGCCACTGCGCCAGTGCAGGCTCAGC\n+AACGGGTCCGAGGTGCGGCGCGCGGTATCGAAGACGACCGTATATTGCGCACGCGTACGAACCCGCGCAG\n+AGCGAGGAAATCGCCTGCACGGGTTCGATGCGTTCACTGAAGGGATTGCCTCGGCCGCAGGGAGCGGCGC\n+GGCAATCAAGCGCTCAGGCGCTTGCGGCCCTTGGCGCGGCGGCGAGCCAGGATCTTGCGGCCGTCGGCGG\n+TTGCCATACGTGCGCGGAAGCCATGGTCGCGTGCTCGCTTCAGGTTGCTGGGTTGGAAAGTACGCTTGGT\n+GGCCATGGGGCCCTCTGCATGGATGGAGACGAATAGAACCGGAAATTCTATAGGAGCTGTTGGGGCCGGG\n+TCAACTCCCTGCTGGCTTTACCGCAAGTGACGGTGTGCATGGCCTGTGGATGGACCTGTGAATAACCCTG\n+GGAAAACCCTGCCCCGGGTGCTAGTCTGGTCCATCCTCTTTTCATGACCGGGCTGCGAGCACGGCGCN\n+\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/data/Xoc_BLS256.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/data/Xoc_BLS256.fasta Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,69027 @@\n+>gi|868566092|ref|NC_017267.2| Xanthomonas oryzae pv. oryzicola BLS256, complete genome\n+CCTTTCTGCGCGCCGCAGCCAGCAACAGATGATCATACTTTGATGGATGCTTGGCCCCGCTGTCTGGAAC\n+GTCTCGAAGCTGAATTCCCGCCCGAAGATGTCCACACCTGGTTGAAACCCCTGCAAGCCGAAGACCGCGG\n+CGACAGCATCGTGCTGTACGCCCCAAATGCCTTCATCGTCGACCAGGTCCGCGAACGCTACCTGCCGCGC\n+ATCCGCGAGTTGCTGGCGTATTTTGCCGGCAATGGCGAAGTGGCGCTGGCCGTGGGGTCGCGTCCACGTG\n+CGCCCGAGCCGGCTCCGGCACCCATCGCGGCGACCGTTGCGCCGCAGGCTGCGCCGATCGCGCCGTTCGC\n+CGGCAACCTGGATTCGCATTACACCTTCGCCAACTTCGTGGAAGGCCGCAGCAACCAGCTGGGTCTGGCC\n+GCCGCGATCCAGGCCGCGCAGAAGCCCGGCGACCGGGCGCACAACCCGTTGCTGTTGTACGGCAGCACCG\n+GCCTGGGCAAGACCCACCTGATGTTCGCGGCGGGCAATGCACTGCGGCAAGCCAAACCGGCTGCCAAGGT\n+GATGTACCTGCGTTCGGAACAGTTCTTCAGCGCGATGATCCGGGCGCTGCAGGACAAGGCGATGGATCAG\n+TTCAAGCGCCAGTTCCAGCAGATCGATGCGTTGCTGATCGATGACATTCAGTTCTTCGCCGGCAAGGACC\n+GGACGCAGGAAGAGTTCTTCCACACCTTCAACGCGCTGTTCGATGGCCGCCAGCAGATCATCCTGACCTG\n+CGACCGCTACCCGCGCGAAGTGGAGGGCCTGGAGCCGCGGTTGAAGTCGCGCCTGGCCTGGGGCTTGTCG\n+GTCGCGATCGATCCGCCGGATTTCGAAACCCGTGCAGCCATCGTGCTGGCCAAGGCACGCGAGCGTGGCG\n+CCGAGATTCCCGACGACGTGGCATTTCTGATCGCCAAGAAGATGCGCTCCAACGTGCGCGACCTGGAAGG\n+CGCGCTCAATACGCTGGTGGCGCGCGCCAACTTCACCGGGCGCTTGATCACGGTGGAATTCGCCCAGGAG\n+ACGCTGCGCGACCTGTTGCGCGCGCAGCAACAGGCCATCGGCATCCCCAACATCCAGAAAACAGTAGCCG\n+ACTACTACGGCCTGCAGATGAAGGATTTGCTCTCCAAGCGCCGCACGCGTTCGCTGGCACGTCCGCGCCA\n+GGTGGCGATGGCGCTGGCCAAGGAGCTTACCGAACACAGCCTGCCGGAAATCGGCGATGCCTTCGCCGGC\n+CGCGACCACACCACCGTGCTGCATGCCTGCCGGCAGATCCGGACGCTGATGGAGGCCGACGGCAAGCTGC\n+GCGAGGATTGGGAAAAGCTGATTCGCAAGCTCAGCGAGTAGGCTTCGGACCCCAATCGTGTCCGCGCTGG\n+AGAAAAGCGTGGAAACGTTGGGGTCAAATGCGGGAGAATCTGTGGATAACGTTGCGTCGCGGTTCGATGG\n+AAAAACTATCCACAGGTTTTGCCACCAGATCAGGCACACTAGTCCAAAGCGTTTCAGGCGCTGAAATGTC\n+TTTGGAAACAAGTAGTTATGGCGGTTATCCGCTGAAAACGGCCCTACCATCACCACCAAGCTTTTGATTT\n+ATTCCATTATCTTTTAAAGCATAGGGGCACGGAACCACATGCGTTTTACACTGCAGCGCGAAGCCTTCCT\n+CAAACCGTTGGCCCAAGTGGTCAATGTGGTCGAACGCCGTCAAACCCTGCCTGTTCTGGCCAACTTGCTG\n+GTGCAGGTCAAGGACGGACAGGTCTCTTTGACCGGCACAGATCTGGAAGTCGAAATGATCTCGCGCACGA\n+TGGTGGAGGACGCGCAGGACGGCGAAACCACCATTCCTGCCCGCAAGCTATTCGACATCCTGCGCGCCCT\n+GCCGGACGGCAGCCGGGTCACCATTTCGCAGACCGGTGACAAGGTGACCGTTCAGGCCGGGCGTAGCCGT\n+TTCACGCTGGTGACGCTGCCGTCGAACGACTTCCCGTCCGTGGACGAAGTCGAGGCGACCGAGCGCGTGG\n+TGGTGCCCGAGGCCGGGCTCAAAGAGCTGATCGAACGCACGGCGTTTGCGATGGCGCAGCAGGATGTTCG\n+CTACTACCTCAACGGCCTGCTGTTCGACCTGCGCGACGGTTTGTTGCGCTGCGTGGCCACCGACGGCCAC\n+CGTTTGGCGCTATGCGAGATGGAGCTGGAGAATGCTGGCGGCGCCAAGCGTCAGATCATCGTGCCGCGTA\n+AGGGCGTGACCGAGCTGCAGCGTTTGCTGGAAGGCGCAGACCGTGAGGTCGAATTGGAAGTCGGCCGTAG\n+CCATATCCGCGTCAAGCGTGGCGATGTGACCTTTACGTCCAAGCTGATCGACGGCCGCTTCCCGGACTAC\n+GAGGCAGTGATGCCGATTGGCGCCGATCGCGAGGTCAAGGTGGATCGTGAGGCGCTGCGTGCGTCGCTGC\n+AGCGTGCGGCCATCCTGTCGAACGAAAAGTACCGTGGCGTGCGCGTGGAAGTATCGCCAGGCCAATTGAA\n+GATCAGTGCGCACAACCCCGAGCAAGAAGAAGCGCAGGAAGAGATTGAGGCCGACACCAAGGTCGACGAT\n+CTGGCCATTGGCTTCAACGTCAACTATTTGCTCGACGCGTTGTCGGCATTGCGCGATGAGCACGTGGTCA\n+TCCAGCTGCGAGACGCGAATTCGTCCGCGCTGGTGCGCGAGGCCAGTAGTGAGAAGTCACGTCATGTGGT\n+GATGCCGCTGCGTCTCTGACGCTTCGTTCCACGTGGAACACGAGAAGCCCGGCGAACGCCGGGCTTTTTA\n+TTGGTTGTTGAACCTCTTGTTGTGTCTGTTTGGGTAACCCTGCTGGCTGCGATCGCACAACGCGAGGAAG\n+GCGACGCGCTGGGGGCAGCGGTTCTAGCTGAAGCGGCAAGCTCGTTGCTCAGGCGTTGGAACGGCATCTT\n+CAGCGCGCTATGTCAGGTTACTCAGCGGCTGACGCCGCTTGCGTCGCTTTTGACCCACTGCGCCAGGCGG\n+TCTCTCACACGTATACCGACAGGGGCTCCGGATTGACAGCCTCTTATCCGACGACGGCAAGCCGAGTTTT\n+TGGGAATCGACGTGCTGGATAGACCCCGCGCGCGACCGGTATCGTGGACGCCTTCTGCGCGGAACGCGGG\n+GGTCCTGAATACGCATCGGTGTATCGACGGGTCTGTGCAGGTCCCGACAGGTAGGTGAATCCAGAGGCTG\n+ACACACCGGTTTTAACGCACCGGCGACCTCACCGGCTCACGCGTGGTCGGCTGAGATGGCGAGTTCATGC\n+GGACGCTCTCGAACGCCAAAGCCCCGCTTTGTTCCTGAGTGCTTCGCTTTAACATTTATGAGACCAAGTC\n+ACTTTTATTGATGCCGGTTGAATCATCGCTTGCGCCCTGAAACTGAACGGTTTTAGTTGAAAGACAGAGC\n+GACACACATTGCCATCACGCCTGGCTGAAAGGTTTGCAGATATCTGATTGGCTTTCCTGAGCCTGTTTTC\n+GACTTATGCACATCGCGCGTTGCTTTTTAAAACTAGAAATAATGTAAGAGCTTGGTGGTGATGGTAGGGG\n+CAGATTTCACCGCAAAGTAGATCAGGTTGTTGTTTTTAAAGTCATTTATGGCCTCGAAAGCCTGTGTTTA\n+TCGGCCTATTTGTCAGCCTACAAGCTGTGGGTAAGGTGATATCGGGCGCAGAGCCTTGGTTTTATCCACA\n+CGTTATCCCCTGCCTGTCCAAGAGCATCCGTTCGCACGTCTGCGCGGGTTCCATGCCGATCACGTATCCT\n+T'..b'GCCTTGTTCACTTGGTCGAGCACGCGTTGCACGATGGATT\n+CCGGCACCGGGTCGGCCCAGTCCAGCGAGTCGATATTCCACATGATGGACTTCAGGCCGGCCTCGCCCAG\n+CAGCTGCAAGCCTTCCGCAGTGCGCGCGCCATACGGAGACCGGAACAACGGCGCGCGCTTGTCGTCCACC\n+GCACGCAGCAAGGTGTCGGTATCCAGTACCTGGCTGCGCTGCGCTGCGCCGGTGGTTTTGGACAACTGCG\n+CGTGGGTCAGGCTGTGGTTTCCAACGGCATACCCCTCTTCCATCAGCGTGCGGCTGATCTTGGACAGCGG\n+CGCGAGTTTGGGTTTGCCGGCGGCATCCAGGCTACCCAGATTGCGCCCTACTTCGAAGAACACCCCGGGC\n+ACGTCGTCGCGTTTGAGGATCGCCACGATCTCTTCGGTAAAGGCCTTGTGCGGACCATCGTCGAAGGTCA\n+GCACCACTGTTTTGGGTGGCAGGTCGCGGCCGAACACTTCGCTGTCGCTGTCGCGTGCCGAGAACGGATA\n+CGGCTCCACCACGCCATGGTCACGCAGGATCTTCTCGCGCGTGTACAGCGTGCGCAGATGCGCCACGTAG\n+TCGTCCCACTTCTCGCGCTTGGGCACGATGGCGCGGCTGCGGTCGAAGCGACTGAAGATCTGCGTCAGCT\n+CCTTGGTGTAGCTGCGCTCGATTTCGTCCAGCGCCTCCAGATCCCCGCCGATGCGCTGATGCAGTTTCAC\n+CGCTGGCAACGCAGAGTCGCGACCGATGCGCGCATGCAGATCGCGCAATACCTCGCCAAAGGCGAGGCGG\n+TCGGCATCGGAGAGATCCGGCGCCGATTCCACCTCGTCCAGCACCGCAGCAATCGTCGCAAACCGGTTCG\n+CGTGCTTGGATGTCAGCACTGTTTCGAACGATGCAGCGATGCGTTCGCGCTGCTCGAGATTTTCATGGAA\n+CAGCTGCTGCCCCACGCTGCTGGACGTGGCGCGATCGCGTGGGGTCTGCTTGTCCTCATCGGCCAGCAGC\n+ACGATGATGCGGCGGTGCCGGTCCAGCTGTTCGCGCAGTTGCGCGATCAATGCCTGCGCGGCGTCGGCGC\n+TCTTGTCGGCCTGCGTTCCTGCGGTCGTTGCAGCAGAGGATTTCGCGGCGGAGGCCGCATCGCTCGCGCC\n+CTGCTTCCCACAGCCGGCCAGCGCCAGCACTCCCACGCAACTTGCGCACAGCAGCAGGCGATGCAACGGC\n+GATGTGGTCACGACGGCGTCCTTGGCGAAAGAGACAACAGATGCGGGCTGACATGCAGAAAGCCCGCCTT\n+GCGGCGGGCCTTCTTCAACTTACTTGGCGTTGGCCCGGATGATCTTGCTCGGCTTCTCGCCGTGCTGGCG\n+GATCATCCACCACTGGATAAGCAGATTCAAACCGCCGTTGACCACCCAGTACAGCACCAGACCGGACGGC\n+ACGAAGGCCATCATGGCGCCGAACACCAGCGGCATGAACTGCATCATCTTGGCCTGCATCGGGTCTATGC\n+CCGGGGTCGGGGTCAGCTTCTGCGTCGCCCACATGATCGCGATGTTGAGCGCCGGGAGGATGAAGTGCGG\n+GTCGCGCGCGGTCAGGTCCTGGATCCAGCCCAGCCACGGCGCCTGACGCAGTTCCACCGACTCCACCAGC\n+ACCCAGTACAGCGCGAAGAAGATCGGCATCTGGATCAGCAGCGGCAGGCAGCCGCCCATCGGGTTGATCT\n+TTTCCTTCTTGAACAGCTCCATCGTGGCCTGCTGGTACTTGACGCGATCGTCGCCGTAGCGCTCCTTGAG\n+TTGCGCCAGGCGCGGCTGGAACTTGCGCATCTTGGCACTGGACTTGTACTGCGCAGACGACAGCGGATAC\n+AGCACCAACCGCAGCAACACCACCAGGCCGACGATCGCCCAGCCCCAGTTGTGCAGGAAGCTGTGCAGAT\n+GGCTCAGCACCCAGAACAGGCCCTGGCCGATGATGGCCATGATCGAGAAGCGGCTGTAATCGATCACGCG\n+GTCCAGCCCCTTCACGTCTTCCTTGGCGATCAGGCTGACCAGCTTCGGACCCACCCACAGGCGCGCTTCG\n+GTGGTCGCGGTCTGGCCCGGCGCCACGGTGAAAGCCGGGCCGCGCAACTCGGCCACGTCGCGTGGGCCGT\n+CCTTGTTCAACACATACAGCGAGGCCTGGTCGTTCTGCGGAATCCACGCGGTGAAGAAGTGGTGCTGCAA\n+CAGCGCTATCCAACCGCCGGTGATCTGGCGATTGAGGCCGCCGTCGTCCATGTAGTCCTTGAACGCACGA\n+CGCTCGTAGCCTGCCTGCGGGCTGTACCAGGTCGCCCCGTTGAAGCTGAAGGAATCCGGATTGGTCATGC\n+CGCGGCTGAGGATGGTCGGCACCCGGCTCAGCTTGCGGAACACATAACCGTTCCACGGCGCGGCGCTCTT\n+GTTGATCACTTCATCCTTGATCGAGATCGCATAGCGACCACGTTCCAGGGTAAAGGTGCGACGGATCGAC\n+ACGCCGTTGGGGCCATTCCACACGAACGGCACCACCAGCGTGTTCTGGCCCTTGGCGAGTTCGAACGTCG\n+TGCCAGGCTGTTCTGCGCGAAAGCCGCCGACGCCCGGCACCGGCGAATGCTCACTGGCCCAGCCACTGGT\n+GGCGTTGTACGGGTGCGCCGCGTCTTCCGTCAGCAGGCTGACCGGCGCGGTGCCGTCCTTGGTCTGCGGG\n+AACTGCAGCAGCTCGGCGTCGAGCACGCTGCGGCCATCCAGCTTCAGGCGCAGCACGTCCGAGGTCAGGG\n+TGACCACCGGTGCAGTGCCGGCAGCAGCCGGTGTCGCGGTGGTGGTGCTGGTTGCCGGAACCTTACCCGG\n+CGCACCAGCCTGCGGAATGGCCTGAGCTGCGGGCACATTCGCCGCGCTTGGCGTTGCCGCATCCAGATCA\n+CGTGCCGCCGGCACCGATTGCGTCGCAGCCGCCACGGGCGCATTGGCAGCCGCTTTTTCTTTGCCCCACT\n+CCATCCACAGCAGCGCCGCGACCATCAGCCAGGCAAAAATCAGGAAAACACGGGTCTGGTTCATCGGTCA\n+GCAACTCGCTCAGTCGGAACTACAGGTCCGGCTCTGTCGGGGGAAGGGAGGATGGGTGCATCGTCCTGGC\n+GGGCGGCATTGTGCCGGGCGCAGCAGGTAGGGGCAATGCGCCGGCACGGCGCAGCAGACGCAGGAAGGCG\n+TCGCGGATCTGCGGATTGGTCGCTTTTGCAGCTGCCGAGCGCGCCACGATGACGTAATCGCCACCGGCCA\n+ACTCAGGCAAGAGATGTCGCATGGCATCGCGCAACACACGTTTGATGCGGTTACGTCCGACCGCACGCGT\n+ATCGACCTTGCGCGACACCGCCATGCCCAGGCGCGGCGGGGTATCGCCAGTGCGCCAGTGCAGACTCAAT\n+AGCGGATCCGAGGTGCGGCGTGCGTTGTCGAAAACGACCGTATATTGCGCACGCGTACGAACCCGCGCAG\n+AGCGAGGAAATCGCTTGCACGGGTTCGATGCGTTCACGGTAAGGACTGCCTCGGCCGCAGGGAGCGGCGC\n+GGCAATCAAGCGCTCAGGCGCTTGCGGCCCTTGGCGCGGCGGCGAGCCAGGATCTTGCGGCCGTCGGCGG\n+TTGCCATACGTGCGCGGAAGCCATGGTCGCGTGCTCGCTTGAGGTTGCTGGGTTGGAACGTACGCTTGGT\n+GGCCATGGGGCCCTCTGCATGAATGGAGACGAATAGAACCGGCAATTCTATTGGTCCGCTACAGCCCAGG\n+TCAACAACCCGCGCGCATCGCCGCAGCCGACGATGACCGCCGCCTGTGGATGGGCCTGTGAATAACTCTG\n+GGAAAACCGTGTCCCCGGTGCTAGTCTGGCCCATCCTCTTTTCACTACCGGGCTGCGTGCACGGCG\n+\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/data/Xoo_KACC_10331.fasta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/data/Xoo_KACC_10331.fasta Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,70594 @@\n+>gi|58579623|ref|NC_006834.1| Xanthomonas oryzae pv. oryzae KACC 10331, complete genome\n+CGCCTTTCTGCGCGCCGCAGCCAGCAACAGATGATCATACTTTGATGGATGCTTGGCCCCGCTGTCTGGA\n+ACGTCTCGAAGCTGAATTCCCGCCCGAAGATGTCCACACCTGGTTGAAACCCCTGCAAGCCGAAGACCGC\n+GGCGACAGCATCGTGCTGTACGCCCCGAATGCCTTCATTGTCGACCAGGTCCGCGAACGCTACCTGCCGC\n+GCATCCGCGAGTTGCTGGCGTATTTTGCCGGCAATGGCGAAGTGGCGCTGGCCGTGGGGTCGCGTCCACG\n+TGCGCCCGAGCCGGCTCCGGCACCCGTCGCGGCGACCATTGCGCCGCAGGCTGCGCCGATCGCGCCGTTC\n+GCCGGCAACCTGGATTCGCATTACACCTTCGCCAACTTCGTGGAAGGCCGCAGCAACCAGCTGGGTCTGG\n+CCGCCGCGATCCAGGCCGCGCAGAAGCCCGGCGACCGGGCGCACAACCCGTTGCTGTTGTACGGCAGCAC\n+CGGCCTGGGCAAGACCCACCTGATGTTCGCGGCGGGCAATGCACTGCGGCAAGCCAAACCGGCTGCCAAG\n+GTGATGTACCTGCGTTCGGAACAGTTCTTCAGCGCGATGATCCGGGCGCTGCAGGACAAGGCGATGGATC\n+AGTTCAAGCGCCAGTTCCAGCAGATTGATGCGTTGCTGATCGACGACATCCAGTTCTTCGCGGGCAAGGA\n+CCGTACGCAGGAAGAGTTCTTCCACACCTTCAACGCGCTGTTCGATGGCCGCCAGCAGATCATCCTGACC\n+TGCGACCGCTACCCGCGCGAAGTGGAGGGCCTGGAGCCGCGGTTGAAGTCGCGCTTGGCCTGGGGCTTGT\n+CGGTCGCGATCGATCCGCCGGATTTCGAAACCCGTGCAGCCATCGTGCTGGCCAAGGCACGCGAGCGTGG\n+CGCCGAGATTCCCGACGACGTGGCATTTCTGATCGCCAAGAAGATGCGCTCCAACGTGCGCGACCTGGAA\n+GGCGCGCTCAACACGCTGGTGGCGCGCGCCAACTTCACCGGGCGCTCGATCACGGTGGAATTCGCCCAGG\n+AGACGCTGCGCGACCTGTTGCGCGCGCAGCAACAGGCCATCGGCATCCCCAACATCCAGAAAACAGTAGC\n+CGACTACTACGGCCTGCAGATGAAGGATTTGCTCTCCAAGCGCCGCACGCGTTCGCTGGCACGTCCGCGC\n+CAGGTGGCGATGGCGCTGGCCAAGGAGCTCACCGAACACAGCCTGCCGGAAATCGGCGATGCCTTCGCCG\n+GCCGCGACCACACCACCGTGCTGCATGCCTGCCGGCAGATCCGCACGCTGATGGAGGCAGACGGCAAGCT\n+GCGCGAGGACTGGGAAAAGCTGATTCGCAAGCTCAGCGAGTAGGCCTCGGACCCCAATCGTGTCCGCGCT\n+GGAGAAAAGCGTGGAAACGTTGGGGTCAAATGCGGGAGAATCTGTGGATAACGTTGCGTGGCGGTTCGAT\n+GGAAAAACTATCCACAGGTTTTGCCACCAGATCAGGCACACTAGTCCCAAGCGTTTCAGGCGCTGAAATG\n+TGTTTGGAAACAAACAGTTATGGCGGTTATCCGCTGAAAACGGCCCTACCATCACCACCAAGCTTTTGAT\n+TTATTCCATAATCTTTTAAAGCATAGGGGCACGGAACCACATGCGTTTTACACTGCAGCGCGAAGCCTTC\n+CTCAAACCGTTGGCCCAAGTGGTCAATGTGGTCGAACGCCGTCAAACCCTGCCTGTTCTGGCCAACTTGC\n+TGGTGCAGGTCAAGGACGGACAGGTCTCGTTGACCGGCACGGATCTGGAAGTCGAAATGATCGCGCGCAC\n+GATGGCGGAGGACGTGCAAGACGGCGAAACCACCATTCCCGCCCGCAAGCTATTCGACATCCTGCGCGCC\n+CTGCCGGACGGCAGCCGGGTCACCATTTCGCAGACCGGTGACAAGGTGACAGTTCAGGCCGGGCGTAGCC\n+GTTTCACGCTGGCGACGCTGCCTGCGAACGACTTCCCGTCCGTGGACGAAGTCGAGGCGACCGAGCGCGT\n+GGTGGTGCCCGAGGCCGGGCTCAAAGAGCTGATCGAACGCACGGCGTTTGCGATGGCACAGCAGGATGTT\n+CGCTACTACCTCAACGGCCTGCTGTTCGACCTGCGCGACGGTTTGCTGCGCTGCGTGGCCACCGACGGCC\n+ACCGTTTGGCGCTATGCGAGATGGAGCTTGAGAATGCTGGCGGCGCCAAGCGTCAGATCATCGTGCCGCG\n+TAAGGGCGTGACCGAGCTGCTGCGTTTGCTGGAAGGCGCAGACCGTGAGGTCGAATTGGAAGTCGGCCGT\n+AGCCATATCCGCGTCAAGCGTGGCGATGTAACCTTCACTTCCAAGCTGATCGACGGCCGCTTCCCGGACT\n+ACGAGGCAGTGATTCCGATTGGCGCCGATCGCGAGGTCAAGGTTGATCGTGAGGCGCTGCGTGCGTCGCT\n+TCAGCGCGCGGCCATCCTGTCGAACGAAAAGTACCGTGGCGTGCGCGTGGAAGTATCGCCAGGCCAATTG\n+AAGATCAGTGCGCACAACCCAGAGCAAGAAGAAGCGCAGGAAGAGATTGAGGCCGACACCAAGGTCGACG\n+ACCTGGCGATTGGCTTCAACGTCAACTATCTGCTCGATGCGTTGTCGGCATTGCGCGATGAGCACGTGGT\n+CATCCAGCTGCGAGACGCGAATTCGTCCGCGCTGGTGCGCGAGGCCAGCAGTGAGAAGTCCCGTCATGTG\n+GTGATGCCGCTGCGTCTCTGACGCTTTGTTCCACGTGGAACACGAGAAGCCCGGCGAACGCCGGGCTTTT\n+TATTGGTTGTTGAACCGCTTGCTGTGTCTGTTTGGGTAACCCTGCTAGCTGCGATCGCACAACGCGAGGA\n+AGTCGGCGCGCTGGGGGCAGCGGTTCTAGCTGAAGCGGCAAGCCCGTTGCTCAGGCGTTGGAACGGCATC\n+TTCAGCGCGATATTTCAGGTTACTCAGCGGCTGACGCCGCTGGTGTCGCTTTTGACCCACTGCGCCAGGC\n+GGGCTCTCACACATATACCGACGGGGGCTCCGGATTGGCAGCCCCTTATCCGATGACGGCAAGCCGAGTT\n+TTTGGGAATCGACCTGCTGGATAGACCCCGCGCGCGACCGGTGTCGTGGACGCGTTCTGCGCGGAACTCG\n+GGGGGATCCTGAATACGTATCGGTTTATCGGCGGGCCTGTGCAGGTCCCGACAGAGAGGTGAATCCAGAG\n+GCTGACACCTGGGCCGACTCAAGTTCCAAGTGCAACACTTTTCTCGACTGCAGACCCGCGTTTTCTGTCA\n+AAACACTGGCTCACGTAACTTTTGCACAATCAATGGCCTGCCGGGCTGTCCGTCCATACGTTGCGCTAAC\n+AGCAGGTCTCTCGAGGTGTTGCACTTGACTCTTGAGACCGCCCTGGTTTTAACGCACAGGCAACCTCACC\n+GGCTCACGCGTGGTCGGCTGAGATGGCGAGTTCATGCGGACCCTCTCGAACGACAAAGCGCTACTTCTTT\n+CCTGAGCGCCTCGCTTTGGCATTTATGAGACCAAGTCACTTTTGTTGATTCCGGTTGAATCATCACTTGA\n+GCCCTGAAACTGAACGGTTTTAGTTGAAAGGCAGAGCAAGACCAATTGCCATTACGCCTAGCTGAAAGGT\n+TTGCAGACATCTGATTGGCTTTTCTGAGCCTGTTTCCGACTTATGCACATCACGCGTTGCTTTTAAAACT\n+ACAAATACCTTAAGAGCTTGGAGGTGATGGTAGGGGCAGATTTCACCGCAAAGTAGATCAGGTTGTTGTT\n+T'..b'GCGCCTTGTTCACTTGGTCGAGCACGCGTTGCACGAT\n+GGATTCCGGCACCGGGTCGGCCCAGTCCAGCGAGTCGATATTCCACATGATGGACTTCAGGCCGGCCTCG\n+CCCAGCAGCTGCAAGCCTTCCGCAGTGCGCGCGCCATACGGAAACGGGAACAACGGCGCGCGCTTGTCGT\n+CCACCGCACGCAGCAAGGTGTCGGTATCCAGTACCTGGCTGCGCTGCGCTGCGCCGGTGGTTTTGGACAA\n+CTGCGCGTGGGTCAGGCTGTGGTTTCCAACTGCATACCCCTCTTCCATCAGCGTGCGGCTGATCTTGGAC\n+AGCGGCGCGAGTTTGGGTTTGCCGGCGGCATCCGGGCTACCCAGATTGCGCCCTACTTCGAAGAACACCC\n+CGGGCACGTCGTAGCGTTTGAGGATCGCCACGATCTCTTCGGTATAGGCCTTGTGCGGACCATCGTCGAA\n+GGTCAGCACCACTGTTTTGGGTGGCAGGTCGCGGCCGAACACTTCGCTGTCGCTGTCGCGTGCCGAGAAC\n+GGATACGGCTCCACCACGCCATGGTCACGCAGGATCTTCTCGCGCGTGTACAGCGTGCGCAGATGCGCCA\n+CGTAGTCGTCCCACTTCTCGCGCTTGGGCACGATGGCGCGGCTGCGGTCGAAGCGACTGAAGATCTGCGT\n+CAGCTCCTTGGTGTAGCTGCGCTCGATTTCGTCCAGCGCCTCCAGATCCTCGCCGATGCGCTGATGCAGT\n+TTCACCGCTGGCAACGCAGAGTCGCGACCGATGCGCGCATGCAGATCGCGCAATACCTCGCCAACGGCGA\n+GGCGGTCGGCATCGGAGAGATCCGGCGCCGATTCCACCTCGTCCAGCACCGCAGCAATCGTCGCGAACCG\n+GTTCGCGTGCTTGGATGTCAGCACTGTTTCGAACGATGCAGCGATGCGTTCGCGCTGCTCGAGATTTTCA\n+TGGAACAGCTGCTGCCCCACGCTGCTGGACATGGCGCGATCGCGTGGGGTCTGCTTGTCCTCATCGGCCA\n+GCAGCACGATGATGCGGCGGTGCCGGTCCAGCTGTTCGCGCAGTTGCGCGATCAATGCCTGCGCAGCGTC\n+GGCGCTCTTGTCGGCCTGCGTTCCTGCGGTCGTTGCAGCAGAGGATTTCGCGGCGTAGGCCGCATCGCTC\n+GCGCCCTGCTTCCCACAGCCGGCCAGCGCCAGCACTCCCACGCAACTTGCGCACATCAGCAGGCGATGCA\n+ACGGCGATGTGGTCACGACGGCGTCCTTGGCGAAAGAGACAACAGATGCGGGCTGACATGCAGAAAGCCC\n+GCCTTGCGGCGGGCCTTCTTCAACTTACTTGGCGTTGGCCCGGATGATCTTGCTCGGCTTCTCGCCGTGC\n+TGGCGGATCATCCACCACTGGATAAGCAGATTCAAACCGCCGTTGACCACCCAGTACAGCACCAGACCGG\n+ACGGCACGAAGGCCATCATGGCGCCGAACACCAGCGGCATGAACTGCATCATCTTGGCCTGCATCGGGTC\n+TATGCCCGGGGTCGGGGTCAGCTTCTGCGTCGCCCACATGATCGCGATGTTGAGCGCCGGGAGGATGAAG\n+TGCGGGTCGCGCGCGGTCAGGTCCTGGATCCAGCCCAGCCACGGCGCCTGACGCAGTTCCACCGACTCCA\n+CCAGCACCCAGTACAGCGCGAAGAAGATCGGCATCTGGATCAGCAGCGGCAGGCAGCCGCCCATCGGGTT\n+GATCTTTTCCTTCTTGAACAGCTCCATCGTGGCCTGCTGGTACTTGACGCGATCGTCGCCGTAGCGCTCC\n+TTGAGTTGCGCCAGGCGCGGCTGGAACTTGCGCATCTTGGCACTGGACTTGTACTGCGCAGACGACAGCG\n+GATACAGCACCAACCGCAGCAACACCACCAGGCCGACGATCGCCCAGCCCCAGTTGTGCAGGAAGCTGTG\n+CAGATGGCTCAGCACCCAGAACAGGCCCTGGCCGATGATGGCCATGATCGAGAAGCGGCTGTAATCGATC\n+ACGCGGTCCAGCCCCTTCACGTCTTCCTTGGCGATCAGACTGACCAGCTTCGGACCCACCCACAGGCGCG\n+CTTCGGTGGTCGCGGTCTGGCCCGGCGCCACGGTGAAAGCCGGGCCGCGCAACTCGGCCACGTCGCGTGG\n+GCCGTCCTTGTTCAACACATACAGCGAGGCTTGGTCGTTCTGCGGAATCCACGCGGTGAAGAAGTGGTGC\n+TGCAACAGCGCTATCCAGCCGCCGGTGATCTGGCGATTGAGGCCGCCGTCGTCCATGTAGTCCTTGAACG\n+CACGACGCTCGTAGCCTGCCTGCGGGCTGTACCAGGTCGCCCCGTTGAAGCTGAAGGAATCCGGATTGGT\n+CATGCCGCGGCTGAGGATGGTCGGCACCCGACTCAGCTTGCGGAACACATAACCGTTCCACGGCGCGGCG\n+CTCTTGTTGATCACTTCATCCTTGATCGAGATCGCATAGCGACCACGTTCCAGGGTAAAGGTGCGACGGA\n+TCGACACGCCGTTGGGGCCATTCCACACGAACGGCACCACCAGCGTGTTCTGGCCCTTGGCGAGTTCGAA\n+CGTCGTGCCAGGCTGTTCTGCGCGAAAGCCGCCGACGCCCGGCACCGGCGAATGCTCACTGGCCCAGCCA\n+CTGGTGGCGTTGTACGGGTGCGCCGCGTCTTCCGTCAGCAGGCTGACCGGCGCGGTGCCGTCCTTGGTCT\n+GCGGGAACTGCAGCAGCTCGGCGTCGAGCACGCTGCGGCCATCCAGCTTCAGGCGCAGCACGTCCGAGGT\n+CAGGGTGACCACCGGTGCAGTGCCGGCAGCAGCCGGTGTCGCGGTGGTGGTGCTGGTTGCCGGAACCTTA\n+CCCGGCGCACCAGCCTGCGGAATCGCCTGAGCTGCGGGCACATTCGCCGCGCTTGGCGTTGCCGCATCCA\n+GATCACGTGCCGCCGGCACCGATTGCGTCGCAGCCGCCACGGGCGCATTGGCAGCCGCTTTTTCTTTGCC\n+CCACTCCATCCACAGCAGCGCCGCGACCATCAGCCAGGCAAAAATCAGGAAAACACGGGTCTGGTTCATC\n+GGGCAGCAACTCGCTCAGTCGGAACTACAGGTCCGGCTCTGTCGGGGAAAGGGAGGATGGGTGCATCGTC\n+CTGGCGGGCGGCATTGTGCCGGGCGCAGCAGGTAGGGGCAATGCGCCGGCACGGCGCAGCAGACGCAGGA\n+AGGCGTCGCGGATCTGCGGATTGGTCGCTTTTGCAGCTGCCGAGCGCGCCACGATGACGTAATCGCCACC\n+GGGCAACTCAGGCAAGAGATGTCGCATGGCATCGCGCAACACACGTTTGATGCGGTTACGTCCGACCGCA\n+CGCGTATCGACCTTGCGCGACACCGCCATGCCCAGGCGCGGCGGGGTATCGCCAGTGCGCCAGTGCAGAC\n+TCAATAGCGGATCCGAGGTGCGGCGTGCGTTGTCGAAAACGACCGTATATTGCGCACGCGTACGAACCCG\n+CGCAGAGCGAGGAAATCGCCTGCACGGGTTCGATGCGTTCACGGTAAGGACTGCCTTGGCCGCAGGGAGC\n+GGCGCGGCAGTCAAGCGCTCAGGCGCTTGCGGCCCTTGGCGCGGCGGCGAGCCAGGATCTTGCGGCCGTC\n+GGCGGTTGCCATACGTGCGCGGAAGCCATGGTCGCGTGCTCGCTTGAGGTTGCTGGGTTGGAACGTACGC\n+TTGGTGGCCATGGGGCCCTCTGCATGAATGGAGACGAATATAACCGGTAATTCTATAGGTCCGCTACAGC\n+CCTGGTCAACAACCCGCGCGCATCGCCGCAGCTGACGCTGACCGCCGCCTGTGGATGGACCTGTGAATAA\n+CTCTGGGAAAACCGTGTCCCCGGTGCTAGTCTGGCCCATCCTCTTTTCACTACCGGGCTGCGTGCACGG\n+\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/log Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,38 @@\n+utils::Initialize( ) - Initialization complete. Temporary directory: tmpJuP2tr\n+uniqprimer::Main( ) - Logging include files: \n+uniqprimer::Main( ) - data/X11-5Agenome.fasta\n+uniqprimer::Main( ) - Logging exclude files: \n+uniqprimer::Main( ) - data/XCCgenome.fasta\n+UniqPrimerFinder::__init__() - Initializing UniqPrimerFinder\n+utils::search_file - Path: /SATA/bioinfo/galaxy/galaxy_env/bin:/usr/local/bioinfo/galaxy/galaxy-python:/SGE/n1ge62/bin/lx24-amd64:/usr/lib64/qt-3.3/bin::/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bioinfo/bin:/usr/local/bioinfo/abyss/bin:/usr/local/bioinfo/al2co:/usr/local/bioinfo/amos/bin:/usr/local/bioinfo/bambus/bin:/usr/local/bioinfo/bedtools/bin:/usr/local/bioinfo/bimbam:/usr/local/bioinfo/blast/bin:/usr/local/bioinfo/blast+/bin:/usr/local/bioinfo/bowtie:/usr/local/bioinfo/bowtie2:/usr/local/bioinfo/bwa:/usr/local/bioinfo/caftools/bin:/usr/local/bioinfo/CAP3:/usr/local/bioinfo/carthagene:/usr/local/bioinfo/cdhit:/usr/local/bioinfo/censor/bin:/usr/local/bioinfo/clustalw:/usr/local/bioinfo/consed/bin:/usr/local/bioinfo/cross_match:/usr/local/bioinfo/cufflinks:/usr/local/bioinfo/decoder:/usr/local/bioinfo/dssp:/usr/local/bioinfo/EIG3.0/bin:/usr/local/bioinfo/EMBOSS/bin:/usr/local/bioinfo/ESTScan:/usr/local/bioinfo/eval:/usr/local/bioinfo/eugene-3.2/bin:/usr/local/bioinfo/eugene-3.5g/bin:/usr/local/bioinfo/exonerate/bin:/usr/local/bioinfo/FastME:/usr/local/bioinfo/fastx_toolkit:/usr/local/bioinfo/flexbar:/usr/local/bioinfo/FINDMite:/usr/local/bioinfo/fpc:/usr/local/bioinfo/fpocket2:/usr/local/bioinfo/freebayes:/usr/local/bioinfo/GERP:/usr/local/bioinfo/gevalt:/usr/local/bioinfo/gnuplot/bin:/usr/local/bioinfo/GTH/bin:/usr/local/bioinfo/hmmer/bin:/usr/local/bioinfo/hcluster_sg:/usr/local/bioinfo/ImageMagick/bin:/usr/local/bioinfo/i-adhore:/usr/local/bioinfo/JimKent:/usr/local/bioinfo/LTR_BMC:/usr/local/bioinfo/LTR_FINDER:/usr/local/bioinfo/LTRharvest/bin:/usr/local/bioinfo/mafft/bin:/usr/local/bioinfo/mapmaker:/usr/local/bioinfo/MapSplice/bin:/usr/local/bioinfo/maxcluster:/usr/local/bioinfo/mcl/bin:/usr/local/bioinfo/MCQTL/bin/Linux:/usr/local/bioinfo/meme/bin:/usr/local/bioinfo/mfold_util/bin:/usr/local/bioinfo/mira/bin:/usr/local/bioinfo/mistral:/usr/local/bioinfo/modeller9v7/bin:/usr/local/bioinfo/mreps:/usr/local/bioinfo/MUMmer:/usr/local/bioinfo/MUSTANG:/usr/local/bioinfo/MultiProtInstall:/usr/local/bioinfo/multalin:/usr/local/bioinfo/muscle:/usr/local/bioinfo/paircoil2:/usr/local/bioinfo/PHYML:/usr/local/bioinfo/pals:/usr/local/bioinfo/paml/bin:/usr/local/bioinfo/phase:/usr/local/bioinfo/phred:/usr/local/bioinfo/piler:/usr/local/bioinfo/plink:/usr/local/bioinfo/polyscan:/usr/local/bioinfo/oases:/usr/local/bioinfo/prank:/usr/local/bioinfo/primer3:/usr/local/bioinfo/psipred30:/usr/local/bioinfo/Prokov/bin:/usr/local/bioinfo/qmean/bin:/usr/local/bioinfo/quicktree:/usr/local/bioinfo/R/bin:/usr/local/bioinfo/RepeatMasker:/usr/local/bioinfo/recon/bin:/usr/local/bioinfo/RepSeek/bin:/usr/local/bioinfo/REPET/bin:/usr/local/bioinfo/rnammer:/usr/local/bioinfo/scip/bin:/usr/local/bioinfo/semphy:/usr/local/bioinfo/shapeIT:/usr/local/bioinfo/signalp:/usr/local/bioinfo/SpliceMachine/bin:/usr/local/bioinfo/sratoolkit:/usr/local/bioinfo/ssaha2:/usr/local/bioinfo/sspro4/bin:/usr/local/bioinfo/staden/bin:/usr/local/bioinfo/structure:/usr/local/bioinfo/T-COFFEE/bin:/usr/local/bioinfo/TRF:/usr/local/bioinfo/tassel:/usr/local/bioinfo/tgicl:/usr/local/bioinfo/tgicl/bin:/usr/local/bioinfo/tophat:/usr/local/bioinfo/treebest:/usr/local/bioinfo/tRNAscan-SE/bin:/usr/local/bioinfo/unafold/bin:/usr/local/bioinfo/vcftools/bin:/usr/local/bioinfo/velvet:/usr/local/bioinfo/ViennaRNA/bin:/usr/local/bioinfo/wgs/bin:/usr/local/bioinfo/wublast:/usr/local/bioinfo/xslt/bin:/usr/local/bioinfo/tmhmm/bin:/usr/local/bioinfo/trinity:/usr/local/bioinfo/bpp/bin:/SATA/bioinfo/galaxy/galaxy_dist/tools/idfixe20120705/bin:/SATA/bioinfo/galaxy/galaxy_dist/tools/idfixe/bin:.:/opt/IBM_DS/jre/bin\n+utils::search_file - Path'..b'ller9v7/bin:/usr/local/bioinfo/mreps:/usr/local/bioinfo/MUMmer:/usr/local/bioinfo/MUSTANG:/usr/local/bioinfo/MultiProtInstall:/usr/local/bioinfo/multalin:/usr/local/bioinfo/muscle:/usr/local/bioinfo/paircoil2:/usr/local/bioinfo/PHYML:/usr/local/bioinfo/pals:/usr/local/bioinfo/paml/bin:/usr/local/bioinfo/phase:/usr/local/bioinfo/phred:/usr/local/bioinfo/piler:/usr/local/bioinfo/plink:/usr/local/bioinfo/polyscan:/usr/local/bioinfo/oases:/usr/local/bioinfo/prank:/usr/local/bioinfo/primer3:/usr/local/bioinfo/psipred30:/usr/local/bioinfo/Prokov/bin:/usr/local/bioinfo/qmean/bin:/usr/local/bioinfo/quicktree:/usr/local/bioinfo/R/bin:/usr/local/bioinfo/RepeatMasker:/usr/local/bioinfo/recon/bin:/usr/local/bioinfo/RepSeek/bin:/usr/local/bioinfo/REPET/bin:/usr/local/bioinfo/rnammer:/usr/local/bioinfo/scip/bin:/usr/local/bioinfo/semphy:/usr/local/bioinfo/shapeIT:/usr/local/bioinfo/signalp:/usr/local/bioinfo/SpliceMachine/bin:/usr/local/bioinfo/sratoolkit:/usr/local/bioinfo/ssaha2:/usr/local/bioinfo/sspro4/bin:/usr/local/bioinfo/staden/bin:/usr/local/bioinfo/structure:/usr/local/bioinfo/T-COFFEE/bin:/usr/local/bioinfo/TRF:/usr/local/bioinfo/tassel:/usr/local/bioinfo/tgicl:/usr/local/bioinfo/tgicl/bin:/usr/local/bioinfo/tophat:/usr/local/bioinfo/treebest:/usr/local/bioinfo/tRNAscan-SE/bin:/usr/local/bioinfo/unafold/bin:/usr/local/bioinfo/vcftools/bin:/usr/local/bioinfo/velvet:/usr/local/bioinfo/ViennaRNA/bin:/usr/local/bioinfo/wgs/bin:/usr/local/bioinfo/wublast:/usr/local/bioinfo/xslt/bin:/usr/local/bioinfo/tmhmm/bin:/usr/local/bioinfo/trinity:/usr/local/bioinfo/bpp/bin:/SATA/bioinfo/galaxy/galaxy_dist/tools/idfixe20120705/bin:/SATA/bioinfo/galaxy/galaxy_dist/tools/idfixe/bin:.:/opt/IBM_DS/jre/bin\n+UniqPrimerFinder::__init__() - Initializing UniqPrimerFinder - complete\n+UniqPrimerFinder::findPrimers() - Finding primers for include files\n+ExcludeFileManager::addExcludeFile( ) - adding exclude file data/XCCgenome.fasta\n+ExcludeFileManager::exportSequences( ) - parsing exclude sequences\n+fastaparser::parseFastaFile( ) - parsing fasta file data/XCCgenome.fasta\n+ExcludeFileManager::exportSequences( ) - finished parsing, writing to a common file\n+ExcludeFileManager::buildOutputFileName( ) - exclude file: tmpJuP2tr/combined_exlude.ffn\n+ExcludeFileManager::exportSequences( ) - All sequences exported\n+IncludeFileManager::setExcludeFile( ) - fileName tmpJuP2tr/combined_exlude.ffn\n+IncludeFileManager::processIncludeFile( ) - processing data/X11-5Agenome.fasta\n+IncludeFileManager::processIncludeFile( ) - running nucmer for reference file: data/X11-5Agenome.fasta\n+IncludeFileManager::findUniqueSequence( ) - running nucmer for reference file: data/X11-5Agenome.fasta\n+ProgramBase::Execute( ) - Running the nucmer program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/MUMmer/nucmer -p nucmer_alignments -o --minmatch 300 --maxgap 1 data/X11-5Agenome.fasta tmpJuP2tr/combined_exlude.ffn\n+NucmerParser::parseCoordMatchFile( ) - Parse nucmer_alignments.coords, finding 2 matches\n+fastaparser::parseFastaFileAsPrimerSequence( ) - parsing fasta file data/X11-5Agenome.fasta\n+fastaparser::parseFastaFileAsPrimerSequence( ) - read 1 sequences\n+PrimerSequence::getNonMatchedSubSequences( ) - finding valid sub sequences for X11-5A\n+PrimerSequence::findValidIndices( ) - getting unmatched sequence indices\n+PrimerSequence::findValidIndices( ) - there are 2 excluded sequences for X11-5A\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 1958030 - 1963613\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 1958145 - 1963613\n+PrimerSequence::findValidIndices( ) - 4341162 unique indices\n+PrimerSequence::findValidIndexSequences( ) - getting sequences from unique indices\n+PrimerSequence::findValidIndexSequences( ) - 2 sequences found\n+PrimerManager::getCommonPrimers - finding primers that are common to all include files\n+PrimerManager::findPrimer(s ) - writing sequences to a fasta file\n+PrimerManager::writeFastaFile( ) - Writing 2 sequences to fasta file\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/logfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/logfile Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,49 @@\n+utils::Initialize( ) - Initialization complete. Temporary directory: tmpFDxzqF\n+uniqprimer::Main( ) - Logging include files: \n+uniqprimer::Main( ) - data/X11-5Agenome.fasta\n+uniqprimer::Main( ) - Logging exclude files: \n+uniqprimer::Main( ) - data/XCCgenome.fasta\n+UniqPrimerFinder::__init__() - Initializing UniqPrimerFinder\n+utils::search_file - Path: /SATA/bioinfo/galaxy/galaxy_env/bin:/usr/local/bioinfo/galaxy/galaxy-python:/SGE/n1ge62/bin/lx24-amd64:/tmp/8261175.1.bioinfo.q:/SATA/bioinfo/galaxy/galaxy_env/bin:/usr/local/bioinfo/galaxy/galaxy-python:/SGE/n1ge62/bin/lx24-amd64:/usr/lib64/qt-3.3/bin::/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bioinfo/bin:/usr/local/bioinfo/abyss/bin:/usr/local/bioinfo/al2co:/usr/local/bioinfo/amos/bin:/usr/local/bioinfo/bambus/bin:/usr/local/bioinfo/bedtools/bin:/usr/local/bioinfo/bimbam:/usr/local/bioinfo/blast/bin:/usr/local/bioinfo/blast+/bin:/usr/local/bioinfo/bowtie:/usr/local/bioinfo/bowtie2:/usr/local/bioinfo/bwa:/usr/local/bioinfo/caftools/bin:/usr/local/bioinfo/CAP3:/usr/local/bioinfo/carthagene:/usr/local/bioinfo/cdhit:/usr/local/bioinfo/censor/bin:/usr/local/bioinfo/clustalw:/usr/local/bioinfo/consed/bin:/usr/local/bioinfo/cross_match:/usr/local/bioinfo/cufflinks:/usr/local/bioinfo/decoder:/usr/local/bioinfo/dssp:/usr/local/bioinfo/EIG3.0/bin:/usr/local/bioinfo/EMBOSS/bin:/usr/local/bioinfo/ESTScan:/usr/local/bioinfo/eval:/usr/local/bioinfo/eugene-3.2/bin:/usr/local/bioinfo/eugene-3.5g/bin:/usr/local/bioinfo/exonerate/bin:/usr/local/bioinfo/FastME:/usr/local/bioinfo/fastx_toolkit:/usr/local/bioinfo/flexbar:/usr/local/bioinfo/FINDMite:/usr/local/bioinfo/fpc:/usr/local/bioinfo/fpocket2:/usr/local/bioinfo/freebayes:/usr/local/bioinfo/GERP:/usr/local/bioinfo/gevalt:/usr/local/bioinfo/gnuplot/bin:/usr/local/bioinfo/GTH/bin:/usr/local/bioinfo/hmmer/bin:/usr/local/bioinfo/hcluster_sg:/usr/local/bioinfo/ImageMagick/bin:/usr/local/bioinfo/i-adhore:/usr/local/bioinfo/JimKent:/usr/local/bioinfo/LTR_BMC:/usr/local/bioinfo/LTR_FINDER:/usr/local/bioinfo/LTRharvest/bin:/usr/local/bioinfo/mafft/bin:/usr/local/bioinfo/mapmaker:/usr/local/bioinfo/MapSplice/bin:/usr/local/bioinfo/maxcluster:/usr/local/bioinfo/mcl/bin:/usr/local/bioinfo/MCQTL/bin/Linux:/usr/local/bioinfo/meme/bin:/usr/local/bioinfo/mfold_util/bin:/usr/local/bioinfo/mira/bin:/usr/local/bioinfo/mistral:/usr/local/bioinfo/modeller9v7/bin:/usr/local/bioinfo/mreps:/usr/local/bioinfo/MUMmer:/usr/local/bioinfo/MUSTANG:/usr/local/bioinfo/MultiProtInstall:/usr/local/bioinfo/multalin:/usr/local/bioinfo/muscle:/usr/local/bioinfo/paircoil2:/usr/local/bioinfo/PHYML:/usr/local/bioinfo/pals:/usr/local/bioinfo/paml/bin:/usr/local/bioinfo/phase:/usr/local/bioinfo/phred:/usr/local/bioinfo/piler:/usr/local/bioinfo/plink:/usr/local/bioinfo/polyscan:/usr/local/bioinfo/oases:/usr/local/bioinfo/prank:/usr/local/bioinfo/primer3:/usr/local/bioinfo/psipred30:/usr/local/bioinfo/Prokov/bin:/usr/local/bioinfo/qmean/bin:/usr/local/bioinfo/quicktree:/usr/local/bioinfo/R/bin:/usr/local/bioinfo/RepeatMasker:/usr/local/bioinfo/recon/bin:/usr/local/bioinfo/RepSeek/bin:/usr/local/bioinfo/REPET/bin:/usr/local/bioinfo/rnammer:/usr/local/bioinfo/scip/bin:/usr/local/bioinfo/semphy:/usr/local/bioinfo/shapeIT:/usr/local/bioinfo/signalp:/usr/local/bioinfo/SpliceMachine/bin:/usr/local/bioinfo/sratoolkit:/usr/local/bioinfo/ssaha2:/usr/local/bioinfo/sspro4/bin:/usr/local/bioinfo/staden/bin:/usr/local/bioinfo/structure:/usr/local/bioinfo/T-COFFEE/bin:/usr/local/bioinfo/TRF:/usr/local/bioinfo/tassel:/usr/local/bioinfo/tgicl:/usr/local/bioinfo/tgicl/bin:/usr/local/bioinfo/tophat:/usr/local/bioinfo/treebest:/usr/local/bioinfo/tRNAscan-SE/bin:/usr/local/bioinfo/unafold/bin:/usr/local/bioinfo/vcftools/bin:/usr/local/bioinfo/velvet:/usr/local/bioinfo/ViennaRNA/bin:/usr/local/bioinfo/wgs/bin:/usr/local/bioinfo/wublast:/usr/local/bioinfo/xslt/bin:/usr/local/bioinfo/tmhmm/bin:/usr/local/bioinfo/trinity:/usr/local/bioinfo/bpp/bin:/SATA/bioinfo/galaxy/galaxy_'..b'oinfo/signalp:/usr/local/bioinfo/SpliceMachine/bin:/usr/local/bioinfo/sratoolkit:/usr/local/bioinfo/ssaha2:/usr/local/bioinfo/sspro4/bin:/usr/local/bioinfo/staden/bin:/usr/local/bioinfo/structure:/usr/local/bioinfo/T-COFFEE/bin:/usr/local/bioinfo/TRF:/usr/local/bioinfo/tassel:/usr/local/bioinfo/tgicl:/usr/local/bioinfo/tgicl/bin:/usr/local/bioinfo/tophat:/usr/local/bioinfo/treebest:/usr/local/bioinfo/tRNAscan-SE/bin:/usr/local/bioinfo/unafold/bin:/usr/local/bioinfo/vcftools/bin:/usr/local/bioinfo/velvet:/usr/local/bioinfo/ViennaRNA/bin:/usr/local/bioinfo/wgs/bin:/usr/local/bioinfo/wublast:/usr/local/bioinfo/xslt/bin:/usr/local/bioinfo/tmhmm/bin:/usr/local/bioinfo/trinity:/usr/local/bioinfo/bpp/bin:/SATA/bioinfo/galaxy/galaxy_dist/tools/idfixe20120705/bin:/SATA/bioinfo/galaxy/galaxy_dist/tools/idfixe/bin:.:/opt/IBM_DS/jre/bin\n+UniqPrimerFinder::__init__() - Initializing UniqPrimerFinder - complete\n+UniqPrimerFinder::findPrimers() - Finding primers for include files\n+ExcludeFileManager::addExcludeFile( ) - adding exclude file data/XCCgenome.fasta\n+ExcludeFileManager::exportSequences( ) - parsing exclude sequences\n+fastaparser::parseFastaFile( ) - parsing fasta file data/XCCgenome.fasta\n+ExcludeFileManager::exportSequences( ) - finished parsing, writing to a common file\n+ExcludeFileManager::buildOutputFileName( ) - exclude file: tmpFDxzqF/combined_exlude.ffn\n+ExcludeFileManager::exportSequences( ) - All sequences exported\n+IncludeFileManager::setExcludeFile( ) - fileName tmpFDxzqF/combined_exlude.ffn\n+IncludeFileManager::processIncludeFile( ) - processing data/X11-5Agenome.fasta\n+IncludeFileManager::processIncludeFile( ) - running nucmer for reference file: data/X11-5Agenome.fasta\n+IncludeFileManager::findUniqueSequence( ) - running nucmer for reference file: data/X11-5Agenome.fasta\n+ProgramBase::Execute( ) - Running the nucmer program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/MUMmer/nucmer -p nucmer_alignments -o --minmatch 300 --maxgap 1 data/X11-5Agenome.fasta tmpFDxzqF/combined_exlude.ffn\n+NucmerParser::parseCoordMatchFile( ) - Parse nucmer_alignments.coords, finding 2 matches\n+fastaparser::parseFastaFileAsPrimerSequence( ) - parsing fasta file data/X11-5Agenome.fasta\n+fastaparser::parseFastaFileAsPrimerSequence( ) - read 1 sequences\n+PrimerSequence::getNonMatchedSubSequences( ) - finding valid sub sequences for X11-5A\n+PrimerSequence::findValidIndices( ) - getting unmatched sequence indices\n+PrimerSequence::findValidIndices( ) - there are 2 excluded sequences for X11-5A\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 1958030 - 1963613\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 1958145 - 1963613\n+PrimerSequence::findValidIndices( ) - 4341162 unique indices\n+PrimerSequence::findValidIndexSequences( ) - getting sequences from unique indices\n+PrimerSequence::findValidIndexSequences( ) - 2 sequences found\n+PrimerManager::getCommonPrimers - finding primers that are common to all include files\n+PrimerManager::findPrimer(s ) - writing sequences to a fasta file\n+PrimerManager::writeFastaFile( ) - Writing 2 sequences to fasta file\n+PrimerManager::writeFastaFile( ) - writing fasta file complete\n+PrimerManager::findPrimers( ) - executing eprimer3 program\n+ProgramBase::Execute( ) - Running the EPrimer3 program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/EMBOSS/bin/eprimer3 tmpFDxzqF/sequenceForEprimer.fasta tmpFDxzqF/referenceprimers.ep3 -numreturn 2 -prange 300-400 -osize 20 -minsize 18 -maxsize 27\n+PrimerManager::findPrimer( ) - eprimer3 file tmpFDxzqF/referenceprimers.ep3 created. Parsing for primers.\n+eprimerparser::parsePrimerSequences( ) - parsing for primer sequences\n+eprimerparser::parsePrimerSequences( ) - finished parsing. found 4 primers\n+PrimerManager::findPrimers( ) - parsing for sequences complete\n+UniqPrimerFinder::findPrimers( ) - found 4 unique sequences\n+UniqPrimerFinder::writeOutputFile() - output file written.\n+UniqPrimerFinder::findPrimers() - Finished finding primers\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/logfile.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/logfile.txt Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,1971 @@\n+utils::Initialize( ) - Initialization complete. Temporary directory: tmpz0OJOq\n+uniqprimer::Main( ) - Logging include files: \n+uniqprimer::Main( ) - data/PX099A.fa data/Xoc_BLS256.fasta\n+uniqprimer::Main( ) - Logging exclude files: \n+uniqprimer::Main( ) - data/Xoo_KACC_10331.fasta data/Xoc_BLS256.fasta\n+UniqPrimerFinder::__init__() - Initializing UniqPrimerFinder\n+utils::search_file - Path: /usr/local/bioinfo/primer3/1.1.1:/usr/local/bioinfo/EMBOSS/6.6.0/bin:/usr/local/bioinfo/primer3/2.2.3:/usr/local/bioinfo/MUMmer/3.23/aux_bin:/usr/local/bioinfo/MUMmer/3.23:/usr/local/bioinfo/python/2.7.9_build2/bin:/homedir/galaxy/galaxy_env/bin:/usr/local/bioinfo/R/3.1.3/bin:/usr/local/bioinfo/geos/3.4.2/bin:/usr/local/bioinfo/gdal/1.9.2/bin:/usr/local/java/jre8/bin:/usr/local/bioinfo/samtools/1.2/bin:/opt/cluster/compilers/gcc/gcc-4.9.2/bin:/SGE/8.1.8/bin:/SGE/8.1.8/bin/lx-amd64:/usr/lib64/qt-3.3/bin:/usr/lpp/mmfs/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/galaxy/bin\n+utils::search_file - Path: /usr/local/bioinfo/primer3/1.1.1:/usr/local/bioinfo/EMBOSS/6.6.0/bin:/usr/local/bioinfo/primer3/2.2.3:/usr/local/bioinfo/MUMmer/3.23/aux_bin:/usr/local/bioinfo/MUMmer/3.23:/usr/local/bioinfo/python/2.7.9_build2/bin:/homedir/galaxy/galaxy_env/bin:/usr/local/bioinfo/R/3.1.3/bin:/usr/local/bioinfo/geos/3.4.2/bin:/usr/local/bioinfo/gdal/1.9.2/bin:/usr/local/java/jre8/bin:/usr/local/bioinfo/samtools/1.2/bin:/opt/cluster/compilers/gcc/gcc-4.9.2/bin:/SGE/8.1.8/bin:/SGE/8.1.8/bin/lx-amd64:/usr/lib64/qt-3.3/bin:/usr/lpp/mmfs/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/galaxy/bin\n+utils::search_file - Path: /usr/local/bioinfo/primer3/1.1.1:/usr/local/bioinfo/EMBOSS/6.6.0/bin:/usr/local/bioinfo/primer3/2.2.3:/usr/local/bioinfo/MUMmer/3.23/aux_bin:/usr/local/bioinfo/MUMmer/3.23:/usr/local/bioinfo/python/2.7.9_build2/bin:/homedir/galaxy/galaxy_env/bin:/usr/local/bioinfo/R/3.1.3/bin:/usr/local/bioinfo/geos/3.4.2/bin:/usr/local/bioinfo/gdal/1.9.2/bin:/usr/local/java/jre8/bin:/usr/local/bioinfo/samtools/1.2/bin:/opt/cluster/compilers/gcc/gcc-4.9.2/bin:/SGE/8.1.8/bin:/SGE/8.1.8/bin/lx-amd64:/usr/lib64/qt-3.3/bin:/usr/lpp/mmfs/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/galaxy/bin\n+utils::search_file - Path: /usr/local/bioinfo/primer3/1.1.1:/usr/local/bioinfo/EMBOSS/6.6.0/bin:/usr/local/bioinfo/primer3/2.2.3:/usr/local/bioinfo/MUMmer/3.23/aux_bin:/usr/local/bioinfo/MUMmer/3.23:/usr/local/bioinfo/python/2.7.9_build2/bin:/homedir/galaxy/galaxy_env/bin:/usr/local/bioinfo/R/3.1.3/bin:/usr/local/bioinfo/geos/3.4.2/bin:/usr/local/bioinfo/gdal/1.9.2/bin:/usr/local/java/jre8/bin:/usr/local/bioinfo/samtools/1.2/bin:/opt/cluster/compilers/gcc/gcc-4.9.2/bin:/SGE/8.1.8/bin:/SGE/8.1.8/bin/lx-amd64:/usr/lib64/qt-3.3/bin:/usr/lpp/mmfs/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/galaxy/bin\n+UniqPrimerFinder::__init__() - Initializing UniqPrimerFinder - complete\n+UniqPrimerFinder::findPrimers() - Finding primers for include files\n+ExcludeFileManager::addExcludeFile( ) - adding exclude file data/Xoo_KACC_10331.fasta\n+ExcludeFileManager::addExcludeFile( ) - adding exclude file data/Xoc_BLS256.fasta\n+ExcludeFileManager::exportSequences( ) - parsing exclude sequences\n+fastaparser::parseFastaFile( ) - parsing fasta file data/Xoo_KACC_10331.fasta\n+fastaparser::parseFastaFile( ) - parsing fasta file data/Xoc_BLS256.fasta\n+ExcludeFileManager::exportSequences( ) - finished parsing, writing to a common file\n+ExcludeFileManager::buildOutputFileName( ) - exclude file: tmpz0OJOq/combined_exlude.ffn\n+ExcludeFileManager::exportSequences( ) - All sequences exported\n+IncludeFileManager::setExcludeFile( ) - fileName tmpz0OJOq/combined_exlude.ffn\n+IncludeFileManager::processIncludeFile( ) - processing data/PX099A.fa\n+IncludeFileManager::processIncludeFile( ) - running nucmer for reference file: data/PX099A.fa\n+IncludeFileManager::findUniqueSequence( ) - running nucmer for reference file: data/PX099A.fa\n+ProgramBase::Execute( ) - Ru'..b'- 5214344\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 5212825 - 5214344\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 5217226 - 5240075\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 5218688 - 5222451\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 5222647 - 5226290\n+PrimerSequence::findValidIndices( ) - removing exclude sequence 5227136 - 5240075\n+PrimerSequence::findValidIndices( ) - 591528 unique indices\n+PrimerSequence::findValidIndexSequences( ) - getting sequences from unique indices\n+PrimerSequence::findValidIndexSequences( ) - 84976 sequences found\n+IncludeFileManager::processIncludeFile( ) - processing data/Xoc_BLS256.fasta\n+PrimerManager::writeFastaFile( ) - Writing 326 sequences to fasta file\n+PrimerManager::writeFastaFile( ) - writing fasta file complete\n+IncludeFileManager::findUniqueSequence( ) - running nucmer for reference file: data/Xoc_BLS256.fasta\n+ProgramBase::Execute( ) - Running the nucmer program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/MUMmer/3.23/nucmer -p nucmer_alignments -o --minmatch 300 --maxgap 1 data/Xoc_BLS256.fasta tmpz0OJOq/tempSequences.fasta\n+NucmerParser::parseCoordMatchFile( ) - Parse nucmer_alignments.coords, finding 28 matches\n+fastaparser::parseFastaFileAsPrimerSequence( ) - parsing fasta file data/Xoc_BLS256.fasta\n+fastaparser::parseFastaFileAsPrimerSequence( ) - read 1 sequences\n+PrimerSequence::getMatchedSubSequences( ) - finding valid sub sequences for gi|868566092|ref|NC_017267.2|\n+PrimerManager::getCommonPrimers - finding primers that are common to all include files\n+PrimerManager::findPrimer(s ) - writing sequences to a fasta file\n+PrimerManager::writeFastaFile( ) - Writing 149 sequences to fasta file\n+PrimerManager::writeFastaFile( ) - writing fasta file complete\n+PrimerManager::findPrimers( ) - executing eprimer3 program\n+ProgramBase::Execute( ) - Running the EPrimer3 program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/EMBOSS/6.6.0/bin/eprimer3 tmpz0OJOq/sequenceForEprimer.fasta tmpz0OJOq/referenceprimers.ep3 -numreturn 2 -prange 200-250 -osize 20 -minsize 18 -maxsize 27\n+PrimerManager::findPrimer( ) - eprimer3 file tmpz0OJOq/referenceprimers.ep3 created. Parsing for primers.\n+eprimerparser::parsePrimerSequences( ) - parsing for primer sequences\n+eprimerparser::parsePrimerSequences( ) - finished parsing. found 272 primers\n+PrimerManager::findPrimers( ) - parsing for sequences complete\n+fastaparser::parseFastaFile( ) - parsing fasta file tmpz0OJOq/combined_exlude.ffn\n+PrimerManager::crossValidatePrimers - finding primers that are not in the supplied exclude file\n+ProgramBase::Execute( ) - Running the PrimerSearch program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/EMBOSS/6.6.0/bin/primersearch -seqall tmpz0OJOq/combined_exlude.ffn -infile tmpz0OJOq/tmpinputprimers.ps -mismatchpercent 0 -outfile tmpz0OJOq/tmpoutputprimers.ps\n+PrimerManager::crossValidatePrimers - 79 unique primers identified out of 272\n+fastaparser::parseFastaFile( ) - parsing fasta file data/PX099A.fa\n+PrimerManager::crossValidatePrimers - finding primers that are in the supplied include file\n+ProgramBase::Execute( ) - Running the PrimerSearch program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/EMBOSS/6.6.0/bin/primersearch -seqall data/PX099A.fa -infile tmpz0OJOq/tmpinputprimers2.ps1 -mismatchpercent 0 -outfile tmpz0OJOq/tmpoutputprimers2.ps1\n+PrimerManager::crossValidatePrimers - 79 unique primers identified out of 79\n+fastaparser::parseFastaFile( ) - parsing fasta file data/Xoc_BLS256.fasta\n+PrimerManager::crossValidatePrimers - finding primers that are in the supplied include file\n+ProgramBase::Execute( ) - Running the PrimerSearch program.\n+ProgramBase::Execute( ) - /usr/local/bioinfo/EMBOSS/6.6.0/bin/primersearch -seqall data/Xoc_BLS256.fasta -infile tmpz0OJOq/tmpinputprimers2.ps2 -mismatchpercent 0 -outfile tmpz0OJOq/tmpoutputprimers2.ps2\n+PrimerManager::crossValidatePrimers - 0 unique primers identified out of 79\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/nucmer_alignments.coords --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/nucmer_alignments.coords Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,33 @@ +/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/data/Xoc_BLS256.fasta /homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpz0OJOq/tempSequences.fasta +NUCMER + + [S1] [E1] | [S2] [E2] | [LEN 1] [LEN 2] | [% IDY] | [TAGS] +===================================================================================== + 67528 69135 | 4241 5848 | 1608 1608 | 98.26 | gi|868566092|ref|NC_017267.2| seq_126 + 72101 73244 | 1 1144 | 1144 1144 | 99.39 | gi|868566092|ref|NC_017267.2| seq_54 + 88411 89039 | 1 629 | 629 629 | 99.68 | gi|868566092|ref|NC_017267.2| seq_55 + 475277 477524 | 9615 7376 | 2248 2240 | 95.33 | gi|868566092|ref|NC_017267.2| seq_126 + 475277 477120 | 1844 1 | 1844 1844 | 95.88 | gi|868566092|ref|NC_017267.2| seq_273 + 476847 477524 | 935 266 | 678 670 | 96.17 | gi|868566092|ref|NC_017267.2| seq_129 + 791641 792784 | 1 1144 | 1144 1144 | 99.65 | gi|868566092|ref|NC_017267.2| seq_54 + 1445967 1447021 | 1057 1 | 1055 1057 | 99.15 | gi|868566092|ref|NC_017267.2| seq_2 + 1688199 1688875 | 266 935 | 677 670 | 96.75 | gi|868566092|ref|NC_017267.2| seq_129 + 2011235 2013180 | 1946 1 | 1946 1946 | 95.84 | gi|868566092|ref|NC_017267.2| seq_273 + 2011335 2013585 | 9617 7376 | 2251 2242 | 95.60 | gi|868566092|ref|NC_017267.2| seq_126 + 2018762 2019833 | 4926 3855 | 1072 1072 | 98.97 | gi|868566092|ref|NC_017267.2| seq_116 + 2018942 2019835 | 1136 243 | 894 894 | 98.99 | gi|868566092|ref|NC_017267.2| seq_96 + 2343460 2347223 | 3789 1 | 3764 3789 | 97.89 | gi|868566092|ref|NC_017267.2| seq_116 + 2348101 2357453 | 9353 1 | 9353 9353 | 97.16 | gi|868566092|ref|NC_017267.2| seq_113 + 2363803 2368395 | 4604 1 | 4593 4604 | 98.07 | gi|868566092|ref|NC_017267.2| seq_107 + 2394983 2395425 | 443 1 | 443 443 | 99.32 | gi|868566092|ref|NC_017267.2| seq_168 + 2508983 2511231 | 7376 9617 | 2249 2242 | 95.38 | gi|868566092|ref|NC_017267.2| seq_126 + 2509386 2511534 | 1 2149 | 2149 2149 | 95.58 | gi|868566092|ref|NC_017267.2| seq_273 + 2913061 2914164 | 41 1144 | 1104 1104 | 99.73 | gi|868566092|ref|NC_017267.2| seq_54 + 2913061 2914164 | 57 1160 | 1104 1104 | 99.64 | gi|868566092|ref|NC_017267.2| seq_87 + 3038349 3038977 | 1 629 | 629 629 | 99.52 | gi|868566092|ref|NC_017267.2| seq_55 + 3899121 3900177 | 1 1057 | 1057 1057 | 99.24 | gi|868566092|ref|NC_017267.2| seq_2 + 3995466 3996094 | 629 1 | 629 629 | 99.36 | gi|868566092|ref|NC_017267.2| seq_55 + 4189285 4190427 | 1143 1 | 1143 1143 | 99.65 | gi|868566092|ref|NC_017267.2| seq_54 + 4269203 4270813 | 5847 4239 | 1611 1609 | 98.01 | gi|868566092|ref|NC_017267.2| seq_126 + 4515876 4517347 | 1472 1 | 1472 1472 | 98.71 | gi|868566092|ref|NC_017267.2| seq_25 + 4516051 4516679 | 629 1 | 629 629 | 99.52 | gi|868566092|ref|NC_017267.2| seq_55 |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/nucmer_alignments.delta --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/nucmer_alignments.delta Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,216 @@ +/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/data/Xoc_BLS256.fasta /homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpz0OJOq/tempSequences.fasta +NUCMER +>gi|868566092|ref|NC_017267.2| seq_2 4831746 1059 +1445967 1447021 1057 1 9 9 0 +-426 +-1 +0 +3899121 3900177 1 1057 8 8 0 +0 +>gi|868566092|ref|NC_017267.2| seq_25 4831746 1646 +4515876 4517347 1472 1 19 19 0 +0 +>gi|868566092|ref|NC_017267.2| seq_54 4831746 1172 +72101 73244 1 1144 7 7 0 +0 +791641 792784 1 1144 4 4 0 +0 +2913061 2914164 41 1144 3 3 0 +0 +4189285 4190427 1143 1 4 4 0 +0 +>gi|868566092|ref|NC_017267.2| seq_55 4831746 629 +88411 89039 1 629 2 2 0 +0 +3038349 3038977 1 629 3 3 0 +0 +3995466 3996094 629 1 4 4 0 +0 +4516051 4516679 629 1 3 3 0 +0 +>gi|868566092|ref|NC_017267.2| seq_87 4831746 1161 +2913061 2914164 57 1160 4 4 0 +0 +>gi|868566092|ref|NC_017267.2| seq_96 4831746 1136 +2018942 2019835 1136 243 9 9 0 +0 +>gi|868566092|ref|NC_017267.2| seq_107 4831746 4923 +2363803 2368395 4604 1 89 89 0 +-39 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1341 +-1 +-1 +-1 +-1 +-1 +-2 +-1 +-1 +2160 +1 +1 +-552 +-1 +-1 +-1 +-1 +-1 +294 +1 +1 +34 +1 +1 +1 +1 +1 +0 +>gi|868566092|ref|NC_017267.2| seq_113 4831746 9353 +2348101 2357453 9353 1 266 266 0 +-1180 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-817 +239 +3344 +1 +1 +1 +1 +1 +1 +1 +3 +1 +1 +1 +2 +1 +11 +1 +1 +1 +1 +1 +-141 +-5 +-1672 +-2 +-1 +-1 +-1 +-1 +0 +>gi|868566092|ref|NC_017267.2| seq_116 4831746 7769 +2018762 2019833 4926 3855 11 11 0 +0 +2343460 2347223 3789 1 80 80 0 +-252 +-1 +-1 +-1 +-74 +-1 +-1 +-1 +-1 +-1 +-6 +-2 +-1 +-1 +-1 +-1 +-1 +-2 +-6 +-1 +-1 +-1 +-1 +-1 +-1 +0 +>gi|868566092|ref|NC_017267.2| seq_126 4831746 9617 +67528 69135 4241 5848 28 28 0 +0 +475277 477524 9615 7376 105 105 0 +2162 +5 +1 +1 +1 +1 +1 +1 +0 +2011335 2013585 9617 7376 99 99 0 +2164 +1 +5 +1 +1 +1 +1 +1 +1 +0 +2508983 2511231 7376 9617 104 104 0 +76 +1 +1 +1 +1 +2 +1 +0 +4269203 4270813 5847 4239 32 32 0 +5 +1596 +0 +>gi|868566092|ref|NC_017267.2| seq_129 4831746 935 +476847 477524 935 266 26 26 0 +592 +5 +1 +1 +1 +1 +1 +1 +0 +1688199 1688875 266 935 22 22 0 +74 +1 +1 +1 +1 +1 +1 +0 +>gi|868566092|ref|NC_017267.2| seq_168 4831746 443 +2394983 2395425 443 1 3 3 0 +0 +>gi|868566092|ref|NC_017267.2| seq_273 4831746 2149 +475277 477120 1844 1 76 76 0 +0 +2011235 2013180 1946 1 81 81 0 +0 +2509386 2511534 1 2149 95 95 0 +0 |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/outalex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/outalex Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,4 @@ +1 TGCGTTGGAAGAAGTCACAG GGGAAGAGTACGAGCGTCTG 300 +2 GACACCTTACGGGCATCTGT GGCCAAATACAGCACCTTGT 301 +3 TCGGGCACTCCTTCAATATC CCGTACGTCAACTTCCTGGT 300 +4 TCAGCATGATACGCCATGAT ACGCCCTTACAATGCAAAAC 300 |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/outfile.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/outfile.txt Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,4 @@ +1 TTCGATGCGCACTACAAAAG GTCTCGCAGGTGAGTCCTTC 200 +2 AGAACTCCTGCCAACTCGAA TGCAGTGTCGATCTTCAAGG 200 +3 CCAACAGTTCATTGGTGTCG GACCATGGATTTGGTCATCC 200 +4 TGAAGCTCAACACGCCATAG GTTTCTGCTGGGCTTTCTTG 200 |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/output --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/output Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,4 @@ +1 TTCGATGCGCACTACAAAAG GTCTCGCAGGTGAGTCCTTC 200 +2 AGAACTCCTGCCAACTCGAA TGCAGTGTCGATCTTCAAGG 200 +3 CCAACAGTTCATTGGTGTCG GACCATGGATTTGGTCATCC 200 +4 TGAAGCTCAACACGCCATAG GTTTCTGCTGGGCTTTCTTG 200 |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primers.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primers.txt Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,8 @@ +1 GAAGTCGCTCAGGTCAGGTC GAAGGTGGCATGGCTGTAAT 200 +2 CAATGAAGTCGCTCAGGTCA GAAGGTGGCATGGCTGTAAT 204 +3 ACCTGCAACAGCCTTGATTT GAGTGGTGAAAGTCCTGCATC 201 +4 CGTGACATTCAGTCGTCGTT ACCGGCATCAACATCAGATA 206 +5 TGACGCGTTTAAGTCTGTGC GATCGAGTGCAATCTCGTTG 206 +6 TGACGCGTTTAAGTCTGTGC CGATCGAGTGCAATCTCGT 207 +7 ACGACAAGCATGAGGGCTAC TTGGTATTGATGCCCTTGCT 202 +8 ACGACAAGCATGAGGGCTAC CTTGGTATTGATGCCCTTGC 203 |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/__init__.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,10 @@ +__all__ = [ 'eprimerparser', + 'excludefilemanager', + 'fastaparser', + 'includefilemanager', + 'nucmerparser', + 'primermanager', + 'primersearchutils', + 'primersequence', + 'programs', + 'utils' ] |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/__init__.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/__init__.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/eprimerparser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/eprimerparser.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,75 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import os +import utils +import re + +def parsePrimerSequences( eprimerFile ): + ''' + parse an eprimer3 output file for all primers + ''' + + utils.logMessage( "eprimerparser::parsePrimerSequences( )", "parsing for primer sequences" ) + if os.path.exists( eprimerFile ) == False: + utils.logMessage( "eprimerparser::parsePrimerSequences( )", "ERROR - eprimer file was not found" ) + raise utils.NoFileFoundException( eprimerFile ) + + + primers = [ ] + primerFile = open( eprimerFile ) + + currentPrimer = None + + nextPrimerId = 0 + for line in primerFile.readlines( ): + + if line[ 0 ] == '# ': + continue + + if line.find( "PRODUCT SIZE" ) != -1: + if currentPrimer is not None: + primers.append( currentPrimer ) + currentPrimer = utils.PrimerSet( str( nextPrimerId ) ) + nextPrimerId += 1 + productSize = int( line.split( ':' )[ 1 ].strip( ) ) + currentPrimer.setProductSize( productSize ) + else: + tokens = re.split( ' *', line.strip( ) ) + if len( tokens ) == 7: + + sequence = tokens[ 6 ] + temp = tokens[ 4 ] + + if tokens[ 0 ] == "FORWARD": + currentPrimer.setForwardPrimerData( sequence, temp ) + elif tokens[ 0 ] == "REVERSE": + currentPrimer.setReversePrimerData( sequence, temp ) + + if currentPrimer is not None: + primers.append( currentPrimer ) + + utils.logMessage( "eprimerparser::parsePrimerSequences( )", "finished parsing. found {0} primers".format( len( primers ) ) ) + return primers + + + + + + + + + + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/eprimerparser.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/eprimerparser.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/excludefilemanager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/excludefilemanager.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,75 @@ +''' +Created on Jan 16, 2011 + +@author: jlh +''' +import utils +import fastaparser +from Bio import SeqIO +import os + +class ExcludeFileManager( object ): + ''' + A class to manage fasta files to be excluded + ''' + + def __init__( self ): + """ + Initialize the ExcludeFileManager + """ + self.excludeFiles = [ ] + self.outputFile = "" + + def getOutputFileName( self ): + """ + get the name of the file combined-sequence fasta file + """ + return self.outputFile + + def addExcludeFile( self, excludeFile ): + """ + add a file to be managed by the ExcludeFileManager + """ + + if os.path.exists( excludeFile ) == False: + utils.logMessage( "ExcludeFileManager::addExcludeFile( )", "exclude file not found: {0}".format( excludeFile ) ) + raise utils.NoFileFoundException( excludeFile ) + + utils.logMessage( "ExcludeFileManager::addExcludeFile( )", "adding exclude file {0}".format( excludeFile ) ) + self.excludeFiles.append( excludeFile ) + + def buildOutputFileName( self ): + """ + build a unique file name to store the combined output sequences to + """ + self.outputFile = utils.getTemporaryDirectory( ) + "/combined_exlude.ffn" + utils.logMessage( "ExcludeFileManager::buildOutputFileName( )", " exclude file: {0}".format( self.outputFile ) ) + + def exportSequences( self ): + """ + combine all exclude files into a single exclude file + """ + + utils.logMessage( "ExcludeFileManager::exportSequences( )", "parsing exclude sequences") + + #read all exclude file sequences into memory + sequences = [ ] + for excludeFile in self.excludeFiles: + sequences.extend( fastaparser.parseFastaFile( excludeFile ) ) + + utils.logMessage( "ExcludeFileManager::exportSequences( )", "finished parsing, writing to a common file" ) + + self.buildOutputFileName( ) + #combine the sequences and write them to a file + + SeqIO.write( sequences, open( self.outputFile, "w" ), "fasta" ) + + utils.logMessage( "ExcludeFileManager::exportSequences( )", "All sequences exported" ) + + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/excludefilemanager.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/excludefilemanager.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/fastaparser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/fastaparser.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,63 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import utils +import primersequence + +from Bio import SeqIO +from Bio import Seq +from Bio import Alphabet + +def parseFastaFileAsPrimerSequence( fileName ): + + utils.logMessage("fastaparser::parseFastaFileAsPrimerSequence( )", "parsing fasta file {0}".format( fileName ) ) + returnValue = { } + + sequences = SeqIO.parse( open( fileName ), "fasta" ) + + for sequence in sequences: + seqdata = primersequence.PrimerSequence( sequence.id, len( sequence ), sequence.seq ) + returnValue[ sequence.id ] = seqdata + + utils.logMessage("fastaparser::parseFastaFileAsPrimerSequence( )", "read {0} sequences".format( len( returnValue.keys( ) ) ) ) + + return returnValue + +def parseFastaFile( fileName ): + ''' + parse a fasta file and return a list of Bio.Seq + ''' + utils.logMessage("fastaparser::parseFastaFile( )", "parsing fasta file {0}".format( fileName ) ) + + sequences = SeqIO.parse( open( fileName ), "fasta" ) + + return sequences + +def writeFastaFile( sequences, fileName ): + ''' + write a set of sequences to a fasta file. + returns the name of the new file + ''' + + primerSequenceIdent = "primer_sequences" + utils.logMessage( "PrimerManager::writeFastaFile( )", "Writing {0} sequences to fasta file".format( len( sequences ) ) ) + seqRecords = [ ] + i = 0 + for sequence in sequences: + seqStr = str( reduce( lambda x, y: str( x )+str( y ), sequence) ) + seqRecord = SeqIO.SeqRecord( Seq.Seq( seqStr, Alphabet.IUPAC.extended_dna ), id="seq_{0}".format( i ) ) + seqRecords.append( seqRecord ) + i += 1 + + SeqIO.write( seqRecords, open( fileName, "w" ), "fasta" ) + + utils.logMessage( "PrimerManager::writeFastaFile( )", "writing fasta file complete" ) + return fileName + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/fastaparser.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/fastaparser.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/includefilemanager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/includefilemanager.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,132 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import fastaparser +import utils +import os +import programs +import nucmerparser +import copy + +class IncludeFileManager( object ): + """ + A class to manage include files + """ + #This class needs some work. Need to come up with a way to find unique sequences between all include files.... + + def __init__( self ): + """ + Constructor + """ + self.includeFiles = [ ] + self.nucmer = programs.Nucmer( ) + self.isExcludeFileInitialized = False + self.isReferenceFileInitialized = False + self.referenceFile = None + self.referenceSequence = None + self.uniqueSequences = None + + def setExcludeFile( self, excludeFileName ): + """ + A function to set the exclude file that will be used when nucmer is called + """ + + utils.logMessage( "IncludeFileManager::setExcludeFile( )", "fileName {0}".format( excludeFileName ) ) + self.excludeFileName = excludeFileName + self.isExcludeFileInitialized = True + + + def findUniqueSequencesInFile(self, doWantFile, doNotWantFile ): + utils.logMessage( "IncludeFileManager::findUniqueSequence( )", "running nucmer for reference file: {0}".format( doWantFile ) ) + coordFile = self.nucmer.execute( [ doWantFile, doNotWantFile ] ) + + matches = nucmerparser.parseCoordMatchFile( coordFile ) + sequences = fastaparser.parseFastaFileAsPrimerSequence( doWantFile ) + + for match in matches: + if sequences.has_key( match.seqID ): + primerData = sequences[ match.seqID ] + primerData.addMatch( match ) + else: + print "Warning: id from .coords file not found in sequence data..." + utils.logMessage( "IncludeFileManager::processMatches( )", "WARNING - an ID was read in a Match that does not correspond to a sequence read from the fasta file!" ) + + returnValue = [ ] + + for key in sequences.keys( ): + sequence = sequences[ key ] + subSequences = sequence.getNonMatchedSubSequences( ) + returnValue.extend( subSequences ) + + return returnValue + + + def findCommonSequencesInFile(self, want, alsoWant ): + utils.logMessage( "IncludeFileManager::findUniqueSequence( )", "running nucmer for reference file: {0}".format( want ) ) + + print want, alsoWant + coordFile = self.nucmer.execute( [ want, alsoWant ] ) + + matches = nucmerparser.parseCoordMatchFile( coordFile ) + sequences = fastaparser.parseFastaFileAsPrimerSequence( want ) + + for match in matches: + if sequences.has_key( match.seqID ): + primerData = sequences[ match.seqID ] + primerData.addMatch( match ) + + returnValue = [ ] + for key in sequences: + sequence = sequences[ key ] + subSequences = sequence.getMatchedSubSequences( ) + returnValue.extend( subSequences ) + + + return returnValue + + + def processIncludeFile( self, includeFileName ): + """ + A function that adds and processes and include file. + An exclude file must be set for this function to be called. + """ + + utils.logMessage( "IncludeFileManager::processIncludeFile( )", "processing {0}".format( includeFileName ) ) + + if self.isExcludeFileInitialized == False: + utils.logMessage( "IncludeFileManager::processIncludeFile( )", "no exclude file set".format( includeFileName ) ) + raise utils.ModuleNotInitializedException( "includefilemanager", "no exclude file set" ) + + if self.isReferenceFileInitialized == False: + + utils.logMessage( "IncludeFileManager::processIncludeFile( )", "running nucmer for reference file: {0}".format( includeFileName ) ) + self.uniqueSequences = self.findUniqueSequencesInFile( includeFileName, self.excludeFileName ) + + self.referenceFile = includeFileName + self.isReferenceFileInitialized = True + + else: + #write the unique sequences to a temp file + tempSequences = utils.getTemporaryDirectory( ) + "/tempSequences.fasta" + fastaparser.writeFastaFile( self.uniqueSequences, tempSequences ) + self.findCommonSequencesInFile( includeFileName, tempSequences ) + self.includeFiles.append( includeFileName ) + + + def getUniqueSequences( self ): + """ + getUniqueSequences - return a dictionary of all sequences that are found in include fasta files, but not the + combined exclude fasta files. The dictionary is indexed by the file ID + """ + + return self.uniqueSequences + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/includefilemanager.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/includefilemanager.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/nucmerparser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/nucmerparser.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,68 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils +import os +import re + +def parseCoordMatchLine( match ): + + match = match.replace( '\t', ' ' ) + sections = match.split( '|', 4 ) + + #parse the first section, containing the start and end + #locations of the match + firstsection = sections[ 0 ].strip( ) + firstsectiontokens = re.split( ' +', firstsection ) + start = int( firstsectiontokens[ 0 ].strip( ) ) + end = int( firstsectiontokens[ 1 ].strip( ) ) + + #parse the last section, containing the sequenceID + lastsection = sections[ -1 ].strip( ) + lastsectiontokens = re.split( " +", lastsection ) + + seqid = lastsectiontokens[ 0 ].strip( ) + + return utils.Match( start, end, seqid ) + +def parseCoordMatchFile( coordFileName ): + ''' + A method to parse the coord file. + returns a list of utils.match objects + ''' + returnValue = [ ] + + #throw if the file doesn't exist + if os.path.exists( coordFileName ) == False: + raise utils.NoFileFoundException( coordFileName ) + + + #read the nucmer file into memory + lines = open( coordFileName ).readlines( ) + + #skip forward to the start of the matches. + i = 0 + while lines[ i ] [ 0] != '=': + i += 1 + matchLines = lines[ i+1 : ] + + #parse each line for match start, end and sequenceID + for matchLine in matchLines: + returnValue.append( parseCoordMatchLine( matchLine ) ) + + utils.logMessage( "NucmerParser::parseCoordMatchFile( )", "Parse {0}, finding {1} matches".format( coordFileName, len( returnValue ) ) ) + + return returnValue + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/nucmerparser.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/nucmerparser.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/primermanager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/primermanager.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,137 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils +import tempfile +import programs +import eprimerparser +import primersearchutils +import fastaparser +import exceptions + + + + +class PrimerManager( object ): + ''' + A class used to find primers given a set of sequences. + ''' + + def __init__( self, eprimerOptions ): + self.eprimer = programs.Eprimer( eprimerOptions ) + self.primersearch = programs.PrimerSearch( ) + + + def findPrimers( self, sequences, outputFile, primerpairs = 20, returnPrimers = False ): + ''' + A method to find a set of primers based on the given sequences + ''' + + utils.logMessage( "PrimerManager::findPrimer(s )", "writing sequences to a fasta file" ) + + #eleminate all sequences that are lees than the desired amplification size... + + if len( sequences ) == 4 : + print sequences + sequences = filter( lambda x: len( x ) >= 200, sequences ) + + primerFastaFile = utils.getTemporaryDirectory( ) + "/sequenceForEprimer.fasta" + fastaparser.writeFastaFile( sequences, primerFastaFile ) + + utils.logMessage( "PrimerManager::findPrimers( )", "executing eprimer3 program" ) + self.eprimer.execute( [ primerFastaFile, outputFile ] ) + utils.logMessage( "PrimerManager::findPrimer( )", "eprimer3 file {0} created. Parsing for primers.".format( outputFile ) ) + + primers = eprimerparser.parsePrimerSequences( outputFile ) + + utils.logMessage( "PrimerManager::findPrimers( )", "parsing for sequences complete" ) + + if returnPrimers == True: + return primers + + + def getPrimers( self, sequences ): + + utils.logMessage( "PrimerManager::getCommonPrimers", "finding primers that are common to all include files" ) + + if len( sequences ) == 0: + raise utils.NoPrimersExistException( ) + + referenceEPrimerFile = utils.getTemporaryDirectory( ) + "/referenceprimers.ep3" + + #run eprimer to find primers in the reference file + primers = self.findPrimers( sequences, referenceEPrimerFile, 20, True ) + + + if len( primers ) == 0: + raise utils.NoPrimersExistException( ) + + return primers + + def crossValidatePrimers2( self, primers, includeFile, j ): + includeSequences = fastaparser.parseFastaFile( includeFile ) + #write a primer search input file with using the primers argument + primerInputFileName = utils.getTemporaryDirectory( ) + "/tmpinputprimers2.ps" + str(j) + primerOutputFileName = utils.getTemporaryDirectory( ) + "/tmpoutputprimers2.ps" + str(j) + primersearchutils.writePrimerSearchInputFile( primers, primerInputFileName ) + + utils.logMessage( "PrimerManager::crossValidatePrimers", "finding primers that are in the supplied include file" ) + #run primer search to identify the primers + self.primersearch.execute( [ includeFile, primerInputFileName, primerOutputFileName, "0" ] ) + + #read the found primers from the file + commonPrimers = primersearchutils.parsePrimerSearchFile( primerOutputFileName ) + + #compose a list of primers that are not found in the exclude file... + returnValue = [ ] + + for primer in primers: + if primer.id in commonPrimers: + returnValue.append( primer ) + + utils.logMessage( "PrimerManager::crossValidatePrimers", "{0} unique primers identified out of {1}".format( len( returnValue ), len( primers ) ) ) + + if len( returnValue ) == 0: + raise utils.NoPrimersExistException( ) + + return returnValue + + + def crossValidatePrimers( self, primers, excludeFile ): + + excludeSequences = fastaparser.parseFastaFile( excludeFile ) + + #write a primer search input file with using the primers argument + primerInputFileName = utils.getTemporaryDirectory( ) + "/tmpinputprimers.ps" + primerOutputFileName = utils.getTemporaryDirectory( ) + "/tmpoutputprimers.ps" + primersearchutils.writePrimerSearchInputFile( primers, primerInputFileName ) + + utils.logMessage( "PrimerManager::crossValidatePrimers", "finding primers that are not in the supplied exclude file" ) + #run primer search to identify the primers + self.primersearch.execute( [ excludeFile, primerInputFileName, primerOutputFileName, "10" ] ) + + #read the found primers from the file + commonPrimers = primersearchutils.parsePrimerSearchFile( primerOutputFileName ) + + #compose a list of primers that are not found in the exclude file... + returnValue = [ ] + + for primer in primers: + if primer.id not in commonPrimers: + returnValue.append( primer ) + + utils.logMessage( "PrimerManager::crossValidatePrimers", "{0} unique primers identified out of {1}".format( len( returnValue ), len( primers ) ) ) + + if len( returnValue ) == 0: + raise utils.NoPrimersExistException( ) + + return returnValue + + + |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/primermanager.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/primermanager.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/primersearchutils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/primersearchutils.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,55 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils + +def writePrimerSearchInputFile( primerSets, outputFile ): + ''' + A function to write primer pairs to a file formatted as primer search input. + primerPairs - a list of utils.PrimerSet objects + outputFile - a string containing the path to the output file + ''' + + file = open( outputFile, 'w' ) + i = 0 + for primerSet in primerSets: + i += 1 + if primerSet.reversePrimer == "": + print "Error - primer {0} has no reverse primer. {1} primers total".format( i, len( primerSets ) ) + continue + file.write( primerSet.id + "\t" + primerSet.forwardPrimer + "\t" + primerSet.reversePrimer + "\n" ) + + file.close( ) + +def parsePrimerSearchFile( primerSearchFileName ): + ''' + return a list of primer ids that are associated with at least one amplimer in the primer search output file. + ''' + found = [ ] + + amplimerFound = False + currentId = -1; + for line in open( primerSearchFileName ).readlines( ): + + if "Primer name" in line: + #the id of the primer is found after the string "Primer name" in the file + currentId = line.split( ' ' )[ 2: ][ 0 ].strip( ) + elif "Amplimer" in line and currentId not in found: + found.append( currentId ) + + if amplimerFound == True: + found.append( currentId ) + + return found + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/primersearchutils.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/primersearchutils.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/primersequence.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/primersequence.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,110 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + +import utils + +class PrimerSequence( object ): + """ + record sequence data, and store matched parts of the sequence + """ + + def __init__( self, seqID, seqLength, sequence ): + #an unmatched sub-sequence that starts at 0 goes until the end of the the sequence, to start out with. + + self.seqID = seqID + self.seqLength = seqLength + self.matchedSubSequences = [ ] + self.sequence = sequence + + def addMatch( self, match ): + """ + Input: a utils.Match object + Removes the matched sequence from the list of valid sequence data + """ + + self.matchedSubSequences.append( ( match.start, match.end ) ) + + def findNonMatchedIndices( self ): + + utils.logMessage("PrimerSequence::findValidIndices( )", "getting unmatched sequence indices" ) + + sequence = set( range( self.seqLength ) ) + + #find the indices that are NOT excluded + utils.logMessage( "PrimerSequence::findValidIndices( )", "there are {0} excluded sequences for {1}".format( len( self.matchedSubSequences ), self.seqID ) ) + for exclude in self.matchedSubSequences: + excludedSequence = set( range( exclude[ 0 ], exclude[ 1 ] ) ) + utils.logMessage("PrimerSequence::findValidIndices( )", "removing exclude sequence {0} - {1}".format( exclude[ 0 ], exclude[ 1 ] ) ) + sequence = sequence - excludedSequence + + utils.logMessage("PrimerSequence::findValidIndices( )", "{0} unique indices".format( len( sequence ) ) ) + + return list( sequence ) + + def findNonMatchedIndexSequences( self, indices ): + + utils.logMessage("PrimerSequence::findValidIndexSequences( )", "getting sequences from unique indices" ) + + sequences = [ ] + curSeq = [ ] + for index in indices: + if len( curSeq ) == 0: + curSeq.append( index ) + elif index == curSeq[ -1 ] + 1: + curSeq.append( index ) + else: + sequences.append( curSeq ) + curSeq = [ ] + sequences.append( curSeq ) + utils.logMessage("PrimerSequence::findValidIndexSequences( )", "{0} sequences found".format( len( sequences ) ) ) + + return sequences + + + def getNonMatchedSubSequences( self, minLength = 100 ): + """ + Get all valid sub sequences after removing matches + """ + + utils.logMessage("PrimerSequence::getNonMatchedSubSequences( )", "finding valid sub sequences for {0}".format( self.seqID ) ) + + indices = self.findNonMatchedIndices( ) + indexSequences = self.findNonMatchedIndexSequences( indices ) + + subSequences = [ ] + + for indexSequence in indexSequences: + subSequence = [ self.sequence[ i ] for i in indexSequence ] + + if len( subSequence ) >= minLength: + subSequences.append( subSequence ) + + return subSequences + + def getMatchedSubSequences( self, minLength = 100 ): + utils.logMessage("PrimerSequence::getMatchedSubSequences( )", "finding valid sub sequences for {0}".format( self.seqID ) ) + + returnValue = [ ] + for match in self.matchedSubSequences: + subSequence = self.sequence[ match[ 0 ]:match[ 1 ] ] + + if len( subSequence ) >= minLength : + returnValue.append( subSequence ) + + return returnValue + + + + + + + + + + \ No newline at end of file |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/primersequence.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/primersequence.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/programs.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/programs.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,141 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import utils +import os +import subprocess + + +class ProgramBase( object ): + + def __init__( self ): + + self.programName = None + self.proc = None + + def getProcessArgs( self, args ): + crash #abstract + + def execute( self, args, async = False ): + ''' + run the nucmer program with a given compare file and an exclude file + ''' + + utils.logMessage( "ProgramBase::Execute( )", "Running the {0} program.".format( self.programName ) ) + + args, outputFile = self.getProcessArgs( args ) + + print "*** Running {0} ***".format( self.programName ) + + utils.logList( "ProgramBase::Execute( )", args ) + + proc = subprocess.Popen( args ) + + if async == False: + #wait for the nucmer instance to finish + proc.wait( ) + print "*** Running {0} Complete ***".format( self.programName ) + + #return the name of the coords file + return outputFile + + def isFinished( self ): + ifIsFinished + +class Nucmer( ProgramBase ): + + def __init__( self ): + #if we can't find the nucemer binary, throw + nucmerPath = utils.search_file( 'nucmer' ) + ProgramBase.__init__( self ) + if nucmerPath is None: + raise utils.ProgramNotFoundException( 'nucmer', "Please ensure that the MUMmer package is installed and configured on your system." ) + + self.nucmer = nucmerPath + + self.programName = "nucmer" + self.outputExtension = ".coords" + + + def getProcessArgs( self, inputArgs ): + + + time = utils.getTimeStamp( ) + + identifier = "nucmer_alignments" + args = [ self.nucmer, '-p', identifier, '-o', '--minmatch', '300', '--maxgap', '1' ] + + args.extend( inputArgs ) + + outputFile = "{0}.coords".format( identifier ) + + return args, outputFile + +class Eprimer( ProgramBase ): + + def __init__( self, eprimerOptions ): + + self.programName = "EPrimer3" + self.options = eprimerOptions + + primer3corePath = utils.search_file( "primer3_core" ) + if primer3corePath is None: + raise utils.ProgramNotFoundException( "primer3_core", "Please ensure that the primer3 package is installed on your system. It can be obtained from http://primer3.sourceforge.net/" ) + + eprimerPath = utils.search_file( "eprimer3" ) + if eprimerPath is None: + raise utils.ProgramNotFoundException( 'eprimer3', "Please ensure that the EMBOSS package is installed and configured on your system." ) + + self.primer3core = primer3corePath + self.eprimer3 = eprimerPath + + def getProcessArgs( self, inputArgs ): + + #todo - allow user to determine output file location/name + + inputFasta = inputArgs[ 0 ] + outputFile = inputArgs[ 1 ] + args = [ self.eprimer3, inputFasta, outputFile, '-numreturn', '2', '-prange', self.options.getProductRange( ), '-osize', str( self.options.getPrimerSize( ) ), + '-minsize', str( self.options.getMinPrimerSize( ) ), '-maxsize', str( self.options.getMaxPrimerSize( ) )] + + return args, outputFile + +class PrimerSearch( ProgramBase ): + def __init__( self ): + + self.programName = "PrimerSearch" + primerSearchPath = utils.search_file( "primersearch" ) + if primerSearchPath is None: + raise utils.ProgramNotFoundException( "primersearch", "Please ensure that the EMBOSS package is installed on your system." ) + + self.primerSearch = primerSearchPath + + def getProcessArgs( self, inputArgs ): + ''' + usage for this program: inputArgs is an array length 4 + inputArgs[0] = sequence file + inputArgs[1] = primer pairs file + inputArgs[2] = output file name + inputArgs[3] = percent mismatch + ''' + + args = [ self.primerSearch ] + args.extend( [ '-seqall', inputArgs[ 0 ] ] ) + args.extend( [ '-infile', inputArgs[ 1 ] ] ) + args.extend( [ '-mismatchpercent', inputArgs[ 3 ] ] ) + args.extend( [ '-outfile', inputArgs[ 2 ] ] ) + + + return args, inputArgs[ 2 ] + + + + + |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/programs.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/programs.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/primertools/utils.py Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,207 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import exceptions +import time +import os.path +from os import pathsep +from string import split +import tempfile +import shutil + +def getTimeStamp( ): + return time.strftime('%d%m%Y-%H%M%S') + + +class Match( object ): + ''' + record where two genomes line up. stores only alignments for one part of the genome + ''' + def __init__( self, start, end, seqID ): + self.seqID = seqID + self.start = start + self.end = end + + def __repr__( self ): + return "Start: {0}, End:{1}, SeqID:{2}".format( self.start, self.end, self.seqID ) + +class PrimerSet( object ): + + def __init__( self, id ): + self.id = id + self.productSize = 0 + self.forwardPrimer = "" + self.forwardMeltTemp = "" + self.reversePrimer = "" + self.reverseMeltTemp = "" + + + def setProductSize( self, productSize): + self.productSize = productSize + + def setForwardPrimerData( self, sequence, temp ): + self.forwardPrimer = sequence + self.forwardMeltTemp = temp + + def setReversePrimerData( self, sequence, temp): + self.reversePrimer = sequence + self.reverseMeltTemp = temp + + +#search function from http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/ +def search_file( filename ): + """ find file + """ + search_path = os.getenv( 'PATH' ) + logMessage( "utils::search_file", "Path: {0}".format( search_path ) ) + file_found = 0 + paths = split( search_path, pathsep ) + for path in paths: + if os.path.exists( os.path.join( path, filename ) ): + file_found = 1 + break + if file_found: + return os.path.abspath( os.path.join( path, filename ) ) + else: + return None + +tempDir = "" +removeTemp = True + +verbose = False + + +def initialize( isVerbose, cleanup, lf): ##Mau: added lf + global removeTemp + global tempDir + global verbose + global logFile ##Mau: added logFile variable + + logFile = lf #:Mau add line + + verbose = isVerbose + tempDir = tempfile.mkdtemp( dir="" ) + initializeLogging() + removeTemp = cleanup + logMessage( "utils::Initialize( )", "Initialization complete. Temporary directory: {0}".format( tempDir ) ) + +logFile = None + + +def printProgressMessage( message ): + global verbose + if verbose == True: + print message + +def getTemporaryDirectory( ): + global tempDir + return tempDir + +def initializeLogging(): + global logFile + #logFileName = "uniqprimer_{0}.log".format( getTimeStamp( ) ) + #logFileName = "log_uniqprimer.txt" ##Mau: commented out + logFileName = logFile ##Mau: changed + logFile = open( logFileName, 'w' ) + +def shutdown( ): + global removeTemp + global tempDir + shutdownLogging( ) + if removeTemp == True: + print "*** Removing temporary directory ***" + shutil.rmtree( tempDir ) + +def shutdownLogging( ): + global logFile + if logFile != None: + logFile.close( ) + +def logList( method, list ): + + message = reduce( lambda x,y: str( x ) + " " + str( y ) , list ) + logMessage(method, message) + + +def logMessage( method, message ): + global logFile + if logFile == None: + return + log = "{0} - {1}".format( method, message ) + + logFile.write( log + "\n" ) + logFile.flush( ) + +class EPrimerOptions( object ): + + def __init__( self ): + + self.minPrimerSize = 18 + self.maxPrimerSize = 27 + self.primerSize = 20 + self.productRange = "200-250" + + def setPrimerSize( self, size ): + + size = int( size ) + if size > 35: + size = 35 + + self.primerSize = size + if self.primerSize < self.minPrimerSize: + self.maxPrimerSize = self.primerSize + elif self.primerSize > self.maxPrimerSize: + self.maxPrimerSize = self.primerSize + + def getPrimerSize( self ): + return self.primerSize + + def setMinPrimerSize( self, minSize): + self.minPrimerSize = minSize + + def getMinPrimerSize( self ): + return self.minPrimerSize + + def setMaxPrimerSize( self, size ): + self.maxPrimerSize = size + + def getMaxPrimerSize( self ): + return self.maxPrimerSize + + def setProductRange( self, range ): + self.productRange = range + + def getProductRange( self ): + return self.productRange + +class NoPrimersExistException( exceptions.BaseException ): + + def __init__( self ): + exceptions.BaseException( self ) + +class ProgramNotFoundException( exceptions.BaseException ): + + def __init__( self, programName, details ): + exceptions.BaseException.__init__(self) + self.programName = programName + self.details = details + +class NoFileFoundException( exceptions.BaseException ): + + def __init__( self, filename ): + exceptions.BaseException.__init__(self) + self.filename = filename + + +class ModuleNotInitializedException( exceptions.BaseException ): + + def __init__( self, moduleName, reason ): + self.moduleName = moduleName + self.reason = reason |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/primertools/utils.pyc |
| b |
| Binary file uniqprimer-0.5.0/primertools/utils.pyc has changed |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/seqForPrimer3.fa --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/seqForPrimer3.fa Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,2630 @@\n+>seq_0 <unknown description>\n+TGATTAGCCCTGACCTTCAGCTGCAGCACCTCCGCGCTTATCGCTAAACCGGCCCAATGC\n+CAGGCCGCCATGGGGCCCTGGCTGAAAGAACTTCGCACCGGCTCCTCGCGTCAGGAGCGC\n+CAAGATCAGACATCATGGAACACATCGGTAAAACGAAGCTATTTGCAGGACTGCAACAAA\n+AATCCAGCTGAGGGTCAGGGCTAATCAGTA\n+>seq_1 <unknown description>\n+AACCTGTTCACAATCTTATTCAAACCGTGCAAACTCCACGAATGCGCGAGAAGAACTATC\n+CAAGTGACGTGAGCCGTGAGCGGTTCGAGCAAATCCGCCCGATTCTGGAGCAAGCCCGCA\n+AGCGCACCAAGCCTGTGACAGTGGATATGTATGAGGTGTGGTGCGCAGTGCTGTATCTGC\n+TACGGACAGGTTGCCCGTGGCGTGCGTTGCCCAGTGATTTTCCGAAGTGGCGCACGGTGC\n+ATTCCTACTTTGCCAAGTGGAGCGAAGTGGACGATGGAGGAATAAGCCTGCTGGAGCGGG\n+CGCTTAAAAAATCAGGTTGGCGCGGCCCGCGAGAAACAGGGGCGCAAGGCCTGCAGCACG\n+TTCTTGATCGTGGACGCGCAGAGCGTGAAGAACAGTGATACAGCCGGTCAGAAAGGCTAT\n+GACGCGGGCAAGAAGGTATCGGGGATCAAGCGCCACATCGCGGTGGATACGCAAGGCTTT\n+CCACATGCCGTTGCGGTGACCACGGCGGAAGTCACCGATCGTCAAGGTGCGCTGGAGGCA\n+TTGAAACGCTGCCGATCGGGTTTAGGTCGGGTGAAACGCCTGCTGTGCGACAGCGGCTAC\n+ACCGGAGATCCCTTCGCCGAGGGCGTACAGGACATTCTGGGCAAGCATGTCACCGTACAG\n+ATTGCCAAGCGCAGCGAGCTGCATACCTTCAAGGTCATGCCCAAGCGCTAGAGTGTCGAA\n+CGCAGCTTTGCCTGGCTGGAGAAGAACCGGAGGCTATGGAAGAACTGCGAGCGAAGGCTC\n+AATACCAGCTTGCAGTTCATCTACCTGGCGTTCCTGGCACTGCTGCTCAGGAGATCGTGA\n+ACAGGTTCTAAGGGCGGTCGGCCCCGCACACGACCGATGCGCGATAGCGCACATGCGCCG\n+ATCTCGGTACATGAAGTCGCGCAGAGCTTGCCCGCAAGGACGTATCGGCAGGTCAGCTGG\n+CGCCAGGGCAGCGACGCCACGCTCAGTTCGCGGTTCGCGGCGGTGCGGGTTCGTGCCGCA\n+CACAATCGCCAGGCACATGACGAGCAGTGGCTGCTGATCGAGTGGCCGCCGGGAGAGTCC\n+GAGCCCCGCCACTACTGGTTCTCGACGCGACCAAAGCAAACGCCGGTCAAGACACTGGTT\n+GCCACGGCACAAGGCCGATGGCGGATTGAACGCGATTATCAGGAGCTGAAGTCGGAGTTG\n+GGCCTGCATCACTATGAAGGGCGCAACTGGCGTGGTTTTCACCATCACGCCAGTCTGTGC\n+ATCGCCGCATACGGGTTCTTGATGCGCGAGCGCCTGCGCAGTAAAAAAAACTCCGTCGCA\n+TTCAAGATGCCTGCAGTATCCAAAAGCGTCCGCCCGCGCGGGTCTGGCCCCAATGCAACG\n+TCACCATCCCAACTCGATTGCCACGCTGGCCTTCGGACTGGCTAGGCTTATCGCCAGAAG\n+CCTCCCACACTGCCCGTGTTGCGGGGTCTCACCGTACCAACGGATTTGTATTTAGTAACA\n+CAGTAGAAT\n+>seq_2 <unknown description>\n+CCTGATTAGCACGATCTTTCAGCACAGTCGCAGCCAGTGAGAGCCGACCGGTCGATGCTA\n+GGACCGTCGCTCCACCGAGACCAGATCATGGCCATGAATCGTGTGCAGTTCCAAGCCGGG\n+CTGTCGTTGCCGGCGTTCCTCAAGCGCTATGGCAACGCGCAGCAGTGCGAGCAGGCGTTG\n+GAGATCTCGCGCTGGCCACAGGGCTTTGTTTGTCCGCGTTGCGCCGCTACCGCGCACAGT\n+CGATTCCAGCGTCACGGCACCACGTACTGGCAGTGCACGGCCTGCTATCGCCAGACCAGC\n+CTGCGCTCGGGCACGGTGATGGACAACAGCAAGCTGCCGCTACGCACCTGGCTGCTTGGC\n+ATGTATCTGCTGGGCCAGAGCAAGACGAACCTGTCGGCGCTGGAGTTGATGCGACACCTG\n+GGATTGAGCTACCCGACAGCGTGGCCAATGAAGCACAAGCTGATGCAGGCCATGACCCAA\n+CGCGAGGCGAACCGCAAGTTGGGCGGGATCGTGCAACTGGACGATGCCTACCTGGGCGGA\n+GAACGCAACGGTGGCAAGGCCGGGCGCGGCTCGGAGAACAAGCGCCCTTTCGTGATCGCC\n+GTGGAGACCACTGAAGACGGTCGTCCATTGCGCGCGGTGATGGATCCGGTCCCAGGCTTC\n+ACCAAGGCGGCGCTGTCGGAATGGATCGGGCAACGCCTGCATCCTGGAGCAGATGTCTAC\n+AGTGATGGACTCGGTGCGTTTCGAGCACTGGAAGCCGAGCACGCGCACACGGTGATCGAA\n+GGCAGCGGTCGAAGTCGCTGCGAGGCAGAGAACGCACGCTGGGTCAACGTGGTGTTGTCC\n+AACCTAAAGCGTTCGCTGGACGGTGCCTATCACGCCTTCAAATTCGCCAAATACGCCCAG\n+CGCTACCTGGCAGAGACGATGTGGCGGTTCAACCGCCGTTTCGATCTGACCCGGCTGGTG\n+CCCAGCTTGCTGGCCGCCGCAGCCGCCAGCAAGCCGTGGTCCGAGCGGGCCCTGCGTGAT\n+GTCACCATGTTCACCGCTGAAAGTGCGTGCTAATCAGGG\n+>seq_3 <unknown description>\n+CCTGATTAGCCCCATCCTTCAGCCATGGAAGTTGCTTGCCATACGCAAAACGCGCTCTGG\n+GCAAGGTGTGCAGCGCAGCAGTGCCGTCGCCAGCCGCGGCAGCATCTGTTTCAGGTCGAA\n+TCGGCGGTTGAAGCGATAGGCCGCCTCGGCCAGGTAGCGCCTTGCATACTTGGCCTGGCC\n+CACCGCATGGTAGGTCCCGCTGATGGCGCGTTTGACATTGCCCAGCACCACATTCAACCA\n+ACGTGCTCCCTGGACGTCGGTTGCAGCACGACCGCCACCGGTATCGAGCGTGGTGTGGGC\n+ATGCCCGGCCTCCTCCAGACGGCGAAAGCATGCCAGGCCGTCGCTATAGACCTCACACTC\n+CGGCTCCAGACGGCGCGCGATCCAGTCCTCCAGCGAGGCGTTGTCAAAGGCCTTCACCGG\n+CTCGATCACCGCAAAGACGGGGTGTTCGTGGGTGTGGTCCACT\n+>seq_4 <unknown description>\n+GCACCGCGATCACGAACGGCTGTTTGTTCTCCGAACCTCGTCCGCGCTTGCCGCCGCTGC\n+GCTCACCGCCCAGATACGCGTCATCGATCTGCACGAATCCCTTGAGTTTTCGCGGTTCTT\n+CGCGCTCGGTCATCGCCTGCATGATCTTGTGCTTCATGCGCCAGGCCGCCTTGTAGGTCA\n+CCCCAAGATGCCGCTTCAACTCCAGTGCTGCCAGG\n+>seq_5 <unknown description>\n+TGGTCTTGCTGGAGGTCAACAGGTACATCGCCTGCATCCACAGGCGCAAAGACAGCTTGC\n+TCGATTGCAACAGCGTGCCGGCACGCAAGGTGGTTTGATGCCGGCACGCCCGGCATTGGT\n+AGTACACCTGATCATCGCGTCGAAAGCGCGAGCGCGCGCGACCGTCGCACTGCGGGCAGC\n+GAAATCCCTTCGGCCAGCGCCACCGATACAACGCCCG'..b'\n+ATTCCTACTTTGCCAAGTGGAGCGAAGTGGACGATGAAGGAATGAGCCTGCTGGAGCGGG\n+CGCTTAAAAAATCAGGTTGGCGCGGCCCGCGAGAAACAGGGGCGCAAGGCCTGCAGTACG\n+TTCTTGATCGTGGACGCGCAGAGCGTGAAGAACAGTGATACAGCCGGCCAGAAAGGCTAT\n+GACGCGGGCAAGAAGGTATCGGGGATCAAGCGCCACATCGCGGTGGATACGCAAGGCTTT\n+CCACATGCCGTTGCGGTGACCA\n+>seq_141 <unknown description>\n+AGGTGCGCTGGAGGCATTGAAACGCTGCCGATCGGGTTTAGGTCGGGTGAAACGCCTGCT\n+GTGCGACAGCGGCTACACCGGAGATCCCTTCGCCGAGGGCGTACAGGACATTCTGGGCAA\n+GCATGTCACCGTACAGATTGCCAAGCGCAGCGAGCTGCATACCTTCAAGGTCATGCCCAA\n+GCGCTGGATTGTCGAACGCAGCTTTGCCTGGCTGGAGAAGAACCGGAGGCTATGGAAGAA\n+CTGCGAGCGAAGGCTCAATACCAGCTTGCAGTTCATCCACCTGGCGTTCCTGGCACTGCT\n+GCTCAGGAGATCGTGAACAGGTTCTTAGAGCGGCTAAACAACGTAGCGAGCAACTGCGAC\n+GTGGGTGCGGACGGCGGGCGGGAACCGGAGTGTACGAGCACCACATGCCGCACCGAGTAA\n+CGGCCACGCCCGCCTGACGGCTGCGCAGTAGTTTGTTAGCTGCTCTCAGCCGATCCGCTC\n+GATGCCGCCCATGTAAGGACGCAGCACCTGCGGCACATCGATCGACCCATCGGCGTTCTG\n+GTAGTTCTCCATCACCGCGATCATCGCGCGGCCCACAGCAGTGCCGGAGCCGTTGAGCGT\n+GTGCAGCAGTTCCAGCTTGCCGCTGACCGGGTTGCGCCAGCGCGCCTGCATGCGCCGCGC\n+CTGGAAATCGCCGCAATTGGAGCACGACGAAATTTCGCGATAAGTGTTCTGCGACGGCAA\n+CCAGACCTCCAGATCGTAGGTCTTGATCGCGGAAAAACCCATATCTCCCGTGCACAGCAA\n+CACCTTGCGATACGGCAGGCCGAGTTGCTCCAACACCACTTCGGCGCAACGCGTCATGCG\n+CTGATGTTCGGCGTCGCTGTCTTCCGGCGCGCAGGCAGTGACCAGCTCCACTTTTTCGA\n+>seq_142 <unknown description>\n+ACATGATCCTTAACCGGGAAATCGAACTGGCGCGGCGTGCCCCAACGCGATTGCTCGACG\n+TTGTCAGCCTCACTTTTCCCAAGAGGCACGTCTGCATGCGGCAGGTTGGGAATTACCGCG\n+TAAATCTTTTCCAACTCGTGCTGAACGACCGTCAGTCTGCCATGAGAGTGCAAAAGTTCA\n+TCGCCGACACCGGCCACCTCGG\n+>seq_143 <unknown description>\n+CGGTGGCCGGCAGCACGGACATCCCATTCGAGTTCAAACCTGCGCAGTAAGCGCGGCGAA\n+ACCCTCTTGTACTGCTGCCCGCGCCAGCACGCGCGGACGCCCGAGTCAGGTGTCACCGGC\n+CTCAGCCAACGCTGCGTAGCCACAAACACCATGCAGATTAACCGCGCCGCAATGTCAGCT\n+TGACTAAGCTGAACCTCCAAGAAGCTCTAGCGTCGCTGTTGCGCGCTGCCTTAGCTCTCC\n+CTCAGGTACCGCCGACCAGACTGGCCCCGTCATCCCGCAGATGCGCCAGGAGGCCGGCCA\n+TGTCCTTCATTTCGAATCCCTCATCCGCCCATCCGTCATCGCTACCTCAACAGGGCAAGC\n+GCGCGTTGGAGCGGCAGCAGAACGAGCACAGCGACGGCGCTTCACCCTGGCTGTGGGCGA\n+CGCCGATTGTGTTGTTGATCGTGGTTCCGAGTTGGTGGTGGGCACGTCATAGCGACGAAT\n+CCT\n+>seq_144 <unknown description>\n+TCGGCATGAGCGCCAGTGCGCTGCGCTATCGCCCGCGCGAGGACCGCAACGTTGAGCTGC\n+GCGAGCACAGTGTTGCGTTGGCGCATCGCCATCGCCGCTACGGCGTGGGGATGATCTCTC\n+TCAAGCTGCGGCAGGAAGGGCGTCTCGTGAACTATAAGCGGGTGGAGCGGTTGTATCGCC\n+AGCAGCAGCTACAAGTCCGGCGCCGCAAGCGCAAGAAGGTACCGGTTGGCGAGCGTCAGC\n+CGATGCTGCGGCCCACCAAGGCCAACCCGGTGTGGTCGATGGACGTCGTGTTCGACCGCA\n+CCGCCGAAGGTCGGGCGATCAAGTCTCTGGTGATCGTGGACGACGCGACACACCAGGCAG\n+TCGCCATCGACGTGGAACGCGCCATCTCCGGCCACGGGGTAGCACGCGTGCTGGATCGGT\n+TGGCACACAGTCGTGGCCTGCCGAAGGTGATTCGCACGGACAACGGCAAGGAGTTCTGTG\n+GCAAGGCC\n+>seq_145 <unknown description>\n+TGGTCGCCTGGGCGCATGCCAATCGTGTGCAGCTACGCCAGATCCAGCCTGGCAAGCCGA\n+ACCAGAATGCCTATGTCGAATCCTTCAACGGCCGGCTACGCGACGAATGCCTCAACGAAC\n+ATGGGTTCCCAACGCTGCTGCATGCGCGCACCGAGATCGAACGCTGGCGCCGCGAATACA\n+ACCAACACCGCCCAAAGAAAGCAATCGGCGCAATGACGCCGGCAACGTATGCCCAGCAGT\n+TGGCCAATAGCGAGATCATCAACCCCGGACTCTAAACCCGACTGCTACTCAGGATGGGGG\n+GACGTCGATCGCACGGCAAGCAGGTCTGGAACACCGCCTCGCCGGTGAAGAACTGCCAGT\n+ACGGATTTTCCAGCCAGCGCTCGCAGACCGCCTCGTCGGACA\n+>seq_146 <unknown description>\n+GTGTCCGCATGGGCGAAAACTGCCAGAAACTTAGTTTCACTGTGTTACAAATAATCGTAC\n+CTTTGTGCCACTATTGGAAGACCTTCAGGCCGCGCGGGAGAGCTGTGTTGAATAGGACAC\n+TGGAAGTGCGTTTTGAACAGTACGGGGAAGTAGTTGCTGCGGCCCTGTCCCATGCGGATC\n+GCAAACAGCCCGCACACTGGTACCTGAAGGGGTTGCTACTG\n+>seq_147 <unknown description>\n+GGCTTGGTGCGCTTGCGGGCTCCTGATTAGCACGATCTTTCAGCACAGTCGCAGCCAGTG\n+AGAGCCGACCGGTCGATGCTAGGACCGTCGCTCCACCGAGACCAGATCATGGCCATGAAT\n+CGTGTGCAGTTCCAAGCCGGGCTGTCGTTGCCGGCGTTCCTCAAGCGCTATGGCAACGCG\n+CAGCAGTGCGAGCAGGCGTTGGAGATCTCGCGCTGGCCACAGGGCTTTGTTTGTCCGCGT\n+TGCGCCGCTACCGCGCACAGTCGATTCCAGCGTCACGGCACCACGTACTGGCAGTGCACG\n+GCCTGCTATCGCCAGACCAGCCTGCGCTCGGGCACGGTGATGGACAACAGCAAGCTGCCG\n+>seq_148 <unknown description>\n+CACATCGTCTGGAATCAGTGCCCTGAGCTGCTGCAAAAAGCGTTTCTCCGCGCCTGGCGA\n+TCCCTGCTGTTTCCCGGAAACCACCATATCCAGCAAGGTGAGCGTGCGTCCACCGACCGG\n+CACGGCTGCGCGCAGCAGACACCACGACTTGTCCGGCTTCAAATCGCTCCAGTCGATGAC\n+GATCACCGGCTGGTCGCCGCGCAGTAGCCAATGCGCCATGTCCTGCTCGATGGCTGATCG\n+CTCGACCTGCAACGCGCGATTGCATAGCAGGCGGTCACATGCCTTGAGGGGCGCACG\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/setup.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/setup.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| @@ -0,0 +1,22 @@ +from distutils.core import setup +import distutils.command.install +import os + +class create_link(distutils.core.Command): + + def run( self ): + #create a sym link to uniqprimer.py inside of /usr/local/bin + os.symlink( ) + + +setup( name='uniqprimer', + description='A Python tool for finding primers unique to a given genome', + author='John Herndon', + author_email='johnlherndon@gmail.com', + version='0.5.0', + packages=[ 'primertools' ], + scripts=[ 'uniqprimer.py' ], + data_files=[ ( '/usr/local/bin', [ 'uniqprimer.py' ] ) ] + + ) + |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/stdout --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/stdout Mon Jan 03 09:56:55 2022 +0000 |
| b |
| b'@@ -0,0 +1,504 @@\n+1: PREPARING DATA\n+2,3: RUNNING mummer AND CREATING CLUSTERS\n+# reading input file "nucmer_alignments.ntref" of length 4831747\n+# construct suffix tree for sequence of length 4831747\n+# (maximum reference length is 536870908)\n+# (maximum query length is 4294967295)\n+# process 48317 characters per dot\n+#....................................................................................................\n+# CONSTRUCTIONTIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.55\n+# reading input file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpgd6MOr/combined_exlude.ffn" of length 4941439\n+# matching query-file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpgd6MOr/combined_exlude.ffn"\n+# against subject-file "nucmer_alignments.ntref"\n+# COMPLETETIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 4.99\n+# SPACE /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 9.48\n+4: FINISHING DATA\n+5: GENERATING COORDS FILE\n+1: PREPARING DATA\n+2,3: RUNNING mummer AND CREATING CLUSTERS\n+# reading input file "nucmer_alignments.ntref" of length 5240076\n+# construct suffix tree for sequence of length 5240076\n+# (maximum reference length is 536870908)\n+# (maximum query length is 4294967295)\n+# process 52400 characters per dot\n+#....................................................................................................\n+# CONSTRUCTIONTIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.58\n+# reading input file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpgd6MOr/tempSequences.fasta" of length 366574\n+# matching query-file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpgd6MOr/tempSequences.fasta"\n+# against subject-file "nucmer_alignments.ntref"\n+# COMPLETETIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.83\n+# SPACE /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 5.47\n+4: FINISHING DATA\n+5: GENERATING COORDS FILE\n+Pick PCR primers and hybridization oligos\n+Search DNA sequences for matches with primer pairs\n+Search DNA sequences for matches with primer pairs\n+Search DNA sequences for matches with primer pairs\n+*** Finding Primers ***\n+*** Creating Combined Fasta File for Exclude Files ***\n+*** Finding Sequences Unique to Target Genome ***\n+*** Running nucmer ***\n+*** Running nucmer Complete ***\n+data/PX099A.fa tmpgd6MOr/tempSequences.fasta\n+*** Running nucmer ***\n+*** Running nucmer Complete ***\n+*** Finding Primers ***\n+*** Running EPrimer3 ***\n+*** Running EPrimer3 Complete ***\n+*** Cross Validating Primers ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Time Elapsed: 7 minutes, 25 seconds ***\n+*** Output Written to primers.txt ***\n+*** Finished ***\n+1: PREPARING DATA\n+2,3: RUNNING mummer AND CREATING CLUSTERS\n+# reading input file "nucmer_alignments.ntref" of length 5240076\n+# construct suffix tree for sequence of length 5240076\n+# (maximum reference length is 536870908)\n+# (maximum query length is 4294967295)\n+# process 52400 characters per dot\n+#....................................................................................................\n+# CONSTRUCTIONTIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.94\n+# reading input file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpzf5wS8/combined_exlude.ffn" of length 4941439\n+# matching query-file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqpri'..b'+Search DNA sequences for matches with primer pairs\n+Search DNA sequences for matches with primer pairs\n+Search DNA sequences for matches with primer pairs\n+*** Finding Primers ***\n+*** Creating Combined Fasta File for Exclude Files ***\n+*** Finding Sequences Unique to Target Genome ***\n+*** Running nucmer ***\n+*** Running nucmer Complete ***\n+data/Xoc_BLS256.fasta tmpPHilD4/tempSequences.fasta\n+*** Running nucmer ***\n+*** Running nucmer Complete ***\n+*** Finding Primers ***\n+*** Running EPrimer3 ***\n+*** Running EPrimer3 Complete ***\n+*** Cross Validating Primers ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+Failure: No unique primers exist for this combination\n+*** Finished ***\n+1: PREPARING DATA\n+2,3: RUNNING mummer AND CREATING CLUSTERS\n+# reading input file "nucmer_alignments.ntref" of length 5240076\n+# construct suffix tree for sequence of length 5240076\n+# (maximum reference length is 536870908)\n+# (maximum query length is 4294967295)\n+# process 52400 characters per dot\n+#....................................................................................................\n+# CONSTRUCTIONTIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.13\n+# reading input file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpz0OJOq/combined_exlude.ffn" of length 9773186\n+# matching query-file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpz0OJOq/combined_exlude.ffn"\n+# against subject-file "nucmer_alignments.ntref"\n+# COMPLETETIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 6.27\n+# SPACE /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 14.56\n+4: FINISHING DATA\n+5: GENERATING COORDS FILE\n+1: PREPARING DATA\n+2,3: RUNNING mummer AND CREATING CLUSTERS\n+# reading input file "nucmer_alignments.ntref" of length 4831747\n+# construct suffix tree for sequence of length 4831747\n+# (maximum reference length is 536870908)\n+# (maximum query length is 4294967295)\n+# process 48317 characters per dot\n+#....................................................................................................\n+# CONSTRUCTIONTIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.24\n+# reading input file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpz0OJOq/tempSequences.fasta" of length 169503\n+# matching query-file "/homedir/galaxy/shed_tools/galaxy.southgreen.fr/toolshed/repos/dereeper/uniqprimer/631882b4244e/uniqprimer/uniqprimer-0.5.0/tmpz0OJOq/tempSequences.fasta"\n+# against subject-file "nucmer_alignments.ntref"\n+# COMPLETETIME /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 1.33\n+# SPACE /usr/local/bioinfo/MUMmer/3.23/mummer nucmer_alignments.ntref 4.86\n+4: FINISHING DATA\n+5: GENERATING COORDS FILE\n+Pick PCR primers and hybridization oligos\n+Search DNA sequences for matches with primer pairs\n+Search DNA sequences for matches with primer pairs\n+Search DNA sequences for matches with primer pairs\n+*** Finding Primers ***\n+*** Creating Combined Fasta File for Exclude Files ***\n+*** Finding Sequences Unique to Target Genome ***\n+*** Running nucmer ***\n+*** Running nucmer Complete ***\n+data/Xoc_BLS256.fasta tmpz0OJOq/tempSequences.fasta\n+*** Running nucmer ***\n+*** Running nucmer Complete ***\n+*** Finding Primers ***\n+*** Running EPrimer3 ***\n+*** Running EPrimer3 Complete ***\n+*** Cross Validating Primers ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+*** Running PrimerSearch ***\n+*** Running PrimerSearch Complete ***\n+Failure: No unique primers exist for this combination\n+*** Finished ***\n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/uniqprimer.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/uniqprimer.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| b'@@ -0,0 +1,256 @@\n+#!/usr/bin/python\n+\n+\'\'\'\n+Created on Jan 1, 2011\n+\n+@author: John L. Herndon\n+@contact: herndon@cs.colostate.edu\n+@organization: Colorado State University\n+@group: Computer Science Department, Asa Ben-Hur\'s laboratory \n+\'\'\'\n+\n+import exceptions\n+import sys\n+import time\n+import os ## added by Alexis\n+\n+sys.path.append("/gs7k1/home/galaxy/galaxy_env/lib/python2.7/site-packages")\n+\n+import getopt\n+from primertools import *\n+\n+version="0.5.0"\n+\n+\n+class UniqPrimerFinder( object ):\n+ \n+ def __init__( self, includeFiles, excludeFiles, crossValidate, eprimerOptions):\n+ \n+ utils.logMessage( "UniqPrimerFinder::__init__()", "Initializing UniqPrimerFinder" )\n+ self.includeFiles = includeFiles\n+ self.includeFileManager = includefilemanager.IncludeFileManager( )\n+ \n+ self.excludeFiles = excludeFiles\n+ self.excludeFileManager= excludefilemanager.ExcludeFileManager( )\n+ \n+ self.primerManager = primermanager.PrimerManager( eprimerOptions )\n+ \n+ self.crossValidate = crossValidate\n+\n+ \n+ utils.logMessage( "UniqPrimerFinder::__init__()", "Initializing UniqPrimerFinder - complete" )\n+ \n+ def writeOutputFile( self, primers, outputFileName, maxresults = 100 ):\n+ \'\'\'\n+ primers: a list of PrimerSet obs\n+ \'\'\'\n+ ##outputFileName = uPrimer ##Mau: defined this..\n+ outputFile = open( outputFileName, \'w\' )\n+ \n+ i = 0\n+ for primer in primers:\n+ i += 1\n+ \n+ outputFile.write( "{0}\\t{1}\\t{2}\\t{3}\\n".format( i, primer.forwardPrimer, primer.reversePrimer, primer.productSize ) )\n+ \n+ if i > maxresults:\n+ break\n+ \n+ utils.logMessage( "UniqPrimerFinder::writeOutputFile()", "output file written." )\n+ \n+ \n+ def findPrimers( self, outputFile = "uPrimer.txt" ):\n+\toutputFile = uPrimer ## Mau adds to overwrite the above value\n+\t\n+\n+ utils.logMessage( "UniqPrimerFinder::findPrimers()", "Finding primers for include files" )\n+ startTime = time.time( )\n+ #generate the combined sequence fasta file for all exclude sequences\n+ utils.printProgressMessage( "*** Creating Combined Fasta File for Exclude Files ***" )\n+ for excludeFile in self.excludeFiles:\n+ self.excludeFileManager.addExcludeFile( excludeFile )\n+ \n+ self.excludeFileManager.exportSequences( )\n+ \n+ self.includeFileManager.setExcludeFile( self.excludeFileManager.getOutputFileName( ) )\n+\n+ utils.printProgressMessage( "*** Finding Sequences Unique to Target Genome ***" )\n+\n+ #run nucmer program on all include files\n+ for includeFile in self.includeFiles:\n+ self.includeFileManager.processIncludeFile( includeFile )\n+ \n+ #get the sequences found in include files, but no the exclude file. \n+ uniqueSequences = self.includeFileManager.getUniqueSequences( )\n+ \n+ utils.printProgressMessage( "*** Finding Primers ***" )\n+ \n+ primers = self.primerManager.getPrimers( uniqueSequences )\n+ \n+ if self.crossValidate == True:\n+ utils.printProgressMessage( "*** Cross Validating Primers ***" )\n+ primers = self.primerManager.crossValidatePrimers( primers, self.excludeFileManager.getOutputFileName( ) )\n+ # added by Alexis, primersearch also against all include files\n+ #run primersearch program on all include files\n+ j=0\n+ for includeFile in self.includeFiles: # added by Alexis\n+ j = j + 1\n+ primers = self.primerManager.crossValidatePrimers2( primers, includeFile, j) # added by Alexis\n+ \t\t\n+ \n+ utils.logMessage( "UniqPrimerFinder::findPrimers( )", "found {0} unique sequences".format( len( primers ) ) ) \n+ \n+ self.writeOutputFile( primers, outputFile )\n+ \n+ '..b'opt[ 0 ] == \'-v\':\n+ verbose = True \n+ elif opt[ 0 ] == \'-o\': ## Mau added, if -o...\n+ uPrimer = str(opt[1]) ## Mau added, then get filename for outfile after -o\n+ elif opt[ 0 ] == \'-l\': ## Mau added, if -l...\n+ lf = str(opt[1]) ## Mau added, then get filename for logfile after -l\n+ elif opt[ 0 ] == \'-f\': ## Alexis added, if -f\n+ fastaDiff = str(opt[1]) ## Alexis added, then get filename for fasta file after -f\n+ elif opt[ 0 ] == \'--productsizerange\':\n+ eprimerOptions.setProductRange( opt[ 1 ] )\n+ productsizerange = opt[ 1 ]\n+ elif opt[ 0 ] == \'--primersize\':\n+ eprimerOptions.setPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--minprimersize\':\n+ eprimerOptions.setMinPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--maxprimersize\':\n+ eprimerOptions.setMaxPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--crossvalidate\':\n+ crossValidate = True\n+ elif opt[ 0 ] == \'--crossvalidate\':\n+ crossValidate = True\n+ elif opt[ 0 ] == \'--keeptempfiles\':\n+ cleanup = False\n+ elif opt[ 0 ] == \'-h\':\n+ printUsageAndQuit( )\n+ else:\n+ print "Unknown option: " + str( opt[ 0 ] )\n+ printUsageAndQuit( )\n+ #print "uPrimer: " + uPrimer + " log file name: " + lf + "\\n"\n+ if len( includeFiles ) == 0 or len( excludeFiles ) == 0:\n+ \n+ print "You must specify at least one include file and at least one exclude file"\n+ printUsageAndQuit( )\n+\n+ return includeFiles, excludeFiles, crossValidate, cleanup, verbose, eprimerOptions, lf , uPrimer, fastaDiff #Mau: add lf, uPrime\n+\n+def main( args, debug = False):\n+ #parse the command line arguments for include and exclude files\n+ \n+ includeFiles, excludeFiles, crossValidate, cleanup, verbose, eprimerOptions, lf, uPrimer, fastaDiff = parseArgs( args ) ##Mau add: lf\n+ utils.initialize( True, cleanup, lf) ##Mau: add lf\n+ #find primers for the include sequences\n+ \n+ tmpdir = utils.getTemporaryDirectory() ## added by Alexis\n+ command = "cp -rf " + tmpdir + "/sequenceForEprimer.fasta" + " " + fastaDiff\n+ \n+ try:\n+ utils.logMessage( "uniqprimer::Main( )", "Logging include files: " )\n+ utils.logList( "uniqprimer::Main( )", includeFiles )\n+ utils.logMessage( "uniqprimer::Main( )", "Logging exclude files: " ) \n+ utils.logList( "uniqprimer::Main( )", excludeFiles)\n+ print "*** Finding Primers ***"\n+ uniqPrimer = UniqPrimerFinder( includeFiles, excludeFiles, crossValidate, eprimerOptions) \n+ uniqPrimer.findPrimers( )\n+ except utils.NoFileFoundException as nfe:\n+ print "File not found: " + str( nfe.filename )\n+ printUsageAndQuit( )\n+ except utils.ProgramNotFoundException as pnfe:\n+ print str( pnfe.programName ) + ": program is not installed or is not in your path."\n+ print str( pnfe.details )\n+ except utils.NoPrimersExistException as npe:\n+ print "Failure: No unique primers exist for this combination"\n+ except exceptions.BaseException as e:\n+ print "It appears that an unknown sequence of events has resulted in the internal explosion of this program. Please send the file called \\\'log_uniqprimer.txt\\\' to herndon@cs.colostate.edu and tell that bonehead John to fix it!"\n+ print "Details:"\n+ print e \n+ \n+ os.system("cp -rf " + tmpdir + "/sequenceForEprimer.fasta" + " " + fastaDiff)\n+ utils.shutdown( )\n+\n+ print "*** Finished ***"\n+ \n+if __name__ == \'__main__\':\n+ \n+ #temp_args = "-i data/testdata/smallinclude.ffn -x data/testdata/smallexclude.ffn".split( )\n+ \n+ #temp_args = "-i data/XOO_MAI1_scaffolds.fas -x data/KACC.ffn".split( )\n+ if len( sys.argv ) == 1:\n+ printUsageAndQuit( )\n+ main( sys.argv[ 1: ], debug = True )\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/uniqprimer_ok.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/uniqprimer_ok.py Mon Jan 03 09:56:55 2022 +0000 |
| [ |
| b'@@ -0,0 +1,241 @@\n+#!/usr/bin/python\n+\n+\'\'\'\n+Created on Jan 1, 2011\n+\n+@author: John L. Herndon\n+@contact: herndon@cs.colostate.edu\n+@organization: Colorado State University\n+@group: Computer Science Department, Asa Ben-Hur\'s laboratory \n+Mau added the -o primerOutfile -l logfile option\n+\'\'\'\n+\n+import exceptions\n+import sys\n+import time\n+\n+import getopt\n+from primertools import *\n+\n+version="0.5.0"\n+\n+\n+class UniqPrimerFinder( object ):\n+ \n+ def __init__( self, includeFiles, excludeFiles, crossValidate, eprimerOptions):\n+ \n+ utils.logMessage( "UniqPrimerFinder::__init__()", "Initializing UniqPrimerFinder" )\n+ self.includeFiles = includeFiles\n+ self.includeFileManager = includefilemanager.IncludeFileManager( )\n+ \n+ self.excludeFiles = excludeFiles\n+ self.excludeFileManager= excludefilemanager.ExcludeFileManager( )\n+ \n+ self.primerManager = primermanager.PrimerManager( eprimerOptions )\n+ \n+ self.crossValidate = crossValidate\n+\n+ \n+ utils.logMessage( "UniqPrimerFinder::__init__()", "Initializing UniqPrimerFinder - complete" )\n+ \n+ def writeOutputFile( self, primers, outputFileName, maxresults = 100 ):\n+ \'\'\'\n+ primers: a list of PrimerSet obs\n+ \'\'\'\n+ ##outputFileName = uPrimer ##Mau: defined this..\n+ outputFile = open( outputFileName, \'w\' )\n+ \n+ i = 0\n+ for primer in primers:\n+ i += 1\n+ \n+ outputFile.write( "{0}\\t{1}\\t{2}\\t{3}\\n".format( i, primer.forwardPrimer, primer.reversePrimer, primer.productSize ) )\n+ \n+ if i > maxresults:\n+ break\n+ \n+ utils.logMessage( "UniqPrimerFinder::writeOutputFile()", "output file written." )\n+ \n+ \n+ def findPrimers( self, outputFile = "uPrimer.txt" ):\n+\toutputFile = uPrimer ## Mau adds to overwrite the above value\n+\n+ utils.logMessage( "UniqPrimerFinder::findPrimers()", "Finding primers for include files" )\n+ startTime = time.time( )\n+ #generate the combined sequence fasta file for all exclude sequences\n+ utils.printProgressMessage( "*** Creating Combined Fasta File for Exclude Files ***" )\n+ for excludeFile in self.excludeFiles:\n+ self.excludeFileManager.addExcludeFile( excludeFile )\n+ \n+ self.excludeFileManager.exportSequences( )\n+ \n+ self.includeFileManager.setExcludeFile( self.excludeFileManager.getOutputFileName( ) )\n+\n+ utils.printProgressMessage( "*** Finding Sequences Unique to Target Genome ***" )\n+\n+ #run nucmer program on all include files\n+ for includeFile in self.includeFiles:\n+ self.includeFileManager.processIncludeFile( includeFile )\n+ \n+ #get the sequences found in include files, but no the exclude file. \n+ uniqueSequences = self.includeFileManager.getUniqueSequences( )\n+ \n+ utils.printProgressMessage( "*** Finding Primers ***" )\n+ \n+ primers = self.primerManager.getPrimers( uniqueSequences )\n+ \n+ if self.crossValidate == True:\n+ utils.printProgressMessage( "*** Cross Validating Primers ***" )\n+ primers = self.primerManager.crossValidatePrimers( primers, self.excludeFileManager.getOutputFileName( ) )\n+ \n+ \n+ utils.logMessage( "UniqPrimerFinder::findPrimers( )", "found {0} unique sequences".format( len( primers ) ) ) \n+ \n+ self.writeOutputFile( primers, outputFile )\n+ \n+ utils.logMessage( "UniqPrimerFinder::findPrimers()", "Finished finding primers" )\n+ endTime = time.time()\n+ elapsedMinutes = int( ( endTime - startTime ) / 60 )\n+ elapsedSeconds = int( ( endTime - startTime ) % 60 )\n+ print "*** Time Elapsed: {0} minutes, {1} seconds ***".format( elapsedMinutes, elapsedSeconds )\n+ print "*** Output Written to {0} ***".format( outputFile )\n+ '..b' cleanup = True\n+ optlist, args = getopt.getopt( args, opts, longopts )\n+ \n+ includeFiles = [ ]\n+ excludeFiles = [ ]\n+ eprimerOptions = utils.EPrimerOptions( )\n+ \n+ verbose = False\n+ for opt in optlist:\n+ if opt[ 0 ] == \'-i\':\n+ includeFiles.append( opt[ 1 ] )\n+ elif opt[ 0 ] == \'-x\':\n+ excludeFiles.append( opt[ 1] )\n+ elif opt[ 0 ] == \'-v\':\n+ verbose = True \n+ elif opt[ 0 ] == \'-o\': ## Mau added, if -o...\n+ uPrimer = str(opt[1]) ## Mau added, then get filename for outfile after -o\n+ elif opt[ 0 ] == \'-l\': ## Mau added, if -l...\n+ lf = str(opt[1]) ## Mau added, then get filename for logfile after -l\n+ elif opt[ 0 ] == \'--productsizerange\':\n+ eprimerOptions.setProductRange( opt[ 1 ] )\n+ productsizerange = opt[ 1 ]\n+ elif opt[ 0 ] == \'--primersize\':\n+ eprimerOptions.setPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--minprimersize\':\n+ eprimerOptions.setMinPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--maxprimersize\':\n+ eprimerOptions.setMaxPrimerSize( opt[1 ] )\n+ elif opt[ 0 ] == \'--crossvalidate\':\n+ crossValidate = True\n+ elif opt[ 0 ] == \'--crossvalidate\':\n+ crossValidate = True\n+ elif opt[ 0 ] == \'--keeptempfiles\':\n+ cleanup = False\n+ elif opt[ 0 ] == \'-h\':\n+ printUsageAndQuit( )\n+ else:\n+ print "Unknown option: " + str( opt[ 0 ] )\n+ printUsageAndQuit( )\n+ #print "uPrimer: " + uPrimer + " log file name: " + lf + "\\n"\n+ if len( includeFiles ) == 0 or len( excludeFiles ) == 0:\n+ \n+ print "You must specify at least one include file and at least one exclude file"\n+ printUsageAndQuit( )\n+\n+ return includeFiles, excludeFiles, crossValidate, cleanup, verbose, eprimerOptions, lf , uPrimer #Mau: add lf, uPrime\n+\n+def main( args, debug = False):\n+ #parse the command line arguments for include and exclude files\n+ \n+ includeFiles, excludeFiles, crossValidate, cleanup, verbose, eprimerOptions, lf, uPrimer = parseArgs( args ) ##Mau add: lf\n+ \n+ utils.initialize( True, cleanup, lf) ##Mau: add lf\n+\n+ #find primers for the include sequences\n+ \n+ try:\n+ utils.logMessage( "uniqprimer::Main( )", "Logging include files: " )\n+ utils.logList( "uniqprimer::Main( )", includeFiles )\n+ utils.logMessage( "uniqprimer::Main( )", "Logging exclude files: " ) \n+ utils.logList( "uniqprimer::Main( )", excludeFiles)\n+ print "*** Finding Primers ***"\n+ uniqPrimer = UniqPrimerFinder( includeFiles, excludeFiles, crossValidate, eprimerOptions) \n+ uniqPrimer.findPrimers( )\n+ except utils.NoFileFoundException as nfe:\n+ print "File not found: " + str( nfe.filename )\n+ printUsageAndQuit( )\n+ except utils.ProgramNotFoundException as pnfe:\n+ print str( pnfe.programName ) + ": program is not installed or is not in your path."\n+ print str( pnfe.details )\n+ except utils.NoPrimersExistException as npe:\n+ print "Failure: No unique primers exist for this combination"\n+ except exceptions.BaseException as e:\n+ print "It appears that an unknown sequence of events has resulted in the internal explosion of this program. Please send the file called \\\'log_uniqprimer.txt\\\' to herndon@cs.colostate.edu and tell that bonehead John to fix it!"\n+ print "Details:"\n+ print e \n+ \n+ utils.shutdown( )\n+\n+ print "*** Finished ***"\n+ \n+if __name__ == \'__main__\':\n+ \n+ #temp_args = "-i data/testdata/smallinclude.ffn -x data/testdata/smallexclude.ffn".split( )\n+ \n+ #temp_args = "-i data/XOO_MAI1_scaffolds.fas -x data/KACC.ffn".split( )\n+ if len( sys.argv ) == 1:\n+ printUsageAndQuit( )\n+ main( sys.argv[ 1: ], debug = True )\n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n+ \n' |
| b |
| diff -r 7e0438dad4e9 -r 3249d78ecfc2 uniqprimer-0.5.0/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uniqprimer-0.5.0/utils.py Mon Jan 03 09:56:55 2022 +0000 |
| b |
| @@ -0,0 +1,207 @@ +''' +Created on Jan 1, 2011 + +@author: John L. Herndon +@contact: herndon@cs.colostate.edu +@organization: Colorado State University +@group: Computer Science Department, Asa Ben-Hur's laboratory +''' + + +import exceptions +import time +import os.path +from os import pathsep +from string import split +import tempfile +import shutil + +def getTimeStamp( ): + return time.strftime('%d%m%Y-%H%M%S') + + +class Match( object ): + ''' + record where two genomes line up. stores only alignments for one part of the genome + ''' + def __init__( self, start, end, seqID ): + self.seqID = seqID + self.start = start + self.end = end + + def __repr__( self ): + return "Start: {0}, End:{1}, SeqID:{2}".format( self.start, self.end, self.seqID ) + +class PrimerSet( object ): + + def __init__( self, id ): + self.id = id + self.productSize = 0 + self.forwardPrimer = "" + self.forwardMeltTemp = "" + self.reversePrimer = "" + self.reverseMeltTemp = "" + + + def setProductSize( self, productSize): + self.productSize = productSize + + def setForwardPrimerData( self, sequence, temp ): + self.forwardPrimer = sequence + self.forwardMeltTemp = temp + + def setReversePrimerData( self, sequence, temp): + self.reversePrimer = sequence + self.reverseMeltTemp = temp + + +#search function from http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/ +def search_file( filename ): + """ find file + """ + search_path = os.getenv( 'PATH' ) + logMessage( "utils::search_file", "Path: {0}".format( search_path ) ) + file_found = 0 + paths = split( search_path, pathsep ) + for path in paths: + if os.path.exists( os.path.join( path, filename ) ): + file_found = 1 + break + if file_found: + return os.path.abspath( os.path.join( path, filename ) ) + else: + return None + +tempDir = "" +removeTemp = True + +verbose = False + + +def initialize( isVerbose, cleanup, lf): ##Mau: added lf + global removeTemp + global tempDir + global verbose + global logFile ##Mau: added logFile variable + + logFile = lf #:Mau add line + + verbose = isVerbose + tempDir = tempfile.mkdtemp( dir="" ) + initializeLogging() + removeTemp = cleanup + logMessage( "utils::Initialize( )", "Initialization complete. Temporary directory: {0}".format( tempDir ) ) + +logFile = None + + +def printProgressMessage( message ): + global verbose + if verbose == True: + print message + +def getTemporaryDirectory( ): + global tempDir + return tempDir + +def initializeLogging(): + global logFile + #logFileName = "uniqprimer_{0}.log".format( getTimeStamp( ) ) + #logFileName = "log_uniqprimer.txt" ##Mau: commented out + logFileName = logFile ##Mau: changed + logFile = open( logFileName, 'w' ) + +def shutdown( ): + global removeTemp + global tempDir + shutdownLogging( ) + if removeTemp == True: + print "*** Removing temporary directory ***" + shutil.rmtree( tempDir ) + +def shutdownLogging( ): + global logFile + if logFile != None: + logFile.close( ) + +def logList( method, list ): + + message = reduce( lambda x,y: str( x ) + " " + str( y ) , list ) + logMessage(method, message) + + +def logMessage( method, message ): + global logFile + if logFile == None: + return + log = "{0} - {1}".format( method, message ) + + logFile.write( log + "\n" ) + logFile.flush( ) + +class EPrimerOptions( object ): + + def __init__( self ): + + self.minPrimerSize = 18 + self.maxPrimerSize = 27 + self.primerSize = 20 + self.productRange = "200-250" + + def setPrimerSize( self, size ): + + size = int( size ) + if size > 35: + size = 35 + + self.primerSize = size + if self.primerSize < self.minPrimerSize: + self.maxPrimerSize = self.primerSize + elif self.primerSize > self.maxPrimerSize: + self.maxPrimerSize = self.primerSize + + def getPrimerSize( self ): + return self.primerSize + + def setMinPrimerSize( self, minSize): + self.minPrimerSize = minSize + + def getMinPrimerSize( self ): + return self.minPrimerSize + + def setMaxPrimerSize( self, size ): + self.maxPrimerSize = size + + def getMaxPrimerSize( self ): + return self.maxPrimerSize + + def setProductRange( self, range ): + self.productRange = range + + def getProductRange( self ): + return self.productRange + +class NoPrimersExistException( exceptions.BaseException ): + + def __init__( self ): + exceptions.BaseException( self ) + +class ProgramNotFoundException( exceptions.BaseException ): + + def __init__( self, programName, details ): + exceptions.BaseException.__init__(self) + self.programName = programName + self.details = details + +class NoFileFoundException( exceptions.BaseException ): + + def __init__( self, filename ): + exceptions.BaseException.__init__(self) + self.filename = filename + + +class ModuleNotInitializedException( exceptions.BaseException ): + + def __init__( self, moduleName, reason ): + self.moduleName = moduleName + self.reason = reason |