2017-01-25 50 views
1

我很抱歉,但我一直無法解決我自己運行MuTect的問題。我不確定是否有我的論點或我的輸入或甚至java本身的問題。我收到此錯誤。比較方法違反其總合同! (TimSort)

Error processing 1:12855123 
    java.lang.IllegalArgumentException: Comparison method violates its general contract! 
    at java.util.TimSort.mergeLo(TimSort.java:747) 
    at java.util.TimSort.mergeAt(TimSort.java:483) 
    at java.util.TimSort.mergeCollapse(TimSort.java:410) 
    at java.util.TimSort.sort(TimSort.java:214) 
    at java.util.TimSort.sort(TimSort.java:173) 
    at java.util.Arrays.sort(Arrays.java:659) 
    at java.util.Collections.sort(Collections.java:217) 
    at org.broadinstitute.cga.tools.gatk.walkers.cancer.mutect.MuTectWalker.map(MuTectWalker.java:664) 
    at org.broadinstitute.cga.tools.gatk.walkers.cancer.mutect.MuTectWalker.map(MuTectWalker.java:34) 
    at org.broadinstitute.sting.gatk.traversals.TraverseLoci.traverse(TraverseLoci.java:77) 
    at org.broadinstitute.sting.gatk.traversals.TraverseLoci.traverse(TraverseLoci.java:18) 
    at org.broadinstitute.sting.gatk.executive.LinearMicroScheduler.execute(LinearMicroScheduler.java:61) 
    at org.broadinstitute.sting.gatk.GenomeAnalysisEngine.execute(GenomeAnalysisEngine.java:225) 
    at org.broadinstitute.sting.gatk.CommandLineExecutable.execute(CommandLineExecutable.java:104) 
    at org.broadinstitute.sting.commandline.CommandLineProgram.start(CommandLineProgram.java:227) 
    at org.broadinstitute.sting.gatk.CommandLineGATK.main(CommandLineGATK.java:89) 

我的代碼:

Comparator<OfferInfo> comparator = new ComparaterClosesyTOMe(); 

    public class ComparaterClosesyTOMe implements Comparator<OfferInfo> { 
     @Override 
     public int compare(OfferInfo arg0, OfferInfo arg1) { 

      double distance = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg0.latitude, arg0.longitude, "M"); 
      double distance1 = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg1.latitude, arg1.longitude, "M"); 

      if (distance > distance1) 
       return 1; 
      else 
       return -1; 

     } 
    } 
+0

您是否使用自定義的「比較器」? – beeb

+0

是的,我已經使用比較器進行排序 –

+0

您可以發佈您的比較器的代碼嗎? – beeb

回答

0

使用非常樣品使用,並轉換代碼

舊代碼:

if (distance > distance1) 
    return 1; 
else 
    return -1; 

新代碼:

if (distance == distance1) 
     return 1; 
else 
     return -1; 
相關問題