@@ -22,6 +22,8 @@ import (
22
22
"github.com/koeng101/dnadesign/lib/bio/fasta"
23
23
"github.com/koeng101/dnadesign/lib/bio/fastq"
24
24
"github.com/koeng101/dnadesign/lib/bio/slow5"
25
+ "github.com/koeng101/dnadesign/lib/checks"
26
+ "github.com/koeng101/dnadesign/lib/primers"
25
27
"github.com/koeng101/dnadesign/lib/primers/pcr"
26
28
"github.com/koeng101/dnadesign/lib/synthesis/codon"
27
29
"github.com/koeng101/dnadesign/lib/synthesis/fix"
@@ -694,27 +696,60 @@ func (app *App) LuaPcrSimplePcr(L *lua.LState) int {
694
696
}
695
697
696
698
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
698
718
}
699
719
func (app * App ) LuaPcrPrimersDebruijnBarcodes (L * lua.LState ) int { return 0 }
700
720
701
721
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
703
724
}
704
725
func (app * App ) LuaPcrPrimersMarmurDoty (L * lua.LState ) int { return 0 }
705
726
706
727
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
708
731
}
709
732
func (app * App ) LuaPcrPrimersSantaLucia (L * lua.LState ) int { return 0 }
710
733
711
734
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
713
737
}
714
738
func (app * App ) LuaPcrPrimersMeltingTemperature (L * lua.LState ) int { return 0 }
715
739
716
740
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
718
753
}
719
754
func (app * App ) LuaPcrPrimersDesignPrimers (L * lua.LState ) int { return 0 }
720
755
0 commit comments