private static VCFContigHeaderLine makeContigHeaderLine(final SAMSequenceRecord contig, final String assembly) { final Map<String, String> map = new LinkedHashMap<>(3); map.put("ID", contig.getSequenceName()); map.put("length", String.valueOf(contig.getSequenceLength())); if (assembly != null) map.put("assembly", assembly); return new VCFContigHeaderLine(map, contig.getSequenceIndex()); }
public final SAMSequenceRecord clone() { final SAMSequenceRecord ret = new SAMSequenceRecord(this.mSequenceName, this.mSequenceLength); ret.mSequenceIndex = this.mSequenceIndex; for (final Map.Entry<String, String> entry : this.getAttributes()) { ret.setAttribute(entry.getKey(), entry.getValue()); } return ret; }
public String getAssembly() { return (String) getAttribute(ASSEMBLY_TAG); } public void setAssembly(final String value) { setAttribute(ASSEMBLY_TAG, value); }
@Override public String toString() { return String.format( "SAMSequenceRecord(name=%s,length=%s,dict_index=%s,assembly=%s)", getSequenceName(), getSequenceLength(), getSequenceIndex(), getAssembly() ); }
protected String getSQLine(final SAMSequenceRecord sequenceRecord) { final int numAttributes = sequenceRecord.getAttributes() != null ? sequenceRecord.getAttributes().size() : 0; final String[] fields = new String[3 + numAttributes]; fields[0] = HEADER_LINE_START + HeaderRecordType.SQ; fields[1] = SAMSequenceRecord.SEQUENCE_NAME_TAG + TAG_KEY_VALUE_SEPARATOR + sequenceRecord.getSequenceName(); fields[2] = SAMSequenceRecord.SEQUENCE_LENGTH_TAG + TAG_KEY_VALUE_SEPARATOR + Integer.toString(sequenceRecord.getSequenceLength()); encodeTags(sequenceRecord, fields, 3); return StringUtil.join(FIELD_SEPARATOR, fields); }
@Override public ReferenceSequence nextSequence() { SAMSequenceRecord sequence = sequenceRecordIterator.next(); return getSubsequenceAt(sequence.getSequenceName(), 1L, sequence.getSequenceLength()); }
/** * @return the name of reference sequence */ public String getSequenceName() { return referenceSequence.getSequenceName(); }
/** * Checks if reference sequence is compatible with BAI indexing format. * @param sequence reference sequence. */ public static boolean isReferenceSequenceCompatibleWithBAI(final SAMSequenceRecord sequence) { return sequence.getSequenceLength() > GenomicIndexUtil.BIN_GENOMIC_SPAN; } }
@Test(dataProvider = "illegalSequenceNames", expectedExceptions = SAMException.class) public void testIllegalSequenceNames(final String sequenceName){ new SAMSequenceRecord(sequenceName,100); } }
/** * @return the index of reference sequence */ @Override public int getSequenceIndex() { return referenceSequence.getSequenceIndex(); }
@Override public synchronized ReferenceRegion getRegion(SAMSequenceRecord record, int start_1based, int endInclusive_1based) throws IOException { int zbInclusiveStart = start_1based - 1; int zbExlcusiveEnd = endInclusive_1based; return new ReferenceRegion(Arrays.copyOfRange(ref, zbInclusiveStart, zbExlcusiveEnd), sequenceRecord.getSequenceIndex(), sequenceRecord.getSequenceName(), start_1based); } };
/** * Creates a GenomeLoc than spans the entire contig. * @param contigName Name of the contig. * @return A locus spanning the entire contig. */ @Requires("contigName != null") @Ensures("result != null") public GenomeLoc createOverEntireContig(final String contigName) { SAMSequenceRecord contig = getContigInfo().getSequence(contigName); return createGenomeLoc(contigName,contig.getSequenceIndex(),1,contig.getSequenceLength(), true); }
@Test public void testSetHeaderStrictValidNewHeader() { final SAMRecord sam = createTestRecordHelper(); final String origSequenceName = sam.getContig(); final SAMFileHeader origSamHeader = sam.getHeader(); final int origSequenceLength = origSamHeader.getSequence(origSequenceName).getSequenceLength(); final SAMFileHeader newHeader = new SAMFileHeader(); newHeader.addSequence(new SAMSequenceRecord(origSequenceName, origSequenceLength)); // force re-resolution of the reference name against the new header sam.setHeaderStrict(newHeader); Assert.assertEquals(sam.getReferenceIndex(), new Integer(0)); }
public SAMSequenceRecord getSAMSequenceRecord() { final String lengthString = this.getGenericFieldValue("length"); if (lengthString == null) throw new TribbleException("Contig " + this.getID() + " does not have a length field."); final SAMSequenceRecord record = new SAMSequenceRecord(this.getID(), Integer.valueOf(lengthString)); record.setAssembly(this.getGenericFieldValue("assembly")); record.setSequenceIndex(this.contigIndex); return record; }
@Test public void testGetSAMString() { final SAMSequenceRecord r = new SAMSequenceRecord("chr5_but_without_a_prefix", 271828); r.setSpecies("Psephophorus terrypratchetti"); r.setAssembly("GRCt01"); r.setMd5("7a6dd3d307de916b477e7bf304ac22bc"); Assert.assertEquals("@SQ\tSN:chr5_but_without_a_prefix\tLN:271828\tSP:Psephophorus terrypratchetti\tAS:GRCt01\tM5:7a6dd3d307de916b477e7bf304ac22bc", r.getSAMString()); }
public SAMSequenceRecord getSAMSequenceRecord() { final String lengthString = this.getGenericFieldValue("length"); if (lengthString == null) throw new TribbleException("Contig " + this.getID() + " does not have a length field."); final SAMSequenceRecord record = new SAMSequenceRecord(this.getID(), Integer.valueOf(lengthString)); record.setSequenceIndex(this.contigIndex); return record; }
@Test public void testSetAndCheckDescription() { final SAMSequenceRecord record = new SAMSequenceRecord("Test", 1000); Assert.assertNull(record.getDescription()); final String description = "A description."; record.setDescription(description); Assert.assertEquals(record.getDescription(), description); }
/** Set the sequence dictionary entries for the index property list. */ @Override public void setIndexSequenceDictionary(final SAMSequenceDictionary dict) { for (final SAMSequenceRecord seq : dict.getSequences()) { final String contig = SEQUENCE_DICTIONARY_PROPERTY_PREDICATE + seq.getSequenceName(); final String length = String.valueOf(seq.getSequenceLength()); addProperty(contig,length); } } }
@Override public String toString() { return String.format( "SAMSequenceRecord(name=%s,length=%s,dict_index=%s,assembly=%s)", getSequenceName(), getSequenceLength(), getSequenceIndex(), getAssembly() ); } }
public static Set<String> getContigNames(SAMSequenceDictionary dict) { final Set<String> contigNames = new HashSet<String>(Utils.optimumHashSize(dict.size())); for (SAMSequenceRecord dictionaryEntry : dict.getSequences()) contigNames.add(dictionaryEntry.getSequenceName()); return contigNames; }