• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

APN-Pucky / feynamp / 8573202894

05 Apr 2024 05:00PM UTC coverage: 83.939% (+0.1%) from 83.825%
8573202894

Pull #50

github

APN-Pucky
update color
Pull Request #50: gg_gg

79 of 100 new or added lines in 9 files covered. (79.0%)

35 existing lines in 5 files now uncovered.

716 of 853 relevant lines covered (83.94%)

0.84 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.26
/feynamp/form/form.py
1
import os
1✔
2
import re
1✔
3

4
import form
1✔
5

6
count = 0
1✔
7
dummy = 0
1✔
8
# TODO auto generate symbols
9
init = """
1✔
10
Symbols Pi,G,ZERO,Tr,Nc,Cf,CA,MC,ee,realpart;
11
AutoDeclare Index Mu,Spin,Pol,Col,Glu,Propagator;
12
AutoDeclare Symbol Mass,fd,mss,mst,msu;
13
AutoDeclare Vector Mom;
14
Tensors f(antisymmetric),Metric(symmetric),df(symmetric),da(symmetric),Identity(symmetric);
15
Function ProjM,ProjP,VF,xg,xgi,P,dg,dgi,xeg,xegi;
16
CFunctions Den,T,Denom,P,Gamma,u,v,ubar,vbar,eps,epsstar,VC,VA,GammaId, GammaCollect, GammaIdCollect;
17
Indices a,o,n,m,tm,tn,beta,b,m,betap,alphap,a,alpha,ind,delta,k,j,l,c,d,e;
18
"""
19

20

21
def get_dummy_index():
1✔
22
    global dummy
23
    dummy = dummy + 1
1✔
24
    return f"N{dummy}_?"
1✔
25

26

27
def string_to_form(s):
1✔
28
    s = re.sub(r"complex\((.*?),(.*?)\)", r"(\1+i_*(\2))", s)
1✔
29
    # s = s.replace("complex(0,1)", "i_")  # form uses i_ for imaginary unit
30
    s = s.replace("Gamma_Id", "GammaId")
1✔
31
    s = s.replace("u_bar", "ubar")
1✔
32
    s = s.replace("v_bar", "vbar")
1✔
33
    s = s.replace("eps_star", "epsstar")
1✔
34
    s = s.replace("Identity", "df")  # TODO check if this holds or also happens for anti
1✔
35
    s = s.replace("ZERO", "0")
1✔
36
    s = s.replace(".*", "*")  # handle decimals
1✔
37
    s = s.replace(".)", ")")  # handle decimals
1✔
38
    return s
1✔
39

40

41
def run_parallel(init, cmds, variables, show=False, keep_form_file=False, threads=None):
1✔
42
    global count
43
    count = count + 1
1✔
44
    rets = []
1✔
45
    if threads is None:
1✔
46
        threads = os.cpu_count()
1✔
47
        with form.open(keep_log=1000, args=["tform", f"-w{threads}"]) as f:
1✔
48
            txt = "" + init
1✔
49
            for i, s in enumerate(variables):
1✔
50
                txt += f"Local TMP{i} = {s};\n"
1✔
51
            txt += cmds
1✔
52
            for i, s in enumerate(variables):
1✔
53
                txt += f"print TMP{i};.sort;"
1✔
54
            f.write(txt)
1✔
55
            if keep_form_file:
1✔
UNCOV
56
                with open("form" + str(count) + ".frm", "w") as frm:
×
NEW
57
                    frm.write(txt)
×
58
            for i, s in enumerate(variables):
1✔
59
                rets.append(f.read(f"TMP{i}"))
1✔
60
            # What is this ?
61
            # r = re.sub(r"\+factor_\^?[0-9]*", r"", r).strip("*")
62
            if show:
1✔
NEW
63
                for r in rets:
×
NEW
64
                    print(r + "\n")
×
65
            assert len(rets) == len(variables)
1✔
66
            return rets
1✔
67

68

69
def run(s, show=False, keep_form_file=False):
1✔
70
    global count
71
    count = count + 1
1✔
72
    with form.open(keep_log=1000, args=["tform", "-w16"]) as f:
1✔
73
        local = s.split("Local")[1].split("=")[0].strip()
1✔
74
        txt = s + "print " + local + ";.sort;"
1✔
75
        f.write(txt)
1✔
76
        # frm.write(txt)
77
        r = f.read("" + local)
1✔
78
        r = re.sub(r"\+factor_\^?[0-9]*", r"", r).strip("*")
1✔
79
        if show:
1✔
NEW
80
            print(r + "\n")
×
81
        # delete frm file
82
        if keep_form_file:
1✔
NEW
83
            with open("form" + str(count) + ".frm", "w") as frm:
×
NEW
84
                frm.write(txt)
×
85
        return r
1✔
86

87

88
def sympyfy(string_expr):
1✔
NEW
89
    from sympy import simplify
×
NEW
90
    from sympy.parsing.sympy_parser import parse_expr
×
91

NEW
92
    ret = simplify(
×
93
        parse_expr(
94
            string_expr.replace("Mom_", "")
95
            .replace(".", "_")
96
            .replace("^", "**")
97
            .replace("mss", "s")
98
            .replace("msu", "u")
99
            .replace("mst", "t")
100
        )
101
    )
NEW
102
    return simplify(ret.subs("Nc", "3").subs("Cf", "4/3"))
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc