xerus issueshttps://git.hemio.de/xerus/xerus/-/issues2020-04-21T10:19:54+02:00https://git.hemio.de/xerus/xerus/-/issues/262Slice TTTensor2020-04-21T10:19:54+02:00Nando FarchminSlice TTTensorWould be good to get a subtensor, i.e. slice of the tensor (a subtensor from dimensions (l_1,...,l_n) to dimensions (u_1,...,u_n) where 0 <= l_i <= u_i <= tensor_dim_i, see code below.)
```
def slice_tt(tt, lower, upper):
"""
Sl...Would be good to get a subtensor, i.e. slice of the tensor (a subtensor from dimensions (l_1,...,l_n) to dimensions (u_1,...,u_n) where 0 <= l_i <= u_i <= tensor_dim_i, see code below.)
```
def slice_tt(tt, lower, upper):
"""
Slice TTTensor in each component from lower to (not including) upper dimension.
"""
assert len(lower) == len(upper) == len(tt.dimensions)
assert np.all(np.array(lower) < np.array(upper))
assert np.all(np.array(upper) <= np.array(tt.dimensions))
diff = [u-l for l,u in zip(lower,upper)]
# TODO there should be a more elegant way to slice TTTensors!
tmp = xe.TTTensor(tt)
for pos in range(tt.order()):
tmp.move_core(pos)
cmp = np.asarray(tmp.get_component(pos))
cmp[:, :lower[pos], :] = 0
cmp[:, upper[pos]:, :] = 0
tmp.set_component(pos, xe.Tensor.from_buffer(cmp))
tmp.move_core(0)
tt_slice = xe.TTTensor.random(diff, tmp.ranks())
for pos in range(tt.order()):
cmp = np.asarray(tmp.get_component(pos))
cmp = np.array(cmp[:, lower[pos]:upper[pos], :])
tt_slice.set_component(pos, xe.Tensor.from_buffer(cmp))
return tt_slice
```Version 4.1Philipp TrunschkePhilipp Trunschkehttps://git.hemio.de/xerus/xerus/-/issues/258test pickling of random tensor networks2019-06-16T22:32:46+02:00Philipp Trunschketest pickling of random tensor networkshttps://git.hemio.de/xerus/xerus/-/issues/249load_from_file shoud raise an IOError instead of returning None if the file d...2019-06-13T12:26:28+02:00Philipp Trunschkeload_from_file shoud raise an IOError instead of returning None if the file does not existVersion 4.0Philipp TrunschkePhilipp Trunschkehttps://git.hemio.de/xerus/xerus/-/issues/247test pybind11 bindings2019-06-12T23:08:00+02:00Philipp Trunschketest pybind11 bindings- [x] `xe.Tensor(xe.TTTensor([2]))` raises `ValueError`
- [ ] segfault in `test_pickle.py` with python2-bindings- [x] `xe.Tensor(xe.TTTensor([2]))` raises `ValueError`
- [ ] segfault in `test_pickle.py` with python2-bindingsVersion 4.0Philipp TrunschkePhilipp Trunschkehttps://git.hemio.de/xerus/xerus/-/issues/215Not truncating properly in TT-SVD2019-04-12T11:18:01+02:00lljbashNot truncating properly in TT-SVDI notice the tSVD in TT-SVD is implemented as
```
1468 // Find rank due to the Epsilon (NOTE the scaling factor can be ignored, as it does not change the ratios).
1469 for(size_t j = 1; j < rank; ++j) {
1470 ...I notice the tSVD in TT-SVD is implemented as
```
1468 // Find rank due to the Epsilon (NOTE the scaling factor can be ignored, as it does not change the ratios).
1469 for(size_t j = 1; j < rank; ++j) {
1470 if (tmpS[j] <= _eps*tmpS[0]) {
1471 rank = j;
1472 break;
1473 }
1474 }
```
which is different from Oseledets's TT paper and will make the desired error tolerance not met. I'm not sure if there will be any side effects if I simply modify the truncation procedure.
The corresponding MATLAB codes in TT-toolbox are as follows.
```
...
pos=1;
ep=eps/sqrt(d-1);
for i=1:d-1
m=n(i)*r(i); c=reshape(c,[m,numel(c)/m]);
[u,s,v]=svd(c,'econ');
s=diag(s); r1=my_chop2(s,ep*norm(s));
u=u(:,1:r1); s=s(1:r1);
r(i+1)=r1;
core(pos:pos+r(i)*n(i)*r(i+1)-1, 1)=u(:);
v=v(:,1:r1);
v=v*diag(s); c=v';
pos=pos+r(i)*n(i)*r(i+1);
end
...
function [r] = my_chop2(sv,eps)
sv0=cumsum(sv(end:-1:1).^2);
ff=find(sv0<eps.^2);
if (isempty(ff) )
r=numel(sv);
else
r=numel(sv)-ff(end);
end
return
end
```
Would you pls fix this problem? Thanks for your time!Version 4.0RoteKekseRoteKeksehttps://git.hemio.de/xerus/xerus/-/issues/189modifications of Tensor Networks in python2019-04-03T18:53:01+02:00Fuchsi*modifications of Tensor Networks in pythonhttps://git.hemio.de/xerus/xerus/-/issues/147replace allocator should be removed2019-04-03T18:52:55+02:00Fuchsi*replace allocator should be removedVersion 4.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/84Building and using the static library with LTO and clang++ fails2019-04-03T18:52:42+02:00Sebastian WolfBuilding and using the static library with LTO and clang++ failsThe gcc wrapper used to create LTO enabled static libraries don't seem to work with clang++.The gcc wrapper used to create LTO enabled static libraries don't seem to work with clang++.https://git.hemio.de/xerus/xerus/-/issues/74Enable xerus to work with arbitary sized tensors2019-04-03T18:52:30+02:00Sebastian WolfEnable xerus to work with arbitary sized tensorsUsing a size_t for the tensor size limits the theoretical possible size of a Tensor (even a TTTensor) to dimension 2^64-1. Especially for very sparse of very low rank tensors it is desirable to allow an arbitrary dimension.Using a size_t for the tensor size limits the theoretical possible size of a Tensor (even a TTTensor) to dimension 2^64-1. Especially for very sparse of very low rank tensors it is desirable to allow an arbitrary dimension.https://git.hemio.de/xerus/xerus/-/issues/36AMEN algorithm and other ALS + gradientstep schemes2019-04-03T18:52:16+02:00Fuchsi*AMEN algorithm and other ALS + gradientstep schemeshttps://git.hemio.de/xerus/xerus/-/issues/242Add a CI test using _GLIBCXX_ASSERTIONS2019-04-02T15:39:55+02:00Sebastian WolfAdd a CI test using _GLIBCXX_ASSERTIONSThe config file allows to use the additional assertions of the GLIBC via `-D _GLIBCXX_ASSERTIONS`. There should be a CI test where this is active as it would directly expose e.g. vector out-of-bounds errors.The config file allows to use the additional assertions of the GLIBC via `-D _GLIBCXX_ASSERTIONS`. There should be a CI test where this is active as it would directly expose e.g. vector out-of-bounds errors.Version 4.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/40coding conventions & instructions on how to create a pull request2019-04-01T02:36:43+02:00Fuchsi*coding conventions & instructions on how to create a pull requestto allow others to contribute we should explain our coding standards, eg:
naming schemes arguments with _, function_names, variableNames, Classes, etc.etc.to allow others to contribute we should explain our coding standards, eg:
naming schemes arguments with _, function_names, variableNames, Classes, etc.etc.Version 4.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/42templatized value_t to allow calculations with complex numbers2019-03-04T14:54:41+01:00Fuchsi*templatized value_t to allow calculations with complex numbersThis would also simplify issue #39 and is required for most quantum calculations.
- [ ] overloaded wrapper functions for lapacke, blas and suitesparse
- [ ] prob. two template types: value_t and real_t (return value of forb_norm eg. sho...This would also simplify issue #39 and is required for most quantum calculations.
- [ ] overloaded wrapper functions for lapacke, blas and suitesparse
- [ ] prob. two template types: value_t and real_t (return value of forb_norm eg. should not be complex)
- [ ] optionally interaction between different templatized versions (eg. Tensor<double> with Tensor<float>?)Version Xhttps://git.hemio.de/xerus/xerus/-/issues/69SparseTensor aware contraction heuristics2019-03-04T14:31:16+01:00Sebastian WolfSparseTensor aware contraction heuristicsThe complexity of sparse contractions is significantly different to the dense one and therefore requires new heuristics to detemrine the contraction order.The complexity of sparse contractions is significantly different to the dense one and therefore requires new heuristics to detemrine the contraction order.Version Xhttps://git.hemio.de/xerus/xerus/-/issues/130more example systems2019-03-04T13:56:09+01:00Fuchsi*more example systemsWhen writing example systems, consider adding them to the library and / or homepage as examples.
possible examples include:
- Hennon-Heiles potential in schredinger eq
- masters equation
- some tensor completion / recovery
- standard ha...When writing example systems, consider adding them to the library and / or homepage as examples.
possible examples include:
- Hennon-Heiles potential in schredinger eq
- masters equation
- some tensor completion / recovery
- standard hamiltonians (spin systems)
- simple fem system (diffusion?) with qtt
- uq systemVersion Xhttps://git.hemio.de/xerus/xerus/-/issues/216Add convenience functions for modifying the TensorNetwork graph.2019-02-15T11:43:30+01:00Philipp TrunschkeAdd convenience functions for modifying the TensorNetwork graph.There are some operations on `TensorNetworks` that are not as simple as they should be.
As an example I think that a `TensorNetworks` should have the functions
- `TensorNetwork::remove_node(const size_t _nodeId)` : removes the node from ...There are some operations on `TensorNetworks` that are not as simple as they should be.
As an example I think that a `TensorNetworks` should have the functions
- `TensorNetwork::remove_node(const size_t _nodeId)` : removes the node from the TensorNetwork and inserts the newly created external links at the end of `externalLinks` (in the order they had on the node tensor)
- `TensorNetwork::remove_link(const size_t _nodeId1, const size_t _nodeId2)` : removes the link between the given nodes and inserts the newly created external links at the end of `externalLinks`
The first function is useful when computing the gradient of a `TensorNetwork` w.r.t. the given node.
The second one will probably be used mainly as a subroutine of the first one.
Related tasks like `add_node` can be done using Einstein notation. Maybe we can find something similar for these tasks.https://git.hemio.de/xerus/xerus/-/issues/41Change -D _CHECK to -D _DISABLE_RUNTIME_CHECKS2018-04-23T03:03:39+02:00Sebastian WolfChange -D _CHECK to -D _DISABLE_RUNTIME_CHECKSThe default configuration should be to perform runtime checks, this should also be reflected in the define, in particular because otherwise the user is required to put -D _CHECK in his/her own compiler calls to ensure checks in template ...The default configuration should be to perform runtime checks, this should also be reflected in the define, in particular because otherwise the user is required to put -D _CHECK in his/her own compiler calls to ensure checks in template functions.Version 1.0https://git.hemio.de/xerus/xerus/-/issues/49Define guard for test coverage2018-04-23T03:03:39+02:00Sebastian WolfDefine guard for test coverageThere should be a define guard to enable/disable the code coverage test, since the coverage is not of interest for users of xerus, but only for the developers.There should be a define guard to enable/disable the code coverage test, since the coverage is not of interest for users of xerus, but only for the developers.Version 1.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/59Implement a function to check TensorNetwork consitency.2018-04-23T03:03:38+02:00Sebastian WolfImplement a function to check TensorNetwork consitency.To detect present internal errors we should check at various points that a TensorNetwork is in a consistent state.To detect present internal errors we should check at various points that a TensorNetwork is in a consistent state.Version 1.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/63Fix the header includes to take advantage of new fiel structure2018-04-23T03:03:38+02:00Sebastian WolfFix the header includes to take advantage of new fiel structureVersion 1.0Sebastian WolfSebastian Wolf