Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
e0759c4
adding additional member q, since D2 needs to store both vdot and q f…
sjanssen2 Dec 2, 2022
3d0b2b3
added algebra alg_hessian for computation of second derivatives
sjanssen2 Dec 2, 2022
36ddf3a
depending on the number of derivative (first or second) normalize cla…
sjanssen2 Dec 2, 2022
a35eedc
replace bool "inject_derivatives" with int "ast.current_derivative"
sjanssen2 Dec 2, 2022
958b387
iterate through requested derivatives, i.e. set filenames correctly a…
sjanssen2 Dec 2, 2022
c3f548c
replace bool "inject_derivatives" with int "ast.current_derivative"
sjanssen2 Dec 2, 2022
d56cb87
AST keeps track of the current derivative and the last derivative req…
sjanssen2 Dec 2, 2022
3456d2f
made return type of "inject_derivative_body" more general
sjanssen2 Dec 2, 2022
993ca2d
let functions "typedefs" and "makefile" additionally know if user req…
sjanssen2 Dec 2, 2022
f365788
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Dec 2, 2022
023da7b
remove comment
sjanssen2 Dec 2, 2022
7c4abd6
linting
sjanssen2 Dec 2, 2022
180f73d
linting
sjanssen2 Dec 2, 2022
bf8ba8f
linting
sjanssen2 Dec 2, 2022
a05896e
linting
sjanssen2 Dec 2, 2022
88dc258
linting
sjanssen2 Dec 2, 2022
24d0384
linting
sjanssen2 Dec 2, 2022
b971812
also extend out_main.cc
sjanssen2 Dec 2, 2022
2fdb6c3
include derivative header
sjanssen2 Dec 2, 2022
edfc2e9
use out name indepentend class name
sjanssen2 Dec 2, 2022
5551816
normal filenames for first derivative
sjanssen2 Dec 5, 2022
6badafb
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Dec 5, 2022
d0d6bd9
use sum instead of expsum (since exp is computed in alg fns)
sjanssen2 Dec 5, 2022
69565fb
activate tests for NW second derivative
sjanssen2 Dec 5, 2022
10217d5
pass info if symbol is part of outside to return declaration, such th…
sjanssen2 Dec 6, 2022
020e565
additional instances defined for testing
sjanssen2 Dec 7, 2022
09a7b05
definition of algebra for second derivative
sjanssen2 Dec 7, 2022
7c10302
stop if edgeweight is empty
sjanssen2 Dec 7, 2022
3e23ccc
test for gotoh grammar
sjanssen2 Dec 7, 2022
d33277d
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Dec 7, 2022
ff809f6
Merge branch 'second_derivative' of github.com:jlab/gapc into empty_e…
sjanssen2 Dec 7, 2022
19d9632
remove duplicate algebra
sjanssen2 Dec 7, 2022
8fc9e90
always initialize edgeweight declarations
sjanssen2 Dec 7, 2022
1f784b2
Merge pull request #161 from jlab/empty_edgeweight
sjanssen2 Dec 7, 2022
ca5ae75
linting
sjanssen2 Dec 7, 2022
d7dd8a0
don't check edgeweight for terminals
sjanssen2 Dec 8, 2022
0ab185b
mixed up caller and called NT
sjanssen2 Dec 8, 2022
cda02a3
also activate outside tests
sjanssen2 Dec 9, 2022
e625762
propagate top level edgeweight name to lower levels, e.g. cadd(incl(d…
sjanssen2 Dec 9, 2022
c167c23
added a first rudimentary algebra for Hessians
sjanssen2 Dec 9, 2022
398494d
adding two new tests
sjanssen2 Dec 9, 2022
401c9a4
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Dec 9, 2022
c8d4811
can't get alt, if Fn_Arg is not of type Alt
sjanssen2 Dec 9, 2022
48dfb74
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Dec 9, 2022
096ea68
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Dec 16, 2022
7e97d8c
also test PRs against this branch
sjanssen2 Jan 11, 2023
b1e8f54
also run tests for PRs against second_derivative
sjanssen2 Jan 11, 2023
f95753a
Merge branch 'hSUM' of github.com:jlab/gapc into second_derivative
sjanssen2 Jan 12, 2023
3076b16
only check for first (but not second) derivative
sjanssen2 Jan 13, 2023
82c90fc
don't pass normalization function for second derivative computation
sjanssen2 Jan 13, 2023
8e0e0d1
Merge branch 'first_derivative' of github.com:jlab/gapc into second_d…
sjanssen2 Jan 13, 2023
010069b
adding first (wrong?) version of hessian computation
sjanssen2 Jan 13, 2023
2ca8746
Merge branch 'hSUM' of github.com:jlab/gapc into second_derivative
sjanssen2 Jan 13, 2023
cd50e4e
Merge branch 'hSUM' into second_derivative
sjanssen2 Jan 13, 2023
5a0d231
recursion base for D1 = 1 but for D2 = 0
sjanssen2 Jan 13, 2023
9a5e002
defining new instances for 2D computation with different scoring norm…
sjanssen2 Jan 13, 2023
1d38e3d
three new tests that should all result in the same numbers
sjanssen2 Jan 13, 2023
de09ceb
Merge branch 'first_derivative' into second_derivative
sjanssen2 Jan 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/c-cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
push:
branches: [ master ]
pull_request:
branches: [ master, outside_looporder, first_derivative ]
branches: [ master, outside_looporder, first_derivative, second_derivative ]
workflow_dispatch:
inputs:
logLevel:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/outside.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
push:
branches: [ master ]
pull_request:
branches: [ master, outside_looporder ]
branches: [ master, outside_looporder, first_derivative, second_derivative ]
workflow_dispatch:
inputs:
logLevel:
Expand Down
12 changes: 12 additions & 0 deletions rtlib/generic_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ int main(int argc, char **argv) {
std::exit(1);
}
gapc::class_name obj;
#ifdef SECOND_DERIVATIVE
gapc::class_name_D2 obj_D2;
#endif

try {
obj.init(opts);
Expand Down Expand Up @@ -116,6 +119,15 @@ int main(int argc, char **argv) {
gapc::add_event("end");
#endif

#ifdef SECOND_DERIVATIVE
obj_D2.init(opts, &obj);
gapc::add_event("start second derivative");
obj_D2.run();
gapc::add_event("end_computation of second derivative");
obj_D2.report_derivative(std::cout);
gapc::add_event("end_result of second derivative");
#endif

#ifdef STATS
obj.print_stats(std::cerr);
#endif
Expand Down
32 changes: 32 additions & 0 deletions rtlib/traces.hh
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ bool is_same_index(std::vector<unsigned int> a, std::vector<unsigned int> b) {
class candidate {
private:
double value;
double q;
std::vector<Trace> sub_components;

public:
Expand All @@ -94,6 +95,10 @@ class candidate {
this->value = value;
}

void set_q(double q) {
this->q = q;
}

void add_sub_component(std::string otherNT,
std::vector<unsigned int> *indices) {
sub_components.push_back({otherNT, *indices, NULL});
Expand All @@ -107,6 +112,10 @@ class candidate {
return value;
}

double get_q() const {
return q;
}

/* we need to normalize the individual trace values into probabilities
* trace values can come in different flavors, depending on what the
* user uses as scoring schema. See Algebra::check_derivative
Expand All @@ -121,6 +130,16 @@ class candidate {
}
return res;
}

std::vector<Trace> get_soft_max_hessian_candidate(double eval) const {
std::vector<Trace> res;
for (std::vector<Trace>::const_iterator part = this->sub_components.begin();
part != this->sub_components.end(); ++part) {
res.push_back({std::get<0>(*part), std::get<1>(*part),
this->get_q() - (eval * this->get_value())});
}
return res;
}
// void empty() {
// empty(this->value);
// }
Expand All @@ -143,6 +162,19 @@ std::vector<Trace> normalize_traces(std::vector<Trace> *tabulated,
return res;
}

inline
std::vector<Trace> soft_max_hessian_product(std::vector<Trace> *tabulated,
const std::vector<candidate> &candidates,
double eval) {
std::vector<std::tuple<std::string, std::vector<unsigned int>, double > > res;
for (std::vector<candidate>::const_iterator i = candidates.begin();
i != candidates.end(); ++i) {
std::vector<Trace> comp = (*i).get_soft_max_hessian_candidate(eval);
res.insert(res.end(), comp.begin(), comp.end());
}
return res;
}

inline
double get_trace_weights(const std::vector<Trace> &traces,
const std::string &to_nt,
Expand Down
Loading