def cat_counter_references(counter_references=None, target_dir=curdir, path_to_bowtie2='bowtie2', logger=None, **kwargs): if counter_references is None: return try: makedirs(target_dir, mode=0755) except OSError: pass debug('Validating counter-references and building counter-reference index') valid_references = validate_references(references=counter_references, target_dir=target_dir, path_to_bowtie2=path_to_bowtie2, logger=logger, environ_key= 'SOT_DEFAULT_COUNTER_REFERENCES') crefs_fa = open(join(target_dir, 'counter_references.fa'), 'w') for ref in valid_references: Popen([path_to_bowtie2 + '-inspect', ref], stdout=crefs_fa).wait() crefs_index = join(target_dir, counter_references) args = [path_to_bowtie2 + '-build', crefs_fa, crefs_index] P = Popen(args, stderr=PIPE) stderr = P.communicate()[1] if stderr.startswith('Error'): critical(stderr) critical('No counter-references will be used.') return crefs_index
def validate_references(references=None, path_to_bowtie2='bowtie2', logger=None, environ_key='SOT_DEFAULT_REFERENCES', target_dir=curdir, **kwargs): makedirs(target_dir, mode=0755) debug('Validating references') new_references = [] if references is None: if environ_key in environ: references = environ[environ_key].split() else: critical('no reference genomes specified') return [] for r in references: bowtie2_index = find_bowtie2_index(r, path_to_bowtie2=path_to_bowtie2) if bowtie2_index is None: if exists(r): debug('Attempting to build bowtie2 index from %s' % r) new_index = fasta_to_bowtie2(r, target_dir=target_dir, path_to_bowtie2=path_to_bowtie2) if new_index is not None: new_references.append(new_index) continue else: critical('Failed to build bowtie2 index.') critical('bowtie2 could not find the index for %s', r) critical('we will not align to %s', r) else: new_references.append(bowtie2_index) return new_references
def validate_references(references=None, path_to_bwa='bwa', logger=None, environ_key='SOT_DEFAULT_REFERENCES', target_dir=curdir, **kwargs): ## Make the output directory, complain if we fail #if os.path.exists(target_dir): # debug('Output directory %s already exists', target_dir) #else: # debug('Creating directory "%s"', target_dir) # makedirs(target_dir, mode=0755) # if not os.path.exists(target_dir): # raise IOError('Could not create directory %s' % target_dir) debug('Validating references') new_references = [] if references is None: if environ_key in environ: references = environ[environ_key].split() else: critical('no reference genomes specified') return [] for r in references: if exists(r): if not all(map(exists, [r + '.amb', r + '.ann', r + '.bwt', r + '.pac', r + '.sa'])): info('Attempting to build bwa index from %s' % r) new_index = fasta_to_bwa(r, target_dir=target_dir, path_to_bwa=path_to_bwa) if new_index is not None: new_references.append(new_index) continue else: critical('Failed to build bwa index.') else: debug('Found bwa index for %s' % r) new_references.append(r) else: critical('bwa could not find the reference %s', r) critical('we will not align to %s', r) return new_references