extern void ExportBadgesDialog ( DialoG d, ValNodePtr PNTR head ) { Char buf [128], tmp [32]; DoC doc; IntBadgPtr ibp; Int2 k, numItems; SscBadgPtr sbp; sbp = (SscBadgPtr) GetObjectExtra (d); if (sbp == NULL || head == NULL) return; doc = sbp->badglog; GetDocParams (doc, &numItems, NULL); for (k = 1; k <= numItems; k++) { ibp = GetBadgInfo (sbp, k); if (ibp == NULL) continue; if (StringHasNoText (ibp->name)) continue; buf [0] = '\0'; ExportDocCell (doc, k, 1, buf); TabToCol (buf, 22); ExportDocCell (doc, k, 3, tmp); StringCat (buf, tmp); ValNodeCopyStr (head, k + 100, buf); } }
static void AnnotateBestOrf ( BioseqPtr bsp, Int2 genCode, Boolean altstart ) { CdRegionPtr crp; Int2 i, best, idx; OrfData od; ProtRefPtr prp; SeqFeatPtr sfp; SeqInt sint; TransTablePtr tbl; ValNode vn; SeqFeatXrefPtr xref; if (bsp == NULL) return; for (i = 0; i < 6; i++) { od.curlen [i] = INT4_MIN; od.bestlen [i] = 0; od.currstart [i] = 0; od.beststart [i] = 0; od.sublen [i] = INT4_MIN; od.inorf [i] = FALSE; } od.altstart = altstart; /* use simultaneous 6-frame translation finite state machine */ tbl = TransTableNew (genCode); if (tbl != NULL) { TransTableProcessBioseq (tbl, LookForOrfs, (Pointer) &od, bsp); } TransTableFree (tbl); best = -1; idx = -1; for (i = 0; i < 6; i++) { if (od.bestlen [i] > best) { best = od.bestlen [i]; idx = i; } } if (idx == -1) return; /* make feature location on largest ORF */ if (idx < 3) { MemSet ((Pointer) &sint, 0, sizeof (SeqInt)); sint.from = od.beststart [idx] + idx; sint.to = sint.from + (od.bestlen [idx]) * 3 + 2; sint.id = SeqIdFindBest (bsp->id, 0); sint.strand = Seq_strand_plus; vn.choice = SEQLOC_INT; vn.extended = 0; vn.data.ptrvalue = (Pointer) &sint; vn.next = NULL; } else { MemSet ((Pointer) &sint, 0, sizeof (SeqInt)); sint.from = od.beststart [idx] + idx - 3; sint.to = sint.from + (od.bestlen [idx]) * 3 + 2; sint.id = SeqIdFindBest (bsp->id, 0); sint.strand = Seq_strand_minus; vn.choice = SEQLOC_INT; vn.extended = 0; vn.data.ptrvalue = (Pointer) &sint; vn.next = NULL; } /* make CDS feature with unknown product */ sfp = CreateNewFeatureOnBioseq (bsp, SEQFEAT_CDREGION, &vn); if (sfp == NULL) return; crp = CreateNewCdRgn (1, FALSE, genCode); if (crp == NULL) return; crp->frame = 1; sfp->data.value.ptrvalue = (Pointer) crp; prp = ProtRefNew (); if (prp == NULL) return; xref = SeqFeatXrefNew (); if (xref == NULL) return; xref->data.choice = SEQFEAT_PROT; xref->data.value.ptrvalue = (Pointer) prp; xref->next = sfp->xref; sfp->xref = xref; prp->name = ValNodeCopyStr (NULL, 0, "unknown"); }
NLM_EXTERN ValNodePtr LIBCALL Nlm_DirCatalog (Nlm_CharPtr pathname) { #ifdef OS_MAC long dirID; OSErr err; short index; unsigned short num; Nlm_Char path[PATH_MAX]; CInfoPBRec pbc; HParamBlockRec pbh; short vRefNum; #endif #ifdef OS_UNIX Nlm_Uint1 choice; #ifdef OS_UNIX_DARWIN DIR *dirp; struct dirent *dep; #else Nlm_Char buf [256]; Nlm_Char ch; Nlm_Char cmmd [PATH_MAX + 20]; FILE *fp; Nlm_CharPtr ptr; #endif #endif ValNodePtr vnp = NULL; if (pathname != NULL && pathname [0] != '\0') { #ifdef OS_MAC Nlm_StringNCpy_0 (path, pathname, sizeof (path)); Nlm_CtoPstr ((Nlm_CharPtr) path); Nlm_MemSet ((Nlm_VoidPtr) (&pbh), 0, sizeof (HParamBlockRec)); pbh.volumeParam.ioNamePtr = (StringPtr) path; pbh.volumeParam.ioVolIndex = -1; err = PBHGetVInfo (&pbh, FALSE); if (err != noErr) return NULL; vRefNum = pbh.volumeParam.ioVRefNum; Nlm_StringNCpy_0 (path, pathname, sizeof (path)); Nlm_CtoPstr ((Nlm_CharPtr) path); Nlm_MemSet ((Nlm_VoidPtr) (&pbc), 0, sizeof (CInfoPBRec)); pbc.dirInfo.ioNamePtr = (StringPtr) path; pbc.dirInfo.ioVRefNum = vRefNum; err = PBGetCatInfo (&pbc, FALSE); if (err != noErr) return NULL; if (pbc.dirInfo.ioFlAttrib & 16) { num = pbc.dirInfo.ioDrNmFls; dirID = pbc.dirInfo.ioDrDirID; for (index = 1; index <= num; index++) { Nlm_MemSet ((Nlm_VoidPtr) (&pbc), 0, sizeof (CInfoPBRec)); pbc.dirInfo.ioNamePtr = (StringPtr) path; pbc.dirInfo.ioVRefNum = vRefNum; pbc.dirInfo.ioFDirIndex = index; pbc.dirInfo.ioDrDirID = dirID; pbc.dirInfo.ioACUser = 0; err = PBGetCatInfo (&pbc, FALSE); if (err == noErr) { Nlm_PtoCstr ((Nlm_CharPtr) path); if (pbc.dirInfo.ioFlAttrib & 16) { ValNodeCopyStr (&vnp, 1, path); } else { ValNodeCopyStr (&vnp, 0, path); } } } } #endif #if defined(WIN32) {{ Nlm_Char x_path[PATH_MAX]; WIN32_FIND_DATA fData; HANDLE hFindFile; Nlm_StringNCpy_0(x_path, pathname, sizeof(x_path) - 5); Nlm_StringCat(x_path, "\\*.*"); hFindFile = FindFirstFile(x_path, &fData); if (hFindFile == INVALID_HANDLE_VALUE) return 0; do { if (fData.cFileName[0] != '.' || (fData.cFileName[1] != '.' && fData.cFileName[1] != '\0')) ValNodeCopyStr (&vnp, (fData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? 1 : 0, fData.cFileName); } while ( FindNextFile(hFindFile, &fData) ); FindClose(hFindFile); }} #endif #ifdef OS_UNIX #ifdef OS_UNIX_DARWIN dirp = opendir(pathname); if (dirp == NULL) return NULL; while ((dep = readdir(dirp)) != NULL) { /* ignore 'invisible' files. */ if (dep->d_namlen < 1 || dep->d_name[0] == '.') continue; if (dep->d_type == DT_DIR) /* directory */ choice = 1; else /* all other file types. */ choice = 0; ValNodeCopyStr (&vnp, choice, dep->d_name); } closedir(dirp); #else sprintf (cmmd, "ls -1p %s 2>/dev/null", pathname); fp = popen (cmmd, "r"); if (fp == NULL) return NULL; while (Nlm_FileGets (buf, sizeof (buf), fp) != NULL) { ptr = buf; ch = *ptr; while (ch != '\0' && ch != '\n' && ch != '\r') { ptr++; ch = *ptr; } *ptr = '\0'; choice = 0; ptr = Nlm_StringChr (buf, '/'); if (ptr != NULL) { *ptr = '\0'; choice = 1; } ValNodeCopyStr (&vnp, choice, buf); } pclose (fp); #endif #endif #ifdef OS_VMS #endif } return vnp; }