Documentation
¶
Overview ¶
Package xyz implements access to read and write xyz content.
References:
http://openbabel.org/wiki/XYZ_%28format%29
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrElementSymbol occurs when the symbol is unrecognized. ErrElementSymbol = errors.New("xyz: elements atomic symbol is unrecognized") // ErrElementNumber occurs when the given atomic number is out of range. ErrElementNumber = errors.New("xyz: elements atomic number is out of range") )
View Source
var ( // ErrInvalidMolecule is returned when the given molecule input isn't valid. ErrInvalidMolecule = errors.New("xyz: input is not a valid molecule") )
Functions ¶
This section is empty.
Types ¶
type Decoder ¶
type Decoder struct {
// contains filtered or unexported fields
}
Decoder reads and decodes lists of molecules.
Example ¶
package main import ( "bytes" "fmt" "github.com/larzconwell/xyz" "io" ) func main() { buf := bytes.NewBufferString(`5 Methane molecule C 0.000000 0.000000 0.000000 H 0.000000 0.000000 1.089000 H 1.026719 0.000000 -0.363000 H -0.513360 -0.889165 -0.363000 H -0.513360 0.889165 -0.363000 3 Water molecule O 0.00000 0.00000 0.00000 H 0.75700 0.58600 0.00000 H -0.75700 0.58600 0.00000`) decoder := xyz.NewDecoder(buf) for { molecule, err := decoder.Decode() if err == io.EOF { break } if err != nil { panic(err) } fmt.Println(molecule.Comment) for _, atom := range molecule.Atoms { fmt.Println(atom.Element, atom.X, atom.Y, atom.Z) } } }
Output:
func NewDecoder ¶
NewDecoder returns a decoder reading from the given reader.
The decoder is buffered and may read data beyond the molecule data requests.
type Element ¶
type Element int
Element is a single elements atomic number.
func ParseElement ¶
ParseElement parses the element from a slice of bytes. It recognizes both atomic numbers and atomic symbols.
type Encoder ¶
type Encoder struct {
// contains filtered or unexported fields
}
Encoder writes and encodes lists of molecules.
Example ¶
package main import ( "bytes" "github.com/larzconwell/xyz" "io" "os" ) func main() { molecule := &xyz.Molecule{ Comment: "Water molecule", Atoms: []*xyz.Atom{ {8, 0.00000, 0.00000, 0.00000}, {1, 0.75700, 0.58600, 0.00000}, {1, -0.075700, 0.58600, 0.00000}, }, } var buf bytes.Buffer encoder := xyz.NewEncoder(&buf) err := encoder.Encode(molecule) if err != nil { panic(err) } io.Copy(os.Stdout, &buf) }
Output:
func NewEncoder ¶
NewEncoder creates an encoder writing to writer.
Click to show internal directories.
Click to hide internal directories.