Documentation
¶
Overview ¶
Package config is for app wide settings
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // Primer3Config is the path to a primer3 config directory // primer3 is (overly) particular about the trailing slash Primer3Config = filepath.Join(reppDir, "primer3_config") + string(os.PathSeparator) // FeatureDB is the path to the features file FeatureDB = filepath.Join(reppDir, "features.json") // EnzymeDB is the path to the enzymes file EnzymeDB = filepath.Join(reppDir, "enzymes.json") // SeqDatabaseDir is the path to a directory of sequence databases. SeqDatabaseDir = filepath.Join(reppDir, "dbs") // SeqDatabaseManifest is the path to the manifest file for the sequence databases. SeqDatabaseManifest = filepath.Join(SeqDatabaseDir, "manifest.json") )
var ( // DefaultConfig is the initiate client config that's embedded with repp // and installed on the first run //go:embed config.yaml DefaultConfig []byte // DefaultEnzymes is the JSON file of default enzymes embedded with repp //go:embed enzymes.json DefaultEnzymes []byte // DefaultFeatures is the JSON file of default features embedded with repp //go:embed features.json DefaultFeatures []byte // DefaultPrimer3Config is the FS of Primer3, needed to run primer3_core, etc //go:embed primer3_config primer3_config/interpretations DefaultPrimer3Config embed.FS )
Functions ¶
Types ¶
type Config ¶
type Config struct {
// the config file's version
Version string `mapstructure:"version"`
// the cost of each Gibson Assembly
GibsonAssemblyCost float64 `mapstructure:"gibson-assembly-cost"`
// the cost of time for each Gibson Assembly
GibsonAssemblyTimeCost float64 `mapstructure:"gibson-assembly-time-cost"`
// the cost per bp of synthesized DNA as a fragment (as a step function)
SyntheticFragmentCost map[int]SynthCost `mapstructure:"synthetic-fragment-cost"`
// the cost per bp of synthesized clonal DNA (delivered in a plasmid)
SyntheticPlasmidCost map[int]SynthCost `mapstructure:"synthetic-plasmid-cost"`
// the maximum number of fragments in the final assembly
FragmentsMaxCount int `mapstructure:"fragments-max-count"`
// the minimum homology between this fragment and the net one
FragmentsMinHomology int `mapstructure:"fragments-min-junction-length"`
// maximum length of homology between two adjacent fragments in bp
FragmentsMaxHomology int `mapstructure:"fragments-max-junction-length"`
// maximum allowable hairpin melting temperature (celcius)
FragmentsMaxHairpinMelt float64 `mapstructure:"fragments-max-junction-hairpin"`
// the cost per bp of primer DNA
PcrBpCost float64 `mapstructure:"pcr-bp-cost"`
// the cost of each PCR reaction
PcrRxnCost float64 `mapstructure:"pcr-rxn-cost"`
// the cost of time for each PCR reaction
PcrTimeCost float64 `mapstructure:"pcr-time-cost"`
// PcrMinLength is the minimum size of a fragment (used to filter BLAST results)
PcrMinLength int `mapstructure:"pcr-min-length"`
// the maximum primer3 score allowable
PcrPrimerMaxPairPenalty float64 `mapstructure:"pcr-primer-max-pair-penalty"`
// the maximum length of a sequence to embed up or downstream of an amplified sequence
PcrPrimerMaxEmbedLength int `mapstructure:"pcr-primer-max-embed-length"`
// PcrPrimerMaxOfftargetTm is the maximum tm of an offtarget, above which PCR is abandoned
PcrPrimerMaxOfftargetTm float64 `mapstructure:"pcr-primer-max-ectopic-tm"`
// PcrBufferLength is the length of buffer from the ends of a match in which
// to allow Primer3 to look for a primer
PcrBufferLength int `mapstructure:"pcr-buffer-length"`
// minimum length of a synthesized piece of DNA
SyntheticMinLength int `mapstructure:"synthetic-min-length"`
// maximum length of a synthesized piece of DNA
SyntheticMaxLength int `mapstructure:"synthetic-max-length"`
}
Config is the Root-level settings struct and is a mix of settings available in config.yaml and those available from the command line
func New ¶
func New() *Config
New returns a new Config struct populated by settings from config.yaml, in the repo, or some other settings file the user points to with the "--config" command
TODO: check for and error out on nonsense config values TODO: add back the config file path setting
func (*Config) SynthFragmentCost ¶
SynthFragmentCost returns the cost of synthesizing a linear stretch of DNA
func (*Config) SynthPlasmidCost ¶
SynthPlasmidCost returns the cost of synthesizing the insert and having it delivered in a plasmid
type SynthCost ¶
type SynthCost struct {
// whether it's a fixed or variable cost
Fixed bool `mapstructure:"fixed"`
// the cost (either per bp or for the whole stretch)
Cost float64 `mapstructure:"cost"`
}
SynthCost contains data of the cost of synthesizing DNA up to a certain size. Can be fixed (ie everything beneath that limit is the same amount) or not (pay by the bp)