Skip to content

Commit d383019

Browse files
committed
add endpoints for primers
1 parent 2230f92 commit d383019

File tree

4 files changed

+192
-113
lines changed

4 files changed

+192
-113
lines changed

api/api/api.go

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"github.com/koeng101/dnadesign/lib/bio/fasta"
2323
"github.com/koeng101/dnadesign/lib/bio/fastq"
2424
"github.com/koeng101/dnadesign/lib/bio/slow5"
25+
"github.com/koeng101/dnadesign/lib/checks"
26+
"github.com/koeng101/dnadesign/lib/primers"
2527
"github.com/koeng101/dnadesign/lib/primers/pcr"
2628
"github.com/koeng101/dnadesign/lib/synthesis/codon"
2729
"github.com/koeng101/dnadesign/lib/synthesis/fix"
@@ -694,27 +696,60 @@ func (app *App) LuaPcrSimplePcr(L *lua.LState) int {
694696
}
695697

696698
func (app *App) PostPcrPrimersDebruijnBarcodes(ctx context.Context, request gen.PostPcrPrimersDebruijnBarcodesRequestObject) (gen.PostPcrPrimersDebruijnBarcodesResponseObject, error) {
697-
return nil, nil
699+
input := *request.Body
700+
barcodeLength := input.BarcodeLength
701+
maxSubSequence := input.MaxSubSequence
702+
var bannedSequences []string
703+
if input.BannedSequences != nil {
704+
bannedSequences = *input.BannedSequences
705+
}
706+
minGcContent := input.GcRange.MinGc
707+
maxGcContent := input.GcRange.MaxGc
708+
709+
gcBarcodeFunc := func(barcodeToCheck string) bool {
710+
gcContent := float32(checks.GcContent(barcodeToCheck))
711+
if gcContent < minGcContent || gcContent > maxGcContent {
712+
return false
713+
}
714+
return true
715+
}
716+
barcodes := primers.CreateBarcodesWithBannedSequences(barcodeLength, maxSubSequence, bannedSequences, []func(string) bool{gcBarcodeFunc})
717+
return gen.PostPcrPrimersDebruijnBarcodes200JSONResponse(barcodes), nil
698718
}
699719
func (app *App) LuaPcrPrimersDebruijnBarcodes(L *lua.LState) int { return 0 }
700720

701721
func (app *App) PostPcrPrimersMarmurDoty(ctx context.Context, request gen.PostPcrPrimersMarmurDotyRequestObject) (gen.PostPcrPrimersMarmurDotyResponseObject, error) {
702-
return nil, nil
722+
input := *request.Body
723+
return gen.PostPcrPrimersMarmurDoty200JSONResponse(primers.MarmurDoty(input.Sequence)), nil
703724
}
704725
func (app *App) LuaPcrPrimersMarmurDoty(L *lua.LState) int { return 0 }
705726

706727
func (app *App) PostPcrPrimersSantaLucia(ctx context.Context, request gen.PostPcrPrimersSantaLuciaRequestObject) (gen.PostPcrPrimersSantaLuciaResponseObject, error) {
707-
return nil, nil
728+
input := *request.Body
729+
meltingTemp, dH, dS := primers.SantaLucia(input.Sequence, float64(input.PrimerConcentration), float64(input.SaltConcentration), float64(input.MagnesiumConcentration))
730+
return gen.PostPcrPrimersSantaLucia200JSONResponse{MeltingTemp: float32(meltingTemp), DH: float32(dH), DS: float32(dS)}, nil
708731
}
709732
func (app *App) LuaPcrPrimersSantaLucia(L *lua.LState) int { return 0 }
710733

711734
func (app *App) PostPcrPrimersMeltingTemperature(ctx context.Context, request gen.PostPcrPrimersMeltingTemperatureRequestObject) (gen.PostPcrPrimersMeltingTemperatureResponseObject, error) {
712-
return nil, nil
735+
input := *request.Body
736+
return gen.PostPcrPrimersMeltingTemperature200JSONResponse(primers.MeltingTemp(input.Sequence)), nil
713737
}
714738
func (app *App) LuaPcrPrimersMeltingTemperature(L *lua.LState) int { return 0 }
715739

716740
func (app *App) PostPcrPrimersDesignPrimers(ctx context.Context, request gen.PostPcrPrimersDesignPrimersRequestObject) (gen.PostPcrPrimersDesignPrimersResponseObject, error) {
717-
return nil, nil
741+
input := *request.Body
742+
sequence := input.Sequence
743+
targetTm := float64(input.TargetTm)
744+
var forwardOverhang, reverseOverhang string
745+
if input.ForwardOverhang != nil {
746+
forwardOverhang = *input.ForwardOverhang
747+
}
748+
if input.ReverseOverhang != nil {
749+
reverseOverhang = *input.ReverseOverhang
750+
}
751+
forward, reverse := pcr.DesignPrimersWithOverhangs(sequence, forwardOverhang, reverseOverhang, targetTm)
752+
return gen.PostPcrPrimersDesignPrimers200JSONResponse{ForwardPrimer: forward, ReversePrimer: reverse}, nil
718753
}
719754
func (app *App) LuaPcrPrimersDesignPrimers(L *lua.LState) int { return 0 }
720755

api/gen/dnadesign-server.gen.go

Lines changed: 96 additions & 87 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)