func New(model string, configPath string, analysisThreads int) *Analyzer {
	an := &Analyzer{
		model:                  model,
		config:                 configPath,
		analysisThreads:        analysisThreads,
		stdinQuit:              make(chan int),
		stdinWrite:             make(chan string),
		katagoOutput:           make(chan string),
		collectorQuit:          make(chan int),
		outputResultCollection: make(map[string]*AnalysisList),
		outputResultCondition:  sync.NewCond(&sync.Mutex{}),
	}
	an.cmd = an.createCmd()
	return an
}
New creates a new analyzer. Before being used, the Start() must be called.
package katago
import (
	"bufio"
	"io"
	"os/exec"
	"strconv"
	"strings"
	"sync"
	"time"
	"github.com/golang/glog"
)
const katagoReadyStr = "Started, ready to begin handling requests"
const collectorTimeout = 2 * time.Second
const maxCollectorTimeout = 30 * time.Second
type Analyzer struct {
	model string
	config string
	analysisThreads int
	cmd *exec.Cmd
	stdinQuit    chan int
	stdinWrite   chan string
	katagoOutput chan string
	collectorQuit          chan int
	analysisSizeMap        sync.Map
	outputResultCollection map[string]*AnalysisList
	outputResultCondition  *sync.Cond
	bootWait sync.WaitGroup
}