/// <summary>
 /// Register the specified analysis.
 /// </summary>
 /// <param name="analysis">Analysis.</param>
 public override void Register(BaseAnalysis analysis)
 {
     this.RegisterProperty(analysis, "MapFileName", x => this.MapFileName                               = x);
     this.RegisterProperty(analysis, "MapFileLinkType", x => this.MapFileLinkType                       = x);
     this.RegisterProperty(analysis, "MapFileMaxRange", x => this.MapFileMaxRange                       = x);
     this.RegisterProperty(analysis, "MapFilePromoterRange", x => this.MapFilePromoterRange             = x);
     this.RegisterProperty(analysis, "MapFileConfidenceThreshold", x => this.MapFileConfidenceThreshold = x);
 }
        /// <summary>
        /// Reflects the string arguments.
        /// </summary>
        /// <param name="analysis">Analysis.</param>
        /// <param name="args">Arguments.</param>
        protected void ReflectStringArgs(BaseAnalysis analysis, TArgEnum[] args)
        {
            var argEnumAsString = args.Select(x => x.ToString()).ToList();
            var registeredArgs  = analysis.ElementArgRegistry
                                  .Where(x => argEnumAsString.Contains(x.Key)).ToList();

            foreach (var arg in registeredArgs)
            {
                arg.Value(this.CommandArgs.StringArgs[arg.Key]);
            }

            var unregisteredArgs = args.Where(x => !analysis.ElementArgRegistry.ContainsKey(x.ToString())).ToArray();

            this.ReflectStringArgs((object)analysis, unregisteredArgs);
        }
 /// <summary>
 /// Registers the property.
 /// </summary>
 /// <param name="analysis">Analysis.</param>
 /// <param name="name">Name.</param>
 /// <param name="action">Action.</param>
 protected void RegisterProperty(BaseAnalysis analysis, string name, Action <string> action)
 {
     analysis.ElementArgRegistry.Add(this.PropertyPrefix + name, action);
 }
 /// <summary>
 /// Register the specified analysis.
 /// </summary>
 /// <param name="analysis">Analysis.</param>
 public abstract void Register(BaseAnalysis analysis);
 /// <summary>
 /// Register the specified analysis.
 /// </summary>
 /// <param name="analysis">Analysis.</param>
 public override void Register(BaseAnalysis analysis)
 {
     analysis.ElementArgRegistry.Add("LocusFileName", (val) => this.LocusFileName = val);
 }