Example #1
0
def format_out(groups, amp_num, fa_amp_file_name, session_dir):
    '''Format output'''
    records = FastaFormatParser.parse(open(os.path.join(session_dir, fa_amp_file_name)))
    seq_dict = {}
    for record in records:
	id = record['id'].split()[0]
	desc = record['desc']
	seq = record['seq']
        seq = chilli.print_seq(seq, 80)
	fa_seq = '>%s %s%s%s%s' % (id, desc, os.linesep, seq, os.linesep)
	seq_dict[id] = fa_seq

    group_list = []
    for group_sn, group in enumerate(groups):
	seq_list = [seq_dict[amp_id] for amp_id, strand in group]

	file_name = write_amplicons(session_dir, seq_list)
        file_name = os.path.join(session_dir, file_name)
	if len(group) < 2:
	    t_coffee_result = file_name
	else:
	    t_coffee_result = run_t_coffee(file_name)

	t_coffee_result = os.path.basename(t_coffee_result)

        group_list.append((group_sn+1, ', '.join(['%s (%s)' % (amp_id, strand) for amp_id, strand in group]), t_coffee_result))

    return group_list
def check_infile(options):
    '''Check and return Oligos'''
    err_or_degenerate = SeqCheck.fasta_format_check(options.infile)
    if err_or_degenerate in ['yes', 'no']:
	global degenerate
	degenerate = err_or_degenerate
    else:
	print2stderr(err_or_degenerate)

    options.infile.seek(0)

    if degenerate == 'no':
        oligos = FastaFormatParser.parse(options.infile)
    else:
        oligos = DegenerateSeqConvetor.convert(FastaFormatParser.parse(options.infile))

    options.infile.close()

    return oligos
Example #3
0
def check_infile(options):
    '''Check and return Oligos'''
    err_or_degenerate = SeqCheck.fasta_format_check(options.infile)
    if err_or_degenerate in ['yes', 'no']:
        global degenerate
        degenerate = err_or_degenerate
    else:
        print2stderr(err_or_degenerate)

    options.infile.seek(0)

    if degenerate == 'no':
        oligos = FastaFormatParser.parse(options.infile)
    else:
        oligos = DegenerateSeqConvetor.convert(
            FastaFormatParser.parse(options.infile))

    options.infile.close()

    return oligos
Example #4
0
def analysis_hairpin(infile, mv, dv, oligo, dntp, align_mode):
    '''Analysis dimer'''
    records = FastaFormatParser.parse(open(infile))
    dimer_list = []
    for i in range(len(records)):
	record_i = records[i]
	id_i = record_i['id']
	seq_i = record_i['seq']
	delta_g, tm, align = run_ntthal(seq_i, seq_i, mv=mv, dv=dv, d=oligo, n=dntp, align_mode=align_mode)
	if tm >= 0:
	    dimer_list.append([id_i, seq_i, tm, delta_g, align])

    dimer_list.sort(key=itemgetter(2), reverse=True)
    return dimer_list
Example #5
0
def get_mid_seq(mid_seq_id_list, options, session_dir, db):
    '''Get the amp sequence using twoBitToFa from Blat suite'''
    mid_seq_list = []
    if len(mid_seq_id_list) == 0:
        return mid_seq_list

    tmp_name = '%s.mid_seq_id_list.txt.tmp' % (os.path.basename(db))
    mid_seq_id_list_file = os.path.join(session_dir, tmp_name)
    fh = open(mid_seq_id_list_file, 'w')
    fh.write(os.linesep.join(mid_seq_id_list))
    fh.close()

    tmp_name = '%s.twoBitToFa_output.txt.tmp' % (os.path.basename(db))
    outfile = os.path.join(session_dir, tmp_name)
    twoBitDB = db + '.2bit'

    cmd = '%s%stwoBitToFa -seqList=%s %s %s' % (
        bin_path, os.sep, mid_seq_id_list_file, twoBitDB, outfile)

    try:
        out, err = subprocess.Popen(cmd,
                                    shell=True,
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE).communicate()
    except:
        msg = 'Error: twoBitToFa running error.'
        print msg
        print2stderr(msg)

    if err:
        print err
        print2stderr(err)

    try:
        fh = open(outfile)
    except:
        msg = 'Error: twoBitToFa running error: no output file produced.'
        print msg
        print2stderr(msg)

    records = FastaFormatParser.parse(fh)
    mid_seq_list = []
    for record in records:
        mid_seq_list.append(record['seq'].lower())

    fh.close()
    return mid_seq_list
