Skip to content

Commit

Permalink
chore: #1294: Get and store genotypes.
Browse files Browse the repository at this point in the history
  • Loading branch information
zabeen committed May 1, 2024
1 parent 6ce207b commit 46fde83
Show file tree
Hide file tree
Showing 29 changed files with 3,393 additions and 65 deletions.
56 changes: 56 additions & 0 deletions Atlas.ManualTesting.Common/Services/HttpRequester.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using Newtonsoft.Json;
using Polly;

namespace Atlas.ManualTesting.Common.Services
{
public class AtlasHttpResult<TResult>
{
public bool WasSuccess => Result != null;
public TResult? Result { get; set; }

public AtlasHttpResult(TResult? result)
{
Result = result;
}
}

public abstract class AtlasHttpRequester
{
private readonly HttpClient httpRequestClient;
private readonly string requestUrl;

protected AtlasHttpRequester(HttpClient httpRequestClient, string requestUrl)
{
this.httpRequestClient = httpRequestClient;
this.requestUrl = requestUrl;
}

protected async Task<AtlasHttpResult<TResult>> PostRequest<TRequest, TResult>(TRequest request)
{
var retryPolicy = Policy.Handle<Exception>().RetryAsync(10);

var requestResponse = await retryPolicy.ExecuteAndCaptureAsync(
async () => await SendRequest<TRequest, TResult>(request));

return new AtlasHttpResult<TResult>(requestResponse.Result);
}

private async Task<TResult?> SendRequest<TRequest, TResult>(TRequest request)
{
try
{
var response = await httpRequestClient.PostAsync(
requestUrl, new StringContent(JsonConvert.SerializeObject(request)));
response.EnsureSuccessStatusCode();

return JsonConvert.DeserializeObject<TResult>(await response.Content.ReadAsStringAsync());
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Failed to send request {request}. Details: {ex.Message} " +
"Re-attempting until success or re-attempt count reached.");
throw;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class GenotypeImputationFunctions
{
HlaTyping = input.SubjectInfo.HlaTyping.ToPhenotypeInfo().PrettyPrint(),
MatchPredictionParameters = input.MatchPredictionParameters,
HaplotypeFrequencySet = frequencySet,
HaplotypeFrequencySet = frequencySet.ToClientHaplotypeFrequencySet(),
GenotypeCount = imputedGenotypes.GenotypeLikelihoods.Count,
SumOfLikelihoods = imputedGenotypes.SumOfLikelihoods,
GenotypeLikelihoods = imputedGenotypes.GenotypeLikelihoods.ToSingleDelimitedString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public class MatchCalculationFunctions
subjectResult.IsUnrepresented,
subjectResult.GenotypeCount,
subjectResult.SumOfLikelihoods,
set,
set.ToClientHaplotypeFrequencySet(),
subjectInfo.HlaTyping.ToPhenotypeInfo().PrettyPrint());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)

modelBuilder.Entity<HomeworkSet>().SetUpModel();
modelBuilder.Entity<PatientDonorPair>().SetUpModel();
modelBuilder.Entity<ImputationSummary>().SetUpModel();
modelBuilder.Entity<SubjectGenotype>().SetUpModel();

base.OnModelCreating(modelBuilder);
}
Expand All @@ -47,5 +49,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)

public DbSet<HomeworkSet> HomeworkSets { get; set; }
public DbSet<PatientDonorPair> PatientDonorPairs { get; set; }
public DbSet<ImputationSummary> ImputationSummaries { get; set; }
public DbSet<SubjectGenotype> SubjectGenotypes { get; set; }
}
}
Loading

0 comments on commit 46fde83

Please sign in to comment.