Package net.sf.samtools

Examples of net.sf.samtools.Cigar


 
  private IndelShifter indelShifter = new IndelShifter();

  @Test (groups = "unit" )
  public void testShiftCigarLeft_basic() {
    Cigar cigar = new Cigar();
   
    cigar.add(new CigarElement(10, CigarOperator.M));
    cigar.add(new CigarElement(3, CigarOperator.D));
    cigar.add(new CigarElement(40, CigarOperator.M));
   
    Cigar newCigar;

    newCigar = indelShifter.shiftCigarLeft(cigar, 10);
    Assert.assertEquals(newCigar.toString(), "3D50M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 9);
    Assert.assertEquals(newCigar.toString(), "1M3D49M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 8);
    Assert.assertEquals(newCigar.toString(), "2M3D48M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 4);
    Assert.assertEquals(newCigar.toString(), "6M3D44M");

    newCigar = indelShifter.shiftCigarLeft(cigar, 2);
    Assert.assertEquals(newCigar.toString(), "8M3D42M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 1);
    Assert.assertEquals(newCigar.toString(), "9M3D41M");
  }
View Full Code Here


    Assert.assertEquals(newCigar.toString(), "9M3D41M");
  }
 
  @Test (groups = "unit" )
  public void testShiftCigarLeft_softClipping() {
    Cigar cigar = new Cigar();
   
    cigar.add(new CigarElement(2, CigarOperator.S));
    cigar.add(new CigarElement(6, CigarOperator.M));
    cigar.add(new CigarElement(2, CigarOperator.I));
    cigar.add(new CigarElement(30, CigarOperator.M));
    cigar.add(new CigarElement(10, CigarOperator.S));
   
    Cigar newCigar;

    newCigar = indelShifter.shiftCigarLeft(cigar, 6);
    Assert.assertEquals(newCigar.toString(), "2S2I36M10S");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 5);
    Assert.assertEquals(newCigar.toString(), "2S1M2I35M10S");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 4);
    Assert.assertEquals(newCigar.toString(), "2S2M2I34M10S");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 3);
    Assert.assertEquals(newCigar.toString(), "2S3M2I33M10S");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 2);
    Assert.assertEquals(newCigar.toString(), "2S4M2I32M10S");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 1);
    Assert.assertEquals(newCigar.toString(), "2S5M2I31M10S");
  }
View Full Code Here

    Assert.assertEquals(newCigar.toString(), "2S5M2I31M10S");
  }
 
  @Test (groups = "unit" )
  public void testShiftCigarLeft_insertAtTail() {
    Cigar cigar = new Cigar();
   
    cigar.add(new CigarElement(40, CigarOperator.M));
    cigar.add(new CigarElement(10, CigarOperator.I));
   
    Cigar newCigar;

    newCigar = indelShifter.shiftCigarLeft(cigar, 40);
    Assert.assertEquals(newCigar.toString(), "10I40M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 39);
    Assert.assertEquals(newCigar.toString(), "1M10I39M");

    newCigar = indelShifter.shiftCigarLeft(cigar, 30);
    Assert.assertEquals(newCigar.toString(), "10M10I30M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 1);
    Assert.assertEquals(newCigar.toString(), "39M10I1M");
  }
View Full Code Here

    Assert.assertEquals(newCigar.toString(), "39M10I1M");
  }
 
  @Test (groups = "unit" )
  public void testShiftCigarLeft_multipleIndels() {
    Cigar cigar = new Cigar();
   
    cigar.add(new CigarElement(20, CigarOperator.M));
    cigar.add(new CigarElement(1, CigarOperator.I));
    cigar.add(new CigarElement(5, CigarOperator.M));
    cigar.add(new CigarElement(3, CigarOperator.D));
    cigar.add(new CigarElement(24, CigarOperator.M));
   
    Cigar newCigar;
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 20);
    Assert.assertEquals(newCigar.toString(), "1I5M3D44M");
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 10);
    Assert.assertEquals(newCigar.toString(), "10M1I5M3D34M");

    newCigar = indelShifter.shiftCigarLeft(cigar, 1);
    Assert.assertEquals(newCigar.toString(), "19M1I5M3D25M");
  }
View Full Code Here

  }
 
  @Test (groups = "unit" )
  public void testShiftCigarLeft_complex() {
    //3S69M1I18M1D9M
    Cigar cigar = new Cigar();
   
    cigar.add(new CigarElement(3, CigarOperator.S));
    cigar.add(new CigarElement(69, CigarOperator.M));
    cigar.add(new CigarElement(1, CigarOperator.I));
    cigar.add(new CigarElement(18, CigarOperator.M));
    cigar.add(new CigarElement(1, CigarOperator.D));
    cigar.add(new CigarElement(9, CigarOperator.M));
   
    Cigar newCigar;
   
    newCigar = indelShifter.shiftCigarLeft(cigar, 1);
    Assert.assertEquals(newCigar.toString(), "3S68M1I18M1D10M");
  }
