filename.
Perhaps I should have more code checking to make sure its of the form
s_?_eland_result.txt
"""
XML_VERSION = 1
LANE = 'ElandLane'
"""
XML_VERSION = 1
LANE = 'ElandLane'
+ SAMPLE_NAME = 'SampleName'
+ LANE_ID = 'LaneID'
GENOME_MAP = 'GenomeMap'
GENOME_ITEM = 'GenomeItem'
MAPPED_READS = 'MappedReads'
GENOME_MAP = 'GenomeMap'
GENOME_ITEM = 'GenomeItem'
MAPPED_READS = 'MappedReads'
def __init__(self, pathname=None, genome_map=None, xml=None):
self.pathname = pathname
def __init__(self, pathname=None, genome_map=None, xml=None):
self.pathname = pathname
+ self.sample_name = None
+ self.lane_id = None
self._reads = None
self._mapped_reads = {}
self._match_codes = {}
self._reads = None
self._mapped_reads = {}
self._match_codes = {}
if self.pathname is None:
return
if self.pathname is None:
return
+ # extract the sample name
+ path, name = os.path.split(self.pathname)
+ split_name = name.split('_')
+ self.sample_name = split_name[0]
+ self.lane_id = split_name[1]
+
if os.stat(self.pathname)[stat.ST_SIZE] == 0:
raise RuntimeError("Eland isn't done, try again later.")
if os.stat(self.pathname)[stat.ST_SIZE] == 0:
raise RuntimeError("Eland isn't done, try again later.")
lane = ElementTree.Element(ElandLane.LANE,
{'version':
unicode(ElandLane.XML_VERSION)})
lane = ElementTree.Element(ElandLane.LANE,
{'version':
unicode(ElandLane.XML_VERSION)})
+ sample_tag = ElementTree.SubElement(lane, ElandLane.SAMPLE_NAME)
+ sample_tag.text = self.sample_name
+ lane_tag = ElementTree.SubElement(lane, ElandLane.LANE_ID)
+ lane_tag.text = self.lane_id
genome_map = ElementTree.SubElement(lane, ElandLane.GENOME_MAP)
for k, v in self.genome_map.items():
item = ElementTree.SubElement(
genome_map = ElementTree.SubElement(lane, ElandLane.GENOME_MAP)
for k, v in self.genome_map.items():
item = ElementTree.SubElement(
raise ValueError('Exptecting %s' % (ElandLane.LANE,))
for element in tree:
tag = element.tag.lower()
raise ValueError('Exptecting %s' % (ElandLane.LANE,))
for element in tree:
tag = element.tag.lower()
- if tag == ElandLane.GENOME_MAP.lower():
+ if tag == ElandLane.SAMPLE_NAME.lower():
+ self.sample_name = element.text
+ elif tag == ElandLane.LANE_ID.lower():
+ self.lane_id = element.text
+ elif tag == ElandLane.GENOME_MAP.lower():
for child in element:
name = child.attrib['name']
value = child.attrib['value']
for child in element:
name = child.attrib['name']
value = child.attrib['value']
def eland(basedir, gerald=None, genome_maps=None):
e = ELAND()
for pathname in glob(os.path.join(basedir, "*_eland_result.txt")):
def eland(basedir, gerald=None, genome_maps=None):
e = ELAND()
for pathname in glob(os.path.join(basedir, "*_eland_result.txt")):
- # extract the sample name
+ # yes the lane_id is also being computed in ElandLane._update
+ # I didn't want to clutter up my constructor
+ # but I needed to persist the sample_name/lane_id for
+ # runfolder summary_report
path, name = os.path.split(pathname)
split_name = name.split('_')
path, name = os.path.split(pathname)
split_name = name.split('_')
- sample_name = split_name[0]
lane_id = split_name[1]
if genome_maps is not None:
lane_id = split_name[1]
if genome_maps is not None:
for i in range(1,9):
lane = eland[str(i)]
self.failUnlessEqual(lane.reads, 4)
for i in range(1,9):
lane = eland[str(i)]
self.failUnlessEqual(lane.reads, 4)
+ self.failUnlessEqual(lane.sample_name, "s")
+ self.failUnlessEqual(lane.lane_id, unicode(i))
self.failUnlessEqual(len(lane.mapped_reads), 3)
self.failUnlessEqual(lane.mapped_reads['Lambda.fa'], 1)
self.failUnlessEqual(lane.mapped_reads['dm3/chr2L.fa'], 1)
self.failUnlessEqual(len(lane.mapped_reads), 3)
self.failUnlessEqual(lane.mapped_reads['Lambda.fa'], 1)
self.failUnlessEqual(lane.mapped_reads['dm3/chr2L.fa'], 1)
l1 = eland[str(i)]
l2 = e2[str(i)]
self.failUnlessEqual(l1.reads, l2.reads)
l1 = eland[str(i)]
l2 = e2[str(i)]
self.failUnlessEqual(l1.reads, l2.reads)
+ self.failUnlessEqual(l1.sample_name, l2.sample_name)
+ self.failUnlessEqual(l1.lane_id, l2.lane_id)
self.failUnlessEqual(len(l1.mapped_reads), len(l2.mapped_reads))
self.failUnlessEqual(len(l1.mapped_reads), 3)
for k in l1.mapped_reads.keys():
self.failUnlessEqual(len(l1.mapped_reads), len(l2.mapped_reads))
self.failUnlessEqual(len(l1.mapped_reads), 3)
for k in l1.mapped_reads.keys():