Merge branch 'master' of ssh://yap.git.sourceforge.net/gitroot/yap/yap-6.3

This commit is contained in:
U-WIN-ENP104VVO3U\Vítor Santos Costa 2011-05-02 18:23:50 +01:00
commit 772cf833a6
66 changed files with 5486 additions and 318 deletions

231
C/cdmgr.c
View File

@ -5635,6 +5635,233 @@ p_choicepoint_info( USES_REGS1 )
Yap_unify(ARG7,MkIntegerTerm(ClauseId(ncl,pe)));
}
static UInt
compute_dbcl_size(UInt arity)
{
UInt sz;
switch(arity) {
case 2:
sz = (UInt)NEXTOP((yamop *)NULL,cc);
break;
case 3:
sz = (UInt)NEXTOP((yamop *)NULL,ccc);
break;
case 4:
sz = (UInt)NEXTOP((yamop *)NULL,cccc);
break;
case 5:
sz = (UInt)NEXTOP((yamop *)NULL,ccccc);
break;
case 6:
sz = (UInt)NEXTOP((yamop *)NULL,cccccc);
break;
default:
sz = arity*(UInt)NEXTOP((yamop *)NULL,xc);
break;
}
return (UInt)NEXTOP((yamop *)sz,p);
}
#define DerefAndCheck(t, V) \
t = Deref(V); if(IsVarTerm(t) || !(IsAtomOrIntTerm(t))) Yap_Error(TYPE_ERROR_ATOM, t0, "load_db");
static int
store_dbcl_size(yamop *pc, UInt arity, Term t0, PredEntry *pe)
{
Term t;
CELL *tp = RepAppl(t0)+1;
switch(arity) {
case 2:
pc->opc = Yap_opcode(_get_2atoms);
DerefAndCheck(t, tp[0]);
pc->u.cc.c1 = t;
DerefAndCheck(t, tp[1]);
pc->u.cc.c2 = t;
pc = NEXTOP(pc,cc);
break;
case 3:
pc->opc = Yap_opcode(_get_3atoms);
DerefAndCheck(t, tp[0]);
pc->u.ccc.c1 = t;
DerefAndCheck(t, tp[1]);
pc->u.ccc.c2 = t;
DerefAndCheck(t, tp[2]);
pc->u.ccc.c3 = t;
pc = NEXTOP(pc,ccc);
break;
case 4:
pc->opc = Yap_opcode(_get_4atoms);
DerefAndCheck(t, tp[0]);
pc->u.cccc.c1 = t;
DerefAndCheck(t, tp[1]);
pc->u.cccc.c2 = t;
DerefAndCheck(t, tp[2]);
pc->u.cccc.c3 = t;
DerefAndCheck(t, tp[3]);
pc->u.cccc.c4 = t;
pc = NEXTOP(pc,cccc);
break;
case 5:
pc->opc = Yap_opcode(_get_5atoms);
DerefAndCheck(t, tp[0]);
pc->u.ccccc.c1 = t;
DerefAndCheck(t, tp[1]);
pc->u.ccccc.c2 = t;
DerefAndCheck(t, tp[2]);
pc->u.ccccc.c3 = t;
DerefAndCheck(t, tp[3]);
pc->u.ccccc.c4 = t;
DerefAndCheck(t, tp[4]);
pc->u.ccccc.c5 = t;
pc = NEXTOP(pc,ccccc);
break;
case 6:
pc->opc = Yap_opcode(_get_6atoms);
DerefAndCheck(t, tp[0]);
pc->u.cccccc.c1 = t;
DerefAndCheck(t, tp[1]);
pc->u.cccccc.c2 = t;
DerefAndCheck(t, tp[2]);
pc->u.cccccc.c3 = t;
DerefAndCheck(t, tp[3]);
pc->u.cccccc.c4 = t;
DerefAndCheck(t, tp[4]);
pc->u.cccccc.c5 = t;
DerefAndCheck(t, tp[5]);
pc->u.cccccc.c6 = t;
pc = NEXTOP(pc,cccccc);
break;
default:
{
UInt i;
for (i = 0; i< arity; i++) {
pc->opc = Yap_opcode(_get_atom);
#if PRECOMPUTE_REGADDRESS
pc->u.xc.x = (CELL) (XREGS + (i+1));
#else
pc->u.xc.x = i+1;
#endif
DerefAndCheck(t, tp[0]);
pc->u.xc.c = t;
tp++;
pc = NEXTOP(pc,xc);
}
}
break;
}
pc->opc = Yap_opcode(_procceed);
pc->u.p.p = pe;
return TRUE;
}
static Int
p_dbload_get_space( USES_REGS1 )
{ /* '$number_of_clauses'(Predicate,M,N) */
Term t = Deref(ARG1);
Term mod = Deref(ARG2);
Term tn = Deref(ARG3);
UInt arity;
Prop pe;
PredEntry *ap;
UInt sz;
MegaClause *mcl;
yamop *ptr;
UInt ncls;
UInt required;
if (IsVarTerm(mod) || !IsAtomTerm(mod)) {
return(FALSE);
}
if (IsAtomTerm(t)) {
Atom a = AtomOfTerm(t);
arity = 0;
pe = PredPropByAtom(a, mod);
} else if (IsApplTerm(t)) {
register Functor f = FunctorOfTerm(t);
arity = ArityOfFunctor(f);
pe = PredPropByFunc(f, mod);
} else {
return FALSE;
}
if (EndOfPAEntr(pe))
return FALSE;
ap = RepPredProp(pe);
if (ap->PredFlags & (DynamicPredFlag|LogUpdatePredFlag
#ifdef TABLING
|TabledPredFlag
#endif /* TABLING */
)) {
Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE,t,"dbload_get_space/4");
return FALSE;
}
if (IsVarTerm(tn) || !IsIntegerTerm(tn)) {
return FALSE;
}
ncls = IntegerOfTerm(tn);
if (ncls <= 1) {
return FALSE;
}
sz = compute_dbcl_size(arity);
required = sz*ncls+sizeof(MegaClause)+(UInt)NEXTOP((yamop *)NULL,l);
#ifdef DEBUG
total_megaclause += required;
nof_megaclauses++;
#endif
while (!(mcl = (MegaClause *)Yap_AllocCodeSpace(required))) {
if (!Yap_growheap(FALSE, required, NULL)) {
/* just fail, the system will keep on going */
return FALSE;
}
}
Yap_ClauseSpace += required;
/* cool, it's our turn to do the conversion */
mcl->ClFlags = MegaMask;
mcl->ClSize = sz*ncls;
mcl->ClPred = ap;
mcl->ClItemSize = sz;
mcl->ClNext = NULL;
ap->cs.p_code.FirstClause =
ap->cs.p_code.LastClause =
mcl->ClCode;
ap->PredFlags |= MegaClausePredFlag;
ap->cs.p_code.NOfClauses = ncls;
if (ap->PredFlags & (SpiedPredFlag|CountPredFlag|ProfiledPredFlag)) {
ap->OpcodeOfPred = Yap_opcode(_spy_pred);
} else {
ap->OpcodeOfPred = INDEX_OPCODE;
}
ap->CodeOfPred = ap->cs.p_code.TrueCodeOfPred = (yamop *)(&(ap->OpcodeOfPred));
ptr = (yamop *)((ADDR)mcl->ClCode+ncls*sz);
ptr->opc = Yap_opcode(_Ystop);
return Yap_unify(ARG4, MkIntegerTerm((Int)mcl));
}
static Int
p_dbassert( USES_REGS1 )
{ /* '$number_of_clauses'(Predicate,M,N) */
Term thandle = Deref(ARG2);
Term tn = Deref(ARG3);
PredEntry *pe;
MegaClause *mcl;
Int n;
if (IsVarTerm(thandle) || !IsIntegerTerm(thandle)) {
return FALSE;
}
mcl = (MegaClause *)IntegerOfTerm(thandle);
if (IsVarTerm(tn) || !IsIntegerTerm(tn)) {
return FALSE;
}
n = IntegerOfTerm(tn);
pe = mcl->ClPred;
return store_dbcl_size((yamop *)((ADDR)mcl->ClCode+n*(mcl->ClItemSize)),pe->ArityOfPE,Deref(ARG1),pe);
}
void
Yap_InitCdMgr(void)
{
@ -5701,6 +5928,10 @@ Yap_InitCdMgr(void)
Yap_InitCPred("continuation", 4, p_env_info, HiddenPredFlag);
Yap_InitCPred("cp_to_predicate", 5, p_cpc_info, HiddenPredFlag);
CurrentModule = cm;
CurrentModule = DBLOAD_MODULE;
Yap_InitCPred("dbload_get_space", 4, p_dbload_get_space, 0L);
Yap_InitCPred("dbassert", 3, p_dbassert, 0L);
CurrentModule = cm;
Yap_InitCPred("$predicate_erased_statistics", 5, p_predicate_erased_statistics, SyncPredFlag);
#ifdef DEBUG
Yap_InitCPred("$predicate_live_cps", 4, p_predicate_lu_cps, 0L);

View File

@ -2849,6 +2849,19 @@ c_layout(compiler_struct *cglobs)
case cutexit_op:
cglobs->cut_mark->op = clause_with_cut_op;
break;
#else
case cut_op:
case cutexit_op:
{
int i, max;
max = 0;
for (i = 1; i < cglobs->MaxCTemps; ++i) {
if (cglobs->Contents[i]) max = i;
}
cglobs->cint.cpc->ops.opseqt[1] = max;
}
break;
#endif /* TABLING_INNER_CUTS */
case allocate_op:
case deallocate_op:
@ -3050,18 +3063,6 @@ c_layout(compiler_struct *cglobs)
}
}
break;
case cut_op:
case cutexit_op:
{
int i, max;
max = 0;
for (i = 1; i < cglobs->MaxCTemps; ++i) {
if (cglobs->Contents[i]) max = i;
}
cglobs->cint.cpc->ops.opseqt[1] = max;
}
break;
case restore_tmps_and_skip_op:
case restore_tmps_op:
/*
@ -3552,7 +3553,7 @@ Yap_cclause(volatile Term inp_clause, Int NOfArgs, Term mod, volatile Term src)
} else {
#ifdef TABLING_INNER_CUTS
Yap_emit(nop_op, Zero, Zero, &cglobs.cint);
cglobs->cut_mark = cpc;
cglobs.cut_mark->op = clause_with_cut_op;
#endif /* TABLING_INNER_CUTS */
Yap_emit(allocate_op, Zero, Zero, &cglobs.cint);

View File

