public async Task IndexSnp(SnpSource source, Snp snp) { if (Genes == null) { Genes = await Database.GetAllGene(); } var doi = source.Study?.Doi; SnpData snpData = SnpData.FromSnp(snp); if (doi != null) { var citation = await DoiClient.GetCitation(doi); if (citation != null) { snpData.Annotations.Add(new SnpData.Annotation { Study = citation, Lineage = snp.Attributes.GetValueOrDefault("lineage") }); } } ; snpData = snpData with { Gene = Genes .FirstOrDefault(v => v.Position <snp.Position && v.Position + v.Length> snp.Position) }; await Database.Index(snpData); }