2017-01-25 3 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

Да, я использую Comparator для списка сортировки –

+0

Можете ли вы разместить код вашего компаратора, пожалуйста? – beeb

ответ

0

Используйте очень образец использовать и преобразовывать код

Старый Код:

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

Новый код:

if (distance == distance1) 
     return 1; 
else 
     return -1; 
Смежные вопросы