Package abra

Source Code of abra.CombineChimeraTest

/* Copyright 2013 University of North Carolina at Chapel Hill.  All rights reserved. */
package abra;

import static org.testng.Assert.assertEquals;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import net.sf.samtools.SAMRecord;

import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class CombineChimeraTest {
 
  private CombineChimera3 cc;
 
  @BeforeMethod()
  private void setUp() {
    cc = new CombineChimera3();
    cc.minIndelBuffer = 33;
  }

  @Test (groups = "unit")
  public void testInsert() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(6162064, "129S120M", 249));
    reads.add(newRecord(6161985, "79M170S", 249));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 6161985);
    assertEquals(combined.getCigarString(), "79M50I120M");
  }
 
  @Test (groups = "unit")
  public void testOverlappingInsert() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(6161985, "129M120S", 249));
    reads.add(newRecord(6162064, "129S120M", 249));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 6161985);
    assertEquals(combined.getCigarString(), "79M50I120M");
  }
 
  @Test (groups = "unit")
  public void testDelete() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(16085602, "60S65M", 125));
    reads.add(newRecord(16085517, "60M65S", 125));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 16085517);
    assertEquals(combined.getCigarString(), "60M25D65M");
    assertEquals(combined.getReadLength(), 125);
  }
 
  @Test (groups = "unit")
  public void testOverlappingDelete() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(16085605, "49S62M", 111));
    reads.add(newRecord(16085517, "53M58S", 111));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 16085517);
    assertEquals(combined.getCigarString(), "49M39D62M");
    assertEquals(combined.getReadLength(), 111);
  }
 
  @Test (groups = "unit")
  public void testInsertRegionAligned() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(16085517, "200M300S", 500));
    reads.add(newRecord(16085717, "300S200M", 500));
    reads.add(newRecord(33141553, "199S102M199S", 500));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 16085517);
    assertEquals(combined.getCigarString(), "200M100I200M");
  }
 
  @Test (groups = "unit")
  public void testInsertWithPaddingOnRightDueToSNP() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(30726101, "90M94S", 184));
    reads.add(newRecord(30826191, "90S51M43S", 184));
    reads.add(newRecord(30726192, "141S43M", 184));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 30726101);
    assertEquals(combined.getCigarString(), "90M50I44M");
  }
 
  @Test (groups = "unit")
  public void testDistantReadsNotModified() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    reads.add(newRecord(11032656, "63M31S", 94));
    reads.add(newRecord(214990735, "34S60M", 94));
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 2);
    SAMRecord read1 = outputList.get(0);
    SAMRecord read2 = outputList.get(1);
    assertEquals(read1.getAlignmentStart(), 11032656);
    assertEquals(read2.getAlignmentStart(), 214990735);
  }
 
  @Test (groups = "unit")
  public void testHardClipping() {
    List<SAMRecord> reads = new ArrayList<SAMRecord>();
    SAMRecord read1 = newRecord(6169757, "217M75S", 292);
    SAMRecord read2 = newRecord(6170072, "215H77M", 77);
//    reads.add(newRecord(6169757, "217M75S", 292));
//    reads.add(newRecord(6170072, "215H77M", 77));
   
    reads.add(read1);
    reads.add(read2);
   
    List<SAMRecord> outputList = cc.processRead(reads);
    assertEquals(outputList.size(), 1);
    SAMRecord combined = outputList.get(0);
    assertEquals(combined.getAlignmentStart(), 6169757);
    assertEquals(combined.getCigarString(), "215M100D77M");
    assertEquals(read1.getReadLength(), 292);
    assertEquals(read2.getReadLength(), 292);
  }
 
  private SAMRecord newRecord(int pos, String cigar, int length) {
    SAMRecord record = new SAMRecord(null);
    record.setReferenceName("chr21");
    record.setAlignmentStart(pos);
    record.setCigarString(cigar);
    record.setReadNegativeStrandFlag(false);
    char[] bases = new char[length];
    Arrays.fill(bases, 'A');
    record.setReadString(String.valueOf(bases));
    return record;
  }
}
TOP

Related Classes of abra.CombineChimeraTest

TOP
Copyright © 2018 www.massapi.com. 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.