github.com/vertgenlab/gonomics@v1.0.0/cmd/gsw/cmdGraph.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "os" 7 ) 8 9 // Genome Graph Gonomics. 10 func usage() { 11 fmt.Print( 12 "GSW - Graph Smith Waterman:\n\nGenome Graph Software\n" + 13 "Author: Eric Au\n\tCraig Lowe\n\n" + 14 "Vertebrate Genetics Laboratory: http://www.vertgenlab.org\n" + 15 "Source code: https://github.com/vertgenlab/gonomics\n" + 16 "Documents: https://github.com/vertgenlab/vglDocumentation\n\n" + 17 "Version: 0.1.0\n\n" + 18 "Usage:\n" + 19 " gsw [options]\n\n" + 20 "Options:\n") 21 alignUsage() 22 ggToolsUsage() 23 viewUsage() 24 helpMessage() 25 flagsPrint() 26 } 27 28 func main() { 29 flag.Usage = usage 30 if len(os.Args) < 2 { 31 usage() 32 } else { 33 switch os.Args[1] { 34 case "align": 35 if len(os.Args) == 2 { //2 ./gsw align, this catch makes it equivalent to gsw align -h includes the name first command 36 alignUsage() 37 extendedAlignUsage() 38 } else { 39 RunAlignExe() 40 } 41 case "ggtools": 42 RunGgTools() 43 case "view": 44 RunViewExe() 45 case "help": 46 extendHelpMsg.Parse(os.Args[2:]) 47 moreHelp(os.Args[2]) 48 default: 49 errorMessage() 50 } 51 } 52 } 53 54 /* 55 func main() { 56 if err := root(os.Args[1:]); err != nil { 57 fmt.Println(err) 58 os.Exit(1) 59 } 60 }*/ 61 62 /* 63 } else if strings.Compare(cmdName, "ggTools") == 0 { 64 answer += "\nggTools: utilities to create, manipulate and operate on genome graphs\n" + 65 "\nTo create genome graph reference w/ vcf file:\n" + 66 "./gsw --ggTools --vcf SNPsIndels.vcf genome.fa\n\n" + 67 "usage:\t./gsw --ggTools [options] ref.[.gg/.fa]\n\n" + 68 "\t--vcf\tSNPsIndels.vcf --out ref.gg ref.fa\n\n" + 69 "\t--split\t--out genome_[chr1, chr2, chr3 ...].gg\n" + 70 "\t\tgraph reference split by chromosome\n\n" + 71 "\t--merge\t--out merge.sam chr1.sam chr2.sam chr3.sam ...\n" + 72 "\t\tmerge split by chromosome sam files into one\n" + 73 "\t\tfinds best alignment for each read\n\n" + 74 "\t--axt\tgenomes.axt --out SNPsIndels.vcf ref.fa\n" + 75 "\t\tuse axt alignment to create VCF: small SNPs and indels\n\n" + 76 "\t--fa\t--out graph.fa ref.gg\n" + 77 "\t\tgenome graph to fasta format\n\n" + 78 "\t--slurm\tbeta: submit GSW command as a slurm job\n" + 79 "\t\tdefault settings are: --mem=32G, --ntasks=1, --cpus-per-task=8\n\n" 80 //"\t--kent\tkentUtils - ucsc\n\n" 81 } else if strings.Compare(cmdName, "view") == 0 { 82 answer += "GSW - genome graph toolkit:\n\n" + "Visualize Alignment\n\n" + "usage:" + 83 "\t./gsw --view [options] graph.sam ref.[.gg/.fa]\n\n" + 84 "\t--out\tdefault: /dev/stdout\n" + 85 "\t\tnotes.txt\n\n" //+ 86 //"\tscores\tprint score matrix options\n\n" 87 } else if strings.Compare(cmdName, "axt") == 0 { 88 answer += 89 "\t./gsw --out SNPsIndels.vcf ref.fa\n\n" 90 } else { 91 errorMessage() 92 //log.Fatalf("Error: Apologies, your command prompt was not recognized...\n\t\t\t\t\t\t\t\t-xoxo GG") 93 } 94 fmt.Print(answer) 95 } 96 97 98 //TODO: Will remove to a personal script 99 func slurm() { 100 //set basic commands for now: 101 slurmJob := "sbatch" 102 args := []string{"--mem=32G", "--nodes=1", "--ntasks=1", "--cpus-per-task=8"} 103 //, "--mail-type=END,FAIL", "--mail-user=eric.au@duke.edu" 104 var gswCommand []string 105 var wrapPrompt string = "--wrap=\"" 106 107 for _, cmds := range os.Args { 108 if !strings.Contains(cmds, "slurm") { 109 gswCommand = append(gswCommand, cmds) 110 } 111 } 112 wrapPrompt += strings.Join(gswCommand, " ") + "\"" 113 args = append(args, wrapPrompt) 114 echo := slurmJob + " " + strings.Join(args, " ") 115 log.Printf("\n\nSlurm job submission:\n\n%s\n\n", echo) 116 cmd := exec.Command(slurmJob, args...) 117 cmdOutput := &bytes.Buffer{} 118 cmd.Stdout = cmdOutput 119 err := cmd.Run() 120 if err != nil { 121 os.Stderr.WriteString(err.Error() + "\n") 122 } 123 fmt.Print(string(cmdOutput.Bytes()) + "\n") 124 } 125 }*/