@ -1831,9 +1831,13 @@ Yap_Error(yap_error_number type, Term where, char *format,...)
if (type != PURE_ABORT) {
/* This is used by some complex procedures to detect there was an error */
if (IsAtomTerm(nt[0])) {
Yap_ErrorMessage = RepAtom(AtomOfTerm(nt[0]))->StrOfAE;
strncpy(Yap_ErrorSay, RepAtom(AtomOfTerm(nt[0]))->StrOfAE, MAX_ERROR_MSG_SIZ\
E);
Yap_ErrorMessage = Yap_ErrorSay;
} else {
Yap_ErrorMessage = RepAtom(NameOfFunctor(FunctorOfTerm(nt[0])))->StrOfAE;
strncpy(Yap_ErrorSay, RepAtom(NameOfFunctor(FunctorOfTerm(nt[0])))->StrOfAE,\
MAX_ERROR_MSG_SIZE);
Yap_ErrorMessage = Yap_ErrorSay;
}
}
switch (type) {

View File

@ -29,8 +29,8 @@
#include <string.h>
#endif
#if YAPOR_THREADS
#include <opt.mavar.h>
#endif
#include "opt.mavar.h"
#endif /* YAPOR_THREADS */
#if !HAVE_STRNCAT
#define strncat(s0,s1,sz) strcat(s0,s1)
@ -269,7 +269,7 @@ RestoreTrail(int worker_p USES_REGS)
if (aux_tr < TR){
Yap_Error(SYSTEM_ERROR, TermNil, "oops");
}
Yap_NEW_MAHASH((ma_h_inner_struct *)H);
Yap_NEW_MAHASH((ma_h_inner_struct *)H PASS_REGS);
while (TR != aux_tr) {
CELL aux_cell = TrailTerm(--aux_tr);
if (IsVarTerm(aux_cell)) {
@ -295,7 +295,7 @@ RestoreTrail(int worker_p USES_REGS)
CELL *cell_ptr = RepAppl(aux_cell);
if (((CELL *)aux_cell < Get_LOCAL_top_cp()->cp_h ||
EQUAL_OR_YOUNGER_CP(Get_LOCAL_top_cp(), (choiceptr)aux_cell)) &&
!Yap_lookup_ma_var(cell_ptr)) {
!Yap_lookup_ma_var(cell_ptr PASS_REGS)) {
/* first time we found the variable, let's put the new value */
#ifdef TABLING
*cell_ptr = TrailVal(aux_tr);
@ -310,7 +310,7 @@ RestoreTrail(int worker_p USES_REGS)
}
}
#endif /* YAPOR && THREADS */
#endif /* YAPOR_THREADS */
static void
MoveGlobal( USES_REGS1 )
@ -1252,7 +1252,7 @@ do_growheap(int fix_code, UInt in_size, struct intermediates *cip, tr_fr_ptr *ol
if (sz < in_size) {
sz = in_size;
}
#if YAPOR
#ifdef YAPOR
Yap_Error(OUT_OF_HEAP_ERROR,TermNil,"cannot grow Heap: more than a worker/thread running");
return FALSE;
#endif
@ -1690,7 +1690,7 @@ static int do_growtrail(long size, int contiguous_only, int in_parser, tr_fr_ptr
size = AdjustPageSize(size);
trail_overflows++;
if (gc_verbose) {
#if defined(YAPOR) || defined(THREADS)
#if defined(YAPOR) || defined(THREADS)
fprintf(Yap_stderr, "%% Worker Id %d:\n", worker_id);
#endif
fprintf(Yap_stderr, "%% Trail Overflow %d\n", trail_overflows);

View File

@ -6864,8 +6864,8 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y
break;
}
}
update_clause_choice_point(ipc->u.OtILl.n,ap_pc PASS_REGS);
return ipc->u.OtILl.d;
update_clause_choice_point(ipc->u.OtaLl.n,ap_pc PASS_REGS);
return ipc->u.OtaLl.d;
#if TABLING
case _table_try_single:
return (LogUpdClause *)ClauseCodeToStaticClause(ipc);
@ -6874,7 +6874,7 @@ Yap_FollowIndexingCode(PredEntry *ap, yamop *ipc, Term Terms[3], yamop *ap_pc, y
case _count_trust_logical:
case _profiled_trust_logical:
{
UInt timestamp = ((CELL *)(B+1))[5];
UInt timestamp = IntegerOfTerm(((CELL *)(B+1))[5]);
LogUpdIndex *cl = ipc->u.OtILl.block;
LogUpdClause *newpc;

View File

@ -1009,11 +1009,8 @@ InitFlags(void)
yap_flags[SOURCE_MODE_FLAG] = FALSE;
yap_flags[CHARACTER_ESCAPE_FLAG] = SICSTUS_CHARACTER_ESCAPES;
yap_flags[WRITE_QUOTED_STRING_FLAG] = FALSE;
#if (defined(YAPOR) || defined(THREADS)) && PUREe_YAPOR
yap_flags[ALLOW_ASSERTING_STATIC_FLAG] = FALSE;
#else
/* we do not garantee safe assert in parallel mode */
yap_flags[ALLOW_ASSERTING_STATIC_FLAG] = TRUE;
#endif
yap_flags[GENERATE_DEBUG_INFO_FLAG] = TRUE;
/* current default */
yap_flags[INDEXING_MODE_FLAG] = INDEX_MODE_MULTI;
@ -1236,7 +1233,7 @@ Yap_CloseScratchPad(void)
#include "ilocals.h"
#if defined(YAPOR) && !defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
struct global_data *Yap_global;
long Yap_worker_area_size;
#else
@ -1247,7 +1244,7 @@ struct global_data Yap_Global;
struct worker_local *Yap_WLocal[MAX_THREADS];
#elif defined(YAPOR)
struct worker_local *Yap_WLocal;
#else
#else /* !THREADS && !YAPOR */
struct worker_local Yap_WLocal;
#endif
@ -1341,21 +1338,25 @@ Yap_InitWorkspace(UInt Heap, UInt Stack, UInt Trail, UInt Atts, UInt max_table_s
Atts = 2048*sizeof(CELL);
else
Atts = AdjustPageSize(Atts * K);
#if defined(YAPOR) && !defined(THREADS)
#ifdef YAPOR
worker_id = 0;
if (n_workers > MAX_WORKERS)
Yap_Error(INTERNAL_ERROR, TermNil, "excessive number of workers (Yap_InitWorkspace)");
Yap_Error(INTERNAL_ERROR, TermNil, "excessive number of workers");
#ifdef YAPOR_COPY
INFORMATION_MESSAGE("YapOr: copy model with %d worker%s", n_workers, n_workers == 1 ? "":"s");
#elif YAPOR_COW
INFORMATION_MESSAGE("YapOr: acow model with %d worker%s", n_workers, n_workers == 1 ? "":"s");
#else /* YAPOR_SBA */
#elif YAPOR_SBA
INFORMATION_MESSAGE("YapOr: sba model with %d worker%s", n_workers, n_workers == 1 ? "":"s");
#endif /* YAPOR_COPY - YAPOR_COW - YAPOR_SBA */
Yap_init_optyap_memory(Trail, Heap, Stack+Atts, n_workers);
#elif YAPOR_THREADS
INFORMATION_MESSAGE("YapOr: threads model with %d worker%s", n_workers, n_workers == 1 ? "":"s");
#endif /* YAPOR_COPY - YAPOR_COW - YAPOR_SBA - YAPOR_THREADS */
#endif /* YAPOR */
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
Yap_init_optyap_memory(Trail, Heap, Stack+Atts, n_workers);
#else
Yap_InitMemory (Trail, Heap, Stack+Atts);
#endif /* YAPOR && !THREADS */
#endif
#if defined(YAPOR) || defined(TABLING)
Yap_init_optyap_data(max_table_size, n_workers, sch_loop, delay_load);
#endif /* YAPOR || TABLING */
@ -1414,9 +1415,9 @@ run_halt_hooks(int code)
void
Yap_exit (int value)
{
#if defined(YAPOR) && !defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
Yap_unmap_optyap_memory();
#endif /* YAPOR && !THREADS */
#endif
if (! (Yap_PrologMode & BootMode) ) {
#ifdef LOW_PROF

View File

@ -327,5 +327,6 @@ Yap_InitModules(void)
LookupModule(HACKS_MODULE);
LookupModule(ARG_MODULE);
LookupModule(GLOBALS_MODULE);
LookupModule(DBLOAD_MODULE);
CurrentModule = PROLOG_MODULE;
}

View File

@ -440,54 +440,55 @@ ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS)
case Name_tok:
t = Yap_tokptr->TokInfo;
NextToken;
/* special rules apply for +1, -2.3, etc... */
if (Yap_tokptr->Tok == Number_tok) {
if ((Atom)t == AtomMinus) {
t = Yap_tokptr->TokInfo;
if (IsIntTerm(t))
t = MkIntTerm(-IntOfTerm(t));
else if (IsFloatTerm(t))
t = MkFloatTerm(-FloatOfTerm(t));
#ifdef USE_GMP
else if (IsBigIntTerm(t)) {
t = Yap_gmp_neg_big(t);
}
#endif
else
t = MkLongIntTerm(-LongIntOfTerm(t));
NextToken;
break;
}
}
if ((Yap_tokptr->Tok != Ord(Ponctuation_tok)
|| Unsigned(Yap_tokptr->TokInfo) != 'l')
&& IsPrefixOp((Atom)t, &opprio, &oprprio PASS_REGS)
) {
/* special rules apply for +1, -2.3, etc... */
if (Yap_tokptr->Tok == Number_tok) {
if ((Atom)t == AtomMinus) {
t = Yap_tokptr->TokInfo;
if (IsIntTerm(t))
t = MkIntTerm(-IntOfTerm(t));
else if (IsFloatTerm(t))
t = MkFloatTerm(-FloatOfTerm(t));
#ifdef USE_GMP
else if (IsBigIntTerm(t)) {
t = Yap_gmp_neg_big(t);
}
#endif
else
t = MkLongIntTerm(-LongIntOfTerm(t));
NextToken;
break;
}
} else if (Yap_tokptr->Tok == Name_tok) {
Atom at = (Atom)Yap_tokptr->TokInfo;
if (Yap_tokptr->Tok == Name_tok) {
Atom at = (Atom)Yap_tokptr->TokInfo;
#ifndef _MSC_VER
if ((Atom)t == AtomPlus) {
if (at == AtomInf) {
t = MkFloatTerm(INFINITY);
NextToken;
break;
} else if (at == AtomNan) {
t = MkFloatTerm(NAN);
NextToken;
if ((Atom)t == AtomPlus) {
if (at == AtomInf) {
t = MkFloatTerm(INFINITY);
NextToken;
break;
} else if (at == AtomNan) {
t = MkFloatTerm(NAN);
NextToken;
break;
}
} else if ((Atom)t == AtomMinus) {
if (at == AtomInf) {
t = MkFloatTerm(-INFINITY);
NextToken;
break;
} else if (at == AtomNan) {
t = MkFloatTerm(NAN);
NextToken;
break;
}
}
} else if ((Atom)t == AtomMinus) {
if (at == AtomInf) {
t = MkFloatTerm(-INFINITY);
NextToken;
break;
} else if (at == AtomNan) {
t = MkFloatTerm(NAN);
NextToken;
break;
}
}
#endif
}
}
if (opprio <= prio) {
/* try to parse as a prefix operator */
TRY(

View File

@ -615,19 +615,20 @@ p_save2( USES_REGS1 )
Int res;
Term t;
#if defined(YAPOR) && !defined(THREADS)
#ifdef YAPOR
if (Yap_number_workers != 1) {
Yap_Error(SYSTEM_ERROR,TermNil,
"cannot perform save: more than a worker/thread running");
return(FALSE);
}
#elif defined(THREADS)
#endif /* YAPOR */
#ifdef THREADS
if (Yap_NOfThreads != 1) {
Yap_Error(SYSTEM_ERROR,TermNil,
"cannot perform save: more than a worker/thread running");
return(FALSE);
}
#endif
#endif /* THREADS */
/* avoid double saves */
if (IsNonVarTerm(t = Deref(ARG2)))
return TRUE;
@ -1794,17 +1795,18 @@ p_restore( USES_REGS1 )
char s[YAP_FILENAME_MAX+1];
Term t1 = Deref(ARG1);
#if defined(YAPOR) && !defined(THREADS)
#ifdef YAPOR
if (Yap_number_workers != 1) {
Yap_Error(SYSTEM_ERROR,TermNil,"cannot perform save: more than a worker/thread running");
return(FALSE);
}
#elif defined(THREADS)
#endif /* YAPOR */
#ifdef THREADS
if (Yap_NOfThreads != 1) {
Yap_Error(SYSTEM_ERROR,TermNil,"cannot perform save: more than a worker/thread running");
return(FALSE);
}
#endif
#endif /* THREADS */
if (!Yap_GetName(s, YAP_FILENAME_MAX, t1)) {
Yap_Error(TYPE_ERROR_LIST,t1,"restore/1");
return(FALSE);

View File

@ -315,6 +315,11 @@ read_quoted_char(int *scan_nextp, IOSTREAM *inp_stream)
return '\n';
case 'r':
return '\r';
case 's': /* space */
if (yap_flags[CHARACTER_ESCAPE_FLAG] == ISO_CHARACTER_ESCAPES) {
return send_error_message("invalid escape sequence \\s");
} else
return ' ';
case 't':
return '\t';
case 'u':
@ -357,6 +362,11 @@ read_quoted_char(int *scan_nextp, IOSTREAM *inp_stream)
}
case 'v':
return '\v';
case 'z': /* Prolog end-of-file */
if (yap_flags[CHARACTER_ESCAPE_FLAG] == ISO_CHARACTER_ESCAPES) {
return send_error_message("invalid escape sequence \\z");
} else
return -1;
case '\\':
return '\\';
case '\'':

View File

@ -138,7 +138,7 @@ typedef struct regstore_t
int sba_size_;
#endif /* YAPOR_SBA */
#endif /* YAPOR || THREADS */
#if (defined(YAPOR) || defined(TABLING))
#if defined(YAPOR) || defined(TABLING)
struct local_data *LOCAL_;
#endif
#if PUSH_REGS

View File

@ -180,7 +180,7 @@ typedef struct various_codes {
#include "hglobals.h"
#include "hlocals.h"
#if defined(YAPOR) && !defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
extern struct global_data *Yap_global;
extern long Yap_worker_area_size;
#else
@ -188,17 +188,15 @@ extern struct global_data Yap_Global;
#define Yap_global (&Yap_Global)
#endif
#if defined(YAPOR) || defined(THREADS)
#if defined(THREADS)
extern struct worker_local *Yap_WLocal[MAX_THREADS];
#define WL (Yap_WLocal[worker_id])
#define FOREIGN(wid) (Yap_WLocal[(wid)])
#else
#elif defined(YAPOR)
extern struct worker_local *Yap_WLocal;
#define WL (Yap_WLocal+worker_id)
#define FOREIGN(wid) (Yap_WLocal+wid)
#endif
#else
#else /* !THREADS && !YAPOR */
extern struct worker_local Yap_WLocal;
#define WL (&Yap_WLocal)
#define FOREIGN(wid) (&Yap_WLocal)

View File

@ -96,6 +96,7 @@
#define ARG_MODULE Yap_heap_regs->arg_module
#define GLOBALS_MODULE Yap_heap_regs->globals_module
#define SWI_MODULE Yap_heap_regs->swi_module
#define DBLOAD_MODULE Yap_heap_regs->dbload_module

View File

@ -134,10 +134,6 @@
#define PL_local_data_p WL->Yap_ld_
#define execution WL->_execution
#if MULTIPLE_STACKS
#define WORKER WL->worker
#endif
#ifdef THREADS
#define ThreadHandle WL->thread_handle
#define FOREIGN_ThreadHandle(wid) (Yap_WLocal[(wid)]->thread_handle)

View File

@ -136,10 +136,6 @@ typedef struct worker_local {
struct PL_local_data *Yap_ld_;
struct open_query_struct* _execution;
#if MULTIPLE_STACKS
struct worker worker;
#endif
#ifdef THREADS
struct thandle thread_handle;
#define FOREIGN_ThreadHandle(wid) (Yap_WLocal[(wid)]->thread_handle)

View File

@ -96,6 +96,7 @@
Term arg_module;
Term globals_module;
Term swi_module;
Term dbload_module;

View File

@ -63,6 +63,7 @@
AtomCut = Yap_LookupAtom("!");
AtomCutBy = Yap_FullLookupAtom("$cut_by");
AtomDAbort = Yap_FullLookupAtom("$abort");
AtomDBLoad = Yap_FullLookupAtom("$db_load");
AtomDBREF = Yap_LookupAtom("DBRef");
AtomDBReference = Yap_LookupAtom("db_reference");
AtomDBTerm = Yap_LookupAtom("db_term");

View File

@ -96,6 +96,7 @@
Yap_heap_regs->arg_module = MkAtomTerm(AtomArg);
Yap_heap_regs->globals_module = MkAtomTerm(AtomNb);
Yap_heap_regs->swi_module = MkAtomTerm(AtomSwi);
Yap_heap_regs->dbload_module = MkAtomTerm(AtomDBLoad);

View File

@ -134,10 +134,6 @@ static void InitWorker(int wid) {
FOREIGN(wid)->Yap_ld_ = Yap_InitThreadIO(wid);
FOREIGN(wid)->_execution = NULL;
#if MULTIPLE_STACKS
#endif
#ifdef THREADS
InitThreadHandle(wid);
#define FOREIGN_ThreadHandle(wid) (Yap_WLocal[(wid)]->thread_handle)

View File

@ -63,6 +63,7 @@
AtomCut = AtomAdjust(AtomCut);
AtomCutBy = AtomAdjust(AtomCutBy);
AtomDAbort = AtomAdjust(AtomDAbort);
AtomDBLoad = AtomAdjust(AtomDBLoad);
AtomDBREF = AtomAdjust(AtomDBREF);
AtomDBReference = AtomAdjust(AtomDBReference);
AtomDBTerm = AtomAdjust(AtomDBTerm);

View File

@ -96,6 +96,7 @@
Yap_heap_regs->arg_module = AtomTermAdjust(Yap_heap_regs->arg_module);
Yap_heap_regs->globals_module = AtomTermAdjust(Yap_heap_regs->globals_module);
Yap_heap_regs->swi_module = AtomTermAdjust(Yap_heap_regs->swi_module);
Yap_heap_regs->dbload_module = AtomTermAdjust(Yap_heap_regs->dbload_module);

View File

@ -134,10 +134,6 @@ static void RestoreWorker(int wid USES_REGS) {
#if MULTIPLE_STACKS
#endif
#ifdef THREADS
#define FOREIGN_ThreadHandle(wid) (Yap_WLocal[(wid)]->thread_handle)

View File

@ -124,6 +124,8 @@
#define AtomCutBy Yap_heap_regs->AtomCutBy_
Atom AtomDAbort_;
#define AtomDAbort Yap_heap_regs->AtomDAbort_
Atom AtomDBLoad_;
#define AtomDBLoad Yap_heap_regs->AtomDBLoad_
Atom AtomDBREF_;
#define AtomDBREF Yap_heap_regs->AtomDBREF_
Atom AtomDBReference_;

View File

@ -296,6 +296,7 @@ PL_SOURCES= \
$(srcdir)/pl/consult.yap \
$(srcdir)/pl/control.yap \
$(srcdir)/pl/corout.yap $(srcdir)/pl/debug.yap \
$(srcdir)/pl/dbload.yap \
$(srcdir)/pl/depth_bound.yap \
$(srcdir)/pl/dialect.yap \
$(srcdir)/pl/directives.yap \

View File

@ -17,13 +17,11 @@
** General Configuration Parameters **
************************************************************************/
/**********************************************************
** memory alloc scheme (mandatory, define one) **
**********************************************************/
/****************************************************************
** use shared pages memory alloc scheme ? (optional) **
****************************************************************/
#define YAP_MEMORY_ALLOC_SCHEME 1
/* #define MALLOC_MEMORY_ALLOC_SCHEME 1 */
/* #define OPTYAP_PAGES_MEMORY_ALLOC_SCHEME 1 */
/* #define USE_PAGES_MALLOC 1 */
@ -94,7 +92,7 @@
** memory mapping scheme (mandatory, define one) **
************************************************************/
#define MMAP_MEMORY_MAPPING_SCHEME 1
//#define SHM_MEMORY_MAPPING_SCHEME 1
/* #define SHM_MEMORY_MAPPING_SCHEME 1 */
/*************************************************
** enable error checking ? (optional) **
@ -153,23 +151,9 @@
** Parameter Checks **
************************************************************************/
#if !defined(OPTYAP_PAGES_MEMORY_ALLOC_SCHEME) && !defined(MALLOC_MEMORY_ALLOC_SCHEME) && !defined(YAP_MEMORY_ALLOC_SCHEME)
#error Define a memory alloc scheme
#endif /* !OPTYAP_PAGES_MEMORY_ALLOC_SCHEME && !MALLOC_MEMORY_ALLOC_SCHEME && !YAP_MEMORY_ALLOC_SCHEME */
#if (defined(OPTYAP_PAGES_MEMORY_ALLOC_SCHEME) && (defined(MALLOC_MEMORY_ALLOC_SCHEME) || defined(YAP_MEMORY_ALLOC_SCHEME))) || (defined(MALLOC_MEMORY_ALLOC_SCHEME) && defined(YAP_MEMORY_ALLOC_SCHEME))
#error Do not define multiple memory alloc schemes
#endif /* (OPTYAP_PAGES_MEMORY_ALLOC_SCHEME && (MALLOC_MEMORY_ALLOC_SCHEME || YAP_MEMORY_ALLOC_SCHEME)) || (MALLOC_MEMORY_ALLOC_SCHEME && YAP_MEMORY_ALLOC_SCHEME) */
#ifdef USE_SYSTEM_MALLOC
#define MALLOC_MEMORY_ALLOC_SCHEME 1
#undef YAP_MEMORY_ALLOC_SCHEME
#undef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#endif /* USE_SYSTEM_MALLOC */
#if defined(YAPOR) && defined(MALLOC_MEMORY_ALLOC_SCHEME)
#error YAPOR is incompatible with MALLOC_MEMORY_ALLOC_SCHEME
#endif /* YAPOR && MALLOC_MEMORY_ALLOC_SCHEME */
#ifndef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifndef USE_PAGES_MALLOC
#undef LIMIT_TABLING
#endif /* !OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* !USE_PAGES_MALLOC */
#ifdef YAPOR
#ifdef i386 /* For i386 machines we use shared memory segments */

View File

@ -40,7 +40,7 @@
** Macros **
*********************/
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#define STRUCTS_PER_PAGE(STR_TYPE) ((Yap_page_size - STRUCT_SIZE(struct page_header)) / STRUCT_SIZE(STR_TYPE))
#define INIT_PAGES(PG, STR_TYPE) \
@ -51,7 +51,7 @@
Pg_free_pg(PG) = NULL
#else
#define INIT_PAGES(PG, STR_TYPE) Pg_str_in_use(PG) = 0
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
@ -233,9 +233,9 @@ void make_root_frames(void) {
void init_workers(void) {
CACHE_REGS
int proc;
#ifdef THREADS
#ifdef YAPOR_THREADS
return;
#endif
#endif /* YAPOR_THREADS */
#ifdef YAPOR_COW
if (Yap_number_workers> 1) {
int son;

View File

@ -17,9 +17,9 @@
extern int Yap_page_size;
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#include <sys/shm.h>
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
#define SHMMAX 0x2000000 /* 32 Mbytes: works fine with linux */
/* #define SHMMAX 0x400000 - 4 Mbytes: shmget limit for Mac (?) */
@ -45,9 +45,9 @@ extern int Yap_page_size;
#define UPDATE_STATS(STAT, VALUE) STAT += VALUE
#ifdef MALLOC_MEMORY_ALLOC_SCHEME
#ifdef USE_SYSTEM_MALLOC
/*************************************************************************************************
** MALLOC_MEMORY_ALLOC_SCHEME **
** USE_SYSTEM_MALLOC **
*************************************************************************************************/
#define ALLOC_BLOCK(STR, SIZE, STR_TYPE) \
if ((STR = (STR_TYPE *) malloc(SIZE)) == NULL) \
@ -56,7 +56,7 @@ extern int Yap_page_size;
free(STR)
#else
/*************************************************************************************************
** ! MALLOC_MEMORY_ALLOC_SCHEME **
** ! USE_SYSTEM_MALLOC **
*************************************************************************************************/
#define ALLOC_BLOCK(STR, SIZE, STR_TYPE) \
{ char *block_ptr; \
@ -79,22 +79,49 @@ extern int Yap_page_size;
#endif /*****************************************************************************************/
#if defined(MALLOC_MEMORY_ALLOC_SCHEME) || defined(YAP_MEMORY_ALLOC_SCHEME)
#ifdef USE_PAGES_MALLOC
/*************************************************************************************************
** MALLOC_MEMORY_ALLOC_SCHEME || YAP_MEMORY_ALLOC_SCHEME **
** USE_PAGES_MALLOC **
*************************************************************************************************/
#define ALLOC_STRUCT(STR, STR_PAGES, STR_TYPE) \
UPDATE_STATS(Pg_str_in_use(STR_PAGES), 1); \
ALLOC_BLOCK(STR, sizeof(STR_TYPE), STR_TYPE)
#define ALLOC_NEXT_FREE_STRUCT(STR, STR_PAGES, STR_TYPE) \
ALLOC_STRUCT(STR, STR_PAGES, STR_TYPE)
#define FREE_PAGE(PG_HD) \
LOCK(Pg_lock(Yap_pages_void)); \
UPDATE_STATS(Pg_str_in_use(Yap_pages_void), -1); \
PgHd_next(PG_HD) = Pg_free_pg(Yap_pages_void); \
Pg_free_pg(Yap_pages_void) = PG_HD; \
UNLOCK(Pg_lock(Yap_pages_void))
#define FREE_STRUCT(STR, STR_PAGES, STR_TYPE) \
UPDATE_STATS(Pg_str_in_use(STR_PAGES), -1); \
FREE_BLOCK(STR)
#elif OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
{ pg_hd_ptr pg_hd; \
pg_hd = PAGE_HEADER(STR); \
LOCK(Pg_lock(STR_PAGES)); \
UPDATE_STATS(Pg_str_in_use(STR_PAGES), -1); \
if (--PgHd_str_in_use(pg_hd) == 0) { \
UPDATE_STATS(Pg_pg_alloc(STR_PAGES), -1); \
if (PgHd_previous(pg_hd)) { \
if ((PgHd_next(PgHd_previous(pg_hd)) = PgHd_next(pg_hd)) != NULL) \
PgHd_previous(PgHd_next(pg_hd)) = PgHd_previous(pg_hd); \
} else { \
if ((Pg_free_pg(STR_PAGES) = PgHd_next(pg_hd)) != NULL) \
PgHd_previous(PgHd_next(pg_hd)) = NULL; \
} \
UNLOCK(Pg_lock(STR_PAGES)); \
FREE_PAGE(pg_hd); \
} else { \
if ((STRUCT_NEXT(STR) = (STR_TYPE *) PgHd_free_str(pg_hd)) == NULL) { \
PgHd_previous(pg_hd) = NULL; \
if ((PgHd_next(pg_hd) = Pg_free_pg(STR_PAGES)) != NULL) \
PgHd_previous(PgHd_next(pg_hd)) = pg_hd; \
Pg_free_pg(STR_PAGES) = pg_hd; \
} \
PgHd_free_str(pg_hd) = (void *) STR; \
UNLOCK(Pg_lock(STR_PAGES)); \
} \
}
#ifdef LIMIT_TABLING
/*************************************************************************************************
** OPTYAP_PAGES_MEMORY_ALLOC_SCHEME && LIMIT_TABLING **
** USE_PAGES_MALLOC && LIMIT_TABLING **
*************************************************************************************************/
#define INIT_PAGE(PG_HD, STR_PAGES, STR_TYPE) \
{ int i; \
@ -233,7 +260,7 @@ extern int Yap_page_size;
LOCAL_next_free_ans_node = STRUCT_NEXT(STR)
#else
/*************************************************************************************************
** OPTYAP_PAGES_MEMORY_ALLOC_SCHEME && !LIMIT_TABLING **
** USE_PAGES_MALLOC && ! LIMIT_TABLING **
*************************************************************************************************/
#define ALLOC_PAGE(PG_HD) \
LOCK(Pg_lock(Yap_pages_void)); \
@ -328,45 +355,22 @@ extern int Yap_page_size;
} \
LOCAL_next_free_ans_node = STRUCT_NEXT(STR)
#endif /* LIMIT_TABLING */
#else /* ! USE_PAGES_MALLOC */
/*************************************************************************************************
** OPTYAP_PAGES_MEMORY_ALLOC_SCHEME **
** ! USE_PAGES_MALLOC **
*************************************************************************************************/
#define FREE_PAGE(PG_HD) \
LOCK(Pg_lock(Yap_pages_void)); \
UPDATE_STATS(Pg_str_in_use(Yap_pages_void), -1); \
PgHd_next(PG_HD) = Pg_free_pg(Yap_pages_void); \
Pg_free_pg(Yap_pages_void) = PG_HD; \
UNLOCK(Pg_lock(Yap_pages_void))
#define ALLOC_STRUCT(STR, STR_PAGES, STR_TYPE) \
UPDATE_STATS(Pg_str_in_use(STR_PAGES), 1); \
ALLOC_BLOCK(STR, sizeof(STR_TYPE), STR_TYPE)
#define ALLOC_NEXT_FREE_STRUCT(STR, STR_PAGES, STR_TYPE) \
ALLOC_STRUCT(STR, STR_PAGES, STR_TYPE)
#define FREE_STRUCT(STR, STR_PAGES, STR_TYPE) \
{ pg_hd_ptr pg_hd; \
pg_hd = PAGE_HEADER(STR); \
LOCK(Pg_lock(STR_PAGES)); \
UPDATE_STATS(Pg_str_in_use(STR_PAGES), -1); \
if (--PgHd_str_in_use(pg_hd) == 0) { \
UPDATE_STATS(Pg_pg_alloc(STR_PAGES), -1); \
if (PgHd_previous(pg_hd)) { \
if ((PgHd_next(PgHd_previous(pg_hd)) = PgHd_next(pg_hd)) != NULL) \
PgHd_previous(PgHd_next(pg_hd)) = PgHd_previous(pg_hd); \
} else { \
if ((Pg_free_pg(STR_PAGES) = PgHd_next(pg_hd)) != NULL) \
PgHd_previous(PgHd_next(pg_hd)) = NULL; \
} \
UNLOCK(Pg_lock(STR_PAGES)); \
FREE_PAGE(pg_hd); \
} else { \
if ((STRUCT_NEXT(STR) = (STR_TYPE *) PgHd_free_str(pg_hd)) == NULL) { \
PgHd_previous(pg_hd) = NULL; \
if ((PgHd_next(pg_hd) = Pg_free_pg(STR_PAGES)) != NULL) \
PgHd_previous(PgHd_next(pg_hd)) = pg_hd; \
Pg_free_pg(STR_PAGES) = pg_hd; \
} \
PgHd_free_str(pg_hd) = (void *) STR; \
UNLOCK(Pg_lock(STR_PAGES)); \
} \
}
UPDATE_STATS(Pg_str_in_use(STR_PAGES), -1); \
FREE_BLOCK(STR)
#endif /*****************************************************************************************/
#define ALLOC_HASH_BUCKETS(BUCKET_PTR, NUM_BUCKETS) \
{ int i; void **bucket_ptr; \
ALLOC_BLOCK(bucket_ptr, NUM_BUCKETS * sizeof(void *), void *); \

View File

@ -21,13 +21,13 @@
#define OPT_MAVAR_STATIC inline static
#endif /* !OPT_MAVAR_STATIC */
OPT_MAVAR_STATIC unsigned int Yap_MAVAR_HASH(CELL *addr);
OPT_MAVAR_STATIC struct ma_h_entry * Yap_ALLOC_NEW_MASPACE(void);
OPT_MAVAR_STATIC int Yap_lookup_ma_var(CELL *addr);
OPT_MAVAR_STATIC UInt Yap_NEW_MAHASH(ma_h_inner_struct *top);
OPT_MAVAR_STATIC unsigned int Yap_MAVAR_HASH(CELL *addr USES_REGS);
OPT_MAVAR_STATIC struct ma_h_entry * Yap_ALLOC_NEW_MASPACE(USES_REGS1);
OPT_MAVAR_STATIC int Yap_lookup_ma_var(CELL *addr USES_REGS);
OPT_MAVAR_STATIC UInt Yap_NEW_MAHASH(ma_h_inner_struct *top USES_REGS);
OPT_MAVAR_STATIC unsigned int
Yap_MAVAR_HASH(CELL *addr) {
Yap_MAVAR_HASH(CELL *addr USES_REGS) {
#if SIZEOF_INT_P==8
return((((unsigned int)((CELL)(addr)))>>3)%MAVARS_HASH_SIZE);
#else
@ -36,7 +36,7 @@ Yap_MAVAR_HASH(CELL *addr) {
}
OPT_MAVAR_STATIC struct ma_h_entry *
Yap_ALLOC_NEW_MASPACE(void)
Yap_ALLOC_NEW_MASPACE(USES_REGS1)
{
ma_h_inner_struct *new = LOCAL_ma_h_top;
LOCAL_ma_h_top++;
@ -44,8 +44,8 @@ Yap_ALLOC_NEW_MASPACE(void)
}
OPT_MAVAR_STATIC int
Yap_lookup_ma_var(CELL *addr) {
unsigned int i = Yap_MAVAR_HASH(addr);
Yap_lookup_ma_var(CELL *addr USES_REGS) {
unsigned int i = Yap_MAVAR_HASH(addr PASS_REGS);
struct ma_h_entry *nptr, *optr;
if (LOCAL_ma_hash_table[i].timestmp != LOCAL_ma_timestamp) {
@ -65,14 +65,14 @@ Yap_lookup_ma_var(CELL *addr) {
optr = nptr;
nptr = nptr->next;
}
nptr = Yap_ALLOC_NEW_MASPACE();
nptr = Yap_ALLOC_NEW_MASPACE(PASS_REGS1);
nptr->addr = addr;
nptr->next = optr;
return FALSE;
}
OPT_MAVAR_STATIC UInt
Yap_NEW_MAHASH(ma_h_inner_struct *top) {
Yap_NEW_MAHASH(ma_h_inner_struct *top USES_REGS) {
UInt time = ++LOCAL_ma_timestamp;
if (time == 0) {
unsigned int i;

View File

@ -16,7 +16,7 @@
**************************************/
#include "Yap.h"
#if defined(YAPOR) && !defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
@ -72,7 +72,7 @@ void Yap_init_optyap_memory(long TrailAuxArea, long HeapArea, long GlobalLocalAr
#endif /* MMAP_MEMORY_MAPPING_SCHEME */
#else /* YAPOR_COPY || YAPOR_SBA */
long TotalArea;
#endif /* YAPOR_MODEL */
#endif
long ExtraArea;
HeapArea = ADJUST_SIZE_TO_PAGE(HeapArea);
@ -97,7 +97,7 @@ void Yap_init_optyap_memory(long TrailAuxArea, long HeapArea, long GlobalLocalAr
/* the others need n stacks */
Yap_worker_area_size = ADJUST_SIZE_TO_PAGE(GlobalLocalArea + TrailAuxArea);
TotalArea = ExtraArea + HeapArea + Yap_worker_area_size * n_workers;
#endif /* YAPOR_MODEL */
#endif
#ifdef MMAP_MEMORY_MAPPING_SCHEME
/* map total area in a single go */
@ -116,7 +116,7 @@ void Yap_init_optyap_memory(long TrailAuxArea, long HeapArea, long GlobalLocalAr
for (i = 0; i < n_workers; i++)
shm_map_memory(i, Yap_worker_area_size, Yap_GlobalBase + Yap_worker_area_size * i);
}
#endif /* YAPOR_MODEL */
#endif
#endif /* MEMORY_MAPPING_SCHEME */
#ifdef YAPOR_COW
@ -220,7 +220,7 @@ void Yap_unmap_optyap_memory (void) {
itos(Yap_master_worker, &MapFile[9]);
#else /* YAPOR_COPY || YAPOR_SBA */
itos(Yap_worker_pid(0), &MapFile[9]);
#endif /* YAPOR_MODEL */
#endif
if (remove(MapFile) == 0)
INFORMATION_MESSAGE("Removing mapfile \"%s\"", MapFile);
else
@ -230,7 +230,7 @@ void Yap_unmap_optyap_memory (void) {
i = 0;
#else /* YAPOR_COPY || YAPOR_SBA */
for (i = 0; i < Yap_number_workers + 1; i++)
#endif /* YAPOR_COW */
#endif
{
if (shmctl(shm_mapid[i], IPC_RMID, 0) == 0)
INFORMATION_MESSAGE("Removing shared memory segment %d", shm_mapid[i]);
@ -271,5 +271,4 @@ void shm_map_memory(int id, int size, void *shmaddr) {
return;
}
#endif /* MMAP_MEMORY_MAPPING_SCHEME */
#endif /* YAPOR && !THREADS */
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA */

View File

@ -37,7 +37,6 @@
#ifdef TABLING
static Int p_freeze_choice_point( USES_REGS1 );
static Int p_wake_choice_point( USES_REGS1 );
static Int p_reset_frozen_choice_points( USES_REGS1 );
static Int p_abolish_frozen_choice_points_until( USES_REGS1 );
static Int p_abolish_frozen_choice_points_all( USES_REGS1 );
static Int p_table( USES_REGS1 );
@ -340,7 +339,6 @@ static Int p_abolish_table( USES_REGS1 ) {
sg_node = TrNode_child(TabEnt_subgoal_trie(tab_ent));
if (sg_node) {
if (TabEnt_arity(tab_ent)) {
TrNode_child(TabEnt_subgoal_trie(tab_ent)) = NULL;
free_subgoal_trie(sg_node, TRAVERSE_MODE_NORMAL, TRAVERSE_POSITION_FIRST);
} else {
sg_fr_ptr sg_fr = UNTAG_SUBGOAL_LEAF_NODE(sg_node);
@ -350,6 +348,7 @@ static Int p_abolish_table( USES_REGS1 ) {
#endif /* LIMIT_TABLING */
FREE_SUBGOAL_FRAME(sg_fr);
}
TrNode_child(TabEnt_subgoal_trie(tab_ent)) = NULL;
}
return (TRUE);
}
@ -368,7 +367,6 @@ static Int p_abolish_all_tables( USES_REGS1 ) {
sg_node = TrNode_child(TabEnt_subgoal_trie(tab_ent));
if (sg_node) {
if (TabEnt_arity(tab_ent)) {
TrNode_child(TabEnt_subgoal_trie(tab_ent)) = NULL;
free_subgoal_trie(sg_node, TRAVERSE_MODE_NORMAL, TRAVERSE_POSITION_FIRST);
} else {
sg_fr_ptr sg_fr = UNTAG_SUBGOAL_LEAF_NODE(sg_node);
@ -378,6 +376,7 @@ static Int p_abolish_all_tables( USES_REGS1 ) {
#endif /* LIMIT_TABLING */
FREE_SUBGOAL_FRAME(sg_fr);
}
TrNode_child(TabEnt_subgoal_trie(tab_ent)) = NULL;
}
tab_ent = TabEnt_next(tab_ent);
}
@ -477,14 +476,14 @@ static Int p_show_statistics_tabling( USES_REGS1 ) {
aux_bytes += show_statistics_global_trie_hashes();
fprintf(Yap_stdout, " Memory in use (III): %10ld bytes\n\n", aux_bytes);
total_bytes += aux_bytes;
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
fprintf(Yap_stdout, "Total memory in use (I+II+III): %10ld bytes (%ld pages in use)\n",
total_bytes, Pg_str_in_use(Yap_pages_void));
fprintf(Yap_stdout, "Total memory allocated: %10ld bytes (%ld pages in total)\n",
Pg_pg_alloc(Yap_pages_void) * Yap_page_size, Pg_pg_alloc(Yap_pages_void));
#else
fprintf(Yap_stdout, "Total memory in use (I+II+III): %10ld bytes\n", total_bytes);
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return (TRUE);
}
@ -501,7 +500,7 @@ static Int p_show_statistics_global_trie( USES_REGS1 ) {
*********************************/
static Int p_yapor_threads( USES_REGS1 ) {
#if defined(YAPOR) && defined(THREADS)
#ifdef YAPOR_THREADS
return Yap_unify(MkIntegerTerm(Yap_number_workers),ARG1);
#else
return FALSE;
@ -713,14 +712,14 @@ static Int p_show_statistics_or( USES_REGS1 ) {
aux_bytes += show_statistics_query_goal_answer_frames();
fprintf(Yap_stdout, " Memory in use (II): %10ld bytes\n\n", aux_bytes);
total_bytes += aux_bytes;
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
fprintf(Yap_stdout, "Total memory in use (I+II+III): %10ld bytes (%ld pages in use)\n",
total_bytes, Pg_str_in_use(Yap_pages_void));
fprintf(Yap_stdout, "Total memory allocated: %10ld bytes (%ld pages in total)\n",
Pg_pg_alloc(Yap_pages_void) * Yap_page_size, Pg_pg_alloc(Yap_pages_void));
#else
fprintf(Yap_stdout, "Total memory in use (I+II+III): %10ld bytes\n", total_bytes);
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return (TRUE);
}
@ -769,14 +768,14 @@ static Int p_show_statistics_opt( USES_REGS1 ) {
#endif /* TABLING_INNER_CUTS */
fprintf(Yap_stdout, " Memory in use (IV): %10ld bytes\n\n", aux_bytes);
total_bytes += aux_bytes;
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
fprintf(Yap_stdout, "Total memory in use (I+II+III+IV): %10ld bytes (%ld pages in use)\n",
total_bytes, Pg_str_in_use(Yap_pages_void));
fprintf(Yap_stdout, "Total memory allocated: %10ld bytes (%ld pages in total)\n",
Pg_pg_alloc(Yap_pages_void) * Yap_page_size, Pg_pg_alloc(Yap_pages_void));
#else
fprintf(Yap_stdout, "Total memory in use (I+II+III+IV): %10ld bytes\n", total_bytes);
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return (TRUE);
}
@ -813,11 +812,11 @@ static Int p_get_optyap_statistics( USES_REGS1 ) {
bytes += Pg_str_in_use(Yap_pages_tg_ans_fr) * sizeof(struct table_subgoal_answer_frame);
#endif /* TABLING_INNER_CUTS */
#endif /* YAPOR && TABLING */
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
structs = Pg_pg_alloc(Yap_pages_void) * Yap_page_size;
#else
structs = bytes;
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
}
#ifdef TABLING
if (value == 1) { /* table_entries */
@ -1025,7 +1024,7 @@ static inline void answer_to_stdout(char *answer) {
#ifdef TABLING
static inline long show_statistics_table_entries(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
tab_ent_ptr aux_ptr;
@ -1047,13 +1046,13 @@ static inline long show_statistics_table_entries(void) {
#else
fprintf(Yap_stdout, " Table entries: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_tab_ent) * sizeof(struct table_entry), Pg_str_in_use(Yap_pages_tab_ent));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_tab_ent) * sizeof(struct table_entry);
}
static inline long show_statistics_subgoal_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
sg_fr_ptr aux_ptr;
@ -1075,13 +1074,13 @@ static inline long show_statistics_subgoal_frames(void) {
#else
fprintf(Yap_stdout, " Subgoal frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_sg_fr) * sizeof(struct subgoal_frame), Pg_str_in_use(Yap_pages_sg_fr));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_sg_fr) * sizeof(struct subgoal_frame);
}
static inline long show_statistics_dependency_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
dep_fr_ptr aux_ptr;
@ -1103,13 +1102,13 @@ static inline long show_statistics_dependency_frames(void) {
#else
fprintf(Yap_stdout, " Dependency frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_dep_fr) * sizeof(struct dependency_frame), Pg_str_in_use(Yap_pages_dep_fr));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_dep_fr) * sizeof(struct dependency_frame);
}
static inline long show_statistics_subgoal_trie_nodes(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
sg_node_ptr aux_ptr;
@ -1131,13 +1130,13 @@ static inline long show_statistics_subgoal_trie_nodes(void) {
#else
fprintf(Yap_stdout, " Subgoal trie nodes: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_sg_node) * sizeof(struct subgoal_trie_node), Pg_str_in_use(Yap_pages_sg_node));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_sg_node) * sizeof(struct subgoal_trie_node);
}
static inline long show_statistics_answer_trie_nodes(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
ans_node_ptr aux_ptr;
@ -1159,13 +1158,13 @@ static inline long show_statistics_answer_trie_nodes(void) {
#else
fprintf(Yap_stdout, " Answer trie nodes: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_ans_node) * sizeof(struct answer_trie_node), Pg_str_in_use(Yap_pages_ans_node));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_ans_node) * sizeof(struct answer_trie_node);
}
static inline long show_statistics_subgoal_trie_hashes(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
sg_hash_ptr aux_ptr;
@ -1187,13 +1186,13 @@ static inline long show_statistics_subgoal_trie_hashes(void) {
#else
fprintf(Yap_stdout, " Subgoal trie hashes: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_sg_hash) * sizeof(struct subgoal_trie_hash), Pg_str_in_use(Yap_pages_sg_hash));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_sg_hash) * sizeof(struct subgoal_trie_hash);
}
static inline long show_statistics_answer_trie_hashes(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
ans_hash_ptr aux_ptr;
@ -1215,13 +1214,13 @@ static inline long show_statistics_answer_trie_hashes(void) {
#else
fprintf(Yap_stdout, " Answer trie hashes: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_ans_hash) * sizeof(struct answer_trie_hash), Pg_str_in_use(Yap_pages_ans_hash));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_ans_hash) * sizeof(struct answer_trie_hash);
}
static inline long show_statistics_global_trie_nodes(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
gt_node_ptr aux_ptr;
@ -1243,13 +1242,13 @@ static inline long show_statistics_global_trie_nodes(void) {
#else
fprintf(Yap_stdout, " Global trie nodes: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_gt_node) * sizeof(struct global_trie_node), Pg_str_in_use(Yap_pages_gt_node));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_gt_node) * sizeof(struct global_trie_node);
}
static inline long show_statistics_global_trie_hashes(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_TABLING
pg_hd_ptr pg_hd;
gt_hash_ptr aux_ptr;
@ -1271,7 +1270,7 @@ static inline long show_statistics_global_trie_hashes(void) {
#else
fprintf(Yap_stdout, " Global trie hashes: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_gt_hash) * sizeof(struct global_trie_hash), Pg_str_in_use(Yap_pages_gt_hash));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_gt_hash) * sizeof(struct global_trie_hash);
}
#endif /* TABLING */
@ -1279,7 +1278,7 @@ static inline long show_statistics_global_trie_hashes(void) {
#ifdef YAPOR
static inline long show_statistics_or_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_YAPOR
pg_hd_ptr pg_hd;
or_fr_ptr aux_ptr;
@ -1301,13 +1300,13 @@ static inline long show_statistics_or_frames(void) {
#else
fprintf(Yap_stdout, " Or-frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_or_fr ) * sizeof(struct or_frame), Pg_str_in_use(Yap_pages_or_fr ));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_or_fr ) * sizeof(struct or_frame);
}
static inline long show_statistics_query_goal_solution_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_YAPOR
pg_hd_ptr pg_hd;
qg_sol_fr_ptr aux_ptr;
@ -1329,13 +1328,13 @@ static inline long show_statistics_query_goal_solution_frames(void) {
#else
fprintf(Yap_stdout, " Query goal solution frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_qg_sol_fr ) * sizeof(struct query_goal_solution_frame), Pg_str_in_use(Yap_pages_qg_sol_fr ));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_qg_sol_fr ) * sizeof(struct query_goal_solution_frame);
}
static inline long show_statistics_query_goal_answer_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_YAPOR
pg_hd_ptr pg_hd;
qg_ans_fr_ptr aux_ptr;
@ -1353,11 +1352,11 @@ static inline long show_statistics_query_goal_answer_frames(void) {
YAPOR_ERROR_CHECKING(statistics_query_goal_answer_frames, Pg_str_free(Yap_pages_qg_ans_fr) != cont);
#endif /* DEBUG_YAPOR */
fprintf(Yap_stdout, " Query goal answer frames: %10ld bytes (%ld pages and %ld structs in use)\n",
Pg_str_in_use(Yap_pages_qg_ans_fr) * sizeof(struct query_goal_answer_frame), Pg_pg_alloc(Yap_pages_qg_ans__fr), Pg_str_in_use(Yap_pages_qg_ans_fr));
Pg_str_in_use(Yap_pages_qg_ans_fr) * sizeof(struct query_goal_answer_frame), Pg_pg_alloc(Yap_pages_qg_ans_fr), Pg_str_in_use(Yap_pages_qg_ans_fr));
#else
fprintf(Yap_stdout, " Query goal answer frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_qg_ans_fr) * sizeof(struct query_goal_answer_frame), Pg_str_in_use(Yap_pages_qg_ans_fr));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_qg_ans_fr) * sizeof(struct query_goal_answer_frame);
}
#endif /* YAPOR */
@ -1365,7 +1364,7 @@ static inline long show_statistics_query_goal_answer_frames(void) {
#if defined(YAPOR) && defined(TABLING)
static inline long show_statistics_suspension_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_OPTYAP
pg_hd_ptr pg_hd;
susp_fr_ptr aux_ptr;
@ -1387,14 +1386,14 @@ static inline long show_statistics_suspension_frames(void) {
#else
fprintf(Yap_stdout, " Suspension frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_susp_fr) * sizeof(struct suspension_frame), Pg_str_in_use(Yap_pages_susp_fr));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_susp_fr) * sizeof(struct suspension_frame);
}
#ifdef TABLING_INNER_CUTS
static inline long show_statistics_table_subgoal_solution_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_OPTYAP
pg_hd_ptr pg_hd;
tg_sol_fr_ptr aux_ptr;
@ -1416,13 +1415,13 @@ static inline long show_statistics_table_subgoal_solution_frames(void) {
#else
fprintf(Yap_stdout, " Table subgoal solution frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_tg_sol_fr) * sizeof(struct table_subgoal_solution_frame), Pg_str_in_use(Yap_pages_tg_sol_fr));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_tg_sol_fr) * sizeof(struct table_subgoal_solution_frame);
}
static inline long show_statistics_table_subgoal_answer_frames(void) {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef DEBUG_OPTYAP
pg_hd_ptr pg_hd;
tg_ans_fr_ptr aux_ptr;
@ -1444,7 +1443,7 @@ static inline long show_statistics_table_subgoal_answer_frames(void) {
#else
fprintf(Yap_stdout, " Table subgoal answer frames: %10ld bytes (%ld structs in use)\n",
Pg_str_in_use(Yap_pages_tg_ans_fr) * sizeof(struct table_subgoal_answer_frame), Pg_str_in_use(Yap_pages_tg_ans_fr));
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
return Pg_str_in_use(Yap_pages_tg_ans_fr) * sizeof(struct table_subgoal_answer_frame);
}
#endif /* TABLING_INNER_CUTS */

View File

@ -18,7 +18,7 @@
typedef double realtime;
typedef unsigned long bitmap;
#ifdef THREADS
#ifdef YAPOR_THREADS
/* Threads may not assume addresses are the same at different workers */
static inline choiceptr
offset_to_cptr(Int node)
@ -49,7 +49,7 @@ cptr_to_offset_with_null(choiceptr node)
if (node == NULL) return 0L;
return (Int)((CELL *)node-LCL0);
}
#endif /* THREADS */
#endif /* YAPOR_THREADS */
@ -76,14 +76,14 @@ typedef struct page_header {
***************************/
struct pages {
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
#ifdef YAPOR
lockvar lock;
#endif /* YAPOR */
int structs_per_page;
struct page_header *first_free_page;
volatile long pages_allocated;
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
volatile long structs_in_use;
};
@ -182,7 +182,7 @@ struct global_optyap_data{
char performance_mode; /* PERFORMANCE_OFF / PERFORMANCE_ON / PERFORMANCE_IN_EXECUTION */
/* global data related to or-parallelism */
#if THREADS
#ifdef YAPOR_THREADS
Int root_choice_point_offset;
#else
choiceptr root_choice_point;
@ -250,7 +250,7 @@ struct global_optyap_data{
#define Yap_best_times(time) (Yap_optyap_data.best_execution_times[time])
#define Yap_number_goals (Yap_optyap_data.number_of_executed_goals)
#define Yap_performance_mode (Yap_optyap_data.performance_mode)
#if THREADS
#ifdef YAPOR_THREADS
#define Get_Yap_root_cp() offset_to_cptr(Yap_optyap_data.root_choice_point_offset)
#define Set_Yap_root_cp(bptr) (Yap_optyap_data.root_choice_point_offset = cptr_to_offset(bptr))
#else
@ -299,7 +299,7 @@ struct global_optyap_data{
#ifdef YAPOR
struct local_signals{
#if defined(YAPOR_COPY) || defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_THREADS)
lockvar lock;
volatile enum {
Q_idle = 0,
@ -308,7 +308,7 @@ struct local_signals{
local = 3,
P_idle = 4
} P_fase, Q_fase;
#endif /* YAPOR_COPY || THREADS */
#endif /* YAPOR_COPY || YAPOR_THREADS */
volatile enum {
no_sharing = 0,
sharing = 1,
@ -346,19 +346,17 @@ typedef struct {
********************************/
struct local_data{
#if defined(YAPOR) || defined(THREADS)
lockvar lock;
#endif
#ifdef YAPOR
lockvar lock;
/* local data related to or-parallelism */
volatile int load;
#if THREADS
#ifdef YAPOR_THREADS
Int top_choice_point_offset;
#else
choiceptr top_choice_point;
#endif
struct or_frame *top_or_frame;
#if THREADS
#ifdef YAPOR_THREADS
Int prune_request_offset;
#else
choiceptr prune_request;
@ -380,7 +378,7 @@ struct local_data{
choiceptr bottom_pruning_scope;
#endif /* TABLING_INNER_CUTS */
#ifdef YAPOR
#ifdef THREADS
#ifdef YAPOR_THREADS
Int top_choice_point_on_stack_offset;
#else
choiceptr top_choice_point_on_stack;
@ -398,7 +396,7 @@ struct local_data{
#define LOCAL_lock (LOCAL->lock)
#define LOCAL_load (LOCAL->load)
#if THREADS
#ifdef YAPOR_THREADS
#define Get_LOCAL_top_cp() offset_to_cptr(LOCAL->top_choice_point_offset)
#define Set_LOCAL_top_cp(cpt) (LOCAL->top_choice_point_offset = cptr_to_offset(cpt))
#else
@ -407,7 +405,7 @@ struct local_data{
#define Set_LOCAL_top_cp(cpt) (LOCAL->top_choice_point = cpt)
#endif
#define LOCAL_top_or_fr (LOCAL->top_or_frame)
#if THREADS
#ifdef YAPOR_THREADS
#define Get_LOCAL_prune_request() offset_to_cptr_with_null(LOCAL->prune_request_offset)
#define Set_LOCAL_prune_request(cpt) (LOCAL->prune_request_offset = cptr_to_offset_with_null(cpt))
#else
@ -430,7 +428,7 @@ struct local_data{
#define LOCAL_top_sg_fr (LOCAL->top_subgoal_frame)
#define LOCAL_top_dep_fr (LOCAL->top_dependency_frame)
#define LOCAL_pruning_scope (LOCAL->bottom_pruning_scope)
#if THREADS
#ifdef YAPOR_THREADS
#define Get_LOCAL_top_cp_on_stack() offset_to_cptr(LOCAL->top_choice_point_on_stack_offset)
#define Set_LOCAL_top_cp_on_stack(cpt) (LOCAL->top_choice_point_on_stack_offset = cptr_to_offset(cpt))
#else
@ -443,11 +441,10 @@ struct local_data{
#define LOCAL_ma_h_top (LOCAL->ma_h_top)
#define LOCAL_ma_hash_table (LOCAL->ma_hash_table)
#define REMOTE_lock(worker) (REMOTE[worker].lock)
#define REMOTE_load(worker) (REMOTE[worker].load)
#if THREADS
#ifdef YAPOR_THREADS
#define REMOTE_top_cp(worker) offset_to_cptr(REMOTE[worker].top_choice_point_offset)
#define Set_REMOTE_top_cp(worker, bptr) (REMOTE[worker].top_choice_point_offset = cptr_to_offset(bptr))
#else
@ -455,7 +452,7 @@ struct local_data{
#define Set_REMOTE_top_cp(worker, bptr) (REMOTE[worker].top_choice_point = (bptr))
#endif
#define REMOTE_top_or_fr(worker) (REMOTE[worker].top_or_frame)
#if THREADS
#ifdef YAPOR_THREADS
#define Get_REMOTE_prune_request(worker) offset_to_cptr_with_null(REMOTE[worker].prune_request_offset)
#define Set_REMOTE_prune_request(worker,cp) (REMOTE[worker].prune_request_offset = cptr_to_offset_with_null(cp))
#else
@ -478,7 +475,7 @@ struct local_data{
#define REMOTE_top_sg_fr(worker) (REMOTE[worker].top_subgoal_frame)
#define REMOTE_top_dep_fr(worker) (REMOTE[worker].top_dependency_frame)
#define REMOTE_pruning_scope(worker) (REMOTE[worker].bottom_pruning_scope)
#if THREADS
#ifdef YAPOR_THREADS
#define REMOTE_top_cp_on_stack(worker) offset_to_cptr(REMOTE[worker].top_choice_point_on_stack_offset)
#define Set_REMOTE_top_cp_on_stack(worker, bptr) (REMOTE[worker].top_choice_point_on_stack_offset = cptr_to_offset(bptr))
#else

View File

@ -137,7 +137,7 @@ STD_PROTO(static inline qg_sol_fr_ptr CUT_prune_solution_frames, (qg_sol_fr_ptr,
SCHEDULER_GET_WORK(); \
}
#if defined(YAPOR_COPY) || defined(YAPOR_SBA) || defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_SBA) || defined(YAPOR_THREADS)
#define SCH_check_share_request() \
if (SCH_any_share_request) { \
ASP = YENV; \
@ -151,7 +151,7 @@ STD_PROTO(static inline qg_sol_fr_ptr CUT_prune_solution_frames, (qg_sol_fr_ptr,
if (! p_share_work()) \
goto shared_fail; \
}
#endif /* YAPOR_COPY || YAPOR_SBA || YAPOR_COW */
#endif /* YAPOR_COPY || YAPOR_SBA || YAPOR_COW || YAPOR_THREADS */
#define SCH_check_requests() \
SCH_check_prune_request(); \

View File

@ -19,7 +19,7 @@ typedef struct or_frame {
lockvar lock;
yamop *alternative;
volatile bitmap members;
#ifdef THREADS
#ifdef YAPOR_THREADS
Int node_offset;
#else
choiceptr node;
@ -27,7 +27,7 @@ typedef struct or_frame {
struct or_frame *nearest_livenode;
/* cut support */
int depth;
#ifdef THREADS
#ifdef YAPOR_THREADS
Int pending_prune_cp_offset;
#else
choiceptr pending_prune_cp;
@ -51,7 +51,7 @@ typedef struct or_frame {
#define OrFr_lock(X) ((X)->lock)
#define OrFr_alternative(X) ((X)->alternative)
#define OrFr_members(X) ((X)->members)
#ifdef THREADS
#ifdef YAPOR_THREADS
#define GetOrFr_node(X) offset_to_cptr((X)->node_offset)
#define SetOrFr_node(X,V) ((X)->node_offset = cptr_to_offset(V))
#else
@ -61,7 +61,7 @@ typedef struct or_frame {
#endif
#define OrFr_nearest_livenode(X) ((X)->nearest_livenode)
#define OrFr_depth(X) ((X)->depth)
#ifdef THREADS
#ifdef YAPOR_THREADS
#define Get_OrFr_pend_prune_cp(X) offset_to_cptr_with_null((X)->pending_prune_cp_offset)
#define Set_OrFr_pend_prune_cp(X,V) ((X)->pending_prune_cp_offset = cptr_to_offset_with_null(V))
#else

View File

@ -16,7 +16,7 @@
** ------------------ */
#include "Yap.h"
#if defined(THREADS) && defined(YAPOR)
#ifdef YAPOR_THREADS
#ifdef HAVE_STRING_H
#include <string.h>
#endif /* HAVE_STRING_H */
@ -539,4 +539,4 @@ void share_private_nodes(int worker_q) {
REMOTE_load(worker_q) = LOCAL_load = 0;
return;
}
#endif /* YAPOR_COPY */
#endif /* YAPOR_THREADS */

View File

@ -164,10 +164,10 @@ static inline tg_sol_fr_ptr CUT_prune_tg_solution_frames(tg_sol_fr_ptr, int);
#define STACK_NOT_EMPTY(STACK, STACK_BASE) (STACK) != (STACK_BASE)
#define AUX_STACK_CHECK_EXPAND(STACK, STACK_LIMIT) if ((STACK_LIMIT) >= (STACK)) EXPAND_AUX_STACK(STACK)
#define STACK_CHECK_EXPAND(STACK, STACK_LIMIT) if ((STACK_LIMIT) >= (STACK)+4096) EXPAND_STACK(STACK)
#if defined(YAPOR) && !defined(THREADS)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
#define EXPAND_AUX_STACK(STACK) Yap_Error(INTERNAL_ERROR, TermNil, "stack full (AUX_STACK_CHECK_EXPAND)");
#define EXPAND_STACK(STACK) Yap_Error(INTERNAL_ERROR, TermNil, "stack full (STACK_CHECK_EXPAND)");
#else
#else /* YAPOR_THREADS */
#define EXPAND_AUX_STACK(STACK) STACK = expand_auxiliary_stack(STACK)
#define EXPAND_STACK(STACK) Yap_Error(INTERNAL_ERROR, TermNil, "stack full (STACK_CHECK_EXPAND)");
#endif /* YAPOR */

View File

@ -125,9 +125,9 @@ typedef struct global_trie_hash {
int number_of_buckets;
struct global_trie_node **buckets;
int number_of_nodes;
#ifdef OPTYAP_PAGES_MEMORY_ALLOC_SCHEME
#ifdef USE_PAGES_MALLOC
struct global_trie_hash *next;
#endif /* OPTYAP_PAGES_MEMORY_ALLOC_SCHEME */
#endif /* USE_PAGES_MALLOC */
} *gt_hash_ptr;
#define Hash_mark(X) ((X)->mark)

44
configure vendored
View File

@ -3691,24 +3691,40 @@ done
# Check whether --enable-tabling was given.
if test "${enable_tabling+set}" = set; then :
enableval=$enable_tabling; tabling="$enableval"
enableval=$enable_tabling; tabling="$enableval"
{
if test "${enable_or_parallelism+set}" = set; then :
enableval=$enable_or_parallelism; orparallelism="$enableval"
case "$orparallelism" in
yes|copy)
;;
*)
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "tabling only works with YapOr copy"; }
;;
esac
fi
}
else
tabling=no
tabling=no
fi
# Check whether --enable-or-parallelism was given.
if test "${enable_or_parallelism+set}" = set; then :
enableval=$enable_or_parallelism; orparallelism="$enableval"
case "$orparallelism" in
yes|copy|sba|cow|threads)
;;
*)
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "--enable-or-parallelism=$orparallelism invalid option"; }
;;
esac
enableval=$enable_or_parallelism; orparallelism="$enableval"
case "$orparallelism" in
yes|copy|sba|cow)
;;
threads)
enable_threads=yes
;;
*)
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "--enable-or-parallelism=$orparallelism invalid option"; }
;;
esac
else
orparallelism=no
fi
@ -7528,7 +7544,7 @@ else
YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_COW=1"
;;
threads)
YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_THREADS=1"
YAP_EXTRAS="$YAP_EXTRAS -DTHREADS=1 -DYAPOR_THREADS=1"
;;
esac
fi

View File

@ -149,14 +149,14 @@ print_usage(void)
#ifdef TABLING
fprintf(stderr," -ts Maximum table space area in Mbytes (default: unlimited)\n");
#endif /* TABLING */
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA) || defined(YAPOR_THREADS)
fprintf(stderr," -w Number of workers (default: %d)\n",
DEFAULT_NUMBERWORKERS);
fprintf(stderr," -sl Loop scheduler executions before look for hiden shared work (default: %d)\n",
DEFAULT_SCHEDULERLOOP);
fprintf(stderr," -d Value of delayed release of load (default: %d)\n",
DEFAULT_DELAYEDRELEASELOAD);
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA */
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA || YAPOR_THREADS */
/* nf: Preprocessor */
/* fprintf(stderr," -DVar=Name Persistent definition\n"); */
fprintf(stderr,"\n");
@ -245,7 +245,7 @@ parse_yap_arguments(int argc, char *argv[], YAP_init_args *iap)
case 'q':
iap->QuietMode = TRUE;
break;
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA) || defined(YAPOR_THREADS)
case 'w':
ssize = &(iap->NumberWorkers);
goto GetSize;
@ -258,7 +258,7 @@ parse_yap_arguments(int argc, char *argv[], YAP_init_args *iap)
case 'd':
if (!strcmp("dump-runtime-variables",p))
return dump_runtime_variables();
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA */
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA || YAPOR_THREADS */
#ifdef USE_SOCKET
case 'c': /* running as client */
{
@ -386,12 +386,12 @@ parse_yap_arguments(int argc, char *argv[], YAP_init_args *iap)
case 's':
case 'S':
ssize = &(iap->StackSize);
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA)
#if defined(YAPOR_COPY) || defined(YAPOR_COW) || defined(YAPOR_SBA) || defined(YAPOR_THREADS)
if (p[1] == 'l') {
p++;
ssize = &(iap->SchedulerLoop);
}
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA */
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA || YAPOR_THREADS */
goto GetSize;
case 'a':
case 'A':

View File

@ -8505,7 +8505,9 @@ Stream currently being read in.
@item term_position
@findex file (prolog_load_context/2 option)
@*
Stream position at the stream currently being read in.
Stream position at the stream currently being read in. For SWI
compatibility, it is a term of the form
@code{'$stream_position'(0,Line,0,0,0)}.
@end table
@item source_location(?@var{FileName}, ?@var{Line})

View File

@ -68,6 +68,7 @@ A CurrentModule F "$current_module"
A Cut N "!"
A CutBy F "$cut_by"
A DAbort F "$abort"
A DBLoad F "$db_load"
A DBREF N "DBRef"
A DBReference N "db_reference"
A DBTerm N "db_term"

View File

@ -99,6 +99,7 @@ Term hacks_module HACKS_MODULE MkAT AtomYapHacks
Term arg_module ARG_MODULE MkAT AtomArg
Term globals_module GLOBALS_MODULE MkAT AtomNb
Term swi_module SWI_MODULE MkAT AtomSwi
Term dbload_module DBLOAD_MODULE MkAT AtomDBLoad
//
// Module list

View File

@ -150,10 +150,6 @@ struct PL_local_data *Yap_ld_ PL_local_data_p =Yap_InitThreadIO(wid)
struct open_query_struct* _execution execution =NULL
// Ricardo's stuff
#if MULTIPLE_STACKS
struct worker worker WORKER void
#endif
#ifdef THREADS
struct thandle thread_handle ThreadHandle InitThreadHandle(wid)

View File

@ -0,0 +1,48 @@
>S13421 S13421 GLOBIN - BRINE SHRIMP
DKATIKRTWATVTDLPSFGRNVFLSVFAAK
PEYKNLFVEFRNIPASELASSERLLYHGGR
VLSSIDEAIAGIDTPDRAVKTLLALGERHI
SRGTVRRHFEAFSYAFIDELKQRGVESADL
AAWRRGWDNIVNVLEAGLLRRQIDLEVTGL
SCVDVANIQESWSKVSGDLKTTGSVVFQRM
INGHPEYQQLFRQFRDVDLDKLGESNSFVA
HVFRVVAAFDGIIHELDNNQFIVSTLKKLG
EQHIARGTDISHFQNFRVTLLEYLKENGMN
GAQKASWNKAFDAFEKYISMGLSSLKRVDP
ITGLSGLEKNAILSTWGKVRGNLQEVGKAT
FGKLFTAHPEYQQMFRFSQGMPLASLVESP
KFAAHTQRVVSALDQTLLALNRPSDFVYMI
KELGLDHINRGTDRSHFENYQVVFIEYLKE
TLGDSLDEFTVKSFNHVFEVIISFLNEGLR
QADIVDPVTHLTGRQKEMIKASWSKARTDL
RSLGQELFMRMFKAHPEYQTLFVNKGFADV
PLVSLREDERFISHMANVLGGFDTLLQNLD
ESSYFIYSLRNLGDAHIQRKAGTQHFRSFE
AILIPILQESQGLDAASVEAWKKFFDVSIG
VIAQGLKVATSEEADPVTGLYGKEIVALRQ
AFAAVTPRNVEIGKRVFAKLFAAHPEYKNL
FKKFEQYSVEELPSTDAFHYHISLVMNRFS
SIGKVIDDNVSFVYLLKKLGREHIKRGLSR
KQFDQFVELYIAEISSELSDTGRNGLEKVL
TFATGVIEQGLFQLGQVDSNTLTALEKQSI
QDIWSNLRSTGLQDLAVKIFTRLFSAHPEY
KLLFTGRFGNVDNINENAPFKAHLHRVLSA
FDIVISTLDDSEHLIRQLKDLGLFHTRLGM
TRSHFDNFATAFLSVAQDIAPNQLTVLGRE
SLNKGFKLMHGVIEEGLLQLERINPITGLS
AREVAVVKQTWNLVKPDLMGVGMRIFKSLF
EAFPAYQAVFPKFSDVPLDKLEDTPAVGKH
SISVTTKLDELIQTLDEPANLALLARQLGE
DHIVLRVNKPMFKSFGKVLVRLLENDLGQR
FSSFASRSWHKAYDVIVEYIEEGLQQSYKQ
DPVTGITDAEKALVQESWDLLKPDLLGLGR
KIFTKVFTKHPDYQILFTRTGFGDTPLTKL
DDNPAFGTHIIKVMRAFDHVIQILGKPKTL
MAYLRSVGADHIATNVERRHFQAFSNALIP
VMQHDLKAQLRPDAVAAWRKGLDRIIGIID
QGLIGLKEVNPQNAFSAYDIQAVQRTWALA
KPDLMGKGAMVFKQLFTDHGYQPLFSNLAQ
YEITGLEGSPELNTHARNVMAQLDTLVGSL
QNSIELGQSLAQLGKDHVPRKVNRVHFKDF
AEHFIPLMKADLGDEFTPLAESAWKRAFDV
MIATIEQGQEGSSHALSSFLTNPVA

View File

@ -0,0 +1,47 @@
%
% Preliminary support for FASTA format.
% Just convert sequence into string of atoms.
%
% support for a single sequence.
%
:- module(fasta, [fa2atoms/2,fa2atoms/3]).
fa2atoms(F, L) :-
fa2atoms(F, L, []).
fa2atoms(F,L,L0) :-
open(F,read,S),
get0(S,C0),
skip_header(C0,S),
get0(S,C),
read_chars(C, S, L, L0),
close(S).
read_chars(-1,_) --> [].
read_chars(10,S) --> !,
{ get0(S,MC) },
read_chars(MC,S).
read_chars(C,S) -->
[AC],
{
cvt_c(C,AC),
get0(S,MC)
},
read_chars(MC, S).
cvt_c(C,A) :-
C >= 0'A, C =< 0'Z, !,
AC is C-(0'A-0'a),
atom_codes(A,[AC]).
cvt_c(C,A) :-
C >= 0'a, C =< 0'z,
atom_codes(A,[C]).
skip_header(10,_) :- !.
skip_header(_,S) :-
get0(S,C),
skip_header(C,S).

View File

@ -0,0 +1,506 @@
HMMER2.0
NAME globins50
LENG 162
ALPH Amino
RF no
CS no
MAP yes
COM hmmbuild globin.hmm globins50.msf
COM hmmcalibrate globin.hmm
NSEQ 50
DATE Tue Aug 16 16:12:11 2005
CKSUM 8939
XT -8455 -4 -1000 -1000 -8455 -4 -8455 -4
NULT -4 -8455
NULE 595 -1558 85 338 -294 453 -1158 197 249 902 -1085 -142 -21 -313 45 531 201 384 -1998 -644
EVD -107.906906 0.177814
HMM A C D E F G H I K L M N P Q R S T V W Y
m->m m->i m->d i->m i->i d->m d->d b->m m->e
-110 * -3765
1 -1412 -1712 -339 -321 -1729 113 -1457 261 -1493 -1591 1181 -1737 -32 -1359 -1788 77 -1353 2620 -2119 -1697 4
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -1909 -8804 -451 -894 -1115 -701 -1378 -110 *
2 -1118 -1371 -1805 -1237 -1464 -2231 -889 2528 2067 -899 -510 -1267 -2325 -644 -266 -1422 -1057 -63 -1884 -1486 5
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -3550 -129 * *
3 -818 -929 -1862 -1322 -641 -2171 -971 169 -964 1238 288 -1339 -2212 2240 -1140 -1236 -765 1496 -1363 -992 6
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -3550 -129 * *
4 1262 -2557 1921 2106 -2850 -1393 -477 -2640 -377 -2596 -1780 -22 -1759 -90 -1010 -778 -993 -2183 -2798 -1995 7
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -361 -6914 -2229 -894 -1115 -3550 -129 * *
5 1959 -737 -1983 -1620 -770 -1684 -1217 123 -1350 1511 129 -1398 -2018 -1217 -1464 -913 -639 108 -1537 -1163 8
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -23 -6575 -7617 -894 -1115 -3643 -120 * *
6 -909 3538 -2932 -2480 -462 -2247 -1584 420 -2070 1990 430 -2081 -2431 -1807 -2001 -1504 -963 293 -1408 -1050 9
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -23 -6575 -7617 -894 -1115 -2811 -222 * *
7 -447 -788 -2329 -2135 -1640 -1513 -1728 -244 -1943 -1307 -807 -1618 -2064 -1766 -2007 1427 -705 2813 -2213 -1812 10
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -3550 -129 * *
8 1580 -1167 -755 -683 -2613 1407 -1070 -2339 -947 -2479 -1637 2477 -1718 -763 -1344 -463 -616 -1669 -2725 -2220 11
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -3550 -129 * *
9 1791 -792 -2096 -2069 -2827 -1046 -1925 -2514 -2049 -2800 -1955 -1384 -1767 -1801 -2146 2767 -564 -1643 -3058 -2770 12
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -3550 -129 * *
10 1611 -700 -2005 -1664 -1754 -1223 -1383 -1052 -1498 -1589 -891 -1252 -1781 -1306 -1666 1925 -478 1539 -2138 -1780 13
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -3550 -129 * *
11 -678 -1254 -2027 -2203 -2902 -1430 -2171 -2966 -2329 -3184 -2473 -1697 -2138 -2150 -2383 3390 -1086 -2139 -3055 -2728 14
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -18 -6914 -7956 -894 -1115 -1091 -914 * *
12 338 -2575 -727 524 -2888 211 3834 -2630 -381 -2596 -1699 -662 433 1123 -889 -1018 -1092 -2200 -2784 -2101 15
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -103 -8202 -3938 -894 -1115 -131 -3528 * *
13 -4706 -4011 -6464 -6215 -273 -6255 -3388 -1852 -5907 3081 -1113 -5432 -5593 -4660 -5340 -5591 -4543 -2675 3133 -1563 16
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8835 -9877 -894 -1115 -482 -1817 * *
14 -1995 -2562 -4756 -4903 948 -2899 -4002 -4323 -4709 -4557 -3803 -3536 -3665 -4271 -4506 2845 2539 -3465 -4401 -3785 17
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8893 -9935 -894 -1115 -701 -1378 * *
15 1974 -2894 1467 -816 -3309 781 -1179 -3058 963 -3017 -2101 -1116 189 -730 -1296 -776 170 -2597 -3194 -2516 18
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8893 -9935 -894 -1115 -701 -1378 * *
16 1383 -2883 585 1876 -3204 405 -1043 -2954 287 -2899 -1973 -61 -2477 990 -1132 -921 -518 -602 -3067 -2384 19
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
17 -3444 -5495 2619 2744 -5608 -3223 -2646 -5588 -3024 -5423 -4830 874 -3800 1490 -3998 -3057 -3535 -5032 -5625 -4510 20
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
18 -2536 -2957 -3306 -2413 -3119 -3548 -1859 874 3060 -1039 -2114 -2413 -446 -1563 710 -2671 -2388 -2506 3242 -2796 21
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
19 1087 -2878 -1251 152 -3199 57 -1039 -2949 1245 -2894 -1968 1023 -478 1653 -1127 491 694 -2500 -3062 -2379 22
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
20 998 -413 -1742 -198 -2292 -825 -1300 -1037 714 1062 420 2005 -2677 -395 -1494 -1541 -425 -661 -2537 -2029 23
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
21 -3221 -2748 -5841 -5461 -3140 -5557 -5075 2551 -5338 -1071 -1986 -5198 -5343 -5155 -5383 -4856 -3201 2966 -4560 1098 24
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
22 0 29 -1335 -786 -2969 -2418 -1085 -1608 1448 -65 -1823 700 -2509 1617 182 529 1205 -899 -2941 -2302 25
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
23 1283 -2841 295 -428 -3146 56 -1049 -741 -636 -2850 -1935 1212 -2481 629 -1141 1467 446 -764 -3035 -2362 26
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
24 615 -1463 -3974 -3342 -582 -3196 1142 1756 -2943 1380 -661 -2837 -3243 -2570 -2751 -2282 510 1530 -1938 -1595 27
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -88 -8959 -4135 -894 -1115 -701 -1378 * *
25 -5376 -4397 -5974 -6255 2051 -5819 -2124 -3799 -5814 -906 -3161 -4513 -5644 -4579 -5202 -5092 -5237 -4180 5849 -187 28
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -2316 -8876 -327 -894 -1115 -418 -1991 * *
26 -3400 -2532 -3998 -4210 2830 -3875 -263 -2335 -3796 -1766 -1796 -2595 -3766 -2689 -3273 -3120 -3283 -2481 476 4114 29
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -17 -6950 -7992 -894 -1115 -70 -4397 * *
27 -355 -2932 704 -32 -3235 2526 -1149 -2972 -758 -805 -2040 -1097 -2567 189 -1268 5 685 -2547 -3138 -2463 30
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
28 -551 -3414 -2450 -1870 -3811 -3294 -400 969 3397 -3383 -2617 388 -3386 -1363 -1016 -2410 -2355 -3103 -3525 -3110 31
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
29 -3385 -2869 -6061 -5728 -3309 -5904 -5809 2392 -5685 -657 -151 -5558 -5596 -5536 -5803 -5277 -3369 3170 -5065 -4654 32
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -505 -8959 -1768 -894 -1115 -701 -1378 * *
30 -175 -2400 -994 1422 -2661 1100 -750 -2369 1310 327 -1507 -745 -2175 -313 -851 3 -518 -1990 -2623 740 33
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8460 -9502 -894 -1115 -2614 -257 * *
31 472 -2516 -934 372 -2824 2028 -715 -2565 651 -2527 571 -695 -198 737 -805 380 -391 -2131 -2708 -2034 34
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -126 -8460 -3635 -894 -1115 -155 -3291 * *
32 -689 1410 1891 -700 -3229 -2379 2645 -2979 1033 -2925 -2006 2170 -2489 626 -1156 -1316 -1381 -2533 -3094 -2410 35
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8876 -9918 -894 -1115 -1313 -743 * *
33 1648 -1420 -3389 -350 -1383 -1709 -1846 593 -2472 866 -619 -2484 -3056 -471 -2435 -654 -1451 1630 -1869 692 36
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8876 -9918 -894 -1115 -1313 -743 * *
34 650 -2852 1272 1882 -3172 528 -1005 -2924 -258 -2868 -1942 -137 619 791 -1101 -810 -35 -2473 -3035 -2350 37
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -125 -8876 -3630 -894 -1115 -1313 -743 * *
35 831 -2763 769 2202 -3082 140 -918 -2833 637 -1644 -1853 -887 -2350 892 -1012 18 -1228 -2384 -2946 -2262 38
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8756 -9798 -894 -1115 -969 -1031 * *
36 207 783 873 -3013 -141 -3020 1867 1315 -2653 163 -557 106 -3072 -2314 -2525 -2096 -1436 1004 -1810 2071 39
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -367 -2153 * *
37 557 -2605 -5136 -5456 -5305 3437 -4601 -5125 -5234 -5384 -4414 -3682 -3697 -4678 -4889 -51 -289 -3812 -5526 -5495 40
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
38 1519 -2862 234 9 -3171 1316 1211 -2913 -645 -2874 -1956 -1033 -2488 1622 -1151 -617 -381 417 -3054 -2378 41
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
39 -1870 -3402 1147 2755 -3704 -315 -1442 -3476 542 -3410 -2511 257 -2828 1141 -1668 -114 -1826 -3017 -3580 -2854 42
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
40 2535 1103 -4168 -3629 -1885 -803 -2447 1861 -3252 -1760 -1118 -3004 -3355 -2885 -3079 -1445 15 524 -2388 -2051 43
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
41 -4735 -4074 -7069 -6479 618 -6919 -5325 -1535 -6284 3169 1034 -6625 -5795 -4906 -5685 -6337 -4549 -2434 -3788 -3907 44
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -118 -8959 -3713 -894 -1115 -701 -1378 * *
42 345 -1743 -1164 883 480 895 -1465 745 -1488 -511 -923 -1743 -2780 842 -1788 23 -349 69 859 749 45
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
43 -225 -3636 -3185 -2361 -4610 -689 -1928 -4107 1212 -3894 -3136 -2380 -3616 -1509 3617 -911 -2663 -3714 -3847 -3585 46
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
44 -2332 -2101 -4671 -4041 548 -3934 -2764 -1078 -3658 2375 3041 -3580 -3868 -3165 -3422 -3038 -742 237 -2431 868 47
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
45 -4532 -3895 -6793 -6267 3652 -6594 -4711 24 -6050 2025 -748 -6180 -5631 -4756 -5492 -5966 -4363 -2253 -3420 -3156 48
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
46 -915 -1763 -2172 -178 -922 -2696 324 1118 1102 -260 -942 -1715 -2769 12 -1763 -630 1040 1823 -2161 -1733 49
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
47 786 -1889 -2085 -1530 -1975 515 -1460 -666 -1390 -1827 -1111 -687 -2759 376 -1735 686 906 2102 -2321 -1876 50
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
48 -2959 -3320 204 -2619 1213 -3857 2306 -3084 -2701 -3021 -2551 -58 -3961 -2442 -3020 -2962 -26 -2968 -1612 4069 51
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
49 -6078 -5324 -6240 -6615 -6823 -5322 -5999 -7795 -6824 -7268 -7123 -6451 4327 -6684 -6344 -6443 -6389 -7251 -5706 -6787 52
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
50 -157 -2742 -1216 1176 -3045 -280 -1001 -2775 -596 -2758 -1853 -982 -1365 1584 -1098 -172 1200 -2358 4145 -2292 53
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
51 -98 -2419 240 -2484 -3433 -2739 -2573 88 -2541 -3296 -2530 -2396 -3239 -2359 -2867 433 3404 -2583 -3712 -3285 54
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
52 -3593 -4253 -4375 -2908 -5109 -4116 -1962 -4399 2356 698 -3379 -2779 -4033 3347 480 -3468 -3252 -4186 -3887 -3804 55
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
53 1276 -2976 -59 407 -3295 -2408 -1121 -3047 -729 -2995 -2082 331 -2539 -671 2284 -1379 1836 -2601 -3168 -2478 56
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
54 -222 -2826 -3184 -2664 2801 -3697 1112 -2500 743 -2587 -2035 -2608 -3741 -520 -2415 -2736 -2512 -2390 -1668 3501 57
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
55 -6131 -5110 -6264 -6622 4578 -5511 -3838 -5664 -6571 -4970 -5082 -5754 -5830 -5873 -6007 -6192 -6221 -5829 -3136 -2106 58
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
56 -1513 -4130 1913 367 -4406 -2853 2070 -4227 -1850 -4145 -3322 -1465 2891 -1549 -2500 904 -2484 -3745 -4329 -3498 59
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -1476 -643 * *
57 -996 -2869 -31 -677 -3191 -2351 3440 -2939 1925 -2884 -1963 -987 -2456 793 -1099 1199 -361 -2493 -3051 -2371 60
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -367 -2153 * *
58 -5709 -4645 -6076 -6427 4471 -5845 -2282 -4608 -6019 -3897 -4003 -4672 -5780 -4804 -5394 -5289 -5588 -4795 1650 -347 61
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
59 -550 -3009 1918 -963 -3455 1785 -1357 -3199 1552 -3173 -2270 -1261 -2715 -917 -1497 803 -1624 -311 -3361 -2687 62
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -392 -8959 -2085 -894 -1115 -701 -1378 * *
60 -1580 -3035 2052 -665 919 770 1892 -3085 -870 -3054 -2173 1948 -2553 -748 -1411 690 -1541 -2654 -3239 -2526 63
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -93 -8573 -4067 -894 -1115 -184 -3065 * *
61 -3574 -3243 -5667 -5071 -2159 -5255 -4130 -1189 -78 2989 -1007 -4840 -4995 -4015 -3895 -4536 -3507 890 -3616 -3542 64
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -187 -8893 -3069 -894 -1115 -455 -1886 * *
62 -397 -2803 -1211 -675 -3133 -2332 1551 -2870 1808 -2822 -1909 -365 -2431 -6 -1021 2340 133 -2434 -2993 -2329 65
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8786 -9828 -894 -1115 -297 -2426 * *
63 -998 -2950 1137 -76 -3268 -2417 1963 -3020 -691 -2965 -2042 198 1361 126 -1203 1834 752 -2570 -3133 -2446 66
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -461 -8959 -1880 -894 -1115 -701 -1378 * *
64 1226 1295 -2095 793 -1489 -2496 -1288 -1053 -1361 986 -665 -1593 1345 -1219 -1635 -243 95 -78 -1890 -1477 67
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8504 -9546 -894 -1115 -2532 -274 * *
65 1125 -2621 2139 -39 -2927 -32 -824 -2668 -430 -2636 -1727 -377 -2244 -374 -941 844 285 -2238 -2823 872 68
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8504 -9546 -894 -1115 -2532 -274 * *
66 2726 -4008 -31 1484 -4671 1326 -2109 -4538 -2268 -4473 -3736 -1420 -3216 -1773 -3025 -2305 -2637 -3957 -4675 -3779 69
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8504 -9546 -894 -1115 -2532 -274 * *
67 -3122 -2639 -5683 -5232 -2197 -5369 -4646 2381 -5068 1300 2364 -5033 -4984 -4530 -4931 -4658 -3072 2216 -3799 -3664 70
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8504 -9546 -894 -1115 -2532 -274 * *
68 60 1111 -1098 274 -2507 -2143 -816 -2184 2049 -1428 2399 -267 -2233 -402 807 4 -1057 -350 -2548 -1939 71
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8504 -9546 -894 -1115 -165 -3209 * *
69 -155 -3136 1091 -853 -3471 2671 -1273 -3227 241 -3171 -2260 152 -2679 -826 -110 119 -1611 -2774 -3341 -2645 72
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
70 -2076 -2740 -3629 -3872 -5227 -117 -4029 -5051 -4365 -5250 -4321 2917 -3675 -3912 -4453 2754 -113 -3849 -5401 -5169 73
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
71 1815 -2981 -421 957 -3428 -2572 -1430 -3157 -1087 -3164 -2279 -1322 2672 -1002 -1597 -193 -1182 -1008 -3379 -2719 74
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
72 -141 -2884 1339 647 -3205 -2383 -1042 -2956 2150 -2900 -579 -495 -530 2258 -431 -1291 -1350 -2506 -3067 -2384 75
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
73 -2824 -2505 -5232 -4669 517 -4610 -3491 1306 -4343 1189 -1108 -4247 -4488 -3870 -4144 -3757 -2764 2851 -3072 760 76
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
74 -2274 -3525 -2278 -1579 -3997 -827 494 -3617 3148 -1248 -2628 -1784 -3184 307 1524 -218 -2148 -3238 -3511 -3046 77
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
75 2603 -2656 -1316 -1287 -3123 849 -1533 -2794 1099 -2898 -2065 -1516 -2818 -1145 -1621 -1634 115 -2432 1717 -2621 78
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
76 -4575 -4959 -3392 -3544 -3973 -4515 5230 -5894 -2953 -5472 -5081 -3678 -4921 1389 -3018 -4469 -4615 -5568 -4196 -3426 79
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
77 1666 -2620 -5075 -5409 -5311 3245 -4600 -5123 -5227 -5390 -4426 -3683 -3708 -4677 -4888 -2264 194 -3821 -5529 -5497 80
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
78 80 -224 16 1117 -3175 -382 -1041 -805 2368 -823 -1952 523 -2474 -583 -1130 -496 -102 -2479 -3048 -2370 81
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
79 -3325 -4168 -3797 -2647 -4931 -3963 -1960 -4314 3190 -4012 -3300 -2627 -3921 239 1304 -3205 1796 -1961 -3899 -3723 82
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
80 -3348 -2838 -6044 -5747 -3543 -5869 -6019 1822 -5728 -2283 -2227 -5562 -5625 -5706 -5916 -5270 -3346 3508 -5351 -4808 83
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
81 1111 -2222 -4843 -4228 1096 -4127 -3011 1251 -3858 1910 1679 -3778 -4060 -3388 -3638 -3240 -2406 955 -2690 -2436 84
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
82 724 -2894 777 -330 -3213 1105 360 -2963 -638 -2909 -1984 1521 -2487 -595 -46 173 1578 -2515 -3078 -2395 85
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
83 2451 -1528 -3322 -2724 497 -3053 -1882 -1038 -2437 -528 870 -2484 -3111 -146 -2448 1291 -1527 -949 -1955 763 86
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
84 -3968 -3451 -6434 -5904 2107 -6111 -5023 1068 -5699 2350 -986 -5793 -5487 -4798 -5361 -5405 -3869 1557 -3884 -3921 87
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
85 -1429 -2733 1021 -798 -2999 2147 -1101 -835 -713 -2732 -1851 339 -2522 -666 558 385 569 -55 -2967 -2326 88
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
86 -1534 -3019 2279 1222 -3335 664 -1151 -3090 509 -1634 -2113 1699 -2573 -697 -1273 -576 -197 -2639 -3202 -2509 89
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
87 2504 1065 -4321 -3853 -2226 547 -2725 1262 -3488 -2096 -1451 -3128 -3433 -3120 -3322 145 -1918 891 -2724 -2394 90
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
88 573 -2474 -5396 -4924 -2846 -4906 -4175 1809 -4689 1066 -1768 -4561 -4814 -4439 -4634 -4111 -494 2652 -3893 -3496 91
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
89 -132 -2875 940 -706 -3194 188 852 -2944 2550 -2280 -1965 1062 -2473 236 -1127 -999 -1021 -778 -3059 -2378 92
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
90 -153 -2965 242 -748 -3284 -2428 3451 -3036 1191 -2980 -2057 1750 -2537 988 -1209 538 -1428 -2586 -3147 -2460 93
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
91 -3485 -3111 -5821 -5212 -1967 -5289 -4110 937 1069 2614 2166 -4936 -4934 -4172 -4570 -4463 -3388 -615 -3378 -3329 94
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
92 -3220 -5081 3421 -463 -5311 1445 -2509 -5223 -2702 -5088 -4408 -1771 165 -2173 516 -2890 -3286 -4693 -5275 -4280 95
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -88 -8959 -4135 -894 -1115 -701 -1378 * *
93 -452 -3016 2371 -739 -3333 -271 1029 -3089 -762 -3033 -2117 2438 -2559 603 -1282 -222 -209 -2638 -3204 -2507 96
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -2364 -8876 -315 -894 -1115 -1313 -743 * *
94 -520 -1346 -660 -265 -1949 -1370 -309 -1480 1673 -1643 -908 -399 -1634 46 151 -556 2406 -1165 -1912 -1459 97
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -23 -6535 -7577 -894 -1115 -3821 -106 * *
95 -912 -2063 337 2075 -2716 2213 -611 -2513 -527 -2542 -1800 -134 -1730 -280 -1055 -791 -1004 -2049 -2663 -2033 98
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -23 -6535 -7577 -894 -1115 -2369 -310 * *
96 -1101 -2604 -1 1828 -2929 -1648 -526 -2682 1438 -2592 -1756 2603 -1922 -116 -571 -915 -1064 -2243 -2733 -2036 99
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -14 -7218 -8260 -894 -1115 -75 -4309 * *
97 -192 -1676 -4221 -3597 -1575 -3460 2352 1547 -3206 1660 1661 -3103 -3485 -2820 -3012 -2553 -1814 1468 -2178 -1849 100
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
98 565 -2829 -1275 359 -446 436 -1050 -2865 1875 -2836 -1924 -1033 532 -597 -47 872 -963 -4 -3025 -2356 101
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
99 827 -2862 -526 44 -3176 1959 -1041 -2922 392 -507 826 -41 -2475 1310 -1130 -350 -723 -2481 -3050 -2371 102
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
100 1332 -2807 -135 711 -441 -791 1658 -2827 310 -805 -1905 -1042 -290 -606 -1151 -1303 1694 -2413 -3009 39 103
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
101 -1610 -1437 -3945 -3310 2039 -899 -2026 -389 -2908 2063 1329 -350 -3205 -2530 -2710 -2242 -1550 805 -1889 323 104
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
102 1745 -2896 222 -721 -3216 -2395 484 -2965 1755 -2912 -1988 -1031 -2492 893 -1147 1267 -270 -2518 -3081 -2399 105
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
103 1363 -2883 854 1011 -3204 -1026 -434 -2955 1799 -2899 -1973 -1016 594 606 -1131 -747 -228 -2505 -3067 -2383 106
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -60 -8959 -4695 -894 -1115 -701 -1378 * *
104 -4542 -4311 -5360 -4969 -3006 -5216 -4153 -2614 88 3238 -1947 -4849 -5262 -3959 -3323 -5067 -4488 -3285 -4206 -4128 107
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8904 -9946 -894 -1115 -482 -1817 * *
105 1016 -2584 -5130 -5350 -5092 267 -4489 -4822 -5074 -5131 -4211 -3656 -3684 -4566 -4778 3082 -2450 814 -5346 -5265 108
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
106 738 -2892 1303 1956 -3212 -2386 -1049 -2962 -14 -2907 -1981 356 -7 1199 -1141 -368 -1358 179 -3075 -2392 109
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
107 -1575 -1748 -2609 -760 -1749 -2907 -1691 489 -105 2042 -938 -2059 -2979 -1687 -2033 1098 1120 -1180 -2172 -1775 110
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
108 -6596 -5568 -6100 -6439 -5560 -5538 5462 -7722 -6485 -7101 -7040 -6387 -5986 -6473 -6146 -6902 -6791 -7415 -5293 -5216 111
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -178 -8959 -3135 -894 -1115 -701 -1378 * *
109 2696 3554 -4526 -4154 -2533 -3036 -3056 844 -3794 -2291 -1707 -3275 -3500 -3417 -3609 -472 -2005 -23 -3084 -2761 112
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8786 -9828 -894 -1115 -297 -2426 * *
110 -1413 -2881 1924 -96 -3200 -2384 1741 -2949 392 -1256 -1971 -81 -2479 1877 -1135 -1294 1334 -2502 -3066 1240 113
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
111 -141 -2879 -311 -96 -3197 -2384 -1046 -977 2941 -2893 -1969 355 -28 -587 -1135 -147 -89 -2499 -3064 -2383 114
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
112 -1719 -1588 -3769 -3148 1050 -46 2338 -1046 -2729 2267 1320 -2764 -3271 -2451 17 -2304 -1658 -992 -1962 -1565 115
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
113 -2341 -3371 -2473 -1748 -3712 557 3285 -3332 1340 -3287 -2497 -1920 -3272 -1196 2290 -2271 -2211 107 -3398 1272 116
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
114 -3297 -2794 -5976 -5645 -3454 -5788 -5722 1958 -5595 -813 -2162 -5446 -5540 -5529 -5741 -5147 -549 3323 -5138 -4633 117
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
115 -3235 -4825 3576 -1533 -5545 -3193 -2745 -5500 -3120 -5391 -4759 61 1423 -2440 -4037 -2965 949 -4845 -5587 -4559 118
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
116 -2201 -2406 -3380 -2704 -2482 -3360 1232 -571 -1533 -2332 -1698 -2590 3679 -1982 219 -2513 -2163 142 -2801 -2406 119
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -118 -8959 -3713 -894 -1115 -701 -1378 * *
117 260 -2774 -1205 1945 -3079 -2324 998 -2816 1358 -2782 -1869 -966 -2417 710 -1061 -1235 199 1375 -2966 -2297 120
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8846 -9888 -894 -1115 -367 -2153 * *
118 -3789 -4431 -2464 -2580 -1522 -4073 2516 -4455 -2600 -4048 -3741 3552 -4348 539 -2819 -3540 -3739 -4312 -2166 2578 121
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
119 -5129 -4363 -6317 -6385 4342 -6014 -2945 -2673 -6053 316 -1995 -5154 -5738 -4866 -5476 -5503 -5021 -3372 -2131 -1055 122
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
120 -1500 -2947 -1350 709 -3277 -358 -1101 -3015 2644 -2955 -2039 804 -2554 -645 1167 -1381 -104 -2 -3115 -2453 123
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
121 -1578 -1533 -3264 -2662 1659 -3038 -1865 -55 -377 1829 -729 172 -3095 390 500 -2091 -1518 992 -1976 -1615 124
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
122 -4222 -3665 -6657 -6103 1214 -6382 -5176 1384 -5902 2763 -891 -6079 -5599 -4837 -5479 -5707 -4098 427 -3871 -3994 125
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
123 778 -2733 -1443 -892 -3049 1709 -1173 -2749 593 -765 -1905 -1177 -2580 -742 427 1610 -94 -2369 -3016 -2390 126
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
124 -157 -2903 995 1096 -3223 144 2679 -2974 400 -2918 -1993 1649 -2489 1088 -1150 -1306 -92 -2524 -3086 -2401 127
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
125 1289 3407 -3981 -3351 -1441 -3208 -2088 1569 -2954 -191 326 -409 -3255 -2584 -2765 -1646 -1591 1613 -1957 -1613 128
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
126 -636 -2652 -5358 -4759 1760 -4715 -3606 1571 -4420 2312 239 -4372 -4536 -3859 -4177 -3858 -2892 750 -3111 -2935 129
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -80 -8959 -4275 -894 -1115 -701 -1378 * *
127 -2118 -1882 -4468 -3878 -1876 -341 -2739 2210 -3515 1471 -998 -3426 -3795 255 -3357 -2903 -2067 2041 -2564 -2226 130
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
128 -99 914 -7 -423 -2601 -318 928 854 71 -2380 -1560 -1155 -2522 918 -692 -1360 -1321 2220 -2709 -2131 131
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
129 -1677 1123 -4012 -3396 -1509 -3233 -2164 50 -3009 -1350 -736 -2894 -3297 -2646 -2830 -1040 1636 2904 -2039 806 132
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
130 -4293 -3725 -6684 -6092 670 -6394 -5087 1171 -5871 2883 460 -6103 -5538 -4715 -5389 -5715 -4145 -46 -3734 -3916 133
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
131 2516 -2937 -1373 -859 -3308 -980 524 -3037 1353 -2990 -2087 -1153 -2599 1381 -1137 -78 -1491 -2602 -3157 -2509 134
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
132 782 915 -475 1164 -3118 -330 1166 -405 613 -843 -1897 -17 -2422 -532 262 572 344 -1426 -2994 -2316 135
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
133 161 -2804 -1237 359 -3112 -2350 3784 -2849 1200 -2812 731 -459 -2442 -551 784 -1260 -177 -2419 -2993 32 136
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8884 -9926 -894 -1115 -1266 -776 * *
134 -2115 -1914 -4256 -3705 2636 -3590 3172 -1419 -3314 1260 -1110 -3104 -3624 -2879 -3112 95 -2052 190 -1611 836 137
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -188 -8884 -3060 -894 -1115 -1266 -776 * *
135 -1036 -2533 -3036 -3165 -4781 2541 -3420 -4575 -3529 -4743 -3841 -2779 2911 222 -3741 228 -2242 -3517 -4920 -4596 138
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8701 -9744 -894 -1115 -1218 -810 * *
136 1262 -2772 2 -608 -3103 328 -949 -2852 2037 -2800 -1876 228 -1286 -491 -1042 1027 -111 -2403 -2970 -2288 139
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8786 -9828 -894 -1115 -297 -2426 * *
137 135 -2944 2508 1919 -3260 -2418 -1097 -3011 103 -1408 -2036 385 -2525 -641 -1202 -62 -1412 -1667 -3128 -2442 140
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
138 -169 -1601 -4078 -3465 3453 -3314 -2038 -1083 -3064 -97 1062 -2925 -3357 -2667 -2861 -2401 6 -1017 2340 1609 141
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
139 -2200 -3597 404 -1227 -4129 110 -109 -3909 -1682 -3871 -3010 237 -3142 -1480 -2256 1489 2999 -3411 -4062 -3325 142
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
140 1902 1193 -3801 274 -4878 -2919 -3907 -4600 -4134 -4854 -3987 -3260 3438 -3803 -4209 -2283 -2479 -3635 -5092 -4846 143
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
141 945 -2915 1180 2104 -3233 -2400 741 -2984 -658 -2930 -2006 -1035 122 1669 -1168 -1320 122 -1940 -3099 -2414 144
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
142 906 -4 -3779 -3153 -1389 -548 -49 8 -661 184 552 -2711 -3166 -2432 -2634 -1449 422 2482 -1888 -1543 145
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
143 -1718 -3219 221 522 -3526 -2555 3367 -3286 -956 -3229 -2322 103 -2716 2995 -1486 -449 -1668 -313 -3401 -2694 146
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
144 3111 -2314 -3464 -3080 -3200 -88 385 -2805 -2923 -280 -2357 -2765 -3370 -2738 -3117 -581 -273 -2449 -3556 -3189 147
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
145 3082 -2587 -5168 -5408 -5138 -225 -4520 -4895 -5119 -5188 -4256 -3667 -3687 -4600 -4806 1488 -2454 -87 -5385 -5316 148
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
146 -2838 -2561 -4973 -4475 2278 -4313 -2426 -1721 -4080 731 2160 -3784 -4263 -3506 -3804 -3430 -2764 130 4622 1451 149
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
147 -1696 -3203 2107 1686 -3513 508 -1292 -3276 -98 -3215 -2304 -545 -2698 2093 -1462 197 -974 -2821 -3384 -2676 150
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
148 -206 -3207 301 -1311 -3800 -540 -1754 -3505 3357 -3525 -2667 -1586 -3037 -1345 -1850 -1908 -2007 106 -3732 -3091 151
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
149 1654 -1721 -4245 -3631 2645 -3462 -2390 -910 -3244 1144 -791 -3131 -3508 -2856 -3053 -2564 87 891 -2223 -1892 152
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
150 -137 -1432 -3948 -3313 1581 -3155 -2026 -114 -2909 1428 2225 -648 -3203 -2531 -2710 -2240 -1547 1624 -1889 1109 153
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
151 1325 1101 1112 721 -3197 -363 -1036 -2947 702 -1945 -1965 -289 -2471 375 -257 1183 -1037 -2498 -3059 -2377 154
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
152 1277 -1469 -3536 -2925 -1430 1509 -1928 601 -2600 216 1186 -1524 -3132 -175 -2535 -508 -85 1083 -1920 -1568 155
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
153 -3610 -3121 -6153 -5690 1786 -5837 -5020 1076 -5518 1386 -1290 -5502 -5406 -4901 -5339 -5127 -3551 2808 -4105 -3986 156
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
154 2030 2259 -3344 -2779 473 -514 -2054 -1307 -2515 -1647 -982 -2529 -3154 -2266 681 1110 -1625 881 -2225 -1864 157
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
155 502 -2761 -339 -762 -3031 -384 1988 -18 -326 -1254 -1863 1897 -2499 -629 -1172 471 1548 -2356 -2975 -2324 158
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
156 2557 -2132 1224 -2787 -2497 -3049 -2499 -1705 -2776 -586 -1671 -2638 -3386 -2536 -2949 -1127 -1982 1773 -2964 -2581 159
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -4 -8959 -10001 -894 -1115 -701 -1378 * *
157 -4284 -3705 -6735 -6190 -2138 -6510 -5341 1840 -6011 2724 1723 -6217 -5667 -4910 -5578 -5867 -4158 115 -3948 -4121 160
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8875 -9917 -894 -1115 -701 -1378 * *
158 1959 -2667 -1304 160 207 -440 -1064 -2658 652 -2686 -1806 -1057 -2476 -630 -1169 822 1391 -2278 -2923 -2284 161
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8816 -9858 -894 -1115 -701 -1378 * *
159 1365 -2863 -1251 1036 -3195 -2373 3163 -2932 818 -2872 -1957 -1010 -2467 -558 298 930 -1351 -2492 -3031 -2370 162
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8816 -9858 -894 -1115 -701 -1378 * *
160 360 -3058 -1454 144 -3448 -36 -1205 -3163 3161 -3086 -2193 -1228 -2682 -756 -274 -567 -1600 -2731 -3220 -2602 163
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -5 -8724 -9766 -894 -1115 -701 -1378 * *
161 -5001 -4245 -5636 -5890 -650 -5388 -2113 -3919 -5374 -3258 935 -4373 -5399 -4454 -4899 -4809 -4973 -4162 -1378 4785 164
- -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249
- -6 -8565 -9607 -894 -1115 -701 -1378 * *
162 -3220 -3923 -3873 -2549 -201 -3790 3575 -4055 2069 -3728 -3058 -2457 -3723 -1277 2773 -3101 -2911 -3829 -3495 -3253 165
- * * * * * * * * * * * * * * * * * * * *
- * * * * * * * * 0
//

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,266 @@
MSF: 171 Type: P Check: 4694 ..
Name: GLB2_MORMR oo Len: 171 Check: 6522 Weight: 2.7687
Name: GLBZ_CHITH oo Len: 171 Check: 6733 Weight: 2.9329
Name: HBA2_BOSMU oo Len: 171 Check: 5006 Weight: 0.6394
Name: HBA2_GALCR oo Len: 171 Check: 6652 Weight: 0.5183
Name: HBA4_SALIR oo Len: 171 Check: 5434 Weight: 1.9511
Name: HBAD_CHLME oo Len: 171 Check: 6621 Weight: 1.2927
Name: HBAD_PASMO oo Len: 171 Check: 8118 Weight: 1.2927
Name: HBAZ_HORSE oo Len: 171 Check: 8382 Weight: 1.6223
Name: HBA_AILME oo Len: 171 Check: 5402 Weight: 0.4145
Name: HBA_ANSSE oo Len: 171 Check: 3688 Weight: 0.8315
Name: HBA_COLLI oo Len: 171 Check: 4420 Weight: 0.8557
Name: HBA_ERIEU oo Len: 171 Check: 5528 Weight: 0.8390
Name: HBA_FRAPO oo Len: 171 Check: 4136 Weight: 0.5014
Name: HBA_MACFA oo Len: 171 Check: 5986 Weight: 0.2233
Name: HBA_MACSI oo Len: 171 Check: 6064 Weight: 0.2233
Name: HBA_MESAU oo Len: 171 Check: 5499 Weight: 0.6722
Name: HBA_PAGLA oo Len: 171 Check: 6189 Weight: 0.5388
Name: HBA_PHACO oo Len: 171 Check: 5129 Weight: 0.5014
Name: HBA_PONPY oo Len: 171 Check: 5894 Weight: 0.3907
Name: HBA_PROLO oo Len: 171 Check: 5810 Weight: 0.4145
Name: HBA_TRIOC oo Len: 171 Check: 6427 Weight: 0.6883
Name: HBB1_VAREX oo Len: 171 Check: 7239 Weight: 1.1252
Name: HBB2_TRICR oo Len: 171 Check: 7790 Weight: 1.9629
Name: HBB2_XENTR oo Len: 171 Check: 9537 Weight: 1.4685
Name: HBBL_RANCA oo Len: 171 Check: 7490 Weight: 1.4685
Name: HBB_CALAR oo Len: 171 Check: 6568 Weight: 0.4226
Name: HBB_COLLI oo Len: 171 Check: 5043 Weight: 0.7672
Name: HBB_EQUHE oo Len: 171 Check: 6101 Weight: 0.6734
Name: HBB_LARRI oo Len: 171 Check: 5673 Weight: 0.7672
Name: HBB_MANSP oo Len: 171 Check: 7148 Weight: 0.4226
Name: HBB_ORNAN oo Len: 171 Check: 6249 Weight: 0.6615
Name: HBB_RABIT oo Len: 171 Check: 7043 Weight: 0.5259
Name: HBB_SPECI oo Len: 171 Check: 3680 Weight: 0.5422
Name: HBB_SPETO oo Len: 171 Check: 4246 Weight: 0.5422
Name: HBB_SUNMU oo Len: 171 Check: 5601 Weight: 0.6734
Name: HBB_TACAC oo Len: 171 Check: 7133 Weight: 0.6615
Name: HBB_TRIIN oo Len: 171 Check: 4009 Weight: 0.8445
Name: HBB_TUPGL oo Len: 171 Check: 7197 Weight: 0.7375
Name: HBB_URSMA oo Len: 171 Check: 7200 Weight: 0.4695
Name: HBE_PONPY oo Len: 171 Check: 5902 Weight: 1.0101
Name: HBF1_URECA oo Len: 171 Check: 6462 Weight: 2.9329
Name: LGB1_PEA oo Len: 171 Check: 4791 Weight: 2.0005
Name: LGB1_VICFA oo Len: 171 Check: 7426 Weight: 2.0005
Name: MYG_ESCGI oo Len: 171 Check: 9170 Weight: 0.7432
Name: MYG_HORSE oo Len: 171 Check: 1290 Weight: 0.7432
Name: MYG_LYCPI oo Len: 171 Check: 1107 Weight: 0.8773
Name: MYG_MOUSE oo Len: 171 Check: 1320 Weight: 1.0018
Name: MYG_MUSAN oo Len: 171 Check: 5461 Weight: 2.3158
Name: MYG_PROGU oo Len: 171 Check: 1450 Weight: 0.7629
Name: MYG_SAISC oo Len: 171 Check: 1728 Weight: 0.7629
//
GLB2_MORMR ...PIVD..S GSVSPLSDAE KNKIRAAW.D IVYKNYEKNG VDILVKFFTG
GLBZ_CHITH MKFIILALCV AAASALSGDQ IGLVQST.YG KVKG....DS VGILYAVFKA
HBA2_BOSMU ...V...... .....LSAAD KGNVKAAW.G KVGGHAAEYG AEALERMFLS
HBA2_GALCR ...V...... .....LSPTD KSNVKAAW.E KVGAHAGDYG AEALERMFLS
HBA4_SALIR ...S...... .....LSAKD KANVKAIW.G KILPKSDEIG EQALSRMLVV
HBAD_CHLME ...M...... .....LTADD KKLLTQLW.E KVAGHQEEFG SEALQRMFLT
HBAD_PASMO ...M...... .....LTAED KKLIQQIW.G KLGGAEEEIG ADALWRMFHS
HBAZ_HORSE ...S...... .....LTKAE RTMVVSIW.G KISMQADAVG TEALQRLFSS
HBA_AILME ...V...... .....LSPAD KTNVKATW.D KIGGHAGEYG GEALERTFAS
HBA_ANSSE ...V...... .....LSAAD KGNVKTVF.G KIGGHAEEYG AETLQRMFQT
HBA_COLLI ...V...... .....LSAND KSNVKAVF.A KIGGQAGDLG GEALERLFIT
HBA_ERIEU ...V...... .....LSATD KANVKTFW.G KLGGHGGEYG GEALDRMFQA
HBA_FRAPO ...V...... .....LSAAD KNNVKGIF.G KISSHAEDYG AEALERMFIT
HBA_MACFA ...V...... .....LSPAD KTNVKAAW.G KVGGHAGEYG AEALERMFLS
HBA_MACSI ...V...... .....LSPAD KTNVKDAW.G KVGGHAGEYG AEALERMFLS
HBA_MESAU ...V...... .....LSAKD KTNISEAW.G KIGGHAGEYG AEALERMFFV
HBA_PAGLA ...V...... .....LSSAD KNNIKATW.D KIGSHAGEYG AEALERTFIS
HBA_PHACO ...V...... .....LSAAD KNNVKGIF.T KIAGHAEEYG AEALERMFIT
HBA_PONPY ...V...... .....LSPAD KTNVKTAW.G KVGAHAGDYG AEALERMFLS
HBA_PROLO ...V...... .....LSPAD KANIKATW.D KIGGHAGEYG GEALERTFAS
HBA_TRIOC ...V...... .....LSAND KTNVKTVF.T KITGHAEDYG AETLERMFIT
HBB1_VAREX ...V...... ....HWTAEE KQLICSLW.G KI..DVGLIG GETLAGLLVI
HBB2_TRICR ...V...... ....HLTAED RKEIAAIL.G KV..NVDSLG GQCLARLIVV
HBB2_XENTR ...V...... ....HWTAEE KATIASVW.G KV..DIEQDG HDALSRLLVV
HBBL_RANCA ...V...... ....HWTAEE KAVINSVW.Q KV..DVEQDG HEALTRLFIV
HBB_CALAR ...V...... ....HLTGEE KSAVTALW.G KV..NVDEVG GEALGRLLVV
HBB_COLLI ...V...... ....HWSAEE KQLITSIW.G KV..NVADCG AEALARLLIV
HBB_EQUHE ...V...... ....QLSGEE KAAVLALW.D KV..NEEEVG GEALGRLLVV
HBB_LARRI ...V...... ....HWSAEE KQLITGLW.G KV..NVADCG AEALARLLIV
HBB_MANSP ...V...... ....HLTPEE KTAVTTLW.G KV..NVDEVG GEALGRLLVV
HBB_ORNAN ...V...... ....HLSGGE KSAVTNLW.G KV..NINELG GEALGRLLVV
HBB_RABIT ...V...... ....HLSSEE KSAVTALW.G KV..NVEEVG GEALGRLLVV
HBB_SPECI ...V...... ....HLSDGE KNAISTAW.G KV..HAAEVG AEALGRLLVV
HBB_SPETO ...V...... ....HLTDGE KNAISTAW.G KV..NAAEIG AEALGRLLVV
HBB_SUNMU ...V...... ....HLSGEE KACVTGLW.G KV..NEDEVG AEALGRLLVV
HBB_TACAC ...V...... ....HLSGSE KTAVTNLW.G HV..NVNELG GEALGRLLVV
HBB_TRIIN ...V...... ....HLTPEE KALVIGLW.A KV..NVKEYG GEALGRLLVV
HBB_TUPGL ...V...... ....HLSGEE KAAVTGLW.G KV..DLEKVG GQSLGSLLIV
HBB_URSMA ...V...... ....HLTGEE KSLVTGLW.G KV..NVDEVG GEALGRLLVV
HBE_PONPY ...V...... ....HFTAEE KAAVTSLW.S KM..NVEEAG GEALGRLLVV
HBF1_URECA .......... ....GLTTAQ IKAIQDHWFL NIKGCLQAAA DSIFFKYLTA
LGB1_PEA GFTDKQEALV NSSSE.FKQN LPGYSILFYT IVLEKAP..A AKGL......
LGB1_VICFA GFTEKQEALV NSSSQLFKQN PSNYSVLFYT IILQKAP..T AKAM......
MYG_ESCGI ...V...... .....LSDAE WQLVLNIW.A KVEADVAGHG QDILIRLFKG
MYG_HORSE ...G...... .....LSDGE WQQVLNVW.G KVEADIAGHG QEVLIRLFTG
MYG_LYCPI ...G...... .....LSDGE WQIVLNIW.G KVETDLAGHG QEVLIRLFKN
MYG_MOUSE ...G...... .....LSDGE WQLVLNVW.G KVEADLAGHG QEVLIGLFKT
MYG_MUSAN .......... ........VD WEKVNSVW.S AVESDLTAIG QNILLRLFEQ
MYG_PROGU ...G...... .....LSDGE WQLVLNVW.G KVEGDLSGHG QEVLIRLFKG
MYG_SAISC ...G...... .....LSDGE WQLVLNIW.G KVEADIPSHG QEVLISLFKG
GLB2_MORMR TPAAQAFFPK FKGLTTADAL KKSSDVRWHA ERIINAVNDA VKSMDDTEKM
GLBZ_CHITH DPTIQAAFPQ FVGK.DLDAI KGGAEFSTHA GRIVGFLGGV IDDLP...NI
HBA2_BOSMU FPTTKTYFPH FD.LSH.... .GSAQVKGHG AKVAAALTKA VGHLDD...L
HBA2_GALCR FPTTKTYFPH FD.LSH.... .GSTQVKGHG KKVADALTNA VLHVDD...M
HBA4_SALIR YPQTKAYFSH WASVAP.... .GSAPVKKHG ITIMNQIDDC VGHMDD...L
HBAD_CHLME YPQTKTYFPH FD.LHP.... .GSEQVRGHG KKVAAALGNA VKSLDN...L
HBAD_PASMO YPSTKTYFPH FD.LSQ.... .GSDQIRGHG KKVVAALSNA IKNLDN...L
HBAZ_HORSE YPQTKTYFPH FD.LHE.... .GSPQLRAHG SKVAAAVGDA VKSIDN...V
HBA_AILME FPTTKTYFPH FD.LSP.... .GSAQVKAHG KKVADALTTA VGHLDD...L
HBA_ANSSE FPQTKTYFPH FD.LQP.... .GSAQIKAHG KKVAAALVEA ANHIDD...I
HBA_COLLI YPQTKTYFPH FD.LSH.... .GSAQIKGHG KKVAEALVEA ANHIDD...I
HBA_ERIEU HPTTKTYFPH FD.LNP.... .GSAQVKGHG KKVADALTTA VNNLDD...V
HBA_FRAPO YPSTKTYFPH FD.LSH.... .GSAQVKGHG KKVVAALIEA ANHIDD...I
HBA_MACFA FPTTKTYFPH FD.LSH.... .GSAQVKGHG KKVADALTLA VGHVDD...M
HBA_MACSI FPTTKTYFPH FD.LSH.... .GSAQVKGHG KKVADALTLA VGHVDD...M
HBA_MESAU YPTTKTYFPH FD.VSH.... .GSAQVKGHG KKVADALTNA VGHLDD...L
HBA_PAGLA FPTTKTYFPH FD.LSH.... .GSAQVKAHG KKVADALTLA VGHLED...L
HBA_PHACO YPSTKTYFPH FD.LSH.... .GSAQIKGHG KKVVAALIEA VNHIDD...I
HBA_PONPY FPTTKTYFPH FD.LSH.... .GSAQVKDHG KKVADALTNA VAHVDD...M
HBA_PROLO FPTTKTYFPH FD.LSP.... .GSAQVKAHG KKVADALTLA VGHLDD...L
HBA_TRIOC YPPTKTYFPH FD.LHH.... .GSAQIKAHG KKVVGALIEA VNHIDD...I
HBB1_VAREX YPWTQRQFSH FGNLSSPTAI AGNPRVKAHG KKVLTSFGDA IKNLDN...I
HBB2_TRICR NPWSRRYFHD FGDLSSCDAI CRNPKVLAHG AKVMRSIVEA TKHLDN...L
HBB2_XENTR YPWTQRYFSS FGNLSNVSAV SGNVKVKAHG NKVLSAVGSA IQHLDD...V
HBBL_RANCA YPWTQRYFST FGDLSSPAAI AGNPKVHAHG KKILGAIDNA IHNLDD...V
HBB_CALAR YPWTQRFFES FGDLSTPDAV MNNPKVKAHG KKVLGAFSDG LTHLDN...L
HBB_COLLI YPWTQRFFSS FGNLSSATAI SGNPNVKAHG KKVLTSFGDA VKNLDN...I
HBB_EQUHE YPWTQRFFDS FGDLSNPAAV MGNPKVKAHG KKVLHSFGEG VHHLDN...L
HBB_LARRI YPWTQRFFAS FGNLSSPTAI NGNPMVRAHG KKVLTSFGEA VKNLDN...I
HBB_MANSP YPWTQRFFDS FGDLSSPDAV MGNPKVKAHG KKVLGAFSDG LNHLDN...L
HBB_ORNAN YPWTQRFFEA FGDLSSAGAV MGNPKVKAHG AKVLTSFGDA LKNLDD...L
HBB_RABIT YPWTQRFFES FGDLSSANAV MNNPKVKAHG KKVLAAFSEG LSHLDN...L
HBB_SPECI YPWTQRFFDS FGDLSSASAV MGNAKVKAHG KKVIDSFSNG LKHLDN...L
HBB_SPETO YPWTQRFFDS FGDLSSASAV MGNAKVKAHG KKVIDSFSNG LKHLDN...L
HBB_SUNMU YPWTQRFFDS FGDLSSASAV MGNPKVKAHG KKVLHSLGEG VANLDN...L
HBB_TACAC YPWTQRFFES FGDLSSADAV MGNAKVKAHG AKVLTSFGDA LKNLDN...L
HBB_TRIIN YPWTQRFFEH FGDLSSASAI MNNPKVKAHG EKVFTSFGDG LKHLED...L
HBB_TUPGL YPWTQRFFDS FGDLSSPSAV MSNPKVKAHG KKVLTSFSDG LNHLDN...L
HBB_URSMA YPWTQRFFDS FGDLSSADAI MNNPKVKAHG KKVLNSFSDG LKNLDN...L
HBE_PONPY YPWTQRFFDS FGNLSSPSAI LGNPKVKAHG KKVLTSFGDA IKNMDN...L
HBF1_URECA YPGDLAFFHK FSSV.PLYGL RSNPAYKAQT LTVINYLDKV VDALGG..NA
LGB1_PEA .......... FSFLKDTAGV EDSPKLQAHA EQVFGLVRDS AAQLRTKGEV
LGB1_VICFA .......... FSFLKDSAGV VDSPKLGAHA EKVFGMVRDS AVQLRATGEV
MYG_ESCGI HPETLEKFDK FKHLKTEAEM KASEDLKKHG NTVLTALGGI LKKKGH...H
MYG_HORSE HPETLEKFDK FKHLKTEAEM KASEDLKKHG TVVLTALGGI LKKKGH...H
MYG_LYCPI HPETLDKFDK FKHLKTEDEM KGSEDLKKHG NTVLTALGGI LKKKGH...H
MYG_MOUSE HPETLDKFDK FKNLKSEEDM KGSEDLKKHG CTVLTALGTI LKKKGQ...H
MYG_MUSAN YPESQNHFPK FKN.KSLGEL KDTADIKAQA DTVLSALGNI VKKKGS...H
MYG_PROGU HPETLEKFDK FKHLKAEDEM RASEELKKHG TTVLTALGGI LKKKGQ...H
MYG_SAISC HPETLEKFDK FKHLKSEDEM KASEELKKHG TTVLTALGGI LKKKGQ...H
GLB2_MORMR SMKLQELSVK HAQSFYVDRQ YFKVLAGII. ........AD TTAPGDAGFE
GLBZ_CHITH GKHVDALVAT H.KPRGVTHA QFNNFRAAFI AYLKGHV..D YTAAVEAAWG
HBA2_BOSMU PGALSELSDL HAHKLRVDPV NFKLLSHSLL VTLASHLPSD FTPAVHASLD
HBA2_GALCR PSALSALSDL HAHKLRVDPV NFKLLRHCLL VTLACHHPAE FTPAVHASLD
HBA4_SALIR FGFLTKLSEL HATKLRVDPT NFKILAHNLI VVIAAYFPAE FTPEIHLSVD
HBAD_CHLME SQALSELSNL HAYNLRVDPA NFKLLAQCFQ VVLATHLGKD YSPEMHAAFD
HBAD_PASMO SQALSELSNL HAYNLRVDPV NFKFLSQCLQ VSLATRLGKE YSPEVHSAVD
HBAZ_HORSE AGALAKLSEL HAYILRVDPV NFKFLSHCLL VTLASRLPAD FTADAHAAWD
HBA_AILME PGALSALSDL HAHKLRVDPV NFKLLSHCLL VTLASHHPAE FTPAVHASLD
HBA_ANSSE AGALSKLSDL HAQKLRVDPV NFKFLGHCFL VVLAIHHPSL LTPEVHASMD
HBA_COLLI AGALSKLSDL HAQKLRVDPV NFKLLGHCFL VVVAVHFPSL LTPEVHASLD
HBA_ERIEU PGALSALSDL HAHKLRVDPV NFKLLSHCLL VTLALHHPAD FTPAVHASLD
HBA_FRAPO AGTLSKLSDL HAHKLRVDPV NFKLLGQCFL VVVAIHHPSA LTPEVHASLD
HBA_MACFA PQALSALSDL HAHKLRVDPV NFKLLSHCLL VTLAAHLPAE FTPAVHASLD
HBA_MACSI PQALSALSDL HAHKLRVDPV NFKLLSHCLL VTLAAHLPAE FTPAVHASLD
HBA_MESAU PGALSALSDL HAHKLRVDPV NFKLLSHCLL VTLANHHPAD FTPAVHASLD
HBA_PAGLA PNALSALSDL HAYKLRVDPV NFKLLSHCLL VTLACHHPAE FTPAVHSALD
HBA_PHACO TGTLSKLSDL HAHKLRVDPV NFKLLGQCFL VVVAIHHPSA LTPEVHASLD
HBA_PONPY PNALSALSDL HAHKLRVDPV NFKLLSHCLL VTLAAHLPAE FTPAVHASLD
HBA_PROLO PGALSALSDL HAYKLRVDPV NFKLLSHCLL VTLACHHPAE FTPAVHASLD
HBA_TRIOC AGALSKLSDL HAQKLRVDPV NFKLLGQCFL VVVAIHHPSV LTPEVHASLD
HBB1_VAREX KDTFAKLSEL HCDKLHVDPT NFKLLGNVLV IVLADHHGKE FTPAHHAAYQ
HBB2_TRICR REYYADLSVT HSLKFYVDPE NFKLFSGIVI VCLALTLQTD FSCHKQLAFE
HBB2_XENTR KSHLKGLSKS HAEDLHVDPE NFKRLADVLV IVLAAKLGSA FTPQVQAVWE
HBBL_RANCA KGTLHDLSEE HANELHVDPE NFRRLGEVLI VVLGAKLGKA FSPQVQHVWE
HBB_CALAR KGTFAHLSEL HCDKLHVDPE NFRLLGNVLV CVLAHHFGKE FTPVVQAAYQ
HBB_COLLI KGTFAQLSEL HCDKLHVDPE NFRLLGDILV IILAAHFGKD FTPECQAAWQ
HBB_EQUHE KGTFAQLSEL HCDKLHVDPE NFRLLGNVLV VVLARHFGKD FTPELQASYQ
HBB_LARRI KNTFAQLSEL HCDKLHVDPE NFRLLGDILI IVLAAHFAKD FTPDSQAAWQ
HBB_MANSP KGTFAQLSEL HCDKLHVDPE NFKLLGNVLV CVLAHHFGKE FTPQVQAAYQ
HBB_ORNAN KGTFAKLSEL HCDKLHVDPE NFNRLGNVLI VVLARHFSKD FSPEVQAAWQ
HBB_RABIT KGTFAKLSEL HCDKLHVDPE NFRLLGNVLV IVLSHHFGKE FTPQVQAAYQ
HBB_SPECI KGTFASLSEL HCDKLHVDPE NFKLLGNMIV IVMAHHLGKD FTPEAQAAFQ
HBB_SPETO KGTFASLSEL HCDKLHVDPE NFKLLGNMIV IVMAHHLGKD FTPEAQAAFQ
HBB_SUNMU KGTFAKLSEL HCDKLHVDPE NFRLLGNVLV VVLASKFGKE FTPPVQAAFQ
HBB_TACAC KGTFAKLSEL HCDKLHVDPE NFNRLGNVLV VVLARHFSKE FTPEAQAAWQ
HBB_TRIIN KGAFAELSEL HCDKLHVDPE NFRLLGNVLV CVLARHFGKE FSPEAQAAYQ
HBB_TUPGL KGTFAKLSEL HCDKLHVDPE NFRLLGNVLV RVLACNFGPE FTPQVQAAFQ
HBB_URSMA KGTFAKLSEL HCDKLHVDPE NFKLLGNVLV CVLAHHFGKE FTPQVQAAYQ
HBE_PONPY KTTFAKLSEL HCDKLHVDPE NFKLLGNVMV IILATHFGKE FTPEVQAAWQ
HBF1_URECA GALMKAKVPS H.DAMGITPK HFGQLLKLVG GVFQEEF..S ADPTTVAAWG
LGB1_PEA VLGNATLGAI HVQKGVTNP. HFVVVKEALL QTIKKASGNN WSEELNTAWE
LGB1_VICFA VLDGKD.GSI HIQKGVLDP. HFVVVKEALL KTIKEASGDK WSEELSAAWE
MYG_ESCGI EAELKPLAQS HATKHKIPIK YLEFISDAII HVLHSRHPGD FGADAQAAMN
MYG_HORSE EAELKPLAQS HATKHKIPIK YLEFISDAII HVLHSKHPGN FGADAQGAMT
MYG_LYCPI EAELKPLAQS HATKHKIPVK YLEFISDAII QVLQNKHSGD FHADTEAAMK
MYG_MOUSE AAEIQPLAQS HATKHKIPVK YLEFISEIII EVLKKRHSGD FGADAQGAMS
MYG_MUSAN SQPVKALAAT HITTHKIPPH YFTKITTIAV DVLSEMYPSE MNAQVQAAFS
MYG_PROGU AAELAPLAQS HATKHKIPVK YLEFISEAII QVLQSKHPGD FGADAQGAMS
MYG_SAISC EAELKPLAQS HATKHKIPVK YLELISDAIV HVLQKKHPGD FGADAQGAMK
GLB2_MORMR KLMSMICILL SSAY...... .
GLBZ_CHITH ATFDAFFGAV FAK....... M
HBA2_BOSMU KFLANVSTVL TSKYR..... .
HBA2_GALCR KFMASVSTVL TSKYR..... .
HBA4_SALIR KFLQQLALAL AEKYR..... .
HBAD_CHLME KFLSAVAAVL AEKYR..... .
HBAD_PASMO KFMSAVASVL AEKYR..... .
HBAZ_HORSE KFLSIVSSVL TEKYR..... .
HBA_AILME KFFSAVSTVL TSKYR..... .
HBA_ANSSE KFLCAVATVL TAKYR..... .
HBA_COLLI KFVLAVGTVL TAKYR..... .
HBA_ERIEU KFLATVATVL TSKYR..... .
HBA_FRAPO KFLCAVGNVL TAKYR..... .
HBA_MACFA KFLASVSTVL TSKYR..... .
HBA_MACSI KFLASVSTVL TSKYR..... .
HBA_MESAU KFFASVSTVL TSKYR..... .
HBA_PAGLA KFFSAVSTVL TSKYR..... .
HBA_PHACO KFLCAVGTVL TAKYR..... .
HBA_PONPY KFLASVSTVL TSKYR..... .
HBA_PROLO KFFTSVSTVL TSKYR..... .
HBA_TRIOC KFLCAVGNVL SAKYR..... .
HBB1_VAREX KLVNVVSHSL ARRYH..... .
HBB2_TRICR KLMKGVSHAL GHGY...... .
HBB2_XENTR KLNATLVAAL SHGYF..... .
HBBL_RANCA KFIAVLVDAL SHSYH..... .
HBB_CALAR KVVAGVANAL AHKYH..... .
HBB_COLLI KLVRVVAHAL ARKYH..... .
HBB_EQUHE KVVAGVANAL AHKYH..... .
HBB_LARRI KLVRVVAHAL ARKYH..... .
HBB_MANSP KVVAGVANAL AHKYH..... .
HBB_ORNAN KLVSGVAHAL GHKYH..... .
HBB_RABIT KVVAGVANAL AHKYH..... .
HBB_SPECI KVVAGVANAL AHKYH..... .
HBB_SPETO KVVAGVANAL SHKYH..... .
HBB_SUNMU KVVAGVANAL AHKYH..... .
HBB_TACAC KLVSGVSHAL AHKYH..... .
HBB_TRIIN KVVAGVANAL AHKYH..... .
HBB_TUPGL KVVAGVANAL AHKYH..... .
HBB_URSMA KVVAGVANAL AHKYH..... .
HBE_PONPY KLVSAVAIAL AHKYH..... .
HBF1_URECA DAAGVLVAAM .......... K
LGB1_PEA VAYDGLATAI KKAMKT.... A
LGB1_VICFA VAYDGLATAI K....A.... A
MYG_ESCGI KALELFRKDI AAKYKELGFQ G
MYG_HORSE KALELFRNDI AAKYKELGFQ G
MYG_LYCPI KALELFRNDI AAKYKELGFQ G
MYG_MOUSE KALELFRNDI AAKYKELGFQ G
MYG_MUSAN GAFKIICSDI EKEYKAANFQ G
MYG_PROGU KALELFRNDI AAKYKELGFQ G
MYG_SAISC KALELFRNDM AAKYKELGFQ G

View File

@ -0,0 +1,207 @@
:- ensure_loaded(library(clpbn)).
:- ensure_loaded(library('clpbn/hmm')).
:- hmm_state((m/3, i/3, d/3, t/2, b/2, n/2, j/2, e/2, s/2, c/2)).
/*
We represent a plan7 HMMer as a recursive program. There are two parameters:
i represents position on a string
j slice in the HMMer: probability distributions are different for each slice.
An HMM has 10 states (M, I, D are the core states):
S -> begin
N -> before match
B -> begin a match
M -> match state
I -> insertion
D -> deletion
E -> end of match
C -> continuation after matches done
T -> end of sequence
J -> go back to match start.
S, B, E, and T do not emit.
Each state will be represented as a binary random variable.
Also, you'll see terms of the form
{ S = m(I) with p([t,f], trans([MMCPT,IMCPT,DMCPT]), [M0,I0,D0]) }.
the sum function is as examplified:
P(S=t) = P(MMCPT|M0)P(M0=t)+P(IMCPT|M0)P(I0=t)+P(IDCPT|M0)P(D0=t)
P(S=f) = 1-P(S=t)
With sum a single element may be true so if
k1\=k2, P(A_k1=t,A_k2=t) = 0.
*/
% now this is our nice DBN: notice that CPTs depend on slide,
% so this is really an "irregular" DBN.
% first, the emission probabilities (they are easier ;-).
% we look at the core first: m, and i emissions
% next, go to inner states (state transitions).
% the first m-state
m(I,J,M) :-
slices(J), !,
I1 is I+1,
e(I1,E),
{ M = m(I,J) with p(bool, trans([0]),[E]) },
emitting(M).
% standard m-state
m(I,J,M) :-
I1 is I+1,
J1 is J+1,
i(I1,J,NI),
m(I1,J1,NM),
d(I1,J1,ND),
e(I1,NE),
m_i_cpt(J,MICPT),
m_m_cpt(J,MMCPT),
m_d_cpt(J,MDCPT),
m_e_cpt(J,MECPT),
{ M = m(I,J) with p(bool, trans([MICPT,MMCPT,MDCPT,MECPT]),[NI,NM,ND,NE]) },
emitting(M).
i(I,J,S) :-
I1 is I+1,
J1 is J+1,
m(I1,J1,M),
i(I1,J,IS),
i_i_cpt(J,IICPT),
i_m_cpt(J,IMCPT),
{ S = i(I,J) with p(bool, trans([IMCPT,IICPT]), [M,IS]) },
emitting(S).
d(I,J,D) :-
slices(J), !,
e(I,E),
{ D = d(I,J) with p(bool, trans([0]), [E]) }.
d(I,J,S) :-
J1 is J+1,
m(I,J1,M),
d(I,J1,ND),
m_d_cpt(J,MDCPT),
d_d_cpt(J,DDCPT),
{ S = d(I,J) with p(bool, trans([MDCPT,DDCPT]), [M,ND]) }.
e_evidence([],_).
e_evidence([Emission|Es],Emission) :-
e_evidence(Es,Emission).
%
% N, C, and J states can also emit.
%
% and they have transitions.
% initial state
s(0,S) :-
n(0,N),
{ S = s(0) with p(bool, trans([0]),[N]) }.
n(I,S) :-
I1 is I+1,
b(I1, B0),
n(I1, N0),
n_n_cpt(NNCPT),
n_b_cpt(NBCPT),
{ S = n(I) with p(bool, trans([NBCPT,NNCPT]), [B0,N0]) },
emitting(S).
b(I,S) :-
slices(Ss),
b_m_transitions(0,Ss,I,Ms,MCPTs),
d(I,1, D),
b_d_cpt(BMCPT),
{ S = b(I) with p(bool, trans([BMCPT|MCPTs]), [D|Ms]) }.
b_m_transitions(Ss,Ss,_,[],[]) :- !.
b_m_transitions(J0,Ss,I,[M|Ms],[CPT|MCPTs]) :-
J is J0+1,
m(I,J,M),
b_m_cpt(J,CPT),
b_m_transitions(J,Ss,I,Ms,MCPTs).
j(I,S) :-
I1 is I+1,
b(I1, NB),
j(I1, NJ),
j_b_cpt(JBCPT),
j_j_cpt(JJCPT),
{ S = j(I) with p(bool, trans([JBCPT,JJCPT]), [NB,NJ]) },
emitting(S).
e(I,S) :-
c(I, NC),
j(I, NJ),
e_c_cpt(ECCPT),
e_j_cpt(EJCPT),
{ S = e(I) with p(bool, trans([ECCPT,EJCPT]), [NC,NJ]) }.
c(I,S) :-
I1 is I+1,
t(I1, T),
c(I1, NC),
c_t_cpt(CTCPT),
c_c_cpt(CCCPT),
{ S = c(I) with p(bool, trans([CCCPT,CTCPT]),[NC,T]) },
emitting(S).
t(I,S) :-
% I < IMax
{ S = t(I) with p(bool, trans([]), []) }.
% the item I at slice J is a random variable P.
emitting(M) :-
emission(M).
emission_cpt(Key, CPT) :-
Key=..[A,_,Slice], !,
emission_cpt(A, Slice, CPT).
emission_cpt(_, CPT) :-
nule_cpt(CPT).
emission_cpt(m,J,CPT) :- !, me_cpt(J,CPT).
emission_cpt(i,J,CPT) :- !, ie_cpt(J,CPT).
emission_cpt(_,_,CPT) :- nule_cpt(CPT).
ie_cpt(I,Logs) :- ie_cpt(I,Logs,_,_).
me_cpt(I,Logs) :- me_cpt(I,Logs,_,_).
nule_cpt(Logs) :- nule_cpt(Logs,_,_).
b_m_cpt(I,Log) :- b_m_cpt(I,Log,_,_).
b_d_cpt(Log) :- b_d_cpt(Log,_,_).
c_c_cpt(Log) :- c_c_cpt(Log,_,_).
c_t_cpt(Log) :- c_t_cpt(Log,_,_).
d_d_cpt(I,Log) :- d_d_cpt(I,Log,_,_).
d_m_cpt(I,Log) :- d_m_cpt(I,Log,_,_).
e_c_cpt(Log) :- e_c_cpt(Log,_,_).
e_j_cpt(Log) :- e_j_cpt(Log,_,_).
i_i_cpt(I,Log) :- i_i_cpt(I,Log,_,_).
i_m_cpt(I,Log) :- i_m_cpt(I,Log,_,_).
j_b_cpt(Log) :- j_b_cpt(Log,_,_).
j_j_cpt(Log) :- j_j_cpt(Log,_,_).
m_d_cpt(I,Log) :- m_d_cpt(I,Log,_,_).
m_e_cpt(I,Log) :- m_e_cpt(I,Log,_,_).
m_i_cpt(I,Log) :- m_i_cpt(I,Log,_,_).
m_m_cpt(I,Log) :- m_m_cpt(I,Log,_,_).
n_b_cpt(Log) :- n_b_cpt(Log,_,_).
n_n_cpt(Log) :- n_n_cpt(Log,_,_).
%hmm_domain([a, c, d, e, f, g, h, i, k, l, m, n, p, q, r, s, t, v, w, y]).
hmm_domain(aminoacids).

View File

@ -0,0 +1,330 @@
%
% Convert HMMer model to CLP(BN) program
%
main :-
open('hmmer_b.1.18.1.hmm', read, S),
open('hmmer_b.1.18.1.yap', write, W),
% open('globin.hmm', read, S),
catch(parse_model(S,_),done(Info),stop(S,W,Info)),
close(S),
close(W).
stop(S,W,Info) :-
ground(Info),
gen_program(W, Info).
stop(_,_,_) :-
format(user_error,"Bad HMM~n", []).
parse_model(S,Info) :-
get_line(S, Line, Info),
% format('~s~n',[Line]),
match_field(Info, S, Line, []),
parse_model(S, Info).
get_line(S, Out, Info) :-
get0(S, C),
(
C == 10 -> Out = [] ;
C == -1 -> throw(done(Info)) ;
Out = [C|Line], get_line(S, Line, Info)
).
match_field(hmmer(2,_,_,_,_,_,_,_), _) --> "HMMER", !,
scanner_skip. % mandatory field, should be ground
match_field(hmmer(_,Name,_,_,_,_,_,_),_) --> "NAME", !, % mandatory field
scanner_skip_blanks,
get_name(String), {atom_codes(Name,String) }.
match_field(_,_) --> "ACC", !. % accession id, used to track DB accesses
match_field(hmmer(_,_,NOfStates,_,_,_,_,_),_) --> "LENG", !, % number of states
scanner_skip_blanks,
get_number(NOfStates, 0).
match_field(hmmer(_,_,_,Alph,_,_,_,_),_) --> "ALPH", !, % aminos or bases
scanner_skip_blanks,
check_alphabet(Alph).
match_field(_,_) --> "RF", !, scanner_skip.
match_field(_,_) --> "CS", !, scanner_skip.
match_field(hmmer(_,_,_,_,_,_,_,MAP),_) --> "MAP", !,
scanner_skip_blanks,
to_lower(Codes),
{ map_code(Codes,MAP) }.
match_field(_,_) --> "COM", !, scanner_skip.
match_field(_,_) --> "CKSUM", !, scanner_skip.
match_field(_,_) --> "GA", !, scanner_skip.
match_field(_,_) --> "TC", !, scanner_skip.
match_field(_,_) --> "NC", !, scanner_skip.
match_field(_,_) --> "NSEQ", !, scanner_skip.
match_field(_,_) --> "DATE", !, scanner_skip.
match_field(hmmer(_,_,_,_,special(NB,NN,EC,EJ,CT,CC,JB,JJ,_,_),_,_,_),_) --> "XT", !,
scan_transition(NB),
scan_transition(NN),
scan_transition(EC),
scan_transition(EJ),
scan_transition(CT),
scan_transition(CC),
scan_transition(JB),
scan_transition(JJ).
match_field(hmmer(_,_,_,_,special(_,_,_,_,_,_,_,_,GG,GF),_,_,_),_) --> "NULT", !,
scan_transition(GG),
scan_transition(GF).
match_field(hmmer(_,_,_,Alph,_,NULE,_,_),_) --> "NULE", !,
{ nof_symbols(Alph,N) },
scan_transitions(N,Transitions),
{ NULE =.. [null|Transitions] }.
match_field(_,_) --> "EVD", !,
scanner_skip. % optional, but should do later.x
match_field(Info,S) --> "HMM", !,
scanner_skip,
{
get_line(S,_,Info),
Info = hmmer(_,_,NOfStates,Alph,_,_,model(BD,NBD,Transitions),MAP),
nof_symbols(Alph,N),
scan_model(S,NOfStates,N,BD,NBD,Transitions,MAP,Info),
throw(done(Info))
}.
scan_model(S,NOfStates,N,BD,NBD,Transitions,MAP,Info) :-
get_line(S,Line, Info),
scan_bd(BD, NBD, Line, []),
scan_states(NOfStates, N, S, MAP, Transitions, Info).
scan_states(0, _, _, MAP, [], _) :- !, close_map(MAP).
scan_states(NOfStates, N, Stream, MAP, [t(E,I,S)|Transitions], Info) :-
NOfStates1 is NOfStates-1,
scan_state(Stream, E, I, MAP, S, N, NMAP, Info),
scan_states(NOfStates1, N, Stream, NMAP, Transitions, Info).
scan_state(Stream, E,I,MAP,s(MM,MI,MD,IM,II,DM,DD,BM,ME), N, NMAP, Info) :-
get_line(Stream, ELine, Info),
get_line(Stream, ILine, Info),
get_line(Stream, SLine, Info),
% format('~s~n~s~n~s~n',[ELine,ILine,SLine]),
scanner_skip_field(ELine,Eline1),
scan_transitions(N, E, Eline1, EMap),
scan_map(MAP,NMAP,EMap, []),
scanner_skip_field(ILine,ILine1),
scan_transitions(N, I, ILine1, []),
scanner_skip_field(SLine,SLine1),
scan_transitions(MM, MI, MD, IM, II, DM, DD, BM, ME, SLine1, []).
scan_transitions(MM, MI, MD, IM, II, DM, DD, BM, ME) -->
scan_transition(MM),
scan_transition(MI),
scan_transition(MD),
scan_transition(IM),
scan_transition(II),
scan_transition(DM),
scan_transition(DD),
scan_transition(BM),
scan_transition(ME).
scan_transitions(0, []) --> !.
scan_transitions(N, [T|Ts]) -->
{ N1 is N-1 },
scan_transition(T),
scan_transitions(N1, Ts).
scan_transition(T) -->
scanner_skip_blanks,
get_transition(T).
get_transition('*') --> "*", !, scanner_skip_blanks.
get_transition(N) --> [C],
{ C >= 0'0, C =< 0'9, !, C0 is C-0'0 },
get_number(N, C0 ).
get_transition(N) --> "-",
get_number(C0, 0 ),
{ N is -C0}.
get_number(Nf, N0) --> [C], !,
( { C >= 0'0, C =< 0'9 } -> { Ni is N0*10+(C-0'0) }, get_number(Nf,Ni) ;
{ Nf = N0 }
).
get_number(N, N) --> [].
scanner_skip_blanks --> " ", !, scanner_skip_blanks.
scanner_skip_blanks --> " ", !, scanner_skip_blanks.
scanner_skip_blanks --> [].
scanner_skip_field --> scan_transition(_).
scan_bd(BD, NBD) -->
scan_transition(BD),
scanner_skip_field,
scan_transition(NBD).
check_alphabet(Alph) -->
to_lower(Lower),
{ get_alph(Lower, Alph) }.
to_lower([CF|Lower]) --> [C], !,
{ ( C >= 0'A, C =< 0'Z -> CF is C+(0'a-0'A) ; CF = C) },
to_lower(Lower).
to_lower([]) --> [].
get_alph("amino", amino).
get_alph("nucleic", nucleic).
map_code("yes", yes(_)).
map_code("no", no).
nof_symbols(amino,20).
nof_symbols(nucleic,4).
scanner_skip(_,_).
get_name(L,L,[]).
scan_map(yes([Id|Next]),yes(Next)) -->
scan_transition(Id).
scan_map(no,no) --> [].
close_map(yes([])) :- !.
close_map(no).
gen_program(W, hmmer(VersionId,Name,NOfStates,Alphabet,SpecialTransitions,NULE,Model,MAP)) :-
format(W, '~n% HMMer Version ~d (Plan 7) using ~a~n',[VersionId,Alphabet]),
format(W, '~n% Name: ~a~n',[Name]),
format(W, '~n% Size: ~d~n',[NOfStates]),
format(W, 'slices(~d).~n',[NOfStates]),
gen_specials(W, SpecialTransitions),
gen_nule(W, NULE,Alphabet,NULEProbs),
gen_model(W, Model,NULEProbs),
gen_map(W, MAP).
%
% special nodes in graph.
%
gen_specials(W, special(NB,NN,EC,EJ,CT,CC,JB,JJ,GG,GF)) :-
% reaching state N
normalize(NN,1.0,NNCPT),
format(W, '~n%Reaching state N.~n',[]),
format(W, 'n_n_cpt(~w,1.0,~w).~n',[NN,NNCPT]),
% reaching state B
normalize(JB,1.0,JBCPT),
format(W, '~n%Reaching state B.~n',[]),
format(W, 'j_b_cpt(~w,1.0,~w).~n',[JB,JBCPT]),
normalize(NB,1.0,NBCPT),
format(W, 'n_b_cpt(~w,1.0,~w).~n',[NB,NBCPT]),
% reaching state J
format(W, '~n%Reaching state J.~n',[]),
normalize(EJ,1.0,EJCPT),
format(W, 'e_j_cpt(~w,1.0,~w).~n',[EJ,EJCPT]),
normalize(JJ,1.0,JJCPT),
format(W, 'j_j_cpt(~w,1.0,~w).~n',[JJ,JJCPT]),
% reaching state C
format(W, '~n%Reaching state C.~n',[]),
normalize(EC,1.0,ECCPT),
format(W, 'e_c_cpt(~w,1.0,~w).~n',[EC,ECCPT]),
normalize(CC,1.0,CCCPT),
format(W, 'c_c_cpt(~w,1.0,~w).~n',[CC,CCCPT]),
% reaching state T
format(W, '~n%Reaching state T.~n',[]),
normalize(CT,1.0,CTCPT),
format(W, 'c_t_cpt(~w,1.0,~w).~n',[CT,CTCPT]),
% null model
format(W, '~n%Reaching state G (Null Model).~n',[]),
normalize(GG,1.0,GGCPT),
format(W, 'g_g_cpt(~w,1.0,~w).~n',[GG,GGCPT]),
format(W, '~n%Reaching state F (Null Model).~n',[]),
normalize(GF,1.0,GFCPT),
format(W, 'g_f_cpt(~w,1.0,~w).~n',[GF,GFCPT]).
normalize(*,_,0.0) :- !.
normalize(Score,NULL,Prob) :-
Prob is NULL * exp(2.0, (Score/1000)).
normalizel([],_,[]).
normalizel([Score|Scores],NULL,[Prob|Probs]) :-
normalize(Score, NULL, Prob),
normalizel(Scores,NULL,Probs).
normalizell([],[],[]).
normalizell([Score|Scores],[Norm|Norms],[Prob|Probs]) :-
normalize(Score, Norm, Prob),
normalizell(Scores,Norms,Probs).
% null emission CPT
gen_nule(W, NULE,Alph,PsCPT) :-
NULE =.. [_|Ps],
nof_symbols(Alph,Size),
Norm is 1/Size,
normalizel(Ps,Norm,PsCPT),
E0s =.. [e|Ps],
Es =.. [e|PsCPT],
format(W, '~n%Null state emission CPT.~n',[]),
format(W, 'nule_cpt(~n ~w,~n ~w,~n ~w).~n',[E0s,Norm,Es]).
gen_model(W, model(BD,NBD,States),PsCPT) :-
normalize_bd(BD,NBD,BDCPT),
format(W, '~n%Reaching first D.~n',[]),
format(W, 'b_d_cpt(~w,~w,~w).~n',[BD,NBD,BDCPT]),
gen_states(W, States,1,PsCPT).
gen_states(_, [],_,_).
gen_states(W, [State|States],StateNo,PsCPT) :-
gen_state(W, State,StateNo,PsCPT),
NStateNo is StateNo+1,
gen_states(W, States,NStateNo,PsCPT).
gen_state(W, t(E,I,s(MM,MI,MD,IM,II,DM,DD,BM,ME)),StateNo,PsCPT) :-
format(W, '~n%State ~d.~n',[StateNo]),
Norm =.. [e|PsCPT],
normalizell(E,PsCPT,ECPT),
E0s =.. [e|E],
Es =.. [e|ECPT],
find_consensus(W,StateNo,ECPT),
sum(ECPT,0,TE),
format(W, 'me_cpt(~d,~n ~w,~n ~w,~n ~w). % ~w~n',[StateNo,E0s,Norm,Es,TE]),
normalizell(I,PsCPT,ICPT),
I0s =.. [e|ICPT],
Is =.. [e|ICPT],
sum(ICPT,0,TI),
format(W, 'ie_cpt(~d,~n ~w,~n ~w,~n ~w). %~w~n',[StateNo,I0s,Norm,Is,TI]),
normalize(MM,1.0,MMCPT),
format(W, 'm_m_cpt(~d,~w,~w,~w).~n',[StateNo,MM,1.0,MMCPT]),
normalize(MI,1.0,MICPT),
format(W, 'm_i_cpt(~d,~w,~w,~w).~n',[StateNo,MI,1.0,MICPT]),
normalize(MD,1.0,MDCPT),
format(W, 'm_d_cpt(~d,~w,~w,~w).~n',[StateNo,MD,1.0,MDCPT]),
normalize(II,1.0,IICPT),
format(W, 'i_i_cpt(~d,~w,~w,~w).~n',[StateNo,II,1.0,IICPT]),
normalize(IM,1.0,IMCPT),
format(W, 'i_m_cpt(~d,~w,~w,~w).~n',[StateNo,IM,1.0,IMCPT]),
normalize(DM,1.0,DMCPT),
format(W, 'd_m_cpt(~d,~w,~w,~w).~n',[StateNo,DM,1.0,DMCPT]),
normalize(DD,1.0,DDCPT),
format(W, 'd_d_cpt(~d,~w,~w,~w).~n',[StateNo,DD,1.0,DDCPT]),
normalize(BM,1.0,BMCPT),
format(W, 'b_m_cpt(~d,~w,~w,~w).~n',[StateNo,BM,1.0,BMCPT]),
normalize(ME,1.0,MECPT),
format(W, 'm_e_cpt(~d,~w,~w,~w).~n',[StateNo,ME,1.0,MECPT]).
gen_map(_,_).
normalize_bd(A,B,A).
sum([],S,S).
sum([P|Ps],S0,S) :-
Si is S0+P,
sum(Ps,Si,S).
find_consensus(W, StateNo,ECPT) :-
max_index(ECPT,1,0,-1,_,MaxIndex),
format(W, 'consensus(~d,~d).~n',[StateNo,MaxIndex]).
max_index([],_,Max,MaxIndex,Max,MaxIndex).
max_index([H|L],I0,Max0,MaxIndex0,Max,MaxIndex) :-
H > Max0, !,
I is I0+1,
max_index(L,I,H,I0,Max,MaxIndex).
max_index([_|L],I0,Max0,MaxIndex0,Max,MaxIndex) :-
I is I0+1,
max_index(L,I,Max0,MaxIndex0,Max,MaxIndex).

View File

@ -0,0 +1,121 @@
#!/usr/bin/yap -L --
#.
:- initialization(main).
:- ensure_loaded(library('clpbn/viterbi')).
:- use_module(fasta,
[fa2atoms/3]).
:- use_module(library(lists),
[
nth/3,
append/3
]).
:- [plan7].
:- ['globin.yap'].
%:- ['hmmer_b.1.18.1.yap'].
:- dynamic len/1, emission/2.
main :-
unix(argv([Sequence])),
fa2atoms(Sequence, L, [a]),
run_model([a|L],_Trace).
artemia :-
fa2atoms('Artemia.fa', L, [a]),
run_model([a|L],_Trace).
% given a string, construct a model
run_model(String,Trace) :-
viterbi(s(0,_),t(_,_),String,Trace),
out(Trace,String).
write_keys([]).
write_keys([V|Vars0]) :-
clpbn:get_atts(V,[key(K)]), !,
write(K), nl,
write_keys(Vars0).
write_keys([_|Vars0]) :-
write(no_key),nl,
write_keys(Vars0).
convert2emissions([],_).
convert2emissions([E|String],I0) :-
I is I0+1,
assert(emission(I,E)),
convert2emissions(String, I).
out([],_).
out([State|Trace],String) :-
out_state(State,String,RString),
out(Trace,RString).
out_state(s(_),String,String).
out_state(n(_),[_|String],String).
out_state(j(_),[_|String],String).
out_state(c(_),[_|String],String).
out_state(t(_),String,String).
out_state(b(Pos),String,String) :-
format('START MATCH at ~d~n', [Pos]).
out_state(d(_,State),String,String) :-
find_consensus(State,Consensus),
format(' -~a~n', [Consensus]).
out_state(i(_,_),[Code|String],String) :-
to_upper(Code,UCode),
format(' ~a+~n', [UCode]).
out_state(m(_,State),[Code|String],String) :-
to_upper(Code,UCode),
find_consensus(State,Consensus),
find_match_type(State,Code,Consensus,MatchType),
format(' ~a~a~a~n', [UCode,MatchType,Consensus]).
out_state(e(Pos),String,String) :-
format('END MATCH at ~d~n', [Pos]).
to_upper(A,U) :-
atom_codes(A,[C]),
( C =< "A", C>="Z" ->
U = A
;
NC is C + ("A"-"a"),
atom_codes(U,[NC])
).
find_consensus(State,Consensus) :-
consensus(State,I),
hmm_domain(Type),
domain_vals(Type,Vals),
arg(I, Vals, Consensus).
find_match_type(_,Code,Code,'=') :- !.
find_match_type(State,Code,_,'^') :-
me_cpt(State,Probs,_,_),
hmm_domain(Type),
domain_vals(Type,Vals),
find_prob_for_code(Vals,Code,Probs,Prob),
Prob >= 0, !.
find_match_type(_,_,_,' ').
find_prob_for_code(Vals,Code,Probs,Prob) :-
Vals =.. [_|L],
once(nth(I,L,Code)),
arg(I,Probs,Prob).
domain_vals(aminoacids,domain(a, c, d, e, f, g, h, i, k, l, m, n, p, q, r, s, t, v, w, y)).
domain_vals(bool,domain(t,f)).
domain_vals(bases,domain(a,c,g,t)).
domain_vals([A|B],Domain) :-
Domain =.. [domain,A|B].
start(S) :-
s_state(0,S).
end(Items,E) :-
t_state(Items,E).

View File

@ -144,18 +144,18 @@ true :- true.
*/
/* main execution loop */
'$read_vars'(user_input, Goal, Mod, Pos, Bindings) :-
'$read_vars'(user_input, Goal, Mod, Pos, Bindings, Prompt) :-
'$swi_current_prolog_flag'(readline, true),
read_history(h, '!h',
[trace, end_of_file],
' ?- ', Goal, Bindings), !,
Prompt, Goal, Bindings), !,
(nonvar(Err) ->
print_message(error,Err), fail
;
true
).
'$read_vars'(Stream,T,Mod,Pos,V) :-
'$read'(true,T,Mod,V,Pos,Err,Stream),
'$read_vars'(Stream, T, Mod, Pos, V, _Prompt) :-
'$read'(true, T, Mod, V, Pos, Err, Stream),
(nonvar(Err) ->
print_message(error,Err), fail
;
@ -195,13 +195,12 @@ true :- true.
prompt(_,'| '),
prompt1(' ?- '),
'$run_toplevel_hooks',
'$read_vars'(user_input,Command,_,Pos,Varnames),
'$read_vars'(user_input,Command,_,Pos,Varnames, ' ?- '),
nb_setval('$spy_gn',1),
% stop at spy-points if debugging is on.
% stop at spy-points if debugging is on.
nb_setval('$debug_run',off),
nb_setval('$debug_jump',off),
prompt(_,'|: '),
prompt1('|: '),
'$command'(Command,Varnames,Pos,top),
'$sync_mmapped_arrays',
set_value('$live','$false').
@ -1141,7 +1140,7 @@ bootstrap(F) :-
!.
'$enter_command'(Stream,Status) :-
'$read_vars'(Stream,Command,_,Pos,Vars),
'$read_vars'(Stream,Command,_,Pos,Vars, '|: '),
'$command'(Command,Vars,Pos,Status).
'$abort_loop'(Stream) :-

View File

@ -495,9 +495,11 @@ prolog_load_context(source, FileName) :-
nb_getval('$consulting_file',FileName).
prolog_load_context(stream, Stream) :-
'$fetch_stream_alias'(Stream,'$loop_stream').
prolog_load_context(term_position, Position) :-
'$fetch_stream_alias'(Stream,'$loop_stream'),
stream_position(Stream, Position).
% return this term for SWI compatibility.
prolog_load_context(term_position, '$stream_position'(0,Line,0,0,0)) :-
'$fetch_stream_alias'(Stream,'$loop_stream'), !,
stream_property(Stream, position(Position)),
stream_position_data(line_count, Position, Line).
% if the file exports a module, then we can

119
pl/dbload.yap Normal file
View File

@ -0,0 +1,119 @@
/*************************************************************************
* *
* YAP Prolog *
* *
* Yap Prolog was developed at NCCUP - Universidade do Porto *
* *
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
* *
**************************************************************************
* *
* File: dbload.yap *
* Last rev: 8/2/88 *
* mods: *
* comments: Compact Loading of Facts in YAP *
* *
*************************************************************************/
:- module('$db_load',
[]).
:- dynamic dbloading/6, dbprocess/2.
prolog:load_db(Fs) :-
'$current_module'(M0),
prolog_flag(agc_margin,Old,0),
dbload(Fs,M0,load_db(Fs)),
load_facts,
prolog_flag(agc_margin,_,Old),
clean_up.
dbload(Fs, _, G) :-
var(Fs),
'$do_error'(instantiation_error,G).
dbload([], _, _).
dbload([F|Fs], M0, G) :-
dbload(F, M0, G),
dbload(Fs, M0, G).
dbload(M:F, _M0, G) :-
dbload(F, M, G).
dbload(F, M0, G) :-
atom(F), !,
do_dbload(F, M0, G).
dbload(F, _, G) :-
'$do_error'(type_error(atom,F),G).
do_dbload(F0, M0, G) :-
'$find_in_path'(F0,F,G),
assert(dbprocess(F, M0)),
open(F, read, R),
check_dbload_stream(R, M0),
close(R).
check_dbload_stream(R, M0) :-
repeat,
read(R,T),
( T = end_of_file -> !;
dbload_count(T, M0),
fail
).
dbload_count(T0, M0) :-
get_module(T0,M0,T,M),
functor(T,Na,Arity),
% dbload_check_term(T),
(
dbloading(Na,Arity,M,_,NaAr,_) ->
nb_getval(NaAr,I0),
I is I0+1,
nb_setval(NaAr,I)
;
atomic_concat([Na,'__',Arity,'__',M],NaAr),
assert(dbloading(Na,Arity,M,T,NaAr,0)),
nb_setval(NaAr,1)
).
get_module(M1:T0,_,T,M) :- !,
get_module(T0, M1, T , M).
get_module(T,M,T,M).
load_facts :-
retract(dbloading(Na,Arity,M,T,NaAr,_)),
nb_getval(NaAr,Size),
dbload_get_space(T, M, Size, Handle),
assertz(dbloading(Na,Arity,M,T,NaAr,Handle)),
nb_setval(NaAr,0),
fail.
load_facts :-
dbprocess(F, M),
open(F, read, R),
dbload_add_facts(R, M),
close(R),
fail.
load_facts.
dbload_add_facts(R, M) :-
repeat,
read(R,T),
( T = end_of_file -> !;
dbload_add_fact(T, M),
fail
).
dbload_add_fact(T0, M0) :-
get_module(T0,M0,T,M),
functor(T,Na,Arity),
Na \= gene_product,
dbloading(Na,Arity,M,_,NaAr,Handle),
nb_getval(NaAr,I0),
I is I0+1,
nb_setval(NaAr,I),
dbassert(T,Handle,I0).
clean_up :-
retractall(dbloading(_,_,_,_,_,_)),
retractall(dbprocess(_,_)),
fail.
clean_up.

View File

@ -958,7 +958,7 @@ yap_flag(dialect,yap).
'$yap_flag_show_gc_tracing'(_, _, _, off).
'$flag_check_alias'(OUT, Alias) :-
stream_property(OUT,[alias(Alias)]), !.
stream_property(OUT,alias(Alias)), !.
current_prolog_flag(V,Out) :-
var(V), !,

View File

@ -114,6 +114,7 @@ system_mode(verbose,off) :- set_value('$verbose',off).
:- use_module('corout.yap').
:- use_module('dialect.yap').
:- use_module('history.pl').
:- use_module('dbload.yap').
'$system_module'('$messages').
'$system_module'('$hacks').