View Full Code Here

    record.setReadBases(newBases);

    byte[] newScores = new byte[newLength];
    System.arraycopy(record.getBaseQualities(), 0, newScores, 0, newLength);

    record.setCigar(new Cigar(newCigarElements));
  }
View Full Code Here

  public static void calculateMdAndNmTags(SAMRecord record, byte[] ref,
      boolean calcMD, boolean calcNM) {
    if (!calcMD && !calcNM)
      return;

    Cigar cigar = record.getCigar();
    List<CigarElement> cigarElements = cigar.getCigarElements();
    byte[] seq = record.getReadBases();
    int start = record.getAlignmentStart() - 1;
    int i, x, y, u = 0;
    int nm = 0;
    StringBuffer str = new StringBuffer();
View Full Code Here

  private static final Cigar getCigar2(Collection<ReadFeature> features,
      int readLength) {
    if (features == null || features.isEmpty()) {
      CigarElement ce = new CigarElement(readLength, CigarOperator.M);
      return new Cigar(Arrays.asList(ce));
    }

    List<CigarElement> list = new ArrayList<CigarElement>();
    int totalOpLen = 1;
    CigarElement ce;
    CigarOperator lastOperator = CigarOperator.MATCH_OR_MISMATCH;
    int lastOpLen = 0;
    int lastOpPos = 1;
    CigarOperator co = null;
    int rfLen = 0;
    for (ReadFeature f : features) {

      int gap = f.getPosition() - (lastOpPos + lastOpLen);
      if (gap > 0) {
        if (lastOperator != CigarOperator.MATCH_OR_MISMATCH) {
          list.add(new CigarElement(lastOpLen, lastOperator));
          lastOpPos += lastOpLen;
          totalOpLen += lastOpLen;
          lastOpLen = gap;
        } else {
          lastOpLen += gap;
        }

        lastOperator = CigarOperator.MATCH_OR_MISMATCH;
      }

      switch (f.getOperator()) {
      case Insertion.operator:
        co = CigarOperator.INSERTION;
        rfLen = ((Insertion) f).getSequence().length;
        break;
      case SoftClip.operator:
        co = CigarOperator.SOFT_CLIP;
        rfLen = ((SoftClip) f).getSequence().length;
        break;
      case HardClip.operator:
        co = CigarOperator.HARD_CLIP ;
        rfLen = ((HardClip) f).getSequence().length;
        break;
      case InsertBase.operator:
        co = CigarOperator.INSERTION;
        rfLen = 1;
        break;
      case Deletion.operator:
        co = CigarOperator.DELETION;
        rfLen = ((Deletion) f).getLength();
        break;
      case RefSkip.operator:
        co = CigarOperator.SKIPPED_REGION;
        rfLen = ((RefSkip) f).getLength();
        break;
      case Padding.operator:
        co = CigarOperator.PADDING ;
        rfLen = ((Padding) f).getLength();
        break;
      case Substitution.operator:
      case ReadBase.operator:
        co = CigarOperator.MATCH_OR_MISMATCH;
        rfLen = 1;
        break;
      default:
        continue;
      }

      if (lastOperator != co) {
        // add last feature
        if (lastOpLen > 0) {
          list.add(new CigarElement(lastOpLen, lastOperator));
          totalOpLen += lastOpLen;
        }
        lastOperator = co;
        lastOpLen = rfLen;
        lastOpPos = f.getPosition();
      } else
        lastOpLen += rfLen;

      if (!co.consumesReadBases())
        lastOpPos -= rfLen;
    }

    if (lastOperator != null) {
      if (lastOperator != CigarOperator.M) {
        list.add(new CigarElement(lastOpLen, lastOperator));
        if (readLength >= lastOpPos + lastOpLen) {
          ce = new CigarElement(readLength - (lastOpLen + lastOpPos)
              + 1, CigarOperator.M);
          list.add(ce);
        }
      } else if (readLength > lastOpPos - 1) {
        ce = new CigarElement(readLength - lastOpPos + 1,
            CigarOperator.M);
        list.add(ce);
      }
    }

    if (list.isEmpty()) {
      ce = new CigarElement(readLength, CigarOperator.M);
      return new Cigar(Arrays.asList(ce));
    }

    return new Cigar(list);
  }
View Full Code Here

TOP

Related Classes of net.sf.samtools.Cigar

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.