0
$\begingroup$

These are the list of files

Control_Input_sorted.bam_rem.bam  
Control_H2BUb_sorted.bam_rem.bam  
Control_IgG_sorted.bam_rem.bam 
PTPN6_g2_6_H2Bub_sorted.bam_rem.bam  
PTPN6_g2_6_Input_sorted.bam_rem.bam

So to get unique files i do this

 ls -1 *bam | sort | sed -r 's/_sorted.bam_rem.bam//g' | sort | uniq 
Control_Input
Control_H2BUb
Control_IgG
PTPN6_g2_6_H2Bub
PTPN6_g2_6_Input

Now i have to run each sample against input and IgG for peak-calling. Like Control_H2BUb_sorted.bam_rem.bam against

Contol_Input_sorted.bam_rem.bam & Control_IgG_sorted.bam_rem.bam and 


PTPN6_g2_6_H2Bub_sorted.bam_rem.bam against PTPN6_g2_6_Input_sorted.bam_rem.bam

So how do I parse and execute using gnu parallel.

I came across this tutorial where it does something like this

cat sample_names.txt | parallel --max-procs=12 'macs2 callpeak -t {}-A-NC.sorted.bam \
 -c {}-G-NC.sorted.bam -g hs -n {}-A-NC-sharp-model -q 0.01 --outdir {}-A-NC-sharp-model-peaks 2> {}-A-NC-sharp-model.stderr'

Now im not sure how to pass the file names as argument for IP and Input or IgG.

If i use logic a little bit i have to fix Control and PTPN6_g2_6 as constant naming!.

Any suggestion or help would be really appreciated.

$\endgroup$
1
$\begingroup$

not gnuparallel but nextflow. I don't know macs and what is 'first.bam' and 'second.bam' is not clear not me but I hope you'll get the idea.

The nextflow:

Channel.fromPath(params.bams).splitCsv(header: false,sep:'\t',strip:true).map{T->file(T[0])}.into{bams1;bams2}

boolean isControl(file) {
    return file.name.endsWith("_Input_sorted.bam_rem.bam") || file.name.endsWith("_IgG_sorted.bam_rem.bam ");
    }

bams1.filter{T->isControl(T)}.set{controls}
bams2.filter{T->!isControl(T)}.set{experiment}

process mac {
    maxForks 14
    tag "${bam1} vs ${bam2}"
    input:
        set bam1 , bam2  from experiment.combine(controls)
    output:
        file("output.peaks") into mac_peak
    script:
    """
    # check syntax please
    macs2 callpeak -t {bam1.toRealPath()}  -c ${bam2.toRealPath()} -g hs -n out-model -q 0.01 --outdir output.peaks
    """
    }     

invoke:

find /dir1/dir2 -type f -name "*.bam" > input.list

nextflow run --bams input.list workflow.nf
$\endgroup$
3
  • $\begingroup$ okay let me give it a try first and update you. $\endgroup$
    – kcm
    Mar 2 '20 at 17:23
  • $\begingroup$ my first try ended up like this "Not a valid project name: workflow.nf" I need to read the basics of nextflow $\endgroup$
    – kcm
    Mar 2 '20 at 17:48
  • $\begingroup$ first bam is my Control_H2BUb and PTPN6_g2_6_H2Bub , and it should be compared with samples labelled Control_Input,Control_IgG and PTPN6_g2_6_Input which are second bam. But the catch is the Control lablled samples should always be compared with the control labelled and same goes with PTPN6 labelled $\endgroup$
    – kcm
    Mar 3 '20 at 6:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.