Skip to content

Commit 4682693

Browse files
committed
updated version ready for master merging
1 parent 934001c commit 4682693

2 files changed

Lines changed: 9 additions & 194 deletions

File tree

Snakefile-run_tools

Lines changed: 3 additions & 188 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ def interval_extract(L, r=20):
9494

9595
rule all:
9696
input:
97-
# [config['references'][s]['desalt_idx'] for s in config['references']],
9897
expand('{}/{{sample}}.{{mapper}}.{{extension}}'.format(preprocess_d),
9998
sample=config['samples'],
10099
mapper=config['mappers'],
@@ -244,7 +243,7 @@ rule freddie_split:
244243
conda:
245244
config['conda_env_names']['freddie']
246245
threads:
247-
64
246+
32
248247
wildcard_constraints:
249248
mapper='desalt|minimap2'
250249
shell:
@@ -261,7 +260,7 @@ rule freddie_segment:
261260
conda:
262261
config['conda_env_names']['freddie']
263262
threads:
264-
64
263+
32
265264
wildcard_constraints:
266265
mapper='desalt|minimap2'
267266
shell:
@@ -280,7 +279,7 @@ rule freddie_cluster:
280279
conda:
281280
config['conda_env_names']['freddie']
282281
threads:
283-
64
282+
32
284283
wildcard_constraints:
285284
mapper='desalt|minimap2'
286285
shell:
@@ -438,114 +437,6 @@ rule tool_bed:
438437
bed_file.close()
439438

440439

441-
# rule segment_bed:
442-
# input:
443-
# segment_dir = '{}/{{sample}}/{{mapper}}/freddie/segment'.format(workspace_d),
444-
# output:
445-
# bed = '{}/{{sample}}/{{mapper}}/segment.bed'.format(graphs_d)
446-
# resources:
447-
# mem = "64G",
448-
# time = 179,
449-
# run:
450-
# segment_isoforms = dict()
451-
# tint_segs = dict()
452-
# for segment_tsv in glob.iglob('{}/*/segment_*.tsv'.format(input.segment_dir)):
453-
# for line in open(segment_tsv):
454-
# line = line.rstrip().split('\t')
455-
# if line[0][0]=='#':
456-
# segs = [int(i) for i in line[2].split(',')]
457-
# segs = list(zip(segs[:-1],segs[1:]))
458-
# contig = line[0][1:]
459-
# if not contig in tint_segs:
460-
# segment_isoforms[contig] = dict()
461-
# tint_segs[contig] = dict()
462-
# tint = line[1]
463-
# tint_segs[contig][tint] = segs
464-
# continue
465-
# rname = line[1]
466-
# contig = line[2]
467-
# tint = line[4]
468-
# iid = rname.split('_')[0]
469-
# data = line[5]
470-
# if not tint in segment_isoforms[contig]:
471-
# segment_isoforms[contig][tint] = dict()
472-
# if not iid in segment_isoforms[contig][tint]:
473-
# segment_isoforms[contig][tint][iid] = dict(cov=[0 for _ in data], count=0)
474-
# assert len(data) == len(segment_isoforms[contig][tint][iid]['cov'])
475-
# segment_isoforms[contig][tint][iid]['count']+=1
476-
# for idx,d in enumerate(data):
477-
# segment_isoforms[contig][tint][iid]['cov'][idx] += (d =='1')
478-
# bed_file = open(output.bed, 'w+')
479-
# for contig,tints in segment_isoforms.items():
480-
# for tint,isoforms in tints.items():
481-
# for iid,isoform in isoforms.items():
482-
# if isoform['count'] < 3:
483-
# continue
484-
# cons = [(c/isoform['count'])>0.3 for c in isoform['cov']]
485-
# assert len(tint_segs[contig][tint])==len(cons)
486-
# for d, group in itertools.groupby(enumerate(cons), lambda x: x[1]):
487-
# if d != True:
488-
# continue
489-
# group = list(group)
490-
# f_seg_idx = group[0][0]
491-
# l_seg_idx = group[-1][0]
492-
# s = tint_segs[contig][tint][f_seg_idx][0]
493-
# e = tint_segs[contig][tint][l_seg_idx][1]
494-
# bed_file.write('{}\t{}\t{}\tsegment_{}_{}_{}\n'.format(contig, s, e, contig, tint, iid))
495-
# bed_file.close()
496-
497-
# rule genome_bed:
498-
# input:
499-
# bam = '{}/{{sample}}.{{mapper}}.bam'.format(preprocess_d),
500-
# genome = lambda wildcards: config['references'][config['samples'][wildcards.sample]['ref']]['genome'],
501-
# output:
502-
# bed = temp('{}/{{sample}}/{{mapper}}/genome.{{contig}}.bed'.format(graphs_d))
503-
# resources:
504-
# mem_mb = 16384,
505-
# time = 59,
506-
# run:
507-
# contig = wildcards.contig
508-
# isoforms = dict()
509-
# for read in pysam.AlignmentFile(input.bam).fetch(contig=contig):
510-
# if read.is_unmapped:
511-
# continue
512-
# iid = read.query_name.split('_')[0]
513-
# if not iid in isoforms:
514-
# isoforms[iid] = dict(read_count=0, pos_count=dict(), intervals=list())
515-
# isoforms[iid]['read_count']+=1
516-
# intervals = list(interval_extract(read.get_reference_positions(), r=20))
517-
# assert len(read.get_reference_positions())<=sum(e-s+1 for s,e in intervals) <= read.reference_end-read.reference_start, (
518-
# len(read.get_reference_positions()),
519-
# sum(e-s+1 for s,e in intervals),
520-
# read.reference_end-read.reference_start,
521-
# read.cigartuples,
522-
# read.query_name,
523-
# )
524-
# for s,e in intervals:
525-
# for p in range(s,e+1):
526-
# isoforms[iid]['pos_count'][p] = isoforms[iid]['pos_count'].get(p,0) + 1
527-
528-
# bed_file = open(output.bed, 'w+')
529-
# for iid,isoform in isoforms.items():
530-
# if isoform['read_count'] < 3:
531-
# continue
532-
# positions = list()
533-
# for p,c in isoform['pos_count'].items():
534-
# if c > isoform['read_count']/3.0:
535-
# positions.append(p)
536-
# positions.sort()
537-
# for k, g in itertools.groupby(enumerate(positions), lambda t: t[1] - t[0]):
538-
# g = list(g)
539-
# isoform['intervals'].append((g[0][1], g[-1][1]+1))
540-
# isoform['intervals'] = isoform['intervals']
541-
# if len(isoform['intervals']) == 0:
542-
# continue
543-
# isoform_name = 'genome_{}_{}'.format(contig, iid)
544-
# for s,e in isoform['intervals']:
545-
# bed_file.write('{}\t{}\t{}\t{}\n'.format(contig, s, e, isoform_name))
546-
# bed_file.close()
547-
548-
549440

550441
rule truth_and_isoform_baselines:
551442
input:
@@ -734,82 +625,6 @@ rule bed_overlaps_truth:
734625
' cut -f1,4,8 | '
735626
' sort -u > {output.overlaps_tsv}'
736627

737-
# rule bed_overlaps_troth:
738-
# input:
739-
# tool_bed = '{}/{{sample}}/{{mapper}}/{{tool}}.bed'.format(graphs_d),
740-
# truth_bed = '{}/{{sample}}/{{mapper}}/troth.bed'.format(graphs_d),
741-
# output:
742-
# overlaps_tsv = '{}/{{sample}}/{{mapper}}/{{tool}}.overlaps.tsv'.format(graphs_d),
743-
# wildcard_constraints:
744-
# sample = '$^|'+'|'.join(re.escape(s) for s in real_samples)
745-
# shell:
746-
# 'bedtools intersect -a {input.tool_bed} -b <(cat {input.tool_bed} {input.truth_bed}) -wa -wb | '
747-
# ' cut -f1,4,8 | '
748-
# ' sort -u > {output.overlaps_tsv}'
749-
750-
# rule troth:
751-
# input:
752-
# bam = '{}/{{sample}}.{{mapper}}.bam'.format(preprocess_d),
753-
# gtf = lambda wildcards: config['references'][config['samples'][wildcards.sample]['ref']]['annot'],
754-
# genome = lambda wildcards: config['references'][config['samples'][wildcards.sample]['ref']]['genome'],
755-
# output:
756-
# truth_bed = temp('{}/{{sample}}/{{mapper}}/troth.{{contig}}.bed'.format(graphs_d)),
757-
# run:
758-
# dna = pyfasta.Fasta(input.genome)
759-
# contig_to_key = {k.split()[0]:k for k in dna.keys()}
760-
# pos_to_cov = [0 for _ in range(len(dna[contig_to_key[wildcards.contig]]))]
761-
# for read in pysam.AlignmentFile(input.bam, 'rb').fetch(contig=wildcards.contig):
762-
# for p in read.get_reference_positions():
763-
# pos_to_cov[p]+=1
764-
# tids = dict()
765-
# for l in open(input.gtf):
766-
# if l[0]=='#':
767-
# continue
768-
# l = l.rstrip().split('\t')
769-
# if l[0] != wildcards.contig:
770-
# continue
771-
# start = int(l[3])
772-
# end = int(l[4])
773-
# strand = l[6]
774-
# info = l[8]
775-
# info = [x.strip().split(' ') for x in info.strip(';').split(';')]
776-
# info = {x[0]:x[1].strip('"') for x in info}
777-
# if l[2]=='transcript':
778-
# tids[info['transcript_id']]= dict(
779-
# exons = list(),
780-
# contig= l[0],
781-
# strand= strand,
782-
# )
783-
# elif l[2] == 'exon' and info['transcript_id'] in tids:
784-
# tids[info['transcript_id']]['exons'].append((start,end))
785-
786-
# final_tids = list()
787-
# for tid,d in tids.items():
788-
# covered = 0
789-
# length = 1
790-
# for s,e in d['exons']:
791-
# length += (e-s)
792-
# for p in range(s,e):
793-
# covered += pos_to_cov[p] >= 3
794-
# if covered/length > .90:
795-
# final_tids.append((tid,d))
796-
# tids = sorted((
797-
# v['contig'],
798-
# v['exons'][0][0],
799-
# k,
800-
# sorted(v['exons'])
801-
# ) for k,v in final_tids)
802-
# out_bed = open(output.truth_bed, 'w+')
803-
# for c,_,tid,exons in tids:
804-
# for s,e in exons:
805-
# out_bed.write('{}\t{}\t{}\ttroth_{}\n'.format(
806-
# c,
807-
# s,
808-
# e,
809-
# tid,
810-
# ))
811-
# out_bed.close()
812-
813628
rule bed_merge:
814629
input:
815630
lambda wildcards: ['{}/{{sample}}/{{mapper}}/{{tool}}.{}.bed'.format(graphs_d,c)

config.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ exec:
1717
bam2Bed12 : extern/flair/bin/bam2Bed12.py
1818

1919
samples:
20-
# ERR3588905_sim:
21-
# ref : drosophila_melanogaster
22-
# seq_type : ont1d
23-
# reads_info : extern/LTR-sim/output/reads/ERR3588905.L-non.tsv
24-
# reads :
25-
# - extern/LTR-sim/output/reads/ERR3588905.L-non.fastq
20+
ERR3588905_sim:
21+
ref : drosophila_melanogaster
22+
seq_type : ont1d
23+
reads_info : extern/LTR-sim/output/reads/ERR3588905.L-non.tsv
24+
reads :
25+
- extern/LTR-sim/output/reads/ERR3588905.L-non.fastq
2626
DHp_select:
2727
ref : homo_sapiens_select_genes
2828
seq_type : ont1d

0 commit comments

Comments
 (0)