@@ -655,22 +655,22 @@ def merge_fastq(self, inputs, output, run=False, remove_inputs=False):
655
655
656
656
def count_lines (self , file_name ):
657
657
"""
658
- Uses the command-line utility wc to count the number of lines in a file.
658
+ Uses the command-line utility wc to count the number of lines in a file. For MacOS, must strip leading whitespace from wc.
659
659
660
660
:param file_name: name of file whose lines are to be counted
661
661
:type file_name: str
662
662
"""
663
- x = subprocess .check_output ("wc -l " + file_name + " | cut -f1 -d' '" , shell = True )
664
- return x
663
+ x = subprocess .check_output ("wc -l " + file_name + " | sed -E 's/^[[:space:]]+//' | cut -f1 -d' '" , shell = True )
664
+ return x . strip ()
665
665
666
666
def count_lines_zip (self , file_name ):
667
667
"""
668
- Uses the command-line utility wc to count the number of lines in a file.
668
+ Uses the command-line utility wc to count the number of lines in a file. For MacOS, must strip leading whitespace from wc.
669
669
For compressed files.
670
670
:param file: file_name
671
671
"""
672
- x = subprocess .check_output ("gunzip -c " + file_name + " | wc -l | cut -f1 -d' '" , shell = True )
673
- return x
672
+ x = subprocess .check_output ("gunzip -c " + file_name + " | wc -l | sed -E 's/^[[:space:]]+//' | cut -f1 -d' '" , shell = True )
673
+ return x . strip ()
674
674
675
675
def get_chrs_from_bam (self , file_name ):
676
676
"""
@@ -701,10 +701,10 @@ def count_unique_reads(self, file_name, paired_end):
701
701
if file_name .endswith ("bam" ):
702
702
param = ""
703
703
if paired_end :
704
- r1 = self .samtools_view (file_name , param = param + " -f64" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l " )
705
- r2 = self .samtools_view (file_name , param = param + " -f128" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l " )
704
+ r1 = self .samtools_view (file_name , param = param + " -f64" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//' " )
705
+ r2 = self .samtools_view (file_name , param = param + " -f128" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//' " )
706
706
else :
707
- r1 = self .samtools_view (file_name , param = param + "" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l " )
707
+ r1 = self .samtools_view (file_name , param = param + "" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//' " )
708
708
r2 = 0
709
709
return int (r1 ) + int (r2 )
710
710
@@ -733,11 +733,11 @@ def count_unique_mapped_reads(self, file_name, paired_end):
733
733
else :
734
734
raise ValueError ("Not a SAM or BAM: '{}'" .format (file_name ))
735
735
736
- if paired_end :
737
- r1 = self .samtools_view (file_name , param = param + " -f64" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l " )
738
- r2 = self .samtools_view (file_name , param = param + " -f128" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l " )
736
+ if paired_end :
737
+ r1 = self .samtools_view (file_name , param = param + " -f64" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//' " )
738
+ r2 = self .samtools_view (file_name , param = param + " -f128" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//' " )
739
739
else :
740
- r1 = self .samtools_view (file_name , param = param + "" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l " )
740
+ r1 = self .samtools_view (file_name , param = param + "" , postpend = " | cut -f1 | sort -k1,1 -u | wc -l | sed -E 's/^[[:space:]]+//' " )
741
741
r2 = 0
742
742
743
743
return int (r1 ) + int (r2 )
@@ -867,7 +867,8 @@ def count_concordant(self, aligned_bam):
867
867
:type aligned_bam: str
868
868
"""
869
869
cmd = self .tools .samtools + " view " + aligned_bam + " | "
870
- cmd += "grep 'YT:Z:CP'" + " | uniq -u | wc -l"
870
+ cmd += "grep 'YT:Z:CP'" + " | uniq -u | wc -l | sed -E 's/^[[:space:]]+//'"
871
+
871
872
return subprocess .check_output (cmd , shell = True )
872
873
873
874
0 commit comments