https://github.com/danporter/dansfunctions
Collection of useful functions
https://github.com/danporter/dansfunctions
Last synced: about 1 year ago
JSON representation
Collection of useful functions
- Host: GitHub
- URL: https://github.com/danporter/dansfunctions
- Owner: DanPorter
- Created: 2021-02-02T11:59:14.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-02-02T12:12:29.000Z (over 5 years ago)
- Last Synced: 2025-02-08T09:45:39.313Z (over 1 year ago)
- Language: Python
- Size: 23.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# dansfunctions
Various useful functions in python
By Dan Porter, PhD
2021
#### Usage:
```python
import dansfunctions
dansfunctions.fg # module of general mathematical, vector and string format functions
dansfunctions.fp # module of matplotlib shortcuts
dansfunctions.widgets # module of tkinter shortcuts
```
##### Requirements: *numpy*
##### Optional requirements: *matplotlib*, *tkinter*
## dansfunctions/functions_general.py
Version: 2.0.0 (02/Feb/2021)
#### Methods:
`ang(a, b, deg=False)` *Returns the angle, in Radians between vectors a and b*
`array_str(A)` *Returns a short string with array information*
`cart2sph(xyz, deg=False)` *Convert coordinates in cartesian to coordinates in spherical*
`cell(lengths=[1, 1, 1], rotation=[0, 0, 0])` *Returns a unit CELL with vectors defined by length and rotation (Deg)*
`complex2str(val, fmt='6.1f')` *Convert complex number to string*
`detail(A)` *Prints details about the given vector,*
`distance2line(line_start, line_end, point)` *Calculate distance from a line between the start and end to an arbitary point in space*
`find_index(A, value)` *Return the index of the closest number in array A to value*
`find_vector(A, V, difference=0.01)` *Return the index(s) of vectors in array A within difference of vector V*
`findranges(scannos, sep=':')` *Convert a list of numbers to a simple string*
`frange(start, stop=None, step=1)` *Returns a list of floats from start to stop in step increments*
`gauss(x, y=None, height=1, cen=0, fwhm=0.5, bkg=0)` *Define Gaussian distribution in 1 or 2 dimensions*
`get_methods(object, include_special=True)` *Returns a list of methods (functions) within object*
`grid_intensity(points, values, resolution=0.01, peak_width=0.1, background=0)` *Generates array of intensities along a spaced grid, equivalent to a powder pattern.*
`group(A, tolerance=0.0001)` *Group similear values in an array, returning the group and indexes*
`index_coordinates(A, CELL)` *Index A(x1,y1,1) on new coordinate system B(x2,y2,z2), defined by unit vectors CELL = [A,B,C]*
`inline_help(func, markdown=False)` *Return function spec and first line of help in line*
`isincell(A, cell_centre=[0, 0, 0], CELL=array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]))` *Return boolean of whether vector xyx is inside a cell defined by position, size and rotation*
`lastlines(filename, lines=1, max_line_length=255)` *Returns the last n lines of a text file*
`list_methods(object, include_special=False, markdown=False)` *Return list of methods (functions) in class object*
`mag(A)` *Returns the magnitude of vector A*
`map2grid(grid, points, values, widths=None, background=0)` *Generates array of intensities along a spaced grid, equivalent to a powder pattern.*
`multi_replace(string, old=[], new=[])` *Replace multiple strings at once*
`nice_print(precision=4, linewidth=300)` *Sets default printing of arrays to a nicer format*
`norm(A)` *Returns normalised vector A*
`numbers2string(scannos, sep=':')` *Convert a list of numbers to a simple string*
`plane_intersection(line_point, line_direction, plane_point, plane_normal)` *Calculate the point at which a line intersects a plane*
`print_arrays(arrays=[])` *Prints values from several arrays with nice formatting*
`quad(A)` *Returns +/-1 depending on quadrant of 3D vector A*
`quadmag(A)` *Returns +/- mag depending on quadrant of a 3D vector A*
`readstfm(string)` *Read numbers written in standard form: 0.01(2), return value and error*
`replace_bracket_multiple(name)` *Replace any numbers in brackets with numbers multipled by bracket multiplyer*
`rot3D(A, alpha=0.0, beta=0.0, gamma=0.0)` *Rotate 3D vector A by euler angles*
`rotate_about_axis(point, axis, angle)` *Rotate vector A about vector Axis by angle*
`rotmat(a, b)` *Determine rotation matrix from a to b*
`saveable(string)` *Returns a string without special charaters.*
`search_dict_lists(d, **kwargs)` *Search equal length lists in a dictionary for specific values*
`shortstr(string)` *Shorten string by removing long floats*
`sphere_array(A, max_angle1=90, max_angle2=90, step1=1, step2=1)` *Rotate points in array A by multiple angles*
`squaredata(xdata, ydata, data, repeat=None)` *Generate square arrays from 1D data, automatically determinging the repeat value*
`stfm(val, err)` *Create standard form string from value and uncertainty"*
`unique_vector(vecarray, tol=0.05)` *Find unique vectors in an array within a certain tolerance*
`vector_intersection(point1, direction1, point2, direction2)` *Calculate the point in 2D where two lines cross.*
`vector_intersection3d(point1, direction1, point2, direction2)` *Calculate the point in 3D where two lines cross.*
`whererun()` *Returns the location where python was run*
`you_normal_vector(eta=0, chi=90, mu=0)` *Determine the normal vector using the You diffractometer angles*