def main():
    '''Main'''
    options = get_opt()
    try:
        fh = open(options.infile)
    except:
        chilli.print2stderr('Error: can not open file: %s' % (options.infile))

    records = FFP.parse(fh)
    result_fasta_array = convert(records)
    out = format2fasta(result_fasta_array)
    if options.outfile == sys.stdout:
        print(out)
    else:
        fo = open(options.outfile, 'w')
        fo.write(out)
        fo.close()
Example #7
0
def extract_by_twoBitToFa(id_pos_range_list, options, session_dir, db):
    '''Get the amp sequence using twoBitToFa from Blat suite'''
    seq_list = []
    if len(id_pos_range_list) == 0:
        return seq_list

    tmp_name = '%s.id_pos_range_list.txt.tmp' % (os.path.basename(db))
    id_pos_range_list_file = os.path.join(session_dir, tmp_name)
    fh = open(id_pos_range_list_file, 'w')
    fh.write(os.linesep.join(id_pos_range_list))
    fh.close()

    tmp_name = '%s.twoBitToFa_output.txt.tmp' % (os.path.basename(db))
    outfile = os.path.join(session_dir, tmp_name)
    twoBitDB = db + '.2bit'

    cmd = 'MFEprimer_%s_%s_twoBitToFa -seqList=%s %s %s' % (platform.system(
    ), get_bit(), id_pos_range_list_file, twoBitDB, outfile)

    try:
        out, err = subprocess.Popen(cmd,
                                    shell=True,
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE).communicate()
    except:
        msg = 'Error: twoBitToFa running error.'
        print2stderr(msg)

    if err:
        print2stderr(err)

    try:
        fh = open(outfile)
    except:
        msg = 'Error: twoBitToFa running error: no output file produced.'
        print2stderr(msg)

    records = FastaFormatParser.parse(fh)
    seq_list = []
    for record in records:
        seq_list.append(record['seq'].lower())

    fh.close()
    return seq_list
def get_mid_seq(mid_seq_id_list, options, session_dir, db):
    '''Get the amp sequence using twoBitToFa from Blat suite'''
    mid_seq_list = []
    if len(mid_seq_id_list) == 0:
        return mid_seq_list

    tmp_name = '%s.mid_seq_id_list.txt.tmp' % (os.path.basename(db))
    mid_seq_id_list_file = os.path.join(session_dir, tmp_name)
    fh = open(mid_seq_id_list_file, 'w')
    fh.write(os.linesep.join(mid_seq_id_list))
    fh.close()

    tmp_name = '%s.twoBitToFa_output.txt.tmp' % (os.path.basename(db))
    outfile = os.path.join(session_dir, tmp_name)
    twoBitDB = db + '.2bit'

    cmd = '%s%stwoBitToFa -seqList=%s %s %s' % (bin_path, os.sep, mid_seq_id_list_file, twoBitDB, outfile)

    try:
        out, err = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
    except:
        msg = 'Error: twoBitToFa running error.'
	print msg
        print2stderr(msg)
    
    if err:
	print err
        print2stderr(err)

    try:
        fh = open(outfile)
    except:
        msg = 'Error: twoBitToFa running error: no output file produced.'
	print msg
        print2stderr(msg)

    records = FastaFormatParser.parse(fh)
    mid_seq_list = []
    for record in records:
        mid_seq_list.append(record['seq'].lower())

    fh.close()
    return mid_seq_list