func main() { pdbf1, chain1, s1, e1 := util.Arg(0), util.Arg(1), util.Arg(2), util.Arg(3) pdbf2, chain2, s2, e2 := util.Arg(4), util.Arg(5), util.Arg(6), util.Arg(7) entry1 := util.PDBRead(pdbf1) entry2 := util.PDBRead(pdbf2) s1n, e1n := util.ParseInt(s1), util.ParseInt(e1) s2n, e2n := util.ParseInt(s2), util.ParseInt(e2) r, err := pdb.RMSD( entry1, chain1[0], s1n, e1n, entry2, chain2[0], s2n, e2n) util.Assert(err) fmt.Println(r) }
func main() { entry := util.PDBRead(flag.Arg(0)) if len(flagChain) > 0 { if len(flagChain) != 1 { util.Fatalf("Chain identifiers must be a single character.") } chain := entry.Chain(flagChain[0]) if chain == nil { util.Fatalf("Could not find chain '%c' in PDB entry '%s'.", chain.Ident, entry.Path) } showMapping(chain, chain.SequenceAtoms()) } else { for _, chain := range entry.Chains { showMapping(chain, chain.SequenceAtoms()) } } }
func main() { libPath := util.Arg(0) chain := util.Arg(1) pdbEntryPath := util.Arg(2) bowOut := util.Arg(3) lib := util.StructureLibrary(libPath) entry := util.PDBRead(pdbEntryPath) thechain := entry.Chain(chain[0]) if thechain == nil || !thechain.IsProtein() { util.Fatalf("Could not find chain with identifier '%c'.", chain[0]) } bow := bow.BowerFromChain(thechain).StructureBow(lib) if bowOut == "--" { fmt.Println(bow) } else { util.BowWrite(util.CreateFile(bowOut), bow) } }
func main() { pdbFiles := util.RecursiveFiles(util.FlagPdbDir) files := make([]string, 0, flagNum) for i := 0; i < flagNum; i++ { var index int = -1 for index == -1 || !util.IsPDB(pdbFiles[index]) { // not guaranteed to terminate O_O index = rand.Intn(len(pdbFiles)) } files = append(files, pdbFiles[index]) pdbFiles = append(pdbFiles[:index], pdbFiles[index+1:]...) } for _, f := range files { if flagPaths { fmt.Println(f) } else { e := util.PDBRead(f) fmt.Printf("%s%c\n", strings.ToLower(e.IdCode), e.Chains[0].Ident) } } }
func main() { lib = util.StructureLibrary(util.Arg(0)) pdbEntry := util.PDBRead(util.Arg(1)) if util.NArg() == 2 { for _, chain := range pdbEntry.Chains { atoms := chain.CaAtoms() bestFragsForRegion(chain, atoms, 0, len(atoms)) } } else { chainId := util.Arg(2) chain := pdbEntry.Chain(chainId[0]) if chain == nil || !chain.IsProtein() { util.Fatalf("Could not find protein chain with id '%c'.", chainId) } atoms := chain.CaAtoms() if util.NArg() == 3 { bestFragsForRegion(chain, atoms, 0, len(atoms)) } else { if util.NArg() != 5 { log.Println("Both a start and end must be provided.") util.Usage() } s, e := util.Arg(3), util.Arg(4) sn, en := util.ParseInt(s)-1, util.ParseInt(e) if en-sn < lib.FragmentSize() { util.Fatalf("The range [%s, %s] specifies %d alpha-carbon "+ "atoms while at least %d alpha-carbon atoms are required "+ "for the given fragment library.", s, e, en-sn, lib.FragmentSize()) } bestFragsForRegion(chain, atoms, sn, en) } } }
func main() { pdbEntry := util.PDBRead(flag.Arg(0)) fasEntries := make([]seq.Sequence, 0, 5) if !flagSeparateChains { var fasEntry seq.Sequence if len(pdbEntry.Chains) == 1 { fasEntry.Name = chainHeader(pdbEntry.OneChain()) } else { fasEntry.Name = fmt.Sprintf("%s", strings.ToLower(pdbEntry.IdCode)) } seq := make([]seq.Residue, 0, 100) for _, chain := range pdbEntry.Chains { if isChainUsable(chain) { seq = append(seq, chain.Sequence...) } } fasEntry.Residues = seq if len(fasEntry.Residues) == 0 { util.Fatalf("Could not find any amino acids.") } fasEntries = append(fasEntries, fasEntry) } else { for _, chain := range pdbEntry.Chains { if !isChainUsable(chain) { continue } fasEntry := seq.Sequence{ Name: chainHeader(chain), Residues: chain.Sequence, } fasEntries = append(fasEntries, fasEntry) } } if len(fasEntries) == 0 { util.Fatalf("Could not find any chains with amino acids.") } var fasOut io.Writer if flag.NArg() == 1 { fasOut = os.Stdout } else { if len(flagSplit) > 0 { util.Fatalf("The '--split' option is incompatible with a single " + "output file.") } fasOut = util.CreateFile(util.Arg(1)) } if len(flagSplit) == 0 { util.Assert(fasta.NewWriter(fasOut).WriteAll(fasEntries), "Could not write FASTA file '%s'", fasOut) } else { for _, entry := range fasEntries { fp := path.Join(flagSplit, fmt.Sprintf("%s.fasta", entry.Name)) out := util.CreateFile(fp) w := fasta.NewWriter(out) util.Assert(w.Write(entry), "Could not write to '%s'", fp) util.Assert(w.Flush(), "Could not write to '%s'", fp) } } }