def _add_format_fields(schema, formats, allow_incompatible_schema=False):
    # type: (bigquery.TableFieldSchema, Dict[str, _Format], bool) -> None
    for field in schema.fields:
        if field.name in _CONSTANT_CALL_FIELDS:
            continue
        if (field.name in list(vcf_reserved_fields.FORMAT_FIELDS.keys())
                and not allow_incompatible_schema):
            reserved_definition = vcf_reserved_fields.FORMAT_FIELDS.get(
                field.name)
            _validate_reserved_field(field, reserved_definition)
            formats.update({
                field.name:
                vcf_header_io.CreateFormatField(
                    field.name, reserved_definition.num,
                    reserved_definition.type,
                    _remove_special_characters(field.description
                                               or reserved_definition.desc))
            })
        else:
            formats.update({
                field.name:
                vcf_header_io.CreateFormatField(
                    field.name,
                    bigquery_util.get_vcf_num_from_bigquery_schema(
                        field.mode, field.type),
                    bigquery_util.get_vcf_type_from_bigquery_type(field.type),
                    _remove_special_characters(field.description))
            })
def _add_info_fields(field, infos, allow_incompatible_schema=False):
    # type: (bigquery.TableFieldSchema, Dict[str, _Info], bool) -> None
    if field.name == bigquery_util.ColumnKeyConstants.ALTERNATE_BASES:
        _add_info_fields_from_alternate_bases(field, infos,
                                              allow_incompatible_schema)
    elif (field.name in list(vcf_reserved_fields.INFO_FIELDS.keys())
          and not allow_incompatible_schema):
        reserved_definition = vcf_reserved_fields.INFO_FIELDS.get(field.name)
        _validate_reserved_field(field, reserved_definition)
        infos.update({
            field.name:
            vcf_header_io.CreateInfoField(
                field.name, reserved_definition.num, reserved_definition.type,
                _remove_special_characters(field.description
                                           or reserved_definition.desc))
        })
    else:
        infos.update({
            field.name:
            vcf_header_io.CreateInfoField(
                field.name,
                bigquery_util.get_vcf_num_from_bigquery_schema(
                    field.mode, field.type),
                bigquery_util.get_vcf_type_from_bigquery_type(field.type),
                _remove_special_characters(field.description))
        })
Beispiel #3
0
  def test_get_vcf_num_from_bigquery_schema(self):
    self.assertEqual('.',
                     bigquery_util.get_vcf_num_from_bigquery_schema(
                         bigquery_util.TableFieldConstants.MODE_REPEATED,
                         bigquery_util.TableFieldConstants.TYPE_INTEGER))

    self.assertEqual(1,
                     bigquery_util.get_vcf_num_from_bigquery_schema(
                         bigquery_util.TableFieldConstants.MODE_NULLABLE,
                         bigquery_util.TableFieldConstants.TYPE_INTEGER))
    self.assertEqual(0,
                     bigquery_util.get_vcf_num_from_bigquery_schema(
                         bigquery_util.TableFieldConstants.MODE_NULLABLE,
                         bigquery_util.TableFieldConstants.TYPE_BOOLEAN))
    self.assertEqual(
        0,
        bigquery_util.get_vcf_num_from_bigquery_schema(
            bigquery_mode=None,
            bigquery_type=bigquery_util.TableFieldConstants.TYPE_BOOLEAN))