Exemple #1
0
 def test_iterate_bed_reader(self, bed_filename):
     bed_path = test_utils.genomics_core_testdata(bed_filename)
     expected = [('chr1', 10, 20), ('chr1', 100, 200)]
     with bed.BedReader(bed_path) as reader:
         records = list(reader.iterate())
     self.assertLen(records, 2)
     self.assertEqual([(r.reference_name, r.start, r.end) for r in records],
                      expected)
Exemple #2
0
    def test_roundtrip_writer(self, filename):
        output_path = test_utils.test_tmpfile(filename)
        with bed.BedWriter(output_path,
                           header=bed_pb2.BedHeader(num_fields=5)) as writer:
            for record in self.records:
                writer.write(record)

        with bed.BedReader(output_path) as reader:
            v2_records = list(reader.iterate())

        self.assertEqual(self.records, v2_records)
Exemple #3
0
  def test_roundtrip_num_fields(self, num_fields):
    all_num_fields_in_file = [
        n for n in _VALID_NUM_BED_FIELDS if n >= num_fields
    ]
    for num_fields_in_file in all_num_fields_in_file:
      lines = ['\t'.join(line[:num_fields_in_file]) for line in self.tokens]
      contents = '{}\n'.format('\n'.join(lines))
      input_path = test_utils.test_tmpfile('test_field.bed', contents=contents)

      with bed.BedReader(input_path, num_fields=num_fields) as reader:
        records = list(reader.iterate())
      output_path = test_utils.test_tmpfile('test_field2.bed')
      with bed.BedWriter(output_path, header=reader.header) as writer:
        for record in records:
          writer.write(record)

      with bed.BedReader(output_path) as reader2:
        v2_records = list(reader2.iterate())

      self.assertLen(records, 3)
      self.assertEqual(records, v2_records)
Exemple #4
0
def bed_parser(filename):
    """Parses Range objects from a BED-formatted file object.

  See http://bedtools.readthedocs.org/en/latest/content/general-usage.html
  for more information on the BED format.

  Args:
    filename: file name of a BED-formatted file.

  Yields:
    nucleus.genomics.v1.Range protobuf objects.
  """
    with bed.BedReader(filename) as fin:
        for r in fin.iterate():
            yield make_range(r.reference_name, r.start, r.end)
Exemple #5
0
 def test_invalid_num_fields(self, invalid_num_fields):
     bed_path = test_utils.genomics_core_testdata('test_regions.bed')
     with self.assertRaisesRegexp(ValueError,
                                  'Invalid requested number of fie'):
         reader = bed.BedReader(bed_path, num_fields=invalid_num_fields)
Exemple #6
0
 def test_native_bed_header(self, bed_filename):
     bed_path = test_utils.genomics_core_testdata(bed_filename)
     with bed.BedReader(bed_path) as reader:
         self.assertEqual(reader.header.num_fields, 12)
     with bed.NativeBedReader(bed_path) as native_reader:
         self.assertEqual(native_reader.header.num_fields, 12)