Converts track metadata to a `TracksMetadata` protobuf message. Args: metadata: A pandas DataFrame containing track metadata, with the following required columns: name, strand. Returns: A `TracksMetadata` protobuf message.
(
metadata: track_data.TrackMetadata,
)
| 94 | |
| 95 | |
| 96 | def metadata_to_proto( |
| 97 | metadata: track_data.TrackMetadata, |
| 98 | ) -> dna_model_pb2.TracksMetadata: |
| 99 | """Converts track metadata to a `TracksMetadata` protobuf message. |
| 100 | |
| 101 | Args: |
| 102 | metadata: A pandas DataFrame containing track metadata, with the following |
| 103 | required columns: name, strand. |
| 104 | |
| 105 | Returns: |
| 106 | A `TracksMetadata` protobuf message. |
| 107 | """ |
| 108 | names = metadata['name'] |
| 109 | default_values = [None] * len(names) |
| 110 | |
| 111 | columns = zip( |
| 112 | metadata['name'], |
| 113 | metadata['strand'], |
| 114 | metadata.get('ontology_curie', default_values), |
| 115 | metadata.get('biosample_type', default_values), |
| 116 | metadata.get('biosample_name', default_values), |
| 117 | metadata.get('biosample_life_stage', default_values), |
| 118 | metadata.get('transcription_factor', default_values), |
| 119 | metadata.get('histone_mark', default_values), |
| 120 | metadata.get('gtex_tissue', default_values), |
| 121 | metadata.get('Assay title', default_values), |
| 122 | metadata.get('data_source', default_values), |
| 123 | metadata.get('genetically_modified', default_values), |
| 124 | metadata.get('endedness', default_values), |
| 125 | metadata.get('nonzero_mean', default_values), |
| 126 | strict=True, |
| 127 | ) |
| 128 | |
| 129 | metadata_protos = [] |
| 130 | for ( |
| 131 | name, |
| 132 | strand, |
| 133 | ontology_curie, |
| 134 | biosample_type, |
| 135 | biosample_name, |
| 136 | biosample_life_stage, |
| 137 | transcription_factor, |
| 138 | histone_mark, |
| 139 | gtex_tissue, |
| 140 | assay, |
| 141 | data_source, |
| 142 | genetically_modified, |
| 143 | endedness, |
| 144 | nonzero_mean, |
| 145 | ) in columns: |
| 146 | if biosample_type: |
| 147 | biosample = dna_model_pb2.Biosample( |
| 148 | name=biosample_name, |
| 149 | type=dna_model_pb2.BiosampleType.Value( |
| 150 | f'BIOSAMPLE_TYPE_{biosample_type.upper()}' |
| 151 | ), |
| 152 | stage=biosample_life_stage, |
| 153 | ) |