BGI-shenzhen / LDBlockShow

LDBlockShow: a fast and convenient tool for visualizing linkage disequilibrium and haplotype blocks based on VCF files
MIT License
136 stars 40 forks source link

argument "" isn't numeric in log AND can't take log of 0 #10

Closed lee123lee closed 3 years ago

lee123lee commented 3 years ago

hi, LDBlockShow,

when i run the software, i got the tips:

/##Start Region Cal... :4 27920799 28120799; In This Region TotalSNP Number is 815 find blocks... Warining: SVG module in Perl is missing, trying to loading the built-in [SVG.pm]... Loading SVG module done In Big SNP Number :815 ,Para -NumGradien suggest be maxValue : 20 ,auto be it Start draw... SVG info: SNPNumber :815 , SVG (width,height) = (4686.25,5012.25) Argument "" isn't numeric in log at /home/liling/software/LDBlockShow/bin/ShowLDSVG line 999. Can't take log of 0 at /home/liling/software/LDBlockShow/bin/ShowLDSVG line 999.

I have seen the previous related issues, and i checked my file and argument, but 1) no 0 in my pvalue row. 2) my file is't upload from windows system. 3) I changed my P-value (e.g 9.9E-01 to 9.9e-01) but doesn't work. It is strange that it is work well when I analyze another region using same file. Do you have any suggestions?

my GwasPvalue: ........ 9 290382128 9.9999473386657933e-01 8 266898947 9.9999495277533279e-01 8 266900669 9.9999495277533279e-01 11 344518005 9.9999630054136868e-01 6 193914078 9.9999661058091205e-01 11 339891177 9.9999732210144965e-01 4 143133024 9.9999747570906627e-01 2 52265629 9.9999933256549600e-01 12 359378455 9.9999958203621164e-01 4 135004607 9.9999984697910282e-01 ..........

hewm2008 commented 3 years ago

@lee123lee

A: lines 999 is : $MinP=0-sprintf ("%.2f",(log($MaxP)/log(10))); I thinks in this region the MaxP may be exists 0 , you can awk this region gwas.palvue. and check it cat GwasPvalue.file | awk '$1 ==4 && $2 >=27920799 && $2< 28120799 '

B:

so strange,you can send this region data to my email hewm2008@gmail.com ,I will check for you. file and shell script

C :

I think it may be the effect of the line end of different systems. you can execute the following command dos2unix GwasPvalue.file

also you Reduce your character length change it as

........ 9 290382128 9.99e-01 8 266898947 9.99e-01 8 266900669 9.99e-01 11 344518005 9.98e-01 ..........

lee123lee commented 3 years ago

thank you for reply. I try to send file to you, but the message exceeded Google's message size limits. Can you give me another email address? Or I'll try something else. eg. split the file

hewm2008 commented 3 years ago

you can only give me the region vcf file and region GwasPvalue files ,thes will be small file size

cat GwasPvalue.file | awk '$1 ==4 && $2 >=27920799 && $2< 28120799 '   | gzip  > region.p.gz
cat  In.vcf |head  -10000 |grep "#"   > region.vcf
cat  In.vcf   | awk '$1 ==4 && $2 >=27920799 && $2< 28120799 '    >>  region.vcf
gzip  region.vcf

send me these two small files : region.vcf.gz region.p.gz and your shell script

lee123lee commented 3 years ago

thank you for your help. Interesting, it work when I got the file with a small region. And I don't kown why. I guess that I confuse the position and SNP ID. In the beginning, I treat the SNP ID as site (in GwasPvalue) .file. Some SNP ID and position is same in my case.

hewm2008 commented 3 years ago

I'm glad you can solve the problem; Other info : I think something wrong with your input file GwasPvalue , A :if the file use tab separated ,maybe try to find the maxP minP of pvalue sort -k 3 -g GwasPvalue |head ; sort -k 3 -g -r GwasPvalue |head B: uniq [ chr ID]