/usr/bin/falcon_utgcns is in falconkit 0.1.3+20140820-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #!/usr/bin/python
#################################################################################$$
# Copyright (c) 2011-2014, Pacific Biosciences of California, Inc.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted (subject to the limitations in the
# disclaimer below) provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# * Neither the name of Pacific Biosciences nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
# GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY PACIFIC
# BIOSCIENCES AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL PACIFIC BIOSCIENCES OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#################################################################################$$
from ctypes import *
import sys
from multiprocessing import Pool
import os
import sysconfig
import falcon_kit
module_path = falcon_kit.__path__[0]
falcon = CDLL(
module_path + os.path.sep + "falcon." + sysconfig.get_config_var('MULTIARCH') + ".so")
"""
consensus_data * generate_utg_consensus( char ** input_seq,
seq_coor_t *offset,
unsigned int n_seq,
unsigned min_cov,
unsigned K,
double min_idt) {
"""
falcon.generate_utg_consensus.argtypes = [ POINTER(c_char_p), POINTER(falcon_kit.seq_coor_t), c_uint, c_uint, c_uint, c_double ]
falcon.generate_utg_consensus.restype = POINTER(falcon_kit.ConsensusData)
falcon.free_consensus_data.argtypes = [ POINTER(falcon_kit.ConsensusData) ]
rcmap = dict(zip("ACGTacgtNn-", "TGCAtgcaNn-"))
def get_consensus(c_input):
t_id, seqs, offsets, config = c_input
K = config[0]
seqs_ptr = (c_char_p * len(seqs))()
seqs_ptr[:] = seqs
offset_ptr = (c_long * len(seqs))( *offsets )
consensus_data_ptr = falcon.generate_utg_consensus( seqs_ptr, offset_ptr, len(seqs), 0, K, 0.)
consensus = string_at(consensus_data_ptr[0].sequence)[:]
del seqs_ptr
del offset_ptr
falcon.free_consensus_data( consensus_data_ptr )
return consensus, t_id
def echo(c_input):
t_id, seqs, offsets, config = c_input
return len(seqs), "test"
def get_seq_data(config):
seqs = []
offsets = []
seed_id = None
with sys.stdin as f:
for l in f:
l = l.strip().split()
if len(l) != 3:
continue
if l[0] not in ("+", "-"):
if len(seqs) == 0:
seqs.append(l[2]) #the "seed"
offsets.append( int(l[1]) )
seed_id = l[0]
else:
seqs.append(l[2])
offsets.append( int(l[1]) )
elif l[0] == "+":
yield (seed_id, seqs, offsets, config)
seqs = []
offsets = []
seed_id = None
elif l[0] == "-":
break
if __name__ == "__main__":
import argparse
import re
parser = argparse.ArgumentParser(description='a simple multi-processor consensus sequence generator')
parser.add_argument('--n_core', type=int, default=4,
help='number of processes used for generating consensus')
args = parser.parse_args()
exe_pool = Pool(args.n_core)
K = 8
config = (K, )
for res in exe_pool.imap(get_consensus, get_seq_data(config)):
#for res in exe_pool.imap(echo, get_seq_data(config)):
#for res in map(echo, get_seq_data(config)):
#for res in map(get_consensus, get_seq_data(config)):
cns, t_id = res
print ">"+t_id+"|tigcns"
print cns
|